Sponsored Link:   COVESTING - EU-based digital asset exchange. Aggregated liquidity. Algorithmic & Copy-trading features. 24/7 support. Get access!
Contract Overview | GlobalJobcoinICO
Balance: 0 Ether
Ether Value: $0
Transactions: 824 txns
Misc
Address Watch: Add To Watch List
Contract Creator: 0xd2462e781952f3782e68bef0287eb78271ed1062at txn 0xdb935a10d22c79a197c71539221410c2533aa1d74260987cd228b6690b5e442c
Token Balances:
 Latest 25 txns from a total Of 824 transactions
View All

TxHash Age From To Value [TxFee]
0x0301e8eab4ab22a41504fac26621d3338e50a0ef11a624bd64b3e75f05040478174 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0006837
0x525be7981ff9164ad7487512a1721f3397d4330cb5852299c973b72dbcc2809a174 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.01851628
0x67366eda9a52bbdcf4025636bc16a51bf426ed26f958986877b33495ea81f61a174 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.000509
0x2c913f3477499cb7c1b39e30448cd36195a79d2e54361665a08cbe3865e56fa0176 days 21 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00063222
0x1934fe5bf2736328d5c751063bff9807ef8175ba47fff0e4afbc707ae6559e85176 days 21 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00120214
0x64dd5b69f0ae4b9d57cd93f0ab45f480445df04b29c70fd89590ea4dfba5456e176 days 21 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122808
0x29ca838e1599c17c27f3ad88b237d19bdba39378086f0be574213de019769e4d176 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00049952
0x25095772e2e43722b7bebdd14299915cd2e5cc1e54f239159473a3cdbb96f624176 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00049952
0xc36f1d72575dfc7abc051e85ef00e2811b6566ed2dfb194caaed8e84776dab34176 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00049952
0x81cfa68901609e1fc2fd0e67deb1812433d4b4dd9086a1bacd2b6f8bd666e424176 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0012268
0x933048ecaae5d572e35e9fed2024169d235fb6ab9ab913e87b276cc51e976b5f176 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122808
0x1af56f8215e1bb2d28ca972f8dd7940eb1d49a37517ab7b9856676c28d50d074176 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122808
0xe3b69d4dd0c1bafce8ad50ca18a00c7ee6abec9475781ec8e67885d44fc95fdd176 days 22 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.00122808
0x3328b23c4c185a920b8470cab71608a37c6e56dc6de1fd75aa29f43579c72dba191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0015303
0x4613435937886d44c196287757020e8737e0a6739c942a9216c9b8dd9c7298a1191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0011569
0xe715bb44a9d93b24ca3911e768c83837be689c3767f93877a9eeeb284d5bd0db191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0011569
0x8e35da415fe0b5b92df72a87b798abe4ae56eb738e281f71fe7e00c99f9c1fdd191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0011569
0x69694e0e466108dce9dccb68c534a555a9da0848a10fef0088ebf38834eb930e191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0011569
0xb3ab009b1389b5d4e385260a383eed82099a6631aa7c4e434ab794b3ba1b8cc6191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0015319
0xb1f2b9b0a0f147b0f73e7d2719700040f7d6924cd2456cb84977e75a06e74c02191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0011553
0xb6f0542bd2c55d8cb7ea0c22a3eea323183853584404c3fc1c85771afb8ff935191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0011569
0xa14a657aa8aa2c8aeb551711cc4e12c2d03b1716aa7e599a4ef246e0ba728686191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0011569
0x0c13bfac13027a04477b8d37414380e2f565d6e3b9f78c6cf62446d0fae88cf9191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0011553
0xe1b23afc61a66502f347600a3896f09eb7afce9096ea609a8f7ca7e0e770ffa2191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0015319
0xb8f65966727ac39a54eeb6eb5cc5f888c256aeb5490ef9b42feb7e3006fce011191 days 20 hrs ago0xd2462e781952f3782e68bef0287eb78271ed1062  IN   GlobalJobcoinICO0 Ether0.0011569
[ 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
0x525be7981ff9164ad7487512a1721f3397d4330cb5852299c973b72dbcc2809a4817494174 days 22 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be0627  Contract Creation0 Ether
0x417ca079b668aaaf731d480d72e6265311a1a1789238fb67df7a9567c5624ab04685394197 days 18 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.48 Ether
0x00b51758a5d1f3b74915932b7e62ce405055e2f9a59635a30d1d117af75832594684711197 days 21 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.22 Ether
0x99d988739380f9d819af6f72f54a77ec6f910ced68f67fab68477d8327d3b4824684556197 days 22 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.2385 Ether
0xfef8dc6a888d43ea5ba609ec36a2e3f243a8c6e6cb066f6c1ada3d4280b43fb34684449197 days 22 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.035 Ether
0x36e984f5d5261ab04773b572a52a2f36e816ad527c1a88e27306ea0ecb3e0a244684247197 days 23 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1.86 Ether
0x423c7376b83fca0c67129ceae6858835f4db70db688c3a66d3e1cd8b0d2ba14e4683756198 days 1 hr ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.05 Ether
0x4f65342a3aa0270d780eeb50f4e72b7cfd6fe0fe8632a03d7f3d42ce625993054682320198 days 8 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.13 Ether
0xb0886474048f09870a554666f881bebc0dd94f5647f517df60cde32d0938e57b4682191198 days 8 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1.62 Ether
0x9e2d536f9766eeafed80dba4964ce8164404a01de0700192fb8d30975299ac7e4681674198 days 10 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa6.99 Ether
0x7fa278a17775a6bd687d56755672ef46e03209b7bd84d79e151deb631ffd1e8e4681268198 days 12 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.49332007 Ether
0xcade18ed8bd8ac4bc452af6aa8826c205214a9f3bddb3d37dc87ad15cc393d574680725198 days 14 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.10356467 Ether
0xe6dac6967866b668352f049e58cbff47e5078122132ca1992c7c8cdca3c5fa024680497198 days 15 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa3.986370568 Ether
0xac82a1d019252949c9b19f8ef3422b4304942479e466c01cefc864879a91cc0b4679476198 days 20 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa2.948 Ether
0x926d62b61220cbf868573d047cb5104117a35bdc8c6cc4657d3491d3498852f04679388198 days 20 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1 Ether
0x650d6e3465ec3771e58fdcbf545f718cad6f499c1e073abea50beb9aa2fcd9cb4677452199 days 5 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1 Ether
0xa0d6d1bda838a49294390fb9f116e475a9d3d142b5809f7958143e82dae86ead4675948199 days 11 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.022 Ether
0xd77aa635636351eee985db04e7a1b7cd5a31b0d9bc560574ed11e379ff5c1bfd4675339199 days 14 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.09528595 Ether
0x50f067b3217c157b3b92dada760ee193f50aef3d84def8abbb6e52c5fe9b4c854675121199 days 15 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.05 Ether
0x403ce32115dc1251a5c174676903b061b7c43952d15a75e71acb4f876807839b4674776199 days 16 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.3928066561 Ether
0x6235c258402575962a597a0794f55b5ecbd6cc396c5518660bdbc097d058dd924672400200 days 2 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.1735 Ether
0x8e36456921bcafb29ac9d84cff3e9916a978f36ab05c5c60505d01f35f9fb4334670921200 days 8 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.20022525 Ether
0xa81f74410174e534a92e81c2f7915d3743440674c05170fab7c8ed61352395e54670088200 days 12 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa0.102049075940298507 Ether
0xc549677dda009c1aed15db739be0ae69176b4d8195b66c02aedd37770743ed0f4667953200 days 20 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa5.5 Ether
0x7267d0b18a494cb3c03b7c8bfc509e20063ba561a7ca7cbd68f7cb0768f38d084667293200 days 23 hrs ago0x2de60f36bb208b5c96acb36d4a49aad3e2be06270x3331a02ae2a587bedb6e83f45fcb98515bb1fffa1.306192208 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
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.