Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 82 txns
Token Tracker: Paradise Token (PDT)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xbce5030b0ecb3dea3652e326bda5a5eb8a44a8e7at txn 0x39221758ec51ffce1ead3815ecc5a6db0f473b0b57110b1fc009830afd0192f5
 Latest 25 transactions from a total of 82 transactions

TxHash Age From To Value [TxFee]
0xa03f69fd92f05ff5d8fc588a0b6384b8f5a2ba4ff05b41def192e3a56f67689013 hrs 26 mins ago0x87741bdbc3e01fbed29caead759734da7f1336dc  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000042
0xf0dc5313a81bb4bca287dce8fe2531125e54c64f95aa5623a57d39d84ff8093013 hrs 30 mins ago0x674866340ad949521bcfd5fcfcc0cb2282810fc2  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000105
0x9c1e440cf521239af5e1c37900cfd31e36f2da5e9aba537ae9c6177713984ddf18 hrs 31 mins ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000269479
0x091058da4c99aba510a4a6a1b1c8d8b08fb8dc1d1a9cd55e5ab0a12e68b915dc1 day 10 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000192485
0xea00d417d907f8900e213597748c2cdc11d961304a81a669064701aeb56643991 day 11 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000153732
0x32b6e12333e81c8605c57fb86a254173aad532bb22a83356bacf4406b4b0d1a31 day 11 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000153988
0x4675b0436c1e30e52ecafb28cd7b2eb2caab1a4be9a3ae803eae96ce31cc30a71 day 11 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000115491
0x4e26321d26c02c924613fe0bd8ecb0623f00376084fc0d883f4528b577e7560b2 days 8 hrs ago0xbce5030b0ecb3dea3652e326bda5a5eb8a44a8e7  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.00053497
0xccce6fccd4b818fa51a6d886166ecd75afec2b909f90a7687eb160a21dc947b13 days 5 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000153988
0x7a13b0d8c2e00d6471b9e5356ae5afe5a883683f01c636f18f05078e9c125d633 days 7 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000153988
0xddf57cb04ddc5618eb43937ccfc2e54f4b2d98987343842205f7a4de3531c0603 days 9 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000153988
0x53fd1fec77651754819edbabc5ba8f7d65b3788c3124a21b5bfa1a24a6baf4083 days 10 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000213988
0x483d0386656a5c9b0449fb4abb93cef62317622892ee7c002946af5cf87fd3963 days 12 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000192485
0xabf9893ad12bbe828547258f0953c7f5e230cb366b40594873ba6c20bc0ad6d53 days 12 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000267485
0xbe903979639d15885b14f8c4910cfcfda10a17fc31b18eb046b48162dd0f3cb23 days 12 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000192485
0xda348f99dce998ef6cabb670463c8912704d6b715676783bdab4631915f460db3 days 13 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000230982
0x0fe8d3aac3ced7bb41898733a52aa147a4ada66b436aaf6e105952ff4283b71f3 days 13 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000192485
0xb29b8205db7a6aac017a2825537e93fd5878cc2674a73e5fd5b545e2bd10723d3 days 13 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000320982
0x37cd4e4dd9d21ae846caf8af81a4782d289731bff6faf359807ee0ea0d7e22693 days 13 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000192485
0x2cee4e5b47e2e76a93e511d2dcc866d482f96d1605a4f33848de8999be9e83043 days 14 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000192485
0xcd4e65486ae8b4a572bfc432e49553142ee91291447707a6424d1d99b3179f3c3 days 14 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000153732
0xbae61b6d914502cf69cac27e898e269250a82d94d77a0e0b4bd8d2d7d792acdd5 days 12 hrs ago0xbce5030b0ecb3dea3652e326bda5a5eb8a44a8e7  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.00053497
0xb30b8b9b791c6d28bd179de5bbcff4b6dba9a108dbb4381bab8671b83e5b68b06 days 2 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000213988
0xc427358797a38586d72e534537ffb436493f4a7bf2f493eb5c9743f9d55c18986 days 3 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000267485
0x918f9c16ca981ad2db0dc55475b29c6578bc0fa1d24258a3d190b4dc8d84afda6 days 4 hrs ago0xc45e58430ef6a1f68e9523a478907a0461da2d83  IN   0xfa2b9e5f4b60767d4c3ca6e316d8599311419b3e0 Ether0.000213988
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Exact Match)
Contract Name: ParadiseToken
Compiler Text: v0.5.1+commit.c8a2cb62
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

