ETH Price: $3,847.96 (-0.66%)

Contract

0xF5b0A3eFB8e8E4c201e2A935F110eAaF3FFEcb8d
 

More Info

Private Name Tags

TokenTracker

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Set Approval For...236813372025-10-29 6:42:354 days ago1761720155IN
Axie Infinity: AXIE Token
0 ETH0.000029380.595038
Set Approval For...236758992025-10-28 12:23:475 days ago1761654227IN
Axie Infinity: AXIE Token
0 ETH0.000034090.69052101
Set Approval For...236567182025-10-25 19:59:478 days ago1761422387IN
Axie Infinity: AXIE Token
0 ETH0.000029310.59363559
Set Approval For...236248802025-10-21 8:54:2312 days ago1761036863IN
Axie Infinity: AXIE Token
0 ETH0.000079311.60364731
Safe Transfer Fr...236170212025-10-20 6:25:5913 days ago1760941559IN
Axie Infinity: AXIE Token
0 ETH0.000027730.77247223
Safe Transfer Fr...236170202025-10-20 6:25:4713 days ago1760941547IN
Axie Infinity: AXIE Token
0 ETH0.000026160.72854246
Safe Transfer Fr...236170192025-10-20 6:25:3513 days ago1760941535IN
Axie Infinity: AXIE Token
0 ETH0.000025650.7142671
Safe Transfer Fr...236170162025-10-20 6:24:5913 days ago1760941499IN
Axie Infinity: AXIE Token
0 ETH0.000040491.12792655
Set Approval For...233390512025-09-11 9:53:4752 days ago1757584427IN
Axie Infinity: AXIE Token
0 ETH0.000020230.73445555
Set Approval For...230791732025-08-06 2:54:3588 days ago1754448875IN
Axie Infinity: AXIE Token
0 ETH0.000009090.33017442
Set Approval For...230476102025-08-01 17:05:4793 days ago1754067947IN
Axie Infinity: AXIE Token
0 ETH0.000097631.97399102
Approve230475182025-08-01 16:47:1193 days ago1754066831IN
Axie Infinity: AXIE Token
0.0005 ETH0.000136452.65091111
Approve230475042025-08-01 16:44:2393 days ago1754066663IN
Axie Infinity: AXIE Token
0.0001 ETH0.000078232.66720972
Set Approval For...229500822025-07-19 1:50:11106 days ago1752889811IN
Axie Infinity: AXIE Token
0 ETH0.000031791.15447737
Approve228675552025-07-07 13:16:23118 days ago1751894183IN
Axie Infinity: AXIE Token
0.0001 ETH0.000227734.42436671
Approve228675392025-07-07 13:13:11118 days ago1751893991IN
Axie Infinity: AXIE Token
0 ETH0.00011054.57203202
Approve228675232025-07-07 13:09:59118 days ago1751893799IN
Axie Infinity: AXIE Token
0.00001 ETH0.000081652.78367129
Approve227826142025-06-25 16:21:59130 days ago1750868519IN
Axie Infinity: AXIE Token
0 ETH0.000298315.79560619
Approve225104832025-05-18 14:31:35168 days ago1747578695IN
Axie Infinity: AXIE Token
0 ETH0.000098111.9060717
Approve225104612025-05-18 14:27:11168 days ago1747578431IN
Axie Infinity: AXIE Token
0 ETH0.000056671.93205479
Approve225103622025-05-18 14:06:47168 days ago1747577207IN
Axie Infinity: AXIE Token
0 ETH0.000121542.36134555
Transfer From225103482025-05-18 14:03:59168 days ago1747577039IN
Axie Infinity: AXIE Token
0 ETH0.000089752.49409354
Set Approval For...224864752025-05-15 5:36:23171 days ago1747287383IN
Axie Infinity: AXIE Token
0 ETH0.000046630.94449365
Set Approval For...223104852025-04-20 13:23:11196 days ago1745155391IN
Axie Infinity: AXIE Token
0 ETH0.000022660.82256362
Set Approval For...221865842025-04-03 6:25:23213 days ago1743661523IN
Axie Infinity: AXIE Token
0 ETH0.000024260.88062567
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AxieCore

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-04-02
*/

pragma solidity ^0.4.19;

// File: contracts/erc/erc165/IERC165.sol

/// @title ERC-165 Standard Interface Detection
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md
interface IERC165 {
  /// @notice Query if a contract implements an interface
  /// @param interfaceID The interface identifier, as specified in ERC-165
  /// @dev Interface identification is specified in ERC-165. This function
  ///  uses less than 30,000 gas.
  /// @return `true` if the contract implements `interfaceID` and
  ///  `interfaceID` is not 0xffffffff, `false` otherwise
  function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

// File: contracts/erc/erc165/ERC165.sol

contract ERC165 is IERC165 {
  /// @dev You must not set element 0xffffffff to true
  mapping (bytes4 => bool) internal supportedInterfaces;

  function ERC165() internal {
    supportedInterfaces[0x01ffc9a7] = true; // ERC-165
  }

  function supportsInterface(bytes4 interfaceID) external view returns (bool) {
    return supportedInterfaces[interfaceID];
  }
}

// File: contracts/erc/erc721/IERC721Base.sol

/// @title ERC-721 Non-Fungible Token Standard
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
///  Note: the ERC-165 identifier for this interface is 0x6466353c
interface IERC721Base /* is IERC165  */ {
  /// @dev This emits when ownership of any NFT changes by any mechanism.
  ///  This event emits when NFTs are created (`from` == 0) and destroyed
  ///  (`to` == 0). Exception: during contract creation, any number of NFTs
  ///  may be created and assigned without emitting Transfer. At the time of
  ///  any transfer, the approved address for that NFT (if any) is reset to none.
  event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);

  /// @dev This emits when the approved address for an NFT is changed or
  ///  reaffirmed. The zero address indicates there is no approved address.
  ///  When a Transfer event emits, this also indicates that the approved
  ///  address for that NFT (if any) is reset to none.
  event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

  /// @dev This emits when an operator is enabled or disabled for an owner.
  ///  The operator can manage all NFTs of the owner.
  event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);

  /// @notice Count all NFTs assigned to an owner
  /// @dev NFTs assigned to the zero address are considered invalid, and this
  ///  function throws for queries about the zero address.
  /// @param _owner An address for whom to query the balance
  /// @return The number of NFTs owned by `_owner`, possibly zero
  function balanceOf(address _owner) external view returns (uint256);

  /// @notice Find the owner of an NFT
  /// @param _tokenId The identifier for an NFT
  /// @dev NFTs assigned to zero address are considered invalid, and queries
  ///  about them do throw.
  /// @return The address of the owner of the NFT
  function ownerOf(uint256 _tokenId) external view returns (address);

  /// @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,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`
  // solium-disable-next-line arg-overflow
  function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) external payable;

  /// @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;

  /// @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;

  /// @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;

  /// @notice Enable or disable approval for a third party ("operator") to manage
  ///  all your asset.
  /// @dev Emits the ApprovalForAll event
  /// @param _operator Address to add to the set of authorized operators.
  /// @param _approved True if the operators is approved, false to revoke approval
  function setApprovalForAll(address _operator, bool _approved) external;

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

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

// File: contracts/erc/erc721/IERC721Enumerable.sol

/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
///  Note: the ERC-165 identifier for this interface is 0x780e9d63
interface IERC721Enumerable /* is IERC721Base */ {
  /// @notice Count NFTs tracked by this contract
  /// @return A count of valid NFTs tracked by this contract, where each one of
  ///  them has an assigned and queryable owner not equal to the zero address
  function totalSupply() external view returns (uint256);

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

  /// @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 _tokenId);
}

// File: contracts/erc/erc721/IERC721TokenReceiver.sol

/// @dev Note: the ERC-165 identifier for this interface is 0xf0b9e5ba
interface IERC721TokenReceiver {
  /// @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. This function MUST use 50,000 gas or less. Return of other
  ///  than the magic value MUST result in the transaction being reverted.
  ///  Note: the contract address is always the message sender.
  /// @param _from The sending address
  /// @param _tokenId The NFT identifier which is being transfered
  /// @param _data Additional data with no specified format
  /// @return `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`
  ///  unless throwing
	function onERC721Received(address _from, uint256 _tokenId, bytes _data) external returns (bytes4);
}

// File: contracts/core/dependency/AxieManager.sol

interface AxieSpawningManager {
	function isSpawningAllowed(uint256 _genes, address _owner) external returns (bool);
  function isRebirthAllowed(uint256 _axieId, uint256 _genes) external returns (bool);
}

