@ifc-lite/cli 0.28.0 → 0.28.1

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.
@@ -21,7 +21,7 @@ export async function bcfCommand(args) {
21
21
  const author = getFlag(args, '--author') ?? 'cli@ifc-lite.com';
22
22
  const outPath = getFlag(args, '--out');
23
23
  if (!title)
24
- fatal('Usage: ifc-lite bcf create --title "Issue" [--description "..."] [--author email] --out file.bcf');
24
+ fatal('Usage: ifc-lite bcf create --title "Missing door" [--description "..."] [--author email] --out file.bcf');
25
25
  if (!outPath)
26
26
  fatal('--out is required for BCF creation');
27
27
  const project = await bcf.createProject({ name: 'CLI Project' });
@@ -1 +1 @@
1
- {"version":3,"file":"bcf.js","sourceRoot":"","sources":["../../src/commands/bcf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bcf.js","sourceRoot":"","sources":["../../src/commands/bcf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { IfcDataStore } from '@ifc-lite/parser';
2
+ /**
3
+ * Handle the `obj | gltf | glb | jsonld | ifcx | usd | step` export formats.
4
+ * Whole-model formats (ifcx/usd) never isolate, so filters were skipped by the
5
+ * caller and must not gate the export here — only the isolating formats treat
6
+ * a filter as active.
7
+ */
8
+ export declare function exportRustFormat(format: string, args: string[], store: IfcDataStore, filePath: string, refs: Array<{
9
+ expressId: number;
10
+ }>, filterRequested: boolean, wholeModelFormat: boolean): Promise<void>;
11
+ //# sourceMappingURL=export-rust-formats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-rust-formats.d.ts","sourceRoot":"","sources":["../../src/commands/export-rust-formats.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA4BrD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,EAClC,eAAe,EAAE,OAAO,EACxB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,IAAI,CAAC,CA0Gf"}
@@ -0,0 +1,161 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * The Rust-backed export formats (ifc-lite-export via wasm): OBJ, glTF/GLB,
6
+ * JSON-LD, IFCX, USD, STEP. Split out of export.ts (#4047) — this is the one
7
+ * cohesive block that shares the wasm GeometryProcessor bootstrap, the
8
+ * isolation-set / filter-matched-zero handling, and the opt-in geometry
9
+ * diagnostics pass.
10
+ */
11
+ import { readFile, writeFile } from 'node:fs/promises';
12
+ import { GeometryProcessor, isNoRenderGeometryError } from '@ifc-lite/geometry';
13
+ import { countGlbMeshes } from '@ifc-lite/export';
14
+ import { getFlag, hasFlag, fatal, writeOutput } from '../output.js';
15
+ import { logger } from '../logger.js';
16
+ import { formatGeometryReport, NO_DIAGNOSTICS_LINE } from '../geometry-report.js';
17
+ /**
18
+ * Resolve the raw IFC bytes (parsed store source, or re-read from disk) plus a
19
+ * one-shot wasm GeometryProcessor for the Rust-backed exporters (OBJ / glTF / JSON-LD).
20
+ *
21
+ * Every Rust exporter below takes the WHOLE file, so the source is genuinely
22
+ * materialised here (#2183). It is handed back rather than scoped through a
23
+ * callback because the caller is one `switch` arm of a single CLI invocation
24
+ * that also runs the optional diagnostics pass over the same bytes; the buffer
25
+ * dies with the command.
26
+ */
27
+ async function rustExportContext(store, filePath) {
28
+ let bytes;
29
+ if (store.source.byteLength > 0) {
30
+ bytes = store.source.materialize();
31
+ }
32
+ else {
33
+ const buf = await readFile(filePath);
34
+ bytes = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
35
+ }
36
+ const gp = new GeometryProcessor();
37
+ await gp.init();
38
+ return { bytes, gp };
39
+ }
40
+ /**
41
+ * Handle the `obj | gltf | glb | jsonld | ifcx | usd | step` export formats.
42
+ * Whole-model formats (ifcx/usd) never isolate, so filters were skipped by the
43
+ * caller and must not gate the export here — only the isolating formats treat
44
+ * a filter as active.
45
+ */
46
+ export async function exportRustFormat(format, args, store, filePath, refs, filterRequested, wholeModelFormat) {
47
+ const outPath = getFlag(args, '--out');
48
+ const filterActive = !wholeModelFormat && filterRequested;
49
+ const isolated = filterActive
50
+ ? new Uint32Array(refs.map((r) => r.expressId))
51
+ : new Uint32Array();
52
+ // An empty isolation set means "export everything" to the Rust exporters, so a
53
+ // filter that matched nothing would silently dump the whole model. Fail loudly
54
+ // instead — the user asked for a subset and got zero matches.
55
+ if (filterActive && isolated.length === 0) {
56
+ fatal('Filter matched 0 entities — nothing to export. Check --type/--storey/--where/--limit.');
57
+ }
58
+ // --profile: attribute wall-time between the per-invocation wasm
59
+ // bootstrap (GeometryProcessor init) and the export itself - the
60
+ // fixed-overhead split the throughput plan needs for tiny inputs.
61
+ const profileFlag = hasFlag(args, '--profile');
62
+ const tInit = performance.now();
63
+ const { bytes, gp } = await rustExportContext(store, filePath);
64
+ if (profileFlag) {
65
+ process.stderr.write(`profile: wasm init ${(performance.now() - tInit).toFixed(0)}ms\n`);
66
+ }
67
+ const tWork = performance.now();
68
+ try {
69
+ if (format === 'ifcx') {
70
+ const out = gp.exportIfcx(bytes);
71
+ if (out == null)
72
+ fatal('IFCX export failed (geometry pipeline not initialized)');
73
+ await writeOutput(out, outPath);
74
+ }
75
+ else if (format === 'usd') {
76
+ // OpenUSD (.usda ASCII) — whole-model Z-up USD stage (geometry-backed).
77
+ const out = gp.exportUsd(bytes);
78
+ if (out == null)
79
+ fatal('USD export failed (geometry pipeline not initialized)');
80
+ await writeOutput(out, outPath);
81
+ }
82
+ else if (format === 'step') {
83
+ // Rust faithful re-serialization (+ reference-closed subset when filtered).
84
+ const schema = getFlag(args, '--schema') ?? '';
85
+ const out = gp.exportStep(bytes, schema, isolated);
86
+ if (out == null)
87
+ fatal('STEP export failed (geometry pipeline not initialized)');
88
+ await writeOutput(out, outPath);
89
+ }
90
+ else if (format === 'jsonld') {
91
+ const out = gp.exportJsonld(bytes, '', true, false, false, isolated);
92
+ if (out == null)
93
+ fatal('JSON-LD export failed (geometry pipeline not initialized)');
94
+ await writeOutput(out, outPath);
95
+ }
96
+ else if (format === 'obj') {
97
+ const out = gp.exportObj(bytes, true, new Uint32Array(), isolated);
98
+ if (out == null)
99
+ fatal('OBJ export failed (geometry pipeline not initialized)');
100
+ await writeOutput(out, outPath);
101
+ }
102
+ else {
103
+ // gltf | glb → binary GLB
104
+ if (!outPath)
105
+ fatal('--out is required for GLB/glTF export (binary output)');
106
+ let out;
107
+ try {
108
+ out = gp.exportGlb(bytes, false, new Uint32Array(), isolated, '');
109
+ }
110
+ catch (err) {
111
+ // The Rust boundary fails closed on an empty visible mesh set; map
112
+ // the typed error to the tailored operator hint.
113
+ if (isNoRenderGeometryError(err)) {
114
+ fatal(filterActive
115
+ ? 'GLB export produced 0 meshes — the matched entities have no exportable render geometry. Check --type/--storey/--where/--limit.'
116
+ : 'GLB export produced 0 meshes — the model has no exportable render geometry (or geometry production failed).');
117
+ }
118
+ throw err;
119
+ }
120
+ if (out == null)
121
+ fatal('GLB export failed (geometry pipeline not initialized)');
122
+ // Defense-in-depth behind the Rust fail-closed guard: a zero-mesh GLB
123
+ // must never be written to disk and reported as success.
124
+ if (countGlbMeshes(out) === 0) {
125
+ fatal(filterActive
126
+ ? 'GLB export produced 0 meshes — the matched entities have no exportable render geometry. Check --type/--storey/--where/--limit.'
127
+ : 'GLB export produced 0 meshes — the model has no exportable render geometry (or geometry production failed).');
128
+ }
129
+ logger.debug(`GLB meshes: ${countGlbMeshes(out)}`);
130
+ await writeFile(outPath, out);
131
+ logger.info(`Written to ${outPath}`);
132
+ }
133
+ if (profileFlag) {
134
+ process.stderr.write(`profile: ${format} export ${(performance.now() - tWork).toFixed(0)}ms\n`);
135
+ }
136
+ // Opt-in geometry summary (--diagnostics, or implied by --verbose):
137
+ // reuses the gp/bytes already in scope. This is a second geometry pass
138
+ // (the export bindings do not return diagnostics yet), so it only runs
139
+ // when asked for; the renderer is shared with diagnose-geometry.
140
+ if (hasFlag(args, '--diagnostics') || logger.level() === 'debug') {
141
+ if (format === 'ifcx') {
142
+ logger.info('No geometry diagnostics for ifcx export (no mesh pass).');
143
+ }
144
+ else {
145
+ // Best-effort: the export already succeeded; a diagnostics failure
146
+ // must not turn it into a command failure.
147
+ try {
148
+ const diag = gp.diagnoseGeometry(bytes);
149
+ logger.info(diag ? formatGeometryReport(diag) : NO_DIAGNOSTICS_LINE);
150
+ }
151
+ catch (err) {
152
+ logger.warn(`Geometry diagnostics failed: ${err instanceof Error ? err.message : String(err)}`);
153
+ }
154
+ }
155
+ }
156
+ }
157
+ finally {
158
+ gp.dispose();
159
+ }
160
+ }
161
+ //# sourceMappingURL=export-rust-formats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-rust-formats.js","sourceRoot":"","sources":["../../src/commands/export-rust-formats.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAgEA;;;GAGG;AACH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CA2C9E;AAED,8CAA8C;AAC9C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGvD;AAsCD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+QjE"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AA6DA;;;GAGG;AACH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CA2C9E;AAED,8CAA8C;AAC9C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGvD;AAYD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+LjE"}
@@ -8,15 +8,13 @@
8
8
  * Supports type filtering, storey filtering, column selection (including quantities),
9
9
  * and schema conversion on export.
10
10
  */
11
- import { writeFile, readFile } from 'node:fs/promises';
11
+ import { writeFile } from 'node:fs/promises';
12
12
  import { basename } from 'node:path';
13
- import { GeometryProcessor, isNoRenderGeometryError } from '@ifc-lite/geometry';
14
- import { countGlbMeshes, escapeCsvCell } from '@ifc-lite/export';
13
+ import { escapeCsvCell } from '@ifc-lite/export';
15
14
  import { findPropertyInSets, findQuantityInSets } from '@ifc-lite/query';
16
15
  import { createHeadlessContext } from '../loader.js';
17
- import { getFlag, hasFlag, fatal, writeOutput, validateLimit } from '../output.js';
18
- import { logger } from '../logger.js';
19
- import { formatGeometryReport, NO_DIAGNOSTICS_LINE } from '../geometry-report.js';
16
+ import { getFlag, fatal, writeOutput, validateLimit } from '../output.js';
17
+ import { exportRustFormat } from './export-rust-formats.js';
20
18
  /**
21
19
  * Parse a --where filter string into psetName, propName, operator, value.
22
20
  */
@@ -113,29 +111,6 @@ export function columnValueToCsv(value) {
113
111
  return '';
114
112
  return String(value);
115
113
  }
116
- /**
117
- * Resolve the raw IFC bytes (parsed store source, or re-read from disk) plus a
118
- * one-shot wasm GeometryProcessor for the Rust-backed exporters (OBJ / glTF / JSON-LD).
119
- *
120
- * Every Rust exporter below takes the WHOLE file, so the source is genuinely
121
- * materialised here (#2183). It is handed back rather than scoped through a
122
- * callback because the caller is one `switch` arm of a single CLI invocation
123
- * that also runs the optional diagnostics pass over the same bytes; the buffer
124
- * dies with the command.
125
- */
126
- async function rustExportContext(store, filePath) {
127
- let bytes;
128
- if (store.source.byteLength > 0) {
129
- bytes = store.source.materialize();
130
- }
131
- else {
132
- const buf = await readFile(filePath);
133
- bytes = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
134
- }
135
- const gp = new GeometryProcessor();
136
- await gp.init();
137
- return { bytes, gp };
138
- }
139
114
  /**
140
115
  * RFC 4180 quoting + the CWE-1236 formula-injection guard, delegated to
141
116
  * `@ifc-lite/export`'s single escaper. The copy that used to live here tested
@@ -263,16 +238,40 @@ export async function exportCommand(args) {
263
238
  }
264
239
  case 'ifc': {
265
240
  const schema = getFlag(args, '--schema');
266
- const content = bim.export.ifc(refs, { schema });
241
+ // bim.export.ifc() isolates to the given refs (plus their reference closure)
242
+ // whenever the array is non-empty, and treats an EMPTY array as "export the
243
+ // whole model" — the same convention already used by the MCP export_ifc
244
+ // tool, headless-test-helpers, and the mutate/playground call sites (#4044).
245
+ // `refs` here is always non-empty for an unfiltered export (it's every
246
+ // queryable entity), so passing it unconditionally used to isolate the
247
+ // export to that set — narrowing out entities the query layer doesn't
248
+ // surface directly (e.g. solids owned by non-product entities) even
249
+ // though nothing was ever filtered.
250
+ if (filterRequested && refs.length === 0) {
251
+ fatal('Filter matched 0 entities — nothing to export. Check --type/--storey/--where/--limit.');
252
+ }
253
+ const exportRefs = filterRequested ? refs : [];
254
+ const content = bim.export.ifc(exportRefs, { schema });
267
255
  if (!outPath)
268
256
  fatal('--out is required for IFC export');
269
257
  await writeFile(outPath, content, 'utf-8');
270
- process.stderr.write(`Written to ${outPath}\n`);
258
+ if (filterRequested) {
259
+ // A genuinely filtered export still narrows — report the delta so the
260
+ // narrowing stays visible rather than silent (the same defect shape as
261
+ // #4044, just for the case where narrowing is actually intended).
262
+ const exportedCount = (content.match(/^#\d+=/gm) ?? []).length;
263
+ process.stderr.write(`Exported ${exportedCount} of ${store.entityCount} entities (filtered) to ${outPath}\n`);
264
+ }
265
+ else {
266
+ process.stderr.write(`Written to ${outPath}\n`);
267
+ }
271
268
  break;
272
269
  }
273
270
  // Rust-backed exporters (ifc-lite-export via wasm). OBJ/glTF mesh the model;
274
271
  // when a --type/--storey/--where/--limit filter is active the matched express
275
272
  // ids become the isolation set so the export contains only those elements.
273
+ // See export-rust-formats.ts (#4047) for the shared wasm bootstrap and
274
+ // per-format isolation/diagnostics handling.
276
275
  case 'obj':
277
276
  case 'gltf':
278
277
  case 'glb':
@@ -280,120 +279,7 @@ export async function exportCommand(args) {
280
279
  case 'ifcx':
281
280
  case 'usd':
282
281
  case 'step': {
283
- // Whole-model formats (ifcx/usd) never isolate, so filters were skipped above and
284
- // must not gate the export here — only the isolating formats treat a filter as active.
285
- const filterActive = !wholeModelFormat && filterRequested;
286
- const isolated = filterActive
287
- ? new Uint32Array(refs.map((r) => r.expressId))
288
- : new Uint32Array();
289
- // An empty isolation set means "export everything" to the Rust exporters, so a
290
- // filter that matched nothing would silently dump the whole model. Fail loudly
291
- // instead — the user asked for a subset and got zero matches.
292
- if (filterActive && isolated.length === 0) {
293
- fatal('Filter matched 0 entities — nothing to export. Check --type/--storey/--where/--limit.');
294
- }
295
- // --profile: attribute wall-time between the per-invocation wasm
296
- // bootstrap (GeometryProcessor init) and the export itself - the
297
- // fixed-overhead split the throughput plan needs for tiny inputs.
298
- const profileFlag = hasFlag(args, '--profile');
299
- const tInit = performance.now();
300
- const { bytes, gp } = await rustExportContext(store, filePath);
301
- if (profileFlag) {
302
- process.stderr.write(`profile: wasm init ${(performance.now() - tInit).toFixed(0)}ms\n`);
303
- }
304
- const tWork = performance.now();
305
- try {
306
- if (format === 'ifcx') {
307
- const out = gp.exportIfcx(bytes);
308
- if (out == null)
309
- fatal('IFCX export failed (geometry pipeline not initialized)');
310
- await writeOutput(out, outPath);
311
- }
312
- else if (format === 'usd') {
313
- // OpenUSD (.usda ASCII) — whole-model Z-up USD stage (geometry-backed).
314
- const out = gp.exportUsd(bytes);
315
- if (out == null)
316
- fatal('USD export failed (geometry pipeline not initialized)');
317
- await writeOutput(out, outPath);
318
- }
319
- else if (format === 'step') {
320
- // Rust faithful re-serialization (+ reference-closed subset when filtered).
321
- const schema = getFlag(args, '--schema') ?? '';
322
- const out = gp.exportStep(bytes, schema, isolated);
323
- if (out == null)
324
- fatal('STEP export failed (geometry pipeline not initialized)');
325
- await writeOutput(out, outPath);
326
- }
327
- else if (format === 'jsonld') {
328
- const out = gp.exportJsonld(bytes, '', true, false, false, isolated);
329
- if (out == null)
330
- fatal('JSON-LD export failed (geometry pipeline not initialized)');
331
- await writeOutput(out, outPath);
332
- }
333
- else if (format === 'obj') {
334
- const out = gp.exportObj(bytes, true, new Uint32Array(), isolated);
335
- if (out == null)
336
- fatal('OBJ export failed (geometry pipeline not initialized)');
337
- await writeOutput(out, outPath);
338
- }
339
- else {
340
- // gltf | glb → binary GLB
341
- if (!outPath)
342
- fatal('--out is required for GLB/glTF export (binary output)');
343
- let out;
344
- try {
345
- out = gp.exportGlb(bytes, false, new Uint32Array(), isolated, '');
346
- }
347
- catch (err) {
348
- // The Rust boundary fails closed on an empty visible mesh set; map
349
- // the typed error to the tailored operator hint.
350
- if (isNoRenderGeometryError(err)) {
351
- fatal(filterActive
352
- ? 'GLB export produced 0 meshes — the matched entities have no exportable render geometry. Check --type/--storey/--where/--limit.'
353
- : 'GLB export produced 0 meshes — the model has no exportable render geometry (or geometry production failed).');
354
- }
355
- throw err;
356
- }
357
- if (out == null)
358
- fatal('GLB export failed (geometry pipeline not initialized)');
359
- // Defense-in-depth behind the Rust fail-closed guard: a zero-mesh GLB
360
- // must never be written to disk and reported as success.
361
- if (countGlbMeshes(out) === 0) {
362
- fatal(filterActive
363
- ? 'GLB export produced 0 meshes — the matched entities have no exportable render geometry. Check --type/--storey/--where/--limit.'
364
- : 'GLB export produced 0 meshes — the model has no exportable render geometry (or geometry production failed).');
365
- }
366
- logger.debug(`GLB meshes: ${countGlbMeshes(out)}`);
367
- await writeFile(outPath, out);
368
- logger.info(`Written to ${outPath}`);
369
- }
370
- if (profileFlag) {
371
- process.stderr.write(`profile: ${format} export ${(performance.now() - tWork).toFixed(0)}ms\n`);
372
- }
373
- // Opt-in geometry summary (--diagnostics, or implied by --verbose):
374
- // reuses the gp/bytes already in scope. This is a second geometry pass
375
- // (the export bindings do not return diagnostics yet), so it only runs
376
- // when asked for; the renderer is shared with diagnose-geometry.
377
- if (hasFlag(args, '--diagnostics') || logger.level() === 'debug') {
378
- if (format === 'ifcx') {
379
- logger.info('No geometry diagnostics for ifcx export (no mesh pass).');
380
- }
381
- else {
382
- // Best-effort: the export already succeeded; a diagnostics failure
383
- // must not turn it into a command failure.
384
- try {
385
- const diag = gp.diagnoseGeometry(bytes);
386
- logger.info(diag ? formatGeometryReport(diag) : NO_DIAGNOSTICS_LINE);
387
- }
388
- catch (err) {
389
- logger.warn(`Geometry diagnostics failed: ${err instanceof Error ? err.message : String(err)}`);
390
- }
391
- }
392
- }
393
- }
394
- finally {
395
- gp.dispose();
396
- }
282
+ await exportRustFormat(format, args, store, filePath, refs, filterRequested, wholeModelFormat);
397
283
  break;
398
284
  }
399
285
  case 'hbjson': {
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,KAAK,CAAC,4BAA4B,MAAM,wCAAwC,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEtC,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAChC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACxF,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,OAAO,QAAQ,QAAQ,KAAK,CAAC,CAAC;QACjF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;GAGG;AACH;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAW,EAAE,GAAW,EAAE,GAAQ;IACnE,2BAA2B;IAC3B,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;IACjE,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;IACjE,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC7E,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,aAAa;QAAE,OAAO,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;IACtF,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;IAEnF,4DAA4D;IAC5D,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAExC,uBAAuB;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,kBAAkB,CAAM,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAChE,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QAE3C,uBAAuB;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,kBAAkB,CAAM,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC/D,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI;YAAE,OAAO,GAAG,CAAC,KAAK,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI;gBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;QACxD,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI;gBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,KAAa,EAAE,GAAW;IAC3C,OAAO,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/C,6EAA6E;IAC7E,gFAAgF;IAChF,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,gBAAgB,GACpB,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC;IACtF,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI,YAAY,IAAI,KAAK,CAAC,CAAC;IAExE,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,mOAAmO,CAAC,CAAC;IAE1P,yBAAyB;IACzB,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAE7D,oFAAoF;IACpF,4CAA4C;IAC5C,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,UAAU,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAwB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IACD,0EAA0E;IAC1E,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAE3B,0FAA0F;IAC1F,IAAI,YAAY,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAC5C,CAAC,CAAC,IAAI,KAAK,YAAY;YACvB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,YAAY,CACzC,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzE,KAAK,CAAC,WAAW,YAAY,2BAA2B,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACtE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,wDAAwD;IACxD,EAAE;IACF,6EAA6E;IAC7E,yEAAyE;IACzE,4EAA4E;IAC5E,uEAAuE;IACvE,2EAA2E;IAC3E,wDAAwD;IACxD,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,UAAU;QACxB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;QACvB,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IAE9D,8EAA8E;IAC9E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAClJ,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,gFAAgF;IAChF,8EAA8E;IAC9E,2EAA2E;IAC3E,IAAI,eAAe,IAAI,gBAAgB,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC,CAAC;IACtI,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,gBAAgB,EAAE,CAAC;gBACrB,gEAAgE;gBAChE,MAAM,IAAI,GAAe,CAAC,OAAO,CAAC,CAAC;gBACnC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;oBAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxF,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChG,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;gBACzD,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAClC,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,gBAAgB,EAAE,CAAC;gBACrB,wFAAwF;gBACxF,MAAM,MAAM,GAA8B,EAAE,CAAC;gBAC7C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;oBAC9B,MAAM,GAAG,GAA4B,EAAE,CAAC;oBACxC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;wBAC1B,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;oBAClD,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAChD,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC9C,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAA6C,CAAC;YACrF,6EAA6E;YAC7E,4EAA4E;YAC5E,wEAAwE;YACxE,6EAA6E;YAC7E,uEAAuE;YACvE,uEAAuE;YACvE,sEAAsE;YACtE,oEAAoE;YACpE,oCAAoC;YACpC,IAAI,eAAe,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,KAAK,CAAC,uFAAuF,CAAC,CAAC;YACjG,CAAC;YACD,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAW,CAAC;YACjE,IAAI,CAAC,OAAO;gBAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACxD,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,eAAe,EAAE,CAAC;gBACpB,sEAAsE;gBACtE,uEAAuE;gBACvE,kEAAkE;gBAClE,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,YAAY,aAAa,OAAO,KAAK,CAAC,WAAW,2BAA2B,OAAO,IAAI,CACxF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,IAAI,CAAC,CAAC;YAClD,CAAC;YACD,MAAM;QACR,CAAC;QACD,6EAA6E;QAC7E,8EAA8E;QAC9E,2EAA2E;QAC3E,uEAAuE;QACvE,6CAA6C;QAC7C,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;YAC/F,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,gFAAgF;YAChF,4EAA4E;YAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YAChG,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,8EAA8E;YAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YAChG,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM;QACR,CAAC;QACD;YACE,KAAK,CAAC,mBAAmB,MAAM,sFAAsF,CAAC,CAAC;IAC3H,CAAC;AACH,CAAC"}
@@ -1,15 +1,7 @@
1
- /** One parsed STEP instance: `#id = TYPE(<body>);`. */
2
- interface Instance {
3
- id: number;
4
- type: string;
5
- /** Argument text between the outermost parentheses (references + literals). */
6
- body: string;
7
- /** The verbatim `#id= TYPE(...);` text, re-emitted unchanged into the subset. */
8
- full: string;
9
- }
1
+ import { type StepRecord, type Subset } from './subset-relations.js';
10
2
  interface ParsedStep {
11
3
  header: string;
12
- instances: Map<number, Instance>;
4
+ instances: Map<number, StepRecord>;
13
5
  /** 22-char GlobalId → expressId, for rooted entities. */
14
6
  guidToId: Map<string, number>;
15
7
  }
@@ -25,16 +17,17 @@ export declare function parseStep(text: string): ParsedStep;
25
17
  * An `#id` / bare id is validated against the model too, so a typo'd or stale
26
18
  * id fails loudly instead of silently selecting nothing. */
27
19
  export declare function resolveToId(token: string, parsed: ParsedStep): number;
28
- /** Forward reference closure: every instance transitively referenced by `seeds`. */
20
+ /** Forward closure over `seeds`. An id NAMED but never DEFINED is not added, or
21
+ * a rewritten SET would emit it as a dangling `#id` (#4128). */
29
22
  export declare function forwardClosure(seeds: Iterable<number>, parsed: ParsedStep, into: Set<number>): void;
30
23
  /**
31
- * Assemble the kept-id set: the closure of `seedProducts` + context roots
32
- * (project/units/contexts + spatial skeleton) + spatial-containment relations
33
- * whose every member is kept (so no dangling references).
24
+ * Assemble the subset: the closure of `seedProducts` + context roots
25
+ * (project/units/contexts + spatial skeleton) + spatial-structure relations,
26
+ * each rewritten down to its kept members (so no dangling references).
34
27
  */
35
- export declare function buildSubset(seedProducts: Set<number>, parsed: ParsedStep): Set<number>;
36
- /** Serialize the kept ids back into a valid STEP file (sorted, header preserved). */
37
- export declare function serializeSubset(keep: Set<number>, parsed: ParsedStep): string;
28
+ export declare function buildSubset(seedProducts: Set<number>, parsed: ParsedStep): Subset;
29
+ /** Serialize the subset back into a valid STEP file (sorted, header preserved). */
30
+ export declare function serializeSubset({ keep, rewritten }: Subset, parsed: ParsedStep): string;
38
31
  interface TriageRow {
39
32
  expressId: number;
40
33
  ifcType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"extract-entities.d.ts","sourceRoot":"","sources":["../../src/commands/extract-entities.ts"],"names":[],"mappings":"AAgCA,uDAAuD;AACvD,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,yDAAyD;IACzD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA2ElD;AAED;;4DAE4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAUrE;AAID,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAenG;AA2ED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAmEtF;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAI7E;AAID,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAIlD;AA2DD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4G1E"}
1
+ {"version":3,"file":"extract-entities.d.ts","sourceRoot":"","sources":["../../src/commands/extract-entities.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAwB,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3F,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,yDAAyD;IACzD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA2ElD;AAED;;4DAE4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAUrE;AAID;gEACgE;AAChE,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAenG;AA2ED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAyEjF;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAIvF;AAID,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAIlD;AA2DD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4G1E"}