ETH Price: $2,726.13 (+4.57%)

Contract

0xb12E260275BcD28E6f8820666Ba02C67c9600843
 

Overview

ETH Balance

0.00000001 ETH

Eth Value

Less Than $0.01 (@ $2,726.13/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy Direct In Ma...161415722022-12-08 17:46:11624 days ago1670521571IN
0xb12E2602...7c9600843
0.18 ETH0.0006856828.22459301
Buy Direct In Ma...161415492022-12-08 17:41:35624 days ago1670521295IN
0xb12E2602...7c9600843
0.18 ETH0.0004936420.31966654
Pause160988132022-12-02 18:07:59630 days ago1670004479IN
0xb12E2602...7c9600843
0 ETH0.0003901513.27571167
Approve102503292020-06-12 10:27:471533 days ago1591957667IN
0xb12E2602...7c9600843
0 ETH0.0010123938
Approve102452382020-06-11 15:41:011534 days ago1591890061IN
0xb12E2602...7c9600843
0 ETH0.0014919556
Approve102452182020-06-11 15:35:441534 days ago1591889744IN
0xb12E2602...7c9600843
0 ETH0.0013668951.30610077
Approve99015622020-04-19 7:52:031587 days ago1587282723IN
0xb12E2602...7c9600843
0 ETH0.000404788.83000023
Buy Direct In Ma...96886672020-03-17 11:09:031620 days ago1584443343IN
0xb12E2602...7c9600843
0.44 ETH0.00060127
Buy Direct In Ma...96882622020-03-17 9:44:031620 days ago1584438243IN
0xb12E2602...7c9600843
0.267 ETH0.0002813210.6
Buy Direct In Ma...96882542020-03-17 9:41:491620 days ago1584438109IN
0xb12E2602...7c9600843
0.267 ETH0.000185787
Buy Direct In Ma...96871552020-03-17 5:28:231620 days ago1584422903IN
0xb12E2602...7c9600843
0.267 ETH0.000265410
Set Purchaseable...96246972020-03-07 14:07:081630 days ago1583590028IN
0xb12E2602...7c9600843
0 ETH0.000067852
Set Purchaseable...96246972020-03-07 14:07:081630 days ago1583590028IN
0xb12E2602...7c9600843
0 ETH0.000067852
Set Purchaseable...95358402020-02-22 22:31:001643 days ago1582410660IN
0xb12E2602...7c9600843
0 ETH0.000067872
Set Purchaseable...94840092020-02-14 22:59:501651 days ago1581721190IN
0xb12E2602...7c9600843
0 ETH0.000190695
Buy Direct In Ma...93976272020-02-01 16:32:231665 days ago1580574743IN
0xb12E2602...7c9600843
0.25 ETH0.000687088
Buy Direct In Ma...93368632020-01-23 8:32:491674 days ago1579768369IN
0xb12E2602...7c9600843
0.01 ETH0.000026541
Buy Direct In Ma...93368212020-01-23 8:22:441674 days ago1579767764IN
0xb12E2602...7c9600843
0.01 ETH0.000026541
Set Purchaseable...93362762020-01-23 6:24:551674 days ago1579760695IN
0xb12E2602...7c9600843
0 ETH0.000081452.4
Buy Direct In Ma...93188642020-01-20 14:22:381677 days ago1579530158IN
0xb12E2602...7c9600843
0.01 ETH0.000026541
Buy Direct In Ma...93188322020-01-20 14:16:251677 days ago1579529785IN
0xb12E2602...7c9600843
0.01 ETH0.000031841.2
Set Purchaseable...93009762020-01-17 20:40:031679 days ago1579293603IN
0xb12E2602...7c9600843
0 ETH0.000101813
Buy Direct In Ma...92327222020-01-07 9:40:361690 days ago1578390036IN
0xb12E2602...7c9600843
0.15 ETH0.000085881
Set Purchaseable...92294592020-01-06 21:45:261690 days ago1578347126IN
0xb12E2602...7c9600843
0 ETH0.000029731
Set Purchaseable...92294582020-01-06 21:45:161690 days ago1578347116IN
0xb12E2602...7c9600843
0 ETH0.000033931
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
96886672020-03-17 11:09:031620 days ago1584443343
0xb12E2602...7c9600843
0.44 ETH
93976272020-02-01 16:32:231665 days ago1580574743
0xb12E2602...7c9600843
0.25 ETH
92327222020-01-07 9:40:361690 days ago1578390036
0xb12E2602...7c9600843
0.15 ETH
90925182019-12-12 4:44:321716 days ago1576125872
0xb12E2602...7c9600843
0.8 ETH
90924992019-12-12 4:40:101716 days ago1576125610
0xb12E2602...7c9600843
0.2 ETH
86742692019-10-04 7:13:231785 days ago1570173203
0xb12E2602...7c9600843
0.2 ETH
85135212019-09-09 4:28:121810 days ago1568003292
0xb12E2602...7c9600843
0.1 ETH
82515812019-07-30 11:05:121851 days ago1564484712
0xb12E2602...7c9600843
0.01 ETH
82504392019-07-30 6:52:121851 days ago1564469532
0xb12E2602...7c9600843
0.09 ETH
82504112019-07-30 6:47:161851 days ago1564469236
0xb12E2602...7c9600843
0.09 ETH
81682742019-07-17 12:24:571864 days ago1563366297
0xb12E2602...7c9600843
0.01 ETH
79756062019-06-17 11:16:041894 days ago1560770164
0xb12E2602...7c9600843
0.32 ETH
79324712019-06-10 17:19:181901 days ago1560187158
0xb12E2602...7c9600843
0.4 ETH
77962302019-05-20 10:07:231922 days ago1558346843
0xb12E2602...7c9600843
0.28 ETH
77822892019-05-18 5:27:351924 days ago1558157255
0xb12E2602...7c9600843
0.8 ETH
77814712019-05-18 2:28:491924 days ago1558146529
0xb12E2602...7c9600843
0.73 ETH
77001302019-05-05 9:38:241937 days ago1557049104
0xb12E2602...7c9600843
0.25 ETH
76964662019-05-04 19:44:201937 days ago1556999060
0xb12E2602...7c9600843
0.14 ETH
76748222019-05-01 11:13:481941 days ago1556709228
0xb12E2602...7c9600843
0.18 ETH
76491572019-04-27 11:17:551945 days ago1556363875
0xb12E2602...7c9600843
0.2 ETH
75154642019-04-06 15:54:121966 days ago1554566052
0xb12E2602...7c9600843
5.133 ETH
73471882019-03-11 9:56:481992 days ago1552298208
0xb12E2602...7c9600843
0.26 ETH
73006082019-03-04 3:40:401999 days ago1551670840
0xb12E2602...7c9600843
0.7 ETH
72976532019-03-03 16:33:152000 days ago1551630795
0xb12E2602...7c9600843
2 ETH
72976402019-03-03 16:30:532000 days ago1551630653
0xb12E2602...7c9600843
2 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ExoplanetToken

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-08-08
*/

pragma solidity ^0.4.19;


contract ERC721 {
    function approve(address to, uint256 tokenId) public;
    function balanceOf(address owner) public view returns (uint256 balance);
    function implementsERC721() public pure returns (bool);
    function ownerOf(uint256 tokenId) public view returns (address addr);
    function takeOwnership(uint256 tokenId) public;
    function totalSupply() public view returns (uint256 total);
    function transferFrom(address from, address to, uint256 tokenId) public;
    function transfer(address to, uint256 tokenId) public;

    event Transfer(address indexed from, address indexed to, uint256 tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    function name() external view returns (string name);
    function symbol() external view returns (string symbol);
    function tokenURI(uint256 _tokenId) external view returns (string uri);
  }


contract ExoplanetToken is ERC721 {

    using SafeMath for uint256;

    event Birth(uint256 indexed tokenId, string name, uint32 numOfTokensBonusOnPurchase, address owner);

    event TokenSold(uint256 tokenId, uint256 oldPriceInEther, uint256 newPriceInEther, address prevOwner, address winner, string name);

    event Transfer(address from, address to, uint256 tokenId);

    event ContractUpgrade(address newContract);


    string private constant CONTRACT_NAME = "ExoPlanets";

    string private constant CONTRACT_SYMBOL = "XPL";

    string public constant BASE_URL = "https://exoplanets.io/metadata/planet_";

    uint32 private constant NUM_EXOPLANETS_LIMIT = 10000;

    uint256 private constant STEP_1 =  5.0 ether;
    uint256 private constant STEP_2 = 10.0 ether;
    uint256 private constant STEP_3 = 26.0 ether;
    uint256 private constant STEP_4 = 36.0 ether;
    uint256 private constant STEP_5 = 47.0 ether;
    uint256 private constant STEP_6 = 59.0 ether;
    uint256 private constant STEP_7 = 67.85 ether;
    uint256 private constant STEP_8 = 76.67 ether;


    mapping (uint256 => address) public currentOwner;

    mapping (address => uint256) private numOwnedTokens;

    mapping (uint256 => address) public approvedToTransfer;

    mapping (uint256 => uint256) private currentPrice;

    address public ceoAddress;
    address public cooAddress;

    bool public inPresaleMode = true;

    bool public paused = false;

    bool public allowMigrate = true;

    address public newContractAddress;

    bool public _allowBuyDirect = false;


    struct ExoplanetRec {
        uint8 lifeRate;
        bool canBePurchased;
        uint32 priceInExoTokens;
        uint32 numOfTokensBonusOnPurchase;
        string name;
        string nickname;
        string cryptoMatch;
        string techBonus1;
        string techBonus2;
        string techBonus3;
        string scientificData;
    }

    ExoplanetRec[] private exoplanets;

    address public marketplaceAddress;


    modifier onlyCEO() {
      require(msg.sender == ceoAddress);
      _;
    }


    modifier migrateAllowed() {
        require(allowMigrate);
        _;
    }

    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused() {
        require(paused);
        _;
    }

    function turnMigrateOff() public onlyCEO() {
      allowMigrate = false;
    }

    function pause() public onlyCEO() whenNotPaused() {
      paused = true;
    }

    function unpause() public onlyCEO() whenPaused() {
      paused = false;
    }

    modifier allowBuyDirect() {
      require(_allowBuyDirect);
      _;
    }

   function setBuyDirectMode(bool newMode, address newMarketplace) public onlyCEO {
      _allowBuyDirect = newMode;
      marketplaceAddress = newMarketplace;
    }


    function setPurchaseableMode(uint256 tokenId, bool _canBePurchased, uint256 _newPrice) public afterPresaleMode() {
      require(owns(msg.sender, tokenId));
      exoplanets[tokenId].canBePurchased = _canBePurchased;
      setPriceInEth(tokenId, _newPrice);
    }


    function getPurchaseableMode(uint256 tokenId) public view returns (bool) {
      return exoplanets[tokenId].canBePurchased;
    }

    function setNewAddress(address _v2Address) public onlyCEO() whenPaused() {
      newContractAddress = _v2Address;
      ContractUpgrade(_v2Address);
    }


    modifier onlyCOO() {
      require(msg.sender == cooAddress);
      _;
    }

    modifier presaleModeActive() {
      require(inPresaleMode);
      _;
    }


    modifier afterPresaleMode() {
      require(!inPresaleMode);
      _;
    }


    modifier onlyCLevel() {
      require(
        msg.sender == ceoAddress ||
        msg.sender == cooAddress
      );
      _;
    }

    function setCEO(address newCEO) public onlyCEO {
      require(newCEO != address(0));
      ceoAddress = newCEO;
    }

    function setCOO(address newCOO) public onlyCEO {
      require(newCOO != address(0));
      cooAddress = newCOO;
    }

    function setPresaleMode(bool newMode) public onlyCEO {
      inPresaleMode = newMode;
    }


    /*** CONSTRUCTOR ***/
    function ExoplanetToken() public {
        ceoAddress = msg.sender;
        cooAddress = msg.sender;
        marketplaceAddress = msg.sender;
    }


    function approve(address to, uint256 tokenId) public {
        require(owns(msg.sender, tokenId));

        approvedToTransfer[tokenId] = to;

        Approval(msg.sender, to, tokenId);
    }

    function balanceOf(address owner) public view returns (uint256 balance) {
        balance = numOwnedTokens[owner];
    }

    function bytes32ToString(bytes32 x) private pure returns (string) {
        bytes memory bytesString = new bytes(32);
        uint charCount = 0;
        for (uint j = 0; j < 32; j++) {
            byte char = byte(bytes32(uint(x) * 2 ** (8 * j)));
            if (char != 0) {
                bytesString[charCount] = char;
                charCount++;
            }
        }
        bytes memory bytesStringTrimmed = new bytes(charCount);
        for (j = 0; j < charCount; j++) {
            bytesStringTrimmed[j] = bytesString[j];
        }
        return string(bytesStringTrimmed);
    }

    function migrateSinglePlanet(
          uint256 origTokenId, string name, uint256 priceInEther, uint32 priceInExoTokens,
          string cryptoMatch, uint32 numOfTokensBonusOnPurchase,
          uint8 lifeRate, string scientificData, address owner) public onlyCLevel migrateAllowed {

        _migrateExoplanet(origTokenId, name, priceInEther, priceInExoTokens,
              cryptoMatch, numOfTokensBonusOnPurchase, lifeRate, scientificData, owner);
    }


    function _migrateExoplanet(
        uint256 origTokenId, string name, uint256 priceInEther, uint32 priceInExoTokens,
        string cryptoMatch, uint32 numOfTokensBonusOnPurchase, uint8 lifeRate,
        string scientificData, address owner) private {

      require(totalSupply() < NUM_EXOPLANETS_LIMIT);

      require(origTokenId == uint256(uint32(origTokenId)));

      ExoplanetRec memory _exoplanet = ExoplanetRec({
        name: name,
        nickname: "",
        priceInExoTokens: priceInExoTokens,
        cryptoMatch: cryptoMatch,
        numOfTokensBonusOnPurchase: numOfTokensBonusOnPurchase,
        lifeRate: lifeRate,
        techBonus1: "",
        techBonus2: "",
        techBonus3: "",
        scientificData: scientificData,
        canBePurchased: false
      });

      uint256 tokenId = exoplanets.push(_exoplanet) - 1;

      currentPrice[tokenId] = priceInEther;

      numOwnedTokens[owner]++;
      exoplanets[tokenId].canBePurchased = false;
      currentOwner[tokenId] = owner;
    }


    function createContractExoplanet(
          string name, uint256 priceInEther, uint32 priceInExoTokens,
          string cryptoMatch, uint32 numOfTokensBonusOnPurchase,
          uint8 lifeRate, string scientificData) public onlyCLevel returns (uint256) {

        return _createExoplanet(name, address(this), priceInEther, priceInExoTokens,
              cryptoMatch, numOfTokensBonusOnPurchase, lifeRate,
              scientificData);
    }

    function _createExoplanet(
        string name, address owner, uint256 priceInEther, uint32 priceInExoTokens,
        string cryptoMatch, uint32 numOfTokensBonusOnPurchase, uint8 lifeRate,
        string scientificData) private returns (uint256) {

      require(totalSupply() < NUM_EXOPLANETS_LIMIT);

      ExoplanetRec memory _exoplanet = ExoplanetRec({
        name: name,
        nickname: "",
        priceInExoTokens: priceInExoTokens,
        cryptoMatch: cryptoMatch,
        numOfTokensBonusOnPurchase: numOfTokensBonusOnPurchase,
        lifeRate: lifeRate,
        techBonus1: "",
        techBonus2: "",
        techBonus3: "",
        scientificData: scientificData,
        canBePurchased: false
      });
      uint256 newExoplanetId = exoplanets.push(_exoplanet) - 1;

      require(newExoplanetId == uint256(uint32(newExoplanetId)));

      Birth(newExoplanetId, name, numOfTokensBonusOnPurchase, owner);

      currentPrice[newExoplanetId] = priceInEther;

      _transfer(address(0), owner, newExoplanetId);

      return newExoplanetId;
    }


    function unownedPlanet(uint256 tokenId) private view returns (bool) {
      return currentOwner[tokenId] == address(this);
    }

    function getPlanetName(uint256 tokenId) public view returns (string) {
      return exoplanets[tokenId].name;
    }
    function getNickname(uint256 tokenId) public view returns (string) {
      return exoplanets[tokenId].nickname;
    }

    function getPriceInExoTokens(uint256 tokenId) public view returns (uint32) {
      return exoplanets[tokenId].priceInExoTokens;
    }

    function getLifeRate(uint256 tokenId) public view returns (uint8) {
      return exoplanets[tokenId].lifeRate;
    }

    function getNumOfTokensBonusOnPurchase(uint256 tokenId) public view returns (uint32) {
      return exoplanets[tokenId].numOfTokensBonusOnPurchase;
    }

    function getCryptoMatch(uint256 tokenId) public view returns (string) {
      return exoplanets[tokenId].cryptoMatch;
    }

    function getTechBonus1(uint256 tokenId) public view returns (string) {
      return exoplanets[tokenId].techBonus1;
    }

    function getTechBonus2(uint256 tokenId) public view returns (string) {
      return exoplanets[tokenId].techBonus2;
    }

    function getTechBonus3(uint256 tokenId) public view returns (string) {
      return exoplanets[tokenId].techBonus3;
    }

    function getScientificData(uint256 tokenId) public view returns (string) {
      return exoplanets[tokenId].scientificData;
    }


    function setTechBonus1(uint256 tokenId, string newVal) public {
      require(msg.sender == marketplaceAddress || msg.sender == ceoAddress);
      exoplanets[tokenId].techBonus1 = newVal;
    }

    function setTechBonus2(uint256 tokenId, string newVal) public {
      require(msg.sender == marketplaceAddress || msg.sender == ceoAddress);
      exoplanets[tokenId].techBonus2 = newVal;
    }

    function setTechBonus3(uint256 tokenId, string newVal) public {
      require(msg.sender == marketplaceAddress || msg.sender == ceoAddress);
      exoplanets[tokenId].techBonus3 = newVal;
    }

    function setPriceInEth(uint256 tokenId, uint256 newPrice) public afterPresaleMode() {
      require(owns(msg.sender, tokenId));
      currentPrice[tokenId] = newPrice;
    }

    function setUnownedPriceInEth(uint256 tokenId, uint256 newPrice) public onlyCLevel {
      require(unownedPlanet(tokenId));
      currentPrice[tokenId] = newPrice;
    }

    function setUnownedPurchaseableMode(uint256 tokenId, bool _canBePurchased) public onlyCLevel {
      require(unownedPlanet(tokenId));
      exoplanets[tokenId].canBePurchased = _canBePurchased;
    }

    function setPriceInExoTokens(uint256 tokenId, uint32 newPrice) public afterPresaleMode() {
      require(owns(msg.sender, tokenId));
      exoplanets[tokenId].priceInExoTokens = newPrice;
    }

    function setUnownedPriceInExoTokens(uint256 tokenId, uint32 newPrice) public onlyCLevel {
      require(unownedPlanet(tokenId));
      exoplanets[tokenId].priceInExoTokens = newPrice;
    }

    function setScientificData(uint256 tokenId, string newData) public onlyCLevel {
      exoplanets[tokenId].scientificData = newData;
    }

    function setUnownedName(uint256 tokenId, string newData) public onlyCLevel {
      require(unownedPlanet(tokenId));
      exoplanets[tokenId].name = newData;
    }

    function setUnownedNickname(uint256 tokenId, string newData) public onlyCLevel {
      require(unownedPlanet(tokenId));
      exoplanets[tokenId].nickname = newData;
    }

    function setCryptoMatchValue(uint256 tokenId, string newData) public onlyCLevel {
      exoplanets[tokenId].cryptoMatch = newData;
    }

    function setUnownedNumOfExoTokensBonus(uint256 tokenId, uint32 newData) public onlyCLevel {
      require(unownedPlanet(tokenId));
      exoplanets[tokenId].numOfTokensBonusOnPurchase = newData;
    }

     function setUnownedLifeRate(uint256 tokenId, uint8 newData) public onlyCLevel {
      require(unownedPlanet(tokenId));
      exoplanets[tokenId].lifeRate = newData;
    }



    function getExoplanet(uint256 tokenId) public view returns (
        uint8 lifeRate,
        bool canBePurchased,
        uint32 priceInExoTokens,
        uint32 numOfTokensBonusOnPurchase,
        string name,
        string nickname,
        string cryptoMatch,
        string scientificData,
        uint256 sellingPriceInEther,
        address owner) {

      ExoplanetRec storage exoplanet = exoplanets[tokenId];

      lifeRate = exoplanet.lifeRate;
      canBePurchased = exoplanet.canBePurchased;
      priceInExoTokens = exoplanet.priceInExoTokens;
      numOfTokensBonusOnPurchase = exoplanet.numOfTokensBonusOnPurchase;
      name = exoplanet.name;
      nickname = exoplanet.nickname;
      cryptoMatch = exoplanet.cryptoMatch;
      scientificData = exoplanet.scientificData;

      sellingPriceInEther = currentPrice[tokenId];
      owner = currentOwner[tokenId];
    }


    function implementsERC721() public pure returns (bool) {
      return true;
    }

    function ownerOf(uint256 tokenId) public view returns (address owner) {
      owner = currentOwner[tokenId];
    }


    function transferUnownedPlanet(address newOwner, uint256 tokenId) public onlyCLevel {

      require(unownedPlanet(tokenId));

      require(newOwner != address(0));

      _transfer(currentOwner[tokenId], newOwner, tokenId);

      TokenSold(tokenId, currentPrice[tokenId], currentPrice[tokenId], address(this), newOwner, exoplanets[tokenId].name);
    }


    function purchase(uint256 tokenId) public payable whenNotPaused() presaleModeActive() {

      require(currentOwner[tokenId] != msg.sender);

      require(addressNotNull(msg.sender));

      uint256 planetPrice = currentPrice[tokenId];

      require(msg.value >= planetPrice);

      uint paymentPrcnt;
      uint stepPrcnt;

      if (planetPrice <= STEP_1) {
        paymentPrcnt = 93;
        stepPrcnt = 200;
      } else if (planetPrice <= STEP_2) {
        paymentPrcnt = 93;
        stepPrcnt = 150;
      } else if (planetPrice <= STEP_3) {
        paymentPrcnt = 93;
        stepPrcnt = 135;
      } else if (planetPrice <= STEP_4) {
        paymentPrcnt = 94;
        stepPrcnt = 125;
      } else if (planetPrice <= STEP_5) {
        paymentPrcnt = 94;
        stepPrcnt = 119;
      } else if (planetPrice <= STEP_6) {
        paymentPrcnt = 95;
        stepPrcnt = 117;
      } else if (planetPrice <= STEP_7) {
        paymentPrcnt = 95;
        stepPrcnt = 115;
      } else if (planetPrice <= STEP_8) {
        paymentPrcnt = 95;
        stepPrcnt = 113;
      } else {
        paymentPrcnt = 96;
        stepPrcnt = 110;
      }

      currentPrice[tokenId] = planetPrice.mul(stepPrcnt).div(100);

      uint256 payment = uint256(planetPrice.mul(paymentPrcnt).div(100));

      address seller = currentOwner[tokenId];

      if (seller != address(this)) {
        seller.transfer(payment);
      }

      _transfer(seller, msg.sender, tokenId);

      TokenSold(tokenId, planetPrice, currentPrice[tokenId], seller, msg.sender, exoplanets[tokenId].name);

    }



    function buyDirectInMarketplace(uint256 tokenId) public payable
                    whenNotPaused() afterPresaleMode() allowBuyDirect() {

      require(exoplanets[tokenId].canBePurchased);

      uint256 planetPrice = currentPrice[tokenId];

      require(msg.value >= planetPrice);

      address seller = currentOwner[tokenId];

      if (seller != address(this)) {
        seller.transfer(planetPrice);
      }

      _transfer(seller, msg.sender, tokenId);

      TokenSold(tokenId, planetPrice, currentPrice[tokenId], seller, msg.sender, exoplanets[tokenId].name);
    }


    function priceOf(uint256 tokenId) public view returns (uint256) {
      return currentPrice[tokenId];
    }


    function takeOwnership(uint256 tokenId) public whenNotPaused() {

      require(addressNotNull(msg.sender));

      require(approved(msg.sender, tokenId));

      _transfer(currentOwner[tokenId], msg.sender, tokenId);
    }

    function tokensOfOwner(address owner) public view returns(uint256[] ownerTokens) {
      uint256 tokenCount = balanceOf(owner);
      if (tokenCount == 0) {
        return new uint256[](0);
      } else {
        uint256[] memory result = new uint256[](tokenCount);
        uint256 totalExoplanets = totalSupply();
        uint256 resultIndex = 0;

        uint256 exoplanetId;
        for (exoplanetId = 0; exoplanetId <= totalExoplanets; exoplanetId++) {
          if (currentOwner[exoplanetId] == owner) {
            result[resultIndex] = exoplanetId;
            resultIndex++;
          }
        }
        return result;
      }
    }

    function name() external view returns (string name) {
      name = CONTRACT_NAME;
    }

    function symbol() external view returns (string symbol) {
      symbol = CONTRACT_SYMBOL;
    }

    function tokenURI(uint256 _tokenId) external view returns (string uri) {
      uri = appendNumToString(BASE_URL, _tokenId);
    }

    function totalSupply() public view returns (uint256 total) {
      total = exoplanets.length;
    }

    function transfer(address to, uint256 tokenId) public whenNotPaused() {
      require(owns(msg.sender, tokenId));
      require(addressNotNull(to));
      _transfer(msg.sender, to, tokenId);
    }

    function transferFrom(address from, address to, uint256 tokenId) public whenNotPaused() {
      require(owns(from, tokenId));
      require(approved(msg.sender, tokenId));
      require(addressNotNull(to));
      _transfer(from, to, tokenId);
    }

    function addressNotNull(address addr) private pure returns (bool) {
      return addr != address(0);
    }

    function approved(address to, uint256 tokenId) private view returns (bool) {
      return approvedToTransfer[tokenId] == to;
    }


    function owns(address claimant, uint256 tokenId) private view returns (bool) {
      return claimant == currentOwner[tokenId];
    }

    function payout() public onlyCLevel {
      ceoAddress.transfer(this.balance);
    }

    function payoutPartial(uint256 amount) public onlyCLevel {
      require(amount <= this.balance);
      ceoAddress.transfer(amount);
    }


    function _transfer(address from, address to, uint256 tokenId) private {
      numOwnedTokens[to]++;

      exoplanets[tokenId].canBePurchased = false;

      currentOwner[tokenId] = to;

      if (from != address(0)) {
        numOwnedTokens[from]--;
        delete approvedToTransfer[tokenId];
      }

      Transfer(from, to, tokenId);
    }

    function appendNumToString(string baseUrl, uint256 tokenId) private pure returns (string) {
      string memory _b = numToString(tokenId);
      bytes memory bytes_a = bytes(baseUrl);
      bytes memory bytes_b = bytes(_b);
      string memory length_ab = new string(bytes_a.length + bytes_b.length);
      bytes memory bytes_c = bytes(length_ab);
      uint k = 0;
      for (uint i = 0; i < bytes_a.length; i++) {
        bytes_c[k++] = bytes_a[i];
      }
      for (i = 0; i < bytes_b.length; i++) {
        bytes_c[k++] = bytes_b[i];
      }
      return string(bytes_c);
    }

    function numToString(uint256 tokenId) private pure returns (string str) {
      uint uintVal = uint(tokenId);
      bytes32 bytes32Val = uintToBytes32(uintVal);
      return bytes32ToString(bytes32Val);
    }

    function uintToBytes32(uint v) private pure returns (bytes32 ret) {
      if (v == 0) {
          ret = '0';
      }
      else {
          while (v > 0) {
              ret = bytes32(uint(ret) / (2 ** 8));
              ret |= bytes32(((v % 10) + 48) * 2 ** (8 * 31));
              v /= 10;
          }
      }
      return ret;
    }

}


library SafeMath {

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
      if (a == 0) {
        return 0;
      }
      uint256 c = a * b;
      assert(c / a == b);
      return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
      uint256 c = a / b;
      return c;
    }

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

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

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getExoplanet","outputs":[{"name":"lifeRate","type":"uint8"},{"name":"canBePurchased","type":"bool"},{"name":"priceInExoTokens","type":"uint32"},{"name":"numOfTokensBonusOnPurchase","type":"uint32"},{"name":"name","type":"string"},{"name":"nickname","type":"string"},{"name":"cryptoMatch","type":"string"},{"name":"scientificData","type":"string"},{"name":"sellingPriceInEther","type":"uint256"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newData","type":"uint8"}],"name":"setUnownedLifeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"inPresaleMode","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newData","type":"uint32"}],"name":"setUnownedNumOfExoTokensBonus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"priceInEther","type":"uint256"},{"name":"priceInExoTokens","type":"uint32"},{"name":"cryptoMatch","type":"string"},{"name":"numOfTokensBonusOnPurchase","type":"uint32"},{"name":"lifeRate","type":"uint8"},{"name":"scientificData","type":"string"}],"name":"createContractExoplanet","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getTechBonus2","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getNickname","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newPrice","type":"uint256"}],"name":"setUnownedPriceInEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getPlanetName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newContractAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newVal","type":"string"}],"name":"setTechBonus1","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"approvedToTransfer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_v2Address","type":"address"}],"name":"setNewAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"payoutPartial","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMode","type":"bool"},{"name":"newMarketplace","type":"address"}],"name":"setBuyDirectMode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newData","type":"string"}],"name":"setCryptoMatchValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"BASE_URL","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getLifeRate","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"origTokenId","type":"uint256"},{"name":"name","type":"string"},{"name":"priceInEther","type":"uint256"},{"name":"priceInExoTokens","type":"uint32"},{"name":"cryptoMatch","type":"string"},{"name":"numOfTokensBonusOnPurchase","type":"uint32"},{"name":"lifeRate","type":"uint8"},{"name":"scientificData","type":"string"},{"name":"owner","type":"address"}],"name":"migrateSinglePlanet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"ownerTokens","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"_canBePurchased","type":"bool"},{"name":"_newPrice","type":"uint256"}],"name":"setPurchaseableMode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"buyDirectInMarketplace","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"symbol","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getPriceInExoTokens","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newData","type":"string"}],"name":"setUnownedName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newVal","type":"string"}],"name":"setTechBonus2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newVal","type":"string"}],"name":"setTechBonus3","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getNumOfTokensBonusOnPurchase","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"},{"name":"tokenId","type":"uint256"}],"name":"transferUnownedPlanet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMode","type":"bool"}],"name":"setPresaleMode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"priceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newPrice","type":"uint32"}],"name":"setUnownedPriceInExoTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newPrice","type":"uint256"}],"name":"setPriceInEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"uri","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getCryptoMatch","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getTechBonus3","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"turnMigrateOff","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getScientificData","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"marketplaceAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newData","type":"string"}],"name":"setUnownedNickname","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newPrice","type":"uint32"}],"name":"setPriceInExoTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"currentOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allowMigrate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"_canBePurchased","type":"bool"}],"name":"setUnownedPurchaseableMode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"purchase","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getPurchaseableMode","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_allowBuyDirect","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenId","type":"uint256"}],"name":"getTechBonus1","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenId","type":"uint256"},{"name":"newData","type":"string"}],"name":"setScientificData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"numOfTokensBonusOnPurchase","type":"uint32"},{"indexed":false,"name":"owner","type":"address"}],"name":"Birth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"oldPriceInEther","type":"uint256"},{"indexed":false,"name":"newPriceInEther","type":"uint256"},{"indexed":false,"name":"prevOwner","type":"address"},{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"name","type":"string"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContract","type":"address"}],"name":"ContractUpgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

