ETH Price: $2,145.45 (+5.02%)

Contract

0xFd88dC25E86C97a3f0d0Da3c65370ef2BF90E31f
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Change Admin Cha...63151882018-09-12 1:03:452749 days ago1536714225IN
0xFd88dC25...2BF90E31f
0 ETH0.000170894.4
Change Rate63092062018-09-11 1:08:352750 days ago1536628115IN
0xFd88dC25...2BF90E31f
0 ETH0.000092093.2
Change Min Inves...62972562018-09-09 1:01:242752 days ago1536454884IN
0xFd88dC25...2BF90E31f
0 ETH0.000095833.5
Change Admin Cha...62913392018-09-08 1:01:122753 days ago1536368472IN
0xFd88dC25...2BF90E31f
0 ETH0.00011693
Change Rate62795212018-09-06 1:29:442755 days ago1536197384IN
0xFd88dC25...2BF90E31f
0 ETH0.000069242.40625
Change Admin Cha...62496752018-09-01 1:01:582760 days ago1535763718IN
0xFd88dC25...2BF90E31f
0 ETH0.000093522.4
Change Min Inves...62437832018-08-31 1:18:552761 days ago1535678335IN
0xFd88dC25...2BF90E31f
0 ETH0.000065552.4
Change Admin Cha...62319202018-08-29 1:08:142763 days ago1535504894IN
0xFd88dC25...2BF90E31f
0 ETH0.000067171.7211
Change Min Inves...62259812018-08-28 1:01:092764 days ago1535418069IN
0xFd88dC25...2BF90E31f
0 ETH0.00005191.9
Change Min Inves...62200492018-08-27 1:03:002765 days ago1535331780IN
0xFd88dC25...2BF90E31f
0 ETH0.000041071.5
Change Rate62082152018-08-25 1:05:422767 days ago1535159142IN
0xFd88dC25...2BF90E31f
0 ETH0.000043161.5
Change Admin Cha...61965882018-08-23 1:49:132769 days ago1534988953IN
0xFd88dC25...2BF90E31f
0 ETH0.000066241.7
Change Admin Cha...61904572018-08-22 1:05:202770 days ago1534899920IN
0xFd88dC25...2BF90E31f
0 ETH0.000070141.8
Change Rate61845532018-08-21 1:16:112771 days ago1534814171IN
0xFd88dC25...2BF90E31f
0 ETH0.000037411.3
Change Min Inves...61788482018-08-20 2:08:422772 days ago1534730922IN
0xFd88dC25...2BF90E31f
0 ETH0.000032851.2
Change Rate61490222018-08-15 1:01:202777 days ago1534294880IN
0xFd88dC25...2BF90E31f
0 ETH0.000143895
Change Min Inves...61313462018-08-12 1:01:022780 days ago1534035662IN
0xFd88dC25...2BF90E31f
0 ETH0.000073922.7
Change Admin Cha...61194812018-08-10 1:01:212782 days ago1533862881IN
0xFd88dC25...2BF90E31f
0 ETH0.0004286411
Change Admin Cha...61135472018-08-09 1:02:572783 days ago1533776577IN
0xFd88dC25...2BF90E31f
0 ETH0.0015976841
Change Admin Cha...61076122018-08-08 1:01:102784 days ago1533690070IN
0xFd88dC25...2BF90E31f
0 ETH0.0023419260
Change Rate60898752018-08-05 1:03:332787 days ago1533431013IN
0xFd88dC25...2BF90E31f
0 ETH0.000031651.1
Change Admin Cha...60779602018-08-03 1:01:302789 days ago1533258090IN
0xFd88dC25...2BF90E31f
0 ETH0.000042861.1
Change Admin Cha...60721492018-08-02 1:08:052790 days ago1533172085IN
0xFd88dC25...2BF90E31f
0 ETH0.000042861.1
Change Rate60603122018-07-31 1:01:172792 days ago1532998877IN
0xFd88dC25...2BF90E31f
0 ETH0.000028771
Change Admin Cha...60483492018-07-29 1:00:502794 days ago1532826050IN
0xFd88dC25...2BF90E31f
0 ETH0.000038961
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer57605232018-06-09 19:07:432844 days ago1528571263
0xFd88dC25...2BF90E31f
 Contract Creation0 ETH
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:
AnsaCrowdsale

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

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

pragma solidity 0.4.24;
/**
 * @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;
  }
}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public constant returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract ERC20 is ERC20Basic {
  using SafeMath for uint256;
  mapping(address => uint256) balances; 

 
}

/**
 * @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 OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
 function Ownable() {
    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 transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}

/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * @dev Issue: * https://github.com/OpenZeppelin/zeppelin-solidity/issues/120
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */
contract MintableToken is ERC20, Ownable {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();
  bool public mintingFinished = false;
  modifier canMint() {
    require(!mintingFinished);
    _;
  }
  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    emit Mint(_to, _amount);
    emit Transfer(0x0, _to, _amount);
    return true;
  }
  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() onlyOwner public returns (bool) {
    mintingFinished = true;
    emit MintFinished();
    return true;
  }
}

/**
 * @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
  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
   */
  function Crowdsale(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);
  }
}




/**
 * @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
   */
  function TimedCrowdsale(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);
  }

}


/**
 * @title MintedCrowdsale
 * @dev Extension of Crowdsale contract whose tokens are minted in each purchase.
 * Token ownership should be transferred to MintedCrowdsale for minting. 
 */
contract MintedCrowdsale is Crowdsale {

  /**
   * @dev Overrides delivery by minting tokens upon purchase.
   * @param _beneficiary Token purchaser
   * @param _tokenAmount Number of tokens to be minted
   */
  function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal {
    require(MintableToken(token).mint(_beneficiary, _tokenAmount));
  }
}



