@origintrail-official/dkg-storage 10.0.5 → 10.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +35 -0
  2. package/dist/adapters/blazegraph-nquads.d.ts +36 -0
  3. package/dist/adapters/blazegraph-nquads.d.ts.map +1 -0
  4. package/dist/adapters/blazegraph-nquads.js +79 -0
  5. package/dist/adapters/blazegraph-nquads.js.map +1 -0
  6. package/dist/adapters/blazegraph.d.ts +9 -3
  7. package/dist/adapters/blazegraph.d.ts.map +1 -1
  8. package/dist/adapters/blazegraph.js +207 -76
  9. package/dist/adapters/blazegraph.js.map +1 -1
  10. package/dist/adapters/graph-enumeration-query.d.ts +33 -0
  11. package/dist/adapters/graph-enumeration-query.d.ts.map +1 -0
  12. package/dist/adapters/graph-enumeration-query.js +33 -0
  13. package/dist/adapters/graph-enumeration-query.js.map +1 -0
  14. package/dist/adapters/oxigraph-worker.d.ts +5 -2
  15. package/dist/adapters/oxigraph-worker.d.ts.map +1 -1
  16. package/dist/adapters/oxigraph-worker.js +41 -6
  17. package/dist/adapters/oxigraph-worker.js.map +1 -1
  18. package/dist/adapters/oxigraph.d.ts +5 -2
  19. package/dist/adapters/oxigraph.d.ts.map +1 -1
  20. package/dist/adapters/oxigraph.js +53 -77
  21. package/dist/adapters/oxigraph.js.map +1 -1
  22. package/dist/adapters/sparql-content-types.d.ts +16 -0
  23. package/dist/adapters/sparql-content-types.d.ts.map +1 -0
  24. package/dist/adapters/sparql-content-types.js +16 -0
  25. package/dist/adapters/sparql-content-types.js.map +1 -0
  26. package/dist/adapters/sparql-http.d.ts +5 -2
  27. package/dist/adapters/sparql-http.d.ts.map +1 -1
  28. package/dist/adapters/sparql-http.js +37 -31
  29. package/dist/adapters/sparql-http.js.map +1 -1
  30. package/dist/adapters/sparql-json-results.d.ts +32 -0
  31. package/dist/adapters/sparql-json-results.d.ts.map +1 -0
  32. package/dist/adapters/sparql-json-results.js +37 -0
  33. package/dist/adapters/sparql-json-results.js.map +1 -0
  34. package/dist/changelog-store.d.ts +239 -0
  35. package/dist/changelog-store.d.ts.map +1 -0
  36. package/dist/changelog-store.js +695 -0
  37. package/dist/changelog-store.js.map +1 -0
  38. package/dist/graph-manager.d.ts +157 -0
  39. package/dist/graph-manager.d.ts.map +1 -1
  40. package/dist/graph-manager.js +297 -22
  41. package/dist/graph-manager.js.map +1 -1
  42. package/dist/graph-set-index-store.d.ts +23 -6
  43. package/dist/graph-set-index-store.d.ts.map +1 -1
  44. package/dist/graph-set-index-store.js +135 -37
  45. package/dist/graph-set-index-store.js.map +1 -1
  46. package/dist/graph-write-gen.d.ts +52 -0
  47. package/dist/graph-write-gen.d.ts.map +1 -0
  48. package/dist/graph-write-gen.js +63 -0
  49. package/dist/graph-write-gen.js.map +1 -0
  50. package/dist/index.d.ts +8 -5
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +8 -5
  53. package/dist/index.js.map +1 -1
  54. package/dist/shared-memory-literal-blob-store.d.ts +2 -2
  55. package/dist/shared-memory-literal-blob-store.d.ts.map +1 -1
  56. package/dist/shared-memory-literal-blob-store.js +2 -1
  57. package/dist/shared-memory-literal-blob-store.js.map +1 -1
  58. package/dist/store-priority-scheduler.d.ts +25 -1
  59. package/dist/store-priority-scheduler.d.ts.map +1 -1
  60. package/dist/store-priority-scheduler.js +92 -4
  61. package/dist/store-priority-scheduler.js.map +1 -1
  62. package/dist/triple-store.d.ts +34 -1
  63. package/dist/triple-store.d.ts.map +1 -1
  64. package/dist/triple-store.js +39 -1
  65. package/dist/triple-store.js.map +1 -1
  66. package/dist/unsupported-capability-error.d.ts +20 -0
  67. package/dist/unsupported-capability-error.d.ts.map +1 -0
  68. package/dist/unsupported-capability-error.js +20 -0
  69. package/dist/unsupported-capability-error.js.map +1 -0
  70. package/package.json +3 -2
package/README.md CHANGED
@@ -66,6 +66,41 @@ For heavy / production workloads, prefer an out-of-process SPARQL server
66
66
  (`sparql-http` or `blazegraph`), which handles reads and writes concurrently
67
67
  and keeps the daemon responsive under load.
68
68
 