60606040526005805460a860020a61ffff021960a060020a60ff021991821674010000000000000000000000000000000000000000171676010000000000000000000000000000000000000000000017909155600680549091169055341561006657600080fd5b60048054600160a060020a033316600160a060020a0319918216811790925560058054821683179055600880549091169091179055613bc6806100aa6000396000f30060606040526004361061030b5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306d91eea811461031057806306f33ae21461051f57806306fdde031461053d578063095ea7b3146105c75780630a0f8168146105e95780631051db341461061857806312cacbb51461063f57806318160ddd146106525780631d017b28146106775780631d8b4dd11461069657806323b872dd1461078c57806327d7874c146107b45780632ba73c15146107d35780632f0ddcb2146107f257806334c2b620146108085780633f4ba83a1461081e5780634777c1f4146108315780635c975abb1461084a57806362133a6c1461085d5780636352211e1461087357806363bd1d4a146108895780636af04a571461089c5780636d25ba1d146108af5780636f7a6b8b1461090557806370a082311461091b578063715879881461093a578063798ce54f146109595780637be5b5ae1461096f5780637dc45e27146109935780637f78636a146109e95780637ffc0712146109fc57806381bc365714610a285780638456cb5914610b2e5780638462151c14610b415780638bfff5a014610bb35780638f8db73714610bd157806395d89b4114610bdc578063a594056f14610bef578063a715df5814610c1e578063a9059cbb14610c74578063ad50039f14610c96578063afe1d4cf14610cec578063b047fb5014610d42578063b2e6ceeb14610d55578063b3ef774b14610d6b578063b629d74114610d81578063b8a2511914610da3578063b9186d7d14610dbb578063bd62104214610dd1578063bf8edd8514610df0578063c87b56dd14610e09578063cbe7a15014610e1f578063ccdaeab014610e35578063d19b99b514610e4b578063d6c5d82314610e5e578063daa17f4914610e74578063e12925a914610e87578063e2f77ae214610edd578063e545110314610efc578063e780444414610f12578063e785daaf14610f25578063efef39a114610f40578063f13b68e814610f4b578063f36a1fd914610f61578063f4ae0d2f14610f74578063f6e5e29814610f8a575b600080fd5b341561031b57600080fd5b610326600435610fe0565b60405160ff8b168152891515602082015263ffffffff808a166040830152881660608201526101008101839052600160a060020a038216610120820152610140608082018181529060a083019060c084019060e085019085018b818151815260200191508051906020019080838360005b838110156103af578082015183820152602001610397565b50505050905090810190601f1680156103dc5780820380516001836020036101000a031916815260200191505b5085810384528a818151815260200191508051906020019080838360005b838110156104125780820151838201526020016103fa565b50505050905090810190601f16801561043f5780820380516001836020036101000a031916815260200191505b50858103835289818151815260200191508051906020019080838360005b8381101561047557808201518382015260200161045d565b50505050905090810190601f1680156104a25780820380516001836020036101000a031916815260200191505b50858103825288818151815260200191508051906020019080838360005b838110156104d85780820151838201526020016104c0565b50505050905090810190601f1680156105055780820380516001836020036101000a031916815260200191505b509e50505050505050505050505050505060405180910390f35b341561052a57600080fd5b61053b60043560ff60243516611336565b005b341561054857600080fd5b6105506113b6565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561058c578082015183820152602001610574565b50505050905090810190601f1680156105b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105d257600080fd5b61053b600160a060020a03600435166024356113f7565b34156105f457600080fd5b6105fc61146f565b604051600160a060020a03909116815260200160405180910390f35b341561062357600080fd5b61062b61147e565b604051901515815260200160405180910390f35b341561064a57600080fd5b61062b611484565b341561065d57600080fd5b610665611494565b60405190815260200160405180910390f35b341561068257600080fd5b61053b60043563ffffffff6024351661149a565b34156106a157600080fd5b61066560046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949686359660208082013563ffffffff169750919550606081019450604090810135860180830194503592508291601f8301819004810201905190810160405281815292919060208401838380828437509496863563ffffffff169660208082013560ff169750919550606081019450604090810135860180830194503592508291601f83018190048102019051908101604052818152929190602084018383808284375094965061152795505050505050565b341561079757600080fd5b61053b600160a060020a036004358116906024351660443561157c565b34156107bf57600080fd5b61053b600160a060020a03600435166115e1565b34156107de57600080fd5b61053b600160a060020a0360043516611633565b34156107fd57600080fd5b610550600435611685565b341561081357600080fd5b61055060043561174c565b341561082957600080fd5b61053b6117dc565b341561083c57600080fd5b61053b600435602435611830565b341561085557600080fd5b61062b61188c565b341561086857600080fd5b61055060043561189c565b341561087e57600080fd5b6105fc60043561192c565b341561089457600080fd5b61053b611947565b34156108a757600080fd5b6105fc6119b8565b34156108ba57600080fd5b61053b600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506119c795505050505050565b341561091057600080fd5b6105fc600435611a2f565b341561092657600080fd5b610665600160a060020a0360043516611a4a565b341561094557600080fd5b61053b600160a060020a0360043516611a65565b341561096457600080fd5b61053b600435611af3565b341561097a57600080fd5b61053b6004351515600160a060020a0360243516611b76565b341561099e57600080fd5b61053b600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611be195505050505050565b34156109f457600080fd5b610550611c49565b3415610a0757600080fd5b610a12600435611ca9565b60405160ff909116815260200160405180910390f35b3415610a3357600080fd5b61053b600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949686359660208082013563ffffffff169750919550606081019450604090810135860180830194503592508291601f8301819004810201905190810160405281815292919060208401838380828437509496863563ffffffff169660208082013560ff169750919550606081019450604090810135860180830194503592508291601f83018190048102019051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250611cd4915050565b3415610b3957600080fd5b61053b611d51565b3415610b4c57600080fd5b610b60600160a060020a0360043516611daa565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610b9f578082015183820152602001610b87565b505050509050019250505060405180910390f35b3415610bbe57600080fd5b61053b6004356024351515604435611e8b565b61053b600435611ef7565b3415610be757600080fd5b610550612107565b3415610bfa57600080fd5b610c05600435612148565b60405163ffffffff909116815260200160405180910390f35b3415610c2957600080fd5b61053b600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061217c95505050505050565b3415610c7f57600080fd5b61053b600160a060020a03600435166024356121f8565b3415610ca157600080fd5b61053b600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061224795505050505050565b3415610cf757600080fd5b61053b600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506122af95505050505050565b3415610d4d57600080fd5b6105fc612317565b3415610d6057600080fd5b61053b600435612326565b3415610d7657600080fd5b610c05600435612389565b3415610d8c57600080fd5b61053b600160a060020a03600435166024356123c1565b3415610dae57600080fd5b61053b6004351515612558565b3415610dc657600080fd5b6106656004356125a2565b3415610ddc57600080fd5b61053b60043563ffffffff602435166125b4565b3415610dfb57600080fd5b61053b600435602435612641565b3415610e1457600080fd5b610550600435612662565b3415610e2a57600080fd5b6105506004356126d6565b3415610e4057600080fd5b610550600435612766565b3415610e5657600080fd5b61053b6127f6565b3415610e6957600080fd5b610550600435612833565b3415610e7f57600080fd5b6105fc6128c3565b3415610e9257600080fd5b61053b600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506128d295505050505050565b3415610ee857600080fd5b61053b60043563ffffffff6024351661294e565b3415610f0757600080fd5b6105fc60043561296f565b3415610f1d57600080fd5b61062b61298a565b3415610f3057600080fd5b61053b60043560243515156129ad565b61053b600435612a31565b3415610f5657600080fd5b61062b600435612d76565b3415610f6c57600080fd5b61062b612da6565b3415610f7f57600080fd5b610550600435612db6565b3415610f9557600080fd5b61053b600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650612e4695505050505050565b600080600080610fee613971565b610ff6613971565b610ffe613971565b611006613971565b600080600060078c81548110151561101a57fe5b906000526020600020906008020190508060000160009054906101000a900460ff169a508060000160019054906101000a900460ff1699508060000160029054906101000a900463ffffffff1698508060000160069054906101000a900463ffffffff169750806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111185780601f106110ed57610100808354040283529160200191611118565b820191906000526020600020905b8154815290600101906020018083116110fb57829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111b75780601f1061118c576101008083540402835291602001916111b7565b820191906000526020600020905b81548152906001019060200180831161119a57829003601f168201915b50505050509550806003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112565780601f1061122b57610100808354040283529160200191611256565b820191906000526020600020905b81548152906001019060200180831161123957829003601f168201915b50505050509450806007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112f55780601f106112ca576101008083540402835291602001916112f5565b820191906000526020600020905b8154815290600101906020018083116112d857829003601f168201915b50505060009e8f525050600360209081526040808f2054918f9052909d20549b9d9a9c999b989a979996989597909695600160a060020a0316945092505050565b60045433600160a060020a0390811691161480611361575060055433600160a060020a039081169116145b151561136c57600080fd5b61137582612eae565b151561138057600080fd5b8060078381548110151561139057fe5b60009182526020909120600890910201805460ff191660ff929092169190911790555050565b6113be613971565b60408051908101604052600a81527f45786f506c616e657473000000000000000000000000000000000000000000006020820152919050565b6114013382612ecf565b151561140c57600080fd5b600081815260026020526040908190208054600160a060020a031916600160a060020a03858116918217909255839290913316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925905160405180910390a45050565b600454600160a060020a031681565b60015b90565b60055460a060020a900460ff1681565b60075490565b60045433600160a060020a03908116911614806114c5575060055433600160a060020a039081169116145b15156114d057600080fd5b6114d982612eae565b15156114e457600080fd5b806007838154811015156114f457fe5b906000526020600020906008020160000160066101000a81548163ffffffff021916908363ffffffff1602179055505050565b60045460009033600160a060020a0390811691161480611555575060055433600160a060020a039081169116145b151561156057600080fd5b6115708830898989898989612eef565b98975050505050505050565b60055460a860020a900460ff161561159357600080fd5b61159d8382612ecf565b15156115a857600080fd5b6115b23382613203565b15156115bd57600080fd5b6115c682613223565b15156115d157600080fd5b6115dc838383613231565b505050565b60045433600160a060020a039081169116146115fc57600080fd5b600160a060020a038116151561161157600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b60045433600160a060020a0390811691161461164e57600080fd5b600160a060020a038116151561166357600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b61168d613971565b600780548390811061169b57fe5b90600052602060002090600802016005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b820191906000526020600020905b81548152906001019060200180831161172357829003601f168201915b50505050509050919050565b611754613971565b600780548390811061176257fe5b90600052602060002090600802016002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b60045433600160a060020a039081169116146117f757600080fd5b60055460a860020a900460ff16151561180f57600080fd5b6005805475ff00000000000000000000000000000000000000000019169055565b60045433600160a060020a039081169116148061185b575060055433600160a060020a039081169116145b151561186657600080fd5b61186f82612eae565b151561187a57600080fd5b60009182526003602052604090912055565b60055460a860020a900460ff1681565b6118a4613971565b60078054839081106118b257fe5b90600052602060002090600802016001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b600090815260208190526040902054600160a060020a031690565b60045433600160a060020a0390811691161480611972575060055433600160a060020a039081169116145b151561197d57600080fd5b600454600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156119b657600080fd5b565b600654600160a060020a031681565b60085433600160a060020a03908116911614806119f2575060045433600160a060020a039081169116145b15156119fd57600080fd5b80600783815481101515611a0d57fe5b90600052602060002090600802016004019080516115dc929160200190613983565b600260205260009081526040902054600160a060020a031681565b600160a060020a031660009081526001602052604090205490565b60045433600160a060020a03908116911614611a8057600080fd5b60055460a860020a900460ff161515611a9857600080fd5b60068054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60045433600160a060020a0390811691161480611b1e575060055433600160a060020a039081169116145b1515611b2957600080fd5b600160a060020a03301631811115611b4057600080fd5b600454600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515611b7357600080fd5b50565b60045433600160a060020a03908116911614611b9157600080fd5b6006805474ff0000000000000000000000000000000000000000191660a060020a931515939093029290921790915560088054600160a060020a031916600160a060020a03909216919091179055565b60045433600160a060020a0390811691161480611c0c575060055433600160a060020a039081169116145b1515611c1757600080fd5b80600783815481101515611c2757fe5b90600052602060002090600802016003019080516115dc929160200190613983565b606060405190810160405280602681526020017f68747470733a2f2f65786f706c616e6574732e696f2f6d657461646174612f7081526020017f6c616e65745f000000000000000000000000000000000000000000000000000081525081565b6000600782815481101515611cba57fe5b600091825260209091206008909102015460ff1692915050565b60045433600160a060020a0390811691161480611cff575060055433600160a060020a039081169116145b1515611d0a57600080fd5b600554760100000000000000000000000000000000000000000000900460ff161515611d3557600080fd5b611d4689898989898989898961334c565b505050505050505050565b60045433600160a060020a03908116911614611d6c57600080fd5b60055460a860020a900460ff1615611d8357600080fd5b6005805475ff000000000000000000000000000000000000000000191660a860020a179055565b611db2613971565b6000611dbc613971565b6000806000611dca87611a4a565b9450841515611dfa576000604051805910611de25750595b90808252806020026020018201604052509550611e81565b84604051805910611e085750595b90808252806020026020018201604052509350611e23611494565b925060009150600090505b828111611e7d57600081815260208190526040902054600160a060020a0388811691161415611e755780848381518110611e6457fe5b602090810290910101526001909101905b600101611e2e565b8395505b5050505050919050565b60055460a060020a900460ff1615611ea257600080fd5b611eac3384612ecf565b1515611eb757600080fd5b81600784815481101515611ec757fe5b6000918252602090912060089091020180549115156101000261ff00199092169190911790556115dc8382612641565b600554600090819060a860020a900460ff1615611f1357600080fd5b60055460a060020a900460ff1615611f2a57600080fd5b60065460a060020a900460ff161515611f4257600080fd5b6007805484908110611f5057fe5b6000918252602090912060089091020154610100900460ff161515611f7457600080fd5b60008381526003602052604090205491503482901015611f9357600080fd5b50600082815260208190526040902054600160a060020a039081169030168114611fe857600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515611fe857600080fd5b611ff3813385613231565b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f83836003600087815260200190815260200160002054843360078981548110151561203a57fe5b90600052602060002090600802016001016040518681526020810186905260408101859052600160a060020a0380851660608301528316608082015260c060a082018181528354600260001961010060018416150201909116049183018290529060e0830190849080156120ef5780601f106120c4576101008083540402835291602001916120ef565b820191906000526020600020905b8154815290600101906020018083116120d257829003601f168201915b505097505050505050505060405180910390a1505050565b61210f613971565b60408051908101604052600381527f58504c00000000000000000000000000000000000000000000000000000000006020820152919050565b600060078281548110151561215957fe5b600091825260209091206008909102015462010000900463ffffffff1692915050565b60045433600160a060020a03908116911614806121a7575060055433600160a060020a039081169116145b15156121b257600080fd5b6121bb82612eae565b15156121c657600080fd5b806007838154811015156121d657fe5b90600052602060002090600802016001019080516115dc929160200190613983565b60055460a860020a900460ff161561220f57600080fd5b6122193382612ecf565b151561222457600080fd5b61222d82613223565b151561223857600080fd5b612243338383613231565b5050565b60085433600160a060020a0390811691161480612272575060045433600160a060020a039081169116145b151561227d57600080fd5b8060078381548110151561228d57fe5b90600052602060002090600802016005019080516115dc929160200190613983565b60085433600160a060020a03908116911614806122da575060045433600160a060020a039081169116145b15156122e557600080fd5b806007838154811015156122f557fe5b90600052602060002090600802016006019080516115dc929160200190613983565b600554600160a060020a031681565b60055460a860020a900460ff161561233d57600080fd5b61234633613223565b151561235157600080fd5b61235b3382613203565b151561236657600080fd5b600081815260208190526040902054611b7390600160a060020a03163383613231565b600060078281548110151561239a57fe5b60009182526020909120600890910201546601000000000000900463ffffffff1692915050565b60045433600160a060020a03908116911614806123ec575060055433600160a060020a039081169116145b15156123f757600080fd5b61240081612eae565b151561240b57600080fd5b600160a060020a038216151561242057600080fd5b60008181526020819052604090205461244390600160a060020a03168383613231565b600081815260036020526040902054600780547e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f9284929091829130918891908690811061248c57fe5b90600052602060002090600802016001016040518681526020810186905260408101859052600160a060020a0380851660608301528316608082015260c060a082018181528354600260001961010060018416150201909116049183018290529060e0830190849080156125415780601f1061251657610100808354040283529160200191612541565b820191906000526020600020905b81548152906001019060200180831161252457829003601f168201915b505097505050505050505060405180910390a15050565b60045433600160a060020a0390811691161461257357600080fd5b6005805491151560a060020a0274ff000000000000000000000000000000000000000019909216919091179055565b60009081526003602052604090205490565b60045433600160a060020a03908116911614806125df575060055433600160a060020a039081169116145b15156125ea57600080fd5b6125f382612eae565b15156125fe57600080fd5b8060078381548110151561260e57fe5b906000526020600020906008020160000160026101000a81548163ffffffff021916908363ffffffff1602179055505050565b60055460a060020a900460ff161561265857600080fd5b61186f3383612ecf565b61266a613971565b6126d0606060405190810160405280602681526020017f68747470733a2f2f65786f706c616e6574732e696f2f6d657461646174612f7081526020017f6c616e65745f00000000000000000000000000000000000000000000000000008152508361361a565b92915050565b6126de613971565b60078054839081106126ec57fe5b90600052602060002090600802016003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b61276e613971565b600780548390811061277c57fe5b90600052602060002090600802016006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b60045433600160a060020a0390811691161461281157600080fd5b6005805476ff0000000000000000000000000000000000000000000019169055565b61283b613971565b600780548390811061284957fe5b90600052602060002090600802016007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b600854600160a060020a031681565b60045433600160a060020a03908116911614806128fd575060055433600160a060020a039081169116145b151561290857600080fd5b61291182612eae565b151561291c57600080fd5b8060078381548110151561292c57fe5b90600052602060002090600802016002019080516115dc929160200190613983565b60055460a060020a900460ff161561296557600080fd5b6125f33383612ecf565b600060208190529081526040902054600160a060020a031681565b600554760100000000000000000000000000000000000000000000900460ff1681565b60045433600160a060020a03908116911614806129d8575060055433600160a060020a039081169116145b15156129e357600080fd5b6129ec82612eae565b15156129f757600080fd5b80600783815481101515612a0757fe5b6000918252602090912060089091020180549115156101000261ff00199092169190911790555050565b6000806000806000600560159054906101000a900460ff16151515612a5557600080fd5b60055460a060020a900460ff161515612a6d57600080fd5b60008681526020819052604090205433600160a060020a0390811691161415612a9557600080fd5b612a9e33613223565b1515612aa957600080fd5b60008681526003602052604090205494503485901015612ac857600080fd5b674563918244f400008511612ae457605d935060c89250612bb7565b678ac7230489e800008511612b0057605d935060969250612bb7565b680168d28e3f002800008511612b1d57605d935060879250612bb7565b6801f399b1438a1000008511612b3a57605e9350607d9250612bb7565b68028c418afbbb5c00008511612b5757605e935060779250612bb7565b680332ca1b67940c00008511612b7457605f935060759250612bb7565b6803ad9b9f83ea4100008511612b9157605f935060739250612bb7565b680428028ec8f13300008511612bae57605f935060719250612bb7565b60609350606e92505b612bd86064612bcc878663ffffffff61375716565b9063ffffffff61378d16565b600087815260036020526040902055612bfc6064612bcc878763ffffffff61375716565b600087815260208190526040902054909250600160a060020a03908116915030168114612c5457600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515612c5457600080fd5b612c5f813388613231565b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8686600360008a815260200190815260200160002054843360078c815481101515612ca657fe5b90600052602060002090600802016001016040518681526020810186905260408101859052600160a060020a0380851660608301528316608082015260c060a082018181528354600260001961010060018416150201909116049183018290529060e083019084908015612d5b5780601f10612d3057610100808354040283529160200191612d5b565b820191906000526020600020905b815481529060010190602001808311612d3e57829003601f168201915b505097505050505050505060405180910390a1505050505050565b6000600782815481101515612d8757fe5b6000918252602090912060089091020154610100900460ff1692915050565b60065460a060020a900460ff1681565b612dbe613971565b6007805483908110612dcc57fe5b90600052602060002090600802016004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b60045433600160a060020a0390811691161480612e71575060055433600160a060020a039081169116145b1515612e7c57600080fd5b80600783815481101515612e8c57fe5b90600052602060002090600802016007019080516115dc929160200190613983565b60009081526020819052604090205430600160a060020a0390811691161490565b600090815260208190526040902054600160a060020a0390811691161490565b6000612ef9613a01565b6000612710612f06611494565b10612f1057600080fd5b610160604051908101604052808660ff1681526020016000151581526020018963ffffffff1681526020018763ffffffff1681526020018c8152602001602060405190810160405280600081525081526020018881526020016020604051908101604052806000815250815260200160206040519081016040528060008152508152602001602060405190810160405260008152815260200185905260078054919350600191808301612fc38382613a85565b600092835260209092208591600802018151815460ff191660ff91909116178155602082015181549015156101000261ff00199091161781556040820151815463ffffffff91909116620100000265ffffffff0000199091161781556060820151815463ffffffff9190911666010000000000000269ffffffff00000000000019909116178155608082015181600101908051613064929160200190613983565b5060a08201518160020190805161307f929160200190613983565b5060c08201518160030190805161309a929160200190613983565b5060e0820151816004019080516130b5929160200190613983565b50610100820151816005019080516130d1929160200190613983565b50610120820151816006019080516130ed929160200190613983565b5061014082015181600701908051613109929160200190613983565b50505003905063ffffffff8116811461312157600080fd5b807f9b2c63e473707556567cadc162b1c1e8ed0c0d2684032a847e7ed74cda7291da8c888d60405163ffffffff83166020820152600160a060020a038216604082015260608082528190810185818151815260200191508051906020019080838360005b8381101561319d578082015183820152602001613185565b50505050905090810190601f1680156131ca5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a260008181526003602052604081208a90556131f5908b83613231565b9a9950505050505050505050565b600090815260026020526040902054600160a060020a0391821691161490565b600160a060020a0316151590565b600160a060020a0382166000908152600160208190526040822080549091019055600780548390811061326057fe5b60009182526020808320600890920290910180549315156101000261ff00199094169390931790925582815290819052604090208054600160a060020a03808516600160a060020a0319909216919091179091558316156132f757600160a060020a03831660009081526001602090815260408083208054600019019055838352600290915290208054600160a060020a03191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b613354613a01565b6000612710613361611494565b1061336b57600080fd5b63ffffffff8b168b1461337d57600080fd5b610160604051908101604052808660ff1681526020016000151581526020018963ffffffff1681526020018763ffffffff1681526020018b81526020016020604051908101604052806000815250815260200188815260200160206040519081016040528060008152508152602001602060405190810160405280600081525081526020016020604051908101604052600081528152602001859052600780549193506001918083016134308382613a85565b600092835260209092208591600802018151815460ff191660ff91909116178155602082015181549015156101000261ff00199091161781556040820151815463ffffffff91909116620100000265ffffffff0000199091161781556060820151815463ffffffff9190911666010000000000000269ffffffff000000000000199091161781556080820151816001019080516134d1929160200190613983565b5060a0820151816002019080516134ec929160200190613983565b5060c082015181600301908051613507929160200190613983565b5060e082015181600401908051613522929160200190613983565b506101008201518160050190805161353e929160200190613983565b506101208201518160060190805161355a929160200190613983565b5061014082015181600701908051613576929160200190613983565b5050500360008181526003602090815260408083208d9055600160a060020a0387168352600191829052822080549091019055600780549293509091839081106135bc57fe5b60009182526020808320600890920290910180549315156101000261ff001990941693909317909255918252819052604090208054600160a060020a03909316600160a060020a031990931692909217909155505050505050505050565b613622613971565b61362a613971565b613632613971565b61363a613971565b613642613971565b61364a613971565b600080613656896137a4565b965089955086945084518651016040518059106136705750595b818152601f19601f83011681016020016040529050935083925060009150600090505b85518110156136ec578581815181106136a857fe5b016020015160f860020a900460f860020a028383806001019450815181106136cc57fe5b906020010190600160f860020a031916908160001a905350600101613693565b5060005b84518110156137495784818151811061370557fe5b016020015160f860020a900460f860020a0283838060010194508151811061372957fe5b906020010190600160f860020a031916908160001a9053506001016136f0565b509098975050505050505050565b60008083151561376a5760009150613786565b5082820282848281151561377a57fe5b041461378257fe5b8091505b5092915050565b600080828481151561379b57fe5b04949350505050565b6137ac613971565b8160006137b8826137cb565b90506137c381613829565b949350505050565b60008115156137fb57507f3000000000000000000000000000000000000000000000000000000000000000613824565b60008211156138245761010081049050600a820660300160f860020a0217600a820491506137fb565b919050565b613831613971565b613839613971565b6000806000613846613971565b60206040518059106138555750595b818152601f19601f83011681016020016040529050945060009350600092505b60208310156138e8576008830260020a870291507fff000000000000000000000000000000000000000000000000000000000000008216156138dd57818585815181106138be57fe5b906020010190600160f860020a031916908160001a9053506001909301925b600190920191613875565b836040518059106138f65750595b818152601f19601f830116810160200160405290509050600092505b838310156139675784838151811061392657fe5b016020015160f860020a900460f860020a0281848151811061394457fe5b906020010190600160f860020a031916908160001a905350600190920191613912565b9695505050505050565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139c457805160ff19168380011785556139f1565b828001600101855582156139f1579182015b828111156139f15782518255916020019190600101906139d6565b506139fd929150613ab1565b5090565b6101606040519081016040908152600080835260208301819052908201819052606082015260808101613a32613971565b8152602001613a3f613971565b8152602001613a4c613971565b8152602001613a59613971565b8152602001613a66613971565b8152602001613a73613971565b8152602001613a80613971565b905290565b8154818355818115116115dc576008028160080283600052602060002091820191016115dc9190613acb565b61148191905b808211156139fd5760008155600101613ab7565b61148191905b808211156139fd57805469ffffffffffffffffffff191681556000613af96001830182613b56565b613b07600283016000613b56565b613b15600383016000613b56565b613b23600483016000613b56565b613b31600583016000613b56565b613b3f600683016000613b56565b613b4d600783016000613b56565b50600801613ad1565b50805460018160011615610100020316600290046000825580601f10613b7c5750611b73565b601f016020900490600052602060002090810190611b739190613ab15600a165627a7a723058201ac725bf589917ae019613eb109df68d343d3967e911d88e4d772933b1a019070029

