Sponsored Link:   ARNA Genomics - FIRST BLOCKCHAIN BIOTECH ECOSYSTEM. Join ICO Now!
Contract Overview | GlobalJobcoinICO
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 632 txns
Token Tracker 0x2ae965cd3d2b6d186e87d9586fc3bdbfc667cacc
  Latest 25 txns from a total Of 632 transactions View All

TxHash Age From To Value [TxFee]
0xb8b14420abcbd9db6be19c91b785dbda0cd270ffebed969f8c974c67cd5586de18 hrs 47 mins ago0xa4c223bf1ca0a1cf2e5606ede0d46ced9333f0c2  IN   GlobalJobcoinICO1 Ether0.00155184
0x17f8580fa0e15a00317b18135d71aabd4599075fcb11bcb1ba67da5e8020ad9c22 hrs 13 mins ago0xa412bf18a56c434af240db877a47d371d180ec47  IN   GlobalJobcoinICO1 Ether0.001629432
0xfef3e997a775f2108cda4e9da0a8571c69a0aa7fc0399598f63f17b74270fa9b1 day 6 hrs ago0x2a4c62a7f8dd4ae7cce2e5b9ba11a0ba2fc57086  IN   GlobalJobcoinICO0.1 Ether0.0031296
0x469d194ba9f788e8cdbfdbd4caa4b900a4c4367dad411941be3f605d74498e8c1 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x91c37ae4bb8252e7ccff7c6ab7504486e5044018b5161ded8332c3d97cd646251 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x3a1ad7db89090fec3c267eacbaa66289f0efa3eb226834a7d94b0307204a067d1 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122552
0x8f31f5f76de2f75b5f1dd8b5491bee994ca91a96e763c1ff999a8c82c158a60f1 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x72a59aee45ec40305c32e1b8d21dee0c9fa9a71c68f0788161223c7d2714a0491 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0xea05a963aa585a5a2c97812def2aef7e7036b285625a02cfdeb8c4d03facba2d1 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122552
0x37225e1b3d32d7cbec0f721a7e5b6a6eb3d5bb24fc39d39cd77d5804abc93d5f1 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122424
0x7dd8abf8d132cc731d354182d023e7602fa487901ee39a0901623535b1e2e72c1 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x41426043757943801e82a9242a6f67d618214f4917076d86f82ebf90e2ea38ef1 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092424
0x7e6c8110851c6dcbcbabaff873e6c0b448b20a78938e1648abfe376e396ceefe1 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x3cc1f145b1cdd611497e6203603894260048fe62537985e5d3fa2566a15420d31 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x7cee10aba1f74e1e8ec87fca46a4b83c84da2c9843b8ca017ac23922f32807e31 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x8b51fc89839f019d7d7e5dddf98612929c4806ead9c05b1cb3eea1df6579a0111 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122552
0xd4e941a654bc07a1fa362d616688a909762c271b91b7e63ab2ecae818e3e531c1 day 7 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122552
0xa831f6268624fc4d1a603e220d66815abd71beba0958bc424dadec2d6ed53a871 day 8 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122424
0x21e7977443486433f3b0283acba78e940b3a0580398ff4e8ae280cea004838551 day 8 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x2a4998fab11278145148279ed46991620fca46666a3acba305b5d0425177e2141 day 8 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x24c6c95eb2f1417c2e9dce533e749bfa2279a455f7de0be0aea53af407b11b1e1 day 8 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0xb2933acfcc019d1517033e9ccb3effcd1c9855e8c94127af8ed64a669c4a03551 day 8 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x0e1786db300bf495856afb7917eac86ca642996197eaf7df35c544460aff59d11 day 8 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x323168a0d0fa670099db117d3dde1c07634267ce499c901f165d6f101e6dc0bf1 day 8 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00092552
0x2154d70c4912bcf050c5b51dba8155a8a13308984e60cedb524764896f737c341 day 8 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122552
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0xb8b14420abcbd9db6be19c91b785dbda0cd270ffebed969f8c974c67cd5586de459096918 hrs 47 mins ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1 Ether
0x17f8580fa0e15a00317b18135d71aabd4599075fcb11bcb1ba67da5e8020ad9c459013722 hrs 13 mins ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1 Ether
0xfef3e997a775f2108cda4e9da0a8571c69a0aa7fc0399598f63f17b74270fa9b45880571 day 6 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.1 Ether
0x981807697425f59d0f0d37101889f2eb3d3a1c52b92c618597fa1a64356e010f45818522 days 5 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.1 Ether
0x5afe4bc549760ed5ce8847c998a053d1c885d45d8a5af0648e263983f0c6c62045806492 days 10 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.031 Ether
0x3efc9742f8ad08f293fb300df4e2ad11678794f16d3ee3287721094cb304e64645788482 days 17 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.2 Ether
0xbcee7dbf1b9dfda3d0367f05868770f6a23d64908c4827866faf48b14a85b90245784662 days 18 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.033 Ether
0x016333ee4b975b70943fddcd0fe2b0698a400df79eb66ef4874f5b0d9a45ca8545774452 days 22 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.3 Ether
0xfe06ff404e829a156039beef8321d86ec2e77b7401e8f3b09ff8c580a87e0f5d45771892 days 23 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.269 Ether
0xd9acb5e5edd33c3354f53248e242cb39be2154ea3ff33e17f4b604aa9b98058645756713 days 5 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1 Ether
0xf0146b3d8cef8afd41fb40b974b61c65f38f6f58a4661242c4aba140066fa67845742423 days 11 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.3 Ether
0x07c068eae9c1c0614602fdaa2bdd8869ff0de3622750823e1e77e4d2ed40e5c245728773 days 16 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1.5 Ether
0xcc1f45e0b558dbaf48605d07e996999dfaf9e48262865285a903128193904c9145724813 days 18 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.98 Ether
0x11713f2389b93c213ecee93abb633529db5956651ababc9002858663fff6bced45724503 days 18 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1 Ether
0x5df0c3182e22a72c65339a43da7e96214bc010f566c0c564894a31fead5c1e8645703804 days 2 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.816121586 Ether
0x86ec6625c5bd98eaa781a18a2f8f38ebf231ac5f1061c4ef12afcabaec83630e45603575 days 17 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.31 Ether
0x8d1722d38435f3ad5e4c7bfa0869ddcbeab726cc2a26841e2f28723bad2957a145601605 days 17 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1 Ether
0xd28fc5aa5ef17af016c0991f57e510b43096133053ea64c55e065c66e025d88f45590665 days 21 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.5 Ether
0x52d4532eda6488e9fdf109826d9088db8ab1d2a6e647d3ad6122c476d3cb4c2b45557536 days 10 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa2 Ether
0x3a2b9270c5c0618aaa0ce3e584b2d9c2425c9d8b9e79b2090cbff7ac5682671c45540436 days 17 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.185375693 Ether
0xc35f64aba6ed4793637c931a61bf9b672f715da181169f832381a481260c616245528476 days 21 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1.5 Ether
0xe2ba1cee2dee95d0bc8ea56afdb4269bca6014ccaa964711928f91789943e78b45527506 days 22 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.5 Ether
0xeadccf50af31f17e3e44f482ca1430fe10d9290e1cb60cb36bb0e54cd33942d745521817 days 36 mins ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.23 Ether
0x165193ded283db37db714bae1ac9b045ababca9ad87058a1e8bac7c5114e4d5145471367 days 20 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.01 Ether
0x16035c78a208c92a8016dd60c07c0a1c6f258f6b356c8ee5930c499d3079c11e45450978 days 4 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.25 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: GJCICO
Compiler Version: v0.4.15+commit.bbb8e64f
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.15;