/**
 * @title EscrowAccountCrowdsale.
 */
contract EscrowAccountCrowdsale is TimedCrowdsale, Ownable {
  using SafeMath for uint256;
  EscrowVault public vault;
  /**
   * @dev Constructor, creates EscrowAccountCrowdsale.
   */
   function EscrowAccountCrowdsale() public {
    vault = new EscrowVault(wallet);
  }
  /**
   * @dev Investors can claim refunds here if whitelisted is unsuccessful
   */
  function returnInvestoramount(address _beneficiary, uint256 _percentage) internal onlyOwner {
    vault.refund(_beneficiary,_percentage);
  }

  function afterWhtelisted(address _beneficiary) internal onlyOwner{
      vault.closeAfterWhitelisted(_beneficiary);
  }
  /**
   * @dev Overrides Crowdsale fund forwarding, sending funds to vault.
   */
  function _forwardFunds() internal {
    vault.deposit.value(msg.value)(msg.sender);
  }

}

/**
 * @title EscrowVault
 * @dev This contract is used for storing funds while a crowdsale
 * is in progress. Supports refunding the money if whitelist fails,
 * and forwarding it if whitelist is successful.
 */
contract EscrowVault is Ownable {
  using SafeMath for uint256;
  mapping (address => uint256) public deposited;
  address public wallet;
  event Closed();
  event Refunded(address indexed beneficiary, uint256 weiAmount);
  /**
   * @param _wallet Vault address
   */
  function EscrowVault(address _wallet) public {
    require(_wallet != address(0));
    wallet = _wallet;
   
  }
  /**
   * @param investor Investor address
   */
  function deposit(address investor) onlyOwner  payable {
    deposited[investor] = deposited[investor].add(msg.value);
  }
   function closeAfterWhitelisted(address _beneficiary) onlyOwner public {
   
    uint256 depositedValue = deposited[_beneficiary];
    deposited[_beneficiary] = 0;
    wallet.transfer(depositedValue);
  }
   

  /**
   * @param investor Investor address
   */
  function refund(address investor, uint256 _percentage)onlyOwner  {
    uint256 depositedValue = deposited[investor];
    depositedValue=depositedValue.sub(_percentage);
   
    investor.transfer(depositedValue);
    wallet.transfer(_percentage);
    emit Refunded(investor, depositedValue);
     deposited[investor] = 0;
  }
}

/**
 * @title PostDeliveryCrowdsale
 * @dev Crowdsale that locks tokens from withdrawal until it whitelisted and crowdsale ends.
 */
contract PostDeliveryCrowdsale is TimedCrowdsale {
  using SafeMath for uint256;

  mapping(address => uint256) public balances;

  /**
   * @dev Withdraw tokens only after whitelisted ends and after crowdsale ends.
   */
   
  
  function withdrawTokens() public {
   require(hasClosed());
    uint256 amount = balances[msg.sender];
    require(amount > 0);
    balances[msg.sender] = 0;
    _deliverTokens(msg.sender, amount);
  }
  
  
   function failedWhitelist(address _beneficiary) internal  {
    require(_beneficiary != address(0));
    uint256 amount = balances[_beneficiary];
    balances[_beneficiary] = 0;
  }
  function getInvestorDepositAmount(address _investor) public constant returns(uint256 paid){
     
     return balances[_investor];
 }

  /**
   * @dev Overrides parent by storing balances instead of issuing tokens right away.
   * @param _beneficiary Token purchaser
   * @param _tokenAmount Amount of tokens purchased
   */
  function _processPurchase(address _beneficiary, uint256 _tokenAmount) internal {
    balances[_beneficiary] = balances[_beneficiary].add(_tokenAmount);
  }

}