/*************************
 * 
 *  `_        (三|  
 *  |ヒ_) / ̄ ̄\  PDT  
 *  | | /●) (●)  \||  
 *  |_|( (_人_)  )^亅  
 *  | ヽ\  ̄ _/ ミノ  
 *  ヽノノ ̄|レ―-イ / ノ  /   
 *   \ ヽ\ |/ イ      
 *  / ̄二二二二二二\   
 * `|raj| Paradise ||  
 *  \_二二二二二二/   
 *
 *************************/

pragma solidity ^0.5.0;

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

}

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

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  function 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 c;
  }

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

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

 /**
 * @title ERC20Basic
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  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);
}

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

/**
 * @title Basic token
 * @dev Basic version of StandardToken
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;

  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}


/*
 * ParadiseToken is a standard ERC20 token with some additional functionalities:
 * - Transfers are only enabled after contract owner enables it (After StartTime)
 * - Contract sets 70% of the total supply as allowance for ICO contract
 */
    
contract ParadiseToken is StandardToken, Ownable {
    
    // Constants
    string public constant symbol = "PDT";
    string public constant name = "Paradise Token";
    uint8 public constant decimals = 18;
    uint256 public constant InitialSupplyCup = 300000000 * (10 ** uint256(decimals)); // 300 mil tokens minted
    uint256 public constant TokenAllowance = 210000000 * (10 ** uint256(decimals));   // 210 mil tokens public allowed 
    uint256 public constant AdminAllowance = InitialSupplyCup - TokenAllowance;       // 90 mil tokens admin allowed 
    
    // Properties
    address public adminAddr;            // the number of tokens available for the administrator
    address public tokenAllowanceAddr = 0x9A4518ad59ac1D0Fc9A77d9083f233cD0b8d77Fa; // the number of tokens available for crowdsales
    bool public transferEnabled = false;  // indicates if transferring tokens is enabled or not
    
    
    modifier onlyWhenTransferAllowed() {
        require(transferEnabled || msg.sender == adminAddr || msg.sender == tokenAllowanceAddr);
        _;
    }

    /**
     * Check if token offering address is set or not
     */
    modifier onlyTokenOfferingAddrNotSet() {
        require(tokenAllowanceAddr == address(0x0));
        _;
    }

    /**
     * Check if address is a valid destination to transfer tokens to
     * - must not be zero address
     * - must not be the token address
     * - must not be the owner's address
     * - must not be the admin's address
     * - must not be the token offering contract address
     */
    modifier validDestination(address to) {
        require(to != address(0x0));
        require(to != address(this));
        require(to != owner);
        require(to != address(adminAddr));
        require(to != address(tokenAllowanceAddr));
        _;
    }
    
    /**
     * Token contract constructor
     *
     * @param admin Address of admin account
     */
    constructor(address admin) public {
        totalSupply = InitialSupplyCup;
        
        // Mint tokens
        balances[msg.sender] = totalSupply;
        emit Transfer(address(0x0), msg.sender, totalSupply);

        // Approve allowance for admin account
        adminAddr = admin;
        approve(adminAddr, AdminAllowance);
    }

    /**
     * Set token offering to approve allowance for offering contract to distribute tokens
     *
     * Note that if _amountForSale is 0, then it is assumed that the full
     * remaining crowdsale supply is made available to the crowdsale.
     * 
     * @param offeringAddr Address of token offerng contract
     * @param amountForSale Amount of tokens for sale, set 0 to max out
     */
    function setTokenOffering(address offeringAddr, uint256 amountForSale) external onlyOwner {
        require(!transferEnabled);

        uint256 amount = (amountForSale == 0) ? TokenAllowance : amountForSale;
        require(amount <= TokenAllowance);

        approve(offeringAddr, amount);
        tokenAllowanceAddr = offeringAddr;
        
    }
    
    /**
     * Enable transfers
     */
    function enableTransfer() external onlyOwner {
        transferEnabled = true;

        // End the offering
        approve(tokenAllowanceAddr, 0);
    }

    /**
     * Transfer from sender to another account
     *
     * @param to Destination address
     * @param value Amount of PDTtokens to send
     */
    function transfer(address to, uint256 value) public onlyWhenTransferAllowed validDestination(to) returns (bool) {
        return super.transfer(to, value);
    }
    
    /**
     * Transfer from `from` account to `to` account using allowance in `from` account to the sender
     *
     * @param from Origin address
     * @param to Destination address
     * @param value Amount of PDTtokens to send
     */
    function transferFrom(address from, address to, uint256 value) public onlyWhenTransferAllowed validDestination(to) returns (bool) {
        return super.transferFrom(from, to, value);
    }
    
}