69
+ ## External-store admission and deadlines
70
+
71
+ All external adapters share a process-wide priority scheduler. Waiting work is
72
+ bounded independently for `ack`, `normal`, and `background` traffic, and an
73
+ operation rejected before dispatch receives `StoreSchedulerBusyError` with
74
+ `code: STORE_SCHEDULER_BUSY`, `retryable: true`, and a reason of either
75
+ `queue_full` or `queue_wait_timeout`. Because this error is only created before
76
+ the operation closure starts, retrying it cannot duplicate a write that might
77
+ already have reached the store.
78
+
79
+ | Environment variable | Default | Purpose |
80
+ |---|---:|---|
81
+ | `DKG_STORE_MAX_CONCURRENT` | `8` | Maximum external-store operations in flight. |
82
+ | `DKG_STORE_ACK_RESERVED_SLOTS` | `1` | In-flight capacity reserved for ACK work. |
83
+ | `DKG_STORE_BACKGROUND_RESERVED_SLOTS` | `1` | Non-ACK capacity reserved for background progress. |
84
+ | `DKG_STORE_QUEUE_LIMIT` | `64` | Maximum waiting operations in each priority queue. |
85
+ | `DKG_STORE_ACK_QUEUE_LIMIT` | common limit | Optional ACK queue override. |
86
+ | `DKG_STORE_NORMAL_QUEUE_LIMIT` | common limit | Optional normal queue override. |
87
+ | `DKG_STORE_BACKGROUND_QUEUE_LIMIT` | common limit | Optional background queue override. |
88
+ | `DKG_STORE_QUEUE_WAIT_TIMEOUT_MS` | `10000` | Maximum pre-dispatch wait before a retryable busy rejection. |
89
+ | `DKG_BLAZEGRAPH_OPERATION_TIMEOUT_MS` | `30000` | Blazegraph end-to-end operation deadline, including scheduler wait, HTTP, response decoding, and mapping. |
90
+
91
+ Blazegraph's deadline can also be set per store, which takes precedence over
92
+ the environment default:
93
+
94
+ ```jsonc
95
+ "store": {
96
+ "backend": "blazegraph",
97
+ "options": {
98
+ "url": "http://127.0.0.1:9999/blazegraph/namespace/dkg/sparql",
99
+ "timeout": 30000
100
+ }
101
+ }
102
+ ```
103
+
69
104
  ## Internal Dependencies
70
105
 
