ETH Price: $3,579.35 (-2.86%)

Contract

0xacbD6089ac5d2dE7f49B53269416DbaeA4da9f27
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...198290852024-05-09 1:03:11207 days ago1715216591IN
0xacbD6089...eA4da9f27
0 ETH0.000093883.89180285
Set Approval For...198289412024-05-09 0:34:11207 days ago1715214851IN
0xacbD6089...eA4da9f27
0 ETH0.000173463.76803534
Set Approval For...194668112024-03-19 5:47:47258 days ago1710827267IN
0xacbD6089...eA4da9f27
0 ETH0.0011399224.76210043
Set Approval For...191006982024-01-27 21:50:59309 days ago1706392259IN
0xacbD6089...eA4da9f27
0 ETH0.000455549.89561905
Set Approval For...189105172024-01-01 5:29:11336 days ago1704086951IN
0xacbD6089...eA4da9f27
0 ETH0.00023589.7410257
Set Approval For...189100432024-01-01 3:53:11336 days ago1704081191IN
0xacbD6089...eA4da9f27
0 ETH0.0004822810.45736278
Set Approval For...189007982023-12-30 20:46:35337 days ago1703969195IN
0xacbD6089...eA4da9f27
0 ETH0.0010421122.59623183
Safe Transfer Fr...187669562023-12-12 1:53:47356 days ago1702346027IN
0xacbD6089...eA4da9f27
0 ETH0.001455728.50809256
Safe Transfer Fr...187669542023-12-12 1:53:23356 days ago1702346003IN
0xacbD6089...eA4da9f27
0 ETH0.001520829.77596076
Safe Transfer Fr...187669522023-12-12 1:52:59356 days ago1702345979IN
0xacbD6089...eA4da9f27
0 ETH0.0013989527.4030466
Set Approval For...178204912023-08-01 13:36:23488 days ago1690896983IN
0xacbD6089...eA4da9f27
0 ETH0.0011325824.60262835
Safe Transfer Fr...177588162023-07-23 22:32:47497 days ago1690151567IN
0xacbD6089...eA4da9f27
0 ETH0.0010208319.96671672
Safe Transfer Fr...177588122023-07-23 22:31:59497 days ago1690151519IN
0xacbD6089...eA4da9f27
0 ETH0.0010164419.87611232
Safe Transfer Fr...177588082023-07-23 22:31:11497 days ago1690151471IN
0xacbD6089...eA4da9f27
0 ETH0.0010900821.32618719
Set Approval For...177099432023-07-17 2:15:11504 days ago1689560111IN
0xacbD6089...eA4da9f27
0 ETH0.0007829217.00712656
Safe Transfer Fr...176596812023-07-10 0:21:59511 days ago1688948519IN
0xacbD6089...eA4da9f27
0 ETH0.0007909514.14258116
Set Approval For...170293862023-04-12 3:52:35600 days ago1681271555IN
0xacbD6089...eA4da9f27
0 ETH0.0009812221.31466491
Set Approval For...169155942023-03-27 1:55:35616 days ago1679882135IN
0xacbD6089...eA4da9f27
0 ETH0.0006753414.67026116
Set Approval For...169108632023-03-26 9:59:11617 days ago1679824751IN
0xacbD6089...eA4da9f27
0 ETH0.0006085313.21906823
Safe Transfer Fr...168818442023-03-22 8:07:47621 days ago1679472467IN
0xacbD6089...eA4da9f27
0 ETH0.0005739711.22648598
Safe Transfer Fr...167940002023-03-09 23:47:35633 days ago1678405655IN
0xacbD6089...eA4da9f27
0 ETH0.0016006528.62039926
Safe Transfer Fr...167275192023-02-28 15:22:23642 days ago1677597743IN
0xacbD6089...eA4da9f27
0 ETH0.0014168827.71946585
Safe Transfer Fr...166903922023-02-23 10:06:11648 days ago1677146771IN
0xacbD6089...eA4da9f27
0 ETH0.0008733325.71438189
Safe Transfer Fr...166903922023-02-23 10:06:11648 days ago1677146771IN
0xacbD6089...eA4da9f27
0 ETH0.0008730225.71438189
Safe Transfer Fr...166903922023-02-23 10:06:11648 days ago1677146771IN
0xacbD6089...eA4da9f27
0 ETH0.0008733325.71438189
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
198289422024-05-09 0:34:23207 days ago1715214863
0xacbD6089...eA4da9f27
0 ETH
191007032024-01-27 21:51:59309 days ago1706392319
0xacbD6089...eA4da9f27
0 ETH
189100912024-01-01 4:02:47336 days ago1704081767
0xacbD6089...eA4da9f27
0 ETH
189100872024-01-01 4:01:59336 days ago1704081719
0xacbD6089...eA4da9f27
0 ETH
189100842024-01-01 4:01:23336 days ago1704081683
0xacbD6089...eA4da9f27
0 ETH
189100762024-01-01 3:59:47336 days ago1704081587
0xacbD6089...eA4da9f27
0 ETH
189100642024-01-01 3:57:23336 days ago1704081443
0xacbD6089...eA4da9f27
0 ETH
189008292023-12-30 20:52:59337 days ago1703969579
0xacbD6089...eA4da9f27
0 ETH
189008292023-12-30 20:52:59337 days ago1703969579
0xacbD6089...eA4da9f27
0 ETH
189008292023-12-30 20:52:59337 days ago1703969579
0xacbD6089...eA4da9f27
0 ETH
189008292023-12-30 20:52:59337 days ago1703969579
0xacbD6089...eA4da9f27
0 ETH
189008002023-12-30 20:46:59337 days ago1703969219
0xacbD6089...eA4da9f27
0 ETH
187424552023-12-08 15:32:47359 days ago1702049567
0xacbD6089...eA4da9f27
0 ETH
177100162023-07-17 2:29:47504 days ago1689560987
0xacbD6089...eA4da9f27
0 ETH
177100162023-07-17 2:29:47504 days ago1689560987
0xacbD6089...eA4da9f27
0 ETH
170294192023-04-12 3:59:11600 days ago1681271951
0xacbD6089...eA4da9f27
0 ETH
170294192023-04-12 3:59:11600 days ago1681271951
0xacbD6089...eA4da9f27
0 ETH
167844692023-03-08 15:36:35634 days ago1678289795
0xacbD6089...eA4da9f27
0 ETH
166606832023-02-19 5:52:59652 days ago1676785979
0xacbD6089...eA4da9f27
0 ETH
166606832023-02-19 5:52:59652 days ago1676785979
0xacbD6089...eA4da9f27
0 ETH
166238242023-02-14 1:50:23657 days ago1676339423
0xacbD6089...eA4da9f27
0 ETH
166144652023-02-12 18:26:59658 days ago1676226419
0xacbD6089...eA4da9f27
0 ETH
166144652023-02-12 18:26:59658 days ago1676226419
0xacbD6089...eA4da9f27
0 ETH
166037512023-02-11 6:32:47660 days ago1676097167
0xacbD6089...eA4da9f27
0 ETH
166037462023-02-11 6:31:47660 days ago1676097107
0xacbD6089...eA4da9f27
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ZooOfNeuralAutomata

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion
File 1 of 6 : ZooOfNeuralAutomata.sol
/* SPDX-License-Identifier: MIT
          _____                   _______                   _____                    _____          
         /\    \                 /::\    \                 /\    \                  /\    \         
        /::\    \               /::::\    \               /::\____\                /::\    \        
        \:::\    \             /::::::\    \             /::::|   |               /::::\    \       
         \:::\    \           /::::::::\    \           /:::::|   |              /::::::\    \      
          \:::\    \         /:::/~~\:::\    \         /::::::|   |             /:::/\:::\    \     
           \:::\    \       /:::/    \:::\    \       /:::/|::|   |            /:::/__\:::\    \    
            \:::\    \     /:::/    / \:::\    \     /:::/ |::|   |           /::::\   \:::\    \   
             \:::\    \   /:::/____/   \:::\____\   /:::/  |::|   | _____    /::::::\   \:::\    \  
              \:::\    \ |:::|    |     |:::|    | /:::/   |::|   |/\    \  /:::/\:::\   \:::\    \ 
_______________\:::\____\|:::|____|     |:::|    |/:: /    |::|   /::\____\/:::/  \:::\   \:::\____\
\::::::::::::::::::/    / \:::\    \   /:::/    / \::/    /|::|  /:::/    /\::/    \:::\  /:::/    /
 \::::::::::::::::/____/   \:::\    \ /:::/    /   \/____/ |::| /:::/    /  \/____/ \:::\/:::/    / 
  \:::\~~~~\~~~~~~          \:::\    /:::/    /            |::|/:::/    /            \::::::/    /  
   \:::\    \                \:::\__/:::/    /             |::::::/    /              \::::/    /   
    \:::\    \                \::::::::/    /              |:::::/    /               /:::/    /    
     \:::\    \                \::::::/    /               |::::/    /               /:::/    /     
      \:::\    \                \::::/    /                /:::/    /               /:::/    /      
       \:::\____\                \::/____/                /:::/    /               /:::/    /       
        \::/    /                 ~~                      \::/    /                \::/    /        
         \/____/                                           \/____/                  \/____/                                                                                                             
*/