interface AxieRetirementManager {
  function isRetirementAllowed(uint256 _axieId, bool _rip) external returns (bool);
}

interface AxieMarketplaceManager {
  function isTransferAllowed(address _from, address _to, uint256 _axieId) external returns (bool);
}

interface AxieGeneManager {
  function isEvolvementAllowed(uint256 _axieId, uint256 _newGenes) external returns (bool);
}

// File: contracts/core/dependency/AxieDependency.sol

contract AxieDependency {

  address public whitelistSetterAddress;

  AxieSpawningManager public spawningManager;
  AxieRetirementManager public retirementManager;
  AxieMarketplaceManager public marketplaceManager;
  AxieGeneManager public geneManager;

  mapping (address => bool) public whitelistedSpawner;
  mapping (address => bool) public whitelistedByeSayer;
  mapping (address => bool) public whitelistedMarketplace;
  mapping (address => bool) public whitelistedGeneScientist;

  function AxieDependency() internal {
    whitelistSetterAddress = msg.sender;
  }

  modifier onlyWhitelistSetter() {
    require(msg.sender == whitelistSetterAddress);
    _;
  }

  modifier whenSpawningAllowed(uint256 _genes, address _owner) {
    require(
      spawningManager == address(0) ||
        spawningManager.isSpawningAllowed(_genes, _owner)
    );
    _;
  }

  modifier whenRebirthAllowed(uint256 _axieId, uint256 _genes) {
    require(
      spawningManager == address(0) ||
        spawningManager.isRebirthAllowed(_axieId, _genes)
    );
    _;
  }

  modifier whenRetirementAllowed(uint256 _axieId, bool _rip) {
    require(
      retirementManager == address(0) ||
        retirementManager.isRetirementAllowed(_axieId, _rip)
    );
    _;
  }

  modifier whenTransferAllowed(address _from, address _to, uint256 _axieId) {
    require(
      marketplaceManager == address(0) ||
        marketplaceManager.isTransferAllowed(_from, _to, _axieId)
    );
    _;
  }

  modifier whenEvolvementAllowed(uint256 _axieId, uint256 _newGenes) {
    require(
      geneManager == address(0) ||
        geneManager.isEvolvementAllowed(_axieId, _newGenes)
    );
    _;
  }

  modifier onlySpawner() {
    require(whitelistedSpawner[msg.sender]);
    _;
  }

  modifier onlyByeSayer() {
    require(whitelistedByeSayer[msg.sender]);
    _;
  }

  modifier onlyMarketplace() {
    require(whitelistedMarketplace[msg.sender]);
    _;
  }

  modifier onlyGeneScientist() {
    require(whitelistedGeneScientist[msg.sender]);
    _;
  }

  /*
   * @dev Setting the whitelist setter address to `address(0)` would be a irreversible process.
   *  This is to lock changes to Axie's contracts after their development is done.
   */
  function setWhitelistSetter(address _newSetter) external onlyWhitelistSetter {
    whitelistSetterAddress = _newSetter;
  }

  function setSpawningManager(address _manager) external onlyWhitelistSetter {
    spawningManager = AxieSpawningManager(_manager);
  }

  function setRetirementManager(address _manager) external onlyWhitelistSetter {
    retirementManager = AxieRetirementManager(_manager);
  }

  function setMarketplaceManager(address _manager) external onlyWhitelistSetter {
    marketplaceManager = AxieMarketplaceManager(_manager);
  }

  function setGeneManager(address _manager) external onlyWhitelistSetter {
    geneManager = AxieGeneManager(_manager);
  }

  function setSpawner(address _spawner, bool _whitelisted) external onlyWhitelistSetter {
    require(whitelistedSpawner[_spawner] != _whitelisted);
    whitelistedSpawner[_spawner] = _whitelisted;
  }

  function setByeSayer(address _byeSayer, bool _whitelisted) external onlyWhitelistSetter {
    require(whitelistedByeSayer[_byeSayer] != _whitelisted);
    whitelistedByeSayer[_byeSayer] = _whitelisted;
  }

  function setMarketplace(address _marketplace, bool _whitelisted) external onlyWhitelistSetter {
    require(whitelistedMarketplace[_marketplace] != _whitelisted);
    whitelistedMarketplace[_marketplace] = _whitelisted;
  }

  function setGeneScientist(address _geneScientist, bool _whitelisted) external onlyWhitelistSetter {
    require(whitelistedGeneScientist[_geneScientist] != _whitelisted);
    whitelistedGeneScientist[_geneScientist] = _whitelisted;
  }
}

// File: contracts/core/AxieAccessControl.sol

contract AxieAccessControl {

  address public ceoAddress;
  address public cfoAddress;
  address public cooAddress;

  function AxieAccessControl() internal {
    ceoAddress = msg.sender;
  }

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

  modifier onlyCFO() {
    require(msg.sender == cfoAddress);
    _;
  }

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

  modifier onlyCLevel() {
    require(
      // solium-disable operator-whitespace
      msg.sender == ceoAddress ||
        msg.sender == cfoAddress ||
        msg.sender == cooAddress
      // solium-enable operator-whitespace
    );
    _;
  }

  function setCEO(address _newCEO) external onlyCEO {
    require(_newCEO != address(0));
    ceoAddress = _newCEO;
  }

  function setCFO(address _newCFO) external onlyCEO {
    cfoAddress = _newCFO;
  }

  function setCOO(address _newCOO) external onlyCEO {
    cooAddress = _newCOO;
  }

  function withdrawBalance() external onlyCFO {
    cfoAddress.transfer(this.balance);
  }
}

// File: contracts/core/lifecycle/AxiePausable.sol

