okgeometry-api 1.15.0 → 1.17.0
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.
- package/dist/Brep.d.ts +95 -6
- package/dist/Brep.d.ts.map +1 -1
- package/dist/Brep.js +114 -5
- package/dist/Brep.js.map +1 -1
- package/dist/GeometryBoolean.d.ts +136 -0
- package/dist/GeometryBoolean.d.ts.map +1 -0
- package/dist/GeometryBoolean.js +632 -0
- package/dist/GeometryBoolean.js.map +1 -0
- package/dist/Mesh.d.ts +21 -1
- package/dist/Mesh.d.ts.map +1 -1
- package/dist/Mesh.js +66 -4
- package/dist/Mesh.js.map +1 -1
- package/dist/NurbsCurve.d.ts +66 -0
- package/dist/NurbsCurve.d.ts.map +1 -1
- package/dist/NurbsCurve.js +101 -0
- package/dist/NurbsCurve.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/wasm-base64.d.ts +1 -1
- package/dist/wasm-base64.d.ts.map +1 -1
- package/dist/wasm-base64.js +1 -1
- package/dist/wasm-base64.js.map +1 -1
- package/dist/wasm-bindings.d.ts +123 -1
- package/dist/wasm-bindings.d.ts.map +1 -1
- package/dist/wasm-bindings.js +193 -1
- package/dist/wasm-bindings.js.map +1 -1
- package/package.json +58 -54
- package/src/Brep.ts +147 -10
- package/src/GeometryBoolean.ts +863 -0
- package/src/Mesh.ts +3804 -3730
- package/src/NurbsCurve.ts +110 -0
- package/src/index.ts +88 -79
- package/src/wasm-base64.ts +1 -1
- package/src/wasm-bindings.d.ts +110 -1
- package/src/wasm-bindings.js +197 -1
package/dist/Brep.d.ts
CHANGED
|
@@ -43,6 +43,20 @@ export interface BrepSplitSolidResult {
|
|
|
43
43
|
/** The half the sheet normal points into (null when empty). */
|
|
44
44
|
positive: Brep | null;
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Both sides of a sheet split ({@link Brep.splitSheetBySolid} /
|
|
48
|
+
* {@link Brep.splitSheetBySheet}), each an OPEN Brep preserving the sheet's
|
|
49
|
+
* exact trimmed faces, pcurves and edges.
|
|
50
|
+
*
|
|
51
|
+
* `inside` follows the oriented-sheet convention ("inside" = FRONT, the side
|
|
52
|
+
* a sheet's normal points toward): pieces CONTAINED in the solid cutter, or
|
|
53
|
+
* pieces in FRONT of the sheet cutter's normal. A side is null when no
|
|
54
|
+
* material lands on it.
|
|
55
|
+
*/
|
|
56
|
+
export interface BrepSheetSplitResult {
|
|
57
|
+
inside: Brep | null;
|
|
58
|
+
outside: Brep | null;
|
|
59
|
+
}
|
|
46
60
|
/** Validation report for a BREP body. */
|
|
47
61
|
export interface BrepValidationReport {
|
|
48
62
|
isClosed: boolean;
|
|
@@ -284,9 +298,20 @@ export declare class Brep {
|
|
|
284
298
|
*
|
|
285
299
|
* `options.tolerance` is the absolute geometric tolerance of the fitted
|
|
286
300
|
* intersection curves (default 1e-6).
|
|
301
|
+
*
|
|
302
|
+
* `options.join` (default false) JOINS the chained pieces into maximal
|
|
303
|
+
* curves: greedy reversal-aware endpoint chaining, exact degree elevation
|
|
304
|
+
* to the chain maximum, exact knot-vector concatenation (junction
|
|
305
|
+
* multiplicity = degree, no re-parameterization), and a per-curve
|
|
306
|
+
* verification gate — every joined curve is sampled densely and must stay
|
|
307
|
+
* within 5·tolerance of BOTH operands' surfaces, otherwise that chain's
|
|
308
|
+
* pieces come back unjoined (never a corrupted joined curve). A closed
|
|
309
|
+
* intersection loop (e.g. a plane through a cylinder) comes back as ONE
|
|
310
|
+
* closed curve with `pointAt(0)` equal to `pointAt(1)`.
|
|
287
311
|
*/
|
|
288
312
|
intersectionCurves(other: Brep | NurbsSurface, options?: {
|
|
289
313
|
tolerance?: number;
|
|
314
|
+
join?: boolean;
|
|
290
315
|
}): NurbsCurve[];
|
|
291
316
|
/**
|
|
292
317
|
* All points where a NURBS curve pierces this BREP's faces.
|
|
@@ -338,13 +363,43 @@ export declare class Brep {
|
|
|
338
363
|
* deterministic auto display tolerance from the BREP's own extent
|
|
339
364
|
*/
|
|
340
365
|
intersectMesh(mesh: Mesh, tolerance?: number): Polyline[];
|
|
366
|
+
/**
|
|
367
|
+
* Resolve a parametric-boolean operand: Breps pass through; Meshes are
|
|
368
|
+
* converted via {@link Brep.fromMesh} (planar-faceted meshes only) so the
|
|
369
|
+
* EXACT pipeline can run. Curved/dense meshes fail conversion with
|
|
370
|
+
* guidance to use the tessellated union()/subtract()/intersect() instead.
|
|
371
|
+
*/
|
|
372
|
+
private static resolveParametricOperand;
|
|
341
373
|
private runParametricBoolean;
|
|
342
374
|
/**
|
|
343
375
|
* PARAMETRIC boolean union: exact surface–surface intersection curves with
|
|
344
376
|
* trimmed-surface output. Result faces keep their parents' exact surfaces
|
|
345
377
|
* (planes/NURBS, untessellated); intersection edges are Newton-refined SSI
|
|
346
378
|
* curves stored as tolerant NURBS edges with matched pcurves on both
|
|
347
|
-
* adjacent faces.
|
|
379
|
+
* adjacent faces.
|
|
380
|
+
*
|
|
381
|
+
* Operands may be CLOSED solids or OPEN sheets — the kernel dispatches on
|
|
382
|
+
* closedness, following the oriented-sheet convention used across the API
|
|
383
|
+
* (a sheet's "inside" is the FRONT of its normal):
|
|
384
|
+
* - closed × closed — full volumetric boolean.
|
|
385
|
+
* - sheet × solid — `subtract` keeps the sheet's pieces OUTSIDE the solid,
|
|
386
|
+
* `intersect` the pieces INSIDE (open trimmed sheets).
|
|
387
|
+
* - solid × sheet — `subtract` keeps the capped half of the solid BEHIND
|
|
388
|
+
* the sheet normal, `intersect` the FRONT half (closed solids).
|
|
389
|
+
* - sheet × sheet — a sheet's material is its FRONT half-space, so
|
|
390
|
+
* `union` = ∂(matA ∪ matB): this sheet's BACK-of-other pieces joined
|
|
391
|
+
* with the other's BACK-of-this pieces into ONE open Brep stitched at
|
|
392
|
+
* the shared exact intersection edges (pieces in FRONT of the other
|
|
393
|
+
* sheet are interior to the union material and are dropped; faces the
|
|
394
|
+
* other operand never cuts are kept whole, coincident overlaps keep
|
|
395
|
+
* this sheet's copy); `subtract` keeps this sheet's BACK pieces;
|
|
396
|
+
* `intersect` its FRONT pieces.
|
|
397
|
+
* - `union` of a solid and a sheet (either order) is NOT defined and
|
|
398
|
+
* throws — trim the sheet with subtract/intersect instead.
|
|
399
|
+
*
|
|
400
|
+
* A Mesh operand is converted via {@link Brep.fromMesh} (planar-faceted
|
|
401
|
+
* meshes only); if conversion fails, use the tessellated
|
|
402
|
+
* union()/subtract()/intersect() instead.
|
|
348
403
|
*
|
|
349
404
|
* `options.tolerance` is the absolute geometric tolerance of intersection
|
|
350
405
|
* edges and coincident-face classification (default 1e-6).
|
|
@@ -353,11 +408,21 @@ export declare class Brep {
|
|
|
353
408
|
* cylinders touching along a line/point) is not resolved into pinch
|
|
354
409
|
* topology; transversal and coincident (coplanar) configurations are exact.
|
|
355
410
|
*/
|
|
356
|
-
unionBrep(other: Brep, options?: BrepParametricBooleanOptions): Brep;
|
|
357
|
-
/**
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
411
|
+
unionBrep(other: Brep | Mesh, options?: BrepParametricBooleanOptions): Brep;
|
|
412
|
+
/**
|
|
413
|
+
* PARAMETRIC boolean subtraction (this − other). See {@link unionBrep} for
|
|
414
|
+
* the full open/closed dispatch table: sheet − solid trims the sheet to
|
|
415
|
+
* the OUTSIDE of the solid; solid − sheet keeps the capped half BEHIND the
|
|
416
|
+
* sheet normal; sheet − sheet keeps this sheet's BACK pieces.
|
|
417
|
+
*/
|
|
418
|
+
subtractBrep(other: Brep | Mesh, options?: BrepParametricBooleanOptions): Brep;
|
|
419
|
+
/**
|
|
420
|
+
* PARAMETRIC boolean intersection. See {@link unionBrep} for the full
|
|
421
|
+
* open/closed dispatch table: sheet ∩ solid trims the sheet to the INSIDE
|
|
422
|
+
* of the solid; solid ∩ sheet keeps the capped half in FRONT of the sheet
|
|
423
|
+
* normal; sheet ∩ sheet keeps this sheet's FRONT pieces.
|
|
424
|
+
*/
|
|
425
|
+
intersectBrep(other: Brep | Mesh, options?: BrepParametricBooleanOptions): Brep;
|
|
361
426
|
/**
|
|
362
427
|
* Convert a closed manifold triangle mesh into a planar-face BREP: coplanar
|
|
363
428
|
* connected facet groups become single trimmed planar faces (with hole
|
|
@@ -393,6 +458,30 @@ export declare class Brep {
|
|
|
393
458
|
*/
|
|
394
459
|
static splitMeshBySurface(mesh: Mesh, surface: NurbsSurface, options?: BrepParametricBooleanOptions & MeshToBrepConversionOptions): BrepSplitSolidResult;
|
|
395
460
|
private static parseSplitResult;
|
|
461
|
+
/**
|
|
462
|
+
* PARAMETRIC split of this OPEN sheet by a CLOSED solid: the sheet's faces
|
|
463
|
+
* are imprinted with the exact intersection curves and every face piece is
|
|
464
|
+
* classified by containment in the solid. `inside` = the pieces contained
|
|
465
|
+
* in the solid (ON-boundary pieces count as inside), `outside` = the rest.
|
|
466
|
+
* Both sides are open Breps preserving the sheet's exact trimmed faces,
|
|
467
|
+
* pcurves and edges.
|
|
468
|
+
*
|
|
469
|
+
* The counterpart of {@link splitBySheet} with the roles swapped: use that
|
|
470
|
+
* one to split a closed solid BY a sheet (capped halves); use this one to
|
|
471
|
+
* split a sheet BY a solid (trimmed sheet pieces).
|
|
472
|
+
*/
|
|
473
|
+
splitSheetBySolid(solid: Brep, options?: BrepParametricBooleanOptions): BrepSheetSplitResult;
|
|
474
|
+
/**
|
|
475
|
+
* PARAMETRIC split of this OPEN sheet by another OPEN sheet (a sheet Brep
|
|
476
|
+
* or a NurbsSurface, converted via {@link Brep.fromSurface}): the mutual
|
|
477
|
+
* exact intersection curves are imprinted onto this sheet's faces and each
|
|
478
|
+
* piece is assigned to the FRONT (`inside`) or BACK (`outside`) of the
|
|
479
|
+
* other sheet's oriented normal — the same seam-vote classification as
|
|
480
|
+
* {@link splitBySheet}. Faces the cutter never crosses classify wholesale
|
|
481
|
+
* by their side of the cutter; coincident-overlap pieces land in `inside`.
|
|
482
|
+
*/
|
|
483
|
+
splitSheetBySheet(other: Brep | NurbsSurface, options?: BrepParametricBooleanOptions): BrepSheetSplitResult;
|
|
484
|
+
private static parseSheetSplitResult;
|
|
396
485
|
/** JSON representation (persistence). */
|
|
397
486
|
toJson(): string;
|
|
398
487
|
}
|
package/dist/Brep.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Brep.d.ts","sourceRoot":"","sources":["../src/Brep.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,2CAA2C;AAC3C,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qEAAqE;AACrE,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,kEAAkE;AAClE,MAAM,WAAW,2BAA2B;IAC1C;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,6FAA6F;IAC7F,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;CACvB;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wCAAwC;AACxC,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,IAAI;aAGqB,IAAI,EAAE,MAAM;IAFhD,OAAO,CAAC,KAAK,CAAyB;IAEtC,OAAO;IAMP,mDAAmD;IACnD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAInC,iFAAiF;IACjF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI;IAKxC,iEAAiE;IACjE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAO9E,kEAAkE;IAClE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKlD,iEAAiE;IACjE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAO5F,uEAAuE;IACvE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/D,OAAO,CAAC,MAAM,CAAC,aAAa;IAM5B;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAO1E;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYnF,yEAAyE;IACzE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI;IAazC,oEAAoE;IACpE,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAS/C,uDAAuD;IACvD,IAAI,IAAI,IAAI,QAAQ,CAanB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,gFAAgF;IAChF,QAAQ,IAAI,OAAO;IAMnB;;;;OAIG;IACH,UAAU,CAAC,SAAS,SAAO,GAAG,IAAI;IAOlC,qDAAqD;IACrD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,IAAI;IAOzD,qFAAqF;IACrF,KAAK,CAAC,SAAS,SAAO,GAAG,QAAQ,EAAE;IAqBnC;;;;;;;;OAQG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,KAAK;IAepD;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOpC;;;;;OAKG;IACH,KAAK,IAAI,IAAI,EAAE;IAYf;;;;;;;OAOG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY;IAOnD;;;;OAIG;IACH,mBAAmB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE;IAoB9C;;;OAGG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;IAOrF;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,IAAI;IAOnF;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,SAAI,GAAG;QAClC,IAAI,EAAE,IAAI,CAAC;QACX,8DAA8D;QAC9D,UAAU,EAAE,WAAW,CAAC;KACzB;IAgBD;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,GAAG,IAAI;IAaR;;;OAGG;IACH,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,GACX;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAOtE;;;;;;;OAOG;IACH,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,UAAU,EAAE;IAOtF;;;;OAIG;IACH,8BAA8B,CAC5B,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,GAAG,GAAG,GAAG,GACnB,UAAU,EAAE;IAOf,kEAAkE;IAClE,OAAO,CAAC,MAAM,CAAC,cAAc;IAgB7B,4DAA4D;IAC5D,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI;IAQlD,0BAA0B;IAC1B,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAW7B,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,SAAO,GAAG,oBAAoB;IAOhD,0EAA0E;IAC1E,UAAU,CAAC,SAAS,SAAQ,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAO/D,wEAAwE;IACxE,MAAM,CAAC,SAAS,SAAQ,GAAG,IAAI;IAM/B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAIpC,OAAO,CAAC,UAAU;IA0BlB;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAI7D;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAIhE;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAIjE;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,SAAS,SAAQ,GAAG,QAAQ,EAAE;IAQlE
|
|
1
|
+
{"version":3,"file":"Brep.d.ts","sourceRoot":"","sources":["../src/Brep.ts"],"names":[],"mappings":"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"}
|
package/dist/Brep.js
CHANGED
|
@@ -516,12 +516,24 @@ export class Brep {
|
|
|
516
516
|
*
|
|
517
517
|
* `options.tolerance` is the absolute geometric tolerance of the fitted
|
|
518
518
|
* intersection curves (default 1e-6).
|
|
519
|
+
*
|
|
520
|
+
* `options.join` (default false) JOINS the chained pieces into maximal
|
|
521
|
+
* curves: greedy reversal-aware endpoint chaining, exact degree elevation
|
|
522
|
+
* to the chain maximum, exact knot-vector concatenation (junction
|
|
523
|
+
* multiplicity = degree, no re-parameterization), and a per-curve
|
|
524
|
+
* verification gate — every joined curve is sampled densely and must stay
|
|
525
|
+
* within 5·tolerance of BOTH operands' surfaces, otherwise that chain's
|
|
526
|
+
* pieces come back unjoined (never a corrupted joined curve). A closed
|
|
527
|
+
* intersection loop (e.g. a plane through a cylinder) comes back as ONE
|
|
528
|
+
* closed curve with `pointAt(0)` equal to `pointAt(1)`.
|
|
519
529
|
*/
|
|
520
530
|
intersectionCurves(other, options) {
|
|
521
531
|
ensureInit();
|
|
522
532
|
const rhs = other instanceof Brep ? other : Brep.fromSurface(other);
|
|
523
533
|
const tolerance = options?.tolerance ?? 1e-6;
|
|
524
|
-
const buf =
|
|
534
|
+
const buf = options?.join
|
|
535
|
+
? wasm.brep_intersection_curves_joined_op(this.json, rhs.json, tolerance)
|
|
536
|
+
: wasm.brep_intersection_curves_op(this.json, rhs.json, tolerance);
|
|
525
537
|
// An EMPTY buffer signals a kernel error (invalid BREP / pipeline
|
|
526
538
|
// failure); "no intersections" is the non-empty `[0]` packing.
|
|
527
539
|
if (buf.length < 1) {
|
|
@@ -634,10 +646,29 @@ export class Brep {
|
|
|
634
646
|
return out;
|
|
635
647
|
}
|
|
636
648
|
// ── Parametric booleans (BREP → BREP) ──
|
|
649
|
+
/**
|
|
650
|
+
* Resolve a parametric-boolean operand: Breps pass through; Meshes are
|
|
651
|
+
* converted via {@link Brep.fromMesh} (planar-faceted meshes only) so the
|
|
652
|
+
* EXACT pipeline can run. Curved/dense meshes fail conversion with
|
|
653
|
+
* guidance to use the tessellated union()/subtract()/intersect() instead.
|
|
654
|
+
*/
|
|
655
|
+
static resolveParametricOperand(other) {
|
|
656
|
+
if (other instanceof Brep)
|
|
657
|
+
return other;
|
|
658
|
+
try {
|
|
659
|
+
return Brep.fromMesh(other);
|
|
660
|
+
}
|
|
661
|
+
catch (e) {
|
|
662
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
663
|
+
throw new Error(`Parametric boolean operand mesh could not be converted to a BREP (${reason}); ` +
|
|
664
|
+
"use the tessellated union()/subtract()/intersect() for mesh operands instead");
|
|
665
|
+
}
|
|
666
|
+
}
|
|
637
667
|
runParametricBoolean(other, op, options) {
|
|
638
668
|
ensureInit();
|
|
669
|
+
const rhs = Brep.resolveParametricOperand(other);
|
|
639
670
|
const tolerance = options?.tolerance ?? 1e-6;
|
|
640
|
-
const json = wasm.brep_boolean_op(this.json,
|
|
671
|
+
const json = wasm.brep_boolean_op(this.json, rhs.json, op, tolerance);
|
|
641
672
|
if (!json)
|
|
642
673
|
throw new Error(`Brep.${op}Brep failed`);
|
|
643
674
|
if (json.startsWith('{"error"')) {
|
|
@@ -651,7 +682,30 @@ export class Brep {
|
|
|
651
682
|
* trimmed-surface output. Result faces keep their parents' exact surfaces
|
|
652
683
|
* (planes/NURBS, untessellated); intersection edges are Newton-refined SSI
|
|
653
684
|
* curves stored as tolerant NURBS edges with matched pcurves on both
|
|
654
|
-
* adjacent faces.
|
|
685
|
+
* adjacent faces.
|
|
686
|
+
*
|
|
687
|
+
* Operands may be CLOSED solids or OPEN sheets — the kernel dispatches on
|
|
688
|
+
* closedness, following the oriented-sheet convention used across the API
|
|
689
|
+
* (a sheet's "inside" is the FRONT of its normal):
|
|
690
|
+
* - closed × closed — full volumetric boolean.
|
|
691
|
+
* - sheet × solid — `subtract` keeps the sheet's pieces OUTSIDE the solid,
|
|
692
|
+
* `intersect` the pieces INSIDE (open trimmed sheets).
|
|
693
|
+
* - solid × sheet — `subtract` keeps the capped half of the solid BEHIND
|
|
694
|
+
* the sheet normal, `intersect` the FRONT half (closed solids).
|
|
695
|
+
* - sheet × sheet — a sheet's material is its FRONT half-space, so
|
|
696
|
+
* `union` = ∂(matA ∪ matB): this sheet's BACK-of-other pieces joined
|
|
697
|
+
* with the other's BACK-of-this pieces into ONE open Brep stitched at
|
|
698
|
+
* the shared exact intersection edges (pieces in FRONT of the other
|
|
699
|
+
* sheet are interior to the union material and are dropped; faces the
|
|
700
|
+
* other operand never cuts are kept whole, coincident overlaps keep
|
|
701
|
+
* this sheet's copy); `subtract` keeps this sheet's BACK pieces;
|
|
702
|
+
* `intersect` its FRONT pieces.
|
|
703
|
+
* - `union` of a solid and a sheet (either order) is NOT defined and
|
|
704
|
+
* throws — trim the sheet with subtract/intersect instead.
|
|
705
|
+
*
|
|
706
|
+
* A Mesh operand is converted via {@link Brep.fromMesh} (planar-faceted
|
|
707
|
+
* meshes only); if conversion fails, use the tessellated
|
|
708
|
+
* union()/subtract()/intersect() instead.
|
|
655
709
|
*
|
|
656
710
|
* `options.tolerance` is the absolute geometric tolerance of intersection
|
|
657
711
|
* edges and coincident-face classification (default 1e-6).
|
|
@@ -663,11 +717,21 @@ export class Brep {
|
|
|
663
717
|
unionBrep(other, options) {
|
|
664
718
|
return this.runParametricBoolean(other, "union", options);
|
|
665
719
|
}
|
|
666
|
-
/**
|
|
720
|
+
/**
|
|
721
|
+
* PARAMETRIC boolean subtraction (this − other). See {@link unionBrep} for
|
|
722
|
+
* the full open/closed dispatch table: sheet − solid trims the sheet to
|
|
723
|
+
* the OUTSIDE of the solid; solid − sheet keeps the capped half BEHIND the
|
|
724
|
+
* sheet normal; sheet − sheet keeps this sheet's BACK pieces.
|
|
725
|
+
*/
|
|
667
726
|
subtractBrep(other, options) {
|
|
668
727
|
return this.runParametricBoolean(other, "subtract", options);
|
|
669
728
|
}
|
|
670
|
-
/**
|
|
729
|
+
/**
|
|
730
|
+
* PARAMETRIC boolean intersection. See {@link unionBrep} for the full
|
|
731
|
+
* open/closed dispatch table: sheet ∩ solid trims the sheet to the INSIDE
|
|
732
|
+
* of the solid; solid ∩ sheet keeps the capped half in FRONT of the sheet
|
|
733
|
+
* normal; sheet ∩ sheet keeps this sheet's FRONT pieces.
|
|
734
|
+
*/
|
|
671
735
|
intersectBrep(other, options) {
|
|
672
736
|
return this.runParametricBoolean(other, "intersect", options);
|
|
673
737
|
}
|
|
@@ -737,6 +801,51 @@ export class Brep {
|
|
|
737
801
|
const side = (v) => v == null ? null : new Brep(JSON.stringify(v));
|
|
738
802
|
return { negative: side(parsed.negative), positive: side(parsed.positive) };
|
|
739
803
|
}
|
|
804
|
+
/**
|
|
805
|
+
* PARAMETRIC split of this OPEN sheet by a CLOSED solid: the sheet's faces
|
|
806
|
+
* are imprinted with the exact intersection curves and every face piece is
|
|
807
|
+
* classified by containment in the solid. `inside` = the pieces contained
|
|
808
|
+
* in the solid (ON-boundary pieces count as inside), `outside` = the rest.
|
|
809
|
+
* Both sides are open Breps preserving the sheet's exact trimmed faces,
|
|
810
|
+
* pcurves and edges.
|
|
811
|
+
*
|
|
812
|
+
* The counterpart of {@link splitBySheet} with the roles swapped: use that
|
|
813
|
+
* one to split a closed solid BY a sheet (capped halves); use this one to
|
|
814
|
+
* split a sheet BY a solid (trimmed sheet pieces).
|
|
815
|
+
*/
|
|
816
|
+
splitSheetBySolid(solid, options) {
|
|
817
|
+
ensureInit();
|
|
818
|
+
const tolerance = options?.tolerance ?? 1e-6;
|
|
819
|
+
const json = wasm.brep_split_sheet_by_solid_op(this.json, solid.json, tolerance);
|
|
820
|
+
return Brep.parseSheetSplitResult(json, "Brep.splitSheetBySolid");
|
|
821
|
+
}
|
|
822
|
+
/**
|
|
823
|
+
* PARAMETRIC split of this OPEN sheet by another OPEN sheet (a sheet Brep
|
|
824
|
+
* or a NurbsSurface, converted via {@link Brep.fromSurface}): the mutual
|
|
825
|
+
* exact intersection curves are imprinted onto this sheet's faces and each
|
|
826
|
+
* piece is assigned to the FRONT (`inside`) or BACK (`outside`) of the
|
|
827
|
+
* other sheet's oriented normal — the same seam-vote classification as
|
|
828
|
+
* {@link splitBySheet}. Faces the cutter never crosses classify wholesale
|
|
829
|
+
* by their side of the cutter; coincident-overlap pieces land in `inside`.
|
|
830
|
+
*/
|
|
831
|
+
splitSheetBySheet(other, options) {
|
|
832
|
+
ensureInit();
|
|
833
|
+
const cutter = other instanceof Brep ? other : Brep.fromSurface(other);
|
|
834
|
+
const tolerance = options?.tolerance ?? 1e-6;
|
|
835
|
+
const json = wasm.brep_split_sheet_by_sheet_op(this.json, cutter.json, tolerance);
|
|
836
|
+
return Brep.parseSheetSplitResult(json, "Brep.splitSheetBySheet");
|
|
837
|
+
}
|
|
838
|
+
static parseSheetSplitResult(json, label) {
|
|
839
|
+
if (!json)
|
|
840
|
+
throw new Error(`${label} failed`);
|
|
841
|
+
if (json.startsWith('{"error"')) {
|
|
842
|
+
const parsed = JSON.parse(json);
|
|
843
|
+
throw new Error(`${label} failed: ${parsed.error}`);
|
|
844
|
+
}
|
|
845
|
+
const parsed = JSON.parse(json);
|
|
846
|
+
const side = (v) => v == null ? null : new Brep(JSON.stringify(v));
|
|
847
|
+
return { inside: side(parsed.inside), outside: side(parsed.outside) };
|
|
848
|
+
}
|
|
740
849
|
/** JSON representation (persistence). */
|
|
741
850
|
toJson() {
|
|
742
851
|
return this.json;
|
package/dist/Brep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Brep.js","sourceRoot":"","sources":["../src/Brep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAA2B,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AA4D3C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,IAAI;IAGf,YAAoC,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QAFxC,UAAK,GAAoB,IAAI,CAAC;QAGpC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjD,CAAC;IAED,qBAAqB;IAErB,mDAAmD;IACnD,MAAM,CAAC,QAAQ,CAAC,IAAY;QAC1B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,GAAG,CAAC,GAAU,EAAE,GAAU;QAC/B,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,QAAQ,CAAC,IAAW,EAAE,IAAU,EAAE,MAAc,EAAE,MAAc;QACrE,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;YACpC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,MAAM,CAAC,MAAM,CAAC,MAAa,EAAE,MAAc;QACzC,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,iEAAiE;IACjE,MAAM,CAAC,IAAI,CAAC,IAAW,EAAE,IAAU,EAAE,OAAe,EAAE,OAAe,EAAE,MAAc;QACnF,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAChC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;SACzE,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,KAAK,CAAC,MAAa,EAAE,KAAa,EAAE,KAAa;QACtD,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACnF,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,MAAgB;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,sBAAsB,CAAC,CAAC;QAC/D,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,OAAmB,EAAE,SAAe,EAAE,MAAc;QACjE,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAClG,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC3E,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,OAAmB,EAAE,MAAa,EAAE,IAAU,EAAE,KAAa;QAC1E,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAClC,OAAO,CAAC,IAAI,EACZ,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC5B,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EACtB,KAAK,CACN,CAAC;QACF,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAClD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,IAAI,CAAC,QAAsB;QAChC,UAAU,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAChF,MAAM,KAAK,GAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC/C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,oEAAoE;IACpE,MAAM,CAAC,WAAW,CAAC,OAAqB;QACtC,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACtD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,kBAAkB;IAElB,uDAAuD;IACvD,IAAI,IAAI;QACN,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,GAAG;gBACX,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;aACrB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAED,gFAAgF;IAChF,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,+BAA+B;IAE/B;;;;OAIG;IACH,UAAU,CAAC,SAAS,GAAG,IAAI;QACzB,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,qDAAqD;IACrD,cAAc,CAAC,SAAiB,EAAE,SAAS,GAAG,IAAI;QAChD,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACvE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,UAAU,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,SAAS,GAAG,IAAI;QACpB,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAe,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,GAAG,GAAY,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,GAAG,IAAI,CAAC,CAAC;YACX,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,sBAAsB;IAEtB;;;;;;;;OAQG;IACH,WAAW,CAAC,SAAiB;QAC3B,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,UAAU,CAAC,CAAC;QAC7E,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,SAAiB;QAC3B,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,SAAS,UAAU,CAAC,CAAC;QACpE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACH,UAAU,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAc,CAAC;QAClD,MAAM,GAAG,GAAW,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,IAAI,IAAI,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACH,kBAAkB,CAAC,SAAiB;QAClC,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,UAAU,CAAC,CAAC;QACpF,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,mBAAmB;QACjB,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,CAAC;YACZ,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACf,SAAS;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,SAAiB;QAC9B,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,UAAU,CAAC,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAAiB,EAAE,CAAS,EAAE,SAAoB;QAC7D,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,KAAK,GAAG,CAAC,CAAC;QACjF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,GAAG,CAAC;QAK/B,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvE,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAChE,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,KAAY;QAOtB,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACT,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACT,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;YAChB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,aAAa,CACX,SAAiB,EACjB,KAAY;QAEZ,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;IAC3E,CAAC;IAED;;;;;;;OAOG;IACH,oBAAoB,CAAC,SAAiB,EAAE,CAAS,EAAE,SAAoB;QACrE,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,cAAc,CACxB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,KAAK,GAAG,CAAC,CAC9E,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,8BAA8B,CAC5B,SAAiB,EACjB,CAAS,EACT,SAAoB;QAEpB,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,cAAc,CACxB,IAAI,CAAC,uCAAuC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,KAAK,GAAG,CAAC,CACzF,CAAC;IACJ,CAAC;IAED,kEAAkE;IAC1D,MAAM,CAAC,cAAc,CAAC,GAAiB;QAC7C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,mBAAmB;IAEnB,4DAA4D;IAC5D,WAAW,CAAC,MAA+B;QACzC,UAAU,EAAE,CAAC;QACb,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACtD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,0BAA0B;IAC1B,SAAS,CAAC,MAAY;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;YACtB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACjB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACjB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACjB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;SACX,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;IAEjB,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,GAAG,IAAI;QACvB,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAyB,CAAC;IAClD,CAAC;IAED,0EAA0E;IAC1E,UAAU,CAAC,SAAS,GAAG,KAAK;QAC1B,UAAU,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5D,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,CAAC;IAED,wEAAwE;IACxE,MAAM,CAAC,SAAS,GAAG,KAAK;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,iBAAiB;IAET,MAAM,CAAC,qBAAqB,CAAC,KAAkB,EAAE,SAAiB;QACxE,OAAO,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAEO,UAAU,CAChB,KAAkB,EAClB,EAAsC,EACtC,OAA4B;QAE5B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;QAC9C,2EAA2E;QAC3E,0EAA0E;QAC1E,yEAAyE;QACzE,sEAAsE;QACtE,mCAAmC;QACnC,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,SAAkB,CAAC;QACvB,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,SAAS,GAAG,MAAM,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACnD,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,SAAS,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QACD,MAAM,SAAS,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAkB,EAAE,OAA4B;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,KAAkB,EAAE,OAA4B;QACvD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,KAAkB,EAAE,OAA4B;QACxD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,KAAkB,EAAE,SAAS,GAAG,KAAK;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,yCAAyC;IAEzC;;;;;;;;;;;;;;;;;;OAkBG;IACH,kBAAkB,CAAC,KAA0B,EAAE,OAAgC;QAC7E,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7E,kEAAkE;QAClE,+DAA+D;QAC/D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,cAAc,CACZ,KAAiB;QAEjB,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,IAAI,GACR,EAAE,CAAC;QACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACtD,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBACxB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC/B,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;gBACf,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;aAChB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACH,SAAS,CAAC,KAAiB;QACzB,UAAU,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7D,qEAAqE;QACrE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,SAAS,GAAG,CAAC,KAAa,EAAgB,EAAE;YAChD,MAAM,GAAG,GAAiB,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAChC,MAAM,IAAI,CAAC,CAAC;gBACZ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClE,MAAM,IAAI,GAAG,CAAC;YAChB,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,CAAC;QACZ,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QACxC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,IAAU,EAAE,SAAS,GAAG,CAAC;QACrC,UAAU,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,gCAAgC,CAC/C,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,EACd,SAAS,CACV,CAAC;QACF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAe,EAAE,CAAC;QAC3B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7B,MAAM,GAAG,GAAY,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,GAAG,IAAI,CAAC,CAAC;YACX,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,0CAA0C;IAElC,oBAAoB,CAC1B,KAAW,EACX,EAAsC,EACtC,OAAsC;QAEtC,UAAU,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,gBAAgB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,KAAW,EAAE,OAAsC;QAC3D,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,4EAA4E;IAC5E,YAAY,CAAC,KAAW,EAAE,OAAsC;QAC9D,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,8DAA8D;IAC9D,aAAa,CAAC,KAAW,EAAE,OAAsC;QAC/D,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,4CAA4C;IAE5C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAU,EAAE,OAAqC;QAC/D,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CACrC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,EACd,OAAO,EAAE,uBAAuB,IAAI,CAAC,EACrC,OAAO,EAAE,QAAQ,IAAI,CAAC,CACvB,CAAC;QACF,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,YAAY,CACV,KAA0B,EAC1B,OAAsC;QAEtC,UAAU,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CACvB,IAAU,EACV,OAAqB,EACrB,OAAoE;QAEpE,UAAU,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,6BAA6B,CAC7C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,EACd,OAAO,CAAC,IAAI,EACZ,OAAO,EAAE,SAAS,IAAI,IAAI,EAC1B,OAAO,EAAE,uBAAuB,IAAI,CAAC,EACrC,OAAO,EAAE,QAAQ,IAAI,CAAC,CACvB,CAAC;QACF,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAChE,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,IAAY,EAAE,KAAa;QACzD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA6C,CAAC;QAC5E,MAAM,IAAI,GAAG,CAAC,CAAU,EAAe,EAAE,CACvC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED,yCAAyC;IACzC,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"Brep.js","sourceRoot":"","sources":["../src/Brep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Mesh } from "./Mesh.js";
|
|
2
|
+
import { Brep } from "./Brep.js";
|
|
3
|
+
import { NurbsSurface } from "./NurbsSurface.js";
|
|
4
|
+
import { NurbsCurve } from "./NurbsCurve.js";
|
|
5
|
+
import { Polyline } from "./Polyline.js";
|
|
6
|
+
import { Polygon } from "./Polygon.js";
|
|
7
|
+
import { PolyCurve } from "./PolyCurve.js";
|
|
8
|
+
import { Arc } from "./Arc.js";
|
|
9
|
+
import { Circle } from "./Circle.js";
|
|
10
|
+
import { Line } from "./Line.js";
|
|
11
|
+
import { Point } from "./Point.js";
|
|
12
|
+
/**
|
|
13
|
+
* Universal geometry boolean dispatcher, the single source of truth for
|
|
14
|
+
* "any geometry x any geometry" boolean semantics. Both okdraw and oknodes
|
|
15
|
+
* consume this module instead of re-implementing the dispatch matrix.
|
|
16
|
+
*
|
|
17
|
+
* Operands are classified by EFFECTIVE DIMENSION (what the geometry actually
|
|
18
|
+
* is, not what class it arrived as):
|
|
19
|
+
* - brep solid — closed Brep
|
|
20
|
+
* - brep sheet — open Brep, or a NurbsSurface (via Brep.fromSurface)
|
|
21
|
+
* - mesh solid — closed-volume triangle mesh
|
|
22
|
+
* - mesh sheet — open triangle mesh
|
|
23
|
+
* - curve — NurbsCurve, Polyline, Polygon (a Polyline subclass, always
|
|
24
|
+
* closed), PolyCurve, Arc, Circle, Line (all coerce to an exact
|
|
25
|
+
* NurbsCurve; piecewise-linear inputs keep their native polyline where
|
|
26
|
+
* polyline ops are cheaper or exact)
|
|
27
|
+
*
|
|
28
|
+
* Closedness caveat: curve closedness is decided by each operand's own
|
|
29
|
+
* isClosed() test, which for NurbsCurve / Polyline / PolyCurve is an
|
|
30
|
+
* ENDPOINT-PROXIMITY gate — start and end must coincide within 1e-10
|
|
31
|
+
* (Arc closes on a full 2π sweep; Circle and Polygon are always closed).
|
|
32
|
+
* A curve whose endpoints coincide within that tolerance therefore gets the
|
|
33
|
+
* closed-curve semantics (region booleans); a curve with a genuine endpoint
|
|
34
|
+
* gap gets the open-curve semantics (no region booleans,
|
|
35
|
+
* point-intersections). The region-boolean kernel re-verifies closure with a
|
|
36
|
+
* scale-relative tolerance and rejects open curves instead of silently
|
|
37
|
+
* chord-closing them.
|
|
38
|
+
*
|
|
39
|
+
* Result kinds follow the dimension of the result set:
|
|
40
|
+
* - solid/sheet x solid/sheet — 'brep' (parametric path) or 'mesh'
|
|
41
|
+
* (tessellated path, the documented downgrade when the parametric
|
|
42
|
+
* pipeline is unavailable or fails)
|
|
43
|
+
* - curve x solid — 'curves' (clip pieces)
|
|
44
|
+
* - curve x sheet — 'points' (crossings) for intersect, 'curves' for subtract
|
|
45
|
+
* - curve x curve — 'curves' (region boundaries) when both are closed +
|
|
46
|
+
* coplanar (Rhino CurveBoolean); 'points' for intersect of open curves
|
|
47
|
+
*
|
|
48
|
+
* Unsupported combinations throw typed, actionable errors.
|
|
49
|
+
*/
|
|
50
|
+
export type BooleanOpKind = "union" | "subtract" | "intersect";
|
|
51
|
+
export type BooleanOperand = Mesh | Brep | NurbsSurface | NurbsCurve | Polyline | Polygon | PolyCurve | Arc | Circle | Line;
|
|
52
|
+
export interface GeometryBooleanOptions {
|
|
53
|
+
/**
|
|
54
|
+
* PARAMETRIC tolerance: the SSI edge / classification tolerance of the
|
|
55
|
+
* exact BREP paths (default 1e-6). It is NEVER used as a tessellation
|
|
56
|
+
* tolerance — feeding an SSI-grade tolerance to toMesh would produce
|
|
57
|
+
* pathologically dense fallback meshes.
|
|
58
|
+
*/
|
|
59
|
+
tolerance?: number;
|
|
60
|
+
/**
|
|
61
|
+
* TESSELLATION tolerance: used whenever a BREP/surface must be converted
|
|
62
|
+
* to a mesh (toMesh conversions, tessellated fallbacks, side-probe
|
|
63
|
+
* meshes). When omitted the default is SCALE-RELATIVE: the combined
|
|
64
|
+
* operands' bounds diagonal × 2e-3 (the render pipeline's recipe), floored
|
|
65
|
+
* at 1e-6 — an absolute default breaks mm-scale models (degenerate probe
|
|
66
|
+
* tessellations) and wastes time on 100 m models. An explicit value always
|
|
67
|
+
* wins.
|
|
68
|
+
*/
|
|
69
|
+
meshTolerance?: number;
|
|
70
|
+
}
|
|
71
|
+
export interface GeometryBooleanResult {
|
|
72
|
+
kind: "brep" | "mesh" | "curves" | "points";
|
|
73
|
+
/** Single BREP result (set when the result is exactly one BREP). */
|
|
74
|
+
brep?: Brep;
|
|
75
|
+
/** All BREP pieces ('brep' results always set this, booleans have one entry). */
|
|
76
|
+
breps?: Brep[];
|
|
77
|
+
/** Merged mesh result (all pieces in one multi-component mesh). */
|
|
78
|
+
mesh?: Mesh;
|
|
79
|
+
/** Individual mesh pieces ('mesh' results always set this). */
|
|
80
|
+
meshes?: Mesh[];
|
|
81
|
+
/** Curve pieces. NurbsCurve pieces are exact (they lie exactly on the input curve); Polyline pieces come from polyline-native or tessellated paths. */
|
|
82
|
+
curves?: (NurbsCurve | Polyline)[];
|
|
83
|
+
/** Intersection points. */
|
|
84
|
+
points?: Point[];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Boolean of any two geometries, dispatched by effective dimension.
|
|
88
|
+
*
|
|
89
|
+
* Dispatch matrix (A x B):
|
|
90
|
+
* - brep x brep (any closedness) — parametric unionBrep/subtractBrep/
|
|
91
|
+
* intersectBrep (sheet-capable) returning kind 'brep'; parametric failures
|
|
92
|
+
* fall back to the tessellated mesh path (kind 'mesh').
|
|
93
|
+
* - brep x mesh — the closed mesh side is converted with Brep.fromMesh
|
|
94
|
+
* (planar-faceted) for the parametric path; otherwise tessellated mesh ops.
|
|
95
|
+
* - mesh x mesh — solid x solid runs CSG; a sheet operand uses the
|
|
96
|
+
* split-based trim semantics (subtract keeps outside/back, intersect keeps
|
|
97
|
+
* inside/front; solid x sheet returns the CAPPED clicked-side halves);
|
|
98
|
+
* sheet union sheet runs the kernel mutual trim + join. A sheet's material
|
|
99
|
+
* is its FRONT half-space, so the sheet union keeps each sheet's pieces
|
|
100
|
+
* BEHIND the other (front pieces are interior to the union material);
|
|
101
|
+
* uncut regions are kept, coincident overlaps keep A's copy.
|
|
102
|
+
* - union of a solid and a sheet (any representation) throws.
|
|
103
|
+
* - curve x solid — intersect keeps the inside clip pieces, subtract the
|
|
104
|
+
* outside pieces (kind 'curves'); union throws.
|
|
105
|
+
* - curve x sheet — intersect returns the crossing points (kind 'points');
|
|
106
|
+
* subtract keeps the pieces behind the sheet normal (kind 'curves').
|
|
107
|
+
* - curve x curve — when BOTH curves are closed and coplanar, union /
|
|
108
|
+
* subtract / intersect are 2D REGION booleans (Rhino CurveBoolean): the
|
|
109
|
+
* result is the region boundary CURVES (kind 'curves', outer CCW / holes
|
|
110
|
+
* CW, polyline fidelity). For open curves, intersect returns the crossing
|
|
111
|
+
* POINTS (kind 'points') and union / subtract throw (open curves bound no
|
|
112
|
+
* region). Note: region-intersect returns the overlapping region's
|
|
113
|
+
* BOUNDARY, distinct from the point-set intersection of the open case.
|
|
114
|
+
*/
|
|
115
|
+
export declare function geometryBoolean(a: BooleanOperand, b: BooleanOperand, op: BooleanOpKind, options?: GeometryBooleanOptions): GeometryBooleanResult;
|
|
116
|
+
/**
|
|
117
|
+
* Split geometry A by blade B, returning ALL pieces of A (the blade is
|
|
118
|
+
* untouched). Dispatch mirrors {@link geometryBoolean}:
|
|
119
|
+
* - brep solid / sheet blades use the parametric splitBySheet /
|
|
120
|
+
* splitSheetBySolid / splitSheetBySheet pipelines (kind 'brep', both
|
|
121
|
+
* sides); failures fall back to the tessellated mesh path.
|
|
122
|
+
* - mesh hosts use Mesh.split / Mesh.splitSolidBySurface (kind 'mesh',
|
|
123
|
+
* outside pieces then inside pieces).
|
|
124
|
+
* - curve hosts split exactly: clipByBrep (closed BREP blade), exact
|
|
125
|
+
* parameters from trim-checked BREP hits (sheet BREP blade),
|
|
126
|
+
* splitPolyline or exact splitAtParams (mesh blade). For a closed curve
|
|
127
|
+
* host split by a closed coplanar curve blade → 2D REGION split (all region
|
|
128
|
+
* boundaries, Rhino "region split"); an open host splits at
|
|
129
|
+
* intersectCurveParams hits (curve blade). Kind 'curves'.
|
|
130
|
+
* - a closed planar curve blade cuts mesh and BREP hosts through
|
|
131
|
+
* Mesh.split's curve mode (through-cut cutter); an OPEN curve blade
|
|
132
|
+
* against a solid/sheet host throws a typed error (an open curve cannot
|
|
133
|
+
* bound a through-cut).
|
|
134
|
+
*/
|
|
135
|
+
export declare function geometrySplit(a: BooleanOperand, b: BooleanOperand, options?: GeometryBooleanOptions): GeometryBooleanResult;
|
|
136
|
+
//# sourceMappingURL=GeometryBoolean.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeometryBoolean.d.ts","sourceRoot":"","sources":["../src/GeometryBoolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AAE/D,MAAM,MAAM,cAAc,GACtB,IAAI,GACJ,IAAI,GACJ,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,OAAO,GACP,SAAS,GACT,GAAG,GACH,MAAM,GACN,IAAI,CAAC;AAET,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,oEAAoE;IACpE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,iFAAiF;IACjF,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,mEAAmE;IACnE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,+DAA+D;IAC/D,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;IAChB,uJAAuJ;IACvJ,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;IACnC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;CAClB;AAgiBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,cAAc,EACjB,CAAC,EAAE,cAAc,EACjB,EAAE,EAAE,aAAa,EACjB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB,CAiCvB;AAwHD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,cAAc,EACjB,CAAC,EAAE,cAAc,EACjB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB,CAQvB"}
|