71
106
  - `@origintrail-official/dkg-core` — configuration types, logging, constants
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Blazegraph N-Quads wire encoder.
3
+ *
4
+ * A focused boundary for the one structural quirk of Blazegraph's bulk-insert
5
+ * endpoint: its N-Quads parser reads the request body BYTE-wise as ASCII (the
6
+ * Content-Type charset is ignored), so any non-ASCII byte is replaced with
7
+ * U+FFFD before parsing — silent stored-value corruption. Downstream, a
8
+ * published KA carrying such a literal fails its storage-ACK merkle
9
+ * recomputation (MERKLE_MISMATCH_IN_SWM) and the publish dies.
10
+ *
11
+ * Verified against the stock `lyrasis/blazegraph:2.1.5` image (image CI + the
12
+ * devnet run). Kept here, separate from the adapter's transport/query/mutation
13
+ * orchestration, so the wire-format invariant is a single testable unit.
14
+ */
15
+ /**
16
+ * Make an assembled N-Quads line ASCII-safe for Blazegraph's bulk-insert
17
+ * endpoint:
18
+ *
19
+ * - Raw non-ASCII UTF-8 (a 2-byte `é` as much as a 4-byte astral emoji) →
20
+ * `\uXXXX` per UTF-16 code unit (astral chars as their surrogate pair) — the
21
+ * exact Java-String form Blazegraph itself emits on CONSTRUCT read-back and
22
+ * the one encoding that round-trips every scalar, including the
23
+ * supplementary plane.
24
+ * - In-range `\UXXXXXXXX` escapes (which Blazegraph truncates to their low 16
25
+ * bits on parse, e.g. `\U0001F600` 😀 → U+F600) → equivalent `\uXXXX`
26
+ * escape(s). Out-of-range `\U` (> U+10FFFF, unrepresentable) passes through.
27
+ *
28
+ * `\uXXXX` is a valid UCHAR in both IRIREF and STRING_LITERAL_QUOTED, so the
29
+ * transform is safe to apply to the whole line. Existing escape sequences are
30
+ * consumed pairwise (backslash parity), so a literal backslash followed by
31
+ * `U…` text (`\\U0001F600`) is never mis-rewritten. The transform is line-level
32
+ * by design — the `\U` normalization and the backslash-parity guard are
33
+ * properties of the rendered line, not of an individual term.
34
+ */
35
+ export declare function toBlazegraphAsciiSafeNQuads(line: string): string;
36
+ //# sourceMappingURL=blazegraph-nquads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blazegraph-nquads.d.ts","sourceRoot":"","sources":["../../src/adapters/blazegraph-nquads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmChE"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Blazegraph N-Quads wire encoder.
3
+ *
4
+ * A focused boundary for the one structural quirk of Blazegraph's bulk-insert
5
+ * endpoint: its N-Quads parser reads the request body BYTE-wise as ASCII (the
6
+ * Content-Type charset is ignored), so any non-ASCII byte is replaced with
7
+ * U+FFFD before parsing — silent stored-value corruption. Downstream, a
8
+ * published KA carrying such a literal fails its storage-ACK merkle
9
+ * recomputation (MERKLE_MISMATCH_IN_SWM) and the publish dies.
10
+ *
11
+ * Verified against the stock `lyrasis/blazegraph:2.1.5` image (image CI + the
12
+ * devnet run). Kept here, separate from the adapter's transport/query/mutation
13
+ * orchestration, so the wire-format invariant is a single testable unit.
14
+ */
15
+ /**
16
+ * Make an assembled N-Quads line ASCII-safe for Blazegraph's bulk-insert
17
+ * endpoint:
18
+ *
19
+ * - Raw non-ASCII UTF-8 (a 2-byte `é` as much as a 4-byte astral emoji) →
20
+ * `\uXXXX` per UTF-16 code unit (astral chars as their surrogate pair) — the
21
+ * exact Java-String form Blazegraph itself emits on CONSTRUCT read-back and
22
+ * the one encoding that round-trips every scalar, including the
23
+ * supplementary plane.
24
+ * - In-range `\UXXXXXXXX` escapes (which Blazegraph truncates to their low 16
25
+ * bits on parse, e.g. `\U0001F600` 😀 → U+F600) → equivalent `\uXXXX`
26
+ * escape(s). Out-of-range `\U` (> U+10FFFF, unrepresentable) passes through.
27
+ *
28
+ * `\uXXXX` is a valid UCHAR in both IRIREF and STRING_LITERAL_QUOTED, so the
29
+ * transform is safe to apply to the whole line. Existing escape sequences are
30
+ * consumed pairwise (backslash parity), so a literal backslash followed by
31
+ * `U…` text (`\\U0001F600`) is never mis-rewritten. The transform is line-level
32
+ * by design — the `\U` normalization and the backslash-parity guard are
33
+ * properties of the rendered line, not of an individual term.
34
+ */
35
+ export function toBlazegraphAsciiSafeNQuads(line) {
36
+ let out = '';
37
+ for (let i = 0; i < line.length; i++) {
38
+ const code = line.charCodeAt(i);
39
+ if (code === 0x5c /* backslash */) {
40
+ // In-range \UXXXXXXXX → equivalent \uXXXX escape(s) Blazegraph parses
41
+ // correctly. Out-of-range \U (> U+10FFFF, unrepresentable) passes through.
42
+ if (line[i + 1] === 'U') {
43
+ const hex = line.slice(i + 2, i + 10);
44
+ if (/^[0-9A-Fa-f]{8}$/.test(hex)) {
45
+ const cp = parseInt(hex, 16);
46
+ if (cp <= 0x10ffff) {
47
+ out += escapeUtf16CodeUnits(String.fromCodePoint(cp));
48
+ i += 9;
49
+ continue;
50
+ }
51
+ }
52
+ }
53
+ // Any other escape: copy the pair verbatim so the escaped char is never
54
+ // re-inspected (preserves backslash parity for the \U check above).
55
+ out += line[i];
56
+ if (i + 1 < line.length) {
57
+ const nextCode = line.charCodeAt(i + 1);
58
+ out += nextCode >= 0x7f ? escapeUtf16CodeUnits(line[i + 1]) : line[i + 1];
59
+ i++;
60
+ }
61
+ continue;
62
+ }
63
+ if (code >= 0x7f) {
64
+ out += escapeUtf16CodeUnits(line[i]);
65
+ continue;
66
+ }
67
+ out += line[i];
68
+ }
69
+ return out;
70
+ }
71
+ /** `\uXXXX` escape per UTF-16 code unit (surrogate halves stay split). */
72
+ function escapeUtf16CodeUnits(s) {
73
+ let out = '';
74
+ for (let i = 0; i < s.length; i++) {
75
+ out += `\\u${s.charCodeAt(i).toString(16).toUpperCase().padStart(4, '0')}`;
76
+ }
77
+ return out;
78
+ }
79
+ //# sourceMappingURL=blazegraph-nquads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blazegraph-nquads.js","sourceRoot":"","sources":["../../src/adapters/blazegraph-nquads.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YAClC,sEAAsE;YACtE,2EAA2E;YAC3E,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtC,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC7B,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;wBACnB,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;wBACtD,CAAC,IAAI,CAAC,CAAC;wBACP,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YACD,wEAAwE;YACxE,oEAAoE;YACpE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxC,GAAG,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1E,CAAC,EAAE,CAAC;YACN,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,SAAS;QACX,CAAC;QACD,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0EAA0E;AAC1E,SAAS,oBAAoB,CAAC,CAAS;IACrC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC7E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,4 +1,9 @@
1
- import type { TripleStore, Quad as DKGQuad, QueryOptions, StorePressureSnapshot, TripleStoreQueryOptions, QueryResult } from '../triple-store.js';
1
+ import type { TripleStore, Quad as DKGQuad, QueryOptions, UpdateOptions, StorePressureSnapshot, TripleStoreQueryOptions, QueryResult } from '../triple-store.js';
2
+ export declare const DEFAULT_BLAZEGRAPH_OPERATION_TIMEOUT_MS = 30000;
3
+ export interface BlazegraphStoreOptions {
4
+ /** End-to-end timeout including scheduler wait, HTTP work, and response decoding. */
5
+ timeout?: number;
6
+ }
2
7
  /**
3
8
  * BlazegraphStore — TripleStore adapter backed by a remote Blazegraph
4
9
  * SPARQL endpoint over HTTP. Works with any Blazegraph 2.x instance
@@ -10,7 +15,8 @@ import type { TripleStore, Quad as DKGQuad, QueryOptions, StorePressureSnapshot,
10
15
  export declare class BlazegraphStore implements TripleStore {
11
16
  readonly queryCancellation: "interruptible";
12
17
  private readonly url;
13
- constructor(url: string);
18
+ private readonly operationTimeoutMs;
19
+ constructor(url: string, options?: BlazegraphStoreOptions);
14
20
  private runStoreWork;
15
21
  getPressureSnapshot(): StorePressureSnapshot;
16
22
  insert(quads: DKGQuad[], options?: QueryOptions): Promise<void>;
@@ -27,7 +33,7 @@ export declare class BlazegraphStore implements TripleStore {
27
33
  * delete with two full-graph `countQuads` scans (see above), which is
28
34
  * prohibitive on a CPU-pegged core.
29
35
  */