contract AxiePausable is AxieAccessControl {

  bool public paused = false;

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

  modifier whenPaused {
    require(paused);
    _;
  }

  function pause() external onlyCLevel whenNotPaused {
    paused = true;
  }

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

// File: zeppelin/contracts/math/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

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

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

// File: contracts/core/erc721/AxieERC721BaseEnumerable.sol

contract AxieERC721BaseEnumerable is ERC165, IERC721Base, IERC721Enumerable, AxieDependency, AxiePausable {
  using SafeMath for uint256;

  // @dev Total amount of tokens.
  uint256 private _totalTokens;

  // @dev Mapping from token index to ID.
  mapping (uint256 => uint256) private _overallTokenId;

  // @dev Mapping from token ID to index.
  mapping (uint256 => uint256) private _overallTokenIndex;

  // @dev Mapping from token ID to owner.
  mapping (uint256 => address) private _tokenOwner;

  // @dev For a given owner and a given operator, store whether
  //  the operator is allowed to manage tokens on behalf of the owner.
  mapping (address => mapping (address => bool)) private _tokenOperator;

  // @dev Mapping from token ID to approved address.
  mapping (uint256 => address) private _tokenApproval;

  // @dev Mapping from owner to list of owned token IDs.
  mapping (address => uint256[]) private _ownedTokens;

  // @dev Mapping from token ID to index in the owned token list.
  mapping (uint256 => uint256) private _ownedTokenIndex;

  function AxieERC721BaseEnumerable() internal {
    supportedInterfaces[0x6466353c] = true; // ERC-721 Base
    supportedInterfaces[0x780e9d63] = true; // ERC-721 Enumerable
  }

  // solium-disable function-order

  modifier mustBeValidToken(uint256 _tokenId) {
    require(_tokenOwner[_tokenId] != address(0));
    _;
  }

  function _isTokenOwner(address _ownerToCheck, uint256 _tokenId) private view returns (bool) {
    return _tokenOwner[_tokenId] == _ownerToCheck;
  }

  function _isTokenOperator(address _operatorToCheck, uint256 _tokenId) private view returns (bool) {
    return whitelistedMarketplace[_operatorToCheck] ||
      _tokenOperator[_tokenOwner[_tokenId]][_operatorToCheck];
  }

  function _isApproved(address _approvedToCheck, uint256 _tokenId) private view returns (bool) {
    return _tokenApproval[_tokenId] == _approvedToCheck;
  }

  modifier onlyTokenOwner(uint256 _tokenId) {
    require(_isTokenOwner(msg.sender, _tokenId));
    _;
  }

  modifier onlyTokenOwnerOrOperator(uint256 _tokenId) {
    require(_isTokenOwner(msg.sender, _tokenId) || _isTokenOperator(msg.sender, _tokenId));
    _;
  }

  modifier onlyTokenAuthorized(uint256 _tokenId) {
    require(
      // solium-disable operator-whitespace
      _isTokenOwner(msg.sender, _tokenId) ||
        _isTokenOperator(msg.sender, _tokenId) ||
        _isApproved(msg.sender, _tokenId)
      // solium-enable operator-whitespace
    );
    _;
  }

  // ERC-721 Base

  function balanceOf(address _owner) external view returns (uint256) {
    require(_owner != address(0));
    return _ownedTokens[_owner].length;
  }

  function ownerOf(uint256 _tokenId) external view mustBeValidToken(_tokenId) returns (address) {
    return _tokenOwner[_tokenId];
  }

  function _addTokenTo(address _to, uint256 _tokenId) private {
    require(_to != address(0));

    _tokenOwner[_tokenId] = _to;

    uint256 length = _ownedTokens[_to].length;
    _ownedTokens[_to].push(_tokenId);
    _ownedTokenIndex[_tokenId] = length;
  }

  function _mint(address _to, uint256 _tokenId) internal {
    require(_tokenOwner[_tokenId] == address(0));

    _addTokenTo(_to, _tokenId);

    _overallTokenId[_totalTokens] = _tokenId;
    _overallTokenIndex[_tokenId] = _totalTokens;
    _totalTokens = _totalTokens.add(1);

    Transfer(address(0), _to, _tokenId);
  }

  function _removeTokenFrom(address _from, uint256 _tokenId) private {
    require(_from != address(0));

    uint256 _tokenIndex = _ownedTokenIndex[_tokenId];
    uint256 _lastTokenIndex = _ownedTokens[_from].length.sub(1);
    uint256 _lastTokenId = _ownedTokens[_from][_lastTokenIndex];

    _tokenOwner[_tokenId] = address(0);

    // Insert the last token into the position previously occupied by the removed token.
    _ownedTokens[_from][_tokenIndex] = _lastTokenId;
    _ownedTokenIndex[_lastTokenId] = _tokenIndex;

    // Resize the array.
    delete _ownedTokens[_from][_lastTokenIndex];
    _ownedTokens[_from].length--;

    // Remove the array if no more tokens are owned to prevent pollution.
    if (_ownedTokens[_from].length == 0) {
      delete _ownedTokens[_from];
    }

    // Update the index of the removed token.
    delete _ownedTokenIndex[_tokenId];
  }

  function _burn(uint256 _tokenId) internal {
    address _from = _tokenOwner[_tokenId];

    require(_from != address(0));

    _removeTokenFrom(_from, _tokenId);
    _totalTokens = _totalTokens.sub(1);

    uint256 _tokenIndex = _overallTokenIndex[_tokenId];
    uint256 _lastTokenId = _overallTokenId[_totalTokens];

    delete _overallTokenIndex[_tokenId];
    delete _overallTokenId[_totalTokens];
    _overallTokenId[_tokenIndex] = _lastTokenId;
    _overallTokenIndex[_lastTokenId] = _tokenIndex;

    Transfer(_from, address(0), _tokenId);
  }

  function _isContract(address _address) private view returns (bool) {
    uint _size;
    // solium-disable-next-line security/no-inline-assembly
    assembly { _size := extcodesize(_address) }
    return _size > 0;
  }

  function _transferFrom(
    address _from,
    address _to,
    uint256 _tokenId,
    bytes _data,
    bool _check
  )
    internal
    mustBeValidToken(_tokenId)
    onlyTokenAuthorized(_tokenId)
    whenTransferAllowed(_from, _to, _tokenId)
  {
    require(_isTokenOwner(_from, _tokenId));
    require(_to != address(0));
    require(_to != _from);

    _removeTokenFrom(_from, _tokenId);

    delete _tokenApproval[_tokenId];
    Approval(_from, address(0), _tokenId);

    _addTokenTo(_to, _tokenId);

    if (_check && _isContract(_to)) {
      IERC721TokenReceiver(_to).onERC721Received.gas(50000)(_from, _tokenId, _data);
    }

    Transfer(_from, _to, _tokenId);
  }

  // solium-disable arg-overflow

  function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes _data) external payable {
    _transferFrom(_from, _to, _tokenId, _data, true);
  }

  function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable {
    _transferFrom(_from, _to, _tokenId, "", true);
  }

  function transferFrom(address _from, address _to, uint256 _tokenId) external payable {
    _transferFrom(_from, _to, _tokenId, "", false);
  }

  // solium-enable arg-overflow

  function approve(
    address _approved,
    uint256 _tokenId
  )
    external
    payable
    mustBeValidToken(_tokenId)
    onlyTokenOwnerOrOperator(_tokenId)
    whenNotPaused
  {
    address _owner = _tokenOwner[_tokenId];

    require(_owner != _approved);
    require(_tokenApproval[_tokenId] != _approved);

    _tokenApproval[_tokenId] = _approved;

    Approval(_owner, _approved, _tokenId);
  }

  function setApprovalForAll(address _operator, bool _approved) external whenNotPaused {
    require(_tokenOperator[msg.sender][_operator] != _approved);
    _tokenOperator[msg.sender][_operator] = _approved;
    ApprovalForAll(msg.sender, _operator, _approved);
  }

  function getApproved(uint256 _tokenId) external view mustBeValidToken(_tokenId) returns (address) {
    return _tokenApproval[_tokenId];
  }

  function isApprovedForAll(address _owner, address _operator) external view returns (bool) {
    return _tokenOperator[_owner][_operator];
  }

  // ERC-721 Enumerable

  function totalSupply() external view returns (uint256) {
    return _totalTokens;
  }

  function tokenByIndex(uint256 _index) external view returns (uint256) {
    require(_index < _totalTokens);
    return _overallTokenId[_index];
  }

  function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 _tokenId) {
    require(_owner != address(0));
    require(_index < _ownedTokens[_owner].length);
    return _ownedTokens[_owner][_index];
  }
}

// File: contracts/erc/erc721/IERC721Metadata.sol

/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
///  Note: the ERC-165 identifier for this interface is 0x5b5e139f
interface IERC721Metadata /* is IERC721Base */ {
  /// @notice A descriptive name for a collection of NFTs in this contract
  function name() external pure returns (string _name);