Deployed Bytecode

0x60606040526004361061030b5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306d91eea811461031057806306f33ae21461051f57806306fdde031461053d578063095ea7b3146105c75780630a0f8168146105e95780631051db341461061857806312cacbb51461063f57806318160ddd146106525780631d017b28146106775780631d8b4dd11461069657806323b872dd1461078c57806327d7874c146107b45780632ba73c15146107d35780632f0ddcb2146107f257806334c2b620146108085780633f4ba83a1461081e5780634777c1f4146108315780635c975abb1461084a57806362133a6c1461085d5780636352211e1461087357806363bd1d4a146108895780636af04a571461089c5780636d25ba1d146108af5780636f7a6b8b1461090557806370a082311461091b578063715879881461093a578063798ce54f146109595780637be5b5ae1461096f5780637dc45e27146109935780637f78636a146109e95780637ffc0712146109fc57806381bc365714610a285780638456cb5914610b2e5780638462151c14610b415780638bfff5a014610bb35780638f8db73714610bd157806395d89b4114610bdc578063a594056f14610bef578063a715df5814610c1e578063a9059cbb14610c74578063ad50039f14610c96578063afe1d4cf14610cec578063b047fb5014610d42578063b2e6ceeb14610d55578063b3ef774b14610d6b578063b629d74114610d81578063b8a2511914610da3578063b9186d7d14610dbb578063bd62104214610dd1578063bf8edd8514610df0578063c87b56dd14610e09578063cbe7a15014610e1f578063ccdaeab014610e35578063d19b99b514610e4b578063d6c5d82314610e5e578063daa17f4914610e74578063e12925a914610e87578063e2f77ae214610edd578063e545110314610efc578063e780444414610f12578063e785daaf14610f25578063efef39a114610f40578063f13b68e814610f4b578063f36a1fd914610f61578063f4ae0d2f14610f74578063f6e5e29814610f8a575b600080fd5b341561031b57600080fd5b610326600435610fe0565b60405160ff8b168152891515602082015263ffffffff808a166040830152881660608201526101008101839052600160a060020a038216610120820152610140608082018181529060a083019060c084019060e085019085018b818151815260200191508051906020019080838360005b838110156103af578082015183820152602001610397565b50505050905090810190601f1680156103dc5780820380516001836020036101000a031916815260200191505b5085810384528a818151815260200191508051906020019080838360005b838110156104125780820151838201526020016103fa565b50505050905090810190601f16801561043f5780820380516001836020036101000a031916815260200191505b50858103835289818151815260200191508051906020019080838360005b8381101561047557808201518382015260200161045d565b50505050905090810190601f1680156104a25780820380516001836020036101000a031916815260200191505b50858103825288818151815260200191508051906020019080838360005b838110156104d85780820151838201526020016104c0565b50505050905090810190601f1680156105055780820380516001836020036101000a031916815260200191505b509e50505050505050505050505050505060405180910390f35b341561052a57600080fd5b61053b60043560ff60243516611336565b005b341561054857600080fd5b6105506113b6565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561058c578082015183820152602001610574565b50505050905090810190601f1680156105b95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105d257600080fd5b61053b600160a060020a03600435166024356113f7565b34156105f457600080fd5b6105fc61146f565b604051600160a060020a03909116815260200160405180910390f35b341561062357600080fd5b61062b61147e565b604051901515815260200160405180910390f35b341561064a57600080fd5b61062b611484565b341561065d57600080fd5b610665611494565b60405190815260200160405180910390f35b341561068257600080fd5b61053b60043563ffffffff6024351661149a565b34156106a157600080fd5b61066560046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949686359660208082013563ffffffff169750919550606081019450604090810135860180830194503592508291601f8301819004810201905190810160405281815292919060208401838380828437509496863563ffffffff169660208082013560ff169750919550606081019450604090810135860180830194503592508291601f83018190048102019051908101604052818152929190602084018383808284375094965061152795505050505050565b341561079757600080fd5b61053b600160a060020a036004358116906024351660443561157c565b34156107bf57600080fd5b61053b600160a060020a03600435166115e1565b34156107de57600080fd5b61053b600160a060020a0360043516611633565b34156107fd57600080fd5b610550600435611685565b341561081357600080fd5b61055060043561174c565b341561082957600080fd5b61053b6117dc565b341561083c57600080fd5b61053b600435602435611830565b341561085557600080fd5b61062b61188c565b341561086857600080fd5b61055060043561189c565b341561087e57600080fd5b6105fc60043561192c565b341561089457600080fd5b61053b611947565b34156108a757600080fd5b6105fc6119b8565b34156108ba57600080fd5b61053b600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506119c795505050505050565b341561091057600080fd5b6105fc600435611a2f565b341561092657600080fd5b610665600160a060020a0360043516611a4a565b341561094557600080fd5b61053b600160a060020a0360043516611a65565b341561096457600080fd5b61053b600435611af3565b341561097a57600080fd5b61053b6004351515600160a060020a0360243516611b76565b341561099e57600080fd5b61053b600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611be195505050505050565b34156109f457600080fd5b610550611c49565b3415610a0757600080fd5b610a12600435611ca9565b60405160ff909116815260200160405180910390f35b3415610a3357600080fd5b61053b600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949686359660208082013563ffffffff169750919550606081019450604090810135860180830194503592508291601f8301819004810201905190810160405281815292919060208401838380828437509496863563ffffffff169660208082013560ff169750919550606081019450604090810135860180830194503592508291601f83018190048102019051908101604052818152929190602084018383808284375094965050509235600160a060020a03169250611cd4915050565b3415610b3957600080fd5b61053b611d51565b3415610b4c57600080fd5b610b60600160a060020a0360043516611daa565b60405160208082528190810183818151815260200191508051906020019060200280838360005b83811015610b9f578082015183820152602001610b87565b505050509050019250505060405180910390f35b3415610bbe57600080fd5b61053b6004356024351515604435611e8b565b61053b600435611ef7565b3415610be757600080fd5b610550612107565b3415610bfa57600080fd5b610c05600435612148565b60405163ffffffff909116815260200160405180910390f35b3415610c2957600080fd5b61053b600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061217c95505050505050565b3415610c7f57600080fd5b61053b600160a060020a03600435166024356121f8565b3415610ca157600080fd5b61053b600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061224795505050505050565b3415610cf757600080fd5b61053b600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506122af95505050505050565b3415610d4d57600080fd5b6105fc612317565b3415610d6057600080fd5b61053b600435612326565b3415610d7657600080fd5b610c05600435612389565b3415610d8c57600080fd5b61053b600160a060020a03600435166024356123c1565b3415610dae57600080fd5b61053b6004351515612558565b3415610dc657600080fd5b6106656004356125a2565b3415610ddc57600080fd5b61053b60043563ffffffff602435166125b4565b3415610dfb57600080fd5b61053b600435602435612641565b3415610e1457600080fd5b610550600435612662565b3415610e2a57600080fd5b6105506004356126d6565b3415610e4057600080fd5b610550600435612766565b3415610e5657600080fd5b61053b6127f6565b3415610e6957600080fd5b610550600435612833565b3415610e7f57600080fd5b6105fc6128c3565b3415610e9257600080fd5b61053b600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506128d295505050505050565b3415610ee857600080fd5b61053b60043563ffffffff6024351661294e565b3415610f0757600080fd5b6105fc60043561296f565b3415610f1d57600080fd5b61062b61298a565b3415610f3057600080fd5b61053b60043560243515156129ad565b61053b600435612a31565b3415610f5657600080fd5b61062b600435612d76565b3415610f6c57600080fd5b61062b612da6565b3415610f7f57600080fd5b610550600435612db6565b3415610f9557600080fd5b61053b600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650612e4695505050505050565b600080600080610fee613971565b610ff6613971565b610ffe613971565b611006613971565b600080600060078c81548110151561101a57fe5b906000526020600020906008020190508060000160009054906101000a900460ff169a508060000160019054906101000a900460ff1699508060000160029054906101000a900463ffffffff1698508060000160069054906101000a900463ffffffff169750806001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111185780601f106110ed57610100808354040283529160200191611118565b820191906000526020600020905b8154815290600101906020018083116110fb57829003601f168201915b50505050509650806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111b75780601f1061118c576101008083540402835291602001916111b7565b820191906000526020600020905b81548152906001019060200180831161119a57829003601f168201915b50505050509550806003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112565780601f1061122b57610100808354040283529160200191611256565b820191906000526020600020905b81548152906001019060200180831161123957829003601f168201915b50505050509450806007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112f55780601f106112ca576101008083540402835291602001916112f5565b820191906000526020600020905b8154815290600101906020018083116112d857829003601f168201915b50505060009e8f525050600360209081526040808f2054918f9052909d20549b9d9a9c999b989a979996989597909695600160a060020a0316945092505050565b60045433600160a060020a0390811691161480611361575060055433600160a060020a039081169116145b151561136c57600080fd5b61137582612eae565b151561138057600080fd5b8060078381548110151561139057fe5b60009182526020909120600890910201805460ff191660ff929092169190911790555050565b6113be613971565b60408051908101604052600a81527f45786f506c616e657473000000000000000000000000000000000000000000006020820152919050565b6114013382612ecf565b151561140c57600080fd5b600081815260026020526040908190208054600160a060020a031916600160a060020a03858116918217909255839290913316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925905160405180910390a45050565b600454600160a060020a031681565b60015b90565b60055460a060020a900460ff1681565b60075490565b60045433600160a060020a03908116911614806114c5575060055433600160a060020a039081169116145b15156114d057600080fd5b6114d982612eae565b15156114e457600080fd5b806007838154811015156114f457fe5b906000526020600020906008020160000160066101000a81548163ffffffff021916908363ffffffff1602179055505050565b60045460009033600160a060020a0390811691161480611555575060055433600160a060020a039081169116145b151561156057600080fd5b6115708830898989898989612eef565b98975050505050505050565b60055460a860020a900460ff161561159357600080fd5b61159d8382612ecf565b15156115a857600080fd5b6115b23382613203565b15156115bd57600080fd5b6115c682613223565b15156115d157600080fd5b6115dc838383613231565b505050565b60045433600160a060020a039081169116146115fc57600080fd5b600160a060020a038116151561161157600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b60045433600160a060020a0390811691161461164e57600080fd5b600160a060020a038116151561166357600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b61168d613971565b600780548390811061169b57fe5b90600052602060002090600802016005018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b820191906000526020600020905b81548152906001019060200180831161172357829003601f168201915b50505050509050919050565b611754613971565b600780548390811061176257fe5b90600052602060002090600802016002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b60045433600160a060020a039081169116146117f757600080fd5b60055460a860020a900460ff16151561180f57600080fd5b6005805475ff00000000000000000000000000000000000000000019169055565b60045433600160a060020a039081169116148061185b575060055433600160a060020a039081169116145b151561186657600080fd5b61186f82612eae565b151561187a57600080fd5b60009182526003602052604090912055565b60055460a860020a900460ff1681565b6118a4613971565b60078054839081106118b257fe5b90600052602060002090600802016001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b600090815260208190526040902054600160a060020a031690565b60045433600160a060020a0390811691161480611972575060055433600160a060020a039081169116145b151561197d57600080fd5b600454600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156119b657600080fd5b565b600654600160a060020a031681565b60085433600160a060020a03908116911614806119f2575060045433600160a060020a039081169116145b15156119fd57600080fd5b80600783815481101515611a0d57fe5b90600052602060002090600802016004019080516115dc929160200190613983565b600260205260009081526040902054600160a060020a031681565b600160a060020a031660009081526001602052604090205490565b60045433600160a060020a03908116911614611a8057600080fd5b60055460a860020a900460ff161515611a9857600080fd5b60068054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60045433600160a060020a0390811691161480611b1e575060055433600160a060020a039081169116145b1515611b2957600080fd5b600160a060020a03301631811115611b4057600080fd5b600454600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515611b7357600080fd5b50565b60045433600160a060020a03908116911614611b9157600080fd5b6006805474ff0000000000000000000000000000000000000000191660a060020a931515939093029290921790915560088054600160a060020a031916600160a060020a03909216919091179055565b60045433600160a060020a0390811691161480611c0c575060055433600160a060020a039081169116145b1515611c1757600080fd5b80600783815481101515611c2757fe5b90600052602060002090600802016003019080516115dc929160200190613983565b606060405190810160405280602681526020017f68747470733a2f2f65786f706c616e6574732e696f2f6d657461646174612f7081526020017f6c616e65745f000000000000000000000000000000000000000000000000000081525081565b6000600782815481101515611cba57fe5b600091825260209091206008909102015460ff1692915050565b60045433600160a060020a0390811691161480611cff575060055433600160a060020a039081169116145b1515611d0a57600080fd5b600554760100000000000000000000000000000000000000000000900460ff161515611d3557600080fd5b611d4689898989898989898961334c565b505050505050505050565b60045433600160a060020a03908116911614611d6c57600080fd5b60055460a860020a900460ff1615611d8357600080fd5b6005805475ff000000000000000000000000000000000000000000191660a860020a179055565b611db2613971565b6000611dbc613971565b6000806000611dca87611a4a565b9450841515611dfa576000604051805910611de25750595b90808252806020026020018201604052509550611e81565b84604051805910611e085750595b90808252806020026020018201604052509350611e23611494565b925060009150600090505b828111611e7d57600081815260208190526040902054600160a060020a0388811691161415611e755780848381518110611e6457fe5b602090810290910101526001909101905b600101611e2e565b8395505b5050505050919050565b60055460a060020a900460ff1615611ea257600080fd5b611eac3384612ecf565b1515611eb757600080fd5b81600784815481101515611ec757fe5b6000918252602090912060089091020180549115156101000261ff00199092169190911790556115dc8382612641565b600554600090819060a860020a900460ff1615611f1357600080fd5b60055460a060020a900460ff1615611f2a57600080fd5b60065460a060020a900460ff161515611f4257600080fd5b6007805484908110611f5057fe5b6000918252602090912060089091020154610100900460ff161515611f7457600080fd5b60008381526003602052604090205491503482901015611f9357600080fd5b50600082815260208190526040902054600160a060020a039081169030168114611fe857600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515611fe857600080fd5b611ff3813385613231565b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f83836003600087815260200190815260200160002054843360078981548110151561203a57fe5b90600052602060002090600802016001016040518681526020810186905260408101859052600160a060020a0380851660608301528316608082015260c060a082018181528354600260001961010060018416150201909116049183018290529060e0830190849080156120ef5780601f106120c4576101008083540402835291602001916120ef565b820191906000526020600020905b8154815290600101906020018083116120d257829003601f168201915b505097505050505050505060405180910390a1505050565b61210f613971565b60408051908101604052600381527f58504c00000000000000000000000000000000000000000000000000000000006020820152919050565b600060078281548110151561215957fe5b600091825260209091206008909102015462010000900463ffffffff1692915050565b60045433600160a060020a03908116911614806121a7575060055433600160a060020a039081169116145b15156121b257600080fd5b6121bb82612eae565b15156121c657600080fd5b806007838154811015156121d657fe5b90600052602060002090600802016001019080516115dc929160200190613983565b60055460a860020a900460ff161561220f57600080fd5b6122193382612ecf565b151561222457600080fd5b61222d82613223565b151561223857600080fd5b612243338383613231565b5050565b60085433600160a060020a0390811691161480612272575060045433600160a060020a039081169116145b151561227d57600080fd5b8060078381548110151561228d57fe5b90600052602060002090600802016005019080516115dc929160200190613983565b60085433600160a060020a03908116911614806122da575060045433600160a060020a039081169116145b15156122e557600080fd5b806007838154811015156122f557fe5b90600052602060002090600802016006019080516115dc929160200190613983565b600554600160a060020a031681565b60055460a860020a900460ff161561233d57600080fd5b61234633613223565b151561235157600080fd5b61235b3382613203565b151561236657600080fd5b600081815260208190526040902054611b7390600160a060020a03163383613231565b600060078281548110151561239a57fe5b60009182526020909120600890910201546601000000000000900463ffffffff1692915050565b60045433600160a060020a03908116911614806123ec575060055433600160a060020a039081169116145b15156123f757600080fd5b61240081612eae565b151561240b57600080fd5b600160a060020a038216151561242057600080fd5b60008181526020819052604090205461244390600160a060020a03168383613231565b600081815260036020526040902054600780547e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f9284929091829130918891908690811061248c57fe5b90600052602060002090600802016001016040518681526020810186905260408101859052600160a060020a0380851660608301528316608082015260c060a082018181528354600260001961010060018416150201909116049183018290529060e0830190849080156125415780601f1061251657610100808354040283529160200191612541565b820191906000526020600020905b81548152906001019060200180831161252457829003601f168201915b505097505050505050505060405180910390a15050565b60045433600160a060020a0390811691161461257357600080fd5b6005805491151560a060020a0274ff000000000000000000000000000000000000000019909216919091179055565b60009081526003602052604090205490565b60045433600160a060020a03908116911614806125df575060055433600160a060020a039081169116145b15156125ea57600080fd5b6125f382612eae565b15156125fe57600080fd5b8060078381548110151561260e57fe5b906000526020600020906008020160000160026101000a81548163ffffffff021916908363ffffffff1602179055505050565b60055460a060020a900460ff161561265857600080fd5b61186f3383612ecf565b61266a613971565b6126d0606060405190810160405280602681526020017f68747470733a2f2f65786f706c616e6574732e696f2f6d657461646174612f7081526020017f6c616e65745f00000000000000000000000000000000000000000000000000008152508361361a565b92915050565b6126de613971565b60078054839081106126ec57fe5b90600052602060002090600802016003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b61276e613971565b600780548390811061277c57fe5b90600052602060002090600802016006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b60045433600160a060020a0390811691161461281157600080fd5b6005805476ff0000000000000000000000000000000000000000000019169055565b61283b613971565b600780548390811061284957fe5b90600052602060002090600802016007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b600854600160a060020a031681565b60045433600160a060020a03908116911614806128fd575060055433600160a060020a039081169116145b151561290857600080fd5b61291182612eae565b151561291c57600080fd5b8060078381548110151561292c57fe5b90600052602060002090600802016002019080516115dc929160200190613983565b60055460a060020a900460ff161561296557600080fd5b6125f33383612ecf565b600060208190529081526040902054600160a060020a031681565b600554760100000000000000000000000000000000000000000000900460ff1681565b60045433600160a060020a03908116911614806129d8575060055433600160a060020a039081169116145b15156129e357600080fd5b6129ec82612eae565b15156129f757600080fd5b80600783815481101515612a0757fe5b6000918252602090912060089091020180549115156101000261ff00199092169190911790555050565b6000806000806000600560159054906101000a900460ff16151515612a5557600080fd5b60055460a060020a900460ff161515612a6d57600080fd5b60008681526020819052604090205433600160a060020a0390811691161415612a9557600080fd5b612a9e33613223565b1515612aa957600080fd5b60008681526003602052604090205494503485901015612ac857600080fd5b674563918244f400008511612ae457605d935060c89250612bb7565b678ac7230489e800008511612b0057605d935060969250612bb7565b680168d28e3f002800008511612b1d57605d935060879250612bb7565b6801f399b1438a1000008511612b3a57605e9350607d9250612bb7565b68028c418afbbb5c00008511612b5757605e935060779250612bb7565b680332ca1b67940c00008511612b7457605f935060759250612bb7565b6803ad9b9f83ea4100008511612b9157605f935060739250612bb7565b680428028ec8f13300008511612bae57605f935060719250612bb7565b60609350606e92505b612bd86064612bcc878663ffffffff61375716565b9063ffffffff61378d16565b600087815260036020526040902055612bfc6064612bcc878763ffffffff61375716565b600087815260208190526040902054909250600160a060020a03908116915030168114612c5457600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515612c5457600080fd5b612c5f813388613231565b7e8201e7bcbf010c2c07de59d6e97cb7e3cf67a46125c49cbc89b9d2cde1f48f8686600360008a815260200190815260200160002054843360078c815481101515612ca657fe5b90600052602060002090600802016001016040518681526020810186905260408101859052600160a060020a0380851660608301528316608082015260c060a082018181528354600260001961010060018416150201909116049183018290529060e083019084908015612d5b5780601f10612d3057610100808354040283529160200191612d5b565b820191906000526020600020905b815481529060010190602001808311612d3e57829003601f168201915b505097505050505050505060405180910390a1505050505050565b6000600782815481101515612d8757fe5b6000918252602090912060089091020154610100900460ff1692915050565b60065460a060020a900460ff1681565b612dbe613971565b6007805483908110612dcc57fe5b90600052602060002090600802016004018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117405780601f1061171557610100808354040283529160200191611740565b60045433600160a060020a0390811691161480612e71575060055433600160a060020a039081169116145b1515612e7c57600080fd5b80600783815481101515612e8c57fe5b90600052602060002090600802016007019080516115dc929160200190613983565b60009081526020819052604090205430600160a060020a0390811691161490565b600090815260208190526040902054600160a060020a0390811691161490565b6000612ef9613a01565b6000612710612f06611494565b10612f1057600080fd5b610160604051908101604052808660ff1681526020016000151581526020018963ffffffff1681526020018763ffffffff1681526020018c8152602001602060405190810160405280600081525081526020018881526020016020604051908101604052806000815250815260200160206040519081016040528060008152508152602001602060405190810160405260008152815260200185905260078054919350600191808301612fc38382613a85565b600092835260209092208591600802018151815460ff191660ff91909116178155602082015181549015156101000261ff00199091161781556040820151815463ffffffff91909116620100000265ffffffff0000199091161781556060820151815463ffffffff9190911666010000000000000269ffffffff00000000000019909116178155608082015181600101908051613064929160200190613983565b5060a08201518160020190805161307f929160200190613983565b5060c08201518160030190805161309a929160200190613983565b5060e0820151816004019080516130b5929160200190613983565b50610100820151816005019080516130d1929160200190613983565b50610120820151816006019080516130ed929160200190613983565b5061014082015181600701908051613109929160200190613983565b50505003905063ffffffff8116811461312157600080fd5b807f9b2c63e473707556567cadc162b1c1e8ed0c0d2684032a847e7ed74cda7291da8c888d60405163ffffffff83166020820152600160a060020a038216604082015260608082528190810185818151815260200191508051906020019080838360005b8381101561319d578082015183820152602001613185565b50505050905090810190601f1680156131ca5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a260008181526003602052604081208a90556131f5908b83613231565b9a9950505050505050505050565b600090815260026020526040902054600160a060020a0391821691161490565b600160a060020a0316151590565b600160a060020a0382166000908152600160208190526040822080549091019055600780548390811061326057fe5b60009182526020808320600890920290910180549315156101000261ff00199094169390931790925582815290819052604090208054600160a060020a03808516600160a060020a0319909216919091179091558316156132f757600160a060020a03831660009081526001602090815260408083208054600019019055838352600290915290208054600160a060020a03191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1505050565b613354613a01565b6000612710613361611494565b1061336b57600080fd5b63ffffffff8b168b1461337d57600080fd5b610160604051908101604052808660ff1681526020016000151581526020018963ffffffff1681526020018763ffffffff1681526020018b81526020016020604051908101604052806000815250815260200188815260200160206040519081016040528060008152508152602001602060405190810160405280600081525081526020016020604051908101604052600081528152602001859052600780549193506001918083016134308382613a85565b600092835260209092208591600802018151815460ff191660ff91909116178155602082015181549015156101000261ff00199091161781556040820151815463ffffffff91909116620100000265ffffffff0000199091161781556060820151815463ffffffff9190911666010000000000000269ffffffff000000000000199091161781556080820151816001019080516134d1929160200190613983565b5060a0820151816002019080516134ec929160200190613983565b5060c082015181600301908051613507929160200190613983565b5060e082015181600401908051613522929160200190613983565b506101008201518160050190805161353e929160200190613983565b506101208201518160060190805161355a929160200190613983565b5061014082015181600701908051613576929160200190613983565b5050500360008181526003602090815260408083208d9055600160a060020a0387168352600191829052822080549091019055600780549293509091839081106135bc57fe5b60009182526020808320600890920290910180549315156101000261ff001990941693909317909255918252819052604090208054600160a060020a03909316600160a060020a031990931692909217909155505050505050505050565b613622613971565b61362a613971565b613632613971565b61363a613971565b613642613971565b61364a613971565b600080613656896137a4565b965089955086945084518651016040518059106136705750595b818152601f19601f83011681016020016040529050935083925060009150600090505b85518110156136ec578581815181106136a857fe5b016020015160f860020a900460f860020a028383806001019450815181106136cc57fe5b906020010190600160f860020a031916908160001a905350600101613693565b5060005b84518110156137495784818151811061370557fe5b016020015160f860020a900460f860020a0283838060010194508151811061372957fe5b906020010190600160f860020a031916908160001a9053506001016136f0565b509098975050505050505050565b60008083151561376a5760009150613786565b5082820282848281151561377a57fe5b041461378257fe5b8091505b5092915050565b600080828481151561379b57fe5b04949350505050565b6137ac613971565b8160006137b8826137cb565b90506137c381613829565b949350505050565b60008115156137fb57507f3000000000000000000000000000000000000000000000000000000000000000613824565b60008211156138245761010081049050600a820660300160f860020a0217600a820491506137fb565b919050565b613831613971565b613839613971565b6000806000613846613971565b60206040518059106138555750595b818152601f19601f83011681016020016040529050945060009350600092505b60208310156138e8576008830260020a870291507fff000000000000000000000000000000000000000000000000000000000000008216156138dd57818585815181106138be57fe5b906020010190600160f860020a031916908160001a9053506001909301925b600190920191613875565b836040518059106138f65750595b818152601f19601f830116810160200160405290509050600092505b838310156139675784838151811061392657fe5b016020015160f860020a900460f860020a0281848151811061394457fe5b906020010190600160f860020a031916908160001a905350600190920191613912565b9695505050505050565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106139c457805160ff19168380011785556139f1565b828001600101855582156139f1579182015b828111156139f15782518255916020019190600101906139d6565b506139fd929150613ab1565b5090565b6101606040519081016040908152600080835260208301819052908201819052606082015260808101613a32613971565b8152602001613a3f613971565b8152602001613a4c613971565b8152602001613a59613971565b8152602001613a66613971565b8152602001613a73613971565b8152602001613a80613971565b905290565b8154818355818115116115dc576008028160080283600052602060002091820191016115dc9190613acb565b61148191905b808211156139fd5760008155600101613ab7565b61148191905b808211156139fd57805469ffffffffffffffffffff191681556000613af96001830182613b56565b613b07600283016000613b56565b613b15600383016000613b56565b613b23600483016000613b56565b613b31600583016000613b56565b613b3f600683016000613b56565b613b4d600783016000613b56565b50600801613ad1565b50805460018160011615610100020316600290046000825580601f10613b7c5750611b73565b601f016020900490600052602060002090810190611b739190613ab15600a165627a7a723058201ac725bf589917ae019613eb109df68d343d3967e911d88e4d772933b1a019070029

Swarm Source

bzzr://1ac725bf589917ae019613eb109df68d343d3967e911d88e4d772933b1a01907

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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