30
- update(sparql: string, options?: QueryOptions): Promise<void>;
36
+ update(sparql: string, options?: UpdateOptions): Promise<void>;
31
37
  query(sparql: string, options?: TripleStoreQueryOptions): Promise<QueryResult>;
32
38
  private queryConstruct;
33
39
  hasGraph(graphUri: string, options?: QueryOptions): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"blazegraph.d.ts","sourceRoot":"","sources":["../../src/adapters/blazegraph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,IAAI,OAAO,EACf,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EAIZ,MAAM,oBAAoB,CAAC;AAM5B;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,iBAAiB,EAAG,eAAe,CAAU;IAEtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,GAAG,EAAE,MAAM;IAIvB,OAAO,CAAC,YAAY;IAapB,mBAAmB,IAAI,qBAAqB;IAQtC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB/D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/D,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BnF,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBtG;;;;;;;;;OASG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;YAwDtE,cAAc;IAuBtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE,UAAU,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAahE,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,YAAY;CAwB3B"}
1
+ {"version":3,"file":"blazegraph.d.ts","sourceRoot":"","sources":["../../src/adapters/blazegraph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,IAAI,OAAO,EACf,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EAIZ,MAAM,oBAAoB,CAAC;AAY5B,eAAO,MAAM,uCAAuC,QAAS,CAAC;AAE9D,MAAM,WAAW,sBAAsB;IACrC,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA6ID;;;;;;;GAOG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,iBAAiB,EAAG,eAAe,CAAU;IAEtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;gBAEhC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;IAK7D,OAAO,CAAC,YAAY;IAoBpB,mBAAmB,IAAI,qBAAqB;IAQtC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B/D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/D,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BnF,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBtG;;;;;;;;;OASG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;YA8CtE,cAAc;IA2BtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE,UAAU,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAahE,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBtE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,YAAY;CA2B3B"}
@@ -1,7 +1,133 @@
1
+ import { performance } from 'node:perf_hooks';
1
2
  import { registerTripleStoreAdapter } from '../triple-store.js';
2
3
  import { buildBlankNodeSafeDelete } from './sparql-http.js';
4
+ import { formatSparqlJsonBindings, } from './sparql-json-results.js';
5
+ import { toBlazegraphAsciiSafeNQuads } from './blazegraph-nquads.js';
6
+ import { SPARQL_QUERY_CONTENT_TYPE, SPARQL_UPDATE_CONTENT_TYPE } from './sparql-content-types.js';
3
7
  import { assertQuadLiteralsMutf8Safe, JAVA_WRITE_UTF_MAX_BYTES } from '@origintrail-official/dkg-core';
4
8
  import { externalStorePriorityScheduler } from '../store-priority-scheduler.js';
9
+ export const DEFAULT_BLAZEGRAPH_OPERATION_TIMEOUT_MS = 30_000;
10
+ function parsePositiveIntegerEnv(name, fallback) {
11
+ const raw = process.env[name]?.trim();
12
+ if (!raw)
13
+ return fallback;
14
+ const parsed = Number(raw);
15
+ return Number.isInteger(parsed) && parsed > 0 ? parsed : fallback;
16
+ }
17
+ function resolveOperationTimeout(configured) {
18
+ if (configured === undefined) {
19
+ return parsePositiveIntegerEnv('DKG_BLAZEGRAPH_OPERATION_TIMEOUT_MS', DEFAULT_BLAZEGRAPH_OPERATION_TIMEOUT_MS);
20
+ }
21
+ if (!Number.isInteger(configured) || configured <= 0) {
22
+ throw new Error('BlazegraphStore timeout must be a positive integer in milliseconds');
23
+ }
24
+ return configured;
25
+ }
26
+ function abortError(signal) {
27
+ const reason = signal.reason;
28
+ return reason instanceof Error ? reason : new Error(String(reason ?? 'aborted'));
29
+ }
30
+ function createStoreOperationDeadline(timeoutMs, callerSignal) {
31
+ const controller = new AbortController();
32
+ const deadlineAt = performance.now() + timeoutMs;
33
+ let timer;
34
+ let callerAttached = false;
35
+ const timeoutError = () => new DOMException(`Blazegraph operation exceeded its ${timeoutMs}ms deadline`, 'TimeoutError');
36
+ const detachCaller = () => {
37
+ if (!callerAttached)
38
+ return;
39
+ callerAttached = false;
40
+ callerSignal?.removeEventListener('abort', onCallerAbort);
41
+ };
42
+ const onCallerAbort = () => {
43
+ detachCaller();
44
+ controller.abort(callerSignal?.reason);
45
+ };
46
+ if (callerSignal?.aborted) {
47
+ controller.abort(callerSignal.reason);
48
+ }
49
+ else {
50
+ if (callerSignal) {
51
+ callerAttached = true;
52
+ callerSignal.addEventListener('abort', onCallerAbort, { once: true });
53
+ }
54
+ timer = setTimeout(() => {
55
+ timer = undefined;
56
+ detachCaller();
57
+ controller.abort(timeoutError());
58
+ }, timeoutMs);
59
+ if (typeof timer.unref === 'function')
60
+ timer.unref();
61
+ }
62
+ const check = () => {
63
+ if (controller.signal.aborted)
64
+ throw abortError(controller.signal);
65
+ if (performance.now() < deadlineAt)
66
+ return;
67
+ const error = timeoutError();
68
+ detachCaller();
69
+ controller.abort(error);
70
+ throw error;
71
+ };
72
+ const waitFor = async (work) => {
73
+ let result;
74
+ try {
75
+ result = await raceAgainstAbort(work, controller.signal);
76
+ }
77
+ catch (error) {
78
+ // The timer callback may be delayed by synchronous response processing.
79
+ // Re-check the monotonic deadline before preserving an underlying error
80
+ // so elapsed operations still surface the deadline's TimeoutError.
81
+ check();
82
+ throw error;
83
+ }
84
+ check();
85
+ return result;
86
+ };
87
+ return {
88
+ signal: controller.signal,
89
+ waitFor,
90
+ check,
91
+ dispose: () => {
92
+ if (timer) {
93
+ clearTimeout(timer);
94
+ timer = undefined;
95
+ }
96
+ detachCaller();
97
+ },
98
+ };
99
+ }
100
+ function raceAgainstAbort(work, signal) {
101
+ return new Promise((resolve, reject) => {
102
+ let listening = false;
103
+ const cleanup = () => {
104
+ if (!listening)
105
+ return;
106
+ listening = false;
107
+ signal.removeEventListener('abort', onAbort);
108
+ };
109
+ const onAbort = () => {
110
+ cleanup();
111
+ reject(abortError(signal));
112
+ };
113
+ work.then((value) => {
114
+ cleanup();
115
+ resolve(value);
116
+ }, (error) => {
117
+ cleanup();
118
+ reject(error);
119
+ });
120
+ if (signal.aborted) {
121
+ onAbort();
122
+ }
123
+ else {
124
+ listening = true;
125
+ signal.addEventListener('abort', onAbort, { once: true });
126
+ if (signal.aborted)
127
+ onAbort();
128
+ }
129
+ });
130
+ }
5
131
  /**
6
132
  * BlazegraphStore — TripleStore adapter backed by a remote Blazegraph
7
133
  * SPARQL endpoint over HTTP. Works with any Blazegraph 2.x instance
@@ -13,11 +139,20 @@ import { externalStorePriorityScheduler } from '../store-priority-scheduler.js';
13
139
  export class BlazegraphStore {
14
140
  queryCancellation = 'interruptible';
15
141
  url;
16
- constructor(url) {
142
+ operationTimeoutMs;
143
+ constructor(url, options = {}) {
17
144
  this.url = url.replace(/\/$/, '');
145
+ this.operationTimeoutMs = resolveOperationTimeout(options.timeout);
18
146
  }
19
147
  runStoreWork(operation, options, work) {
20
- return externalStorePriorityScheduler.run(options?.priority, options?.source ?? `blazegraph.${operation}`, work, options?.signal);
148
+ const deadline = createStoreOperationDeadline(this.operationTimeoutMs, options?.signal);
149
+ const scheduled = externalStorePriorityScheduler.run(options?.priority, options?.source ?? `blazegraph.${operation}`, async () => {
150
+ deadline.check();
151
+ const result = await work(deadline);
152
+ deadline.check();
153
+ return result;
154
+ }, deadline.signal);
155
+ return scheduled.finally(deadline.dispose);
21
156
  }
22
157
  getPressureSnapshot() {
23
158
  return externalStorePriorityScheduler.snapshot;
@@ -28,24 +163,30 @@ export class BlazegraphStore {
28
163
  async insert(quads, options) {
29
164
  if (quads.length === 0)
30
165
  return;
31
- assertQuadLiteralsMutf8Safe(quads, {
32
- maxBytes: JAVA_WRITE_UTF_MAX_BYTES,
33
- label: 'BlazegraphStore.insert',
34
- });
35
- const nquads = quads.map(quadToNQuad).join('\n') + '\n';
36
- const res = await this.runStoreWork('insert', {
166
+ await this.runStoreWork('insert', {
37
167
  ...options,
38
168
  source: options?.source ?? 'blazegraph.insert',
39
- }, async () => fetch(this.url, {
40
- method: 'POST',
41
- headers: { 'Content-Type': 'text/x-nquads' },
42
- body: nquads,
43
- signal: options?.signal,
44
- }));
45
- if (!res.ok) {
46
- const text = await res.text().catch(() => '');
47
- throw new Error(`Blazegraph insert failed (${res.status}): ${text.slice(0, 200)}`);
48
- }
169
+ }, async (deadline) => {
170
+ assertQuadLiteralsMutf8Safe(quads, {
171
+ maxBytes: JAVA_WRITE_UTF_MAX_BYTES,
172
+ label: 'BlazegraphStore.insert',
173
+ });
174
+ // Serialize only after scheduler admission. A blocked store therefore
175
+ // retains the caller's quad array, not an additional potentially-large
176
+ // N-Quads copy for every waiting insert.
177
+ const nquads = quads.map(quadToBlazegraphNQuad).join('\n') + '\n';
178
+ deadline.check();
179
+ const res = await deadline.waitFor(fetch(this.url, {
180
+ method: 'POST',
181
+ headers: { 'Content-Type': 'text/x-nquads' },
182
+ body: nquads,
183
+ signal: deadline.signal,
184
+ }));
185
+ if (!res.ok) {
186
+ const text = await deadline.waitFor(res.text().catch(() => ''));
187
+ throw new Error(`Blazegraph insert failed (${res.status}): ${text.slice(0, 200)}`);
188
+ }
189
+ });
49
190
  }
50
191
  async delete(quads, options) {
51
192
  if (quads.length === 0)
@@ -113,17 +254,13 @@ export class BlazegraphStore {
113
254
  // Queries
114
255
  // -------------------------------------------------------------------
115
256
  async query(sparql, options) {
116
- return this.runStoreWork('query', options, async () => {
117
- if (options?.signal?.aborted) {
118
- const reason = options.signal.reason;
119
- throw reason instanceof Error ? reason : new Error(String(reason ?? 'aborted'));
120
- }
257
+ return this.runStoreWork('query', options, async (deadline) => {
121
258
  const trimmed = sparql.trim();
122
259
  const upper = trimmed.toUpperCase();
123
260
  const isAsk = upper.startsWith('ASK');
124
261
  const isConstruct = upper.startsWith('CONSTRUCT') || upper.startsWith('DESCRIBE');
125
262
  if (isConstruct) {
126
- return this.queryConstruct(trimmed, options);
263
+ return this.queryConstruct(trimmed, deadline);
127
264
  }
128
265
  // Direct POST (W3C SPARQL 1.1 Protocol): send the query as the raw
129
266
  // request body with `application/sparql-query` rather than URL-encoded
@@ -132,53 +269,45 @@ export class BlazegraphStore {
132
269
  // on stock Blazegraph) and rejects larger payloads with HTTP 400
133
270
  // "Unable to parse form content". The direct-POST body is not form
134
271
  // parsed, so large queries (e.g. CONSTRUCT/VALUES) are not capped.
135
- const res = await fetch(this.url, {
272
+ // SPARQL_QUERY_CONTENT_TYPE carries charset=utf-8 (see sparql-content-types.ts).
273
+ const res = await deadline.waitFor(fetch(this.url, {
136
274
  method: 'POST',
137
275
  headers: {
138
- 'Content-Type': 'application/sparql-query',
276
+ 'Content-Type': SPARQL_QUERY_CONTENT_TYPE,
139
277
  Accept: 'application/sparql-results+json',
140
278
  },
141
279
  body: trimmed,
142
- signal: options?.signal,
143
- });
280
+ signal: deadline.signal,
281
+ }));
144
282
  if (!res.ok) {
145
- const text = await res.text().catch(() => '');
283
+ const text = await deadline.waitFor(res.text().catch(() => ''));
146
284
  throw new Error(`Blazegraph query failed (${res.status}): ${text.slice(0, 300)}`);
147
285
  }
148
- const json = (await res.json());
286
+ const json = await deadline.waitFor(res.json());
149
287
  if (isAsk || 'boolean' in json) {
150
288
  return { type: 'boolean', value: json.boolean };
151
289
  }
152
- const sr = json;
153
- const vars = sr.head?.vars ?? [];
154
- const bindings = (sr.results?.bindings ?? []).map((row) => {
155
- const obj = {};
156
- for (const v of vars) {
157
- const cell = row[v];
158
- if (cell)
159
- obj[v] = blazeTermToString(cell);
160
- }
161
- return obj;
162
- });
290
+ const bindings = formatSparqlJsonBindings(json);
163
291
  return { type: 'bindings', bindings };
164
292
  });
165
293
  }
166
- async queryConstruct(sparql, options) {
167
- const res = await fetch(this.url, {
294
+ async queryConstruct(sparql, deadline) {
295
+ const res = await deadline.waitFor(fetch(this.url, {
168
296
  method: 'POST',
169
297
  headers: {
170
- 'Content-Type': 'application/sparql-query',
298
+ 'Content-Type': SPARQL_QUERY_CONTENT_TYPE,
171
299
  Accept: 'text/x-nquads, application/n-quads',
172
300
  },
173
301
  body: sparql,
174
- signal: options?.signal,
175
- });
302
+ signal: deadline.signal,
303
+ }));
176
304
  if (!res.ok) {
177
- const text = await res.text().catch(() => '');
305
+ const text = await deadline.waitFor(res.text().catch(() => ''));
178
306
  throw new Error(`Blazegraph construct failed (${res.status}): ${text.slice(0, 300)}`);
179
307
  }
180
- const text = await res.text();
308
+ const text = await deadline.waitFor(res.text());
181
309
  const quads = parseNQuadsText(text);
310
+ deadline.check();
182
311
  return { type: 'quads', quads };
183
312
  }
184
313
  // -------------------------------------------------------------------
@@ -235,34 +364,21 @@ export class BlazegraphStore {
235
364
  // HTTP 400 "Unable to parse form content" — which broke large publishes
236
365
  // (a publish issues a DELETE DATA / INSERT over the full quad set). The
237
366
  // raw body is not form parsed, so large updates succeed.
238
- const res = await this.runStoreWork(operation, options, async () => fetch(this.url, {
239
- method: 'POST',
240
- headers: { 'Content-Type': 'application/sparql-update' },
241
- body: update,
242
- signal: options?.signal,
243
- }));
244
- if (!res.ok) {
245
- const text = await res.text().catch(() => '');
246
- throw new Error(`Blazegraph update failed (${res.status}): ${text.slice(0, 300)}`);
247
- }
248
- }
249
- }
250
- function escapeNQuadsLiteral(s) {
251
- return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r');
252
- }
253
- function blazeTermToString(t) {
254
- if (t.type === 'bnode')
255
- return `_:${t.value}`;
256
- if (t.type === 'literal' || t.type === 'typed-literal') {
257
- const escaped = escapeNQuadsLiteral(t.value);
258
- if (t['xml:lang'])
259
- return `"${escaped}"@${t['xml:lang']}`;
260
- if (t.datatype && t.datatype !== 'http://www.w3.org/2001/XMLSchema#string') {
261
- return `"${escaped}"^^<${t.datatype}>`;
262
- }
263
- return `"${escaped}"`;
367
+ //
368
+ // SPARQL_UPDATE_CONTENT_TYPE carries charset=utf-8 (see sparql-content-types.ts).
369
+ await this.runStoreWork(operation, options, async (deadline) => {
370
+ const res = await deadline.waitFor(fetch(this.url, {
371
+ method: 'POST',
372
+ headers: { 'Content-Type': SPARQL_UPDATE_CONTENT_TYPE },
373
+ body: update,
374
+ signal: deadline.signal,
375
+ }));
376
+ if (!res.ok) {
377
+ const text = await deadline.waitFor(res.text().catch(() => ''));
378
+ throw new Error(`Blazegraph update failed (${res.status}): ${text.slice(0, 300)}`);
379
+ }
380
+ });
264
381
  }
265
- return t.value;
266
382
  }
267
383
  // =====================================================================
268
384
  // N-Quad serialisation / parsing helpers (shared with oxigraph adapter)
@@ -274,6 +390,20 @@ function quadToNQuad(q) {
274
390
  const g = q.graph ? ` <${q.graph}>` : '';
275
391
  return `${s} ${p} ${o}${g} .`;
276
392
  }
393
+ /**
394
+ * N-Quads serializer for Blazegraph's bulk-insert wire format: a standard
395
+ * N-Quads line ({@link quadToNQuad}) made ASCII-safe
396
+ * ({@link toBlazegraphAsciiSafeNQuads}). This is the single serialization
397
+ * entry point for the adapter's write path, so the Blazegraph wire-format
398
+ * invariant lives at the serialization boundary rather than as a separate
399
+ * post-processing pass a caller must remember to apply. The ASCII-safe pass
400
+ * operates on the assembled line by design: it normalizes `\U` escapes and
401
+ * relies on backslash parity across the whole line, both of which are
402
+ * line-level properties of the rendered N-Quads, not of an individual term.
403
+ */
404
+ function quadToBlazegraphNQuad(q) {
405
+ return toBlazegraphAsciiSafeNQuads(quadToNQuad(q));
406
+ }
277
407
  function formatTerm(term) {
278
408
  if (term.startsWith('"')) {
279
409
  const m = term.match(/^("(?:[^"\\]|\\.)*")\^\^(?!<)(.+)$/);
@@ -394,6 +524,7 @@ registerTripleStoreAdapter('blazegraph', async (opts) => {
394
524
  const url = opts?.url;
395
525
  if (!url)
396
526
  throw new Error('blazegraph adapter requires options.url (SPARQL endpoint)');
397
- return new BlazegraphStore(url);
527
+ const timeout = opts?.timeout;
528
+ return new BlazegraphStore(url, { timeout });
398
529
  });
399
530
  //# sourceMappingURL=blazegraph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blazegraph.js","sourceRoot":"","sources":["../../src/adapters/blazegraph.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AACvG,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IACjB,iBAAiB,GAAG,eAAwB,CAAC;IAErC,GAAG,CAAS;IAE7B,YAAY,GAAW;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,YAAY,CAClB,SAAiB,EACjB,OAAiC,EACjC,IAAsB;QAEtB,OAAO,8BAA8B,CAAC,GAAG,CACvC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,MAAM,IAAI,cAAc,SAAS,EAAE,EAC5C,IAAI,EACJ,OAAO,EAAE,MAAM,CAChB,CAAC;IACJ,CAAC;IAED,mBAAmB;QACjB,OAAO,8BAA8B,CAAC,QAAQ,CAAC;IACjD,CAAC;IAED,sEAAsE;IACtE,YAAY;IACZ,sEAAsE;IAEtE,KAAK,CAAC,MAAM,CAAC,KAAgB,EAAE,OAAsB;QACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,2BAA2B,CAAC,KAAK,EAAE;YACjC,QAAQ,EAAE,wBAAwB;YAClC,KAAK,EAAE,wBAAwB;SAChC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC5C,GAAG,OAAO;YACV,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,mBAAmB;SAC/C,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;YAC5C,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CACH,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB,EAAE,OAAsB;QACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,wEAAwE;QACxE,0EAA0E;QAC1E,kEAAkE;QAClE,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAC9B,GAAG,OAAO;YACV,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,mBAAmB;SAC/C,EAAE,QAAQ,CAAC,CAAC;IACf,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAyB,EAAE,OAAsB;QACrE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE;YAClD,GAAG,OAAO;YACV,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,wCAAwC;SACpE,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,YAAY,CACrB,mBAAmB,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,uBAAuB,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,MAAM,MAAM,EAC1H,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,4BAA4B,EAAE,EACvE,iBAAiB,CAClB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,wEAAwE;YACxE,MAAM,IAAI,CAAC,YAAY,CACrB,2BAA2B,MAAM,+BAA+B,MAAM,MAAM,EAC5E,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,4BAA4B,EAAE,EACvE,iBAAiB,CAClB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE;YACjD,GAAG,OAAO;YACV,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,uCAAuC;SACnE,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,MAAc,EAAE,OAAsB;QAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC7C,GAAG,OAAO;YACV,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,8CAA8C;SAC1E,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,YAAY,CACrB,mBAAmB,SAAS,CAAC,QAAQ,CAAC,mCAAmC,SAAS,CAAC,QAAQ,CAAC,6CAA6C,YAAY,CAAC,MAAM,CAAC,SAAS,EACtK,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,kCAAkC,EAAE,EAC7E,uBAAuB,CACxB,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC5C,GAAG,OAAO;YACV,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,6CAA6C;SACzE,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,OAAsB;QACjD,MAAM,IAAI,CAAC,YAAY,CACrB,MAAM,EACN,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,mBAAmB,EAAE,EAC9D,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,UAAU;IACV,sEAAsE;IAEtE,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,OAAiC;QAC3D,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YACpD,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;gBACrC,MAAM,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAElF,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;YAED,mEAAmE;YACnE,uEAAuE;YACvE,qEAAqE;YACrE,uEAAuE;YACvE,iEAAiE;YACjE,mEAAmE;YACnE,mEAAmE;YACnE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,0BAA0B;oBAC1C,MAAM,EAAE,iCAAiC;iBAC1C;gBACD,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,OAAO,EAAE,MAAM;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACpF,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2C,CAAC;YAE1E,IAAI,KAAK,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC/B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAG,IAAyB,CAAC,OAAO,EAAsB,CAAC;YAC5F,CAAC;YAED,MAAM,EAAE,GAAG,IAA2B,CAAC;YACvC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAkC,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvF,MAAM,GAAG,GAA2B,EAAE,CAAC;gBACvC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBACpB,IAAI,IAAI;wBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC7C,CAAC;gBACD,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAyB,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,OAAsB;QACjE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,0BAA0B;gBAC1C,MAAM,EAAE,oCAAoC;aAC7C;YACD,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,sEAAsE;IACtE,mBAAmB;IACnB,sEAAsE;IAEtE,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,OAAsB;QACrD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CACxB,gBAAgB,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EACrD,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,qBAAqB,EAAE,CACjE,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,kDAAkD;IACpD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,OAAsB;QACtD,MAAM,IAAI,CAAC,YAAY,CACrB,sBAAsB,SAAS,CAAC,QAAQ,CAAC,GAAG,EAC5C,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,sBAAsB,EAAE,EACjE,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAiC;QAChD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CACxB,oDAAoD,EACpD,OAAO,CACR,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,sEAAsE;IACtE,SAAS;IACT,sEAAsE;IAEtE,KAAK,CAAC,UAAU,CAAC,QAAiB,EAAE,OAAsB;QACxD,MAAM,MAAM,GAAG,QAAQ;YACrB,CAAC,CAAC,0CAA0C,SAAS,CAAC,QAAQ,CAAC,kBAAkB;YACjF,CAAC,CAAC,gFAAgF,CAAC;QACrF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjC,GAAG,OAAO;YACV,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,uBAAuB;SACnD,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,sEAAsE;IACtE,YAAY;IACZ,sEAAsE;IAEtE,KAAK,CAAC,KAAK;QACT,wDAAwD;IAC1D,CAAC;IAED,sEAAsE;IACtE,mBAAmB;IACnB,sEAAsE;IAE9D,KAAK,CAAC,YAAY,CACxB,MAAc,EACd,OAAsB,EACtB,SAAS,GAAG,QAAQ;QAEpB,oEAAoE;QACpE,wEAAwE;QACxE,4DAA4D;QAC5D,uEAAuE;QACvE,wEAAwE;QACxE,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YAChF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,2BAA2B,EAAE;YACxD,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CACH,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;CACF;AAsBD,SAAS,mBAAmB,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAiB;IAC1C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,OAAO,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,yCAAyC,EAAE,CAAC;YAC3E,OAAO,IAAI,OAAO,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,OAAO,GAAG,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,CAAC,KAAK,CAAC;AACjB,CAAC;AAED,wEAAwE;AACxE,wEAAwE;AACxE,wEAAwE;AAExE,SAAS,WAAW,CAAC,CAAU;IAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC;IAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3D,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,IAAI,IAAI,GAAG,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,8GAA8G,CAC/G,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,KAAK,CAAC,IAAI,CAAC;YACT,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAClE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,wEAAwE;AACxE,0BAA0B;AAC1B,wEAAwE;AAExE;;;;;;;;;;;;;;GAcG;AACH,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,SAAS,sBAAsB,CAAC,GAAW;IACzC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YAC5C,+DAA+D;YAC/D,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAAC,KAAgB,EAAE,QAAgB;IACjE,MAAM,QAAQ,GAAoE,EAAE,CAAC;IACrF,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC;oBACZ,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBAChC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBACpC,QAAQ;iBACT,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;QACH,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,QAAQ;aACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,QAAQ,gBAAgB,CAAC;aAC1F,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,CAAC,MAAM,gCAAgC,QAAQ,qBAAqB;YACjG,4DAA4D,OAAO,EAAE,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AACxE,uBAAuB;AACvB,wEAAwE;AAExE,0BAA0B,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACtD,MAAM,GAAG,GAAG,IAAI,EAAE,GAAyB,CAAC;IAC5C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACvF,OAAO,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"blazegraph.js","sourceRoot":"","sources":["../../src/adapters/blazegraph.ts"],"names":[],"mappings":"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"}