/**
 * The ParadiseToken token (PDT) has a fixed supply and restricts the ability
 * to transfer tokens until the owner has called the enableTransfer()
 * function.
 *
 * The owner can associate the token with a token sale contract. In that
 * case, the token balance is moved to the token sale contract, which
 * in turn can transfer its tokens to contributors to the sale.
 */

contract ParadiseTokenSale is Pausable {

    using SafeMath for uint256;

    // The beneficiary is the future recipient of the funds
    address public beneficiary = 0x1Bb7390407F7987BD160993dE44d6f2737945436;

    // The crowdsale has a funding goal, cap, deadline, and minimum contribution
    uint public fundingGoal = 22700 ether;  // Base on 75$ per ether
    uint public fundingCap = 53400 ether;   // Base on 75$ per ether
    uint public minContribution = 10**17;   // 0.1 Ether
    bool public fundingGoalReached = false;
    bool public fundingCapReached = false;
    bool public saleClosed = false;

    // Time period of sale (UNIX timestamps)
    uint public startTime = 1547031675; // Wednesday, 09-Jan-19 @ 11:01:15 am (UTC)
    uint public endTime = 1552129275;  //  Saturday, 09-Mar-19 @ 11:01:15 am (UTC)
   
    // Keeps track of the amount of wei raised
    uint public amountRaised;
    // amount that has been refunded so far
    uint public refundAmount;

    // The ratio of PDT to Ether
    uint public rate;
    uint public constant LOW_RANGE_RATE = 10000;    // 0% bonus
    uint public constant HIGH_RANGE_RATE = 14000;   // 40% bonus for 1 week
    
    // The token being sold
    ParadiseToken public tokenReward;

    // A map that tracks the amount of wei contributed by address
    mapping(address => uint256) public balanceOf;
    
    // Events
    event GoalReached(address _beneficiary, uint _amountRaised);
    event CapReached(address _beneficiary, uint _amountRaised);
    event FundTransfer(address _backer, uint _amount, bool _isContribution);

    // Modifiers
    modifier beforeDeadline()   { require (currentTime() < endTime); _; }
    modifier afterDeadline()    { require (currentTime() >= endTime); _; }
    modifier afterStartTime()    { require (currentTime() >= startTime); _; }

    modifier saleNotClosed()    { require (!saleClosed); _; }

    
    /**
     * Constructor for a crowdsale of ParadiseToken tokens.
     *
     * @param ifSuccessfulSendTo            the beneficiary of the fund
     * @param fundingGoalInEthers           the minimum goal to be reached
     * @param fundingCapInEthers            the cap (maximum) size of the fund
     * @param minimumContributionInWei      minimum contribution (in wei)
     * @param start                         the start time (UNIX timestamp)
     * @param durationInMinutes             the duration of the crowdsale in minutes
     * @param ratePDTToEther                the conversion rate from PDT to Ether
     * @param addressOfTokenUsedAsReward    address of the token being sold
     */
    constructor(
        address ifSuccessfulSendTo,
        uint fundingGoalInEthers,
        uint fundingCapInEthers,
        uint minimumContributionInWei,
        uint start,
        uint durationInMinutes,
        uint ratePDTToEther,
        address addressOfTokenUsedAsReward
    ) public {
        require(ifSuccessfulSendTo != address(0) && ifSuccessfulSendTo != address(this));
        require(addressOfTokenUsedAsReward != address(0) && addressOfTokenUsedAsReward != address(this));
        require(fundingGoalInEthers <= fundingCapInEthers);
        require(durationInMinutes > 0);
        beneficiary = ifSuccessfulSendTo;
        fundingGoal = fundingGoalInEthers * 1 ether;
        fundingCap = fundingCapInEthers * 1 ether;
        minContribution = minimumContributionInWei;
        startTime = start;
        endTime = start + durationInMinutes * 1 minutes; 
        setRate(ratePDTToEther);
        tokenReward = ParadiseToken(addressOfTokenUsedAsReward);
    }

    /**
     * This function is called whenever Ether is sent to the
     * smart contract. It can only be executed when the crowdsale is
     * not paused, not closed, and before the deadline has been reached.
     *
     * This function will update state variables for whether or not the
     * funding goal or cap have been reached. It also ensures that the
     * tokens are transferred to the sender, and that the correct
     * number of tokens are sent according to the current rate.
     */
    function () payable external {
        buy();
    }

    function buy ()
        payable public
        whenNotPaused
        beforeDeadline
        afterStartTime
        saleNotClosed
    {
        require(msg.value >= minContribution);
        uint amount = msg.value;
        
        // Compute the number of tokens to be rewarded to the sender
        // Note: it's important for this calculation that both wei
        // and PDT have the same number of decimal places (18)
        uint numTokens = amount.mul(rate);
        
        // Transfer the tokens from the crowdsale supply to the sender
        if (tokenReward.transferFrom(tokenReward.owner(), msg.sender, numTokens)) {
    
        // update the total amount raised
        amountRaised = amountRaised.add(amount);
     
        // update the sender's balance of wei contributed
        balanceOf[msg.sender] = balanceOf[msg.sender].add(amount);

        emit FundTransfer(msg.sender, amount, true);
        // Check if the funding goal or cap have been reached
        checkFundingGoal();
        checkFundingCap();
        }
        else {
            revert();
        }
    }
    
    /**
     * The owner can update the rate (PDT to ETH).
     *
     * @param _rate  the new rate for converting PDT to ETH
     */
    function setRate(uint _rate) public onlyOwner {
        require(_rate >= LOW_RANGE_RATE && _rate <= HIGH_RANGE_RATE);
        rate = _rate;
    }
    
     /**
     * The owner can terminate the crowdsale at any time.
     */
    function terminate() external onlyOwner {
        saleClosed = true;
    }
    
     /**
     *
     * The owner can allocate the specified amount of tokens from the
     * crowdsale allowance to the recipient (to).
     *
     * NOTE: be extremely careful to get the amounts correct, which
     * are in units of wei and PDT. Every digit counts.
     *
     * @param to            the recipient of the tokens
     * @param amountWei     the amount contributed in wei
     * @param amountPDT the amount of tokens transferred in PDT
     */
     
     
     function ownerAllocateTokens(address to, uint amountWei, uint amountPDT) public
            onlyOwner 
    {
        //don't allocate tokens for the admin
        //require(tokenReward.adminAddr() != to);
        
        if (!tokenReward.transferFrom(tokenReward.owner(), to, amountPDT)) {
            revert();
        }
        amountRaised = amountRaised.add(amountWei);
        balanceOf[to] = balanceOf[to].add(amountWei);
        emit FundTransfer(to, amountWei, true);
        checkFundingGoal();
        checkFundingCap();
    }

    /**
     * The owner can call this function to withdraw the funds that
     * have been sent to this contract. The funds will be sent to
     * the beneficiary specified when the crowdsale was created.
     */
    function ownerSafeWithdrawal() external onlyOwner  {
        uint balanceToSend = address(this).balance;
        address(0x1Bb7390407F7987BD160993dE44d6f2737945436).transfer(balanceToSend);
        emit FundTransfer(beneficiary, balanceToSend, false);
    }
    
   /**
     * Checks if the funding goal has been reached. If it has, then
     * the GoalReached event is triggered.
     */
    function checkFundingGoal() internal {
        if (!fundingGoalReached) {
            if (amountRaised >= fundingGoal) {
                fundingGoalReached = true;
                emit GoalReached(beneficiary, amountRaised);
            }
        }
    }

    /**
     * Checks if the funding cap has been reached. If it has, then
     * the CapReached event is triggered.
     */
   function checkFundingCap() internal {
        if (!fundingCapReached) {
            if (amountRaised >= fundingCap) {
                fundingCapReached = true;
                saleClosed = true;
                emit CapReached(beneficiary, amountRaised);
            }
        }
    }

    /**
     * Returns the current time.
     * Useful to abstract calls to "now" for tests.
    */
    function currentTime() view public returns (uint _currentTime) {
        return now;
    }
}