  /// @notice An abbreviated name for NFTs in this contract
  function symbol() external pure returns (string _symbol);

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

// File: contracts/core/erc721/AxieERC721Metadata.sol

contract AxieERC721Metadata is AxieERC721BaseEnumerable, IERC721Metadata {
  string public tokenURIPrefix = "https://axieinfinity.com/erc/721/axies/";
  string public tokenURISuffix = ".json";

  function AxieERC721Metadata() internal {
    supportedInterfaces[0x5b5e139f] = true; // ERC-721 Metadata
  }

  function name() external pure returns (string) {
    return "Axie";
  }

  function symbol() external pure returns (string) {
    return "AXIE";
  }

  function setTokenURIAffixes(string _prefix, string _suffix) external onlyCEO {
    tokenURIPrefix = _prefix;
    tokenURISuffix = _suffix;
  }

  function tokenURI(
    uint256 _tokenId
  )
    external
    view
    mustBeValidToken(_tokenId)
    returns (string)
  {
    bytes memory _tokenURIPrefixBytes = bytes(tokenURIPrefix);
    bytes memory _tokenURISuffixBytes = bytes(tokenURISuffix);
    uint256 _tmpTokenId = _tokenId;
    uint256 _length;

    do {
      _length++;
      _tmpTokenId /= 10;
    } while (_tmpTokenId > 0);

    bytes memory _tokenURIBytes = new bytes(_tokenURIPrefixBytes.length + _length + 5);
    uint256 _i = _tokenURIBytes.length - 6;

    _tmpTokenId = _tokenId;

    do {
      _tokenURIBytes[_i--] = byte(48 + _tmpTokenId % 10);
      _tmpTokenId /= 10;
    } while (_tmpTokenId > 0);

    for (_i = 0; _i < _tokenURIPrefixBytes.length; _i++) {
      _tokenURIBytes[_i] = _tokenURIPrefixBytes[_i];
    }

    for (_i = 0; _i < _tokenURISuffixBytes.length; _i++) {
      _tokenURIBytes[_tokenURIBytes.length + _i - 5] = _tokenURISuffixBytes[_i];
    }

    return string(_tokenURIBytes);
  }
}

// File: contracts/core/erc721/AxieERC721.sol

// solium-disable-next-line no-empty-blocks
contract AxieERC721 is AxieERC721BaseEnumerable, AxieERC721Metadata {
}

// File: contracts/core/AxieCore.sol

// solium-disable-next-line no-empty-blocks
contract AxieCore is AxieERC721 {
  struct Axie {
    uint256 genes;
    uint256 bornAt;
  }

  Axie[] axies;

  event AxieSpawned(uint256 indexed _axieId, address indexed _owner, uint256 _genes);
  event AxieRebirthed(uint256 indexed _axieId, uint256 _genes);
  event AxieRetired(uint256 indexed _axieId);
  event AxieEvolved(uint256 indexed _axieId, uint256 _oldGenes, uint256 _newGenes);

  function AxieCore() public {
    axies.push(Axie(0, now)); // The void Axie
    _spawnAxie(0, msg.sender); // Will be Puff
    _spawnAxie(0, msg.sender); // Will be Kotaro
    _spawnAxie(0, msg.sender); // Will be Ginger
    _spawnAxie(0, msg.sender); // Will be Stella
  }

  function getAxie(
    uint256 _axieId
  )
    external
    view
    mustBeValidToken(_axieId)
    returns (uint256 /* _genes */, uint256 /* _bornAt */)
  {
    Axie storage _axie = axies[_axieId];
    return (_axie.genes, _axie.bornAt);
  }

  function spawnAxie(
    uint256 _genes,
    address _owner
  )
    external
    onlySpawner
    whenSpawningAllowed(_genes, _owner)
    returns (uint256)
  {
    return _spawnAxie(_genes, _owner);
  }

  function rebirthAxie(
    uint256 _axieId,
    uint256 _genes
  )
    external
    onlySpawner
    mustBeValidToken(_axieId)
    whenRebirthAllowed(_axieId, _genes)
  {
    Axie storage _axie = axies[_axieId];
    _axie.genes = _genes;
    _axie.bornAt = now;
    AxieRebirthed(_axieId, _genes);
  }

  function retireAxie(
    uint256 _axieId,
    bool _rip
  )
    external
    onlyByeSayer
    whenRetirementAllowed(_axieId, _rip)
  {
    _burn(_axieId);

    if (_rip) {
      delete axies[_axieId];
    }

    AxieRetired(_axieId);
  }

  function evolveAxie(
    uint256 _axieId,
    uint256 _newGenes
  )
    external
    onlyGeneScientist
    mustBeValidToken(_axieId)
    whenEvolvementAllowed(_axieId, _newGenes)
  {
    uint256 _oldGenes = axies[_axieId].genes;
    axies[_axieId].genes = _newGenes;
    AxieEvolved(_axieId, _oldGenes, _newGenes);
  }

  function _spawnAxie(uint256 _genes, address _owner) private returns (uint256 _axieId) {
    Axie memory _axie = Axie(_genes, now);
    _axieId = axies.push(_axie) - 1;
    _mint(_owner, _axieId);
    AxieSpawned(_axieId, _owner, _genes);
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cfoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","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":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_axieId","type":"uint256"},{"name":"_genes","type":"uint256"}],"name":"rebirthAxie","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"whitelistSetterAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"marketplaceManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"setRetirementManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_geneScientist","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setGeneScientist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"name":"_tokenId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"setMarketplaceManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","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":false,"inputs":[{"name":"_newCFO","type":"address"}],"name":"setCFO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"retirementManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newSetter","type":"address"}],"name":"setWhitelistSetter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_genes","type":"uint256"},{"name":"_owner","type":"address"}],"name":"spawnAxie","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_marketplace","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setMarketplace","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"geneManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_byeSayer","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setByeSayer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"setSpawningManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"setGeneManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistedByeSayer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"spawningManager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistedGeneScientist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spawner","type":"address"},{"name":"_whitelisted","type":"bool"}],"name":"setSpawner","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":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistedMarketplace","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_axieId","type":"uint256"}],"name":"getAxie","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_axieId","type":"uint256"},{"name":"_newGenes","type":"uint256"}],"name":"evolveAxie","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_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":"tokenURIPrefix","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelistedSpawner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_axieId","type":"uint256"},{"name":"_rip","type":"bool"}],"name":"retireAxie","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenURISuffix","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":"_prefix","type":"string"},{"name":"_suffix","type":"string"}],"name":"setTokenURIAffixes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_axieId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_genes","type":"uint256"}],"name":"AxieSpawned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_axieId","type":"uint256"},{"indexed":false,"name":"_genes","type":"uint256"}],"name":"AxieRebirthed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_axieId","type":"uint256"}],"name":"AxieRetired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_axieId","type":"uint256"},{"indexed":false,"name":"_oldGenes","type":"uint256"},{"indexed":false,"name":"_newGenes","type":"uint256"}],"name":"AxieEvolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"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"}]