pragma solidity 0.8.15;

import {IZooOfNeuralAutomata} from "./interfaces/IZooOfNeuralAutomata.sol";
import {INeuralAutomataEngine, NCAParams} from "./interfaces/INeuralAutomataEngine.sol";
import {ERC1155} from "../lib/solmate/src/tokens/ERC1155.sol";
import {Owned} from "../lib/solmate/src/auth/Owned.sol";
import {Base64} from "./utils/Base64.sol";

contract ZooOfNeuralAutomata is IZooOfNeuralAutomata, ERC1155, Owned {

    string public name = "Zoo of Neural Automata";
    string public symbol = "ZoNA";
    string public contractURI;

    address public engine;
 
    mapping(uint256 => NCAParams) public tokenParams;
    mapping(uint256 => address) public tokenMinter;
    mapping(uint256 => address) public tokenBurner;
    mapping(uint256 => string) public tokenBaseURI;
    mapping(uint256 => bool) public tokenFrozen;

    modifier onlyUnfrozen(uint256 _id){
        require(!tokenFrozen[_id]);
        _;
    }

    constructor(
        address _engine, 
        string memory _contractURI
    ) Owned(msg.sender) {
        engine = _engine;
        contractURI = _contractURI;
    }

    function newToken(
        uint256 _id,
        NCAParams memory _params, 
        address _minter, 
        address _burner,
        string memory _baseURI
    ) external onlyOwner onlyUnfrozen(_id) {
        tokenParams[_id] = _params;
        tokenMinter[_id] = _minter;
        tokenBurner[_id] = _burner;
        tokenBaseURI[_id] = _baseURI;
    }

    function updateParams(
        uint256 _id, 
        NCAParams memory _params
    ) external onlyOwner onlyUnfrozen(_id) {
        tokenParams[_id] = _params;
    }

    function updateMinter(
        uint256 _id, 
        address _minter
    ) external onlyOwner onlyUnfrozen(_id) {
        tokenMinter[_id] = _minter;
    }

    function updateBurner(
        uint256 _id, 
        address _burner
    ) external onlyOwner onlyUnfrozen(_id) {
        tokenBurner[_id] = _burner;
    }

    function updateBaseURI(
        uint256 _id, 
        string memory _baseURI
    ) external onlyOwner onlyUnfrozen(_id) {
        tokenBaseURI[_id] = _baseURI;
    }

    function freeze(uint256 _id) external onlyOwner {
        tokenFrozen[_id] = true;
    }

    function updateEngine(address _engine) external onlyOwner  {
        engine = _engine;
    }

    function updateContractURI(string memory _contractURI) external onlyOwner  {
        contractURI = _contractURI;
    } 

    function mint(
        address _to,
        uint256 _id,
        uint256 _amount
    ) external {
        require(msg.sender == tokenMinter[_id]);
        _mint(_to, _id, _amount, "");
    }

    function burn(
        address _from,
        uint256 _id,
        uint256 _amount
    ) external {
        require(msg.sender == tokenBurner[_id]);
        _burn(_from, _id, _amount);
    }

    function uri(uint256 id) public view override returns (string memory){
        require(tokenMinter[id] != address(0));
        return string.concat(
            "data:application/json;base64,",
            Base64.encode(
                abi.encodePacked(
                    string.concat(
                        tokenBaseURI[id],
                        "\"",
                        INeuralAutomataEngine(engine).page(tokenParams[id]),
                        "\"}"
                    )
                )
            )
        );
    }

}

File 2 of 6 : Owned.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _owner) {
        owner = _owner;

        emit OwnershipTransferred(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function transferOwnership(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnershipTransferred(msg.sender, newOwner);
    }
}

File 3 of 6 : ERC1155.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Minimalist and gas efficient standard ERC1155 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event TransferSingle(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256 id,
        uint256 amount
    );

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] amounts
    );

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    event URI(string value, uint256 indexed id);

    /*//////////////////////////////////////////////////////////////
                             ERC1155 STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => mapping(uint256 => uint256)) public balanceOf;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                             METADATA LOGIC
    //////////////////////////////////////////////////////////////*/

    function uri(uint256 id) public view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                              ERC1155 LOGIC
    //////////////////////////////////////////////////////////////*/

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) public virtual {
        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        balanceOf[from][id] -= amount;
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, from, id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) public virtual {
        require(ids.length == amounts.length, "LENGTH_MISMATCH");

        require(msg.sender == from || isApprovedForAll[from][msg.sender], "NOT_AUTHORIZED");

        // Storing these outside the loop saves ~15 gas per iteration.
        uint256 id;
        uint256 amount;

        for (uint256 i = 0; i < ids.length; ) {
            id = ids[i];
            amount = amounts[i];

            balanceOf[from][id] -= amount;
            balanceOf[to][id] += amount;

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, from, ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids)
        public
        view
        virtual
        returns (uint256[] memory balances)
    {
        require(owners.length == ids.length, "LENGTH_MISMATCH");

        balances = new uint256[](owners.length);

        // Unchecked because the only math done is incrementing
        // the array index counter which cannot possibly overflow.
        unchecked {
            for (uint256 i = 0; i < owners.length; ++i) {
                balances[i] = balanceOf[owners[i]][ids[i]];
            }
        }
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0xd9b67a26 || // ERC165 Interface ID for ERC1155
            interfaceId == 0x0e89341c; // ERC165 Interface ID for ERC1155MetadataURI
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        balanceOf[to][id] += amount;

        emit TransferSingle(msg.sender, address(0), to, id, amount);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155Received(msg.sender, address(0), id, amount, data) ==
                    ERC1155TokenReceiver.onERC1155Received.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchMint(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[to][ids[i]] += amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, address(0), to, ids, amounts);

        require(
            to.code.length == 0
                ? to != address(0)
                : ERC1155TokenReceiver(to).onERC1155BatchReceived(msg.sender, address(0), ids, amounts, data) ==
                    ERC1155TokenReceiver.onERC1155BatchReceived.selector,
            "UNSAFE_RECIPIENT"
        );
    }

    function _batchBurn(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        uint256 idsLength = ids.length; // Saves MLOADs.

        require(idsLength == amounts.length, "LENGTH_MISMATCH");

        for (uint256 i = 0; i < idsLength; ) {
            balanceOf[from][ids[i]] -= amounts[i];

            // An array can't have a total length
            // larger than the max uint256 value.
            unchecked {
                ++i;
            }
        }

        emit TransferBatch(msg.sender, from, address(0), ids, amounts);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        balanceOf[from][id] -= amount;

        emit TransferSingle(msg.sender, from, address(0), id, amount);
    }
}