contract AnsaCrowdsale is TimedCrowdsale, MintedCrowdsale,EscrowAccountCrowdsale,PostDeliveryCrowdsale {

 enum Stage {PROCESS1_FAILED, PROCESS1_SUCCESS,PROCESS2_FAILED, PROCESS2_SUCCESS,PROCESS3_FAILED, PROCESS3_SUCCESS} 	
 	//stage Phase1 or Phase2 or Phase
	enum Phase {PHASE1, PHASE2,PHASE3}
	//stage ICO
	Phase public phase;
 
  struct whitelisted{
       Stage  stage;
 }
  uint256 public adminCharge_p1=0.010 ether;
  uint256 public adminCharge_p2=0.13 ether;
  uint256 public adminCharge_p3=0.14 ether;
  uint256 public cap=750 ether;// softcap is 750 ether
  uint256 public goal=4500 ether;// hardcap is 4500 ether
  uint256 public minContribAmount = 0.1 ether; // min invesment
  mapping(address => whitelisted) public whitelist;
  // How much ETH each address has invested to this crowdsale
  mapping (address => uint256) public investedAmountOf;
    // How many distinct addresses have invested
  uint256 public investorCount;
    // decimalFactor
  uint256 public constant DECIMALFACTOR = 10**uint256(18);
  event updateRate(uint256 tokenRate, uint256 time);
  
   /**
 	* @dev CryptoAssetCrowdsale is a base contract for managing a token crowdsale.
 	* TGECrowdsale have a start and end timestamps, where investors can make
 	* token purchases and the crowdsale will assign them tokens based
 	* on a token per ETH rate. Funds collected are forwarded to a wallet
 	* as they arrive.
 	*/
  
 function AnsaCrowdsale(uint256 _starttime, uint256 _endTime, uint256 _rate, address _wallet,ERC20 _token)
  TimedCrowdsale(_starttime,_endTime)Crowdsale(_rate, _wallet,_token)
  {
      phase = Phase.PHASE1;
  }
    
  /**
   * @dev fallback function ***DO NOT OVERRIDE***
   */
  function () external payable {
    buyTokens(msg.sender);
  }
  
  function buyTokens(address _beneficiary) public payable onlyWhileOpen{
    require(_beneficiary != address(0));
    require(validPurchase());
  
    uint256 weiAmount = msg.value;
    // calculate token amount to be created
    uint256 tokens = weiAmount.mul(rate);
    uint256 volumebasedBonus=0;
    if(phase == Phase.PHASE1){
    volumebasedBonus = tokens.mul(getTokenVolumebasedBonusRateForPhase1(tokens)).div(100);

    }else if(phase == Phase.PHASE2){
    volumebasedBonus = tokens.mul(getTokenVolumebasedBonusRateForPhase2(tokens)).div(100);

    }else{
    volumebasedBonus = tokens.mul(getTokenVolumebasedBonusRateForPhase3(tokens)).div(100);

    }

    tokens=tokens.add(volumebasedBonus);
    _preValidatePurchase( _beneficiary,  weiAmount);
    weiRaised = weiRaised.add(weiAmount);
    _processPurchase(_beneficiary, tokens);
    emit TokenPurchase(msg.sender, _beneficiary, weiAmount, tokens);
    _forwardFunds();
    if(investedAmountOf[msg.sender] == 0) {
           // A new investor
           investorCount++;
        }
        // Update investor
        investedAmountOf[msg.sender] = investedAmountOf[msg.sender].add(weiAmount);
  }
    function tokensaleToOtherCoinUser(address beneficiary, uint256 weiAmount) public onlyOwner onlyWhileOpen {
    require(beneficiary != address(0) && weiAmount > 0);
    uint256 tokens = weiAmount.mul(rate);
    uint256 volumebasedBonus=0;
    if(phase == Phase.PHASE1){
    volumebasedBonus = tokens.mul(getTokenVolumebasedBonusRateForPhase1(tokens)).div(100);

    }else if(phase == Phase.PHASE2){
    volumebasedBonus = tokens.mul(getTokenVolumebasedBonusRateForPhase2(tokens)).div(100);

    }else{
    volumebasedBonus = tokens.mul(getTokenVolumebasedBonusRateForPhase3(tokens)).div(100);

    }

    tokens=tokens.add(volumebasedBonus);
    weiRaised = weiRaised.add(weiAmount);
    _processPurchase(beneficiary, tokens);
    emit TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);
    }
    
    function validPurchase() internal constant returns (bool) {
    bool minContribution = minContribAmount <= msg.value;
    return  minContribution;
  }
  
  
  function getTokenVolumebasedBonusRateForPhase1(uint256 value) internal constant returns (uint256) {
        uint256 bonusRate = 0;
        uint256 valume = value.div(DECIMALFACTOR);

        if (valume <= 50000 && valume >= 149999) {
            bonusRate = 30;
        } else if (valume <= 150000 && valume >= 299999) {
            bonusRate = 35;
        } else if (valume <= 300000 && valume >= 500000) {
            bonusRate = 40;
        } else{
            bonusRate = 25;
        }

        return bonusRate;
    }
  
   function getTokenVolumebasedBonusRateForPhase2(uint256 value) internal constant returns (uint256) {
        uint256 bonusRate = 0;
        uint valume = value.div(DECIMALFACTOR);

        if (valume <= 50000 && valume >= 149999) {
            bonusRate = 25;
        } else if (valume <= 150000 && valume >= 299999) {
            bonusRate = 30;
        } else if (valume <= 300000 && valume >= 500000) {
            bonusRate = 35;
        } else{
            bonusRate = 20;
        }

        return bonusRate;
    }
    
     function getTokenVolumebasedBonusRateForPhase3(uint256 value) internal constant returns (uint256) {
        uint256 bonusRate = 0;
        uint valume = value.div(DECIMALFACTOR);

        if (valume <= 50000 && valume >= 149999) {
            bonusRate = 20;
        } else if (valume <= 150000 && valume >= 299999) {
            bonusRate = 25;
        } else if (valume <= 300000 && valume >= 500000) {
            bonusRate = 30;
        } else{
            bonusRate = 15;
        }

        return bonusRate;
    }
  
  /**
 	* @dev change the Phase from phase1 to phase2 
 	*/
  	function startPhase2(uint256 _startTime) public onlyOwner {
      	require(_startTime>0);
      	phase = Phase.PHASE2;
      	openingTime=_startTime;
      
   }
   
     /**
 	* @dev change the Phase from phase2 to phase3 sale
 	*/
  	function startPhase3(uint256 _startTime) public onlyOwner {
      	require(0> _startTime);
      	phase = Phase.PHASE3;
        openingTime=_startTime;
   }

 /**
   * @dev Reverts if beneficiary is not whitelisted. Can be used when extending this contract.
   */
  modifier isWhitelisted(address _beneficiary) {
    require(whitelist[_beneficiary].stage==Stage.PROCESS3_SUCCESS);
    _;
  }

  /**
   * @dev Adds single address to whitelist.
   * @param _beneficiary Address to be added to the whitelist
   */
  function addToWhitelist(address _beneficiary,uint256 _stage) external onlyOwner {
      require(_beneficiary != address(0));
      require(_stage>0);  
 if(_stage==1){
     whitelist[_beneficiary].stage=Stage.PROCESS1_FAILED;
     returnInvestoramount(_beneficiary,adminCharge_p1);
     failedWhitelist(_beneficiary);
     investedAmountOf[_beneficiary]=0;
 }else if(_stage==2){
     whitelist[_beneficiary].stage=Stage.PROCESS1_SUCCESS;
 }else if(_stage==3){
     whitelist[_beneficiary].stage=Stage.PROCESS2_FAILED;
     returnInvestoramount(_beneficiary,adminCharge_p2);
     failedWhitelist(_beneficiary);
          investedAmountOf[_beneficiary]=0;
 }else if(_stage==4){
     whitelist[_beneficiary].stage=Stage.PROCESS2_SUCCESS;
 }else if(_stage==5){
     whitelist[_beneficiary].stage=Stage.PROCESS3_FAILED;
     returnInvestoramount(_beneficiary,adminCharge_p3);
     failedWhitelist(_beneficiary);
          investedAmountOf[_beneficiary]=0;
     }else if(_stage==6){
     whitelist[_beneficiary].stage=Stage.PROCESS3_SUCCESS;
     afterWhtelisted( _beneficiary);
 }
 
 }
 
  /**
   * @dev Withdraw tokens only after Investors added into whitelist .
   */
  function withdrawTokens() public isWhitelisted(msg.sender)  {
    require(hasClosed());
    uint256 amount = balances[msg.sender];
    require(amount > 0);
    balances[msg.sender] = 0;
    _deliverTokens(msg.sender, amount);
   
  }
  
 /**
 * @dev Change crowdsale ClosingTime
 * @param  _endTime is End time in Seconds
 */
  function changeEndtime(uint256 _endTime) public onlyOwner {
    require(_endTime > 0); 
    closingTime = _endTime;
    }

 /**
 * @dev Change Token rate per ETH
 * @param  _rate is set the current rate of AND Token
 */
  function changeRate(uint256 _rate) public onlyOwner {
    require(_rate > 0); 
    rate = _rate;
    emit updateRate(_rate,block.timestamp);
    }
  /**
 * @dev Change admin chargers
 * @param  _p1 for first Kyc Failed-$5
 * @param  _p2 for second AML Failed-$7
 * @param  _p3 for third AI Failed-$57
 */
  function changeAdminCharges(uint256 _p1,uint256 _p2,uint256 _p3) public onlyOwner {
    require(_p1 > 0);
    require(_p2 > 0); 
    require(_p3 > 0); 
    adminCharge_p1=_p1;
    adminCharge_p2=_p2;
    adminCharge_p3=_p3;
    
    }
    
 /**
   * @dev Change minContribution amountAmount.
   * @param _minInvestment for minimum contribution ETH amount
   */
  function changeMinInvestment(uint256 _minInvestment) public onlyOwner {
     require(_minInvestment > 0);
     minContribAmount=_minInvestment;
  }
  /**
   * @dev Checks whether the cap has been reached.
   * @return Whether the cap was reached
   */
  function capReached() public view returns (bool) {
    return weiRaised >= cap;
  }
  /**
   * @dev Checks whether the goal has been reached.
   * @return Whether the goal was reached
   */
  function goalReached() public view returns (bool) {
    return weiRaised >= goal;
  }
  
  	/**
 	* @param _to is beneficiary address
 	* @param _value  Amount if tokens
 	* @dev  tokens distribution
 	*/
	function tokenDistribution(address _to, uint256 _value)public onlyOwner {
        require (
           _to != 0x0 && _value > 0);
        _processPurchase(_to, _value);
        whitelist[_to].stage=Stage.PROCESS3_SUCCESS;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"adminCharge_p2","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_minInvestment","type":"uint256"}],"name":"changeMinInvestment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hasClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investedAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_stage","type":"uint256"}],"name":"addToWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint256"}],"name":"startPhase3","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goal","outputs":[{"name":"","type":"uint256"}],"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":"capReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminCharge_p3","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minContribAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminCharge_p1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_endTime","type":"uint256"}],"name":"changeEndtime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"changeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"stage","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_p1","type":"uint256"},{"name":"_p2","type":"uint256"},{"name":"_p3","type":"uint256"}],"name":"changeAdminCharges","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_investor","type":"address"}],"name":"getInvestorDepositAmount","outputs":[{"name":"paid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"phase","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DECIMALFACTOR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"openingTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint256"}],"name":"startPhase2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"weiAmount","type":"uint256"}],"name":"tokensaleToOtherCoinUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"tokenDistribution","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_starttime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenRate","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"updateRate","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"}]