interface IERC20 {
  function balanceOf(address _owner) external view returns (uint256);
  function allowance(address _owner, address _spender) external view returns (uint256);
  function transfer(address _to, uint256 _value) external returns (bool);
  function transferFrom(address _from, address _to, uint256 _value) external returns (bool);
  function approve(address _spender, uint256 _value) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title ParadiseToken initial distribution
 * @dev Distribute airdrop tokens
 */
 
contract PDTDistribution is Ownable {
  
  function drop(IERC20 token, address[] memory recipients, uint256[] memory values) public onlyOwner {
    for (uint256 i = 0; i < recipients.length; i++) {
      token.transfer(recipients[i], values[i]);
    }
  }
}

/*
 *(`・P・)(`・P・´)(・P・´)
 *     Created by Paradise
 *(´・P・)(´・P・`)(・P・`)
 */

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"InitialSupplyCup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenAllowanceAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"AdminAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"offeringAddr","type":"address"},{"name":"amountForSale","type":"uint256"}],"name":"setTokenOffering","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"adminAddr","outputs":[{"name":"","type":"address"}],"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":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"TokenAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"enableTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"admin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6080604052739a4518ad59ac1d0fc9a77d9083f233cd0b8d77fa600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff02191690831515021790555034801561008057600080fd5b5060405160208061216a833981018060405260208110156100a057600080fd5b810190808051906020019092919050505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a0a6311e1a30002600081905550600054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000546040518082815260200191505060405180910390a380600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061024c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260ff16600a0a630c84588002601260ff16600a0a6311e1a3000203610253640100000000026401000000009004565b5050610345565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b611e16806103546000396000f3fe608060405260043610610117576000357c01000000000000000000000000000000000000000000000000000000009004806306fdde031461011c57806308a9b96e146101ac578063095ea7b3146101d757806318160ddd1461024a57806323b872dd14610275578063313ce5671461030857806337987710146103395780634cd412d51461039057806366188463146103bf57806370a0823114610432578063719cf08814610497578063726f63f6146104c2578063818305931461051d5780638da5cb5b1461057457806395d89b41146105cb578063a9059cbb1461065b578063b416bc93146106ce578063d73dd623146106f9578063dd62ed3e1461076c578063f1b50c1d146107f1578063f2fde38b14610808575b600080fd5b34801561012857600080fd5b50610131610859565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610171578082015181840152602081019050610156565b50505050905090810190601f16801561019e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b857600080fd5b506101c1610892565b6040518082815260200191505060405180910390f35b3480156101e357600080fd5b50610230600480360360408110156101fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108a3565b604051808215151515815260200191505060405180910390f35b34801561025657600080fd5b5061025f610995565b6040518082815260200191505060405180910390f35b34801561028157600080fd5b506102ee6004803603606081101561029857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061099b565b604051808215151515815260200191505060405180910390f35b34801561031457600080fd5b5061031d610c0c565b604051808260ff1660ff16815260200191505060405180910390f35b34801561034557600080fd5b5061034e610c11565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039c57600080fd5b506103a5610c37565b604051808215151515815260200191505060405180910390f35b3480156103cb57600080fd5b50610418600480360360408110156103e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c4a565b604051808215151515815260200191505060405180910390f35b34801561043e57600080fd5b506104816004803603602081101561045557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610edb565b6040518082815260200191505060405180910390f35b3480156104a357600080fd5b506104ac610f24565b6040518082815260200191505060405180910390f35b3480156104ce57600080fd5b5061051b600480360360408110156104e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f44565b005b34801561052957600080fd5b50610532611049565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561058057600080fd5b5061058961106f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105d757600080fd5b506105e0611095565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610620578082015181840152602081019050610605565b50505050905090810190601f16801561064d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561066757600080fd5b506106b46004803603604081101561067e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110ce565b604051808215151515815260200191505060405180910390f35b3480156106da57600080fd5b506106e361133d565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b506107526004803603604081101561071c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061134e565b604051808215151515815260200191505060405180910390f35b34801561077857600080fd5b506107db6004803603604081101561078f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061154a565b6040518082815260200191505060405180910390f35b3480156107fd57600080fd5b506108066115d1565b005b34801561081457600080fd5b506108576004803603602081101561082b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611678565b005b6040805190810160405280600e81526020017f506172616469736520546f6b656e00000000000000000000000000000000000081525081565b601260ff16600a0a6311e1a3000281565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60005481565b6000600560149054906101000a900460ff1680610a055750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610a5d5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610a6857600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610aa557600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610ae057600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b3d57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610b9a57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610bf757600080fd5b610c028585856117d0565b9150509392505050565b601281565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560149054906101000a900460ff1681565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115610d5b576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610def565b610d6e8382611b8f90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601260ff16600a0a630c84588002601260ff16600a0a6311e1a300020381565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fa057600080fd5b600560149054906101000a900460ff16151515610fbc57600080fd5b6000808214610fcb5781610fda565b601260ff16600a0a630c845880025b9050601260ff16600a0a630c845880028111151515610ff857600080fd5b61100283826108a3565b5082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600381526020017f504454000000000000000000000000000000000000000000000000000000000081525081565b6000600560149054906101000a900460ff16806111385750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806111905750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561119b57600080fd5b82600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156111d857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561121357600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561127057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156112cd57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561132a57600080fd5b6113348484611ba8565b91505092915050565b601260ff16600a0a630c8458800281565b60006113df82600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dcc90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561162d57600080fd5b6001600560146101000a81548160ff021916908315150217905550611675600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006108a3565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116d457600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561171057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561180d57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561185b57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156118e657600080fd5b61193882600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8f90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119cd82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dcc90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a9f82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8f90919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000828211151515611b9d57fe5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611be557600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515611c3357600080fd5b611c8582600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b8f90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d1a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dcc90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000808284019050838110151515611de057fe5b809150509291505056fea165627a7a72305820da2193923c07dbc08b00472d10c1f362fec2d3f56c28a758be872d60123082080029000000000000000000000000ef96a6af4afa4abeb08f4c87cab593d2e0b7a447

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ef96a6af4afa4abeb08f4c87cab593d2e0b7a447


   Swarm Source:
bzzr://da2193923c07dbc08b00472d10c1f362fec2d3f56c28a758be872d6012308208

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.