/// @notice A generic interface for a contract which properly accepts ERC1155 tokens.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC1155.sol)
abstract contract ERC1155TokenReceiver {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155Received.selector;
    }

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC1155TokenReceiver.onERC1155BatchReceived.selector;
    }
}

File 4 of 6 : INeuralAutomataEngine.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

struct NCAParams {
    string seed;
    string bg;
    string fg1;
    string fg2;
    string matrix;
    string activation;
    string rand;
    string mods;
}

interface INeuralAutomataEngine {
    function baseScript() external view returns(string memory);

    function parameters(NCAParams memory _params) external pure returns(string memory);

    function p5() external view returns(string memory);

    function script(NCAParams memory _params) external view returns(string memory);

    function page(NCAParams memory _params) external view returns(string memory);
}

File 5 of 6 : IZooOfNeuralAutomata.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

import {NCAParams} from "./INeuralAutomataEngine.sol";

interface IZooOfNeuralAutomata {

    function updateEngine(address _engine) external;

    function updateContractURI(string memory _contractURI) external;

    function updateParams(uint256 _id, NCAParams memory _params) external;

    function updateMinter(uint256 _id, address _minter) external;

    function updateBurner(uint256 _id, address _burner) external;

    function updateBaseURI(uint256 _id, string memory _baseURI) external;

    function freeze(uint256 _id) external;

    function newToken(
        uint256 _id,
        NCAParams memory _params, 
        address _minter, 
        address _burner,
        string memory _baseURI
    ) external;

    function mint(
        address _to,
        uint256 _id,
        uint256 _amount
    ) external;

    function burn(
        address _from,
        uint256 _id,
        uint256 _amount
    ) external;
    
}

File 6 of 6 : Base64.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

library Base64 {
    string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    function encode(bytes memory data) public pure returns (string memory) {
      if (data.length == 0) return "";

      string memory table = _TABLE;
      string memory result = new string(4 * ((data.length + 2) / 3));

      assembly {
          let tablePtr := add(table, 1)
          let resultPtr := add(result, 32)

          for {
              let dataPtr := data
              let endPtr := add(data, mload(data))
          } lt(dataPtr, endPtr) {

          } {
              dataPtr := add(dataPtr, 3)
              let input := mload(dataPtr)
              mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F))))
              resultPtr := add(resultPtr, 1) 
              mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F))))
              resultPtr := add(resultPtr, 1) 
              mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F))))
              resultPtr := add(resultPtr, 1) 
              mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F))))
              resultPtr := add(resultPtr, 1) 
          }
          switch mod(mload(data), 3)
          case 1 {
              mstore8(sub(resultPtr, 1), 0x3d)
              mstore8(sub(resultPtr, 2), 0x3d)
          }
          case 2 {
              mstore8(sub(resultPtr, 1), 0x3d)
          }
      }
      return result;
  }
}