6080604052662386f26fc10000600a556701cdda4faccd0000600b556701f161421c8e0000600c556828a857425466f80000600d5568f3f20b8dfa69d00000600e5567016345785d8a0000600f553480156200005a57600080fd5b5060405160a080620032c383398101806040528101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508484848484600083111515620000bb57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620000f857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200013557600080fd5b8260028190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050428210151515620001d057600080fd5b818110151515620001e057600080fd5b8160048190555080600581905550505033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200025e62000322565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080158015620002b1573d6000803e3d6000fd5b50600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960006101000a81548160ff021916908360028111156200031257fe5b0217905550505050505062000333565b6040516109ef80620028d483390190565b61259180620003436000396000f3006080604052600436106101c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fd62f57146101cd57806313f56f73146101f85780631515bc2b146102255780631aae346014610254578063214405fc146102ab57806327e235e3146102f85780632c4e722e1461034f5780632c757eed1461037a578063355274ea146103a757806340193883146103d25780634042b66f146103fd5780634b6753bc146104285780634f93594514610453578063521eb27314610482578063534514ee146104d95780635b55169c146105045780635f497a091461052f57806368a9de131461055a57806374e7493b146105875780637d3d6522146105b45780638d8f2adb146105e35780638da5cb5b146105fa5780639b19251a14610651578063a67ba5d2146106b6578063aed76aa4146106f7578063b1c9fe6e1461074e578063b3d91e4114610787578063b7a8807c146107b2578063ba8fb567146107dd578063d174c3881461080a578063d7e64c0014610857578063de53474414610882578063ec8ac4d8146108cf578063f2fde38b14610905578063fbfa77cf14610948578063fc0c546a1461099f575b6101cb336109f6565b005b3480156101d957600080fd5b506101e2610d2e565b6040518082815260200191505060405180910390f35b34801561020457600080fd5b5061022360048036038101908080359060200190929190505050610d34565b005b34801561023157600080fd5b5061023a610da9565b604051808215151515815260200191505060405180910390f35b34801561026057600080fd5b50610295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db5565b6040518082815260200191505060405180910390f35b3480156102b757600080fd5b506102f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dcd565b005b34801561030457600080fd5b50610339600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123c565b6040518082815260200191505060405180910390f35b34801561035b57600080fd5b50610364611254565b6040518082815260200191505060405180910390f35b34801561038657600080fd5b506103a56004803603810190808035906020019092919050505061125a565b005b3480156103b357600080fd5b506103bc6112f3565b6040518082815260200191505060405180910390f35b3480156103de57600080fd5b506103e76112f9565b6040518082815260200191505060405180910390f35b34801561040957600080fd5b506104126112ff565b6040518082815260200191505060405180910390f35b34801561043457600080fd5b5061043d611305565b6040518082815260200191505060405180910390f35b34801561045f57600080fd5b5061046861130b565b604051808215151515815260200191505060405180910390f35b34801561048e57600080fd5b5061049761131a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e557600080fd5b506104ee611340565b6040518082815260200191505060405180910390f35b34801561051057600080fd5b50610519611346565b6040518082815260200191505060405180910390f35b34801561053b57600080fd5b5061054461134c565b6040518082815260200191505060405180910390f35b34801561056657600080fd5b5061058560048036038101908080359060200190929190505050611352565b005b34801561059357600080fd5b506105b2600480360381019080803590602001909291905050506113c7565b005b3480156105c057600080fd5b506105c961147b565b604051808215151515815260200191505060405180910390f35b3480156105ef57600080fd5b506105f861148a565b005b34801561060657600080fd5b5061060f6115b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065d57600080fd5b50610692600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115dd565b604051808260058111156106a257fe5b60ff16815260200191505060405180910390f35b3480156106c257600080fd5b506106f5600480360381019080803590602001909291908035906020019092919080359060200190929190505050611608565b005b34801561070357600080fd5b50610738600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ab565b6040518082815260200191505060405180910390f35b34801561075a57600080fd5b506107636116f4565b6040518082600281111561077357fe5b60ff16815260200191505060405180910390f35b34801561079357600080fd5b5061079c611707565b6040518082815260200191505060405180910390f35b3480156107be57600080fd5b506107c761170f565b6040518082815260200191505060405180910390f35b3480156107e957600080fd5b5061080860048036038101908080359060200190929190505050611715565b005b34801561081657600080fd5b50610855600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117ae565b005b34801561086357600080fd5b5061086c611a34565b6040518082815260200191505060405180910390f35b34801561088e57600080fd5b506108cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a3a565b005b610903600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109f6565b005b34801561091157600080fd5b50610946600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b3a565b005b34801561095457600080fd5b5061095d611c92565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109ab57600080fd5b506109b4611cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060006004544210158015610a0f57506005544211155b1515610a1a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610a5657600080fd5b610a5e611cdd565b1515610a6957600080fd5b349250610a8160025484611cef90919063ffffffff16565b91506000905060006002811115610a9457fe5b600960009054906101000a900460ff166002811115610aaf57fe5b1415610aea57610ae36064610ad5610ac685611d27565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b9050610b7f565b60016002811115610af757fe5b600960009054906101000a900460ff166002811115610b1257fe5b1415610b4d57610b466064610b38610b2985611dda565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b9050610b7e565b610b7b6064610b6d610b5e85611e77565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b90505b5b610b928183611f1490919063ffffffff16565b9150610b9e8484611f30565b610bb383600354611f1490919063ffffffff16565b600381905550610bc38483611f5d565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188585604051808381526020018281526020019250505060405180910390a3610c38611ff6565b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c93576012600081548092919060010191905055505b610ce583601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f1490919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9057600080fd5b600081111515610d9f57600080fd5b80600f8190555050565b60006005544211905090565b60116020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e2957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610e6557600080fd5b600081111515610e7457600080fd5b6001811415610f40576000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836005811115610edc57fe5b0217905550610eed82600a546120ce565b610ef68261220b565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611238565b6002811415610fb2576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836005811115610fa857fe5b0217905550611237565b600381141561107e576002601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600581111561101a57fe5b021790555061102b82600b546120ce565b6110348261220b565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611236565b60048114156110f0576003601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360058111156110e657fe5b0217905550611235565b60058114156111bc576004601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600581111561115857fe5b021790555061116982600c546120ce565b6111728261220b565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611234565b6006811415611233576005601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600581111561122457fe5b0217905550611232826122d3565b5b5b5b5b5b5b5050565b60086020528060005260406000206000915090505481565b60025481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b8060001115156112c557600080fd5b6002600960006101000a81548160ff021916908360028111156112e457fe5b02179055508060048190555050565b600d5481565b600e5481565b60035481565b60055481565b6000600d546003541015905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b600f5481565b600a5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ae57600080fd5b6000811115156113bd57600080fd5b8060058190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142357600080fd5b60008111151561143257600080fd5b806002819055507f405abb412de10615259208579eb3fb7019bf2e662ba7be1355cc75f8781f320f8142604051808381526020018281526020019250505060405180910390a150565b6000600e546003541015905090565b60003360058081111561149957fe5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660058111156114f457fe5b14151561150057600080fd5b611508610da9565b151561151357600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060008211151561156457600080fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115b33383612407565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60106020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561166457600080fd5b60008311151561167357600080fd5b60008211151561168257600080fd5b60008111151561169157600080fd5b82600a8190555081600b8190555080600c81905550505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900460ff1681565b6012600a0a81565b60045481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561177157600080fd5b60008111151561178057600080fd5b6001600960006101000a81548160ff0219169083600281111561179f57fe5b02179055508060048190555050565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561180d57600080fd5b600454421015801561182157506005544211155b151561182c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118695750600083115b151561187457600080fd5b61188960025484611cef90919063ffffffff16565b9150600090506000600281111561189c57fe5b600960009054906101000a900460ff1660028111156118b757fe5b14156118f2576118eb60646118dd6118ce85611d27565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b9050611987565b600160028111156118ff57fe5b600960009054906101000a900460ff16600281111561191a57fe5b14156119555761194e606461194061193185611dda565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b9050611986565b611983606461197561196685611e77565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b90505b5b61199a8183611f1490919063ffffffff16565b91506119b183600354611f1490919063ffffffff16565b6003819055506119c18483611f5d565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188585604051808381526020018281526020019250505060405180910390a350505050565b60125481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a9657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611abd5750600081115b1515611ac857600080fd5b611ad28282611f5d565b6005601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836005811115611b3157fe5b02179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b9657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611bd257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008034600f54111590508091505090565b600080831415611d025760009050611d21565b8183029050818382811515611d1357fe5b04141515611d1d57fe5b8090505b92915050565b6000806000809150611d466012600a0a85611dc490919063ffffffff16565b905061c3508111158015611d5d5750620249ef8110155b15611d6b57601e9150611dba565b620249f08111158015611d815750620493df8110155b15611d8f5760239150611db9565b620493e08111158015611da557506207a1208110155b15611db35760289150611db8565b601991505b5b5b8192505050919050565b60008183811515611dd157fe5b04905092915050565b6000806000809150611df96012600a0a85611dc490919063ffffffff16565b905061c3508111158015611e105750620249ef8110155b15611e1e5760199150611e6d565b620249f08111158015611e345750620493df8110155b15611e4257601e9150611e6c565b620493e08111158015611e5857506207a1208110155b15611e665760239150611e6b565b601491505b5b5b8192505050919050565b6000806000809150611e966012600a0a85611dc490919063ffffffff16565b905061c3508111158015611ead5750620249ef8110155b15611ebb5760149150611f0a565b620249f08111158015611ed15750620493df8110155b15611edf5760199150611f09565b620493e08111158015611ef557506207a1208110155b15611f0357601e9150611f08565b600f91505b5b5b8192505050919050565b60008183019050828110151515611f2757fe5b80905092915050565b6004544210158015611f4457506005544211155b1515611f4f57600080fd5b611f598282612515565b5050565b611faf81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f1490919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b1580156120b357600080fd5b505af11580156120c7573d6000803e3d6000fd5b5050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212a57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663410085df83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156121ef57600080fd5b505af1158015612203573d6000803e3d6000fd5b505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561224857600080fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561232f57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d8f06b52826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156123ec57600080fd5b505af1158015612400573d6000803e3d6000fd5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124cb57600080fd5b505af11580156124df573d6000803e3d6000fd5b505050506040513d60208110156124f557600080fd5b8101908080519060200190929190505050151561251157600080fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561255157600080fd5b6000811415151561256157600080fd5b50505600a165627a7a7230582013d6326f70919d7535911f3dbf7075031301998b390f94ccde9388988c01a3850029608060405234801561001057600080fd5b506040516020806109ef83398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156100af57600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506108ef806101006000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063410085df14610088578063521eb273146100d55780638da5cb5b1461012c578063cb13cddb14610183578063d8f06b52146101da578063f2fde38b1461021d578063f340fa0114610260575b600080fd5b34801561009457600080fd5b506100d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610296565b005b3480156100e157600080fd5b506100ea610492565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101416104b8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561018f57600080fd5b506101c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104dd565b6040518082815260200191505060405180910390f35b3480156101e657600080fd5b5061021b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f5565b005b34801561022957600080fd5b5061025e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610646565b005b610294600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061079b565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156102f357600080fd5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050610348828261088e90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610390573d6000803e3d6000fd5b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156103f9573d6000803e3d6000fd5b508273ffffffffffffffffffffffffffffffffffffffff167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d0651826040518082815260200191505060405180910390a26000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561055257600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610641573d6000803e3d6000fd5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106a157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156106dd57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107f657600080fd5b61084834600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108a790919063ffffffff16565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600082821115151561089c57fe5b818303905092915050565b600081830190508281101515156108ba57fe5b809050929150505600a165627a7a72305820646b6453788c44fbcc0b6c35fc1ad146e3f0a5d2abd36dd191a55b6a0bab19cc0029000000000000000000000000000000000000000000000000000000005b1ca27c000000000000000000000000000000000000000000000000000000005bda7a040000000000000000000000000000000000000000000000000000000000000496000000000000000000000000580e254ca2cb1627d95ae71d3d27c593b952624700000000000000000000000037e5fdcbbfc038d754f84fdc3cb9c0b11535d179