60606040818152600c805460a060020a60ff02191690555190810160405280602781526020017f68747470733a2f2f61786965696e66696e6974792e636f6d2f6572632f37323181526020017f2f61786965732f00000000000000000000000000000000000000000000000000815250601590805162000084929160200190620004bf565b5060408051908101604052600581527f2e6a736f6e00000000000000000000000000000000000000000000000000000060208201526016908051620000ce929160200190620004bf565b503415620000db57600080fd5b600060208190527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff1990811660019081179092558154600160a060020a033316600160a060020a031991821681178455600a80549092161790557f77218e6e0a7dc0a9ee09daeaab3dc6c60094df0c2747e685a4b5f67f6cd5ebd880548216831790557f77b7bbe0e49b76487c9476b5db3354cf5270619d0037ccb899c2a4c4a75b431880548216831790557f5b5e139f000000000000000000000000000000000000000000000000000000009092527f9562381dfbc2d8b8b66e765249f330164b73e329e5f01670660643571d1974df805490921681179091556017805490918101620001ee838262000544565b916000526020600020906002020160006040805190810160405260008152426020820152919050815181556020820151816001015550505062000247600033620002a26401000000000262001fdf176401000000009004565b506200026360003364010000000062001fdf620002a282021704565b506200027f60003364010000000062001fdf620002a282021704565b506200029b60003364010000000062001fdf620002a282021704565b50620005f4565b6000620002ae62000578565b6040805190810160405284815242602082015260178054919250600191808301620002da838262000544565b6000928352602090922084916002020181518155602082015160019091015550039150620003178383640100000000620023966200035c82021704565b82600160a060020a0316827f0aa75ef3ef0b2c4f092828edf4e4ded5a223d08350535710b957679883ff3a3c8660405190815260200160405180910390a35092915050565b600081815260106020526040902054600160a060020a0316156200037f57600080fd5b6200039982826401000000006200230b6200042282021704565b600d80546000908152600e602090815260408083208590559254848352600f909152919020819055620003dc90600164010000000062002453620004a882021704565b600d55600160a060020a03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b6000600160a060020a03831615156200043a57600080fd5b5060008181526010602090815260408083208054600160a060020a031916600160a060020a03871690811790915583526013909152902080549081600181016200048583826200058f565b506000918252602080832091909101849055928152601490925260409091205550565b600082820183811015620004b857fe5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200050257805160ff191683800117855562000532565b8280016001018555821562000532579182015b828111156200053257825182559160200191906001019062000515565b5062000540929150620005b1565b5090565b8154818355818115116200057357600202816002028360005260206000209182019101620005739190620005d1565b505050565b604080519081016040526000808252602082015290565b8154818355818115116200057357600083815260209020620005739181019083015b620005ce91905b80821115620005405760008155600101620005b8565b90565b620005ce91905b80821115620005405760008082556001820155600201620005d8565b6125e080620006046000396000f3006060604052600436106102585763ffffffff60e060020a60003504166301ffc9a7811461025d5780630519ce79146102a657806306fdde03146102d5578063081812fc1461035f578063095ea7b3146103755780630a0f81681461038e5780630d2cc54a146103a15780631412409a146103ba57806318160ddd146103cd5780631889500c146103f25780631a68b1a1146104055780631f8df2cd1461042457806323b872dd1461044857806327d7874c146104655780632ba73c15146104845780632f745c59146104a35780632ffb054e146104c55780633f4ba83a146104e457806342842e0e146104f75780634e0a3379146105145780634f6ccce71461053357806352ac882c14610549578063547a5eee1461055c5780635c975abb1461057b5780635dcc6dbc1461058e5780635fd8c710146105b05780636352211e146105c357806370a08231146105d95780637419e77a146105f857806380173a191461061c57806381b2dad91461062f5780638456cb59146106535780638c37e31e14610666578063927aaa7c1461068557806395d89b41146106a45780639848146a146106b757806398f5ee5d146106d657806399165bf4146106e95780639f186edb14610708578063a22cb4651461072c578063a306dfbe14610750578063a64729061461076f578063ae67b4c31461079d578063b047fb50146107b6578063b88d4fde146107c9578063c0ac9983146107f5578063c84c9e4514610808578063c87b56dd14610827578063c9644b771461083d578063dbbc853b14610858578063e985e9c51461086b578063faf4212514610890575b600080fd5b341561026857600080fd5b6102927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166108ba565b604051901515815260200160405180910390f35b34156102b157600080fd5b6102b96108ee565b604051600160a060020a03909116815260200160405180910390f35b34156102e057600080fd5b6102e86108fd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561032457808201518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036a57600080fd5b6102b960043561093f565b61038c600160a060020a0360043516602435610981565b005b341561039957600080fd5b6102b9610aa0565b34156103ac57600080fd5b61038c600435602435610aaf565b34156103c557600080fd5b6102b9610bf5565b34156103d857600080fd5b6103e0610c04565b60405190815260200160405180910390f35b34156103fd57600080fd5b6102b9610c0a565b341561041057600080fd5b61038c600160a060020a0360043516610c19565b341561042f57600080fd5b61038c600160a060020a03600435166024351515610c56565b61038c600160a060020a0360043581169060243516604435610cc8565b341561047057600080fd5b61038c600160a060020a0360043516610ce8565b341561048f57600080fd5b61038c600160a060020a0360043516610d3a565b34156104ae57600080fd5b6103e0600160a060020a0360043516602435610d77565b34156104d057600080fd5b61038c600160a060020a0360043516610dea565b34156104ef57600080fd5b61038c610e27565b61038c600160a060020a0360043581169060243516604435610e7a565b341561051f57600080fd5b61038c600160a060020a0360043516610e96565b341561053e57600080fd5b6103e0600435610ed3565b341561055457600080fd5b6102b9610ef7565b341561056757600080fd5b61038c600160a060020a0360043516610f06565b341561058657600080fd5b610292610f43565b341561059957600080fd5b6103e0600435600160a060020a0360243516610f53565b34156105bb57600080fd5b61038c61102b565b34156105ce57600080fd5b6102b9600435611081565b34156105e457600080fd5b6103e0600160a060020a03600435166110c3565b341561060357600080fd5b61038c600160a060020a036004351660243515156110f6565b341561062757600080fd5b6102b9611168565b341561063a57600080fd5b61038c600160a060020a03600435166024351515611177565b341561065e57600080fd5b61038c6111e9565b341561067157600080fd5b61038c600160a060020a0360043516611275565b341561069057600080fd5b61038c600160a060020a03600435166112b2565b34156106af57600080fd5b6102e86112ef565b34156106c257600080fd5b610292600160a060020a0360043516611330565b34156106e157600080fd5b6102b9611345565b34156106f457600080fd5b610292600160a060020a0360043516611354565b341561071357600080fd5b61038c600160a060020a03600435166024351515611369565b341561073757600080fd5b61038c600160a060020a036004351660243515156113db565b341561075b57600080fd5b610292600160a060020a036004351661149b565b341561077a57600080fd5b6107856004356114b0565b60405191825260208201526040908101905180910390f35b34156107a857600080fd5b61038c60043560243561150c565b34156107c157600080fd5b6102b9611673565b61038c600160a060020a0360048035821691602480359091169160443591606435908101910135611682565b341561080057600080fd5b6102e86116c7565b341561081357600080fd5b610292600160a060020a0360043516611765565b341561083257600080fd5b6102e860043561177a565b341561084857600080fd5b61038c6004356024351515611a65565b341561086357600080fd5b6102e8611b8a565b341561087657600080fd5b610292600160a060020a0360043581169060243516611bf5565b341561089b57600080fd5b61038c6024600480358281019290820135918135918201910135611c23565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526020819052604090205460ff1690565b600b54600160a060020a031681565b610905612462565b60408051908101604052600481527f4178696500000000000000000000000000000000000000000000000000000000602082015290505b90565b6000818152601060205260408120548290600160a060020a0316151561096457600080fd5b5050600090815260126020526040902054600160a060020a031690565b6000818152601060205260408120548290600160a060020a031615156109a657600080fd5b826109b13382611c57565b806109c157506109c13382611c77565b15156109cc57600080fd5b600c5460a060020a900460ff16156109e357600080fd5b600084815260106020526040902054600160a060020a0390811693508516831415610a0d57600080fd5b600084815260126020526040902054600160a060020a0386811691161415610a3457600080fd5b600084815260126020526040908190208054600160a060020a031916600160a060020a0388811691821790925591908516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259087905190815260200160405180910390a35050505050565b600a54600160a060020a031681565b600160a060020a03331660009081526006602052604081205460ff161515610ad657600080fd5b6000838152601060205260409020548390600160a060020a03161515610afb57600080fd5b60025484908490600160a060020a03161580610b855750600254600160a060020a031663d4d33ece838360006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610b6957600080fd5b6102c65a03f11515610b7a57600080fd5b505050604051805190505b1515610b9057600080fd5b6017805487908110610b9e57fe5b600091825260209091206002909102018581554260018201559350857f90f712fe1864fe3fbc2bd97b660fbfec7c30d013d3961ac72ea12cffc09e06638660405190815260200160405180910390a2505050505050565b600154600160a060020a031681565b600d5490565b600454600160a060020a031681565b60015433600160a060020a03908116911614610c3457600080fd5b60038054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610c7157600080fd5b600160a060020a03821660009081526009602052604090205460ff1615158115151415610c9d57600080fd5b600160a060020a03919091166000908152600960205260409020805460ff1916911515919091179055565b610ce383838360206040519081016040526000808252611cd5565b505050565b600a5433600160a060020a03908116911614610d0357600080fd5b600160a060020a0381161515610d1857600080fd5b600a8054600160a060020a031916600160a060020a0392909216919091179055565b600a5433600160a060020a03908116911614610d5557600080fd5b600c8054600160a060020a031916600160a060020a0392909216919091179055565b6000600160a060020a0383161515610d8e57600080fd5b600160a060020a0383166000908152601360205260409020548210610db257600080fd5b600160a060020a0383166000908152601360205260409020805483908110610dd657fe5b906000526020600020900154905092915050565b60015433600160a060020a03908116911614610e0557600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b600a5433600160a060020a03908116911614610e4257600080fd5b600c5460a060020a900460ff161515610e5a57600080fd5b600c805474ff000000000000000000000000000000000000000019169055565b610ce38383836020604051908101604052600081526001611cd5565b600a5433600160a060020a03908116911614610eb157600080fd5b600b8054600160a060020a031916600160a060020a0392909216919091179055565b600d546000908210610ee457600080fd5b506000908152600e602052604090205490565b600354600160a060020a031681565b60015433600160a060020a03908116911614610f2157600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600c5460a060020a900460ff1681565b600160a060020a03331660009081526006602052604081205460ff161515610f7a57600080fd5b60025483908390600160a060020a0316158061100d5750600254600160a060020a0316630e972421838360006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b1515610ff157600080fd5b6102c65a03f1151561100257600080fd5b505050604051805190505b151561101857600080fd5b6110228585611fdf565b95945050505050565b600b5433600160a060020a0390811691161461104657600080fd5b600b54600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561107f57600080fd5b565b6000818152601060205260408120548290600160a060020a031615156110a657600080fd5b5050600090815260106020526040902054600160a060020a031690565b6000600160a060020a03821615156110da57600080fd5b50600160a060020a031660009081526013602052604090205490565b60015433600160a060020a0390811691161461111157600080fd5b600160a060020a03821660009081526008602052604090205460ff161515811515141561113d57600080fd5b600160a060020a03919091166000908152600860205260409020805460ff1916911515919091179055565b600554600160a060020a031681565b60015433600160a060020a0390811691161461119257600080fd5b600160a060020a03821660009081526007602052604090205460ff16151581151514156111be57600080fd5b600160a060020a03919091166000908152600760205260409020805460ff1916911515919091179055565b600a5433600160a060020a03908116911614806112145750600b5433600160a060020a039081169116145b8061122d5750600c5433600160a060020a039081169116145b151561123857600080fd5b600c5460a060020a900460ff161561124f57600080fd5b600c805474ff0000000000000000000000000000000000000000191660a060020a179055565b60015433600160a060020a0390811691161461129057600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146112cd57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b6112f7612462565b60408051908101604052600481527f41584945000000000000000000000000000000000000000000000000000000006020820152905090565b60076020526000908152604090205460ff1681565b600254600160a060020a031681565b60096020526000908152604090205460ff1681565b60015433600160a060020a0390811691161461138457600080fd5b600160a060020a03821660009081526006602052604090205460ff16151581151514156113b057600080fd5b600160a060020a03919091166000908152600660205260409020805460ff1916911515919091179055565b600c5460a060020a900460ff16156113f257600080fd5b600160a060020a0333811660009081526011602090815260408083209386168352929052205460ff161515811515141561142b57600080fd5b33600160a060020a0390811660008181526011602090815260408083209487168084529490915290819020805460ff19168515151790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190849051901515815260200160405180910390a35050565b60086020526000908152604090205460ff1681565b600081815260106020526040812054819081908490600160a060020a031615156114d957600080fd5b60178054869081106114e757fe5b9060005260206000209060020201915081600001548260010154935093505050915091565b600160a060020a03331660009081526009602052604081205460ff16151561153357600080fd5b6000838152601060205260409020548390600160a060020a0316151561155857600080fd5b60055484908490600160a060020a031615806115e25750600554600160a060020a0316639613bc90838360006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b15156115c657600080fd5b6102c65a03f115156115d757600080fd5b505050604051805190505b15156115ed57600080fd5b60178054879081106115fb57fe5b90600052602060002090600202016000015493508460178781548110151561161f57fe5b6000918252602090912060029091020155857f6715bb2e56d8b9cd079426816318abbb6ee679a7e8e64602b38bf5c074b58e55858760405191825260208201526040908101905180910390a2505050505050565b600c54600160a060020a031681565b6116c085858585858080601f01602080910402602001604051908101604052818152929190602084018383808284375060019450611cd59350505050565b5050505050565b60158054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561175d5780601f106117325761010080835404028352916020019161175d565b820191906000526020600020905b81548152906001019060200180831161174057829003601f168201915b505050505081565b60066020526000908152604090205460ff1681565b611782612462565b61178a612462565b611792612462565b60008061179d612462565b6000878152601060205260408120548890600160a060020a031615156117c257600080fd5b60158054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118585780601f1061182d57610100808354040283529160200191611858565b820191906000526020600020905b81548152906001019060200180831161183b57829003601f168201915b5050505050965060168054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118f55780601f106118ca576101008083540402835291602001916118f5565b820191906000526020600020905b8154815290600101906020018083116118d857829003601f168201915b505050505095508894505b600190930192600a85049450600085111561191a57611900565b8387510160050160405180591061192e5750595b818152601f19601f830116810160200160405290509250600683510391508894505b60001982019160f860020a6030600a880601029084908151811061197057fe5b906020010190600160f860020a031916908160001a905350600a85049450600085111561199c57611950565b600091505b86518210156119f7578682815181106119b657fe5b016020015160f860020a900460f860020a028383815181106119d457fe5b906020010190600160f860020a031916908160001a9053506001909101906119a1565b600091505b8551821015611a5857858281518110611a1157fe5b016020015160f860020a900460f860020a02836005848651010381518110611a3557fe5b906020010190600160f860020a031916908160001a9053506001909101906119fc565b5090979650505050505050565b600160a060020a03331660009081526007602052604090205460ff161515611a8c57600080fd5b60035482908290600160a060020a03161580611b185750600354600160a060020a03166318dcdfbe838360006040516020015260405160e060020a63ffffffff8516028152600481019290925215156024820152604401602060405180830381600087803b1515611afc57600080fd5b6102c65a03f11515611b0d57600080fd5b505050604051805190505b1515611b2357600080fd5b611b2c84612085565b8215611b57576017805485908110611b4057fe5b600091825260208220600290910201818155600101555b837fc7e9cc512eb27debd93c5ff5830060459d7e6777ebcb540f3c9e2e520eb2502b60405160405180910390a250505050565b60168054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561175d5780601f106117325761010080835404028352916020019161175d565b600160a060020a03918216600090815260116020908152604080832093909416825291909152205460ff1690565b600a5433600160a060020a03908116911614611c3e57600080fd5b611c4a60158585612474565b506116c060168383612474565b600090815260106020526040902054600160a060020a0391821691161490565b600160a060020a03821660009081526008602052604081205460ff1680611cce5750600082815260106020908152604080832054600160a060020a03908116845260118352818420908716845290915290205460ff165b9392505050565b6000838152601060205260409020548390600160a060020a03161515611cfa57600080fd5b83611d053382611c57565b80611d155750611d153382611c77565b80611d255750611d25338261215a565b1515611d3057600080fd5b600454879087908790600160a060020a03161580611dd15750600454600160a060020a031663f7ebc39a84848460006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611db557600080fd5b6102c65a03f11515611dc657600080fd5b505050604051805190505b1515611ddc57600080fd5b611de68a89611c57565b1515611df157600080fd5b600160a060020a0389161515611e0657600080fd5b600160a060020a03898116908b161415611e1f57600080fd5b611e298a8961217a565b6000888152601260205260408082208054600160a060020a0319169055600160a060020a038c16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925908b905190815260200160405180910390a3611e8e898961230b565b858015611e9f5750611e9f8961238e565b15611f8c5788600160a060020a031663f0b9e5ba61c3508c8b8b6040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f26578082015183820152602001611f0e565b50505050905090810190601f168015611f535780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600088803b1515611f7357600080fd5b87f11515611f8057600080fd5b50505050604051805150505b88600160a060020a03168a600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405190815260200160405180910390a350505050505050505050565b6000611fe96124f2565b60408051908101604052848152426020820152601780549192506001918083016120138382612509565b60009283526020909220849160020201815181556020820151816001015550500391506120408383612396565b82600160a060020a0316827f0aa75ef3ef0b2c4f092828edf4e4ded5a223d08350535710b957679883ff3a3c8660405190815260200160405180910390a35092915050565b600081815260106020526040812054600160a060020a031690808215156120ab57600080fd5b6120b5838561217a565b600d546120c990600163ffffffff61244116565b600d8181556000868152600f602081815260408084208054968552600e835281852054908590559454845280842084905585845280842085905584845291905280822084905592945090925090600160a060020a038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9087905190815260200160405180910390a350505050565b600090815260126020526040902054600160a060020a0391821691161490565b60008080600160a060020a038516151561219357600080fd5b600084815260146020908152604080832054600160a060020a03891684526013909252909120549093506121ce90600163ffffffff61244116565b600160a060020a0386166000908152601360205260409020805491935090839081106121f657fe5b60009182526020808320909101548683526010825260408084208054600160a060020a0319169055600160a060020a038916845260139092529120805491925082918590811061224257fe5b6000918252602080832090910192909255828152601482526040808220869055600160a060020a038816825260139092522080548390811061228057fe5b60009182526020808320909101829055600160a060020a038716825260139052604090208054906122b5906000198301612535565b50600160a060020a03851660009081526013602052604090205415156122f657600160a060020a03851660009081526013602052604081206122f691612559565b50505060009081526014602052604081205550565b6000600160a060020a038316151561232257600080fd5b5060008181526010602090815260408083208054600160a060020a031916600160a060020a038716908117909155835260139091529020805490816001810161236b8382612535565b506000918252602080832091909101849055928152601490925260409091205550565b6000903b1190565b600081815260106020526040902054600160a060020a0316156123b857600080fd5b6123c2828261230b565b600d80546000908152600e602090815260408083208590559254848352600f9091529190208190556123fb90600163ffffffff61245316565b600d55600160a060020a03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b60008282111561244d57fe5b50900390565b600082820183811015611cce57fe5b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124b55782800160ff198235161785556124e2565b828001600101855582156124e2579182015b828111156124e25782358255916020019190600101906124c7565b506124ee92915061257a565b5090565b604080519081016040526000808252602082015290565b815481835581811511610ce357600202816002028360005260206000209182019101610ce39190612594565b815481835581811511610ce357600083815260209020610ce391810190830161257a565b5080546000825590600052602060002090810190612577919061257a565b50565b61093c91905b808211156124ee5760008155600101612580565b61093c91905b808211156124ee576000808255600182015560020161259a5600a165627a7a723058205c581cfc083f257425f5769585ca2b5795a24934862554ed6f13b530d4fdb0510029