Settings
{
  "remappings": [
    "ds-test/=lib/solmate/lib/ds-test/src/",
    "ethfs/=lib/ethfs/",
    "ethier/=lib/ethfs/packages/contracts/lib/ethier/",
    "forge-std/=lib/forge-std/src/",
    "openzeppelin/=lib/ethfs/packages/contracts/lib/openzeppelin-contracts/contracts/",
    "solady/=lib/ethfs/packages/contracts/lib/solady/src/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "metadata": {
    "bytecodeHash": "none"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "libraries": {
    "src/utils/Base64.sol": {
      "Base64": "0x38edb18902ed19d6eb3f532233a0246183273bf9"
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_engine","type":"address"},{"internalType":"string","name":"_contractURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"engine","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"freeze","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"components":[{"internalType":"string","name":"seed","type":"string"},{"internalType":"string","name":"bg","type":"string"},{"internalType":"string","name":"fg1","type":"string"},{"internalType":"string","name":"fg2","type":"string"},{"internalType":"string","name":"matrix","type":"string"},{"internalType":"string","name":"activation","type":"string"},{"internalType":"string","name":"rand","type":"string"},{"internalType":"string","name":"mods","type":"string"}],"internalType":"struct NCAParams","name":"_params","type":"tuple"},{"internalType":"address","name":"_minter","type":"address"},{"internalType":"address","name":"_burner","type":"address"},{"internalType":"string","name":"_baseURI","type":"string"}],"name":"newToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenBaseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenBurner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenFrozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenParams","outputs":[{"internalType":"string","name":"seed","type":"string"},{"internalType":"string","name":"bg","type":"string"},{"internalType":"string","name":"fg1","type":"string"},{"internalType":"string","name":"fg2","type":"string"},{"internalType":"string","name":"matrix","type":"string"},{"internalType":"string","name":"activation","type":"string"},{"internalType":"string","name":"rand","type":"string"},{"internalType":"string","name":"mods","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"string","name":"_baseURI","type":"string"}],"name":"updateBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_burner","type":"address"}],"name":"updateBurner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_contractURI","type":"string"}],"name":"updateContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_engine","type":"address"}],"name":"updateEngine","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"address","name":"_minter","type":"address"}],"name":"updateMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"components":[{"internalType":"string","name":"seed","type":"string"},{"internalType":"string","name":"bg","type":"string"},{"internalType":"string","name":"fg1","type":"string"},{"internalType":"string","name":"fg2","type":"string"},{"internalType":"string","name":"matrix","type":"string"},{"internalType":"string","name":"activation","type":"string"},{"internalType":"string","name":"rand","type":"string"},{"internalType":"string","name":"mods","type":"string"}],"internalType":"struct NCAParams","name":"_params","type":"tuple"}],"name":"updateParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60c0604052601660809081527f5a6f6f206f66204e657572616c204175746f6d6174610000000000000000000060a0526003906200003e9082620001b3565b50604080518082019091526004808252635a6f4e4160e01b602083015290620000689082620001b3565b503480156200007657600080fd5b506040516200367a3803806200367a83398101604081905262000099916200027f565b600280546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b0319166001600160a01b0384161790556005620001058282620001b3565b5050506200037f565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200013957607f821691505b6020821081036200015a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001ae57600081815260208120601f850160051c81016020861015620001895750805b601f850160051c820191505b81811015620001aa5782815560010162000195565b5050505b505050565b81516001600160401b03811115620001cf57620001cf6200010e565b620001e781620001e0845462000124565b8462000160565b602080601f8311600181146200021f5760008415620002065750858301515b600019600386901b1c1916600185901b178555620001aa565b600085815260208120601f198616915b8281101562000250578886015182559484019460019091019084016200022f565b50858210156200026f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080604083850312156200029357600080fd5b82516001600160a01b0381168114620002ab57600080fd5b602084810151919350906001600160401b0380821115620002cb57600080fd5b818601915086601f830112620002e057600080fd5b815181811115620002f557620002f56200010e565b604051601f8201601f19908116603f011681019083821181831017156200032057620003206200010e565b8160405282815289868487010111156200033957600080fd5b600093505b828410156200035d57848401860151818501870152928501926200033e565b828411156200036f5760008684830101525b8096505050505050509250929050565b6132eb806200038f6000396000f3fe608060405234801561001057600080fd5b50600436106101ce5760003560e01c80637e5b1e2411610104578063bd15092f116100a2578063e985e9c511610071578063e985e9c51461048a578063f242432a146104b8578063f2fde38b146104cb578063f5298aca146104de57600080fd5b8063bd15092f1461043c578063c9d4623f1461044f578063d7a78db81461046f578063e8a3d4851461048257600080fd5b80638da5cb5b116100de5780638da5cb5b146103ee57806395d89b411461040e578063a22cb46514610416578063b87152371461042957600080fd5b80637e5b1e2414610392578063817234fa146103a55780638b1cc4f4146103b857600080fd5b80632eb2c2d611610171578063513f99e71161014b578063513f99e7146102da57806359c9ec74146102fd578063754263e1146103105780637c57d9471461033757600080fd5b80632eb2c2d6146102945780634656d75a146102a75780634e1273f4146102ba57600080fd5b806306fdde03116101ad57806306fdde03146102465780630777ca3d1461025b5780630e89341c1461026e578063156e29f61461028157600080fd5b8062fdd58e146101d357806301ffc9a71461020e57806303409d6b14610231575b600080fd5b6101fb6101e1366004612260565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61022161021c3660046122bb565b6104f1565b6040519015158152602001610205565b61024461023f3660046122df565b6105d6565b005b61024e6106ce565b6040516102059190612381565b6102446102693660046122df565b61075c565b61024e61027c366004612394565b61084f565b61024461028f3660046123ad565b610a6e565b6102446102a236600461246e565b610abe565b61024e6102b5366004612394565b610eaf565b6102cd6102c8366004612529565b610ec8565b6040516102059190612595565b6102216102e8366004612394565b600b6020526000908152604090205460ff1681565b61024461030b36600461286b565b61103f565b61032361031e366004612394565b611216565b6040516102059897969594939291906128fa565b61036d610345366004612394565b60086020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610205565b6102446103a03660046129a9565b611696565b6102446103b33660046129e6565b611727565b61036d6103c6366004612394565b60096020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60025461036d9073ffffffffffffffffffffffffffffffffffffffff1681565b61024e6117e4565b610244610424366004612a2d565b6117f1565b610244610437366004612a69565b611888565b61024461044a366004612aa6565b6119e1565b60065461036d9073ffffffffffffffffffffffffffffffffffffffff1681565b61024461047d366004612394565b611aa9565b61024e611b63565b610221610498366004612ac1565b600160209081526000928352604080842090915290825290205460ff1681565b6102446104c6366004612aeb565b611b70565b6102446104d9366004612aa6565b611e6e565b6102446104ec3660046123ad565b611f60565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061058457507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806105d057507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60025473ffffffffffffffffffffffffffffffffffffffff16331461065c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000828152600b6020526040902054829060ff161561067a57600080fd5b5060009182526008602052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600380546106db90612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461070790612b63565b80156107545780601f1061072957610100808354040283529160200191610754565b820191906000526020600020905b81548152906001019060200180831161073757829003601f168201915b505050505081565b60025473ffffffffffffffffffffffffffffffffffffffff1633146107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000828152600b6020526040902054829060ff16156107fb57600080fd5b5060009182526009602052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60008181526008602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661088057600080fd5b6000828152600a6020908152604080832060065460079093529281902090517f7ba4965b0000000000000000000000000000000000000000000000000000000081527338edb18902ed19d6eb3f532233a0246183273bf9936312496a1b93909273ffffffffffffffffffffffffffffffffffffffff90911691637ba4965b9161090b91600401612c51565b600060405180830381865afa158015610928573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261096e9190810190612d45565b60405160200161097f929190612db3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526109ba91602001612eb0565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016109e59190612381565b600060405180830381865af4158015610a02573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a489190810190612d45565b604051602001610a589190612ecc565b6040516020818303038152906040529050919050565b60008281526008602052604090205473ffffffffffffffffffffffffffffffffffffffff163314610a9e57600080fd5b610ab983838360405180602001604052806000815250611f9b565b505050565b848314610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610653565b3373ffffffffffffffffffffffffffffffffffffffff89161480610b7b575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b610be1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610653565b60008060005b87811015610cb657888882818110610c0157610c01612f11565b905060200201359250868682818110610c1c57610c1c612f11565b73ffffffffffffffffffffffffffffffffffffffff8e1660009081526020818152604080832089845282528220805493909102949094013595508593925090610c66908490612f6f565b909155505073ffffffffffffffffffffffffffffffffffffffff8a1660009081526020818152604080832086845290915281208054849290610ca9908490612f86565b9091555050600101610be7565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051610d319493929190612fed565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610e23576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c8190610db89033908f908e908e908e908e908e908e90600401613068565b6020604051808303816000875af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb91906130ca565b7fffffffff000000000000000000000000000000000000000000000000000000001614610e3d565b73ffffffffffffffffffffffffffffffffffffffff891615155b610ea3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610653565b50505050505050505050565b600a60205260009081526040902080546106db90612b63565b6060838214610f33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610653565b8367ffffffffffffffff811115610f4c57610f4c6125d9565b604051908082528060200260200182016040528015610f75578160200160208202803683370190505b50905060005b8481101561103657600080878784818110610f9857610f98612f11565b9050602002016020810190610fad9190612aa6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610ffb57610ffb612f11565b9050602002013581526020019081526020016000205482828151811061102357611023612f11565b6020908102919091010152600101610f7b565b50949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146110c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000858152600b6020526040902054859060ff16156110de57600080fd5b6000868152600760205260409020855186919081906110fd908261312d565b5060208201516001820190611112908261312d565b5060408201516002820190611127908261312d565b506060820151600382019061113c908261312d565b5060808201516004820190611151908261312d565b5060a08201516005820190611166908261312d565b5060c0820151600682019061117b908261312d565b5060e08201516007820190611190908261312d565b5050506000868152600860209081526040808320805473ffffffffffffffffffffffffffffffffffffffff808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560098452828520805492891692909116919091179055600a909152902061120d838261312d565b50505050505050565b60076020526000908152604090208054819061123190612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461125d90612b63565b80156112aa5780601f1061127f576101008083540402835291602001916112aa565b820191906000526020600020905b81548152906001019060200180831161128d57829003601f168201915b5050505050908060010180546112bf90612b63565b80601f01602080910402602001604051908101604052809291908181526020018280546112eb90612b63565b80156113385780601f1061130d57610100808354040283529160200191611338565b820191906000526020600020905b81548152906001019060200180831161131b57829003601f168201915b50505050509080600201805461134d90612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461137990612b63565b80156113c65780601f1061139b576101008083540402835291602001916113c6565b820191906000526020600020905b8154815290600101906020018083116113a957829003601f168201915b5050505050908060030180546113db90612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461140790612b63565b80156114545780601f1061142957610100808354040283529160200191611454565b820191906000526020600020905b81548152906001019060200180831161143757829003601f168201915b50505050509080600401805461146990612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461149590612b63565b80156114e25780601f106114b7576101008083540402835291602001916114e2565b820191906000526020600020905b8154815290600101906020018083116114c557829003601f168201915b5050505050908060050180546114f790612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461152390612b63565b80156115705780601f1061154557610100808354040283529160200191611570565b820191906000526020600020905b81548152906001019060200180831161155357829003601f168201915b50505050509080600601805461158590612b63565b80601f01602080910402602001604051908101604052809291908181526020018280546115b190612b63565b80156115fe5780601f106115d3576101008083540402835291602001916115fe565b820191906000526020600020905b8154815290600101906020018083116115e157829003601f168201915b50505050509080600701805461161390612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461163f90612b63565b801561168c5780601f106116615761010080835404028352916020019161168c565b820191906000526020600020905b81548152906001019060200180831161166f57829003601f168201915b5050505050905088565b60025473ffffffffffffffffffffffffffffffffffffffff163314611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6005611723828261312d565b5050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000828152600b6020526040902054829060ff16156117c657600080fd5b6000838152600a602052604090206117de838261312d565b50505050565b600480546106db90612b63565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000828152600b6020526040902054829060ff161561192757600080fd5b600083815260076020526040902082518391908190611946908261312d565b506020820151600182019061195b908261312d565b5060408201516002820190611970908261312d565b5060608201516003820190611985908261312d565b506080820151600482019061199a908261312d565b5060a082015160058201906119af908261312d565b5060c082015160068201906119c4908261312d565b5060e082015160078201906119d9908261312d565b505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025473ffffffffffffffffffffffffffffffffffffffff163314611b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600580546106db90612b63565b3373ffffffffffffffffffffffffffffffffffffffff87161480611bc4575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b611c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610653565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832087845290915281208054859290611c68908490612f6f565b909155505073ffffffffffffffffffffffffffffffffffffffff851660009081526020818152604080832087845290915281208054859290611cab908490612f86565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611dee576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190611d839033908b908a908a908a908a90600401613247565b6020604051808303816000875af1158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc691906130ca565b7fffffffff000000000000000000000000000000000000000000000000000000001614611e08565b73ffffffffffffffffffffffffffffffffffffffff851615155b6119d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610653565b60025473ffffffffffffffffffffffffffffffffffffffff163314611eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60008281526009602052604090205473ffffffffffffffffffffffffffffffffffffffff163314611f9057600080fd5b610ab9838383612199565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915281208054849290611fd9908490612f86565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15612119576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e61906120ae903390600090899089908990600401613299565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906130ca565b7fffffffff000000000000000000000000000000000000000000000000000000001614612133565b73ffffffffffffffffffffffffffffffffffffffff841615155b6117de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610653565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152812080548392906121d7908490612f6f565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461225b57600080fd5b919050565b6000806040838503121561227357600080fd5b61227c83612237565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146122b857600080fd5b50565b6000602082840312156122cd57600080fd5b81356122d88161228a565b9392505050565b600080604083850312156122f257600080fd5b8235915061230260208401612237565b90509250929050565b60005b8381101561232657818101518382015260200161230e565b838111156117de5750506000910152565b6000815180845261234f81602086016020860161230b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006122d86020830184612337565b6000602082840312156123a657600080fd5b5035919050565b6000806000606084860312156123c257600080fd5b6123cb84612237565b95602085013595506040909401359392505050565b60008083601f8401126123f257600080fd5b50813567ffffffffffffffff81111561240a57600080fd5b6020830191508360208260051b850101111561242557600080fd5b9250929050565b60008083601f84011261243e57600080fd5b50813567ffffffffffffffff81111561245657600080fd5b60208301915083602082850101111561242557600080fd5b60008060008060008060008060a0898b03121561248a57600080fd5b61249389612237565b97506124a160208a01612237565b9650604089013567ffffffffffffffff808211156124be57600080fd5b6124ca8c838d016123e0565b909850965060608b01359150808211156124e357600080fd5b6124ef8c838d016123e0565b909650945060808b013591508082111561250857600080fd5b506125158b828c0161242c565b999c989b5096995094979396929594505050565b6000806000806040858703121561253f57600080fd5b843567ffffffffffffffff8082111561255757600080fd5b612563888389016123e0565b9096509450602087013591508082111561257c57600080fd5b50612589878288016123e0565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156125cd578351835292840192918401916001016125b1565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561262c5761262c6125d9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612679576126796125d9565b604052919050565b600067ffffffffffffffff82111561269b5761269b6125d9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126126d857600080fd5b81356126eb6126e682612681565b612632565b81815284602083860101111561270057600080fd5b816020850160208301376000918101602001919091529392505050565b6000610100828403121561273057600080fd5b612738612608565b9050813567ffffffffffffffff8082111561275257600080fd5b61275e858386016126c7565b8352602084013591508082111561277457600080fd5b612780858386016126c7565b6020840152604084013591508082111561279957600080fd5b6127a5858386016126c7565b604084015260608401359150808211156127be57600080fd5b6127ca858386016126c7565b606084015260808401359150808211156127e357600080fd5b6127ef858386016126c7565b608084015260a084013591508082111561280857600080fd5b612814858386016126c7565b60a084015260c084013591508082111561282d57600080fd5b612839858386016126c7565b60c084015260e084013591508082111561285257600080fd5b5061285f848285016126c7565b60e08301525092915050565b600080600080600060a0868803121561288357600080fd5b85359450602086013567ffffffffffffffff808211156128a257600080fd5b6128ae89838a0161271d565b95506128bc60408901612237565b94506128ca60608901612237565b935060808801359150808211156128e057600080fd5b506128ed888289016126c7565b9150509295509295909350565b600061010080835261290e8184018c612337565b90508281036020840152612922818b612337565b90508281036040840152612936818a612337565b9050828103606084015261294a8189612337565b9050828103608084015261295e8188612337565b905082810360a08401526129728187612337565b905082810360c08401526129868186612337565b905082810360e084015261299a8185612337565b9b9a5050505050505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff8111156129d257600080fd5b6129de848285016126c7565b949350505050565b600080604083850312156129f957600080fd5b82359150602083013567ffffffffffffffff811115612a1757600080fd5b612a23858286016126c7565b9150509250929050565b60008060408385031215612a4057600080fd5b612a4983612237565b915060208301358015158114612a5e57600080fd5b809150509250929050565b60008060408385031215612a7c57600080fd5b82359150602083013567ffffffffffffffff811115612a9a57600080fd5b612a238582860161271d565b600060208284031215612ab857600080fd5b6122d882612237565b60008060408385031215612ad457600080fd5b612add83612237565b915061230260208401612237565b60008060008060008060a08789031215612b0457600080fd5b612b0d87612237565b9550612b1b60208801612237565b94506040870135935060608701359250608087013567ffffffffffffffff811115612b4557600080fd5b612b5189828a0161242c565b979a9699509497509295939492505050565b600181811c90821680612b7757607f821691505b602082108103612bb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008154612bc381612b63565b808552602060018381168015612be05760018114612c1857612c46565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550612c46565b866000528260002060005b85811015612c3e5781548a8201860152908301908401612c23565b890184019650505b505050505092915050565b602081526000610100806020840152612c6e610120840185612bb6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858303016040860152612ca68260018801612bb6565b915080858303016060860152612cbf8260028801612bb6565b915080858303016080860152612cd88260038801612bb6565b9150808583030160a0860152612cf18260048801612bb6565b9150808583030160c0860152612d0a8260058801612bb6565b9150808583030160e0860152612d238260068801612bb6565b915080858303018386015250612d3c8160078701612bb6565b95945050505050565b600060208284031215612d5757600080fd5b815167ffffffffffffffff811115612d6e57600080fd5b8201601f81018413612d7f57600080fd5b8051612d8d6126e682612681565b818152856020838501011115612da257600080fd5b612d3c82602083016020860161230b565b6000808454612dc181612b63565b60018281168015612dd95760018114612e0c57612e3b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612e3b565b8860005260208060002060005b85811015612e325781548a820152908401908201612e19565b50505082870194505b507f2200000000000000000000000000000000000000000000000000000000000000845286519250612e738382860160208a0161230b565b92820192612ea28185017f227d0000000000000000000000000000000000000000000000000000000000009052565b505050600301949350505050565b60008251612ec281846020870161230b565b9190910192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251612f0481601d85016020870161230b565b91909101601d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612f8157612f81612f40565b500390565b60008219821115612f9957612f99612f40565b500190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612fd057600080fd5b8260051b8083602087013760009401602001938452509192915050565b604081526000613001604083018688612f9e565b8281036020840152613014818587612f9e565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a060408301526130a260a08301888a612f9e565b82810360608401526130b5818789612f9e565b9050828103608084015261299a81858761301f565b6000602082840312156130dc57600080fd5b81516122d88161228a565b601f821115610ab957600081815260208120601f850160051c8101602086101561310e5750805b601f850160051c820191505b818110156119d95782815560010161311a565b815167ffffffffffffffff811115613147576131476125d9565b61315b816131558454612b63565b846130e7565b602080601f8311600181146131ae57600084156131785750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556119d9565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156131fb578886015182559484019460019091019084016131dc565b508582101561323757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261328d60a08301848661301f565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261301460a083018461233756fea164736f6c634300080f000a000000000000000000000000f464bd061c88f0b19f88e76f76fc88d38d03ac940000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000017d646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c65794a755957316c496a6f69576d39764947396d4945356c64584a6862434242645852766257463059534973496d526c63324e796158423061573975496a6f6952486c75595731705932467362486b675a3256755a584a686447566b494746755a43426d64577873655342766269316a61474670626942755a5856795957776759325673624856735958496759585630623231686447456763484a765a334a6862584d675a6e4a7662534278645746784c6d563061434973496d6c745957646c496a6f696148523063484d364c79396e5958526c643246354c6e4270626d46305953356a624739315a43397063475a7a4c3146745545643652334e46546c59345554464e4d576474636e517a56326c4c544768305957394b5245704956564e475632317852314a79556b7072644577694c434a6c6548526c636d35686246397361573572496a6f696148523063484d364c793936623235684c6e64305a694a39000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101ce5760003560e01c80637e5b1e2411610104578063bd15092f116100a2578063e985e9c511610071578063e985e9c51461048a578063f242432a146104b8578063f2fde38b146104cb578063f5298aca146104de57600080fd5b8063bd15092f1461043c578063c9d4623f1461044f578063d7a78db81461046f578063e8a3d4851461048257600080fd5b80638da5cb5b116100de5780638da5cb5b146103ee57806395d89b411461040e578063a22cb46514610416578063b87152371461042957600080fd5b80637e5b1e2414610392578063817234fa146103a55780638b1cc4f4146103b857600080fd5b80632eb2c2d611610171578063513f99e71161014b578063513f99e7146102da57806359c9ec74146102fd578063754263e1146103105780637c57d9471461033757600080fd5b80632eb2c2d6146102945780634656d75a146102a75780634e1273f4146102ba57600080fd5b806306fdde03116101ad57806306fdde03146102465780630777ca3d1461025b5780630e89341c1461026e578063156e29f61461028157600080fd5b8062fdd58e146101d357806301ffc9a71461020e57806303409d6b14610231575b600080fd5b6101fb6101e1366004612260565b600060208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b61022161021c3660046122bb565b6104f1565b6040519015158152602001610205565b61024461023f3660046122df565b6105d6565b005b61024e6106ce565b6040516102059190612381565b6102446102693660046122df565b61075c565b61024e61027c366004612394565b61084f565b61024461028f3660046123ad565b610a6e565b6102446102a236600461246e565b610abe565b61024e6102b5366004612394565b610eaf565b6102cd6102c8366004612529565b610ec8565b6040516102059190612595565b6102216102e8366004612394565b600b6020526000908152604090205460ff1681565b61024461030b36600461286b565b61103f565b61032361031e366004612394565b611216565b6040516102059897969594939291906128fa565b61036d610345366004612394565b60086020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610205565b6102446103a03660046129a9565b611696565b6102446103b33660046129e6565b611727565b61036d6103c6366004612394565b60096020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60025461036d9073ffffffffffffffffffffffffffffffffffffffff1681565b61024e6117e4565b610244610424366004612a2d565b6117f1565b610244610437366004612a69565b611888565b61024461044a366004612aa6565b6119e1565b60065461036d9073ffffffffffffffffffffffffffffffffffffffff1681565b61024461047d366004612394565b611aa9565b61024e611b63565b610221610498366004612ac1565b600160209081526000928352604080842090915290825290205460ff1681565b6102446104c6366004612aeb565b611b70565b6102446104d9366004612aa6565b611e6e565b6102446104ec3660046123ad565b611f60565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061058457507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806105d057507f0e89341c000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60025473ffffffffffffffffffffffffffffffffffffffff16331461065c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000828152600b6020526040902054829060ff161561067a57600080fd5b5060009182526008602052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b600380546106db90612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461070790612b63565b80156107545780601f1061072957610100808354040283529160200191610754565b820191906000526020600020905b81548152906001019060200180831161073757829003601f168201915b505050505081565b60025473ffffffffffffffffffffffffffffffffffffffff1633146107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000828152600b6020526040902054829060ff16156107fb57600080fd5b5060009182526009602052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60008181526008602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661088057600080fd5b6000828152600a6020908152604080832060065460079093529281902090517f7ba4965b0000000000000000000000000000000000000000000000000000000081527338edb18902ed19d6eb3f532233a0246183273bf9936312496a1b93909273ffffffffffffffffffffffffffffffffffffffff90911691637ba4965b9161090b91600401612c51565b600060405180830381865afa158015610928573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261096e9190810190612d45565b60405160200161097f929190612db3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526109ba91602001612eb0565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016109e59190612381565b600060405180830381865af4158015610a02573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a489190810190612d45565b604051602001610a589190612ecc565b6040516020818303038152906040529050919050565b60008281526008602052604090205473ffffffffffffffffffffffffffffffffffffffff163314610a9e57600080fd5b610ab983838360405180602001604052806000815250611f9b565b505050565b848314610b27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610653565b3373ffffffffffffffffffffffffffffffffffffffff89161480610b7b575073ffffffffffffffffffffffffffffffffffffffff8816600090815260016020908152604080832033845290915290205460ff165b610be1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610653565b60008060005b87811015610cb657888882818110610c0157610c01612f11565b905060200201359250868682818110610c1c57610c1c612f11565b73ffffffffffffffffffffffffffffffffffffffff8e1660009081526020818152604080832089845282528220805493909102949094013595508593925090610c66908490612f6f565b909155505073ffffffffffffffffffffffffffffffffffffffff8a1660009081526020818152604080832086845290915281208054849290610ca9908490612f86565b9091555050600101610be7565b508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8b8b8b8b604051610d319493929190612fed565b60405180910390a473ffffffffffffffffffffffffffffffffffffffff89163b15610e23576040517fbc197c81000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff8b169063bc197c8190610db89033908f908e908e908e908e908e908e90600401613068565b6020604051808303816000875af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb91906130ca565b7fffffffff000000000000000000000000000000000000000000000000000000001614610e3d565b73ffffffffffffffffffffffffffffffffffffffff891615155b610ea3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610653565b50505050505050505050565b600a60205260009081526040902080546106db90612b63565b6060838214610f33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4c454e4754485f4d49534d4154434800000000000000000000000000000000006044820152606401610653565b8367ffffffffffffffff811115610f4c57610f4c6125d9565b604051908082528060200260200182016040528015610f75578160200160208202803683370190505b50905060005b8481101561103657600080878784818110610f9857610f98612f11565b9050602002016020810190610fad9190612aa6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858584818110610ffb57610ffb612f11565b9050602002013581526020019081526020016000205482828151811061102357611023612f11565b6020908102919091010152600101610f7b565b50949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146110c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000858152600b6020526040902054859060ff16156110de57600080fd5b6000868152600760205260409020855186919081906110fd908261312d565b5060208201516001820190611112908261312d565b5060408201516002820190611127908261312d565b506060820151600382019061113c908261312d565b5060808201516004820190611151908261312d565b5060a08201516005820190611166908261312d565b5060c0820151600682019061117b908261312d565b5060e08201516007820190611190908261312d565b5050506000868152600860209081526040808320805473ffffffffffffffffffffffffffffffffffffffff808a167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560098452828520805492891692909116919091179055600a909152902061120d838261312d565b50505050505050565b60076020526000908152604090208054819061123190612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461125d90612b63565b80156112aa5780601f1061127f576101008083540402835291602001916112aa565b820191906000526020600020905b81548152906001019060200180831161128d57829003601f168201915b5050505050908060010180546112bf90612b63565b80601f01602080910402602001604051908101604052809291908181526020018280546112eb90612b63565b80156113385780601f1061130d57610100808354040283529160200191611338565b820191906000526020600020905b81548152906001019060200180831161131b57829003601f168201915b50505050509080600201805461134d90612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461137990612b63565b80156113c65780601f1061139b576101008083540402835291602001916113c6565b820191906000526020600020905b8154815290600101906020018083116113a957829003601f168201915b5050505050908060030180546113db90612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461140790612b63565b80156114545780601f1061142957610100808354040283529160200191611454565b820191906000526020600020905b81548152906001019060200180831161143757829003601f168201915b50505050509080600401805461146990612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461149590612b63565b80156114e25780601f106114b7576101008083540402835291602001916114e2565b820191906000526020600020905b8154815290600101906020018083116114c557829003601f168201915b5050505050908060050180546114f790612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461152390612b63565b80156115705780601f1061154557610100808354040283529160200191611570565b820191906000526020600020905b81548152906001019060200180831161155357829003601f168201915b50505050509080600601805461158590612b63565b80601f01602080910402602001604051908101604052809291908181526020018280546115b190612b63565b80156115fe5780601f106115d3576101008083540402835291602001916115fe565b820191906000526020600020905b8154815290600101906020018083116115e157829003601f168201915b50505050509080600701805461161390612b63565b80601f016020809104026020016040519081016040528092919081815260200182805461163f90612b63565b801561168c5780601f106116615761010080835404028352916020019161168c565b820191906000526020600020905b81548152906001019060200180831161166f57829003601f168201915b5050505050905088565b60025473ffffffffffffffffffffffffffffffffffffffff163314611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6005611723828261312d565b5050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000828152600b6020526040902054829060ff16156117c657600080fd5b6000838152600a602052604090206117de838261312d565b50505050565b600480546106db90612b63565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000828152600b6020526040902054829060ff161561192757600080fd5b600083815260076020526040902082518391908190611946908261312d565b506020820151600182019061195b908261312d565b5060408201516002820190611970908261312d565b5060608201516003820190611985908261312d565b506080820151600482019061199a908261312d565b5060a082015160058201906119af908261312d565b5060c082015160068201906119c4908261312d565b5060e082015160078201906119d9908261312d565b505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025473ffffffffffffffffffffffffffffffffffffffff163314611b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b6000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600580546106db90612b63565b3373ffffffffffffffffffffffffffffffffffffffff87161480611bc4575073ffffffffffffffffffffffffffffffffffffffff8616600090815260016020908152604080832033845290915290205460ff165b611c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610653565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832087845290915281208054859290611c68908490612f6f565b909155505073ffffffffffffffffffffffffffffffffffffffff851660009081526020818152604080832087845290915281208054859290611cab908490612f86565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff808816929089169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff85163b15611dee576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff87169063f23a6e6190611d839033908b908a908a908a908a90600401613247565b6020604051808303816000875af1158015611da2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc691906130ca565b7fffffffff000000000000000000000000000000000000000000000000000000001614611e08565b73ffffffffffffffffffffffffffffffffffffffff851615155b6119d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610653565b60025473ffffffffffffffffffffffffffffffffffffffff163314611eef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610653565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b60008281526009602052604090205473ffffffffffffffffffffffffffffffffffffffff163314611f9057600080fd5b610ab9838383612199565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915281208054849290611fd9908490612f86565b9091555050604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff86169160009133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff84163b15612119576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063f23a6e61906120ae903390600090899089908990600401613299565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906130ca565b7fffffffff000000000000000000000000000000000000000000000000000000001614612133565b73ffffffffffffffffffffffffffffffffffffffff841615155b6117de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610653565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152812080548392906121d7908490612f6f565b9091555050604080518381526020810183905260009173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461225b57600080fd5b919050565b6000806040838503121561227357600080fd5b61227c83612237565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146122b857600080fd5b50565b6000602082840312156122cd57600080fd5b81356122d88161228a565b9392505050565b600080604083850312156122f257600080fd5b8235915061230260208401612237565b90509250929050565b60005b8381101561232657818101518382015260200161230e565b838111156117de5750506000910152565b6000815180845261234f81602086016020860161230b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006122d86020830184612337565b6000602082840312156123a657600080fd5b5035919050565b6000806000606084860312156123c257600080fd5b6123cb84612237565b95602085013595506040909401359392505050565b60008083601f8401126123f257600080fd5b50813567ffffffffffffffff81111561240a57600080fd5b6020830191508360208260051b850101111561242557600080fd5b9250929050565b60008083601f84011261243e57600080fd5b50813567ffffffffffffffff81111561245657600080fd5b60208301915083602082850101111561242557600080fd5b60008060008060008060008060a0898b03121561248a57600080fd5b61249389612237565b97506124a160208a01612237565b9650604089013567ffffffffffffffff808211156124be57600080fd5b6124ca8c838d016123e0565b909850965060608b01359150808211156124e357600080fd5b6124ef8c838d016123e0565b909650945060808b013591508082111561250857600080fd5b506125158b828c0161242c565b999c989b5096995094979396929594505050565b6000806000806040858703121561253f57600080fd5b843567ffffffffffffffff8082111561255757600080fd5b612563888389016123e0565b9096509450602087013591508082111561257c57600080fd5b50612589878288016123e0565b95989497509550505050565b6020808252825182820181905260009190848201906040850190845b818110156125cd578351835292840192918401916001016125b1565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561262c5761262c6125d9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612679576126796125d9565b604052919050565b600067ffffffffffffffff82111561269b5761269b6125d9565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126126d857600080fd5b81356126eb6126e682612681565b612632565b81815284602083860101111561270057600080fd5b816020850160208301376000918101602001919091529392505050565b6000610100828403121561273057600080fd5b612738612608565b9050813567ffffffffffffffff8082111561275257600080fd5b61275e858386016126c7565b8352602084013591508082111561277457600080fd5b612780858386016126c7565b6020840152604084013591508082111561279957600080fd5b6127a5858386016126c7565b604084015260608401359150808211156127be57600080fd5b6127ca858386016126c7565b606084015260808401359150808211156127e357600080fd5b6127ef858386016126c7565b608084015260a084013591508082111561280857600080fd5b612814858386016126c7565b60a084015260c084013591508082111561282d57600080fd5b612839858386016126c7565b60c084015260e084013591508082111561285257600080fd5b5061285f848285016126c7565b60e08301525092915050565b600080600080600060a0868803121561288357600080fd5b85359450602086013567ffffffffffffffff808211156128a257600080fd5b6128ae89838a0161271d565b95506128bc60408901612237565b94506128ca60608901612237565b935060808801359150808211156128e057600080fd5b506128ed888289016126c7565b9150509295509295909350565b600061010080835261290e8184018c612337565b90508281036020840152612922818b612337565b90508281036040840152612936818a612337565b9050828103606084015261294a8189612337565b9050828103608084015261295e8188612337565b905082810360a08401526129728187612337565b905082810360c08401526129868186612337565b905082810360e084015261299a8185612337565b9b9a5050505050505050505050565b6000602082840312156129bb57600080fd5b813567ffffffffffffffff8111156129d257600080fd5b6129de848285016126c7565b949350505050565b600080604083850312156129f957600080fd5b82359150602083013567ffffffffffffffff811115612a1757600080fd5b612a23858286016126c7565b9150509250929050565b60008060408385031215612a4057600080fd5b612a4983612237565b915060208301358015158114612a5e57600080fd5b809150509250929050565b60008060408385031215612a7c57600080fd5b82359150602083013567ffffffffffffffff811115612a9a57600080fd5b612a238582860161271d565b600060208284031215612ab857600080fd5b6122d882612237565b60008060408385031215612ad457600080fd5b612add83612237565b915061230260208401612237565b60008060008060008060a08789031215612b0457600080fd5b612b0d87612237565b9550612b1b60208801612237565b94506040870135935060608701359250608087013567ffffffffffffffff811115612b4557600080fd5b612b5189828a0161242c565b979a9699509497509295939492505050565b600181811c90821680612b7757607f821691505b602082108103612bb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008154612bc381612b63565b808552602060018381168015612be05760018114612c1857612c46565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550612c46565b866000528260002060005b85811015612c3e5781548a8201860152908301908401612c23565b890184019650505b505050505092915050565b602081526000610100806020840152612c6e610120840185612bb6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858303016040860152612ca68260018801612bb6565b915080858303016060860152612cbf8260028801612bb6565b915080858303016080860152612cd88260038801612bb6565b9150808583030160a0860152612cf18260048801612bb6565b9150808583030160c0860152612d0a8260058801612bb6565b9150808583030160e0860152612d238260068801612bb6565b915080858303018386015250612d3c8160078701612bb6565b95945050505050565b600060208284031215612d5757600080fd5b815167ffffffffffffffff811115612d6e57600080fd5b8201601f81018413612d7f57600080fd5b8051612d8d6126e682612681565b818152856020838501011115612da257600080fd5b612d3c82602083016020860161230b565b6000808454612dc181612b63565b60018281168015612dd95760018114612e0c57612e3b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612e3b565b8860005260208060002060005b85811015612e325781548a820152908401908201612e19565b50505082870194505b507f2200000000000000000000000000000000000000000000000000000000000000845286519250612e738382860160208a0161230b565b92820192612ea28185017f227d0000000000000000000000000000000000000000000000000000000000009052565b505050600301949350505050565b60008251612ec281846020870161230b565b9190910192915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251612f0481601d85016020870161230b565b91909101601d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612f8157612f81612f40565b500390565b60008219821115612f9957612f99612f40565b500190565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612fd057600080fd5b8260051b8083602087013760009401602001938452509192915050565b604081526000613001604083018688612f9e565b8281036020840152613014818587612f9e565b979650505050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a060408301526130a260a08301888a612f9e565b82810360608401526130b5818789612f9e565b9050828103608084015261299a81858761301f565b6000602082840312156130dc57600080fd5b81516122d88161228a565b601f821115610ab957600081815260208120601f850160051c8101602086101561310e5750805b601f850160051c820191505b818110156119d95782815560010161311a565b815167ffffffffffffffff811115613147576131476125d9565b61315b816131558454612b63565b846130e7565b602080601f8311600181146131ae57600084156131785750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556119d9565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156131fb578886015182559484019460019091019084016131dc565b508582101561323757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a0608083015261328d60a08301848661301f565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261301460a083018461233756fea164736f6c634300080f000a

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000f464bd061c88f0b19f88e76f76fc88d38d03ac940000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000017d646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c65794a755957316c496a6f69576d39764947396d4945356c64584a6862434242645852766257463059534973496d526c63324e796158423061573975496a6f6952486c75595731705932467362486b675a3256755a584a686447566b494746755a43426d64577873655342766269316a61474670626942755a5856795957776759325673624856735958496759585630623231686447456763484a765a334a6862584d675a6e4a7662534278645746784c6d563061434973496d6c745957646c496a6f696148523063484d364c79396e5958526c643246354c6e4270626d46305953356a624739315a43397063475a7a4c3146745545643652334e46546c59345554464e4d576474636e517a56326c4c544768305957394b5245704956564e475632317852314a79556b7072644577694c434a6c6548526c636d35686246397361573572496a6f696148523063484d364c793936623235684c6e64305a694a39000000

-----Decoded View---------------
Arg [0] : _engine (address): 0xF464bD061C88F0B19f88E76f76fC88d38d03AC94
Arg [1] : _contractURI (string): data:application/json;base64,eyJuYW1lIjoiWm9vIG9mIE5ldXJhbCBBdXRvbWF0YSIsImRlc2NyaXB0aW9uIjoiRHluYW1pY2FsbHkgZ2VuZXJhdGVkIGFuZCBmdWxseSBvbi1jaGFpbiBuZXVyYWwgY2VsbHVsYXIgYXV0b21hdGEgcHJvZ3JhbXMgZnJvbSBxdWFxLmV0aCIsImltYWdlIjoiaHR0cHM6Ly9nYXRld2F5LnBpbmF0YS5jbG91ZC9pcGZzL1FtUEd6R3NFTlY4UTFNMWdtcnQzV2lLTGh0YW9KREpIVVNGV21xR1JyUkprdEwiLCJleHRlcm5hbF9saW5rIjoiaHR0cHM6Ly96b25hLnd0ZiJ9

-----Encoded View---------------
15 Constructor Arguments found :
Arg [0] : 000000000000000000000000f464bd061c88f0b19f88e76f76fc88d38d03ac94
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 000000000000000000000000000000000000000000000000000000000000017d
Arg [3] : 646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c65794a
Arg [4] : 755957316c496a6f69576d39764947396d4945356c64584a6862434242645852
Arg [5] : 766257463059534973496d526c63324e796158423061573975496a6f6952486c
Arg [6] : 75595731705932467362486b675a3256755a584a686447566b494746755a4342
Arg [7] : 6d64577873655342766269316a61474670626942755a58567959577767593256
Arg [8] : 73624856735958496759585630623231686447456763484a765a334a6862584d
Arg [9] : 675a6e4a7662534278645746784c6d563061434973496d6c745957646c496a6f
Arg [10] : 696148523063484d364c79396e5958526c643246354c6e4270626d4630595335
Arg [11] : 6a624739315a43397063475a7a4c3146745545643652334e46546c5934555446
Arg [12] : 4e4d576474636e517a56326c4c544768305957394b5245704956564e47563231
Arg [13] : 7852314a79556b7072644577694c434a6c6548526c636d356862463973615735
Arg [14] : 72496a6f696148523063484d364c793936623235684c6e64305a694a39000000


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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.