library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant 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 constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }

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

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));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

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;
    Pause();
  }

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

contract GJCICO is Pausable{
  using SafeMath for uint256;

  //Gas/GWei
  uint constant public minContribAmount = 0.01 ether;

  // The token being sold
  GJCToken public token;
  uint256 constant public tokenDecimals = 18;

  // The vesting contract
  TokenVesting public vesting;
  uint256 constant public VESTING_TIMES = 4;
  uint256 constant public DURATION_PER_VESTING = 52 weeks;

  // start and end timestamps where investments are allowed (both inclusive)
  uint256 public startTime;
  uint256 public endTime;

  // need to be enabled to allow investor to participate in the ico
  bool public icoEnabled;

  // address where funds are collected
  address public multisignWallet;

  // amount of raised money in wei
  uint256 public weiRaised;

  // totalSupply
  uint256 constant public totalSupply = 100000000 * (10 ** tokenDecimals);
  //pre sale cap
  uint256 constant public preSaleCap = 10000000 * (10 ** tokenDecimals);
  //sale cap
  uint256 constant public initialICOCap = 60000000 * (10 ** tokenDecimals);
  //founder share
  uint256 constant public tokensForFounder = 10000000 * (10 ** tokenDecimals);
  //dev team share
  uint256 constant public tokensForDevteam = 10000000 * (10 ** tokenDecimals);
  //Partners share
  uint256 constant public tokensForPartners = 5000000 * (10 ** tokenDecimals);
  //Charity share
  uint256 constant public tokensForCharity = 3000000 * (10 ** tokenDecimals);
  //Bounty share
  uint256 constant public tokensForBounty = 2000000 * (10 ** tokenDecimals);
    
  //Sold presale tokens
  uint256 public soldPreSaleTokens; 
  uint256 public sentPreSaleTokens;

  //ICO tokens
  //Is calcluated as: initialICOCap + preSaleCap - soldPreSaleTokens
  uint256 public icoCap; 
  uint256 public icoSoldTokens; 
  bool public icoEnded = false;

  //Sale rates
  uint256 constant public RATE_FOR_WEEK1 = 525;
  uint256 constant public RATE_FOR_WEEK2 = 455;
  uint256 constant public RATE_FOR_WEEK3 = 420;
  uint256 constant public RATE_NO_DISCOUNT = 350;


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


  function GJCICO(address _multisignWallet) {
    require(_multisignWallet != address(0));
    token = createTokenContract();
    //send all dao tokens to multiwallet
    uint256 tokensToDao = tokensForDevteam.add(tokensForPartners).add(tokensForBounty).add(tokensForCharity);
    multisignWallet = _multisignWallet;
    token.transfer(multisignWallet, tokensToDao);
  }

  function createVestingForFounder(address founderAddress) external onlyOwner(){
    require(founderAddress != address(0));
    //create only once
    require(address(vesting) == address(0));
    vesting = createTokenVestingContract(address(token));
    // create vesting schema for founders from now, total token amount is divided in 4 periods of 12 months each
    vesting.createVestingByDurationAndSplits(founderAddress, tokensForFounder, now, DURATION_PER_VESTING, VESTING_TIMES);
    //send tokens to vesting contracts
    token.transfer(address(vesting), tokensForFounder);
  }

  //
  // Token related operations
  //

  // creates the token to be sold. 
  
  function createTokenContract() internal returns (GJCToken) {
    return new GJCToken();
  }

  // creates the token to be sold.
  // override this method to have crowdsale of a specific mintable token.
  function createTokenVestingContract(address tokenAddress) internal returns (TokenVesting) {
    require(address(token) != address(0));
    return new TokenVesting(tokenAddress);
  }


  // enable token tranferability
  function enableTokenTransferability() external onlyOwner {
    require(token != address(0));
    token.unpause(); 
  }

  // disable token tranferability
  function disableTokenTransferability() external onlyOwner {
    require(token != address(0));
    token.pause(); 
  }


  //
  // Presale related operations
  //

  // set total pre sale sold token
  // can not be changed once the ico is enabled
  // Ico cap is determined by SaleCap + PreSaleCap - soldPreSaleTokens 
  function setSoldPreSaleTokens(uint256 _soldPreSaleTokens) external onlyOwner{
    require(!icoEnabled);
    require(_soldPreSaleTokens <= preSaleCap);
    soldPreSaleTokens = _soldPreSaleTokens;
  }

  // transfer pre sale tokend to investors
  // soldPreSaleTokens need to be set beforehand, and bigger than 0
  // the total amount to tranfered need to be less or equal to soldPreSaleTokens 
  function transferPreSaleTokens(uint256 tokens, address beneficiary) external onlyOwner {
    require(beneficiary != address(0));
    require(soldPreSaleTokens > 0);
    uint256 newSentPreSaleTokens = sentPreSaleTokens.add(tokens);
    require(newSentPreSaleTokens <= soldPreSaleTokens);
    sentPreSaleTokens = newSentPreSaleTokens;
    token.transfer(beneficiary, tokens);
  }


  //
  // ICO related operations
  //

  // set multisign wallet
  function setMultisignWallet(address _multisignWallet) external onlyOwner{
    // need to be set before the ico start
    require(!icoEnabled || now < startTime);
    require(_multisignWallet != address(0));
    multisignWallet = _multisignWallet;
  }

  // delegate vesting contract owner
  function delegateVestingContractOwner(address newOwner) external onlyOwner{
    vesting.transferOwnership(newOwner);
  }

  // set contribution dates
  function setContributionDates(uint256 _startTime, uint256 _endTime) external onlyOwner{
    require(!icoEnabled);
    require(_startTime >= now);
    require(_endTime >= _startTime);
    startTime = _startTime;
    endTime = _endTime;
  }

  // enable ICO, need to be true to actually start ico
  // multisign wallet need to be set, because once ico started, invested funds is transfered to this address
  // once ico is enabled, following parameters can not be changed anymore:
  // startTime, endTime, soldPreSaleTokens
  function enableICO() external onlyOwner{
    require(startTime >= now);

    require(multisignWallet != address(0));
    icoEnabled = true;
    icoCap = initialICOCap.add(preSaleCap).sub(soldPreSaleTokens);
  }


  // fallback function can be used to buy tokens
  function () payable whenNotPaused {
    buyTokens(msg.sender);
  }

  // low level token purchase function
  function buyTokens(address beneficiary) public payable whenNotPaused {
    require(beneficiary != address(0));
    require(validPurchase());

    uint256 weiAmount = msg.value;
    uint256 returnWeiAmount;

    // calculate token amount to be created
    uint rate = getRate();
    assert(rate > 0);
    uint256 tokens = weiAmount.mul(rate);

    uint256 newIcoSoldTokens = icoSoldTokens.add(tokens);

    if (newIcoSoldTokens > icoCap) {
        newIcoSoldTokens = icoCap;
        tokens = icoCap.sub(icoSoldTokens);
        uint256 newWeiAmount = tokens.div(rate);
        returnWeiAmount = weiAmount.sub(newWeiAmount);
        weiAmount = newWeiAmount;
    }

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

    token.transfer(beneficiary, tokens);
    icoSoldTokens = newIcoSoldTokens;
    if (returnWeiAmount > 0){
        msg.sender.transfer(returnWeiAmount);
    }

    TokenPurchase(msg.sender, beneficiary, weiAmount, tokens);

    forwardFunds();
  }

  // send ether to the fund collection wallet
  
  function forwardFunds() internal {
    multisignWallet.transfer(this.balance);
  }

  // unsold ico tokens transfer automatically in endIco
  // function transferUnsoldIcoTokens() onlyOwner {
  // require(hasEnded());
  // require(icoSoldTokens < icoCap);
  // uint256 unsoldTokens = icoCap.sub(icoSoldTokens);
  // token.transfer(multisignWallet, unsoldTokens);
  //}

  // @return true if the transaction can buy tokens
  function validPurchase() internal constant returns (bool) {
    bool withinPeriod = now >= startTime && now <= endTime;
    bool nonMinimumPurchase = msg.value >= minContribAmount;
    bool icoTokensAvailable = icoSoldTokens < icoCap;
    return !icoEnded && icoEnabled && withinPeriod && nonMinimumPurchase && icoTokensAvailable;
  }

  // end ico by owner, not really needed in normal situation
  function endIco() external onlyOwner {
    require(!icoEnded);
    icoEnded = true;
    // send unsold tokens to multi-sign wallet
    uint256 unsoldTokens = icoCap.sub(icoSoldTokens);
    token.transfer(multisignWallet, unsoldTokens);
  }

  // @return true if crowdsale event has ended
  function hasEnded() public constant returns (bool) {
    return (icoEnded || icoSoldTokens >= icoCap || now > endTime);
  }


  function getRate() public constant returns(uint){
    require(now >= startTime);
    if (now < startTime.add(1 weeks)){
      // week 1
      return RATE_FOR_WEEK1;
    }else if (now < startTime.add(2 weeks)){
      // week 2
      return RATE_FOR_WEEK2;
    }else if (now < startTime.add(3 weeks)){
      // week 3
      return RATE_FOR_WEEK3;
    }else if (now < endTime){
      // no discount
      return RATE_NO_DISCOUNT;
    }
    return 0;
  }

  // drain all eth for owner in an emergency situation
  function drain() external onlyOwner {
    owner.transfer(this.balance);
  }
}

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);
}

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);
    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 constant returns (uint256 balance) {
    return balances[_owner];
  }

}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public constant 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);
}

