@sachitv/safe-math-ts 0.1.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/esm/mod.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { abs, add, approxEq, average, clamp, clampUnsafe, dimensionless, dimensionlessUnit, div, eq, gt, gte, lt, lte, max, min, mul, neg, quantity, scale, sqrt, sub, sum, unit, valueOf, } from './src/units.js';
2
+ export type { Dimensionless, DivUnit, MulUnit, NoInfer, Quantity, SqrtUnit, UnitExpr, UnitFromString, UnitTag, } from './src/units.js';
3
+ export * from './src/geometry3d/mod.js';
4
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,GAAG,EACH,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,GAAG,EACH,EAAE,EACF,EAAE,EACF,GAAG,EACH,EAAE,EACF,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAI,EACJ,OAAO,GACR,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,aAAa,EACb,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,OAAO,GACR,MAAM,gBAAgB,CAAC;AAExB,cAAc,yBAAyB,CAAC"}
package/esm/mod.js ADDED
@@ -0,0 +1,2 @@
1
+ export { abs, add, approxEq, average, clamp, clampUnsafe, dimensionless, dimensionlessUnit, div, eq, gt, gte, lt, lte, max, min, mul, neg, quantity, scale, sqrt, sub, sum, unit, valueOf, } from './src/units.js';
2
+ export * from './src/geometry3d/mod.js';
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,400 @@
1
+ import { type Dimensionless, type NoInfer, type Quantity, type UnitExpr, type UnitTag } from '../units.js';
2
+ import type { Delta3, Dir3, FrameTag, LinearMat4, Mat4, Point3, ProjectionMat4, Quaternion } from './types.js';
3
+ /**
4
+ * Creates a typed 4x4 matrix from 16 column-major values.
5
+ *
6
+ * `toFrameTag`, `fromFrameTag`, and `translationUnitTag` enforce explicit
7
+ * frame/unit declaration at construction.
8
+ * Values follow column-major layout and translation lives in indices 12/13/14.
9
+ * Unsafe variant: slices to 16 values without length validation.
10
+ *
11
+ * @param toFrameTag Destination frame token.
12
+ * @param fromFrameTag Source frame token.
13
+ * @param translationUnitTag Translation unit token.
14
+ * @param values Matrix coefficients in column-major order.
15
+ * @returns Typed affine matrix.
16
+ */
17
+ export declare const mat4Unsafe: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, translationUnitTag: UnitTag<TranslationUnit>, values: readonly number[]) => Mat4<ToFrame, FromFrame, TranslationUnit>;
18
+ /**
19
+ * Creates a typed 4x4 matrix from 16 column-major values.
20
+ *
21
+ * `toFrameTag`, `fromFrameTag`, and `translationUnitTag` enforce explicit
22
+ * frame/unit declaration at construction.
23
+ * Values follow column-major layout and translation lives in indices 12/13/14.
24
+ * Throws when `values.length !== 16`.
25
+ *
26
+ * @param toFrameTag Destination frame token.
27
+ * @param fromFrameTag Source frame token.
28
+ * @param translationUnitTag Translation unit token.
29
+ * @param values Matrix coefficients in column-major order.
30
+ * @returns Typed affine matrix.
31
+ * @throws {Error} When `values` does not contain exactly 16 entries.
32
+ */
33
+ export declare const mat4: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, translationUnitTag: UnitTag<TranslationUnit>, values: readonly number[]) => Mat4<ToFrame, FromFrame, TranslationUnit>;
34
+ /**
35
+ * Creates an identity linear transform for a frame.
36
+ *
37
+ * @param frameTag Frame token.
38
+ * @param dimensionlessUnitTag Dimensionless unit token.
39
+ * @returns Identity linear transform.
40
+ */
41
+ export declare const mat4Identity: <Frame extends string>(frameTag: FrameTag<Frame>, dimensionlessUnitTag: UnitTag<Dimensionless>) => LinearMat4<Frame, Frame>;
42
+ /**
43
+ * Creates a pure translation matrix in a frame.
44
+ *
45
+ * @param frameTag Frame token.
46
+ * @param translation Translation displacement.
47
+ * @returns Affine translation matrix.
48
+ */
49
+ export declare const mat4FromTranslation: <TranslationUnit extends UnitExpr, Frame extends string>(frameTag: FrameTag<Frame>, translation: Delta3<TranslationUnit, NoInfer<Frame>>) => Mat4<Frame, Frame, TranslationUnit>;
50
+ /**
51
+ * Creates a non-uniform scale matrix in a frame.
52
+ *
53
+ * @param frameTag Frame token.
54
+ * @param dimensionlessUnitTag Dimensionless unit token.
55
+ * @param xScale X axis scale.
56
+ * @param yScale Y axis scale.
57
+ * @param zScale Z axis scale.
58
+ * @returns Linear scale matrix.
59
+ */
60
+ export declare const mat4FromScale: <Frame extends string>(frameTag: FrameTag<Frame>, dimensionlessUnitTag: UnitTag<Dimensionless>, xScale: number, yScale: number, zScale: number) => LinearMat4<Frame, Frame>;
61
+ /**
62
+ * Creates a rotation matrix from a quaternion.
63
+ *
64
+ * @param toFrameTag Destination frame token.
65
+ * @param fromFrameTag Source frame token.
66
+ * @param dimensionlessUnitTag Dimensionless unit token.
67
+ * @param rotation Input quaternion.
68
+ * @returns Linear rotation matrix.
69
+ */
70
+ export declare const mat4FromQuaternionUnsafe: <ToFrame extends string, FromFrame extends string>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, dimensionlessUnitTag: UnitTag<Dimensionless>, rotation: Quaternion<NoInfer<ToFrame>, NoInfer<FromFrame>>) => LinearMat4<ToFrame, FromFrame>;
71
+ /**
72
+ * Creates a rotation matrix from a quaternion.
73
+ *
74
+ * @param toFrameTag Destination frame token.
75
+ * @param fromFrameTag Source frame token.
76
+ * @param dimensionlessUnitTag Dimensionless unit token.
77
+ * @param rotation Input quaternion.
78
+ * @returns Linear rotation matrix.
79
+ * @throws {Error} When `rotation` is near zero length.
80
+ */
81
+ export declare const mat4FromQuaternion: <ToFrame extends string, FromFrame extends string>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, dimensionlessUnitTag: UnitTag<Dimensionless>, rotation: Quaternion<NoInfer<ToFrame>, NoInfer<FromFrame>>) => LinearMat4<ToFrame, FromFrame>;
82
+ /**
83
+ * Builds rigid transform matrix from rotation and translation.
84
+ *
85
+ * @param toFrameTag Destination frame token.
86
+ * @param fromFrameTag Source frame token.
87
+ * @param rotation Rotation quaternion.
88
+ * @param translation Translation expressed in `toFrameTag`.
89
+ * @returns Affine rigid transform matrix.
90
+ */
91
+ export declare const mat4FromRigidTransform: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, rotation: Quaternion<NoInfer<ToFrame>, NoInfer<FromFrame>>, translation: Delta3<TranslationUnit, NoInfer<ToFrame>>) => Mat4<ToFrame, FromFrame, TranslationUnit>;
92
+ /**
93
+ * Builds an affine transform from translation, rotation, and non-uniform scale.
94
+ *
95
+ * Order: scale in `FromFrame`, then rotate `FromFrame -> ToFrame`, then translate
96
+ * in `ToFrame`.
97
+ *
98
+ * @param toFrameTag Destination frame token.
99
+ * @param fromFrameTag Source frame token.
100
+ * @param translation Translation expressed in `toFrameTag`.
101
+ * @param rotation Rotation from `fromFrameTag` into `toFrameTag`.
102
+ * @param scale Non-uniform scale in `fromFrameTag`.
103
+ * @returns Affine TRS matrix.
104
+ */
105
+ export declare const mat4FromTRSUnsafe: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, translation: Delta3<TranslationUnit, NoInfer<ToFrame>>, rotation: Quaternion<NoInfer<ToFrame>, NoInfer<FromFrame>>, scale: Dir3<NoInfer<FromFrame>>) => Mat4<ToFrame, FromFrame, TranslationUnit>;
106
+ /**
107
+ * Builds an affine transform from translation, rotation, and non-uniform scale.
108
+ *
109
+ * Order: scale in `FromFrame`, then rotate `FromFrame -> ToFrame`, then translate
110
+ * in `ToFrame`.
111
+ *
112
+ * @param toFrameTag Destination frame token.
113
+ * @param fromFrameTag Source frame token.
114
+ * @param translation Translation expressed in `toFrameTag`.
115
+ * @param rotation Rotation from `fromFrameTag` into `toFrameTag`.
116
+ * @param scale Non-uniform scale in `fromFrameTag`.
117
+ * @returns Affine TRS matrix.
118
+ * @throws {Error} When `rotation` is near zero length.
119
+ */
120
+ export declare const mat4FromTRS: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, translation: Delta3<TranslationUnit, NoInfer<ToFrame>>, rotation: Quaternion<NoInfer<ToFrame>, NoInfer<FromFrame>>, scale: Dir3<NoInfer<FromFrame>>) => Mat4<ToFrame, FromFrame, TranslationUnit>;
121
+ /**
122
+ * Creates a cache for TRS matrix construction.
123
+ *
124
+ * Returns a closure that reuses the previous matrix instance when all inputs are
125
+ * numerically unchanged.
126
+ *
127
+ * @param toFrameTag Destination frame token.
128
+ * @param fromFrameTag Source frame token.
129
+ * @param translationUnitTag Translation unit token.
130
+ * @returns Memoized TRS builder.
131
+ */
132
+ export declare const createTrsMat4Cache: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, translationUnitTag: UnitTag<TranslationUnit>) => (translation: Delta3<TranslationUnit, NoInfer<ToFrame>>, rotation: Quaternion<NoInfer<ToFrame>, NoInfer<FromFrame>>, scale: Dir3<NoInfer<FromFrame>>) => Mat4<ToFrame, FromFrame, TranslationUnit>;
133
+ /**
134
+ * Builds a right-handed perspective projection matrix.
135
+ *
136
+ * Returns a matrix intended for `projectPoint3` (includes perspective divide).
137
+ *
138
+ * @param toFrameTag Destination frame token.
139
+ * @param fromFrameTag Source frame token.
140
+ * @param fieldOfViewYRadians Vertical field of view in radians.
141
+ * @param aspect Width/height aspect ratio.
142
+ * @param near Near clipping plane distance.
143
+ * @param far Far clipping plane distance.
144
+ * @returns Projection matrix.
145
+ */
146
+ export declare const mat4PerspectiveUnsafe: <ToFrame extends string, FromFrame extends string, DepthUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, fieldOfViewYRadians: number, aspect: number, near: Quantity<DepthUnit>, far: Quantity<NoInfer<DepthUnit>>) => ProjectionMat4<ToFrame, FromFrame, DepthUnit>;
147
+ /**
148
+ * Builds a right-handed perspective projection matrix.
149
+ *
150
+ * Returns a matrix intended for `projectPoint3` (includes perspective divide).
151
+ *
152
+ * @param toFrameTag Destination frame token.
153
+ * @param fromFrameTag Source frame token.
154
+ * @param fieldOfViewYRadians Vertical field of view in radians.
155
+ * @param aspect Width/height aspect ratio.
156
+ * @param near Near clipping plane distance.
157
+ * @param far Far clipping plane distance.
158
+ * @returns Projection matrix.
159
+ * @throws {Error} When FOV/aspect/near/far inputs are invalid.
160
+ */
161
+ export declare const mat4Perspective: <ToFrame extends string, FromFrame extends string, DepthUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, fieldOfViewYRadians: number, aspect: number, near: Quantity<DepthUnit>, far: Quantity<NoInfer<DepthUnit>>) => ProjectionMat4<ToFrame, FromFrame, DepthUnit>;
162
+ /**
163
+ * Builds a right-handed orthographic projection matrix.
164
+ *
165
+ * Maps the view volume [left,right]×[bottom,top]×[-near,-far] to NDC
166
+ * [-1,1]×[-1,1]×[-1,1]. The w component of transformed points is always 1,
167
+ * so `projectPoint3` performs a trivial divide by 1.
168
+ *
169
+ * Unsafe variant: performs no input validation.
170
+ * Degenerate inputs (e.g. left === right) produce a singular matrix.
171
+ *
172
+ * @param toFrameTag Destination frame token.
173
+ * @param fromFrameTag Source frame token.
174
+ * @param left Left clipping plane distance.
175
+ * @param right Right clipping plane distance.
176
+ * @param bottom Bottom clipping plane distance.
177
+ * @param top Top clipping plane distance.
178
+ * @param near Near clipping plane distance.
179
+ * @param far Far clipping plane distance.
180
+ * @returns Orthographic projection matrix.
181
+ */
182
+ export declare const mat4OrthoUnsafe: <ToFrame extends string, FromFrame extends string, DepthUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, left: Quantity<DepthUnit>, right: Quantity<NoInfer<DepthUnit>>, bottom: Quantity<NoInfer<DepthUnit>>, top: Quantity<NoInfer<DepthUnit>>, near: Quantity<NoInfer<DepthUnit>>, far: Quantity<NoInfer<DepthUnit>>) => ProjectionMat4<ToFrame, FromFrame, DepthUnit>;
183
+ /**
184
+ * Builds a right-handed orthographic projection matrix.
185
+ *
186
+ * Maps the view volume [left,right]×[bottom,top]×[-near,-far] to NDC
187
+ * [-1,1]×[-1,1]×[-1,1]. The w component of transformed points is always 1,
188
+ * so `projectPoint3` performs a trivial divide by 1.
189
+ *
190
+ * Safe variant: validates that left < right, bottom < top, and 0 < near < far.
191
+ *
192
+ * @param toFrameTag Destination frame token.
193
+ * @param fromFrameTag Source frame token.
194
+ * @param left Left clipping plane distance.
195
+ * @param right Right clipping plane distance.
196
+ * @param bottom Bottom clipping plane distance.
197
+ * @param top Top clipping plane distance.
198
+ * @param near Near clipping plane distance.
199
+ * @param far Far clipping plane distance.
200
+ * @returns Orthographic projection matrix.
201
+ * @throws {Error} When the clipping volume is degenerate.
202
+ */
203
+ export declare const mat4Ortho: <ToFrame extends string, FromFrame extends string, DepthUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, left: Quantity<DepthUnit>, right: Quantity<NoInfer<DepthUnit>>, bottom: Quantity<NoInfer<DepthUnit>>, top: Quantity<NoInfer<DepthUnit>>, near: Quantity<NoInfer<DepthUnit>>, far: Quantity<NoInfer<DepthUnit>>) => ProjectionMat4<ToFrame, FromFrame, DepthUnit>;
204
+ /**
205
+ * Projects a point with a perspective matrix and performs perspective divide.
206
+ *
207
+ * Unsafe variant: performs no `w === 0` guard.
208
+ * Degenerate inputs can yield `NaN`/`Infinity`.
209
+ *
210
+ * @param projection Projection matrix.
211
+ * @param point Input point in projection source frame.
212
+ * @returns Point in normalized device coordinates.
213
+ */
214
+ export declare const projectPoint3Unsafe: <ToFrame extends string, FromFrame extends string, DepthUnit extends UnitExpr>(projection: ProjectionMat4<ToFrame, FromFrame, DepthUnit>, point: Point3<NoInfer<DepthUnit>, NoInfer<FromFrame>>) => Point3<Dimensionless, ToFrame>;
215
+ /**
216
+ * Projects a point with a perspective matrix and performs perspective divide.
217
+ *
218
+ * Throws when homogeneous `w` is zero.
219
+ *
220
+ * @param projection Projection matrix.
221
+ * @param point Input point in projection source frame.
222
+ * @returns Point in normalized device coordinates.
223
+ * @throws {Error} When homogeneous `w` equals zero.
224
+ */
225
+ export declare const projectPoint3: <ToFrame extends string, FromFrame extends string, DepthUnit extends UnitExpr>(projection: ProjectionMat4<ToFrame, FromFrame, DepthUnit>, point: Point3<NoInfer<DepthUnit>, NoInfer<FromFrame>>) => Point3<Dimensionless, ToFrame>;
226
+ /**
227
+ * Builds a world-to-view pose matrix from eye, target, and up direction.
228
+ *
229
+ * Unsafe variant: performs no degeneracy checks on eye/target/up.
230
+ *
231
+ * @param toFrameTag Destination frame token.
232
+ * @param fromFrameTag Source frame token.
233
+ * @param point_eye_from Camera eye position.
234
+ * @param point_target_from Camera target position.
235
+ * @param dir_up_from Up direction.
236
+ * @returns View matrix.
237
+ */
238
+ export declare const mat4LookAtUnsafe: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, point_eye_from: Point3<TranslationUnit, NoInfer<FromFrame>>, point_target_from: Point3<TranslationUnit, NoInfer<FromFrame>>, dir_up_from: Dir3<NoInfer<FromFrame>>) => Mat4<ToFrame, FromFrame, TranslationUnit>;
239
+ /**
240
+ * Builds a world-to-view pose matrix from eye, target, and up direction.
241
+ *
242
+ * `upDirection` must be dimensionless and non-zero.
243
+ *
244
+ * @param toFrameTag Destination frame token.
245
+ * @param fromFrameTag Source frame token.
246
+ * @param point_eye_from Camera eye position.
247
+ * @param point_target_from Camera target position.
248
+ * @param dir_up_from Up direction.
249
+ * @returns View matrix.
250
+ * @throws {Error} When eye/target/up vectors form a degenerate basis.
251
+ */
252
+ export declare const mat4LookAt: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(toFrameTag: FrameTag<ToFrame>, fromFrameTag: FrameTag<FromFrame>, point_eye_from: Point3<TranslationUnit, NoInfer<FromFrame>>, point_target_from: Point3<TranslationUnit, NoInfer<FromFrame>>, dir_up_from: Dir3<NoInfer<FromFrame>>) => Mat4<ToFrame, FromFrame, TranslationUnit>;
253
+ /**
254
+ * Transposes any matrix while swapping frame direction.
255
+ *
256
+ * @param value Input affine matrix.
257
+ * @returns Transposed matrix with swapped frame direction.
258
+ */
259
+ export declare function transposeMat4<ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(value: Mat4<ToFrame, FromFrame, TranslationUnit>): Mat4<FromFrame, ToFrame, TranslationUnit>;
260
+ /**
261
+ * Transposes a linear matrix while keeping linear typing.
262
+ *
263
+ * @param value Input linear matrix.
264
+ * @returns Transposed linear matrix with swapped frame direction.
265
+ */
266
+ export declare function transposeMat4<ToFrame extends string, FromFrame extends string>(value: LinearMat4<ToFrame, FromFrame>): LinearMat4<FromFrame, ToFrame>;
267
+ /**
268
+ * Composes two linear transforms in chain order.
269
+ *
270
+ * `composeMat4(outer, inner)` returns `outer * inner`, so `inner` is applied
271
+ * first.
272
+ *
273
+ * @param outer Outer transform.
274
+ * @param inner Inner transform.
275
+ * @returns Composed transform.
276
+ */
277
+ export declare function composeMat4<ToFrame extends string, ViaFrame extends string, FromFrame extends string>(outer: LinearMat4<ToFrame, ViaFrame>, inner: LinearMat4<NoInfer<ViaFrame>, FromFrame>): LinearMat4<ToFrame, FromFrame>;
278
+ /**
279
+ * Composes affine outer with linear inner in chain order.
280
+ *
281
+ * `composeMat4(outer, inner)` returns `outer * inner`, so `inner` is applied
282
+ * first.
283
+ *
284
+ * @param outer Outer transform.
285
+ * @param inner Inner transform.
286
+ * @returns Composed transform.
287
+ */
288
+ export declare function composeMat4<ToFrame extends string, ViaFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(outer: Mat4<ToFrame, ViaFrame, TranslationUnit>, inner: LinearMat4<NoInfer<ViaFrame>, FromFrame>): Mat4<ToFrame, FromFrame, TranslationUnit>;
289
+ /**
290
+ * Composes linear outer with affine inner in chain order.
291
+ *
292
+ * `composeMat4(outer, inner)` returns `outer * inner`, so `inner` is applied
293
+ * first.
294
+ *
295
+ * @param outer Outer transform.
296
+ * @param inner Inner transform.
297
+ * @returns Composed transform.
298
+ */
299
+ export declare function composeMat4<ToFrame extends string, ViaFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(outer: LinearMat4<ToFrame, ViaFrame>, inner: Mat4<NoInfer<ViaFrame>, FromFrame, TranslationUnit>): Mat4<ToFrame, FromFrame, TranslationUnit>;
300
+ /**
301
+ * Composes affine transforms with matching translation units in chain order.
302
+ *
303
+ * `composeMat4(outer, inner)` returns `outer * inner`, so `inner` is applied
304
+ * first.
305
+ *
306
+ * @param outer Outer transform.
307
+ * @param inner Inner transform.
308
+ * @returns Composed transform.
309
+ */
310
+ export declare function composeMat4<ToFrame extends string, ViaFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(outer: Mat4<ToFrame, ViaFrame, TranslationUnit>, inner: Mat4<NoInfer<ViaFrame>, FromFrame, NoInfer<TranslationUnit>>): Mat4<ToFrame, FromFrame, TranslationUnit>;
311
+ /**
312
+ * Inverts a linear rigid matrix while preserving linear typing.
313
+ *
314
+ * @param value Input linear matrix.
315
+ * @returns Inverse matrix with swapped frame direction.
316
+ */
317
+ export declare function invertRigidMat4Unsafe<ToFrame extends string, FromFrame extends string>(value: LinearMat4<ToFrame, FromFrame>): LinearMat4<FromFrame, ToFrame>;
318
+ /**
319
+ * Inverts a rigid affine matrix without validation.
320
+ *
321
+ * @param value Input affine matrix.
322
+ * @returns Inverse matrix with swapped frame direction.
323
+ */
324
+ export declare function invertRigidMat4Unsafe<ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(value: Mat4<ToFrame, FromFrame, TranslationUnit>): Mat4<FromFrame, ToFrame, TranslationUnit>;
325
+ /**
326
+ * Inverts a linear rigid matrix while preserving linear typing.
327
+ *
328
+ * @param value Input linear matrix.
329
+ * @returns Inverse matrix with swapped frame direction.
330
+ */
331
+ export declare function invertRigidMat4<ToFrame extends string, FromFrame extends string>(value: LinearMat4<ToFrame, FromFrame>): LinearMat4<FromFrame, ToFrame>;
332
+ /**
333
+ * Inverts a rigid affine matrix.
334
+ *
335
+ * Throws when matrix fails rigid transform validation.
336
+ *
337
+ * @param value Input affine matrix.
338
+ * @returns Inverse matrix with swapped frame direction.
339
+ * @throws {Error} When `value` is not a rigid transform.
340
+ */
341
+ export declare function invertRigidMat4<ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(value: Mat4<ToFrame, FromFrame, TranslationUnit>): Mat4<FromFrame, ToFrame, TranslationUnit>;
342
+ /**
343
+ * Builds a normal matrix (inverse-transpose of upper-left 3x3 linear part).
344
+ *
345
+ * Unsafe variant: performs no singularity guard.
346
+ * Degenerate inputs can yield `NaN`/`Infinity`.
347
+ *
348
+ * @param value Input affine transform.
349
+ * @returns Normal matrix as a linear transform.
350
+ */
351
+ export declare const normalMatrixFromMat4Unsafe: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(value: Mat4<ToFrame, FromFrame, TranslationUnit>) => LinearMat4<ToFrame, FromFrame>;
352
+ /**
353
+ * Builds a normal matrix (inverse-transpose of upper-left 3x3 linear part).
354
+ *
355
+ * Throws when the linear part is singular.
356
+ *
357
+ * @param value Input affine transform.
358
+ * @returns Normal matrix as a linear transform.
359
+ * @throws {Error} When the upper-left 3x3 block is singular.
360
+ */
361
+ export declare const normalMatrixFromMat4: <ToFrame extends string, FromFrame extends string, TranslationUnit extends UnitExpr>(value: Mat4<ToFrame, FromFrame, TranslationUnit>) => LinearMat4<ToFrame, FromFrame>;
362
+ /**
363
+ * Transforms a point with affine matrix and matching translation unit.
364
+ *
365
+ * Includes translation.
366
+ *
367
+ * @param matrix Affine transform.
368
+ * @param point Input point.
369
+ * @returns Transformed point.
370
+ */
371
+ export declare function transformPoint3<TranslationUnit extends UnitExpr, ToFrame extends string, FromFrame extends string>(matrix: Mat4<ToFrame, FromFrame, TranslationUnit>, point: Point3<NoInfer<TranslationUnit>, NoInfer<FromFrame>>): Point3<TranslationUnit, ToFrame>;
372
+ /**
373
+ * Transforms a point with linear matrix.
374
+ *
375
+ * Unit can be any expression because translation is absent.
376
+ *
377
+ * @param matrix Linear transform.
378
+ * @param point Input point.
379
+ * @returns Transformed point.
380
+ */
381
+ export declare function transformPoint3<Unit extends UnitExpr, ToFrame extends string, FromFrame extends string>(matrix: LinearMat4<ToFrame, FromFrame>, point: Point3<Unit, NoInfer<FromFrame>>): Point3<Unit, ToFrame>;
382
+ /**
383
+ * Transforms a direction vector using only matrix linear part.
384
+ *
385
+ * Ignores translation component.
386
+ *
387
+ * @param matrix Transform matrix.
388
+ * @param direction Input displacement direction.
389
+ * @returns Transformed displacement direction.
390
+ */
391
+ export declare function transformDirection3<Unit extends UnitExpr, MatrixTranslationUnit extends UnitExpr, ToFrame extends string, FromFrame extends string>(matrix: Mat4<ToFrame, FromFrame, MatrixTranslationUnit>, direction: Delta3<Unit, NoInfer<FromFrame>>): Delta3<Unit, ToFrame>;
392
+ /**
393
+ * Transforms a unitless direction while preserving direction typing.
394
+ *
395
+ * @param matrix Transform matrix.
396
+ * @param direction Input unitless direction.
397
+ * @returns Transformed unitless direction.
398
+ */
399
+ export declare function transformDirection3<MatrixTranslationUnit extends UnitExpr, ToFrame extends string, FromFrame extends string>(matrix: Mat4<ToFrame, FromFrame, MatrixTranslationUnit>, direction: Dir3<NoInfer<FromFrame>>): Dir3<ToFrame>;
400
+ //# sourceMappingURL=matrix4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix4.d.ts","sourceRoot":"","sources":["../../../src/src/geometry3d/matrix4.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EACV,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,MAAM,EACN,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AAgFpB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,GACrB,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,oBAAoB,OAAO,CAAC,eAAe,CAAC,EAC5C,QAAQ,SAAS,MAAM,EAAE,KACxB,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAK1C,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,IAAI,GACf,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,oBAAoB,OAAO,CAAC,eAAe,CAAC,EAC5C,QAAQ,SAAS,MAAM,EAAE,KACxB,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAU1C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,SAAS,MAAM,EAC/C,UAAU,QAAQ,CAAC,KAAK,CAAC,EACzB,sBAAsB,OAAO,CAAC,aAAa,CAAC,KAC3C,UAAU,CAAC,KAAK,EAAE,KAAK,CA2BzB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,eAAe,SAAS,QAAQ,EAChC,KAAK,SAAS,MAAM,EAEpB,UAAU,QAAQ,CAAC,KAAK,CAAC,EACzB,aAAa,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KACnD,IAAI,CACL,KAAK,EACL,KAAK,EACL,eAAe,CAmBZ,CAAC;AAEN;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS,MAAM,EAChD,UAAU,QAAQ,CAAC,KAAK,CAAC,EACzB,sBAAsB,OAAO,CAAC,aAAa,CAAC,EAC5C,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,QAAQ,MAAM,KACb,UAAU,CAAC,KAAK,EAAE,KAAK,CAuBzB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GACnC,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EAExB,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,sBAAsB,OAAO,CAAC,aAAa,CAAC,EAC5C,UAAU,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,KACzD,UAAU,CAAC,OAAO,EAAE,SAAS,CAqC/B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EAExB,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,sBAAsB,OAAO,CAAC,aAAa,CAAC,EAC5C,UAAU,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,KACzD,UAAU,CAAC,OAAO,EAAE,SAAS,CAQ/B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,UAAU,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAC1D,aAAa,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,KACrD,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CA6B1C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,aAAa,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,EACtD,UAAU,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAC9B,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAsC1C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,aAAa,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,EACtD,UAAU,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAC9B,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAS1C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,oBAAoB,OAAO,CAAC,eAAe,CAAC,KAC3C,CACD,WAAW,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,EACtD,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAC1D,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAC5B,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAsF5C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,QAAQ,EAE1B,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,qBAAqB,MAAM,EAC3B,QAAQ,MAAM,EACd,MAAM,QAAQ,CAAC,SAAS,CAAC,EACzB,KAAK,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAChC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAyB9C,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,QAAQ,EAE1B,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,qBAAqB,MAAM,EAC3B,QAAQ,MAAM,EACd,MAAM,QAAQ,CAAC,SAAS,CAAC,EACzB,KAAK,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAChC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAsB9C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,QAAQ,EAE1B,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,MAAM,QAAQ,CAAC,SAAS,CAAC,EACzB,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EACnC,QAAQ,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EACpC,KAAK,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EACjC,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAClC,KAAK,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAChC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CA0B9C,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,SAAS,GACpB,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,QAAQ,EAE1B,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,MAAM,QAAQ,CAAC,SAAS,CAAC,EACzB,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EACnC,QAAQ,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EACpC,KAAK,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EACjC,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAClC,KAAK,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAChC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAwB9C,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,QAAQ,EAE1B,YAAY,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,EACzD,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,KACpD,MAAM,CAAC,aAAa,EAAE,OAAO,CA4B/B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,SAAS,SAAS,QAAQ,EAE1B,YAAY,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,EACzD,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,KACpD,MAAM,CAAC,aAAa,EAAE,OAAO,CAW/B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,gBAAgB,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAC3D,mBAAmB,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAC9D,aAAa,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KACpC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CA6D1C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,GACrB,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,YAAY,QAAQ,CAAC,OAAO,CAAC,EAC7B,cAAc,QAAQ,CAAC,SAAS,CAAC,EACjC,gBAAgB,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAC3D,mBAAmB,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAC9D,aAAa,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KACpC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAuC1C,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,GAC/C,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,EAC5E,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,GACpC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAuDlC;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,MAAM,EACvB,SAAS,SAAS,MAAM,EAExB,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EACpC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,GAC9C,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAElC;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,MAAM,EACvB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAC/C,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,GAC9C,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAE7C;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,MAAM,EACvB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EACpC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,GACzD,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAE7C;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,SAAS,MAAM,EACtB,QAAQ,SAAS,MAAM,EACvB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAC/C,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,GAClE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AA2F7C;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EAExB,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,GACpC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAElC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,GAC/C,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AA+C7C;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EAExB,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,GACpC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAElC;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,GAC/C,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AAa7C;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,GACrC,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,KAC/C,UAAU,CAAC,OAAO,EAAE,SAAS,CA2C/B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EACxB,eAAe,SAAS,QAAQ,EAEhC,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,KAC/C,UAAU,CAAC,OAAO,EAAE,SAAS,CAqB/B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,eAAe,SAAS,QAAQ,EAChC,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EAExB,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,EACjD,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,GAC1D,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAEpC;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,IAAI,SAAS,QAAQ,EACrB,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EAExB,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,EACtC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,GACtC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAkCzB;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,SAAS,QAAQ,EACrB,qBAAqB,SAAS,QAAQ,EACtC,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EAExB,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,CAAC,EACvD,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,GAC1C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAEzB;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,qBAAqB,SAAS,QAAQ,EACtC,OAAO,SAAS,MAAM,EACtB,SAAS,SAAS,MAAM,EAExB,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,CAAC,EACvD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAClC,IAAI,CAAC,OAAO,CAAC,CAAC"}