{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "ChainlinkCancelled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "ChainlinkFulfilled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "ChainlinkRequested",
      "type": "event"
    }
  ],
  "allSourcePaths": {
    "15": "contracts/dependencies/ChainlinkClientUpgradeable.sol",
    "57": "node_modules/@chainlink/contracts/src/v0.8/Chainlink.sol",
    "59": "node_modules/@chainlink/contracts/src/v0.8/interfaces/ENSInterface.sol",
    "60": "node_modules/@chainlink/contracts/src/v0.8/interfaces/LinkTokenInterface.sol",
    "61": "node_modules/@chainlink/contracts/src/v0.8/interfaces/OperatorInterface.sol",
    "63": "node_modules/@chainlink/contracts/src/v0.8/interfaces/PointerInterface.sol",
    "64": "node_modules/@chainlink/contracts/src/v0.8/vendor/BufferChainlink.sol",
    "65": "node_modules/@chainlink/contracts/src/v0.8/vendor/CBORChainlink.sol",
    "66": "node_modules/@chainlink/contracts/src/v0.8/vendor/ENSResolver.sol",
    "72": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"
  },
  "ast": {
    "absolutePath": "contracts/dependencies/ChainlinkClientUpgradeable.sol",
    "exportedSymbols": {
      "Chainlink": [
        17771
      ],
      "ChainlinkClientUpgradeable": [
        11801
      ],
      "ENSInterface": [
        19624
      ],
      "ENSResolver_Chainlink": [
        19819
      ],
      "Initializable": [
        19544
      ],
      "LinkTokenInterface": [
        19719
      ],
      "OperatorInterface": [
        19801
      ],
      "PointerInterface": [
        19809
      ]
    },
    "id": 11802,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11254,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "32:23:15"
      },
      {
        "absolutePath": "node_modules/@chainlink/contracts/src/v0.8/Chainlink.sol",
        "file": "@chainlink/contracts/src/v0.8/Chainlink.sol",
        "id": 11256,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 11802,
        "sourceUnit": 17772,
        "src": "57:70:15",
        "symbolAliases": [
          {
            "foreign": {
              "id": 11255,
              "name": "Chainlink",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "65:9:15",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@chainlink/contracts/src/v0.8/interfaces/ENSInterface.sol",
        "file": "@chainlink/contracts/src/v0.8/interfaces/ENSInterface.sol",
        "id": 11258,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 11802,
        "sourceUnit": 19625,
        "src": "128:87:15",
        "symbolAliases": [
          {
            "foreign": {
              "id": 11257,
              "name": "ENSInterface",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "136:12:15",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@chainlink/contracts/src/v0.8/interfaces/LinkTokenInterface.sol",
        "file": "@chainlink/contracts/src/v0.8/interfaces/LinkTokenInterface.sol",
        "id": 11260,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 11802,
        "sourceUnit": 19720,
        "src": "216:99:15",
        "symbolAliases": [
          {
            "foreign": {
              "id": 11259,
              "name": "LinkTokenInterface",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "224:18:15",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@chainlink/contracts/src/v0.8/interfaces/OperatorInterface.sol",
        "file": "@chainlink/contracts/src/v0.8/interfaces/OperatorInterface.sol",
        "id": 11262,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 11802,
        "sourceUnit": 19802,
        "src": "316:97:15",
        "symbolAliases": [
          {
            "foreign": {
              "id": 11261,
              "name": "OperatorInterface",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "324:17:15",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@chainlink/contracts/src/v0.8/interfaces/PointerInterface.sol",
        "file": "@chainlink/contracts/src/v0.8/interfaces/PointerInterface.sol",
        "id": 11264,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 11802,
        "sourceUnit": 19810,
        "src": "414:95:15",
        "symbolAliases": [
          {
            "foreign": {
              "id": 11263,
              "name": "PointerInterface",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "422:16:15",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@chainlink/contracts/src/v0.8/vendor/ENSResolver.sol",
        "file": "@chainlink/contracts/src/v0.8/vendor/ENSResolver.sol",
        "id": 11266,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 11802,
        "sourceUnit": 19820,
        "src": "510:106:15",
        "symbolAliases": [
          {
            "foreign": {
              "id": 11265,
              "name": "ENSResolver",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "518:11:15",
              "typeDescriptions": {}
            },
            "local": "ENSResolver_Chainlink",
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "id": 11268,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 11802,
        "sourceUnit": 19545,
        "src": "617:96:15",
        "symbolAliases": [
          {
            "foreign": {
              "id": 11267,
              "name": "Initializable",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "625:13:15",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 11270,
              "name": "Initializable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 19544,
              "src": "994:13:15"
            },
            "id": 11271,
            "nodeType": "InheritanceSpecifier",
            "src": "994:13:15"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 11269,
          "nodeType": "StructuredDocumentation",
          "src": "715:239:15",
          "text": " @title The ChainlinkClient contract in upgradeable version\n @dev Changes to make it compatible with OZ UUPS proxies\n @notice Contract writers can inherit this contract in order to create requests for the\n Chainlink network"
        },
        "fullyImplemented": true,
        "id": 11801,
        "linearizedBaseContracts": [
          11801,
          19544
        ],
        "name": "ChainlinkClientUpgradeable",
        "nameLocation": "964:26:15",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11275,
            "libraryName": {
              "id": 11272,
              "name": "Chainlink",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 17771,
              "src": "1018:9:15"
            },
            "nodeType": "UsingForDirective",
            "src": "1012:38:15",
            "typeName": {
              "id": 11274,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 11273,
                "name": "Chainlink.Request",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 17528,
                "src": "1032:17:15"
              },
              "referencedDeclaration": 17528,
              "src": "1032:17:15",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Request_$17528_storage_ptr",
                "typeString": "struct Chainlink.Request"
              }
            }
          },
          {
            "constant": true,
            "id": 11280,
            "mutability": "constant",
            "name": "LINK_DIVISIBILITY",
            "nameLocation": "1080:17:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1054:52:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11276,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1054:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "commonType": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              },
              "id": 11279,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "hexValue": "3130",
                "id": 11277,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1100:2:15",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_10_by_1",
                  "typeString": "int_const 10"
                },
                "value": "10"
              },
              "nodeType": "BinaryOperation",
              "operator": "**",
              "rightExpression": {
                "hexValue": "3138",
                "id": 11278,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1104:2:15",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_18_by_1",
                  "typeString": "int_const 18"
                },
                "value": "18"
              },
              "src": "1100:6:15",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1000000000000000000_by_1",
                "typeString": "int_const 1000000000000000000"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 11283,
            "mutability": "constant",
            "name": "AMOUNT_OVERRIDE",
            "nameLocation": "1135:15:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1110:44:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11281,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1110:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "30",
              "id": 11282,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1153:1:15",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11289,
            "mutability": "constant",
            "name": "SENDER_OVERRIDE",
            "nameLocation": "1183:15:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1158:53:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 11284,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1158:7:15",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "30",
                  "id": 11287,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1209:1:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  }
                ],
                "id": 11286,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "1201:7:15",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": {
                  "id": 11285,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1201:7:15",
                  "typeDescriptions": {}
                }
              },
              "id": 11288,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1201:10:15",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11292,
            "mutability": "constant",
            "name": "ORACLE_ARGS_VERSION",
            "nameLocation": "1240:19:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1215:48:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11290,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1215:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "31",
              "id": 11291,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1262:1:15",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1_by_1",
                "typeString": "int_const 1"
              },
              "value": "1"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11295,
            "mutability": "constant",
            "name": "OPERATOR_ARGS_VERSION",
            "nameLocation": "1292:21:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1267:50:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11293,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1267:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "32",
              "id": 11294,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1316:1:15",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2_by_1",
                "typeString": "int_const 2"
              },
              "value": "2"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11300,
            "mutability": "constant",
            "name": "ENS_TOKEN_SUBNAME",
            "nameLocation": "1346:17:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1321:62:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 11296,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1321:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "6c696e6b",
                  "id": 11298,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1376:6:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_90430203e2d9ce04f00738d355173358b054545ecb52218de9c6fb01cbd9aeaf",
                    "typeString": "literal_string \"link\""
                  },
                  "value": "link"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_90430203e2d9ce04f00738d355173358b054545ecb52218de9c6fb01cbd9aeaf",
                    "typeString": "literal_string \"link\""
                  }
                ],
                "id": 11297,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "1366:9:15",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 11299,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1366:17:15",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11305,
            "mutability": "constant",
            "name": "ENS_ORACLE_SUBNAME",
            "nameLocation": "1412:18:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1387:65:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 11301,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1387:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "6f7261636c65",
                  "id": 11303,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1443:8:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_89cbf5af14e0328a3cd3a734f92c3832d729d431da79b7873a62cbeebd37beb6",
                    "typeString": "literal_string \"oracle\""
                  },
                  "value": "oracle"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_89cbf5af14e0328a3cd3a734f92c3832d729d431da79b7873a62cbeebd37beb6",
                    "typeString": "literal_string \"oracle\""
                  }
                ],
                "id": 11302,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "1433:9:15",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 11304,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "1433:19:15",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 11308,
            "mutability": "constant",
            "name": "LINK_TOKEN_POINTER",
            "nameLocation": "1481:18:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1456:88:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 11306,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1456:7:15",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "hexValue": "307843383962443445313633324433413433434230334141416435323632636265343033384263353731",
              "id": 11307,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1502:42:15",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              },
              "value": "0xC89bD4E1632D3A43CB03AAAd5262cbe4038Bc571"
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 11311,
            "mutability": "mutable",
            "name": "ens",
            "nameLocation": "1570:3:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1549:24:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ENSInterface_$19624",
              "typeString": "contract ENSInterface"
            },
            "typeName": {
              "id": 11310,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 11309,
                "name": "ENSInterface",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 19624,
                "src": "1549:12:15"
              },
              "referencedDeclaration": 19624,
              "src": "1549:12:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ENSInterface_$19624",
                "typeString": "contract ENSInterface"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 11313,
            "mutability": "mutable",
            "name": "ensNode",
            "nameLocation": "1593:7:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1577:23:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 11312,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1577:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 11316,
            "mutability": "mutable",
            "name": "link",
            "nameLocation": "1631:4:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1604:31:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_LinkTokenInterface_$19719",
              "typeString": "contract LinkTokenInterface"
            },
            "typeName": {
              "id": 11315,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 11314,
                "name": "LinkTokenInterface",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 19719,
                "src": "1604:18:15"
              },
              "referencedDeclaration": 19719,
              "src": "1604:18:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_LinkTokenInterface_$19719",
                "typeString": "contract LinkTokenInterface"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 11319,
            "mutability": "mutable",
            "name": "oracle",
            "nameLocation": "1665:6:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1639:32:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_OperatorInterface_$19801",
              "typeString": "contract OperatorInterface"
            },
            "typeName": {
              "id": 11318,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 11317,
                "name": "OperatorInterface",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 19801,
                "src": "1639:17:15"
              },
              "referencedDeclaration": 19801,
              "src": "1639:17:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                "typeString": "contract OperatorInterface"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 11321,
            "mutability": "mutable",
            "name": "requestCount",
            "nameLocation": "1691:12:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1675:28:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11320,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1675:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 11325,
            "mutability": "mutable",
            "name": "pendingRequests",
            "nameLocation": "1743:15:15",
            "nodeType": "VariableDeclaration",
            "scope": 11801,
            "src": "1707:51:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 11324,
              "keyType": {
                "id": 11322,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1715:7:15",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1707:27:15",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 11323,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1726:7:15",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "id": 11329,
            "name": "ChainlinkRequested",
            "nameLocation": "1769:18:15",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11327,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1809:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11329,
                  "src": "1793:18:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11326,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1793:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1787:28:15"
            },
            "src": "1763:53:15"
          },
          {
            "anonymous": false,
            "id": 11333,
            "name": "ChainlinkFulfilled",
            "nameLocation": "1825:18:15",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11331,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1865:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11333,
                  "src": "1849:18:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11330,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1849:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1843:28:15"
            },
            "src": "1819:53:15"
          },
          {
            "anonymous": false,
            "id": 11337,
            "name": "ChainlinkCancelled",
            "nameLocation": "1881:18:15",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11335,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "id",
                  "nameLocation": "1921:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11337,
                  "src": "1905:18:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11334,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1905:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1899:28:15"
            },
            "src": "1875:53:15"
          },
          {
            "body": {
              "id": 11346,
              "nodeType": "Block",
              "src": "1987:27:15",
              "statements": [
                {
                  "expression": {
                    "id": 11344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 11342,
                      "name": "requestCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11321,
                      "src": "1993:12:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 11343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2008:1:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1993:16:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11345,
                  "nodeType": "ExpressionStatement",
                  "src": "1993:16:15"
                }
              ]
            },
            "id": 11347,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 11340,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 11339,
                  "name": "initializer",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 19518,
                  "src": "1975:11:15"
                },
                "nodeType": "ModifierInvocation",
                "src": "1975:11:15"
              }
            ],
            "name": "__ChainlinkClient_init",
            "nameLocation": "1941:22:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11338,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1963:2:15"
            },
            "returnParameters": {
              "id": 11341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1987:0:15"
            },
            "scope": 11801,
            "src": "1932:82:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11373,
              "nodeType": "Block",
              "src": "2610:118:15",
              "statements": [
                {
                  "assignments": [
                    11364
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11364,
                      "mutability": "mutable",
                      "name": "req",
                      "nameLocation": "2641:3:15",
                      "nodeType": "VariableDeclaration",
                      "scope": 11373,
                      "src": "2616:28:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                        "typeString": "struct Chainlink.Request"
                      },
                      "typeName": {
                        "id": 11363,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 11362,
                          "name": "Chainlink.Request",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 17528,
                          "src": "2616:17:15"
                        },
                        "referencedDeclaration": 17528,
                        "src": "2616:17:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$17528_storage_ptr",
                          "typeString": "struct Chainlink.Request"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 11365,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2616:28:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 11368,
                        "name": "specId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11350,
                        "src": "2672:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 11369,
                        "name": "callbackAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11352,
                        "src": "2680:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 11370,
                        "name": "callbackFunctionSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11354,
                        "src": "2697:25:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "id": 11366,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11364,
                        "src": "2657:3:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      "id": 11367,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initialize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17573,
                      "src": "2657:14:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Request_$17528_memory_ptr_$_t_bytes32_$_t_address_$_t_bytes4_$returns$_t_struct$_Request_$17528_memory_ptr_$bound_to$_t_struct$_Request_$17528_memory_ptr_$",
                        "typeString": "function (struct Chainlink.Request memory,bytes32,address,bytes4) pure returns (struct Chainlink.Request memory)"
                      }
                    },
                    "id": 11371,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2657:66:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                      "typeString": "struct Chainlink.Request memory"
                    }
                  },
                  "functionReturnParameters": 11359,
                  "id": 11372,
                  "nodeType": "Return",
                  "src": "2650:73:15"
                }
              ]
            },
            "documentation": {
              "id": 11348,
              "nodeType": "StructuredDocumentation",
              "src": "2018:392:15",
              "text": " @notice Creates a request that can hold additional parameters\n @param specId The Job Specification ID that the request will be created for\n @param callbackAddress The callback address that the response will be sent to\n @param callbackFunctionSignature The callback function signature to use for the callback address\n @return A Chainlink Request struct in memory"
            },
            "id": 11374,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buildChainlinkRequest",
            "nameLocation": "2422:21:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11350,
                  "mutability": "mutable",
                  "name": "specId",
                  "nameLocation": "2457:6:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11374,
                  "src": "2449:14:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11349,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2449:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11352,
                  "mutability": "mutable",
                  "name": "callbackAddress",
                  "nameLocation": "2477:15:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11374,
                  "src": "2469:23:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11351,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2469:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11354,
                  "mutability": "mutable",
                  "name": "callbackFunctionSignature",
                  "nameLocation": "2505:25:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11374,
                  "src": "2498:32:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 11353,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "2498:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2443:91:15"
            },
            "returnParameters": {
              "id": 11359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11358,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 11374,
                  "src": "2577:24:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 11357,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 11356,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17528,
                      "src": "2577:17:15"
                    },
                    "referencedDeclaration": 17528,
                    "src": "2577:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$17528_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2569:38:15"
            },
            "scope": 11801,
            "src": "2413:315:15",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11394,
              "nodeType": "Block",
              "src": "3171:71:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 11388,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11319,
                            "src": "3215:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                              "typeString": "contract OperatorInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                              "typeString": "contract OperatorInterface"
                            }
                          ],
                          "id": 11387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3207:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 11386,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3207:7:15",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 11389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3207:15:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 11390,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11378,
                        "src": "3224:3:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      {
                        "id": 11391,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11380,
                        "src": "3229:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11385,
                      "name": "sendChainlinkRequestTo",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11419,
                      "src": "3184:22:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Request_$17528_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (address,struct Chainlink.Request memory,uint256) returns (bytes32)"
                      }
                    },
                    "id": 11392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3184:53:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11384,
                  "id": 11393,
                  "nodeType": "Return",
                  "src": "3177:60:15"
                }
              ]
            },
            "documentation": {
              "id": 11375,
              "nodeType": "StructuredDocumentation",
              "src": "2732:298:15",
              "text": " @notice Creates a Chainlink request to the stored oracle address\n @dev Calls `chainlinkRequestTo` with the stored oracle address\n @param req The initialized Chainlink Request\n @param payment The amount of LINK to send for the request\n @return requestId The request ID"
            },
            "id": 11395,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sendChainlinkRequest",
            "nameLocation": "3042:20:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11378,
                  "mutability": "mutable",
                  "name": "req",
                  "nameLocation": "3093:3:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11395,
                  "src": "3068:28:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 11377,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 11376,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17528,
                      "src": "3068:17:15"
                    },
                    "referencedDeclaration": 17528,
                    "src": "3068:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$17528_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11380,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "3110:7:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11395,
                  "src": "3102:15:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11379,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3102:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3062:59:15"
            },
            "returnParameters": {
              "id": 11384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11383,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 11395,
                  "src": "3155:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11382,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3155:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3147:21:15"
            },
            "scope": 11801,
            "src": "3033:209:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11418,
              "nodeType": "Block",
              "src": "3937:109:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 11409,
                        "name": "oracleAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11398,
                        "src": "3961:13:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 11410,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11401,
                        "src": "3976:3:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      {
                        "id": 11411,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11403,
                        "src": "3981:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 11412,
                        "name": "ORACLE_ARGS_VERSION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11292,
                        "src": "3990:19:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 11413,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11319,
                            "src": "4011:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                              "typeString": "contract OperatorInterface"
                            }
                          },
                          "id": 11414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "oracleRequest",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26418,
                          "src": "4011:20:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_address_$_t_bytes4_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                            "typeString": "function (address,uint256,bytes32,address,bytes4,uint256,uint256,bytes memory) external"
                          }
                        },
                        "id": 11415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "selector",
                        "nodeType": "MemberAccess",
                        "src": "4011:29:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 11408,
                      "name": "rawRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11543,
                      "src": "3950:10:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Request_$17528_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes4_$returns$_t_bytes32_$",
                        "typeString": "function (address,struct Chainlink.Request memory,uint256,uint256,bytes4) returns (bytes32)"
                      }
                    },
                    "id": 11416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3950:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11407,
                  "id": 11417,
                  "nodeType": "Return",
                  "src": "3943:98:15"
                }
              ]
            },
            "documentation": {
              "id": 11396,
              "nodeType": "StructuredDocumentation",
              "src": "3246:511:15",
              "text": " @notice Creates a Chainlink request to the specified oracle address\n @dev Generates and stores a request ID, increments the local nonce, and uses `transferAndCall` to\n send LINK which creates a request on the target oracle contract.\n Emits ChainlinkRequested event.\n @param oracleAddress The address of the oracle for the request\n @param req The initialized Chainlink Request\n @param payment The amount of LINK to send for the request\n @return requestId The request ID"
            },
            "id": 11419,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "sendChainlinkRequestTo",
            "nameLocation": "3769:22:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11404,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11398,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "3805:13:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11419,
                  "src": "3797:21:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11397,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3797:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11401,
                  "mutability": "mutable",
                  "name": "req",
                  "nameLocation": "3849:3:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11419,
                  "src": "3824:28:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 11400,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 11399,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17528,
                      "src": "3824:17:15"
                    },
                    "referencedDeclaration": 17528,
                    "src": "3824:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$17528_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11403,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "3866:7:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11419,
                  "src": "3858:15:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11402,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3858:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3791:86:15"
            },
            "returnParameters": {
              "id": 11407,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11406,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "3919:9:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11419,
                  "src": "3911:17:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11405,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3911:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3903:31:15"
            },
            "scope": 11801,
            "src": "3760:286:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11439,
              "nodeType": "Block",
              "src": "4542:70:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 11433,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11319,
                            "src": "4585:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                              "typeString": "contract OperatorInterface"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                              "typeString": "contract OperatorInterface"
                            }
                          ],
                          "id": 11432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4577:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 11431,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "4577:7:15",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 11434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4577:15:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 11435,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11423,
                        "src": "4594:3:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      {
                        "id": 11436,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11425,
                        "src": "4599:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11430,
                      "name": "requestOracleDataFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11464,
                      "src": "4555:21:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Request_$17528_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (address,struct Chainlink.Request memory,uint256) returns (bytes32)"
                      }
                    },
                    "id": 11437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4555:52:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11429,
                  "id": 11438,
                  "nodeType": "Return",
                  "src": "4548:59:15"
                }
              ]
            },
            "documentation": {
              "id": 11420,
              "nodeType": "StructuredDocumentation",
              "src": "4050:354:15",
              "text": " @notice Creates a Chainlink request to the stored oracle address\n @dev This function supports multi-word response\n @dev Calls `requestOracleDataFrom` with the stored oracle address\n @param req The initialized Chainlink Request\n @param payment The amount of LINK to send for the request\n @return requestId The request ID"
            },
            "id": 11440,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "requestOracleData",
            "nameLocation": "4416:17:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11423,
                  "mutability": "mutable",
                  "name": "req",
                  "nameLocation": "4464:3:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11440,
                  "src": "4439:28:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 11422,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 11421,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17528,
                      "src": "4439:17:15"
                    },
                    "referencedDeclaration": 17528,
                    "src": "4439:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$17528_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11425,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "4481:7:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11440,
                  "src": "4473:15:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11424,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4473:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4433:59:15"
            },
            "returnParameters": {
              "id": 11429,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11428,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 11440,
                  "src": "4526:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11427,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4526:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4518:21:15"
            },
            "scope": 11801,
            "src": "4407:205:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11463,
              "nodeType": "Block",
              "src": "5359:115:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 11454,
                        "name": "oracleAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11443,
                        "src": "5383:13:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 11455,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11446,
                        "src": "5398:3:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      {
                        "id": 11456,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11448,
                        "src": "5403:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 11457,
                        "name": "OPERATOR_ARGS_VERSION",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11295,
                        "src": "5412:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 11458,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11319,
                            "src": "5435:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                              "typeString": "contract OperatorInterface"
                            }
                          },
                          "id": 11459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "requestOracleData",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19746,
                          "src": "5435:24:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_address_$_t_bytes4_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                            "typeString": "function (address,uint256,bytes32,address,bytes4,uint256,uint256,bytes memory) external"
                          }
                        },
                        "id": 11460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "selector",
                        "nodeType": "MemberAccess",
                        "src": "5435:33:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 11453,
                      "name": "rawRequest",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11543,
                      "src": "5372:10:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_Request_$17528_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes4_$returns$_t_bytes32_$",
                        "typeString": "function (address,struct Chainlink.Request memory,uint256,uint256,bytes4) returns (bytes32)"
                      }
                    },
                    "id": 11461,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5372:97:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11452,
                  "id": 11462,
                  "nodeType": "Return",
                  "src": "5365:104:15"
                }
              ]
            },
            "documentation": {
              "id": 11441,
              "nodeType": "StructuredDocumentation",
              "src": "4616:564:15",
              "text": " @notice Creates a Chainlink request to the specified oracle address\n @dev This function supports multi-word response\n @dev Generates and stores a request ID, increments the local nonce, and uses `transferAndCall` to\n send LINK which creates a request on the target oracle contract.\n Emits ChainlinkRequested event.\n @param oracleAddress The address of the oracle for the request\n @param req The initialized Chainlink Request\n @param payment The amount of LINK to send for the request\n @return requestId The request ID"
            },
            "id": 11464,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "requestOracleDataFrom",
            "nameLocation": "5192:21:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11449,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11443,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "5227:13:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11464,
                  "src": "5219:21:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11442,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5219:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11446,
                  "mutability": "mutable",
                  "name": "req",
                  "nameLocation": "5271:3:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11464,
                  "src": "5246:28:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 11445,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 11444,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17528,
                      "src": "5246:17:15"
                    },
                    "referencedDeclaration": 17528,
                    "src": "5246:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$17528_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11448,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "5288:7:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11464,
                  "src": "5280:15:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11447,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5280:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5213:86:15"
            },
            "returnParameters": {
              "id": 11452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11451,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "5341:9:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11464,
                  "src": "5333:17:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11450,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5333:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5325:31:15"
            },
            "scope": 11801,
            "src": "5183:291:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11542,
              "nodeType": "Block",
              "src": "6042:737:15",
              "statements": [
                {
                  "expression": {
                    "id": 11489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 11481,
                      "name": "requestId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11479,
                      "src": "6048:9:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 11485,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "6087:4:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ChainlinkClientUpgradeable_$11801",
                                "typeString": "contract ChainlinkClientUpgradeable"
                              }
                            },
                            {
                              "id": 11486,
                              "name": "requestCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11321,
                              "src": "6093:12:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_ChainlinkClientUpgradeable_$11801",
                                "typeString": "contract ChainlinkClientUpgradeable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 11483,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6070:3:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 11484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "6070:16:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 11487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6070:36:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 11482,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "6060:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 11488,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6060:47:15",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6048:59:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 11490,
                  "nodeType": "ExpressionStatement",
                  "src": "6048:59:15"
                },
                {
                  "expression": {
                    "id": 11495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 11491,
                        "name": "req",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11470,
                        "src": "6113:3:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                          "typeString": "struct Chainlink.Request memory"
                        }
                      },
                      "id": 11493,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "nonce",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17524,
                      "src": "6113:9:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 11494,
                      "name": "requestCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11321,
                      "src": "6125:12:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6113:24:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11496,
                  "nodeType": "ExpressionStatement",
                  "src": "6113:24:15"
                },
                {
                  "expression": {
                    "id": 11501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 11497,
                        "name": "pendingRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11325,
                        "src": "6143:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 11499,
                      "indexExpression": {
                        "id": 11498,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11479,
                        "src": "6159:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "6143:26:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 11500,
                      "name": "oracleAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11467,
                      "src": "6172:13:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "6143:42:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 11502,
                  "nodeType": "ExpressionStatement",
                  "src": "6143:42:15"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 11504,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11479,
                        "src": "6215:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11503,
                      "name": "ChainlinkRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11329,
                      "src": "6196:18:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 11505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6196:29:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11506,
                  "nodeType": "EmitStatement",
                  "src": "6191:34:15"
                },
                {
                  "assignments": [
                    11508
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11508,
                      "mutability": "mutable",
                      "name": "encodedData",
                      "nameLocation": "6244:11:15",
                      "nodeType": "VariableDeclaration",
                      "scope": 11542,
                      "src": "6231:24:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 11507,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "6231:5:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 11527,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 11511,
                        "name": "funcSelector",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11476,
                        "src": "6288:12:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "id": 11512,
                        "name": "SENDER_OVERRIDE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11289,
                        "src": "6308:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 11513,
                        "name": "AMOUNT_OVERRIDE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11283,
                        "src": "6416:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "id": 11514,
                          "name": "req",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11470,
                          "src": "6521:3:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                            "typeString": "struct Chainlink.Request memory"
                          }
                        },
                        "id": 11515,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "id",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17518,
                        "src": "6521:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 11516,
                          "name": "req",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11470,
                          "src": "6535:3:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                            "typeString": "struct Chainlink.Request memory"
                          }
                        },
                        "id": 11517,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "callbackAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17520,
                        "src": "6535:19:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "id": 11518,
                          "name": "req",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11470,
                          "src": "6562:3:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                            "typeString": "struct Chainlink.Request memory"
                          }
                        },
                        "id": 11519,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "callbackFunctionId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17522,
                        "src": "6562:22:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "expression": {
                          "id": 11520,
                          "name": "req",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11470,
                          "src": "6592:3:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                            "typeString": "struct Chainlink.Request memory"
                          }
                        },
                        "id": 11521,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "nonce",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17524,
                        "src": "6592:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 11522,
                        "name": "argsVersion",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11474,
                        "src": "6609:11:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "id": 11523,
                            "name": "req",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11470,
                            "src": "6628:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                              "typeString": "struct Chainlink.Request memory"
                            }
                          },
                          "id": 11524,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "buf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17527,
                          "src": "6628:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_buffer_$24660_memory_ptr",
                            "typeString": "struct BufferChainlink.buffer memory"
                          }
                        },
                        "id": 11525,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "buf",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24657,
                        "src": "6628:11:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 11509,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "6258:3:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 11510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSelector",
                      "nodeType": "MemberAccess",
                      "src": "6258:22:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes4) pure returns (bytes memory)"
                      }
                    },
                    "id": 11526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6258:382:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6231:409:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 11531,
                            "name": "oracleAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11467,
                            "src": "6675:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 11532,
                            "name": "payment",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11472,
                            "src": "6690:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 11533,
                            "name": "encodedData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11508,
                            "src": "6699:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 11529,
                            "name": "link",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11316,
                            "src": "6654:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_LinkTokenInterface_$19719",
                              "typeString": "contract LinkTokenInterface"
                            }
                          },
                          "id": 11530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferAndCall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19707,
                          "src": "6654:20:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,uint256,bytes memory) external returns (bool)"
                          }
                        },
                        "id": 11534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6654:57:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "756e61626c6520746f207472616e73666572416e6443616c6c20746f206f7261636c65",
                        "id": 11535,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6713:37:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3b3efd608222b424e5ed8427d7f6a272069793e6a1f5930c93db5c7960c3ce96",
                          "typeString": "literal_string \"unable to transferAndCall to oracle\""
                        },
                        "value": "unable to transferAndCall to oracle"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3b3efd608222b424e5ed8427d7f6a272069793e6a1f5930c93db5c7960c3ce96",
                          "typeString": "literal_string \"unable to transferAndCall to oracle\""
                        }
                      ],
                      "id": 11528,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6646:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6646:105:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11537,
                  "nodeType": "ExpressionStatement",
                  "src": "6646:105:15"
                },
                {
                  "expression": {
                    "id": 11540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 11538,
                      "name": "requestCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11321,
                      "src": "6757:12:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 11539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6773:1:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "6757:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11541,
                  "nodeType": "ExpressionStatement",
                  "src": "6757:17:15"
                }
              ]
            },
            "documentation": {
              "id": 11465,
              "nodeType": "StructuredDocumentation",
              "src": "5478:347:15",
              "text": " @notice Make a request to an oracle\n @param oracleAddress The address of the oracle for the request\n @param req The initialized Chainlink Request\n @param payment The amount of LINK to send for the request\n @param argsVersion The version of data support (single word, multi word)\n @return requestId The request ID"
            },
            "id": 11543,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rawRequest",
            "nameLocation": "5837:10:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11477,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11467,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "5861:13:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "5853:21:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11466,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5853:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11470,
                  "mutability": "mutable",
                  "name": "req",
                  "nameLocation": "5905:3:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "5880:28:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Request_$17528_memory_ptr",
                    "typeString": "struct Chainlink.Request"
                  },
                  "typeName": {
                    "id": 11469,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 11468,
                      "name": "Chainlink.Request",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17528,
                      "src": "5880:17:15"
                    },
                    "referencedDeclaration": 17528,
                    "src": "5880:17:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Request_$17528_storage_ptr",
                      "typeString": "struct Chainlink.Request"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11472,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "5922:7:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "5914:15:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11471,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5914:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11474,
                  "mutability": "mutable",
                  "name": "argsVersion",
                  "nameLocation": "5943:11:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "5935:19:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11473,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5935:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11476,
                  "mutability": "mutable",
                  "name": "funcSelector",
                  "nameLocation": "5967:12:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "5960:19:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 11475,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "5960:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5847:136:15"
            },
            "returnParameters": {
              "id": 11480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11479,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "6024:9:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11543,
                  "src": "6016:17:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11478,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6016:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6008:31:15"
            },
            "scope": 11801,
            "src": "5828:951:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 11582,
              "nodeType": "Block",
              "src": "7439:246:15",
              "statements": [
                {
                  "assignments": [
                    11557
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11557,
                      "mutability": "mutable",
                      "name": "requested",
                      "nameLocation": "7463:9:15",
                      "nodeType": "VariableDeclaration",
                      "scope": 11582,
                      "src": "7445:27:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                        "typeString": "contract OperatorInterface"
                      },
                      "typeName": {
                        "id": 11556,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 11555,
                          "name": "OperatorInterface",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 19801,
                          "src": "7445:17:15"
                        },
                        "referencedDeclaration": 19801,
                        "src": "7445:17:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                          "typeString": "contract OperatorInterface"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 11563,
                  "initialValue": {
                    "arguments": [
                      {
                        "baseExpression": {
                          "id": 11559,
                          "name": "pendingRequests",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11325,
                          "src": "7493:15:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 11561,
                        "indexExpression": {
                          "id": 11560,
                          "name": "requestId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11546,
                          "src": "7509:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "7493:26:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11558,
                      "name": "OperatorInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19801,
                      "src": "7475:17:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_OperatorInterface_$19801_$",
                        "typeString": "type(contract OperatorInterface)"
                      }
                    },
                    "id": 11562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7475:45:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                      "typeString": "contract OperatorInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7445:75:15"
                },
                {
                  "expression": {
                    "id": 11567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "7526:33:15",
                    "subExpression": {
                      "baseExpression": {
                        "id": 11564,
                        "name": "pendingRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11325,
                        "src": "7533:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 11566,
                      "indexExpression": {
                        "id": 11565,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11546,
                        "src": "7549:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7533:26:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11568,
                  "nodeType": "ExpressionStatement",
                  "src": "7526:33:15"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 11570,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11546,
                        "src": "7589:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11569,
                      "name": "ChainlinkCancelled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11337,
                      "src": "7570:18:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 11571,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7570:29:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11572,
                  "nodeType": "EmitStatement",
                  "src": "7565:34:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 11576,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11546,
                        "src": "7635:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 11577,
                        "name": "payment",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11548,
                        "src": "7646:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 11578,
                        "name": "callbackFunc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11550,
                        "src": "7655:12:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "id": 11579,
                        "name": "expiration",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11552,
                        "src": "7669:10:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 11573,
                        "name": "requested",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11557,
                        "src": "7605:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                          "typeString": "contract OperatorInterface"
                        }
                      },
                      "id": 11575,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "cancelOracleRequest",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 26429,
                      "src": "7605:29:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes4_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256,bytes4,uint256) external"
                      }
                    },
                    "id": 11580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7605:75:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11581,
                  "nodeType": "ExpressionStatement",
                  "src": "7605:75:15"
                }
              ]
            },
            "documentation": {
              "id": 11544,
              "nodeType": "StructuredDocumentation",
              "src": "6783:509:15",
              "text": " @notice Allows a request to be cancelled if it has not been fulfilled\n @dev Requires keeping track of the expiration value emitted from the oracle contract.\n Deletes the request from the `pendingRequests` mapping.\n Emits ChainlinkCancelled event.\n @param requestId The request ID\n @param payment The amount of LINK sent for the request\n @param callbackFunc The callback function specified for the request\n @param expiration The time of the expiration for the request"
            },
            "id": 11583,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cancelChainlinkRequest",
            "nameLocation": "7304:22:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11546,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "7340:9:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11583,
                  "src": "7332:17:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11545,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7332:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11548,
                  "mutability": "mutable",
                  "name": "payment",
                  "nameLocation": "7363:7:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11583,
                  "src": "7355:15:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11547,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7355:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11550,
                  "mutability": "mutable",
                  "name": "callbackFunc",
                  "nameLocation": "7383:12:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11583,
                  "src": "7376:19:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 11549,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "7376:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11552,
                  "mutability": "mutable",
                  "name": "expiration",
                  "nameLocation": "7409:10:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11583,
                  "src": "7401:18:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11551,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7401:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7326:97:15"
            },
            "returnParameters": {
              "id": 11554,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7439:0:15"
            },
            "scope": 11801,
            "src": "7295:390:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11595,
              "nodeType": "Block",
              "src": "7880:52:15",
              "statements": [
                {
                  "expression": {
                    "id": 11593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 11589,
                      "name": "oracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11319,
                      "src": "7886:6:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                        "typeString": "contract OperatorInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 11591,
                          "name": "oracleAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11586,
                          "src": "7913:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 11590,
                        "name": "OperatorInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19801,
                        "src": "7895:17:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_OperatorInterface_$19801_$",
                          "typeString": "type(contract OperatorInterface)"
                        }
                      },
                      "id": 11592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7895:32:15",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                        "typeString": "contract OperatorInterface"
                      }
                    },
                    "src": "7886:41:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                      "typeString": "contract OperatorInterface"
                    }
                  },
                  "id": 11594,
                  "nodeType": "ExpressionStatement",
                  "src": "7886:41:15"
                }
              ]
            },
            "documentation": {
              "id": 11584,
              "nodeType": "StructuredDocumentation",
              "src": "7689:114:15",
              "text": " @notice Sets the stored oracle address\n @param oracleAddress The address of the oracle contract"
            },
            "id": 11596,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setChainlinkOracle",
            "nameLocation": "7815:18:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11586,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "7847:13:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11596,
                  "src": "7839:21:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11585,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7839:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7833:31:15"
            },
            "returnParameters": {
              "id": 11588,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7880:0:15"
            },
            "scope": 11801,
            "src": "7806:126:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11608,
              "nodeType": "Block",
              "src": "8123:49:15",
              "statements": [
                {
                  "expression": {
                    "id": 11606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 11602,
                      "name": "link",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11316,
                      "src": "8129:4:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_LinkTokenInterface_$19719",
                        "typeString": "contract LinkTokenInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 11604,
                          "name": "linkAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11599,
                          "src": "8155:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 11603,
                        "name": "LinkTokenInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19719,
                        "src": "8136:18:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_LinkTokenInterface_$19719_$",
                          "typeString": "type(contract LinkTokenInterface)"
                        }
                      },
                      "id": 11605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8136:31:15",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_LinkTokenInterface_$19719",
                        "typeString": "contract LinkTokenInterface"
                      }
                    },
                    "src": "8129:38:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LinkTokenInterface_$19719",
                      "typeString": "contract LinkTokenInterface"
                    }
                  },
                  "id": 11607,
                  "nodeType": "ExpressionStatement",
                  "src": "8129:38:15"
                }
              ]
            },
            "documentation": {
              "id": 11597,
              "nodeType": "StructuredDocumentation",
              "src": "7936:113:15",
              "text": " @notice Sets the LINK token address\n @param linkAddress The address of the LINK token contract"
            },
            "id": 11609,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setChainlinkToken",
            "nameLocation": "8061:17:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11599,
                  "mutability": "mutable",
                  "name": "linkAddress",
                  "nameLocation": "8092:11:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11609,
                  "src": "8084:19:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11598,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8084:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8078:29:15"
            },
            "returnParameters": {
              "id": 11601,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8123:0:15"
            },
            "scope": 11801,
            "src": "8052:120:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11621,
              "nodeType": "Block",
              "src": "8345:79:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "arguments": [
                              {
                                "id": 11615,
                                "name": "LINK_TOKEN_POINTER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11308,
                                "src": "8386:18:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 11614,
                              "name": "PointerInterface",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19809,
                              "src": "8369:16:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_PointerInterface_$19809_$",
                                "typeString": "type(contract PointerInterface)"
                              }
                            },
                            "id": 11616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8369:36:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_PointerInterface_$19809",
                              "typeString": "contract PointerInterface"
                            }
                          },
                          "id": 11617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19808,
                          "src": "8369:47:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 11618,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8369:49:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11613,
                      "name": "setChainlinkToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11609,
                      "src": "8351:17:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 11619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8351:68:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11620,
                  "nodeType": "ExpressionStatement",
                  "src": "8351:68:15"
                }
              ]
            },
            "documentation": {
              "id": 11610,
              "nodeType": "StructuredDocumentation",
              "src": "8176:116:15",
              "text": " @notice Sets the Chainlink token address for the public\n network as given by the Pointer contract"
            },
            "id": 11622,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setPublicChainlinkToken",
            "nameLocation": "8304:23:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11611,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8327:2:15"
            },
            "returnParameters": {
              "id": 11612,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8345:0:15"
            },
            "scope": 11801,
            "src": "8295:129:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11633,
              "nodeType": "Block",
              "src": "8634:31:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 11630,
                        "name": "link",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11316,
                        "src": "8655:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_LinkTokenInterface_$19719",
                          "typeString": "contract LinkTokenInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_LinkTokenInterface_$19719",
                          "typeString": "contract LinkTokenInterface"
                        }
                      ],
                      "id": 11629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8647:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 11628,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8647:7:15",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 11631,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8647:13:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 11627,
                  "id": 11632,
                  "nodeType": "Return",
                  "src": "8640:20:15"
                }
              ]
            },
            "documentation": {
              "id": 11623,
              "nodeType": "StructuredDocumentation",
              "src": "8428:112:15",
              "text": " @notice Retrieves the stored address of the LINK token\n @return The address of the LINK token"
            },
            "id": 11634,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainlinkTokenAddress",
            "nameLocation": "8552:21:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11624,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8573:2:15"
            },
            "returnParameters": {
              "id": 11627,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11626,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 11634,
                  "src": "8618:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11625,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8618:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8610:21:15"
            },
            "scope": 11801,
            "src": "8543:122:15",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11645,
              "nodeType": "Block",
              "src": "8886:33:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 11642,
                        "name": "oracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11319,
                        "src": "8907:6:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                          "typeString": "contract OperatorInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_OperatorInterface_$19801",
                          "typeString": "contract OperatorInterface"
                        }
                      ],
                      "id": 11641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "8899:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 11640,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8899:7:15",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 11643,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8899:15:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 11639,
                  "id": 11644,
                  "nodeType": "Return",
                  "src": "8892:22:15"
                }
              ]
            },
            "documentation": {
              "id": 11635,
              "nodeType": "StructuredDocumentation",
              "src": "8669:122:15",
              "text": " @notice Retrieves the stored address of the oracle contract\n @return The address of the oracle contract"
            },
            "id": 11646,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "chainlinkOracleAddress",
            "nameLocation": "8803:22:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11636,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8825:2:15"
            },
            "returnParameters": {
              "id": 11639,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11638,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 11646,
                  "src": "8870:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11637,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8870:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8862:21:15"
            },
            "scope": 11801,
            "src": "8794:125:15",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11663,
              "nodeType": "Block",
              "src": "9334:53:15",
              "statements": [
                {
                  "expression": {
                    "id": 11661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 11657,
                        "name": "pendingRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11325,
                        "src": "9340:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 11659,
                      "indexExpression": {
                        "id": 11658,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11651,
                        "src": "9356:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9340:26:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 11660,
                      "name": "oracleAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11649,
                      "src": "9369:13:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9340:42:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 11662,
                  "nodeType": "ExpressionStatement",
                  "src": "9340:42:15"
                }
              ]
            },
            "documentation": {
              "id": 11647,
              "nodeType": "StructuredDocumentation",
              "src": "8923:269:15",
              "text": " @notice Allows for a request which was created on another contract to be fulfilled\n on this contract\n @param oracleAddress The address of the oracle contract that will fulfill the request\n @param requestId The request ID used for the response"
            },
            "id": 11664,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 11654,
                    "name": "requestId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11651,
                    "src": "9321:9:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11655,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 11653,
                  "name": "notPendingRequest",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11800,
                  "src": "9303:17:15"
                },
                "nodeType": "ModifierInvocation",
                "src": "9303:28:15"
              }
            ],
            "name": "addChainlinkExternalRequest",
            "nameLocation": "9204:27:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11652,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11649,
                  "mutability": "mutable",
                  "name": "oracleAddress",
                  "nameLocation": "9245:13:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11664,
                  "src": "9237:21:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11648,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9237:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11651,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "9272:9:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11664,
                  "src": "9264:17:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11650,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9264:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9231:54:15"
            },
            "returnParameters": {
              "id": 11656,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9334:0:15"
            },
            "scope": 11801,
            "src": "9195:192:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11712,
              "nodeType": "Block",
              "src": "9738:318:15",
              "statements": [
                {
                  "expression": {
                    "id": 11676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 11672,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11311,
                      "src": "9744:3:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENSInterface_$19624",
                        "typeString": "contract ENSInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 11674,
                          "name": "ensAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11667,
                          "src": "9763:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 11673,
                        "name": "ENSInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19624,
                        "src": "9750:12:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ENSInterface_$19624_$",
                          "typeString": "type(contract ENSInterface)"
                        }
                      },
                      "id": 11675,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9750:24:15",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENSInterface_$19624",
                        "typeString": "contract ENSInterface"
                      }
                    },
                    "src": "9744:30:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENSInterface_$19624",
                      "typeString": "contract ENSInterface"
                    }
                  },
                  "id": 11677,
                  "nodeType": "ExpressionStatement",
                  "src": "9744:30:15"
                },
                {
                  "expression": {
                    "id": 11680,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 11678,
                      "name": "ensNode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11313,
                      "src": "9780:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 11679,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11669,
                      "src": "9790:4:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "9780:14:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 11681,
                  "nodeType": "ExpressionStatement",
                  "src": "9780:14:15"
                },
                {
                  "assignments": [
                    11683
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11683,
                      "mutability": "mutable",
                      "name": "linkSubnode",
                      "nameLocation": "9808:11:15",
                      "nodeType": "VariableDeclaration",
                      "scope": 11712,
                      "src": "9800:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11682,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9800:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 11691,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 11687,
                            "name": "ensNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11313,
                            "src": "9849:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 11688,
                            "name": "ENS_TOKEN_SUBNAME",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11300,
                            "src": "9858:17:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 11685,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9832:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 11686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "9832:16:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 11689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9832:44:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11684,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "9822:9:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9822:55:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9800:77:15"
                },
                {
                  "assignments": [
                    11694
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11694,
                      "mutability": "mutable",
                      "name": "resolver",
                      "nameLocation": "9905:8:15",
                      "nodeType": "VariableDeclaration",
                      "scope": 11712,
                      "src": "9883:30:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENSResolver_$19819",
                        "typeString": "contract ENSResolver"
                      },
                      "typeName": {
                        "id": 11693,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 11692,
                          "name": "ENSResolver_Chainlink",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 19819,
                          "src": "9883:21:15"
                        },
                        "referencedDeclaration": 19819,
                        "src": "9883:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENSResolver_$19819",
                          "typeString": "contract ENSResolver"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 11701,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 11698,
                            "name": "linkSubnode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11683,
                            "src": "9951:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 11696,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11311,
                            "src": "9938:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENSInterface_$19624",
                              "typeString": "contract ENSInterface"
                            }
                          },
                          "id": 11697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "resolver",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19616,
                          "src": "9938:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 11699,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9938:25:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11695,
                      "name": "ENSResolver_Chainlink",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19819,
                      "src": "9916:21:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ENSResolver_$19819_$",
                        "typeString": "type(contract ENSResolver)"
                      }
                    },
                    "id": 11700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9916:48:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENSResolver_$19819",
                      "typeString": "contract ENSResolver"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9883:81:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 11705,
                            "name": "linkSubnode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11683,
                            "src": "10002:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 11703,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11694,
                            "src": "9988:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENSResolver_$19819",
                              "typeString": "contract ENSResolver"
                            }
                          },
                          "id": 11704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "addr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19818,
                          "src": "9988:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 11706,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9988:26:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11702,
                      "name": "setChainlinkToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11609,
                      "src": "9970:17:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 11707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9970:45:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11708,
                  "nodeType": "ExpressionStatement",
                  "src": "9970:45:15"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 11709,
                      "name": "updateChainlinkOracleWithENS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11745,
                      "src": "10021:28:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 11710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10021:30:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11711,
                  "nodeType": "ExpressionStatement",
                  "src": "10021:30:15"
                }
              ]
            },
            "documentation": {
              "id": 11665,
              "nodeType": "StructuredDocumentation",
              "src": "9391:254:15",
              "text": " @notice Sets the stored oracle and LINK token contracts with the addresses resolved by ENS\n @dev Accounts for subnodes having different resolvers\n @param ensAddress The address of the ENS contract\n @param node The ENS node hash"
            },
            "id": 11713,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "useChainlinkWithENS",
            "nameLocation": "9657:19:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11670,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11667,
                  "mutability": "mutable",
                  "name": "ensAddress",
                  "nameLocation": "9690:10:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11713,
                  "src": "9682:18:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11666,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9682:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11669,
                  "mutability": "mutable",
                  "name": "node",
                  "nameLocation": "9714:4:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11713,
                  "src": "9706:12:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11668,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9706:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9676:46:15"
            },
            "returnParameters": {
              "id": 11671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9738:0:15"
            },
            "scope": 11801,
            "src": "9648:408:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11744,
              "nodeType": "Block",
              "src": "10305:234:15",
              "statements": [
                {
                  "assignments": [
                    11718
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11718,
                      "mutability": "mutable",
                      "name": "oracleSubnode",
                      "nameLocation": "10319:13:15",
                      "nodeType": "VariableDeclaration",
                      "scope": 11744,
                      "src": "10311:21:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11717,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10311:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 11726,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 11722,
                            "name": "ensNode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11313,
                            "src": "10362:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "id": 11723,
                            "name": "ENS_ORACLE_SUBNAME",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11305,
                            "src": "10371:18:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 11720,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10345:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 11721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "10345:16:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 11724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10345:45:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11719,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "10335:9:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11725,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10335:56:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10311:80:15"
                },
                {
                  "assignments": [
                    11729
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11729,
                      "mutability": "mutable",
                      "name": "resolver",
                      "nameLocation": "10419:8:15",
                      "nodeType": "VariableDeclaration",
                      "scope": 11744,
                      "src": "10397:30:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ENSResolver_$19819",
                        "typeString": "contract ENSResolver"
                      },
                      "typeName": {
                        "id": 11728,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 11727,
                          "name": "ENSResolver_Chainlink",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 19819,
                          "src": "10397:21:15"
                        },
                        "referencedDeclaration": 19819,
                        "src": "10397:21:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ENSResolver_$19819",
                          "typeString": "contract ENSResolver"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 11736,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 11733,
                            "name": "oracleSubnode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11718,
                            "src": "10465:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 11731,
                            "name": "ens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11311,
                            "src": "10452:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENSInterface_$19624",
                              "typeString": "contract ENSInterface"
                            }
                          },
                          "id": 11732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "resolver",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19616,
                          "src": "10452:12:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 11734,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10452:27:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11730,
                      "name": "ENSResolver_Chainlink",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19819,
                      "src": "10430:21:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ENSResolver_$19819_$",
                        "typeString": "type(contract ENSResolver)"
                      }
                    },
                    "id": 11735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10430:50:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ENSResolver_$19819",
                      "typeString": "contract ENSResolver"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10397:83:15"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 11740,
                            "name": "oracleSubnode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11718,
                            "src": "10519:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 11738,
                            "name": "resolver",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11729,
                            "src": "10505:8:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ENSResolver_$19819",
                              "typeString": "contract ENSResolver"
                            }
                          },
                          "id": 11739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "addr",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 19818,
                          "src": "10505:13:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32) view external returns (address)"
                          }
                        },
                        "id": 11741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10505:28:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11737,
                      "name": "setChainlinkOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11596,
                      "src": "10486:18:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 11742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10486:48:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11743,
                  "nodeType": "ExpressionStatement",
                  "src": "10486:48:15"
                }
              ]
            },
            "documentation": {
              "id": 11714,
              "nodeType": "StructuredDocumentation",
              "src": "10060:187:15",
              "text": " @notice Sets the stored oracle contract with the address resolved by ENS\n @dev This may be called on its own as long as `useChainlinkWithENS` has been called previously"
            },
            "id": 11745,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "updateChainlinkOracleWithENS",
            "nameLocation": "10259:28:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11715,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10287:2:15"
            },
            "returnParameters": {
              "id": 11716,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10305:0:15"
            },
            "scope": 11801,
            "src": "10250:289:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11754,
              "nodeType": "Block",
              "src": "10937:2:15",
              "statements": []
            },
            "documentation": {
              "id": 11746,
              "nodeType": "StructuredDocumentation",
              "src": "10543:223:15",
              "text": " @notice Ensures that the fulfillment is valid for this contract\n @dev Use if the contract developer prefers methods instead of modifiers for validation\n @param requestId The request ID for fulfillment"
            },
            "id": 11755,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 11751,
                    "name": "requestId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11748,
                    "src": "10875:9:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11752,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 11750,
                  "name": "recordChainlinkFulfillment",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 11781,
                  "src": "10848:26:15"
                },
                "nodeType": "ModifierInvocation",
                "src": "10848:37:15"
              }
            ],
            "name": "validateChainlinkCallback",
            "nameLocation": "10778:25:15",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11749,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11748,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "10817:9:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11755,
                  "src": "10809:17:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11747,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10809:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10803:27:15"
            },
            "returnParameters": {
              "id": 11753,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10937:0:15"
            },
            "scope": 11801,
            "src": "10769:170:15",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11780,
              "nodeType": "Block",
              "src": "11176:202:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 11766,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 11761,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "11190:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 11762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "11190:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "baseExpression": {
                            "id": 11763,
                            "name": "pendingRequests",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11325,
                            "src": "11204:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 11765,
                          "indexExpression": {
                            "id": 11764,
                            "name": "requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11758,
                            "src": "11220:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11204:26:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11190:40:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "536f75726365206d75737420626520746865206f7261636c65206f66207468652072657175657374",
                        "id": 11767,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11244:42:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_d5cafe2745dab6273b51cca76f8727c7664db74ede49af049a5b5ca6a3b184e4",
                          "typeString": "literal_string \"Source must be the oracle of the request\""
                        },
                        "value": "Source must be the oracle of the request"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_d5cafe2745dab6273b51cca76f8727c7664db74ede49af049a5b5ca6a3b184e4",
                          "typeString": "literal_string \"Source must be the oracle of the request\""
                        }
                      ],
                      "id": 11760,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11182:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11768,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11182:105:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11769,
                  "nodeType": "ExpressionStatement",
                  "src": "11182:105:15"
                },
                {
                  "expression": {
                    "id": 11773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "11293:33:15",
                    "subExpression": {
                      "baseExpression": {
                        "id": 11770,
                        "name": "pendingRequests",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11325,
                        "src": "11300:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 11772,
                      "indexExpression": {
                        "id": 11771,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11758,
                        "src": "11316:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11300:26:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11774,
                  "nodeType": "ExpressionStatement",
                  "src": "11293:33:15"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 11776,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11758,
                        "src": "11356:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11775,
                      "name": "ChainlinkFulfilled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11333,
                      "src": "11337:18:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 11777,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11337:29:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11778,
                  "nodeType": "EmitStatement",
                  "src": "11332:34:15"
                },
                {
                  "id": 11779,
                  "nodeType": "PlaceholderStatement",
                  "src": "11372:1:15"
                }
              ]
            },
            "documentation": {
              "id": 11756,
              "nodeType": "StructuredDocumentation",
              "src": "10943:165:15",
              "text": " @dev Reverts if the sender is not the oracle of the request.\n Emits ChainlinkFulfilled event.\n @param requestId The request ID for fulfillment"
            },
            "id": 11781,
            "name": "recordChainlinkFulfillment",
            "nameLocation": "11120:26:15",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 11759,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11758,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "11160:9:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11781,
                  "src": "11152:17:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11757,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11152:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11146:27:15"
            },
            "src": "11111:267:15",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11799,
              "nodeType": "Block",
              "src": "11555:97:15",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 11794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "baseExpression": {
                            "id": 11787,
                            "name": "pendingRequests",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11325,
                            "src": "11569:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 11789,
                          "indexExpression": {
                            "id": 11788,
                            "name": "requestId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11784,
                            "src": "11585:9:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11569:26:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 11792,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11607:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 11791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11599:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 11790,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11599:7:15",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 11793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11599:10:15",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11569:40:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5265717565737420697320616c72656164792070656e64696e67",
                        "id": 11795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11611:28:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_efa688de2ca2442cd2f76ca864c7a15bdcb24ac77ed3de01d4cf9f6afd58c7aa",
                          "typeString": "literal_string \"Request is already pending\""
                        },
                        "value": "Request is already pending"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_efa688de2ca2442cd2f76ca864c7a15bdcb24ac77ed3de01d4cf9f6afd58c7aa",
                          "typeString": "literal_string \"Request is already pending\""
                        }
                      ],
                      "id": 11786,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11561:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11561:79:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11797,
                  "nodeType": "ExpressionStatement",
                  "src": "11561:79:15"
                },
                {
                  "id": 11798,
                  "nodeType": "PlaceholderStatement",
                  "src": "11646:1:15"
                }
              ]
            },
            "documentation": {
              "id": 11782,
              "nodeType": "StructuredDocumentation",
              "src": "11382:114:15",
              "text": " @dev Reverts if the request is already pending\n @param requestId The request ID for fulfillment"
            },
            "id": 11800,
            "name": "notPendingRequest",
            "nameLocation": "11508:17:15",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 11785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11784,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "11539:9:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 11800,
                  "src": "11531:17:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11783,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11531:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11525:27:15"
            },
            "src": "11499:153:15",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 11802,
        "src": "955:10699:15",
        "usedErrors": []
      }
    ],
    "src": "32:11623:15"
  },
  "bytecode": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212205f1c29baffe374f55180209e93544a2cbb491eec068680aa312ef99a373fc24864736f6c63430008060033",
  "bytecodeSha1": "73df0a6f5d0123eb2b2db0faf62b602aa77c123a",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "ChainlinkClientUpgradeable",
  "coverageMap": {
    "branches": {
      "15": {},
      "57": {},
      "59": {},
      "60": {},
      "61": {},
      "63": {},
      "64": {},
      "65": {},
      "66": {},
      "72": {}
    },
    "statements": {
      "15": {},
      "57": {},
      "59": {},
      "60": {},
      "61": {},
      "63": {},
      "64": {},
      "65": {},
      "66": {},
      "72": {}
    }
  },
  "dependencies": [
    "BufferChainlink",
    "CBORChainlink",
    "Chainlink",
    "ENSInterface",
    "ENSResolver",
    "Initializable",
    "LinkTokenInterface",
    "OperatorInterface",
    "PointerInterface"
  ],
  "deployedBytecode": "6080604052600080fdfea26469706673582212205f1c29baffe374f55180209e93544a2cbb491eec068680aa312ef99a373fc24864736f6c63430008060033",
  "deployedSourceMap": "955:10699:15:-:0;;;;;",
  "language": "Solidity",
  "natspec": {
    "details": "Changes to make it compatible with OZ UUPS proxies",
    "kind": "dev",
    "methods": {},
    "notice": "Contract writers can inherit this contract in order to create requests for the Chainlink network",
    "title": "The ChainlinkClient contract in upgradeable version",
    "version": 1
  },
  "offset": [
    955,
    11654
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5F SHR 0x29 0xBA SELFDESTRUCT 0xE3 PUSH21 0xF55180209E93544A2CBB491EEC068680AA312EF99A CALLDATACOPY EXTCODEHASH 0xC2 0x48 PUSH5 0x736F6C6343 STOP ADDMOD MOD STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        955,
        11654
      ],
      "op": "PUSH1",
      "path": "15",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        955,
        11654
      ],
      "op": "PUSH1",
      "path": "15",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        955,
        11654
      ],
      "op": "MSTORE",
      "path": "15"
    },
    "5": {
      "fn": null,
      "offset": [
        955,
        11654
      ],
      "op": "PUSH1",
      "path": "15",
      "value": "0x0"
    },
    "7": {
      "fn": null,
      "offset": [
        955,
        11654
      ],
      "op": "DUP1",
      "path": "15"
    },
    "8": {
      "fn": null,
      "offset": [
        955,
        11654
      ],
      "op": "REVERT",
      "path": "15"
    }
  },
  "sha1": "a5319d909f62dd7a7c66e4c2544ca8f73135607b",
  "source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {Chainlink} from \"@chainlink/contracts/src/v0.8/Chainlink.sol\";\nimport {ENSInterface} from \"@chainlink/contracts/src/v0.8/interfaces/ENSInterface.sol\";\nimport {LinkTokenInterface} from \"@chainlink/contracts/src/v0.8/interfaces/LinkTokenInterface.sol\";\nimport {OperatorInterface} from \"@chainlink/contracts/src/v0.8/interfaces/OperatorInterface.sol\";\nimport {PointerInterface} from \"@chainlink/contracts/src/v0.8/interfaces/PointerInterface.sol\";\nimport {ENSResolver as ENSResolver_Chainlink} from \"@chainlink/contracts/src/v0.8/vendor/ENSResolver.sol\";\nimport {Initializable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\n\n/**\n * @title The ChainlinkClient contract in upgradeable version\n * @dev Changes to make it compatible with OZ UUPS proxies\n * @notice Contract writers can inherit this contract in order to create requests for the\n * Chainlink network\n */\ncontract ChainlinkClientUpgradeable is Initializable {\n  using Chainlink for Chainlink.Request;\n\n  uint256 constant internal LINK_DIVISIBILITY = 10**18;\n  uint256 constant private AMOUNT_OVERRIDE = 0;\n  address constant private SENDER_OVERRIDE = address(0);\n  uint256 constant private ORACLE_ARGS_VERSION = 1;\n  uint256 constant private OPERATOR_ARGS_VERSION = 2;\n  bytes32 constant private ENS_TOKEN_SUBNAME = keccak256(\"link\");\n  bytes32 constant private ENS_ORACLE_SUBNAME = keccak256(\"oracle\");\n  address constant private LINK_TOKEN_POINTER = 0xC89bD4E1632D3A43CB03AAAd5262cbe4038Bc571;\n\n  ENSInterface private ens;\n  bytes32 private ensNode;\n  LinkTokenInterface private link;\n  OperatorInterface private oracle;\n  uint256 private requestCount;\n  mapping(bytes32 => address) private pendingRequests;\n\n  event ChainlinkRequested(\n    bytes32 indexed id\n  );\n  event ChainlinkFulfilled(\n    bytes32 indexed id\n  );\n  event ChainlinkCancelled(\n    bytes32 indexed id\n  );\n\n  function __ChainlinkClient_init() internal initializer {\n    requestCount = 1;\n  }\n\n  /**\n   * @notice Creates a request that can hold additional parameters\n   * @param specId The Job Specification ID that the request will be created for\n   * @param callbackAddress The callback address that the response will be sent to\n   * @param callbackFunctionSignature The callback function signature to use for the callback address\n   * @return A Chainlink Request struct in memory\n   */\n  function buildChainlinkRequest(\n    bytes32 specId,\n    address callbackAddress,\n    bytes4 callbackFunctionSignature\n  )\n    internal\n    pure\n    returns (\n      Chainlink.Request memory\n    )\n  {\n    Chainlink.Request memory req;\n    return req.initialize(specId, callbackAddress, callbackFunctionSignature);\n  }\n\n  /**\n   * @notice Creates a Chainlink request to the stored oracle address\n   * @dev Calls `chainlinkRequestTo` with the stored oracle address\n   * @param req The initialized Chainlink Request\n   * @param payment The amount of LINK to send for the request\n   * @return requestId The request ID\n   */\n  function sendChainlinkRequest(\n    Chainlink.Request memory req,\n    uint256 payment\n  )\n    internal\n    returns (\n      bytes32\n    )\n  {\n    return sendChainlinkRequestTo(address(oracle), req, payment);\n  }\n\n  /**\n   * @notice Creates a Chainlink request to the specified oracle address\n   * @dev Generates and stores a request ID, increments the local nonce, and uses `transferAndCall` to\n   * send LINK which creates a request on the target oracle contract.\n   * Emits ChainlinkRequested event.\n   * @param oracleAddress The address of the oracle for the request\n   * @param req The initialized Chainlink Request\n   * @param payment The amount of LINK to send for the request\n   * @return requestId The request ID\n   */\n  function sendChainlinkRequestTo(\n    address oracleAddress,\n    Chainlink.Request memory req,\n    uint256 payment\n  )\n    internal\n    returns (\n      bytes32 requestId\n    )\n  {\n    return rawRequest(oracleAddress, req, payment, ORACLE_ARGS_VERSION, oracle.oracleRequest.selector);\n  }\n\n  /**\n   * @notice Creates a Chainlink request to the stored oracle address\n   * @dev This function supports multi-word response\n   * @dev Calls `requestOracleDataFrom` with the stored oracle address\n   * @param req The initialized Chainlink Request\n   * @param payment The amount of LINK to send for the request\n   * @return requestId The request ID\n   */\n  function requestOracleData(\n    Chainlink.Request memory req,\n    uint256 payment\n  )\n    internal\n    returns (\n      bytes32\n    )\n  {\n    return requestOracleDataFrom(address(oracle), req, payment);\n  }\n\n  /**\n   * @notice Creates a Chainlink request to the specified oracle address\n   * @dev This function supports multi-word response\n   * @dev Generates and stores a request ID, increments the local nonce, and uses `transferAndCall` to\n   * send LINK which creates a request on the target oracle contract.\n   * Emits ChainlinkRequested event.\n   * @param oracleAddress The address of the oracle for the request\n   * @param req The initialized Chainlink Request\n   * @param payment The amount of LINK to send for the request\n   * @return requestId The request ID\n   */\n  function requestOracleDataFrom(\n    address oracleAddress,\n    Chainlink.Request memory req,\n    uint256 payment\n  )\n    internal\n    returns (\n      bytes32 requestId\n    )\n  {\n    return rawRequest(oracleAddress, req, payment, OPERATOR_ARGS_VERSION, oracle.requestOracleData.selector);\n  }\n\n  /**\n   * @notice Make a request to an oracle\n   * @param oracleAddress The address of the oracle for the request\n   * @param req The initialized Chainlink Request\n   * @param payment The amount of LINK to send for the request\n   * @param argsVersion The version of data support (single word, multi word)\n   * @return requestId The request ID\n   */\n  function rawRequest(\n    address oracleAddress,\n    Chainlink.Request memory req,\n    uint256 payment,\n    uint256 argsVersion,\n    bytes4 funcSelector\n  )\n    private\n    returns (\n      bytes32 requestId\n    )\n  {\n    requestId = keccak256(abi.encodePacked(this, requestCount));\n    req.nonce = requestCount;\n    pendingRequests[requestId] = oracleAddress;\n    emit ChainlinkRequested(requestId);\n    bytes memory encodedData = abi.encodeWithSelector(\n      funcSelector,\n      SENDER_OVERRIDE, // Sender value - overridden by onTokenTransfer by the requesting contract's address\n      AMOUNT_OVERRIDE, // Amount value - overridden by onTokenTransfer by the actual amount of LINK sent\n      req.id,\n      req.callbackAddress,\n      req.callbackFunctionId,\n      req.nonce,\n      argsVersion,\n      req.buf.buf);\n    require(link.transferAndCall(oracleAddress, payment, encodedData), \"unable to transferAndCall to oracle\");\n    requestCount += 1;\n  }\n\n  /**\n   * @notice Allows a request to be cancelled if it has not been fulfilled\n   * @dev Requires keeping track of the expiration value emitted from the oracle contract.\n   * Deletes the request from the `pendingRequests` mapping.\n   * Emits ChainlinkCancelled event.\n   * @param requestId The request ID\n   * @param payment The amount of LINK sent for the request\n   * @param callbackFunc The callback function specified for the request\n   * @param expiration The time of the expiration for the request\n   */\n  function cancelChainlinkRequest(\n    bytes32 requestId,\n    uint256 payment,\n    bytes4 callbackFunc,\n    uint256 expiration\n  )\n    internal\n  {\n    OperatorInterface requested = OperatorInterface(pendingRequests[requestId]);\n    delete pendingRequests[requestId];\n    emit ChainlinkCancelled(requestId);\n    requested.cancelOracleRequest(requestId, payment, callbackFunc, expiration);\n  }\n\n  /**\n   * @notice Sets the stored oracle address\n   * @param oracleAddress The address of the oracle contract\n   */\n  function setChainlinkOracle(\n    address oracleAddress\n  )\n    internal\n  {\n    oracle = OperatorInterface(oracleAddress);\n  }\n\n  /**\n   * @notice Sets the LINK token address\n   * @param linkAddress The address of the LINK token contract\n   */\n  function setChainlinkToken(\n    address linkAddress\n  )\n    internal\n  {\n    link = LinkTokenInterface(linkAddress);\n  }\n\n  /**\n   * @notice Sets the Chainlink token address for the public\n   * network as given by the Pointer contract\n   */\n  function setPublicChainlinkToken()\n    internal\n  {\n    setChainlinkToken(PointerInterface(LINK_TOKEN_POINTER).getAddress());\n  }\n\n  /**\n   * @notice Retrieves the stored address of the LINK token\n   * @return The address of the LINK token\n   */\n  function chainlinkTokenAddress()\n    internal\n    view\n    returns (\n      address\n    )\n  {\n    return address(link);\n  }\n\n  /**\n   * @notice Retrieves the stored address of the oracle contract\n   * @return The address of the oracle contract\n   */\n  function chainlinkOracleAddress()\n    internal\n    view\n    returns (\n      address\n    )\n  {\n    return address(oracle);\n  }\n\n  /**\n   * @notice Allows for a request which was created on another contract to be fulfilled\n   * on this contract\n   * @param oracleAddress The address of the oracle contract that will fulfill the request\n   * @param requestId The request ID used for the response\n   */\n  function addChainlinkExternalRequest(\n    address oracleAddress,\n    bytes32 requestId\n  )\n    internal\n    notPendingRequest(requestId)\n  {\n    pendingRequests[requestId] = oracleAddress;\n  }\n\n  /**\n   * @notice Sets the stored oracle and LINK token contracts with the addresses resolved by ENS\n   * @dev Accounts for subnodes having different resolvers\n   * @param ensAddress The address of the ENS contract\n   * @param node The ENS node hash\n   */\n  function useChainlinkWithENS(\n    address ensAddress,\n    bytes32 node\n  )\n    internal\n  {\n    ens = ENSInterface(ensAddress);\n    ensNode = node;\n    bytes32 linkSubnode = keccak256(abi.encodePacked(ensNode, ENS_TOKEN_SUBNAME));\n    ENSResolver_Chainlink resolver = ENSResolver_Chainlink(ens.resolver(linkSubnode));\n    setChainlinkToken(resolver.addr(linkSubnode));\n    updateChainlinkOracleWithENS();\n  }\n\n  /**\n   * @notice Sets the stored oracle contract with the address resolved by ENS\n   * @dev This may be called on its own as long as `useChainlinkWithENS` has been called previously\n   */\n  function updateChainlinkOracleWithENS()\n    internal\n  {\n    bytes32 oracleSubnode = keccak256(abi.encodePacked(ensNode, ENS_ORACLE_SUBNAME));\n    ENSResolver_Chainlink resolver = ENSResolver_Chainlink(ens.resolver(oracleSubnode));\n    setChainlinkOracle(resolver.addr(oracleSubnode));\n  }\n\n  /**\n   * @notice Ensures that the fulfillment is valid for this contract\n   * @dev Use if the contract developer prefers methods instead of modifiers for validation\n   * @param requestId The request ID for fulfillment\n   */\n  function validateChainlinkCallback(\n    bytes32 requestId\n  )\n    internal\n    recordChainlinkFulfillment(requestId)\n    // solhint-disable-next-line no-empty-blocks\n  {}\n\n  /**\n   * @dev Reverts if the sender is not the oracle of the request.\n   * Emits ChainlinkFulfilled event.\n   * @param requestId The request ID for fulfillment\n   */\n  modifier recordChainlinkFulfillment(\n    bytes32 requestId\n  )\n  {\n    require(msg.sender == pendingRequests[requestId],\n            \"Source must be the oracle of the request\");\n    delete pendingRequests[requestId];\n    emit ChainlinkFulfilled(requestId);\n    _;\n  }\n\n  /**\n   * @dev Reverts if the request is already pending\n   * @param requestId The request ID for fulfillment\n   */\n  modifier notPendingRequest(\n    bytes32 requestId\n  )\n  {\n    require(pendingRequests[requestId] == address(0), \"Request is already pending\");\n    _;\n  }\n}\n",
  "sourceMap": "955:10699:15:-:0;;;;;;;;;;;;;;;;;;;",
  "sourcePath": "contracts/dependencies/ChainlinkClientUpgradeable.sol",
  "type": "contract"
}