Deployed Bytecode

0x6060604052600436106102585763ffffffff60e060020a60003504166301ffc9a7811461025d5780630519ce79146102a657806306fdde03146102d5578063081812fc1461035f578063095ea7b3146103755780630a0f81681461038e5780630d2cc54a146103a15780631412409a146103ba57806318160ddd146103cd5780631889500c146103f25780631a68b1a1146104055780631f8df2cd1461042457806323b872dd1461044857806327d7874c146104655780632ba73c15146104845780632f745c59146104a35780632ffb054e146104c55780633f4ba83a146104e457806342842e0e146104f75780634e0a3379146105145780634f6ccce71461053357806352ac882c14610549578063547a5eee1461055c5780635c975abb1461057b5780635dcc6dbc1461058e5780635fd8c710146105b05780636352211e146105c357806370a08231146105d95780637419e77a146105f857806380173a191461061c57806381b2dad91461062f5780638456cb59146106535780638c37e31e14610666578063927aaa7c1461068557806395d89b41146106a45780639848146a146106b757806398f5ee5d146106d657806399165bf4146106e95780639f186edb14610708578063a22cb4651461072c578063a306dfbe14610750578063a64729061461076f578063ae67b4c31461079d578063b047fb50146107b6578063b88d4fde146107c9578063c0ac9983146107f5578063c84c9e4514610808578063c87b56dd14610827578063c9644b771461083d578063dbbc853b14610858578063e985e9c51461086b578063faf4212514610890575b600080fd5b341561026857600080fd5b6102927bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166108ba565b604051901515815260200160405180910390f35b34156102b157600080fd5b6102b96108ee565b604051600160a060020a03909116815260200160405180910390f35b34156102e057600080fd5b6102e86108fd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561032457808201518382015260200161030c565b50505050905090810190601f1680156103515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036a57600080fd5b6102b960043561093f565b61038c600160a060020a0360043516602435610981565b005b341561039957600080fd5b6102b9610aa0565b34156103ac57600080fd5b61038c600435602435610aaf565b34156103c557600080fd5b6102b9610bf5565b34156103d857600080fd5b6103e0610c04565b60405190815260200160405180910390f35b34156103fd57600080fd5b6102b9610c0a565b341561041057600080fd5b61038c600160a060020a0360043516610c19565b341561042f57600080fd5b61038c600160a060020a03600435166024351515610c56565b61038c600160a060020a0360043581169060243516604435610cc8565b341561047057600080fd5b61038c600160a060020a0360043516610ce8565b341561048f57600080fd5b61038c600160a060020a0360043516610d3a565b34156104ae57600080fd5b6103e0600160a060020a0360043516602435610d77565b34156104d057600080fd5b61038c600160a060020a0360043516610dea565b34156104ef57600080fd5b61038c610e27565b61038c600160a060020a0360043581169060243516604435610e7a565b341561051f57600080fd5b61038c600160a060020a0360043516610e96565b341561053e57600080fd5b6103e0600435610ed3565b341561055457600080fd5b6102b9610ef7565b341561056757600080fd5b61038c600160a060020a0360043516610f06565b341561058657600080fd5b610292610f43565b341561059957600080fd5b6103e0600435600160a060020a0360243516610f53565b34156105bb57600080fd5b61038c61102b565b34156105ce57600080fd5b6102b9600435611081565b34156105e457600080fd5b6103e0600160a060020a03600435166110c3565b341561060357600080fd5b61038c600160a060020a036004351660243515156110f6565b341561062757600080fd5b6102b9611168565b341561063a57600080fd5b61038c600160a060020a03600435166024351515611177565b341561065e57600080fd5b61038c6111e9565b341561067157600080fd5b61038c600160a060020a0360043516611275565b341561069057600080fd5b61038c600160a060020a03600435166112b2565b34156106af57600080fd5b6102e86112ef565b34156106c257600080fd5b610292600160a060020a0360043516611330565b34156106e157600080fd5b6102b9611345565b34156106f457600080fd5b610292600160a060020a0360043516611354565b341561071357600080fd5b61038c600160a060020a03600435166024351515611369565b341561073757600080fd5b61038c600160a060020a036004351660243515156113db565b341561075b57600080fd5b610292600160a060020a036004351661149b565b341561077a57600080fd5b6107856004356114b0565b60405191825260208201526040908101905180910390f35b34156107a857600080fd5b61038c60043560243561150c565b34156107c157600080fd5b6102b9611673565b61038c600160a060020a0360048035821691602480359091169160443591606435908101910135611682565b341561080057600080fd5b6102e86116c7565b341561081357600080fd5b610292600160a060020a0360043516611765565b341561083257600080fd5b6102e860043561177a565b341561084857600080fd5b61038c6004356024351515611a65565b341561086357600080fd5b6102e8611b8a565b341561087657600080fd5b610292600160a060020a0360043581169060243516611bf5565b341561089b57600080fd5b61038c6024600480358281019290820135918135918201910135611c23565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526020819052604090205460ff1690565b600b54600160a060020a031681565b610905612462565b60408051908101604052600481527f4178696500000000000000000000000000000000000000000000000000000000602082015290505b90565b6000818152601060205260408120548290600160a060020a0316151561096457600080fd5b5050600090815260126020526040902054600160a060020a031690565b6000818152601060205260408120548290600160a060020a031615156109a657600080fd5b826109b13382611c57565b806109c157506109c13382611c77565b15156109cc57600080fd5b600c5460a060020a900460ff16156109e357600080fd5b600084815260106020526040902054600160a060020a0390811693508516831415610a0d57600080fd5b600084815260126020526040902054600160a060020a0386811691161415610a3457600080fd5b600084815260126020526040908190208054600160a060020a031916600160a060020a0388811691821790925591908516907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259087905190815260200160405180910390a35050505050565b600a54600160a060020a031681565b600160a060020a03331660009081526006602052604081205460ff161515610ad657600080fd5b6000838152601060205260409020548390600160a060020a03161515610afb57600080fd5b60025484908490600160a060020a03161580610b855750600254600160a060020a031663d4d33ece838360006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b1515610b6957600080fd5b6102c65a03f11515610b7a57600080fd5b505050604051805190505b1515610b9057600080fd5b6017805487908110610b9e57fe5b600091825260209091206002909102018581554260018201559350857f90f712fe1864fe3fbc2bd97b660fbfec7c30d013d3961ac72ea12cffc09e06638660405190815260200160405180910390a2505050505050565b600154600160a060020a031681565b600d5490565b600454600160a060020a031681565b60015433600160a060020a03908116911614610c3457600080fd5b60038054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610c7157600080fd5b600160a060020a03821660009081526009602052604090205460ff1615158115151415610c9d57600080fd5b600160a060020a03919091166000908152600960205260409020805460ff1916911515919091179055565b610ce383838360206040519081016040526000808252611cd5565b505050565b600a5433600160a060020a03908116911614610d0357600080fd5b600160a060020a0381161515610d1857600080fd5b600a8054600160a060020a031916600160a060020a0392909216919091179055565b600a5433600160a060020a03908116911614610d5557600080fd5b600c8054600160a060020a031916600160a060020a0392909216919091179055565b6000600160a060020a0383161515610d8e57600080fd5b600160a060020a0383166000908152601360205260409020548210610db257600080fd5b600160a060020a0383166000908152601360205260409020805483908110610dd657fe5b906000526020600020900154905092915050565b60015433600160a060020a03908116911614610e0557600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b600a5433600160a060020a03908116911614610e4257600080fd5b600c5460a060020a900460ff161515610e5a57600080fd5b600c805474ff000000000000000000000000000000000000000019169055565b610ce38383836020604051908101604052600081526001611cd5565b600a5433600160a060020a03908116911614610eb157600080fd5b600b8054600160a060020a031916600160a060020a0392909216919091179055565b600d546000908210610ee457600080fd5b506000908152600e602052604090205490565b600354600160a060020a031681565b60015433600160a060020a03908116911614610f2157600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b600c5460a060020a900460ff1681565b600160a060020a03331660009081526006602052604081205460ff161515610f7a57600080fd5b60025483908390600160a060020a0316158061100d5750600254600160a060020a0316630e972421838360006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b1515610ff157600080fd5b6102c65a03f1151561100257600080fd5b505050604051805190505b151561101857600080fd5b6110228585611fdf565b95945050505050565b600b5433600160a060020a0390811691161461104657600080fd5b600b54600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561107f57600080fd5b565b6000818152601060205260408120548290600160a060020a031615156110a657600080fd5b5050600090815260106020526040902054600160a060020a031690565b6000600160a060020a03821615156110da57600080fd5b50600160a060020a031660009081526013602052604090205490565b60015433600160a060020a0390811691161461111157600080fd5b600160a060020a03821660009081526008602052604090205460ff161515811515141561113d57600080fd5b600160a060020a03919091166000908152600860205260409020805460ff1916911515919091179055565b600554600160a060020a031681565b60015433600160a060020a0390811691161461119257600080fd5b600160a060020a03821660009081526007602052604090205460ff16151581151514156111be57600080fd5b600160a060020a03919091166000908152600760205260409020805460ff1916911515919091179055565b600a5433600160a060020a03908116911614806112145750600b5433600160a060020a039081169116145b8061122d5750600c5433600160a060020a039081169116145b151561123857600080fd5b600c5460a060020a900460ff161561124f57600080fd5b600c805474ff0000000000000000000000000000000000000000191660a060020a179055565b60015433600160a060020a0390811691161461129057600080fd5b60028054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146112cd57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b6112f7612462565b60408051908101604052600481527f41584945000000000000000000000000000000000000000000000000000000006020820152905090565b60076020526000908152604090205460ff1681565b600254600160a060020a031681565b60096020526000908152604090205460ff1681565b60015433600160a060020a0390811691161461138457600080fd5b600160a060020a03821660009081526006602052604090205460ff16151581151514156113b057600080fd5b600160a060020a03919091166000908152600660205260409020805460ff1916911515919091179055565b600c5460a060020a900460ff16156113f257600080fd5b600160a060020a0333811660009081526011602090815260408083209386168352929052205460ff161515811515141561142b57600080fd5b33600160a060020a0390811660008181526011602090815260408083209487168084529490915290819020805460ff19168515151790557f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190849051901515815260200160405180910390a35050565b60086020526000908152604090205460ff1681565b600081815260106020526040812054819081908490600160a060020a031615156114d957600080fd5b60178054869081106114e757fe5b9060005260206000209060020201915081600001548260010154935093505050915091565b600160a060020a03331660009081526009602052604081205460ff16151561153357600080fd5b6000838152601060205260409020548390600160a060020a0316151561155857600080fd5b60055484908490600160a060020a031615806115e25750600554600160a060020a0316639613bc90838360006040516020015260405160e060020a63ffffffff851602815260048101929092526024820152604401602060405180830381600087803b15156115c657600080fd5b6102c65a03f115156115d757600080fd5b505050604051805190505b15156115ed57600080fd5b60178054879081106115fb57fe5b90600052602060002090600202016000015493508460178781548110151561161f57fe5b6000918252602090912060029091020155857f6715bb2e56d8b9cd079426816318abbb6ee679a7e8e64602b38bf5c074b58e55858760405191825260208201526040908101905180910390a2505050505050565b600c54600160a060020a031681565b6116c085858585858080601f01602080910402602001604051908101604052818152929190602084018383808284375060019450611cd59350505050565b5050505050565b60158054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561175d5780601f106117325761010080835404028352916020019161175d565b820191906000526020600020905b81548152906001019060200180831161174057829003601f168201915b505050505081565b60066020526000908152604090205460ff1681565b611782612462565b61178a612462565b611792612462565b60008061179d612462565b6000878152601060205260408120548890600160a060020a031615156117c257600080fd5b60158054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118585780601f1061182d57610100808354040283529160200191611858565b820191906000526020600020905b81548152906001019060200180831161183b57829003601f168201915b5050505050965060168054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118f55780601f106118ca576101008083540402835291602001916118f5565b820191906000526020600020905b8154815290600101906020018083116118d857829003601f168201915b505050505095508894505b600190930192600a85049450600085111561191a57611900565b8387510160050160405180591061192e5750595b818152601f19601f830116810160200160405290509250600683510391508894505b60001982019160f860020a6030600a880601029084908151811061197057fe5b906020010190600160f860020a031916908160001a905350600a85049450600085111561199c57611950565b600091505b86518210156119f7578682815181106119b657fe5b016020015160f860020a900460f860020a028383815181106119d457fe5b906020010190600160f860020a031916908160001a9053506001909101906119a1565b600091505b8551821015611a5857858281518110611a1157fe5b016020015160f860020a900460f860020a02836005848651010381518110611a3557fe5b906020010190600160f860020a031916908160001a9053506001909101906119fc565b5090979650505050505050565b600160a060020a03331660009081526007602052604090205460ff161515611a8c57600080fd5b60035482908290600160a060020a03161580611b185750600354600160a060020a03166318dcdfbe838360006040516020015260405160e060020a63ffffffff8516028152600481019290925215156024820152604401602060405180830381600087803b1515611afc57600080fd5b6102c65a03f11515611b0d57600080fd5b505050604051805190505b1515611b2357600080fd5b611b2c84612085565b8215611b57576017805485908110611b4057fe5b600091825260208220600290910201818155600101555b837fc7e9cc512eb27debd93c5ff5830060459d7e6777ebcb540f3c9e2e520eb2502b60405160405180910390a250505050565b60168054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561175d5780601f106117325761010080835404028352916020019161175d565b600160a060020a03918216600090815260116020908152604080832093909416825291909152205460ff1690565b600a5433600160a060020a03908116911614611c3e57600080fd5b611c4a60158585612474565b506116c060168383612474565b600090815260106020526040902054600160a060020a0391821691161490565b600160a060020a03821660009081526008602052604081205460ff1680611cce5750600082815260106020908152604080832054600160a060020a03908116845260118352818420908716845290915290205460ff165b9392505050565b6000838152601060205260409020548390600160a060020a03161515611cfa57600080fd5b83611d053382611c57565b80611d155750611d153382611c77565b80611d255750611d25338261215a565b1515611d3057600080fd5b600454879087908790600160a060020a03161580611dd15750600454600160a060020a031663f7ebc39a84848460006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611db557600080fd5b6102c65a03f11515611dc657600080fd5b505050604051805190505b1515611ddc57600080fd5b611de68a89611c57565b1515611df157600080fd5b600160a060020a0389161515611e0657600080fd5b600160a060020a03898116908b161415611e1f57600080fd5b611e298a8961217a565b6000888152601260205260408082208054600160a060020a0319169055600160a060020a038c16907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925908b905190815260200160405180910390a3611e8e898961230b565b858015611e9f5750611e9f8961238e565b15611f8c5788600160a060020a031663f0b9e5ba61c3508c8b8b6040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f26578082015183820152602001611f0e565b50505050905090810190601f168015611f535780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600088803b1515611f7357600080fd5b87f11515611f8057600080fd5b50505050604051805150505b88600160a060020a03168a600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a60405190815260200160405180910390a350505050505050505050565b6000611fe96124f2565b60408051908101604052848152426020820152601780549192506001918083016120138382612509565b60009283526020909220849160020201815181556020820151816001015550500391506120408383612396565b82600160a060020a0316827f0aa75ef3ef0b2c4f092828edf4e4ded5a223d08350535710b957679883ff3a3c8660405190815260200160405180910390a35092915050565b600081815260106020526040812054600160a060020a031690808215156120ab57600080fd5b6120b5838561217a565b600d546120c990600163ffffffff61244116565b600d8181556000868152600f602081815260408084208054968552600e835281852054908590559454845280842084905585845280842085905584845291905280822084905592945090925090600160a060020a038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9087905190815260200160405180910390a350505050565b600090815260126020526040902054600160a060020a0391821691161490565b60008080600160a060020a038516151561219357600080fd5b600084815260146020908152604080832054600160a060020a03891684526013909252909120549093506121ce90600163ffffffff61244116565b600160a060020a0386166000908152601360205260409020805491935090839081106121f657fe5b60009182526020808320909101548683526010825260408084208054600160a060020a0319169055600160a060020a038916845260139092529120805491925082918590811061224257fe5b6000918252602080832090910192909255828152601482526040808220869055600160a060020a038816825260139092522080548390811061228057fe5b60009182526020808320909101829055600160a060020a038716825260139052604090208054906122b5906000198301612535565b50600160a060020a03851660009081526013602052604090205415156122f657600160a060020a03851660009081526013602052604081206122f691612559565b50505060009081526014602052604081205550565b6000600160a060020a038316151561232257600080fd5b5060008181526010602090815260408083208054600160a060020a031916600160a060020a038716908117909155835260139091529020805490816001810161236b8382612535565b506000918252602080832091909101849055928152601490925260409091205550565b6000903b1190565b600081815260106020526040902054600160a060020a0316156123b857600080fd5b6123c2828261230b565b600d80546000908152600e602090815260408083208590559254848352600f9091529190208190556123fb90600163ffffffff61245316565b600d55600160a060020a03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b60008282111561244d57fe5b50900390565b600082820183811015611cce57fe5b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106124b55782800160ff198235161785556124e2565b828001600101855582156124e2579182015b828111156124e25782358255916020019190600101906124c7565b506124ee92915061257a565b5090565b604080519081016040526000808252602082015290565b815481835581811511610ce357600202816002028360005260206000209182019101610ce39190612594565b815481835581811511610ce357600083815260209020610ce391810190830161257a565b5080546000825590600052602060002090810190612577919061257a565b50565b61093c91905b808211156124ee5760008155600101612580565b61093c91905b808211156124ee576000808255600182015560020161259a5600a165627a7a723058205c581cfc083f257425f5769585ca2b5795a24934862554ed6f13b530d4fdb0510029

Swarm Source

bzzr://5c581cfc083f257425f5769585ca2b5795a24934862554ed6f13b530d4fdb051

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

OVERVIEW

Axie Infinity is a digital pet community centered around collecting, training, raising, and battling fantasy creatures called Axie.

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.