{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "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": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "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": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "approve(address,uint256)": "095ea7b3",
    "balanceOf(address)": "70a08231",
    "getApproved(uint256)": "081812fc",
    "isApprovedForAll(address,address)": "e985e9c5",
    "name()": "06fdde03",
    "ownerOf(uint256)": "6352211e",
    "safeTransferFrom(address,address,uint256)": "42842e0e",
    "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
    "setApprovalForAll(address,bool)": "a22cb465",
    "supportsInterface(bytes4)": "01ffc9a7",
    "symbol()": "95d89b41",
    "tokenURI(uint256)": "c87b56dd",
    "transferFrom(address,address,uint256)": "23b872dd"
  },
  "ast": {
    "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721MetadataUpgradeable.sol",
    "id": 24709,
    "exportedSymbols": {
      "IERC165Upgradeable": [
        23255
      ],
      "IERC721MetadataUpgradeable": [
        24708
      ],
      "IERC721Upgradeable": [
        24842
      ]
    },
    "nodeType": "SourceUnit",
    "src": "33:690:14",
    "nodes": [
      {
        "id": 24683,
        "nodeType": "PragmaDirective",
        "src": "33:31:14",
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".2",
          "<",
          "0.8",
          ".0"
        ]
      },
      {
        "id": 24684,
        "nodeType": "ImportDirective",
        "src": "66:34:14",
        "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/token/ERC721/IERC721Upgradeable.sol",
        "file": "./IERC721Upgradeable.sol",
        "scope": 24709,
        "sourceUnit": 24843,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 24708,
        "nodeType": "ContractDefinition",
        "src": "236:486:14",
        "nodes": [
          {
            "id": 24693,
            "nodeType": "FunctionDefinition",
            "src": "365:54:14",
            "documentation": {
              "id": 24688,
              "nodeType": "StructuredDocumentation",
              "src": "302:58:14",
              "text": " @dev Returns the token collection name."
            },
            "functionSelector": "06fdde03",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "parameters": {
              "id": 24689,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "378:2:14"
            },
            "returnParameters": {
              "id": 24692,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24691,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 24693,
                  "src": "404:13:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24690,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "404:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "403:15:14"
            },
            "scope": 24708,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 24699,
            "nodeType": "FunctionDefinition",
            "src": "490:56:14",
            "documentation": {
              "id": 24694,
              "nodeType": "StructuredDocumentation",
              "src": "425:60:14",
              "text": " @dev Returns the token collection symbol."
            },
            "functionSelector": "95d89b41",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "parameters": {
              "id": 24695,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "505:2:14"
            },
            "returnParameters": {
              "id": 24698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24697,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 24699,
                  "src": "531:13:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24696,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "531:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "530:15:14"
            },
            "scope": 24708,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 24707,
            "nodeType": "FunctionDefinition",
            "src": "647:73:14",
            "documentation": {
              "id": 24700,
              "nodeType": "StructuredDocumentation",
              "src": "552:90:14",
              "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."
            },
            "functionSelector": "c87b56dd",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "tokenURI",
            "parameters": {
              "id": 24703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24702,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nodeType": "VariableDeclaration",
                  "scope": 24707,
                  "src": "665:15:14",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24701,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "665:7:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "664:17:14"
            },
            "returnParameters": {
              "id": 24706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24705,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 24707,
                  "src": "705:13:14",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24704,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "705:6:14",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "704:15:14"
            },
            "scope": 24708,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 24686,
              "name": "IERC721Upgradeable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 24842,
              "src": "276:18:14",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC721Upgradeable_$24842",
                "typeString": "contract IERC721Upgradeable"
              }
            },
            "id": 24687,
            "nodeType": "InheritanceSpecifier",
            "src": "276:18:14"
          }
        ],
        "contractDependencies": [
          23255,
          24842
        ],
        "contractKind": "interface",
        "documentation": {
          "id": 24685,
          "nodeType": "StructuredDocumentation",
          "src": "102:133:14",
          "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"
        },
        "fullyImplemented": false,
        "linearizedBaseContracts": [
          24708,
          24842,
          23255
        ],
        "name": "IERC721MetadataUpgradeable",
        "scope": 24709
      }
    ],
    "license": "MIT"
  },
  "id": 14
}