ETH Price: $2,631.66 (+1.69%)

Contract

0xbdaeD67214641B7eDA3BF8D7431C3Ae5Fc46F466
 

Overview

ETH Balance

1 wei

Eth Value

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

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...215038892024-12-28 22:16:3541 days ago1735424195IN
CryptoAtoms: ATH Token
0 ETH0.000279836.016379
Set Approval For...214789802024-12-25 10:46:1145 days ago1735123571IN
CryptoAtoms: ATH Token
0 ETH0.00022774.89552256
Set Approval For...214727822024-12-24 13:59:5946 days ago1735048799IN
CryptoAtoms: ATH Token
0 ETH0.0005497911.82022397
Safe Transfer Fr...214365092024-12-19 12:16:4751 days ago1734610607IN
CryptoAtoms: ATH Token
0 ETH0.000741810.78310084
Safe Transfer Fr...213857442024-12-12 10:11:2358 days ago1733998283IN
CryptoAtoms: ATH Token
0 ETH0.0015908418.52384469
Safe Transfer Fr...213854802024-12-12 9:18:1158 days ago1733995091IN
CryptoAtoms: ATH Token
0 ETH0.001237714.30819439
Set Approval For...209005792024-10-05 16:38:11126 days ago1728146291IN
CryptoAtoms: ATH Token
0 ETH0.000301016.47153519
Set Approval For...208926692024-10-04 14:10:47127 days ago1728051047IN
CryptoAtoms: ATH Token
0 ETH0.0005132711.02943257
Set Approval For...208877482024-10-03 21:44:23127 days ago1727991863IN
CryptoAtoms: ATH Token
0 ETH0.000333757.1754388
Set Approval For...207667972024-09-17 0:36:11144 days ago1726533371IN
CryptoAtoms: ATH Token
0 ETH0.000052062.10908896
Set Approval For...206338382024-08-29 11:07:35163 days ago1724929655IN
CryptoAtoms: ATH Token
0 ETH0.000057371.23345044
Set Approval For...206310442024-08-29 1:43:59163 days ago1724895839IN
CryptoAtoms: ATH Token
0 ETH0.000067811.45796251
Set Approval For...205713062024-08-20 17:24:23172 days ago1724174663IN
CryptoAtoms: ATH Token
0 ETH0.000057972.35645703
Set Approval For...203981692024-07-27 13:25:23196 days ago1722086723IN
CryptoAtoms: ATH Token
0 ETH0.00013722.94975638
Set Approval For...203796252024-07-24 23:17:11198 days ago1721863031IN
CryptoAtoms: ATH Token
0 ETH0.000142733.06879142
Set Approval For...203787152024-07-24 20:13:47199 days ago1721852027IN
CryptoAtoms: ATH Token
0 ETH0.00021864.69266412
Set Approval For...203772982024-07-24 15:28:47199 days ago1721834927IN
CryptoAtoms: ATH Token
0 ETH0.0005216411.19770466
Set Approval For...201979942024-06-29 14:40:11224 days ago1719672011IN
CryptoAtoms: ATH Token
0 ETH0.000193834.16737578
Set Approval For...201043042024-06-16 12:18:23237 days ago1718540303IN
CryptoAtoms: ATH Token
0 ETH0.000170143.65805635
Set Approval For...201028942024-06-16 7:35:35237 days ago1718523335IN
CryptoAtoms: ATH Token
0 ETH0.000148573.19436892
Safe Transfer Fr...186235592023-11-21 23:56:59444 days ago1700611019IN
CryptoAtoms: ATH Token
0 ETH0.003647342.47517701
Set Approval For...184972982023-11-04 7:50:47462 days ago1699084247IN
CryptoAtoms: ATH Token
0 ETH0.0006164813.25403388
Set Approval For...183171952023-10-10 2:52:11487 days ago1696906331IN
CryptoAtoms: ATH Token
0 ETH0.000327047.03132611
Transfer From183058762023-10-08 12:50:47489 days ago1696769447IN
CryptoAtoms: ATH Token
0 ETH0.000564178.54466292
Transfer From183056852023-10-08 12:12:23489 days ago1696767143IN
CryptoAtoms: ATH Token
0 ETH0.000692237.87280602
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CryptoAtomsToken

Compiler Version
v0.4.24-nightly.2018.5.16+commit.7f965c86

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-01-03
*/

pragma solidity ^0.4.19;

contract ADM312 {

  address public COO;
  address public CTO;
  address public CFO;
  address private coreAddress;
  address public logicAddress;
  address public superAddress;

  modifier onlyAdmin() {
    require(msg.sender == COO || msg.sender == CTO || msg.sender == CFO);
    _;
  }
  
  modifier onlyContract() {
    require(msg.sender == coreAddress || msg.sender == logicAddress || msg.sender == superAddress);
    _;
  }
    
  modifier onlyContractAdmin() {
    require(msg.sender == coreAddress || msg.sender == logicAddress || msg.sender == superAddress || msg.sender == COO || msg.sender == CTO || msg.sender == CFO);
     _;
  }
  
  function transferAdmin(address _newAdminAddress1, address _newAdminAddress2) public onlyAdmin {
    if(msg.sender == COO)
    {
        CTO = _newAdminAddress1;
        CFO = _newAdminAddress2;
    }
    if(msg.sender == CTO)
    {
        COO = _newAdminAddress1;
        CFO = _newAdminAddress2;
    }
    if(msg.sender == CFO)
    {
        COO = _newAdminAddress1;
        CTO = _newAdminAddress2;
    }
  }
  
  function transferContract(address _newCoreAddress, address _newLogicAddress, address _newSuperAddress) external onlyAdmin {
    coreAddress  = _newCoreAddress;
    logicAddress = _newLogicAddress;
    superAddress = _newSuperAddress;
    SetCoreInterface(_newLogicAddress).setCoreContract(_newCoreAddress);
    SetCoreInterface(_newSuperAddress).setCoreContract(_newCoreAddress);
  }


}

contract ERC721 {
    
  event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
  event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

  function totalSupply() public view returns (uint256 total);
  function balanceOf(address _owner) public view returns (uint256 balance);
  function ownerOf(uint256 _tokenId) public view returns (address owner);
  function transfer(address _to, uint256 _tokenId) public;
  function approve(address _to, uint256 _tokenId) public;
  function takeOwnership(uint256 _tokenId) public;
  
}

contract SetCoreInterface {
   function setCoreContract(address _neWCoreAddress) external; 
}