Deployed Bytecode

0x6080604052600436106101c2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fd62f57146101cd57806313f56f73146101f85780631515bc2b146102255780631aae346014610254578063214405fc146102ab57806327e235e3146102f85780632c4e722e1461034f5780632c757eed1461037a578063355274ea146103a757806340193883146103d25780634042b66f146103fd5780634b6753bc146104285780634f93594514610453578063521eb27314610482578063534514ee146104d95780635b55169c146105045780635f497a091461052f57806368a9de131461055a57806374e7493b146105875780637d3d6522146105b45780638d8f2adb146105e35780638da5cb5b146105fa5780639b19251a14610651578063a67ba5d2146106b6578063aed76aa4146106f7578063b1c9fe6e1461074e578063b3d91e4114610787578063b7a8807c146107b2578063ba8fb567146107dd578063d174c3881461080a578063d7e64c0014610857578063de53474414610882578063ec8ac4d8146108cf578063f2fde38b14610905578063fbfa77cf14610948578063fc0c546a1461099f575b6101cb336109f6565b005b3480156101d957600080fd5b506101e2610d2e565b6040518082815260200191505060405180910390f35b34801561020457600080fd5b5061022360048036038101908080359060200190929190505050610d34565b005b34801561023157600080fd5b5061023a610da9565b604051808215151515815260200191505060405180910390f35b34801561026057600080fd5b50610295600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db5565b6040518082815260200191505060405180910390f35b3480156102b757600080fd5b506102f6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dcd565b005b34801561030457600080fd5b50610339600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123c565b6040518082815260200191505060405180910390f35b34801561035b57600080fd5b50610364611254565b6040518082815260200191505060405180910390f35b34801561038657600080fd5b506103a56004803603810190808035906020019092919050505061125a565b005b3480156103b357600080fd5b506103bc6112f3565b6040518082815260200191505060405180910390f35b3480156103de57600080fd5b506103e76112f9565b6040518082815260200191505060405180910390f35b34801561040957600080fd5b506104126112ff565b6040518082815260200191505060405180910390f35b34801561043457600080fd5b5061043d611305565b6040518082815260200191505060405180910390f35b34801561045f57600080fd5b5061046861130b565b604051808215151515815260200191505060405180910390f35b34801561048e57600080fd5b5061049761131a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104e557600080fd5b506104ee611340565b6040518082815260200191505060405180910390f35b34801561051057600080fd5b50610519611346565b6040518082815260200191505060405180910390f35b34801561053b57600080fd5b5061054461134c565b6040518082815260200191505060405180910390f35b34801561056657600080fd5b5061058560048036038101908080359060200190929190505050611352565b005b34801561059357600080fd5b506105b2600480360381019080803590602001909291905050506113c7565b005b3480156105c057600080fd5b506105c961147b565b604051808215151515815260200191505060405180910390f35b3480156105ef57600080fd5b506105f861148a565b005b34801561060657600080fd5b5061060f6115b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065d57600080fd5b50610692600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115dd565b604051808260058111156106a257fe5b60ff16815260200191505060405180910390f35b3480156106c257600080fd5b506106f5600480360381019080803590602001909291908035906020019092919080359060200190929190505050611608565b005b34801561070357600080fd5b50610738600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ab565b6040518082815260200191505060405180910390f35b34801561075a57600080fd5b506107636116f4565b6040518082600281111561077357fe5b60ff16815260200191505060405180910390f35b34801561079357600080fd5b5061079c611707565b6040518082815260200191505060405180910390f35b3480156107be57600080fd5b506107c761170f565b6040518082815260200191505060405180910390f35b3480156107e957600080fd5b5061080860048036038101908080359060200190929190505050611715565b005b34801561081657600080fd5b50610855600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117ae565b005b34801561086357600080fd5b5061086c611a34565b6040518082815260200191505060405180910390f35b34801561088e57600080fd5b506108cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a3a565b005b610903600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109f6565b005b34801561091157600080fd5b50610946600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b3a565b005b34801561095457600080fd5b5061095d611c92565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109ab57600080fd5b506109b4611cb8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060006004544210158015610a0f57506005544211155b1515610a1a57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610a5657600080fd5b610a5e611cdd565b1515610a6957600080fd5b349250610a8160025484611cef90919063ffffffff16565b91506000905060006002811115610a9457fe5b600960009054906101000a900460ff166002811115610aaf57fe5b1415610aea57610ae36064610ad5610ac685611d27565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b9050610b7f565b60016002811115610af757fe5b600960009054906101000a900460ff166002811115610b1257fe5b1415610b4d57610b466064610b38610b2985611dda565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b9050610b7e565b610b7b6064610b6d610b5e85611e77565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b90505b5b610b928183611f1490919063ffffffff16565b9150610b9e8484611f30565b610bb383600354611f1490919063ffffffff16565b600381905550610bc38483611f5d565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188585604051808381526020018281526020019250505060405180910390a3610c38611ff6565b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c93576012600081548092919060010191905055505b610ce583601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f1490919063ffffffff16565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050565b600b5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d9057600080fd5b600081111515610d9f57600080fd5b80600f8190555050565b60006005544211905090565b60116020528060005260406000206000915090505481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e2957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515610e6557600080fd5b600081111515610e7457600080fd5b6001811415610f40576000601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836005811115610edc57fe5b0217905550610eed82600a546120ce565b610ef68261220b565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611238565b6002811415610fb2576001601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836005811115610fa857fe5b0217905550611237565b600381141561107e576002601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600581111561101a57fe5b021790555061102b82600b546120ce565b6110348261220b565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611236565b60048114156110f0576003601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908360058111156110e657fe5b0217905550611235565b60058114156111bc576004601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600581111561115857fe5b021790555061116982600c546120ce565b6111728261220b565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611234565b6006811415611233576005601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083600581111561122457fe5b0217905550611232826122d3565b5b5b5b5b5b5b5050565b60086020528060005260406000206000915090505481565b60025481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b8060001115156112c557600080fd5b6002600960006101000a81548160ff021916908360028111156112e457fe5b02179055508060048190555050565b600d5481565b600e5481565b60035481565b60055481565b6000600d546003541015905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b600f5481565b600a5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ae57600080fd5b6000811115156113bd57600080fd5b8060058190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142357600080fd5b60008111151561143257600080fd5b806002819055507f405abb412de10615259208579eb3fb7019bf2e662ba7be1355cc75f8781f320f8142604051808381526020018281526020019250505060405180910390a150565b6000600e546003541015905090565b60003360058081111561149957fe5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1660058111156114f457fe5b14151561150057600080fd5b611508610da9565b151561151357600080fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060008211151561156457600080fd5b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115b33383612407565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60106020528060005260406000206000915090508060000160009054906101000a900460ff16905081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561166457600080fd5b60008311151561167357600080fd5b60008211151561168257600080fd5b60008111151561169157600080fd5b82600a8190555081600b8190555080600c81905550505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900460ff1681565b6012600a0a81565b60045481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561177157600080fd5b60008111151561178057600080fd5b6001600960006101000a81548160ff0219169083600281111561179f57fe5b02179055508060048190555050565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561180d57600080fd5b600454421015801561182157506005544211155b151561182c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118695750600083115b151561187457600080fd5b61188960025484611cef90919063ffffffff16565b9150600090506000600281111561189c57fe5b600960009054906101000a900460ff1660028111156118b757fe5b14156118f2576118eb60646118dd6118ce85611d27565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b9050611987565b600160028111156118ff57fe5b600960009054906101000a900460ff16600281111561191a57fe5b14156119555761194e606461194061193185611dda565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b9050611986565b611983606461197561196685611e77565b85611cef90919063ffffffff16565b611dc490919063ffffffff16565b90505b5b61199a8183611f1490919063ffffffff16565b91506119b183600354611f1490919063ffffffff16565b6003819055506119c18483611f5d565b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188585604051808381526020018281526020019250505060405180910390a350505050565b60125481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a9657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611abd5750600081115b1515611ac857600080fd5b611ad28282611f5d565b6005601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690836005811115611b3157fe5b02179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b9657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611bd257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008034600f54111590508091505090565b600080831415611d025760009050611d21565b8183029050818382811515611d1357fe5b04141515611d1d57fe5b8090505b92915050565b6000806000809150611d466012600a0a85611dc490919063ffffffff16565b905061c3508111158015611d5d5750620249ef8110155b15611d6b57601e9150611dba565b620249f08111158015611d815750620493df8110155b15611d8f5760239150611db9565b620493e08111158015611da557506207a1208110155b15611db35760289150611db8565b601991505b5b5b8192505050919050565b60008183811515611dd157fe5b04905092915050565b6000806000809150611df96012600a0a85611dc490919063ffffffff16565b905061c3508111158015611e105750620249ef8110155b15611e1e5760199150611e6d565b620249f08111158015611e345750620493df8110155b15611e4257601e9150611e6c565b620493e08111158015611e5857506207a1208110155b15611e665760239150611e6b565b601491505b5b5b8192505050919050565b6000806000809150611e966012600a0a85611dc490919063ffffffff16565b905061c3508111158015611ead5750620249ef8110155b15611ebb5760149150611f0a565b620249f08111158015611ed15750620493df8110155b15611edf5760199150611f09565b620493e08111158015611ef557506207a1208110155b15611f0357601e9150611f08565b600f91505b5b5b8192505050919050565b60008183019050828110151515611f2757fe5b80905092915050565b6004544210158015611f4457506005544211155b1515611f4f57600080fd5b611f598282612515565b5050565b611faf81600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f1490919063ffffffff16565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0134336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b1580156120b357600080fd5b505af11580156120c7573d6000803e3d6000fd5b5050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561212a57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663410085df83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156121ef57600080fd5b505af1158015612203573d6000803e3d6000fd5b505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561224857600080fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561232f57600080fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d8f06b52826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156123ec57600080fd5b505af1158015612400573d6000803e3d6000fd5b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124cb57600080fd5b505af11580156124df573d6000803e3d6000fd5b505050506040513d60208110156124f557600080fd5b8101908080519060200190929190505050151561251157600080fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561255157600080fd5b6000811415151561256157600080fd5b50505600a165627a7a7230582013d6326f70919d7535911f3dbf7075031301998b390f94ccde9388988c01a3850029

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

000000000000000000000000000000000000000000000000000000005b1ca27c000000000000000000000000000000000000000000000000000000005bda7a040000000000000000000000000000000000000000000000000000000000000496000000000000000000000000580e254ca2cb1627d95ae71d3d27c593b952624700000000000000000000000037e5fdcbbfc038d754f84fdc3cb9c0b11535d179

-----Decoded View---------------
Arg [0] : _starttime (uint256): 1528603260
Arg [1] : _endTime (uint256): 1541044740
Arg [2] : _rate (uint256): 1174
Arg [3] : _wallet (address): 0x580e254ca2Cb1627D95aE71D3d27C593B9526247
Arg [4] : _token (address): 0x37e5fDcBBfc038d754F84FDc3CB9C0b11535D179

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005b1ca27c
Arg [1] : 000000000000000000000000000000000000000000000000000000005bda7a04
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000496
Arg [3] : 000000000000000000000000580e254ca2cb1627d95ae71d3d27c593b9526247
Arg [4] : 00000000000000000000000037e5fdcbbfc038d754f84fdc3cb9c0b11535d179


Swarm Source

bzzr://646b6453788c44fbcc0b6c35fc1ad146e3f0a5d2abd36dd191a55b6a0bab19cc

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.