ETH Price: $3,417.38 (+3.68%)

Token

Atom (ATH)
 

Overview

Max Total Supply

1,451 ATH

Holders

329

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
ultrawide.eth
Balance
4 ATH
0x193f0ee42a199a0cecd479a9f09ba293eb1ca357
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Create and collect unique atoms!

# Exchange Pair Price  24H Volume % Volume

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
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.