contract CaData is ADM312, ERC721 {
    
    function CaData() public {
        COO = msg.sender;
        CTO = msg.sender;
        CFO = msg.sender;
        createCustomAtom(0,0,4,0,0,0,0);
    }
    
    function kill() external
	{
	    require(msg.sender == COO);
		selfdestruct(msg.sender);
	}
    
    function() public payable{}
    
    uint public randNonce  = 0;
    
    struct Atom 
    {
      uint64   dna;
      uint8    gen;
      uint8    lev;
      uint8    cool;
      uint32   sons;
      uint64   fath;
	  uint64   moth;
	  uint128  isRent;
	  uint128  isBuy;
	  uint32   isReady;
    }
    
    Atom[] public atoms;
    
    mapping (uint64  => bool) public dnaExist;
    mapping (address => bool) public bonusReceived;
    mapping (address => uint) public ownerAtomsCount;
    mapping (uint => address) public atomOwner;
    
    event NewWithdraw(address sender, uint balance);
    
    function createCustomAtom(uint64 _dna, uint8 _gen, uint8 _lev, uint8 _cool, uint128 _isRent, uint128 _isBuy, uint32 _isReady) public onlyAdmin {
        require(dnaExist[_dna]==false && _cool+_lev>=4);
        Atom memory newAtom = Atom(_dna, _gen, _lev, _cool, 0, 2**50, 2**50, _isRent, _isBuy, _isReady);
        uint id = atoms.push(newAtom) - 1;
        atomOwner[id] = msg.sender;
        ownerAtomsCount[msg.sender]++;
        dnaExist[_dna] = true;
    }
    
    function withdrawBalance() public payable onlyAdmin {
		NewWithdraw(msg.sender, address(this).balance);
        CFO.transfer(address(this).balance);
    }
        
    function incRandNonce() external onlyContract {
        randNonce++;
    }
    
    function setDnaExist(uint64 _dna, bool _newDnaLocking) external onlyContractAdmin {
        dnaExist[_dna] = _newDnaLocking;
    }
    
    function setBonusReceived(address _add, bool _newBonusLocking) external onlyContractAdmin {
        bonusReceived[_add] = _newBonusLocking;
    }
    
    function setOwnerAtomsCount(address _owner, uint _newCount) external onlyContract {
        ownerAtomsCount[_owner] = _newCount;
    }
    
    function setAtomOwner(uint _atomId, address _owner) external onlyContract {
        atomOwner[_atomId] = _owner;
    }
        
    function pushAtom(uint64 _dna, uint8 _gen, uint8 _lev, uint8 _cool, uint32 _sons, uint64 _fathId, uint64 _mothId, uint128 _isRent, uint128 _isBuy, uint32 _isReady) external onlyContract returns (uint id) {
        Atom memory newAtom = Atom(_dna, _gen, _lev, _cool, _sons, _fathId, _mothId, _isRent, _isBuy, _isReady);
        id = atoms.push(newAtom) -1;
    }
	
	function setAtomDna(uint _atomId, uint64 _dna) external onlyAdmin {
        atoms[_atomId].dna = _dna;
    }
	
	function setAtomGen(uint _atomId, uint8 _gen) external onlyAdmin {
        atoms[_atomId].gen = _gen;
    }
    
    function setAtomLev(uint _atomId, uint8 _lev) external onlyContract {
        atoms[_atomId].lev = _lev;
    }
    
    function setAtomCool(uint _atomId, uint8 _cool) external onlyContract {
        atoms[_atomId].cool = _cool;
    }
    
    function setAtomSons(uint _atomId, uint32 _sons) external onlyContract {
        atoms[_atomId].sons = _sons;
    }
    
    function setAtomFath(uint _atomId, uint64 _fath) external onlyContract {
        atoms[_atomId].fath = _fath;
    }
    
    function setAtomMoth(uint _atomId, uint64 _moth) external onlyContract {
        atoms[_atomId].moth = _moth;
    }
    
    function setAtomIsRent(uint _atomId, uint128 _isRent) external onlyContract {
        atoms[_atomId].isRent = _isRent;
    }
    
    function setAtomIsBuy(uint _atomId, uint128 _isBuy) external onlyContract {
        atoms[_atomId].isBuy = _isBuy;
    }
    
    function setAtomIsReady(uint _atomId, uint32 _isReady) external onlyContractAdmin {
        atoms[_atomId].isReady = _isReady;
    }
    
    //ERC721
    
    mapping (uint => address) tokenApprovals;
    
    function totalSupply() public view returns (uint256 total){
  	    return atoms.length;
  	}
  	
  	function balanceOf(address _owner) public view returns (uint256 balance) {
        return ownerAtomsCount[_owner];
    }
    
    function ownerOf(uint256 _tokenId) public view returns (address owner) {
        return atomOwner[_tokenId];
    }
      
    function _transfer(address _from, address _to, uint256 _tokenId) private {
        atoms[_tokenId].isBuy  = 0;
        atoms[_tokenId].isRent = 0;
        ownerAtomsCount[_to]++;
        ownerAtomsCount[_from]--;
        atomOwner[_tokenId] = _to;
        Transfer(_from, _to, _tokenId);
    }
  
    function transfer(address _to, uint256 _tokenId) public {
        require(msg.sender == atomOwner[_tokenId]);
        _transfer(msg.sender, _to, _tokenId);
    }
    
    function approve(address _to, uint256 _tokenId) public {
        require(msg.sender == atomOwner[_tokenId]);
        tokenApprovals[_tokenId] = _to;
        Approval(msg.sender, _to, _tokenId);
    }
    
    function takeOwnership(uint256 _tokenId) public {
        require(tokenApprovals[_tokenId] == msg.sender);
        _transfer(ownerOf(_tokenId), msg.sender, _tokenId);
    }
    
}

contract Ownable {
    
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @return the address of the owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     * @notice Renouncing to ownership will leave the contract without an owner.
     * It will not be possible to call the functions with the `onlyOwner`
     * modifier anymore.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface ERC165 {
    function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

interface ERC721TokenReceiver {
    function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) external returns(bytes4);
}

interface ERC721Metadata {
    function name() external view returns (string _name);
    function symbol() external view returns (string _symbol);
    function tokenURI(uint256 _tokenId) external view returns (string);
}

interface ERC721Enumerable {
    function totalSupply() external view returns (uint256);
    function tokenByIndex(uint256 _index) external view returns (uint256);
    function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256);
}
          