library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, value));
  }

  function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal {
    assert(token.transferFrom(from, to, value));
  }

  function safeApprove(ERC20 token, address spender, uint256 value) internal {
    assert(token.approve(spender, value));
  }
}

contract TokenVesting is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for ERC20Basic;

    ERC20Basic token;
    // vesting
    mapping (address => uint256) totalVestedAmount;

    struct Vesting {
        uint256 amount;
        uint256 vestingDate;
    }

    address[] accountKeys;
    mapping (address => Vesting[]) public vestingAccounts;

    // events
    event Vest(address indexed beneficiary, uint256 amount);
    event VestingCreated(address indexed beneficiary, uint256 amount, uint256 vestingDate);

    // modifiers here
    modifier tokenSet() {
        require(address(token) != address(0));
        _;
    }

    // vesting constructor
    function TokenVesting(address token_address){
       require(token_address != address(0));
       token = ERC20Basic(token_address);
    }

    // set vesting token address
    function setVestingToken(address token_address) external onlyOwner {
        require(token_address != address(0));
        token = ERC20Basic(token_address);
    }

    // create vesting by introducing beneficiary addres, total token amount, start date, duration for each vest period and number of periods
    function createVestingByDurationAndSplits(address user, uint256 total_amount, uint256 startDate, uint256 durationPerVesting, uint256 times) public onlyOwner tokenSet {
        require(user != address(0));
        require(startDate >= now);
        require(times > 0);
        require(durationPerVesting > 0);
        uint256 vestingDate = startDate;
        uint256 i;
        uint256 amount = total_amount.div(times);
        for (i = 0; i < times; i++) {
            vestingDate = vestingDate.add(durationPerVesting);
            if (vestingAccounts[user].length == 0){
                accountKeys.push(user);
            }
            vestingAccounts[user].push(Vesting(amount, vestingDate));
            VestingCreated(user, amount, vestingDate);
        }
    }

    // get current user total granted token amount
    function getVestingAmountByNow(address user) constant returns (uint256){
        uint256 amount;
        uint256 i;
        for (i = 0; i < vestingAccounts[user].length; i++) {
            if (vestingAccounts[user][i].vestingDate < now) {
                amount = amount.add(vestingAccounts[user][i].amount);
            }
        }

    }

    // get user available vesting amount, total amount - received amount
    function getAvailableVestingAmount(address user) constant returns (uint256){
        uint256 amount;
        amount = getVestingAmountByNow(user);
        amount = amount.sub(totalVestedAmount[user]);
        return amount;
    }

    // get list of vesting users address
    function getAccountKeys(uint256 page) external constant returns (address[10]){
        address[10] memory accountList;
        uint256 i;
        for (i=0 + page * 10; i<10; i++){
            if (i < accountKeys.length){
                accountList[i - page * 10] = accountKeys[i];
            }
        }
        return accountList;
    }

    // vest
    function vest() external tokenSet {
        uint256 availableAmount = getAvailableVestingAmount(msg.sender);
        require(availableAmount > 0);
        totalVestedAmount[msg.sender] = totalVestedAmount[msg.sender].add(availableAmount);
        token.transfer(msg.sender, availableAmount);
        Vest(msg.sender, availableAmount);
    }

    // drain all eth and tokens to owner in an emergency situation
    function drain() external onlyOwner {
        owner.transfer(this.balance);
        token.transfer(owner, this.balance);
    }
}

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);
    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;
    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 constant returns (uint256 remaining) {
    return allowed[_owner][_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)
   * From MonolithDAO Token.sol
   */
  function increaseApproval (address _spender, uint _addedValue) public returns (bool success) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval (address _spender, uint _subtractedValue) public returns (bool success) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

contract PausableToken is StandardToken, Pausable {
  /**
   * @dev modifier to allow actions only when the contract is not paused or
   * the sender is the owner of the contract
   */
  modifier whenNotPausedOrOwner() {
    require(msg.sender == owner || !paused);
    _;
  }

  function transfer(address _to, uint256 _value) public whenNotPausedOrOwner returns (bool) {
    return super.transfer(_to, _value);
  }

  function transferFrom(address _from, address _to, uint256 _value) public whenNotPausedOrOwner returns (bool) {
    return super.transferFrom(_from, _to, _value);
  }

  function approve(address _spender, uint256 _value) public whenNotPausedOrOwner returns (bool) {
    return super.approve(_spender, _value);
  }

  function increaseApproval(address _spender, uint _addedValue) public whenNotPausedOrOwner returns (bool success) {
    return super.increaseApproval(_spender, _addedValue);
  }

  function decreaseApproval(address _spender, uint _subtractedValue) public whenNotPausedOrOwner returns (bool success) {
    return super.decreaseApproval(_spender, _subtractedValue);
  }
}

contract GJCToken is PausableToken {
  string constant public name = "GJC";
  string constant public symbol = "GJC";
  uint256 constant public decimals = 18;
  uint256 constant TOKEN_UNIT = 10 ** uint256(decimals);
  uint256 constant INITIAL_SUPPLY = 100000000 * TOKEN_UNIT;

  function GJCToken() {
    // Set untransferable by default to the token
    paused = true;
    // asign all tokens to the contract creator
    totalSupply = INITIAL_SUPPLY;
    Transfer(0x0, msg.sender, INITIAL_SUPPLY);
    balances[msg.sender] = INITIAL_SUPPLY;
  }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"RATE_FOR_WEEK1","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"soldPreSaleTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"VESTING_TIMES","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_multisignWallet","type":"address"}],"name":"setMultisignWallet","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"RATE_FOR_WEEK3","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokenDecimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokens","type":"uint256"},{"name":"beneficiary","type":"address"}],"name":"transferPreSaleTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoSoldTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensForCharity","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"preSaleCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vesting","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"founderAddress","type":"address"}],"name":"createVestingForFounder","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minContribAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_soldPreSaleTokens","type":"uint256"}],"name":"setSoldPreSaleTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"sentPreSaleTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensForBounty","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensForPartners","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"multisignWallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"disableTokenTransferability","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"DURATION_PER_VESTING","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"drain","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"initialICOCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"RATE_NO_DISCOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"RATE_FOR_WEEK2","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"enableICO","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"endIco","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"enableTokenTransferability","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensForDevteam","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensForFounder","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"delegateVestingContractOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"}],"name":"setContributionDates","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_multisignWallet","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"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"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526000805460a060020a60ff0219169055600b805460ff1916905534156200002a57600080fd5b604051602080620041e5833981016040528080519150505b60005b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a03821615156200007757600080fd5b6200008f64010000000062001817620001eb82021704565b60018054600160a060020a031916600160a060020a0392909216919091179055620001266a027b46536c66c8e3000000620000fc6a01a784379d99db42000000816a084595161401484a0000006a0422ca8b0a00a4250000006401000000006200021481026200171f1704565b906401000000006200171f6200021482021704565b906401000000006200171f6200021482021704565b6005805461010060a860020a031916610100600160a060020a03868116820292909217928390556001549394509281169263a9059cbb920416836000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620001c657600080fd5b6102c65a03f11515620001d857600080fd5b505050604051805150505b505062000240565b6000620001f76200022f565b604051809103906000f08015156200020e57600080fd5b90505b90565b6000828201838110156200022457fe5b8091505b5092915050565b604051610e2e80620033b783390190565b61316780620002506000396000f300606060405236156200024f5763ffffffff60e060020a6000350416630bf847978114620002775780630cc87b1c146200029f57806312783f2f14620002c7578063133d5d4e14620002ef57806318160ddd14620003135780632c28aa1b146200033b5780633197cbb614620003635780633b97e856146200038b5780633f4ba83a14620003b35780634042b66f14620003cb57806343ba2cf514620003f357806343d42780146200041a57806344249f041462000442578063446303f3146200046a57806344c63eec146200049257806350d0b06014620004c4578063585ac3e814620004e85780635b55169c14620005125780635ba5b1b2146200053a5780635c975abb14620005555780635d2a5d3d146200057f578063644280e214620005a7578063679aefce14620005cf5780636b63444014620005f7578063710edb10146200061f57806378e9792514620006515780637f493ce614620006795780638456cb5914620006915780638da5cb5b14620006a9578063966933ce14620006db5780639890220b1462000703578063a8d9a89a146200071b578063ad498ce11462000743578063cab47da7146200076b578063cee401ef1462000793578063d5c06d3014620007ab578063d96cb01814620007d5578063e657807b14620007fd578063e968ab951462000815578063ec8ac4d8146200082d578063ecb70fb71462000845578063f1395f3f146200046a578063f180743a146200046a578063f2fde38b14620008bf578063f72c75a514620008e3578063fc0c546a1462000907578063fcfe22471462000939575b5b60005460a060020a900460ff16156200026857600080fd5b620002733362000957565b5b5b005b34156200028357600080fd5b6200028d62000b7d565b60405190815260200160405180910390f35b3415620002ab57600080fd5b6200028d62000b83565b60405190815260200160405180910390f35b3415620002d357600080fd5b6200028d62000b89565b60405190815260200160405180910390f35b3415620002fb57600080fd5b62000273600160a060020a036004351662000b8e565b005b34156200031f57600080fd5b6200028d62000c12565b60405190815260200160405180910390f35b34156200034757600080fd5b6200028d62000c21565b60405190815260200160405180910390f35b34156200036f57600080fd5b6200028d62000c27565b60405190815260200160405180910390f35b34156200039757600080fd5b6200028d62000c2d565b60405190815260200160405180910390f35b3415620003bf57600080fd5b6200027362000c32565b005b3415620003d757600080fd5b6200028d62000cb6565b60405190815260200160405180910390f35b3415620003ff57600080fd5b62000273600435600160a060020a036024351662000cbc565b005b34156200042657600080fd5b6200028d62000db0565b60405190815260200160405180910390f35b34156200044e57600080fd5b6200028d62000db6565b60405190815260200160405180910390f35b34156200047657600080fd5b6200028d62000dc5565b60405190815260200160405180910390f35b34156200049e57600080fd5b620004a862000dd4565b604051600160a060020a03909116815260200160405180910390f35b3415620004d057600080fd5b62000273600160a060020a036004351662000de3565b005b3415620004f457600080fd5b620004fe62000f8a565b604051901515815260200160405180910390f35b34156200051e57600080fd5b6200028d62000f93565b60405190815260200160405180910390f35b34156200054657600080fd5b6200027360043562000f9e565b005b34156200056157600080fd5b620004fe62000fee565b604051901515815260200160405180910390f35b34156200058b57600080fd5b6200028d62000ffe565b60405190815260200160405180910390f35b3415620005b357600080fd5b6200028d62001004565b60405190815260200160405180910390f35b3415620005db57600080fd5b6200028d62001013565b60405190815260200160405180910390f35b34156200060357600080fd5b6200028d620010c3565b60405190815260200160405180910390f35b34156200062b57600080fd5b620004a8620010d2565b604051600160a060020a03909116815260200160405180910390f35b34156200065d57600080fd5b6200028d620010e6565b60405190815260200160405180910390f35b34156200068557600080fd5b62000273620010ec565b005b34156200069d57600080fd5b6200027362001179565b005b3415620006b557600080fd5b620004a862001202565b604051600160a060020a03909116815260200160405180910390f35b3415620006e757600080fd5b6200028d62001211565b60405190815260200160405180910390f35b34156200070f57600080fd5b6200027362001219565b005b34156200072757600080fd5b6200028d62001273565b60405190815260200160405180910390f35b34156200074f57600080fd5b6200028d62001282565b60405190815260200160405180910390f35b34156200077757600080fd5b6200028d62001288565b60405190815260200160405180910390f35b34156200079f57600080fd5b620002736200128e565b005b3415620007b757600080fd5b620004fe62001329565b604051901515815260200160405180910390f35b3415620007e157600080fd5b6200028d62001332565b60405190815260200160405180910390f35b34156200080957600080fd5b6200027362001338565b005b34156200082157600080fd5b620002736200141b565b005b62000273600160a060020a036004351662000957565b005b34156200085157600080fd5b620004fe620014a8565b604051901515815260200160405180910390f35b34156200047657600080fd5b6200028d62000dc5565b60405190815260200160405180910390f35b34156200047657600080fd5b6200028d62000dc5565b60405190815260200160405180910390f35b3415620008cb57600080fd5b62000273600160a060020a0360043516620014f2565b005b3415620008ef57600080fd5b62000273600160a060020a03600435166200158d565b005b34156200091357600080fd5b620004a862001614565b604051600160a060020a03909116815260200160405180910390f35b34156200094557600080fd5b6200027360043560243562001623565b005b600080600080600080600060149054906101000a900460ff161515156200097d57600080fd5b600160a060020a03871615156200099357600080fd5b6200099d6200167c565b1515620009a957600080fd5b349550620009b662001013565b935060008411620009c357fe5b620009d5868563ffffffff620016ed16565b600a54909350620009ed908463ffffffff6200171f16565b915060095482111562000a4457600954600a5490925062000a1690839063ffffffff6200173a16565b925062000a2a838563ffffffff6200175216565b905062000a3e868263ffffffff6200173a16565b94508095505b60065462000a59908763ffffffff6200171f16565b600655600154600160a060020a031663a9059cbb888560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151562000abc57600080fd5b6102c65a03f1151562000ace57600080fd5b50505060405180515050600a829055600085111562000b1957600160a060020a03331685156108fc0286604051600060405180830381858888f19350505050151562000b1957600080fd5b5b86600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18888660405191825260208201526040908101905180910390a362000b726200176f565b5b5b50505050505050565b61020d81565b60075481565b600481565b60005433600160a060020a0390811691161462000baa57600080fd5b60055460ff16158062000bbe575060035442105b151562000bca57600080fd5b600160a060020a038116151562000be057600080fd5b6005805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a038416021790555b5b50565b6a52b7d2dcc80cd2e400000081565b6101a481565b60045481565b601281565b60005433600160a060020a0390811691161462000c4e57600080fd5b60005460a060020a900460ff16151562000c6757600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15b5b5b565b60065481565b6000805433600160a060020a0390811691161462000cd957600080fd5b600160a060020a038216151562000cef57600080fd5b6007546000901162000d0057600080fd5b60085462000d15908463ffffffff6200171f16565b60075490915081111562000d2857600080fd5b6008819055600154600160a060020a031663a9059cbb838560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151562000d8d57600080fd5b6102c65a03f1151562000d9f57600080fd5b505050604051805150505b5b505050565b600a5481565b6a027b46536c66c8e300000081565b6a084595161401484a00000081565b600254600160a060020a031681565b60005433600160a060020a0390811691161462000dff57600080fd5b600160a060020a038116151562000e1557600080fd5b600254600160a060020a03161562000e2c57600080fd5b60015462000e4390600160a060020a0316620017b1565b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392831617908190551663321a7c8c826a084595161401484a000000426301dfe200600460405160e060020a63ffffffff8816028152600160a060020a039095166004860152602485019390935260448401919091526064830152608482015260a401600060405180830381600087803b151562000ee257600080fd5b6102c65a03f1151562000ef457600080fd5b5050600154600254600160a060020a03918216925063a9059cbb91166a084595161401484a00000060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151562000f6957600080fd5b6102c65a03f1151562000f7b57600080fd5b505050604051805150505b5b50565b600b5460ff1681565b662386f26fc1000081565b60005433600160a060020a0390811691161462000fba57600080fd5b60055460ff161562000fcb57600080fd5b6a084595161401484a00000081111562000fe457600080fd5b60078190555b5b50565b60005460a060020a900460ff1681565b60085481565b6a01a784379d99db4200000081565b6003546000904210156200102657600080fd5b6003546200103e9062093a8063ffffffff6200171f16565b42101562001050575061020d620010c0565b60035462001068906212750063ffffffff6200171f16565b4210156200107a57506101c7620010c0565b6003546200109290621baf8063ffffffff6200171f16565b421015620010a457506101a4620010c0565b600454421015620010b9575061015e620010c0565b5b5b5b5060005b90565b6a0422ca8b0a00a42500000081565b6005546101009004600160a060020a031681565b60035481565b60005433600160a060020a039081169116146200110857600080fd5b600154600160a060020a031615156200112057600080fd5b600154600160a060020a0316638456cb596040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156200116057600080fd5b6102c65a03f1151562000daa57600080fd5b5050505b5b565b60005433600160a060020a039081169116146200119557600080fd5b60005460a060020a900460ff1615620011ad57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15b5b5b565b600054600160a060020a031681565b6301dfe20081565b60005433600160a060020a039081169116146200123557600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151562000cb257600080fd5b5b5b565b6a31a17e847807b1bc00000081565b61015e81565b6101c781565b60005433600160a060020a03908116911614620012aa57600080fd5b60035442901015620012bb57600080fd5b6005546101009004600160a060020a03161515620012d857600080fd5b6005805460ff191660011790556007546200132290620013156a31a17e847807b1bc0000006a084595161401484a00000063ffffffff6200171f16565b9063ffffffff6200173a16565b6009555b5b565b60055460ff1681565b60095481565b6000805433600160a060020a039081169116146200135557600080fd5b600b5460ff16156200136657600080fd5b600b805460ff19166001179055600a546009546200138a9163ffffffff6200173a16565b600154600554919250600160a060020a039081169163a9059cbb91610100909104168360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151562000f6957600080fd5b6102c65a03f1151562000f7b57600080fd5b505050604051805150505b5b50565b60005433600160a060020a039081169116146200143757600080fd5b600154600160a060020a031615156200144f57600080fd5b600154600160a060020a0316633f4ba83a6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156200116057600080fd5b6102c65a03f1151562000daa57600080fd5b5050505b5b565b600b5460009060ff1680620014c15750600954600a5410155b80620014ce575060045442115b90505b90565b6a084595161401484a00000081565b6a084595161401484a00000081565b60005433600160a060020a039081169116146200150e57600080fd5b600160a060020a03811615156200152457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a03908116911614620015a957600080fd5b600254600160a060020a031663f2fde38b8260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515620015fa57600080fd5b6102c65a03f115156200160c57600080fd5b5050505b5b50565b600154600160a060020a031681565b60005433600160a060020a039081169116146200163f57600080fd5b60055460ff16156200165057600080fd5b428210156200165e57600080fd5b818110156200166c57600080fd5b600382905560048190555b5b5050565b60008060008060035442101580156200169757506004544211155b600954600a54600b54929550662386f26fc10000341015945010915060ff16158015620016c6575060055460ff165b8015620016d05750825b8015620016da5750815b8015620016e45750805b93505b50505090565b60008282028315806200170b57508284828115156200170857fe5b04145b15156200171457fe5b8091505b5092915050565b6000828201838110156200171457fe5b8091505b5092915050565b6000828211156200174757fe5b508082035b92915050565b60008082848115156200176157fe5b0490508091505b5092915050565b600554600160a060020a0361010090910481169030163180156108fc0290604051600060405180830381858888f19350505050151562000cb257600080fd5b5b565b600154600090600160a060020a03161515620017cc57600080fd5b81620017d762001806565b600160a060020a039091168152602001604051809103906000f0801515620017fe57600080fd5b90505b919050565b604051610abc806200185283390190565b60006200182362001840565b604051809103906000f0801515620014ce57600080fd5b90505b90565b604051610e2e806200230e8339019056006060604052341561000f57600080fd5b604051602080610abc833981016040528080519150505b5b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a038116151561005857600080fd5b60018054600160a060020a031916600160a060020a0383161790555b505b610a37806100856000396000f300606060405236156100885763ffffffff60e060020a6000350416631c07f0a3811461008d5780631dbc04ae146100dd578063321a7c8c146100fe578063458efde31461012b57806374a3c5d5146101405780638c30779b146101715780638da5cb5b146101a25780639890220b146101d1578063e6ad204e146101e6578063f2fde38b14610220575b600080fd5b341561009857600080fd5b6100a3600435610241565b604051808261014080838360005b838110156100ca5780820151818401525b6020016100b1565b5050505090500191505060405180910390f35b34156100e857600080fd5b6100fc600160a060020a03600435166102d2565b005b341561010957600080fd5b6100fc600160a060020a036004351660243560443560643560843561032f565b005b341561013657600080fd5b6100fc6104f4565b005b341561014b57600080fd5b61015f600160a060020a0360043516610622565b60405190815260200160405180910390f35b341561017c57600080fd5b61015f600160a060020a03600435166106e7565b60405190815260200160405180910390f35b34156101ad57600080fd5b6101b561072c565b604051600160a060020a03909116815260200160405180910390f35b34156101dc57600080fd5b6100fc61073b565b005b34156101f157600080fd5b610208600160a060020a036004351660243561081b565b60405191825260208201526040908101905180910390f35b341561022b57600080fd5b6100fc600160a060020a0360043516610858565b005b61024961093e565b61025161093e565b600a83025b600a8110156102c7576003548110156102be57600380548290811061027757fe5b906000526020600020900160005b9054906101000a9004600160a060020a03168285600a028303600a811015156102aa57fe5b600160a060020a0390921660209290920201525b5b600101610256565b8192505b5050919050565b60005433600160a060020a039081169116146102ed57600080fd5b600160a060020a038116151561030257600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600080548190819033600160a060020a0390811691161461034f57600080fd5b600154600160a060020a0316151561036657600080fd5b600160a060020a038816151561037b57600080fd5b4286101561038857600080fd5b6000841161039557600080fd5b600085116103a257600080fd5b8592506103b5878563ffffffff6108f116565b9050600091505b838210156104e7576103d4838663ffffffff61090d16565b600160a060020a03891660009081526004602052604090205490935015156104365760038054600181016104088382610967565b916000526020600020900160005b8154600160a060020a03808d166101009390930a92830292021916179055505b600160a060020a038816600090815260046020526040902080546001810161045e8382610991565b916000526020600020906002020160005b6040805190810160405284815260208101879052919050815181556020820151816001015550505087600160a060020a03167f9ade76f4385de306666dfb21a52b27d52db0fde8ad0f515fa261f532cac60d21828560405191825260208201526040908101905180910390a25b6001909101906103bc565b5b5b5b5050505050505050565b600154600090600160a060020a0316151561050e57600080fd5b610517336106e7565b90506000811161052657600080fd5b600160a060020a03331660009081526002602052604090205461054f908263ffffffff61090d16565b600160a060020a0333818116600090815260026020526040808220949094556001549092169263a9059cbb928591516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156105c557600080fd5b6102c65a03f115156105d657600080fd5b50505060405180515050600160a060020a0333167fd4a50953e9ae2104f507446be8391c79b33e1e86e626473e34bb79eb5fea1f3e8260405190815260200160405180910390a25b5b50565b600080805b600160a060020a0384166000908152600460205260409020548110156102cb57600160a060020a038416600090815260046020526040902080544291908390811061066e57fe5b906000526020600020906002020160005b506001015410156106d657600160a060020a038416600090815260046020526040902080546106d39190839081106106b357fe5b906000526020600020906002020160005b5054839063ffffffff61090d16565b91505b5b600101610627565b5b5050919050565b6000806106f383610622565b600160a060020a03841660009081526002602052604090205490915061072090829063ffffffff61092716565b90508091505b50919050565b600054600160a060020a031681565b60005433600160a060020a0390811691161461075657600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561078f57600080fd5b60015460008054600160a060020a039283169263a9059cbb92918116913090911631906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156107fc57600080fd5b6102c65a03f1151561080d57600080fd5b505050604051805150505b5b565b60046020528160005260406000208181548110151561083657fe5b906000526020600020906002020160005b508054600190910154909250905082565b60005433600160a060020a0390811691161461087357600080fd5b600160a060020a038116151561088857600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60008082848115156108ff57fe5b0490508091505b5092915050565b60008282018381101561091c57fe5b8091505b5092915050565b60008282111561093357fe5b508082035b92915050565b610140604051908101604052600a815b60008152600019909101906020018161094e5790505090565b81548183558181151161098b5760008381526020902061098b9181019083016109c3565b5b505050565b81548183558181151161098b5760020281600202836000526020600020918201910161098b91906109e4565b5b505050565b6109e191905b808211156109dd57600081556001016109c9565b5090565b90565b6109e191905b808211156109dd57600080825560018201556002016109ea565b5090565b905600a165627a7a723058204cb6da655905d6ff4bee2dca3feac5713b759762f6fb51ff2c6cce374bbc8faf002960606040526003805460a060020a60ff0219169055341561001f57600080fd5b5b5b60038054600160a060020a03191633600160a060020a03161790555b6003805460a060020a60ff021916740100000000000000000000000000000000000000001790556a52b7d2dcc80cd2e40000006000818155600160a060020a033316917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060405190815260200160405180910390a3600160a060020a03331660009081526001602052604090206a52b7d2dcc80cd2e400000090555b5b610d44806100ea6000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100e8578063095ea7b31461017357806318160ddd146101a957806323b872dd146101ce578063313ce5671461020a5780633f4ba83a1461022f5780635c975abb14610244578063661884631461026b57806370a08231146102a15780638456cb59146102d25780638da5cb5b146102e757806395d89b41146100e8578063a9059cbb146103a1578063d73dd623146103d7578063dd62ed3e1461040d578063f2fde38b14610444575b600080fd5b34156100f357600080fd5b6100fb610465565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101385780820151818401525b60200161011f565b50505050905090810190601f1680156101655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017e57600080fd5b610195600160a060020a036004351660243561049c565b604051901515815260200160405180910390f35b34156101b457600080fd5b6101bc6104e5565b60405190815260200160405180910390f35b34156101d957600080fd5b610195600160a060020a03600435811690602435166044356104eb565b604051901515815260200160405180910390f35b341561021557600080fd5b6101bc610536565b60405190815260200160405180910390f35b341561023a57600080fd5b61024261053b565b005b341561024f57600080fd5b6101956105bd565b604051901515815260200160405180910390f35b341561027657600080fd5b610195600160a060020a03600435166024356105cd565b604051901515815260200160405180910390f35b34156102ac57600080fd5b6101bc600160a060020a0360043516610616565b60405190815260200160405180910390f35b34156102dd57600080fd5b610242610635565b005b34156102f257600080fd5b6102fa6106bc565b604051600160a060020a03909116815260200160405180910390f35b34156100f357600080fd5b6100fb610465565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101385780820151818401525b60200161011f565b50505050905090810190601f1680156101655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103ac57600080fd5b610195600160a060020a0360043516602435610702565b604051901515815260200160405180910390f35b34156103e257600080fd5b610195600160a060020a036004351660243561074b565b604051901515815260200160405180910390f35b341561041857600080fd5b6101bc600160a060020a0360043581169060243516610794565b60405190815260200160405180910390f35b341561044f57600080fd5b610242600160a060020a03600435166107c1565b005b60408051908101604052600381527f474a430000000000000000000000000000000000000000000000000000000000602082015281565b60035460009033600160a060020a03908116911614806104c6575060035460a060020a900460ff16155b15156104d157600080fd5b6104db838361085a565b90505b5b92915050565b60005481565b60035460009033600160a060020a0390811691161480610515575060035460a060020a900460ff16155b151561052057600080fd5b61052b8484846108c7565b90505b5b9392505050565b601281565b60035433600160a060020a0390811691161461055657600080fd5b60035460a060020a900460ff16151561056e57600080fd5b6003805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15b5b5b565b60035460a060020a900460ff1681565b60035460009033600160a060020a03908116911614806105f7575060035460a060020a900460ff16155b151561060257600080fd5b6104db8383610a4a565b90505b5b92915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035433600160a060020a0390811691161461065057600080fd5b60035460a060020a900460ff161561066757600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15b5b5b565b600354600160a060020a031681565b60408051908101604052600381527f474a430000000000000000000000000000000000000000000000000000000000602082015281565b60035460009033600160a060020a039081169116148061072c575060035460a060020a900460ff16155b151561073757600080fd5b6104db8383610b46565b90505b5b92915050565b60035460009033600160a060020a0390811691161480610775575060035460a060020a900460ff16155b151561078057600080fd5b6104db8383610c42565b90505b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a039081169116146107dc57600080fd5b600160a060020a03811615156107f157600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6000600160a060020a03831615156108de57600080fd5b600160a060020a03841660009081526001602052604090205482111561090357600080fd5b600160a060020a038085166000908152600260209081526040808320339094168352929052205482111561093657600080fd5b600160a060020a03841660009081526001602052604090205461095f908363ffffffff610ce716565b600160a060020a038086166000908152600160205260408082209390935590851681522054610994908363ffffffff610cfe16565b600160a060020a038085166000908152600160209081526040808320949094558783168252600281528382203390931682529190915220546109dc908363ffffffff610ce716565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b9392505050565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205480831115610aa757600160a060020a033381166000908152600260209081526040808320938816835292905290812055610ade565b610ab7818463ffffffff610ce716565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b6000600160a060020a0383161515610b5d57600080fd5b600160a060020a033316600090815260016020526040902054821115610b8257600080fd5b600160a060020a033316600090815260016020526040902054610bab908363ffffffff610ce716565b600160a060020a033381166000908152600160205260408082209390935590851681522054610be0908363ffffffff610cfe16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610c7a908363ffffffff610cfe16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600082821115610cf357fe5b508082035b92915050565b600082820183811015610d0d57fe5b8091505b50929150505600a165627a7a723058201a09381eb41bddb7e644dd866784ad8b1c6a20401600c606c72b12d010db63a70029a165627a7a7230582093c4cb31aaf1583555173604302f4c983f6ffa7bd4ae95b74f92603a64d3ff43002960606040526003805460a060020a60ff0219169055341561001f57600080fd5b5b5b60038054600160a060020a03191633600160a060020a03161790555b6003805460a060020a60ff021916740100000000000000000000000000000000000000001790556a52b7d2dcc80cd2e40000006000818155600160a060020a033316917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060405190815260200160405180910390a3600160a060020a03331660009081526001602052604090206a52b7d2dcc80cd2e400000090555b5b610d44806100ea6000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100e8578063095ea7b31461017357806318160ddd146101a957806323b872dd146101ce578063313ce5671461020a5780633f4ba83a1461022f5780635c975abb14610244578063661884631461026b57806370a08231146102a15780638456cb59146102d25780638da5cb5b146102e757806395d89b41146100e8578063a9059cbb146103a1578063d73dd623146103d7578063dd62ed3e1461040d578063f2fde38b14610444575b600080fd5b34156100f357600080fd5b6100fb610465565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101385780820151818401525b60200161011f565b50505050905090810190601f1680156101655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017e57600080fd5b610195600160a060020a036004351660243561049c565b604051901515815260200160405180910390f35b34156101b457600080fd5b6101bc6104e5565b60405190815260200160405180910390f35b34156101d957600080fd5b610195600160a060020a03600435811690602435166044356104eb565b604051901515815260200160405180910390f35b341561021557600080fd5b6101bc610536565b60405190815260200160405180910390f35b341561023a57600080fd5b61024261053b565b005b341561024f57600080fd5b6101956105bd565b604051901515815260200160405180910390f35b341561027657600080fd5b610195600160a060020a03600435166024356105cd565b604051901515815260200160405180910390f35b34156102ac57600080fd5b6101bc600160a060020a0360043516610616565b60405190815260200160405180910390f35b34156102dd57600080fd5b610242610635565b005b34156102f257600080fd5b6102fa6106bc565b604051600160a060020a03909116815260200160405180910390f35b34156100f357600080fd5b6100fb610465565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101385780820151818401525b60200161011f565b50505050905090810190601f1680156101655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103ac57600080fd5b610195600160a060020a0360043516602435610702565b604051901515815260200160405180910390f35b34156103e257600080fd5b610195600160a060020a036004351660243561074b565b604051901515815260200160405180910390f35b341561041857600080fd5b6101bc600160a060020a0360043581169060243516610794565b60405190815260200160405180910390f35b341561044f57600080fd5b610242600160a060020a03600435166107c1565b005b60408051908101604052600381527f474a430000000000000000000000000000000000000000000000000000000000602082015281565b60035460009033600160a060020a03908116911614806104c6575060035460a060020a900460ff16155b15156104d157600080fd5b6104db838361085a565b90505b5b92915050565b60005481565b60035460009033600160a060020a0390811691161480610515575060035460a060020a900460ff16155b151561052057600080fd5b61052b8484846108c7565b90505b5b9392505050565b601281565b60035433600160a060020a0390811691161461055657600080fd5b60035460a060020a900460ff16151561056e57600080fd5b6003805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15b5b5b565b60035460a060020a900460ff1681565b60035460009033600160a060020a03908116911614806105f7575060035460a060020a900460ff16155b151561060257600080fd5b6104db8383610a4a565b90505b5b92915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035433600160a060020a0390811691161461065057600080fd5b60035460a060020a900460ff161561066757600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15b5b5b565b600354600160a060020a031681565b60408051908101604052600381527f474a430000000000000000000000000000000000000000000000000000000000602082015281565b60035460009033600160a060020a039081169116148061072c575060035460a060020a900460ff16155b151561073757600080fd5b6104db8383610b46565b90505b5b92915050565b60035460009033600160a060020a0390811691161480610775575060035460a060020a900460ff16155b151561078057600080fd5b6104db8383610c42565b90505b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a039081169116146107dc57600080fd5b600160a060020a03811615156107f157600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6000600160a060020a03831615156108de57600080fd5b600160a060020a03841660009081526001602052604090205482111561090357600080fd5b600160a060020a038085166000908152600260209081526040808320339094168352929052205482111561093657600080fd5b600160a060020a03841660009081526001602052604090205461095f908363ffffffff610ce716565b600160a060020a038086166000908152600160205260408082209390935590851681522054610994908363ffffffff610cfe16565b600160a060020a038085166000908152600160209081526040808320949094558783168252600281528382203390931682529190915220546109dc908363ffffffff610ce716565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b9392505050565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205480831115610aa757600160a060020a033381166000908152600260209081526040808320938816835292905290812055610ade565b610ab7818463ffffffff610ce716565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b6000600160a060020a0383161515610b5d57600080fd5b600160a060020a033316600090815260016020526040902054821115610b8257600080fd5b600160a060020a033316600090815260016020526040902054610bab908363ffffffff610ce716565b600160a060020a033381166000908152600160205260408082209390935590851681522054610be0908363ffffffff610cfe16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610c7a908363ffffffff610cfe16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600082821115610cf357fe5b508082035b92915050565b600082820183811015610d0d57fe5b8091505b50929150505600a165627a7a723058201a09381eb41bddb7e644dd866784ad8b1c6a20401600c606c72b12d010db63a70029000000000000000000000000d2462e781952f3782e68bef0287eb78271ed1062

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

-----Decoded View---------------
Found 1 constructor arguments :
Arg [0] : 000000000000000000000000d2462e781952f3782e68bef0287eb78271ed1062


   Swarm Source:
bzzr://1a09381eb41bddb7e644dd866784ad8b1c6a20401600c606c72b12d010db63a7
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.