contract CryptoAtomsToken is Ownable {
    
    address public CaDataAddress = 0x9b3554E6FC4F81531F6D43b611258bd1058ef6D5;
    CaData public CaDataContract = CaData(CaDataAddress);

    function kill() external
	{
	    require(msg.sender == CaDataContract.COO());
		selfdestruct(msg.sender);
	}
    
    function() public payable{}
    
    function withdrawBalance() public payable {
        require(msg.sender == CaDataContract.COO() || msg.sender == CaDataContract.CTO() || msg.sender == CaDataContract.CFO());
        CaDataContract.CFO().transfer(address(this).balance);
    }
    
    mapping (address => bool) transferEmittables;
    
    function setTransferEmittables(address _addr, bool _bool) external {
        require(msg.sender == CaDataContract.COO() || msg.sender == CaDataContract.CTO() || msg.sender == CaDataContract.CFO());
        transferEmittables[_addr] = _bool;
    }
    
    function emitTransfer(address _from, address _to, uint256 _tokenId) external{
        require(transferEmittables[msg.sender]);
        Transfer(_from, _to, _tokenId);
    }
    
    //ERC721
    
        event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
        event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
        event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
    
        mapping (uint => address) tokenApprovals;
        mapping (uint => address) tokenOperators;
        mapping (address => mapping (address => bool)) ownerOperators;
    
        function _transfer(address _from, address _to, uint256 _tokenId) private {
            CaDataContract.setAtomIsBuy(_tokenId,0);
            CaDataContract.setAtomIsRent(_tokenId,0);
            CaDataContract.setOwnerAtomsCount(_to,CaDataContract.ownerAtomsCount(_to)+1);
            CaDataContract.setOwnerAtomsCount(_from,CaDataContract.ownerAtomsCount(_from)-1);
            CaDataContract.setAtomOwner(_tokenId,_to);
            Transfer(_from, _to, _tokenId);
        }
        
        function _isContract(address _addr) private returns (bool check) {
            uint size;
            assembly { size := extcodesize(_addr) }
            return size > 0;
        }
        
      	function balanceOf(address _owner) external view returns (uint256 balance) {
            return CaDataContract.balanceOf(_owner);
        }
    
        function ownerOf(uint256 _tokenId) external view returns (address owner) {
            return CaDataContract.ownerOf(_tokenId);
        }
        
        /// @notice Transfers the ownership of an NFT from one address to another address
        /// @dev Throws unless `msg.sender` is the current owner, an authorized
        ///  operator, or the approved address for this NFT. Throws if `_from` is
        ///  not the current owner. Throws if `_to` is the zero address. Throws if
        ///  `_tokenId` is not a valid NFT. When transfer is complete, this function
        ///  checks if `_to` is a smart contract (code size > 0). If so, it calls
        ///  `onERC721Received` on `_to` and throws if the return value is not
        ///  `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
        /// @param _from The current owner of the NFT
        /// @param _to The new owner
        /// @param _tokenId The NFT to transfer
        /// @param _data Additional data with no specified format, sent in call to `_to`
        function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) external payable{
            require(msg.sender == CaDataContract.ownerOf(_tokenId) || ownerOperators[CaDataContract.atomOwner(_tokenId)][msg.sender] == true || msg.sender == tokenApprovals[_tokenId]);
            require(_from == CaDataContract.ownerOf(_tokenId) && _to != 0x0);
            require(_tokenId < totalSupply());
            _transfer(_from, _to, _tokenId);
            if(_isContract(_to))
            {
                require(ERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data) == ERC721_RECEIVED);
            }
        }
    
        /// @notice Transfers the ownership of an NFT from one address to another address
        /// @dev This works identically to the other function with an extra data parameter,
        ///  except this function just sets data to ""
        /// @param _from The current owner of the NFT
        /// @param _to The new owner
        /// @param _tokenId The NFT to transfer
        function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable{
            require(msg.sender == CaDataContract.ownerOf(_tokenId) || ownerOperators[CaDataContract.atomOwner(_tokenId)][msg.sender] == true || msg.sender == tokenApprovals[_tokenId]);
            require(_from == CaDataContract.ownerOf(_tokenId) && _to != 0x0);
            require(_tokenId < totalSupply());
            _transfer(_from, _to, _tokenId);
            if(_isContract(_to))
            {
                require(ERC721TokenReceiver(_to).onERC721Received(msg.sender, _from, _tokenId, "") == ERC721_RECEIVED);
            }
        }
        
        
        /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
        ///  TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
        ///  THEY MAY BE PERMANENTLY LOST
        /// @dev Throws unless `msg.sender` is the current owner, an authorized
        ///  operator, or the approved address for this NFT. Throws if `_from` is
        ///  not the current owner. Throws if `_to` is the zero address. Throws if
        ///  `_tokenId` is not a valid NFT.
        /// @param _from The current owner of the NFT
        /// @param _to The new owner
        /// @param _tokenId The NFT to transfer
        function transferFrom(address _from, address _to, uint256 _tokenId) external payable{
            require(msg.sender == CaDataContract.ownerOf(_tokenId) || ownerOperators[CaDataContract.atomOwner(_tokenId)][msg.sender] == true || msg.sender == tokenApprovals[_tokenId]);
            require(_from == CaDataContract.ownerOf(_tokenId) && _to != 0x0);
            require(_tokenId < totalSupply());
            _transfer(_from, _to, _tokenId);
        }
        
        
        /// @notice Set or reaffirm the approved address for an NFT
        /// @dev The zero address indicates there is no approved address.
        /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
        ///  operator of the current owner.
        /// @param _approved The new approved NFT controller
        /// @param _tokenId The NFT to approve
        function approve(address _approved, uint256 _tokenId) external payable {
            require(msg.sender == CaDataContract.atomOwner(_tokenId) || ownerOperators[CaDataContract.atomOwner(_tokenId)][msg.sender]);
            tokenApprovals[_tokenId] = _approved;
            Approval(CaDataContract.atomOwner(_tokenId), _approved, _tokenId);
        }
        
        /// @notice Enable or disable approval for a third party ("operator") to manage
        ///  all of `msg.sender`'s assets.
        /// @dev Emits the ApprovalForAll event. The contract MUST allow
        ///  multiple operators per owner.
        /// @param _operator Address to add to the set of authorized operators.
        /// @param _approved True if the operator is approved, false to revoke approval
        function setApprovalForAll(address _operator, bool _approved) external {
            ownerOperators[msg.sender][_operator] = _approved;
            ApprovalForAll(msg.sender, _operator, _approved);
        }
    
        /// @notice Get the approved address for a single NFT
        /// @dev Throws if `_tokenId` is not a valid NFT
        /// @param _tokenId The NFT to find the approved address for
        /// @return The approved address for this NFT, or the zero address if there is none
        function getApproved(uint256 _tokenId) external view returns (address) {
            return tokenApprovals[_tokenId];
        }
    
        /// @notice Query if an address is an authorized operator for another address
        /// @param _owner The address that owns the NFTs
        /// @param _operator The address that acts on behalf of the owner
        /// @return True if `_operator` is an approved operator for `_owner`, false otherwise
        function isApprovedForAll(address _owner, address _operator) external view returns (bool) {
            return ownerOperators[_owner][_operator];
        }
    
    //ERC165

        bytes4 constant Sign_ERC165 =
            bytes4(keccak256('supportsInterface(bytes4)'));
        
        bytes4 constant Sign_ERC721 =
            bytes4(keccak256('balanceOf(address)')) ^
            bytes4(keccak256('ownerOf(uint256)')) ^
            bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) ^
            bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^
            bytes4(keccak256('transferFrom(address,address,uint256)')) ^
            bytes4(keccak256('approve(address,uint256)')) ^
            bytes4(keccak256('setApprovalForAll(address,bool)')) ^
            bytes4(keccak256('getApproved(uint256)')) ^
            bytes4(keccak256('isApprovedForAll(address,address)'));
            
        function supportsInterface(bytes4 interfaceID) external view returns (bool)
        {
            return ((interfaceID == Sign_ERC165) || (interfaceID == Sign_ERC721));
        }
    
    //ERC721TokenReceiver
    
        /// @notice Handle the receipt of an NFT
        /// @dev The ERC721 smart contract calls this function on the
        /// recipient after a `transfer`. This function MAY throw to revert and reject the transfer. Return
        /// of other than the magic value MUST result in the transaction being reverted.
        /// @notice The contract address is always the message sender. 
        /// @param _operator The address which called `safeTransferFrom` function
        /// @param _from The address which previously owned the token
        /// @param _tokenId The NFT identifier which is being transferred
        /// @param _data Additional data with no specified format
        /// @return `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`
        /// unless throwing 
        
        bytes4 constant ERC721_RECEIVED = bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"));
        
        function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) external returns(bytes4){
            return ERC721_RECEIVED;
        }
    
    //ERC721MetaData
    
        string baseUri = "https://www.cryptoatoms.org/cres/uri/";
    
        function name() external view returns (string _name) {
            return "Atom";
        }
    
        function symbol() external view returns (string _symbol){
            return "ATH";
        }
    
        /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
        /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
        ///  3986. The URI may point to a JSON file that conforms to the "ERC721
        ///  Metadata JSON Schema".
        function tokenURI(uint256 _tokenId) external view returns (string){
            require(_tokenId < totalSupply());
            uint256 uid;
            bytes32 bid;
            uid = _tokenId;
            if (uid == 0) 
            {
                bid = '0';
            }
            else 
            {
                while (uid > 0) 
                {
                    bid = bytes32(uint(bid) / (2 ** 8));
                    bid |= bytes32(((uid % 10) + 48) * 2 ** (8 * 31));
                    uid /= 10;
                }
            }
            return string(abi.encodePacked(baseUri, bid));
        }
        
        function setBaseUri (string _newBaseUri) external {
            require(msg.sender == CaDataContract.COO() || msg.sender == CaDataContract.CTO() || msg.sender == CaDataContract.CFO());
            baseUri = _newBaseUri;
        }
    
    //ERC721Enumerable
        
        function totalSupply() public view returns (uint256 total){
      	    return CaDataContract.totalSupply();
      	}
      	   
      	/// @notice Enumerate valid NFTs
        /// @dev Throws if `_index` >= `totalSupply()`.
        /// @param _index A counter less than `totalSupply()`
        /// @return The token identifier for the `_index`th NFT,
        ///  (sort order not specified)
        function tokenByIndex(uint256 _index) external view returns (uint256){
            require(_index < totalSupply());
            return _index;
        }
    
        /// @notice Enumerate NFTs assigned to an owner
        /// @dev Throws if `_index` >= `balanceOf(_owner)` or if
        ///  `_owner` is the zero address, representing invalid NFTs.
        /// @param _owner An address where we are interested in NFTs owned by them
        /// @param _index A counter less than `balanceOf(_owner)`
        /// @return The token identifier for the `_index`th NFT assigned to `_owner`,
        ///   (sort order not specified)
        function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256){
            require(_index < CaDataContract.balanceOf(_owner));
            uint64 counter = 0;
            for (uint64 i = 0; i < CaDataContract.totalSupply(); i++)
            {
                if (CaDataContract.atomOwner(i) == _owner) {
                    if(counter == _index)
                    {
                        uint256 result = i;
                        i = uint64(CaDataContract.totalSupply());
                    }
                    else
                    {
                        counter++;
                    }
                }
            }
            return result;
        }
    
    
    //ERC20
        
        function decimals() external view returns (uint8 _decimals){
            return 0;
        }
        
        function implementsERC721() public pure returns (bool){
            return true;
        }
        
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_approved","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"},{"name":"_from","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"onERC721Received","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"emitTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"_decimals","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_bool","type":"bool"}],"name":"setTransferEmittables","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CaDataContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CaDataAddress","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":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newBaseUri","type":"string"}],"name":"setBaseUri","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operator","type":"address"},{"name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":true,"name":"_tokenId","type":"uint256"}],"name":"Transfer","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"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_operator","type":"address"},{"indexed":false,"name":"_approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60018054600160a060020a0319908116739b3554e6fc4f81531f6d43b611258bd1058ef6d5179182905560028054909116600160a060020a039290921691909117905560e0604052602560808190527f68747470733a2f2f7777772e63727970746f61746f6d732e6f72672f6372657360a09081527f2f7572692f00000000000000000000000000000000000000000000000000000060c052620000a79160079190620000f7565b5060008054600160a060020a0319163317808255604051600160a060020a039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36200019c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b6200019991905b8082111562000178576000815560010162000183565b90565b61272480620001ac6000396000f3006080604052600436106101665763ffffffff60e060020a60003504166301ffc9a7811461016857806306fdde031461019e578063081812fc14610228578063095ea7b31461025c5780631051db3414610273578063150b7a021461028857806318160ddd146102de57806323b872dd1461030557806323de6651146103225780632f745c591461034c578063313ce5671461037057806341c0e1b51461039b57806342842e0e146103b05780634f6ccce7146103cd57806354cc702d146103e55780635fd8c7101461040b5780636352211e146104135780636432e3cd1461042b578063703f5e8a1461044057806370a0823114610455578063715018a6146104765780638da5cb5b1461048b5780638f32d59b146104a057806395d89b41146104b5578063a0bcfc7f146104ca578063a22cb465146104ea578063b88d4fde14610510578063c87b56dd1461053c578063e985e9c514610554578063f2fde38b1461057b575b005b34801561017457600080fd5b5061018a600160e060020a03196004351661059c565b604080519115158252519081900360200190f35b3480156101aa57600080fd5b506101b3610823565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ed5781810151838201526020016101d5565b50505050905090810190601f16801561021a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023457600080fd5b5061024060043561085b565b60408051600160a060020a039092168252519081900360200190f35b610166600160a060020a0360043516602435610876565b34801561027f57600080fd5b5061018a610aa4565b34801561029457600080fd5b506102c1600160a060020a0360048035821691602480359091169160443591606435908101910135610aa9565b60408051600160e060020a03199092168252519081900360200190f35b3480156102ea57600080fd5b506102f3610af8565b60408051918252519081900360200190f35b610166600160a060020a0360043581169060243516604435610b88565b34801561032e57600080fd5b50610166600160a060020a0360043581169060243516604435610dc1565b34801561035857600080fd5b506102f3600160a060020a0360043516602435610e25565b34801561037c57600080fd5b506103856110c5565b6040805160ff9092168252519081900360200190f35b3480156103a757600080fd5b506101666110ca565b610166600160a060020a0360043581169060243516604435611160565b3480156103d957600080fd5b506102f36004356114b5565b3480156103f157600080fd5b50610166600160a060020a036004351660243515156114ce565b6101666116b0565b34801561041f57600080fd5b50610240600435611920565b34801561043757600080fd5b506102406119a2565b34801561044c57600080fd5b506102406119b1565b34801561046157600080fd5b506102f3600160a060020a03600435166119c0565b34801561048257600080fd5b50610166611a2b565b34801561049757600080fd5b50610240611a95565b3480156104ac57600080fd5b5061018a611aa4565b3480156104c157600080fd5b506101b3611ab5565b3480156104d657600080fd5b506101666004803560248101910135611aec565b3480156104f657600080fd5b50610166600160a060020a03600435166024351515611caf565b610166600160a060020a0360048035821691602480359091169160443591606435908101910135611d1d565b34801561054857600080fd5b506101b3600435612091565b34801561056057600080fd5b5061018a600160a060020a036004358116906024351661219f565b34801561058757600080fd5b50610166600160a060020a03600435166121cd565b604080517f737570706f727473496e7465726661636528627974657334290000000000000081529051908190036019019020600090600160e060020a03198381169116148061081d5750604080517f6973417070726f766564466f72416c6c28616464726573732c6164647265737381527f290000000000000000000000000000000000000000000000000000000000000060208083019190915282519182900360210182207f676574417070726f7665642875696e7432353629000000000000000000000000835283519283900360140183207f736574417070726f76616c466f72416c6c28616464726573732c626f6f6c29008452845193849003601f0184207f617070726f766528616464726573732c75696e74323536290000000000000000855285519485900360180185207f7472616e7366657246726f6d28616464726573732c616464726573732c75696e86527f74323536290000000000000000000000000000000000000000000000000000008686015286519586900360250186207f736166655472616e7366657246726f6d28616464726573732c616464726573738088527f2c75696e743235362900000000000000000000000000000000000000000000008888015288519788900360290188209088526000805160206126d983398151915296880196909652875196879003602f0187207f6f776e65724f662875696e743235362900000000000000000000000000000000885288519788900360100188207f62616c616e63654f6628616464726573732900000000000000000000000000008952985197889003601201909720600160e060020a03198b8116919099189097189095189094189093189092189091181891909116145b92915050565b60408051808201909152600481527f41746f6d0000000000000000000000000000000000000000000000000000000060208201525b90565b600090815260046020526040902054600160a060020a031690565b6002546040805160e060020a635b92292f028152600481018490529051600160a060020a0390921691635b92292f916024808201926020929091908290030181600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506040513d60208110156108f157600080fd5b5051600160a060020a03163314806109b157506002546040805160e060020a635b92292f028152600481018490529051600692600092600160a060020a0390911691635b92292f9160248082019260209290919082900301818787803b15801561095a57600080fd5b505af115801561096e573d6000803e3d6000fd5b505050506040513d602081101561098457600080fd5b5051600160a060020a031681526020818101929092526040908101600090812033825290925290205460ff165b15156109bc57600080fd5b6000818152600460208181526040808420805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03888116918217909255600254835160e060020a635b92292f0281529586018890529251879691959390921693635b92292f936024808201949293918390030190829087803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b505050506040513d6020811015610a6957600080fd5b5051604051600160a060020a03909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590600090a45050565b600190565b604080517f6f6e455243373231526563656976656428616464726573732c6164647265737381526000805160206126d98339815191526020820152905190819003602f01902095945050505050565b600254604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a0316916318160ddd91600480830192602092919082900301818787803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050506040513d6020811015610b8157600080fd5b5051905090565b6002546040805160e160020a6331a9108f028152600481018490529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b158015610bd957600080fd5b505af1158015610bed573d6000803e3d6000fd5b505050506040513d6020811015610c0357600080fd5b5051600160a060020a0316331480610cc857506002546040805160e060020a635b92292f028152600481018490529051600692600092600160a060020a0390911691635b92292f9160248082019260209290919082900301818787803b158015610c6c57600080fd5b505af1158015610c80573d6000803e3d6000fd5b505050506040513d6020811015610c9657600080fd5b5051600160a060020a031681526020818101929092526040908101600090812033825290925290205460ff1615156001145b80610ce95750600081815260046020526040902054600160a060020a031633145b1515610cf457600080fd5b6002546040805160e160020a6331a9108f028152600481018490529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b158015610d4557600080fd5b505af1158015610d59573d6000803e3d6000fd5b505050506040513d6020811015610d6f57600080fd5b5051600160a060020a038481169116148015610d935750600160a060020a03821615155b1515610d9e57600080fd5b610da6610af8565b8110610db157600080fd5b610dbc8383836121e9565b505050565b3360009081526003602052604090205460ff161515610ddf57600080fd5b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152915160009384938493849391909216916370a0823191602480830192602092919082900301818787803b158015610e9557600080fd5b505af1158015610ea9573d6000803e3d6000fd5b505050506040513d6020811015610ebf57600080fd5b50518510610ecc57600080fd5b60009250600091505b600260009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050506040513d6020811015610f5257600080fd5b505167ffffffffffffffff831610156110bc576002546040805160e060020a635b92292f02815267ffffffffffffffff851660048201529051600160a060020a03808a16931691635b92292f9160248083019260209291908290030181600087803b158015610fc057600080fd5b505af1158015610fd4573d6000803e3d6000fd5b505050506040513d6020811015610fea57600080fd5b5051600160a060020a031614156110b157848367ffffffffffffffff1614156110aa5750600254604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905167ffffffffffffffff841692600160a060020a0316916318160ddd9160048083019260209291908290030181600087803b15801561107757600080fd5b505af115801561108b573d6000803e3d6000fd5b505050506040513d60208110156110a157600080fd5b505191506110b1565b6001909201915b600190910190610ed5565b95945050505050565b600090565b600260009054906101000a9004600160a060020a0316600160a060020a031663e1b27e6b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b505050506040513d602081101561114757600080fd5b5051600160a060020a0316331461115d57600080fd5b33ff5b6002546040805160e160020a6331a9108f028152600481018490529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b1580156111b157600080fd5b505af11580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b5051600160a060020a03163314806112a057506002546040805160e060020a635b92292f028152600481018490529051600692600092600160a060020a0390911691635b92292f9160248082019260209290919082900301818787803b15801561124457600080fd5b505af1158015611258573d6000803e3d6000fd5b505050506040513d602081101561126e57600080fd5b5051600160a060020a031681526020818101929092526040908101600090812033825290925290205460ff1615156001145b806112c15750600081815260046020526040902054600160a060020a031633145b15156112cc57600080fd5b6002546040805160e160020a6331a9108f028152600481018490529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b15801561131d57600080fd5b505af1158015611331573d6000803e3d6000fd5b505050506040513d602081101561134757600080fd5b5051600160a060020a03848116911614801561136b5750600160a060020a03821615155b151561137657600080fd5b61137e610af8565b811061138957600080fd5b6113948383836121e9565b61139d826125c5565b15610dbc57604080517f6f6e455243373231526563656976656428616464726573732c6164647265737381526000805160206126d9833981519152602080830191909152825191829003602f0182207f150b7a02000000000000000000000000000000000000000000000000000000008352336004840152600160a060020a03878116602485015260448401869052608060648501526000608485018190529451600160e060020a0319909216949087169363150b7a029360c480830194919391928390030190829087803b15801561147557600080fd5b505af1158015611489573d6000803e3d6000fd5b505050506040513d602081101561149f57600080fd5b5051600160e060020a03191614610dbc57600080fd5b60006114bf610af8565b82106114ca57600080fd5b5090565b600260009054906101000a9004600160a060020a0316600160a060020a031663e1b27e6b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561152157600080fd5b505af1158015611535573d6000803e3d6000fd5b505050506040513d602081101561154b57600080fd5b5051600160a060020a03163314806115e95750600260009054906101000a9004600160a060020a0316600160a060020a0316633d01bdec6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156115b157600080fd5b505af11580156115c5573d6000803e3d6000fd5b505050506040513d60208110156115db57600080fd5b5051600160a060020a031633145b8061167a5750600260009054906101000a9004600160a060020a0316600160a060020a03166330d500bf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b505050506040513d602081101561166c57600080fd5b5051600160a060020a031633145b151561168557600080fd5b600160a060020a03919091166000908152600360205260409020805460ff1916911515919091179055565b600260009054906101000a9004600160a060020a0316600160a060020a031663e1b27e6b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561170357600080fd5b505af1158015611717573d6000803e3d6000fd5b505050506040513d602081101561172d57600080fd5b5051600160a060020a03163314806117cb5750600260009054906101000a9004600160a060020a0316600160a060020a0316633d01bdec6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561179357600080fd5b505af11580156117a7573d6000803e3d6000fd5b505050506040513d60208110156117bd57600080fd5b5051600160a060020a031633145b8061185c5750600260009054906101000a9004600160a060020a0316600160a060020a03166330d500bf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561182457600080fd5b505af1158015611838573d6000803e3d6000fd5b505050506040513d602081101561184e57600080fd5b5051600160a060020a031633145b151561186757600080fd5b600260009054906101000a9004600160a060020a0316600160a060020a03166330d500bf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156118ba57600080fd5b505af11580156118ce573d6000803e3d6000fd5b505050506040513d60208110156118e457600080fd5b5051604051600160a060020a0390911690303180156108fc02916000818181858888f1935050505015801561191d573d6000803e3d6000fd5b50565b6002546040805160e160020a6331a9108f028152600481018490529051600092600160a060020a031691636352211e91602480830192602092919082900301818787803b15801561197057600080fd5b505af1158015611984573d6000803e3d6000fd5b505050506040513d602081101561199a57600080fd5b505192915050565b600254600160a060020a031681565b600154600160a060020a031681565b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152915160009392909216916370a082319160248082019260209290919082900301818787803b15801561197057600080fd5b611a33611aa4565b1515611a3e57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b600054600160a060020a0316331490565b60408051808201909152600381527f4154480000000000000000000000000000000000000000000000000000000000602082015290565b600260009054906101000a9004600160a060020a0316600160a060020a031663e1b27e6b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611b3f57600080fd5b505af1158015611b53573d6000803e3d6000fd5b505050506040513d6020811015611b6957600080fd5b5051600160a060020a0316331480611c075750600260009054906101000a9004600160a060020a0316600160a060020a0316633d01bdec6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611bcf57600080fd5b505af1158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5051600160a060020a031633145b80611c985750600260009054906101000a9004600160a060020a0316600160a060020a03166330d500bf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611c6057600080fd5b505af1158015611c74573d6000803e3d6000fd5b505050506040513d6020811015611c8a57600080fd5b5051600160a060020a031633145b1515611ca357600080fd5b610dbc6007838361264a565b336000818152600660209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6002546040805160e160020a6331a9108f028152600481018690529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b158015611d6e57600080fd5b505af1158015611d82573d6000803e3d6000fd5b505050506040513d6020811015611d9857600080fd5b5051600160a060020a0316331480611e5d57506002546040805160e060020a635b92292f028152600481018690529051600692600092600160a060020a0390911691635b92292f9160248082019260209290919082900301818787803b158015611e0157600080fd5b505af1158015611e15573d6000803e3d6000fd5b505050506040513d6020811015611e2b57600080fd5b5051600160a060020a031681526020818101929092526040908101600090812033825290925290205460ff1615156001145b80611e7e5750600083815260046020526040902054600160a060020a031633145b1515611e8957600080fd5b6002546040805160e160020a6331a9108f028152600481018690529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b505050506040513d6020811015611f0457600080fd5b5051600160a060020a038681169116148015611f285750600160a060020a03841615155b1515611f3357600080fd5b611f3b610af8565b8310611f4657600080fd5b611f518585856121e9565b611f5a846125c5565b1561208a57604080517f6f6e455243373231526563656976656428616464726573732c6164647265737381526000805160206126d98339815191526020820152905190819003602f0181207f150b7a020000000000000000000000000000000000000000000000000000000082523360048301818152600160a060020a0389811660248601526044850188905260806064860190815260848601879052600160e060020a0319909416949089169363150b7a0293928b928a928a928a9290919060a40184848082843782019150509650505050505050602060405180830381600087803b15801561204a57600080fd5b505af115801561205e573d6000803e3d6000fd5b505050506040513d602081101561207457600080fd5b5051600160e060020a0319161461208a57600080fd5b5050505050565b606060008061209e610af8565b84106120a957600080fd5b8391508115156120da57507f300000000000000000000000000000000000000000000000000000000000000061211f565b600082111561211f5761010081049050600a82066030017f01000000000000000000000000000000000000000000000000000000000000000217600a820491506120da565b60078160405160200180838054600181600116156101000203166002900480156121805780601f1061215e576101008083540402835291820191612180565b820191906000526020600020905b81548152906001019060200180831161216c575b5050918252506040805180830381526020909201905295945050505050565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6121d5611aa4565b15156121e057600080fd5b61191d816125cd565b600254604080517f41354590000000000000000000000000000000000000000000000000000000008152600481018490526000602482018190529151600160a060020a039093169263413545909260448084019391929182900301818387803b15801561225557600080fd5b505af1158015612269573d6000803e3d6000fd5b5050600254604080517ff630a468000000000000000000000000000000000000000000000000000000008152600481018690526000602482018190529151600160a060020a03909316945063f630a46893506044808201939182900301818387803b1580156122d757600080fd5b505af11580156122eb573d6000803e3d6000fd5b5050600254604080517fefbd63a9000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301529151919092169350631cf91bf292508591849163efbd63a9916024808201926020929091908290030181600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b505050506040513d602081101561238c57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a0390931660048401526001909101602483015251604480830192600092919082900301818387803b1580156123dc57600080fd5b505af11580156123f0573d6000803e3d6000fd5b5050600254604080517fefbd63a9000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301529151919092169350631cf91bf292508691600191859163efbd63a99160248083019260209291908290030181600087803b15801561246957600080fd5b505af115801561247d573d6000803e3d6000fd5b505050506040513d602081101561249357600080fd5b50516040805160e060020a63ffffffff8716028152600160a060020a039094166004850152919003602483015251604480830192600092919082900301818387803b1580156124e157600080fd5b505af11580156124f5573d6000803e3d6000fd5b5050600254604080517f35d1f86900000000000000000000000000000000000000000000000000000000815260048101869052600160a060020a03878116602483015291519190921693506335d1f8699250604480830192600092919082900301818387803b15801561256757600080fd5b505af115801561257b573d6000803e3d6000fd5b505050508082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000903b1190565b600160a060020a03811615156125e257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061268b5782800160ff198235161785556126b8565b828001600101855582156126b8579182015b828111156126b857823582559160200191906001019061269d565b506114ca926108589250905b808211156114ca57600081556001016126c456002c75696e743235362c6279746573290000000000000000000000000000000000a165627a7a72305820008a0d11f9b4dbf810ac043abccc430755c7a3f30dfe4b519b4ac974d1fbc7aa0029

Deployed Bytecode

0x6080604052600436106101665763ffffffff60e060020a60003504166301ffc9a7811461016857806306fdde031461019e578063081812fc14610228578063095ea7b31461025c5780631051db3414610273578063150b7a021461028857806318160ddd146102de57806323b872dd1461030557806323de6651146103225780632f745c591461034c578063313ce5671461037057806341c0e1b51461039b57806342842e0e146103b05780634f6ccce7146103cd57806354cc702d146103e55780635fd8c7101461040b5780636352211e146104135780636432e3cd1461042b578063703f5e8a1461044057806370a0823114610455578063715018a6146104765780638da5cb5b1461048b5780638f32d59b146104a057806395d89b41146104b5578063a0bcfc7f146104ca578063a22cb465146104ea578063b88d4fde14610510578063c87b56dd1461053c578063e985e9c514610554578063f2fde38b1461057b575b005b34801561017457600080fd5b5061018a600160e060020a03196004351661059c565b604080519115158252519081900360200190f35b3480156101aa57600080fd5b506101b3610823565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ed5781810151838201526020016101d5565b50505050905090810190601f16801561021a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023457600080fd5b5061024060043561085b565b60408051600160a060020a039092168252519081900360200190f35b610166600160a060020a0360043516602435610876565b34801561027f57600080fd5b5061018a610aa4565b34801561029457600080fd5b506102c1600160a060020a0360048035821691602480359091169160443591606435908101910135610aa9565b60408051600160e060020a03199092168252519081900360200190f35b3480156102ea57600080fd5b506102f3610af8565b60408051918252519081900360200190f35b610166600160a060020a0360043581169060243516604435610b88565b34801561032e57600080fd5b50610166600160a060020a0360043581169060243516604435610dc1565b34801561035857600080fd5b506102f3600160a060020a0360043516602435610e25565b34801561037c57600080fd5b506103856110c5565b6040805160ff9092168252519081900360200190f35b3480156103a757600080fd5b506101666110ca565b610166600160a060020a0360043581169060243516604435611160565b3480156103d957600080fd5b506102f36004356114b5565b3480156103f157600080fd5b50610166600160a060020a036004351660243515156114ce565b6101666116b0565b34801561041f57600080fd5b50610240600435611920565b34801561043757600080fd5b506102406119a2565b34801561044c57600080fd5b506102406119b1565b34801561046157600080fd5b506102f3600160a060020a03600435166119c0565b34801561048257600080fd5b50610166611a2b565b34801561049757600080fd5b50610240611a95565b3480156104ac57600080fd5b5061018a611aa4565b3480156104c157600080fd5b506101b3611ab5565b3480156104d657600080fd5b506101666004803560248101910135611aec565b3480156104f657600080fd5b50610166600160a060020a03600435166024351515611caf565b610166600160a060020a0360048035821691602480359091169160443591606435908101910135611d1d565b34801561054857600080fd5b506101b3600435612091565b34801561056057600080fd5b5061018a600160a060020a036004358116906024351661219f565b34801561058757600080fd5b50610166600160a060020a03600435166121cd565b604080517f737570706f727473496e7465726661636528627974657334290000000000000081529051908190036019019020600090600160e060020a03198381169116148061081d5750604080517f6973417070726f766564466f72416c6c28616464726573732c6164647265737381527f290000000000000000000000000000000000000000000000000000000000000060208083019190915282519182900360210182207f676574417070726f7665642875696e7432353629000000000000000000000000835283519283900360140183207f736574417070726f76616c466f72416c6c28616464726573732c626f6f6c29008452845193849003601f0184207f617070726f766528616464726573732c75696e74323536290000000000000000855285519485900360180185207f7472616e7366657246726f6d28616464726573732c616464726573732c75696e86527f74323536290000000000000000000000000000000000000000000000000000008686015286519586900360250186207f736166655472616e7366657246726f6d28616464726573732c616464726573738088527f2c75696e743235362900000000000000000000000000000000000000000000008888015288519788900360290188209088526000805160206126d983398151915296880196909652875196879003602f0187207f6f776e65724f662875696e743235362900000000000000000000000000000000885288519788900360100188207f62616c616e63654f6628616464726573732900000000000000000000000000008952985197889003601201909720600160e060020a03198b8116919099189097189095189094189093189092189091181891909116145b92915050565b60408051808201909152600481527f41746f6d0000000000000000000000000000000000000000000000000000000060208201525b90565b600090815260046020526040902054600160a060020a031690565b6002546040805160e060020a635b92292f028152600481018490529051600160a060020a0390921691635b92292f916024808201926020929091908290030181600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050506040513d60208110156108f157600080fd5b5051600160a060020a03163314806109b157506002546040805160e060020a635b92292f028152600481018490529051600692600092600160a060020a0390911691635b92292f9160248082019260209290919082900301818787803b15801561095a57600080fd5b505af115801561096e573d6000803e3d6000fd5b505050506040513d602081101561098457600080fd5b5051600160a060020a031681526020818101929092526040908101600090812033825290925290205460ff165b15156109bc57600080fd5b6000818152600460208181526040808420805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03888116918217909255600254835160e060020a635b92292f0281529586018890529251879691959390921693635b92292f936024808201949293918390030190829087803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b505050506040513d6020811015610a6957600080fd5b5051604051600160a060020a03909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590600090a45050565b600190565b604080517f6f6e455243373231526563656976656428616464726573732c6164647265737381526000805160206126d98339815191526020820152905190819003602f01902095945050505050565b600254604080517f18160ddd0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a0316916318160ddd91600480830192602092919082900301818787803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050506040513d6020811015610b8157600080fd5b5051905090565b6002546040805160e160020a6331a9108f028152600481018490529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b158015610bd957600080fd5b505af1158015610bed573d6000803e3d6000fd5b505050506040513d6020811015610c0357600080fd5b5051600160a060020a0316331480610cc857506002546040805160e060020a635b92292f028152600481018490529051600692600092600160a060020a0390911691635b92292f9160248082019260209290919082900301818787803b158015610c6c57600080fd5b505af1158015610c80573d6000803e3d6000fd5b505050506040513d6020811015610c9657600080fd5b5051600160a060020a031681526020818101929092526040908101600090812033825290925290205460ff1615156001145b80610ce95750600081815260046020526040902054600160a060020a031633145b1515610cf457600080fd5b6002546040805160e160020a6331a9108f028152600481018490529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b158015610d4557600080fd5b505af1158015610d59573d6000803e3d6000fd5b505050506040513d6020811015610d6f57600080fd5b5051600160a060020a038481169116148015610d935750600160a060020a03821615155b1515610d9e57600080fd5b610da6610af8565b8110610db157600080fd5b610dbc8383836121e9565b505050565b3360009081526003602052604090205460ff161515610ddf57600080fd5b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152915160009384938493849391909216916370a0823191602480830192602092919082900301818787803b158015610e9557600080fd5b505af1158015610ea9573d6000803e3d6000fd5b505050506040513d6020811015610ebf57600080fd5b50518510610ecc57600080fd5b60009250600091505b600260009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050506040513d6020811015610f5257600080fd5b505167ffffffffffffffff831610156110bc576002546040805160e060020a635b92292f02815267ffffffffffffffff851660048201529051600160a060020a03808a16931691635b92292f9160248083019260209291908290030181600087803b158015610fc057600080fd5b505af1158015610fd4573d6000803e3d6000fd5b505050506040513d6020811015610fea57600080fd5b5051600160a060020a031614156110b157848367ffffffffffffffff1614156110aa5750600254604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905167ffffffffffffffff841692600160a060020a0316916318160ddd9160048083019260209291908290030181600087803b15801561107757600080fd5b505af115801561108b573d6000803e3d6000fd5b505050506040513d60208110156110a157600080fd5b505191506110b1565b6001909201915b600190910190610ed5565b95945050505050565b600090565b600260009054906101000a9004600160a060020a0316600160a060020a031663e1b27e6b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b505050506040513d602081101561114757600080fd5b5051600160a060020a0316331461115d57600080fd5b33ff5b6002546040805160e160020a6331a9108f028152600481018490529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b1580156111b157600080fd5b505af11580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b5051600160a060020a03163314806112a057506002546040805160e060020a635b92292f028152600481018490529051600692600092600160a060020a0390911691635b92292f9160248082019260209290919082900301818787803b15801561124457600080fd5b505af1158015611258573d6000803e3d6000fd5b505050506040513d602081101561126e57600080fd5b5051600160a060020a031681526020818101929092526040908101600090812033825290925290205460ff1615156001145b806112c15750600081815260046020526040902054600160a060020a031633145b15156112cc57600080fd5b6002546040805160e160020a6331a9108f028152600481018490529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b15801561131d57600080fd5b505af1158015611331573d6000803e3d6000fd5b505050506040513d602081101561134757600080fd5b5051600160a060020a03848116911614801561136b5750600160a060020a03821615155b151561137657600080fd5b61137e610af8565b811061138957600080fd5b6113948383836121e9565b61139d826125c5565b15610dbc57604080517f6f6e455243373231526563656976656428616464726573732c6164647265737381526000805160206126d9833981519152602080830191909152825191829003602f0182207f150b7a02000000000000000000000000000000000000000000000000000000008352336004840152600160a060020a03878116602485015260448401869052608060648501526000608485018190529451600160e060020a0319909216949087169363150b7a029360c480830194919391928390030190829087803b15801561147557600080fd5b505af1158015611489573d6000803e3d6000fd5b505050506040513d602081101561149f57600080fd5b5051600160e060020a03191614610dbc57600080fd5b60006114bf610af8565b82106114ca57600080fd5b5090565b600260009054906101000a9004600160a060020a0316600160a060020a031663e1b27e6b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561152157600080fd5b505af1158015611535573d6000803e3d6000fd5b505050506040513d602081101561154b57600080fd5b5051600160a060020a03163314806115e95750600260009054906101000a9004600160a060020a0316600160a060020a0316633d01bdec6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156115b157600080fd5b505af11580156115c5573d6000803e3d6000fd5b505050506040513d60208110156115db57600080fd5b5051600160a060020a031633145b8061167a5750600260009054906101000a9004600160a060020a0316600160a060020a03166330d500bf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b505050506040513d602081101561166c57600080fd5b5051600160a060020a031633145b151561168557600080fd5b600160a060020a03919091166000908152600360205260409020805460ff1916911515919091179055565b600260009054906101000a9004600160a060020a0316600160a060020a031663e1b27e6b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561170357600080fd5b505af1158015611717573d6000803e3d6000fd5b505050506040513d602081101561172d57600080fd5b5051600160a060020a03163314806117cb5750600260009054906101000a9004600160a060020a0316600160a060020a0316633d01bdec6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561179357600080fd5b505af11580156117a7573d6000803e3d6000fd5b505050506040513d60208110156117bd57600080fd5b5051600160a060020a031633145b8061185c5750600260009054906101000a9004600160a060020a0316600160a060020a03166330d500bf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561182457600080fd5b505af1158015611838573d6000803e3d6000fd5b505050506040513d602081101561184e57600080fd5b5051600160a060020a031633145b151561186757600080fd5b600260009054906101000a9004600160a060020a0316600160a060020a03166330d500bf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156118ba57600080fd5b505af11580156118ce573d6000803e3d6000fd5b505050506040513d60208110156118e457600080fd5b5051604051600160a060020a0390911690303180156108fc02916000818181858888f1935050505015801561191d573d6000803e3d6000fd5b50565b6002546040805160e160020a6331a9108f028152600481018490529051600092600160a060020a031691636352211e91602480830192602092919082900301818787803b15801561197057600080fd5b505af1158015611984573d6000803e3d6000fd5b505050506040513d602081101561199a57600080fd5b505192915050565b600254600160a060020a031681565b600154600160a060020a031681565b600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152915160009392909216916370a082319160248082019260209290919082900301818787803b15801561197057600080fd5b611a33611aa4565b1515611a3e57600080fd5b60008054604051600160a060020a03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031690565b600054600160a060020a0316331490565b60408051808201909152600381527f4154480000000000000000000000000000000000000000000000000000000000602082015290565b600260009054906101000a9004600160a060020a0316600160a060020a031663e1b27e6b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611b3f57600080fd5b505af1158015611b53573d6000803e3d6000fd5b505050506040513d6020811015611b6957600080fd5b5051600160a060020a0316331480611c075750600260009054906101000a9004600160a060020a0316600160a060020a0316633d01bdec6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611bcf57600080fd5b505af1158015611be3573d6000803e3d6000fd5b505050506040513d6020811015611bf957600080fd5b5051600160a060020a031633145b80611c985750600260009054906101000a9004600160a060020a0316600160a060020a03166330d500bf6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611c6057600080fd5b505af1158015611c74573d6000803e3d6000fd5b505050506040513d6020811015611c8a57600080fd5b5051600160a060020a031633145b1515611ca357600080fd5b610dbc6007838361264a565b336000818152600660209081526040808320600160a060020a03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6002546040805160e160020a6331a9108f028152600481018690529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b158015611d6e57600080fd5b505af1158015611d82573d6000803e3d6000fd5b505050506040513d6020811015611d9857600080fd5b5051600160a060020a0316331480611e5d57506002546040805160e060020a635b92292f028152600481018690529051600692600092600160a060020a0390911691635b92292f9160248082019260209290919082900301818787803b158015611e0157600080fd5b505af1158015611e15573d6000803e3d6000fd5b505050506040513d6020811015611e2b57600080fd5b5051600160a060020a031681526020818101929092526040908101600090812033825290925290205460ff1615156001145b80611e7e5750600083815260046020526040902054600160a060020a031633145b1515611e8957600080fd5b6002546040805160e160020a6331a9108f028152600481018690529051600160a060020a0390921691636352211e916024808201926020929091908290030181600087803b158015611eda57600080fd5b505af1158015611eee573d6000803e3d6000fd5b505050506040513d6020811015611f0457600080fd5b5051600160a060020a038681169116148015611f285750600160a060020a03841615155b1515611f3357600080fd5b611f3b610af8565b8310611f4657600080fd5b611f518585856121e9565b611f5a846125c5565b1561208a57604080517f6f6e455243373231526563656976656428616464726573732c6164647265737381526000805160206126d98339815191526020820152905190819003602f0181207f150b7a020000000000000000000000000000000000000000000000000000000082523360048301818152600160a060020a0389811660248601526044850188905260806064860190815260848601879052600160e060020a0319909416949089169363150b7a0293928b928a928a928a9290919060a40184848082843782019150509650505050505050602060405180830381600087803b15801561204a57600080fd5b505af115801561205e573d6000803e3d6000fd5b505050506040513d602081101561207457600080fd5b5051600160e060020a0319161461208a57600080fd5b5050505050565b606060008061209e610af8565b84106120a957600080fd5b8391508115156120da57507f300000000000000000000000000000000000000000000000000000000000000061211f565b600082111561211f5761010081049050600a82066030017f01000000000000000000000000000000000000000000000000000000000000000217600a820491506120da565b60078160405160200180838054600181600116156101000203166002900480156121805780601f1061215e576101008083540402835291820191612180565b820191906000526020600020905b81548152906001019060200180831161216c575b5050918252506040805180830381526020909201905295945050505050565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6121d5611aa4565b15156121e057600080fd5b61191d816125cd565b600254604080517f41354590000000000000000000000000000000000000000000000000000000008152600481018490526000602482018190529151600160a060020a039093169263413545909260448084019391929182900301818387803b15801561225557600080fd5b505af1158015612269573d6000803e3d6000fd5b5050600254604080517ff630a468000000000000000000000000000000000000000000000000000000008152600481018690526000602482018190529151600160a060020a03909316945063f630a46893506044808201939182900301818387803b1580156122d757600080fd5b505af11580156122eb573d6000803e3d6000fd5b5050600254604080517fefbd63a9000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301529151919092169350631cf91bf292508591849163efbd63a9916024808201926020929091908290030181600087803b15801561236257600080fd5b505af1158015612376573d6000803e3d6000fd5b505050506040513d602081101561238c57600080fd5b50516040805160e060020a63ffffffff8616028152600160a060020a0390931660048401526001909101602483015251604480830192600092919082900301818387803b1580156123dc57600080fd5b505af11580156123f0573d6000803e3d6000fd5b5050600254604080517fefbd63a9000000000000000000000000000000000000000000000000000000008152600160a060020a0388811660048301529151919092169350631cf91bf292508691600191859163efbd63a99160248083019260209291908290030181600087803b15801561246957600080fd5b505af115801561247d573d6000803e3d6000fd5b505050506040513d602081101561249357600080fd5b50516040805160e060020a63ffffffff8716028152600160a060020a039094166004850152919003602483015251604480830192600092919082900301818387803b1580156124e157600080fd5b505af11580156124f5573d6000803e3d6000fd5b5050600254604080517f35d1f86900000000000000000000000000000000000000000000000000000000815260048101869052600160a060020a03878116602483015291519190921693506335d1f8699250604480830192600092919082900301818387803b15801561256757600080fd5b505af115801561257b573d6000803e3d6000fd5b505050508082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000903b1190565b600160a060020a03811615156125e257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061268b5782800160ff198235161785556126b8565b828001600101855582156126b8579182015b828111156126b857823582559160200191906001019061269d565b506114ca926108589250905b808211156114ca57600081556001016126c456002c75696e743235362c6279746573290000000000000000000000000000000000a165627a7a72305820008a0d11f9b4dbf810ac043abccc430755c7a3f30dfe4b519b4ac974d1fbc7aa0029

Swarm Source

bzzr://008a0d11f9b4dbf810ac043abccc430755c7a3f30dfe4b519b4ac974d1fbc7aa

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Create and collect unique atoms!

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ 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.