bimatter-viewer-react 0.11.12 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{IFCLoader-5oUOfYbb.js → IFCLoader-CIjIkMG4.js} +59 -34
- package/lib/Loaders/BmtLoader.d.ts +40 -0
- package/lib/Loaders/IFCLoader/IFCLoader.d.ts +3 -0
- package/lib/Model.d.ts +5 -4
- package/lib/SelectableMesh.d.ts +7 -2
- package/lib/ViewerComponents/ViewerScene.d.ts +2 -2
- package/lib/WebGpuSelectableMesh.d.ts +1 -1
- package/lib/assets/BMTWorker-B5pcLJyM.js +1 -0
- package/lib/assets/{BmtConverterWorker-DpSn1XL3.js → BmtConverterWorker-D1SGs9qm.js} +1 -1
- package/lib/assets/BvhWorker-BIP1xLJx.js +1 -0
- package/lib/assets/IFCWorker-DeYf8nwm.js +6 -0
- package/lib/index.js +3061 -2534
- package/lib/sharedMeshMaterials.d.ts +24 -0
- package/lib/utils/ClippingUtils/ClippingUtils.d.ts +6 -0
- package/lib/utils/GeometryUtils/meshBoundsTree.d.ts +23 -0
- package/lib/workers/BMTWorker.d.ts +2 -0
- package/lib/workers/BvhWorker.d.ts +12 -0
- package/lib/workers/BvhWorkerPool.d.ts +16 -0
- package/lib/workers/IFCWorker.d.ts +2 -0
- package/lib/workers/ProgressUtils.d.ts +4 -0
- package/lib/workers/WorkerErrors.d.ts +6 -0
- package/lib/workers/WorkerGeometrySplit.d.ts +23 -0
- package/lib/workers/WorkerMeshBvh.d.ts +2 -2
- package/package.json +1 -1
- package/lib/assets/BMTWorker-B6cln5F6.js +0 -1
- package/lib/assets/IFCWorker-CzO3G2wD.js +0 -6
|
@@ -192028,13 +192028,24 @@ var C_ = class {
|
|
|
192028
192028
|
z: -(this.getScaledCoordinate(c, 1) ?? 0)
|
|
192029
192029
|
}, d.points = e, d;
|
|
192030
192030
|
}
|
|
192031
|
-
}, w_ = 1e-5, T_ =
|
|
192031
|
+
}, w_ = 1e-5, T_ = 262144, E_ = 250, D_ = 32768, O_ = 4096;
|
|
192032
|
+
function k_(e, t) {
|
|
192033
|
+
if (t <= e.length) return e;
|
|
192034
|
+
let n = new Float32Array(Math.max(t, e.length * 2));
|
|
192035
|
+
return n.set(e), n;
|
|
192036
|
+
}
|
|
192037
|
+
function A_(e, t) {
|
|
192038
|
+
if (t <= e.length) return e;
|
|
192039
|
+
let n = new Uint32Array(Math.max(t, e.length * 2));
|
|
192040
|
+
return n.set(e), n;
|
|
192041
|
+
}
|
|
192042
|
+
var j_ = {
|
|
192032
192043
|
b: .55,
|
|
192033
192044
|
g: .55,
|
|
192034
192045
|
name: -1,
|
|
192035
192046
|
opacity: .18,
|
|
192036
192047
|
r: .55
|
|
192037
|
-
},
|
|
192048
|
+
}, M_ = class {
|
|
192038
192049
|
useIfcElemetAssembly = !1;
|
|
192039
192050
|
useIfcColors = !1;
|
|
192040
192051
|
useIfcSpace = !0;
|
|
@@ -192132,7 +192143,7 @@ var C_ = class {
|
|
|
192132
192143
|
}
|
|
192133
192144
|
if (console.log("spend to read ifc file: ", Date.now() - r, "ms"), a === -1) return console.error("Model loading error"), !1;
|
|
192134
192145
|
try {
|
|
192135
|
-
let e = this.coordinationMatrix?.toArray(), t = new
|
|
192146
|
+
let e = this.coordinationMatrix?.toArray(), t = new N_(this.parser, a, {
|
|
192136
192147
|
geometryTransformation: e,
|
|
192137
192148
|
maxGeometriesPerMesh: this.chunk,
|
|
192138
192149
|
maxMeshBytes: this.maxMeshBytes,
|
|
@@ -192264,7 +192275,7 @@ var C_ = class {
|
|
|
192264
192275
|
}
|
|
192265
192276
|
};
|
|
192266
192277
|
}
|
|
192267
|
-
},
|
|
192278
|
+
}, N_ = class {
|
|
192268
192279
|
materials = {};
|
|
192269
192280
|
elementsAssembly = null;
|
|
192270
192281
|
parser;
|
|
@@ -192283,7 +192294,7 @@ var C_ = class {
|
|
|
192283
192294
|
let i = this.planGeometryChunks();
|
|
192284
192295
|
n && this.planGeometryChunks(i, {
|
|
192285
192296
|
isIfcSpace: !0,
|
|
192286
|
-
material:
|
|
192297
|
+
material: j_,
|
|
192287
192298
|
types: [Lc]
|
|
192288
192299
|
}), this.applyGeometryTransformation();
|
|
192289
192300
|
let a = this.createChunkBuilders(i), o = /* @__PURE__ */ new Map(), s = {
|
|
@@ -192293,7 +192304,7 @@ var C_ = class {
|
|
|
192293
192304
|
};
|
|
192294
192305
|
return this.streamGeometryChunks(a, o, e, {}, s), n && this.streamGeometryChunks(a, o, e, {
|
|
192295
192306
|
isIfcSpace: !0,
|
|
192296
|
-
material:
|
|
192307
|
+
material: j_,
|
|
192297
192308
|
types: [Lc]
|
|
192298
192309
|
}, s), this.createModelDataFromChunks(a, r);
|
|
192299
192310
|
}
|
|
@@ -192302,14 +192313,14 @@ var C_ = class {
|
|
|
192302
192313
|
let r = /* @__PURE__ */ new Map(), i = {
|
|
192303
192314
|
callbacks: n,
|
|
192304
192315
|
emittedChunks: 0,
|
|
192316
|
+
lastFlushTime: Date.now(),
|
|
192305
192317
|
nextGeometryID: 0,
|
|
192306
|
-
pendingGeometryCount: 0,
|
|
192307
192318
|
processedGeometryCount: 0,
|
|
192308
192319
|
totalGeometries: this.getGeometryProgressTotal()
|
|
192309
192320
|
};
|
|
192310
192321
|
return this.streamDynamicGeometryChunks(r, e, {}, i), t && this.streamDynamicGeometryChunks(r, e, {
|
|
192311
192322
|
isIfcSpace: !0,
|
|
192312
|
-
material:
|
|
192323
|
+
material: j_,
|
|
192313
192324
|
types: [Lc]
|
|
192314
192325
|
}, i), this.flushDynamicGeometryChunks(r, i), {
|
|
192315
192326
|
data: {},
|
|
@@ -192325,11 +192336,13 @@ var C_ = class {
|
|
|
192325
192336
|
let s = a.get(o), c = this.getPlacedGeometryPayload(s, i.expressID, n.material);
|
|
192326
192337
|
if (!c) continue;
|
|
192327
192338
|
let l = this.getDynamicChunkBuilder(e, c, !!n.isIfcSpace, r);
|
|
192328
|
-
this.writeGeometryPayloadToDynamicBuilder(l, c), t.add(c.elementId), r.
|
|
192339
|
+
this.writeGeometryPayloadToDynamicBuilder(l, c), t.add(c.elementId), r.processedGeometryCount++, r.callbacks.onGeometryProgress?.({
|
|
192329
192340
|
emittedChunks: r.emittedChunks,
|
|
192330
192341
|
processed: r.processedGeometryCount,
|
|
192331
192342
|
total: r.totalGeometries
|
|
192332
|
-
})
|
|
192343
|
+
});
|
|
192344
|
+
let u = Date.now();
|
|
192345
|
+
u - r.lastFlushTime >= E_ && (r.lastFlushTime = u, this.flushLargeDynamicGeometryChunks(e, r));
|
|
192333
192346
|
}
|
|
192334
192347
|
} finally {
|
|
192335
192348
|
this.deleteFlatMesh(i);
|
|
@@ -192338,58 +192351,70 @@ var C_ = class {
|
|
|
192338
192351
|
}
|
|
192339
192352
|
getDynamicChunkBuilder(e, t, n, r) {
|
|
192340
192353
|
let i = e.get(t.materialKey);
|
|
192341
|
-
if (i && this.
|
|
192354
|
+
if (i && this.canFitInStreamingChunk(i, t)) return i;
|
|
192342
192355
|
i && this.emitDynamicGeometryChunk(i, r);
|
|
192343
192356
|
let a = {
|
|
192344
192357
|
...t.material,
|
|
192345
192358
|
name: r.nextGeometryID
|
|
192346
192359
|
};
|
|
192347
192360
|
r.nextGeometryID++;
|
|
192348
|
-
let o = {
|
|
192361
|
+
let o = Math.max(O_, t.vertexCount), s = {
|
|
192349
192362
|
bytes: 0,
|
|
192350
192363
|
geometryCount: 0,
|
|
192351
192364
|
geometryID: a.name,
|
|
192352
|
-
ids:
|
|
192365
|
+
ids: new Uint32Array(o),
|
|
192353
192366
|
indexCount: 0,
|
|
192354
|
-
indices:
|
|
192367
|
+
indices: new Uint32Array(Math.max(o * 2, t.indexCount)),
|
|
192355
192368
|
isIfcSpace: n,
|
|
192356
192369
|
material: a,
|
|
192357
192370
|
materialKey: t.materialKey,
|
|
192358
|
-
normals:
|
|
192359
|
-
positions:
|
|
192371
|
+
normals: new Float32Array(o * 3),
|
|
192372
|
+
positions: new Float32Array(o * 3),
|
|
192360
192373
|
vertexCount: 0
|
|
192361
192374
|
};
|
|
192362
|
-
return e.set(t.materialKey,
|
|
192375
|
+
return e.set(t.materialKey, s), s;
|
|
192363
192376
|
}
|
|
192364
192377
|
writeGeometryPayloadToDynamicBuilder(e, t) {
|
|
192365
|
-
let n = this.meshMatrix.fromArray(t.matrix), r = n.elements, i = this.normalMatrix.getNormalMatrix(n).elements, a = e.vertexCount;
|
|
192366
|
-
for (let
|
|
192367
|
-
let
|
|
192368
|
-
|
|
192369
|
-
let
|
|
192370
|
-
|
|
192371
|
-
}
|
|
192372
|
-
|
|
192373
|
-
|
|
192378
|
+
let n = this.meshMatrix.fromArray(t.matrix), r = n.elements, i = this.normalMatrix.getNormalMatrix(n).elements, a = e.vertexCount, o = a + t.vertexCount, s = e.indexCount, { ids: c, normals: l, positions: u } = this.reserveDynamicBuilder(e, o, s + t.indexCount), d = a;
|
|
192379
|
+
for (let e = 0; e < t.vertexData.length; e += 6, d++) {
|
|
192380
|
+
let n = this.getFiniteNumber(t.vertexData[e]), a = this.getFiniteNumber(t.vertexData[e + 1]), o = this.getFiniteNumber(t.vertexData[e + 2]), s = this.getFiniteNumber(t.vertexData[e + 3]), f = this.getFiniteNumber(t.vertexData[e + 4]), p = this.getFiniteNumber(t.vertexData[e + 5]), m = d * 3;
|
|
192381
|
+
u[m] = r[0] * n + r[4] * a + r[8] * o + r[12], u[m + 1] = r[1] * n + r[5] * a + r[9] * o + r[13], u[m + 2] = r[2] * n + r[6] * a + r[10] * o + r[14];
|
|
192382
|
+
let ee = i[0] * s + i[3] * f + i[6] * p, te = i[1] * s + i[4] * f + i[7] * p, ne = i[2] * s + i[5] * f + i[8] * p, re = Math.hypot(ee, te, ne);
|
|
192383
|
+
re > 0 && (ee /= re, te /= re, ne /= re), l[m] = ee, l[m + 1] = te, l[m + 2] = ne, c[d] = t.elementId;
|
|
192384
|
+
}
|
|
192385
|
+
let { indices: f } = e;
|
|
192386
|
+
if (t.indexData.length) for (let e = 0; e < t.indexData.length; e++) f[s + e] = t.indexData[e] + a;
|
|
192387
|
+
else for (let e = 0; e < t.vertexCount; e++) f[s + e] = a + e;
|
|
192374
192388
|
e.bytes += t.bytes, e.geometryCount++, e.indexCount += t.indexCount, e.vertexCount += t.vertexCount;
|
|
192375
192389
|
}
|
|
192390
|
+
reserveDynamicBuilder(e, t, n) {
|
|
192391
|
+
return e.positions = k_(e.positions, t * 3), e.normals = k_(e.normals, t * 3), e.ids = A_(e.ids, t), e.indices = A_(e.indices, n), e;
|
|
192392
|
+
}
|
|
192393
|
+
canFitInStreamingChunk(e, t) {
|
|
192394
|
+
return e.geometryCount > 0 && e.vertexCount + t.vertexCount > T_ ? !1 : this.canFitInChunk(e, t);
|
|
192395
|
+
}
|
|
192396
|
+
flushLargeDynamicGeometryChunks(e, t) {
|
|
192397
|
+
e.forEach((n, r) => {
|
|
192398
|
+
n.vertexCount < D_ || (this.emitDynamicGeometryChunk(n, t), e.delete(r));
|
|
192399
|
+
});
|
|
192400
|
+
}
|
|
192376
192401
|
flushDynamicGeometryChunks(e, t) {
|
|
192377
192402
|
e.forEach((e) => {
|
|
192378
192403
|
this.emitDynamicGeometryChunk(e, t);
|
|
192379
|
-
}), e.clear()
|
|
192404
|
+
}), e.clear();
|
|
192380
192405
|
}
|
|
192381
192406
|
emitDynamicGeometryChunk(e, t) {
|
|
192382
192407
|
if (!e.geometryCount) return;
|
|
192383
|
-
let n = t.emittedChunks;
|
|
192408
|
+
let n = t.emittedChunks, { indexCount: r, vertexCount: i } = e;
|
|
192384
192409
|
t.emittedChunks++, t.callbacks.onGeometryChunk?.({
|
|
192385
192410
|
chunkIndex: n,
|
|
192386
192411
|
geometry: this.optimizeIfcGeometryData({
|
|
192387
|
-
ids:
|
|
192388
|
-
ind:
|
|
192412
|
+
ids: e.ids.slice(0, i),
|
|
192413
|
+
ind: e.indices.slice(0, r),
|
|
192389
192414
|
isIfcSpace: e.isIfcSpace || void 0,
|
|
192390
192415
|
mat: e.material,
|
|
192391
|
-
norm:
|
|
192392
|
-
pos:
|
|
192416
|
+
norm: e.normals.slice(0, i * 3),
|
|
192417
|
+
pos: e.positions.slice(0, i * 3)
|
|
192393
192418
|
}),
|
|
192394
192419
|
geometryID: e.geometryID,
|
|
192395
192420
|
isIfcSpace: e.isIfcSpace,
|
|
@@ -192398,7 +192423,7 @@ var C_ = class {
|
|
|
192398
192423
|
emittedChunks: t.emittedChunks,
|
|
192399
192424
|
processed: t.processedGeometryCount,
|
|
192400
192425
|
total: t.totalGeometries
|
|
192401
|
-
}), e.
|
|
192426
|
+
}), e.geometryCount = 0;
|
|
192402
192427
|
}
|
|
192403
192428
|
streamGeometryChunks(e, t, n, r, i) {
|
|
192404
192429
|
this.streamMeshes(r, (a) => {
|
|
@@ -192653,4 +192678,4 @@ var C_ = class {
|
|
|
192653
192678
|
}
|
|
192654
192679
|
};
|
|
192655
192680
|
//#endregion
|
|
192656
|
-
export {
|
|
192681
|
+
export { M_ as IFCLoader };
|
|
@@ -131,5 +131,45 @@ export declare class BMTLoader {
|
|
|
131
131
|
private getModelNameFromPath;
|
|
132
132
|
loadModel(path: string, callbacks?: BmtParseCallbacks): Promise<BmtModelData>;
|
|
133
133
|
parseBinaryFile(data: ArrayBuffer, callbacks?: BmtParseCallbacks): BmtModelData;
|
|
134
|
+
/**
|
|
135
|
+
* Incremental parser for bytes that arrive over time (e.g. a fetch
|
|
136
|
+
* stream). Geometry chunks are emitted as soon as their bytes are read.
|
|
137
|
+
*/
|
|
138
|
+
createStreamParser(callbacks?: BmtParseCallbacks, totalBytes?: number): BmtStreamParser;
|
|
139
|
+
/** @internal */
|
|
140
|
+
createParseState(streamingCoordinationMatrix?: string): BmtParseState;
|
|
141
|
+
/** @internal */
|
|
142
|
+
parseChunk(state: BmtParseState, type: number, data: Uint8Array, callbacks: BmtParseCallbacks, loadedBytes: number, totalBytes: number): void;
|
|
143
|
+
/** @internal */
|
|
144
|
+
createModelData(state: BmtParseState): BmtModelData;
|
|
145
|
+
private parseGeometry;
|
|
146
|
+
}
|
|
147
|
+
type BmtParseState = {
|
|
148
|
+
curMatrix: string;
|
|
149
|
+
deferredChunks: BmtGeometryChunkData[] | null;
|
|
150
|
+
emittedChunks: number;
|
|
151
|
+
firstMatrix?: string;
|
|
152
|
+
geomData: BmtModelGeometryData;
|
|
153
|
+
gridsData?: ModelGridsData;
|
|
154
|
+
propsData: BmtModelProps;
|
|
155
|
+
streamingCoordinationMatrix?: string;
|
|
156
|
+
structure: BmtModelStructure;
|
|
157
|
+
trailingMatrix?: string;
|
|
158
|
+
trueNorthAngle?: number;
|
|
159
|
+
};
|
|
160
|
+
export declare class BmtStreamParser {
|
|
161
|
+
private buffer;
|
|
162
|
+
private headerRead;
|
|
163
|
+
private length;
|
|
164
|
+
private offset;
|
|
165
|
+
private readonly state;
|
|
166
|
+
private readonly loader;
|
|
167
|
+
private readonly callbacks;
|
|
168
|
+
private readonly totalBytes;
|
|
169
|
+
constructor(loader: BMTLoader, callbacks: BmtParseCallbacks, totalBytes?: number);
|
|
170
|
+
push(bytes: Uint8Array): void;
|
|
171
|
+
finish(): BmtModelData;
|
|
172
|
+
private ensureCapacity;
|
|
173
|
+
private parseAvailable;
|
|
134
174
|
}
|
|
135
175
|
export {};
|
|
@@ -97,6 +97,9 @@ export declare class IfcParser {
|
|
|
97
97
|
private streamDynamicGeometryChunks;
|
|
98
98
|
private getDynamicChunkBuilder;
|
|
99
99
|
private writeGeometryPayloadToDynamicBuilder;
|
|
100
|
+
private reserveDynamicBuilder;
|
|
101
|
+
private canFitInStreamingChunk;
|
|
102
|
+
private flushLargeDynamicGeometryChunks;
|
|
100
103
|
private flushDynamicGeometryChunks;
|
|
101
104
|
private emitDynamicGeometryChunk;
|
|
102
105
|
private streamGeometryChunks;
|
package/lib/Model.d.ts
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import type { BmtModelData } from "./Loaders/BmtLoader";
|
|
2
|
-
import { Matrix4, type DataTexture } from "three";
|
|
2
|
+
import { Matrix4, type DataTexture, type Plane } from "three";
|
|
3
3
|
import type { ViewerMaterialMode } from "./types";
|
|
4
4
|
type ModelProps = {
|
|
5
5
|
colorPaletteTexture: DataTexture;
|
|
6
6
|
coordinationMatrix?: Matrix4 | null;
|
|
7
7
|
modelID: number;
|
|
8
8
|
data: BmtModelData;
|
|
9
|
+
getClippingPlanes?: () => Plane[];
|
|
9
10
|
loadGeneration: number;
|
|
10
11
|
materialMode?: ViewerMaterialMode;
|
|
11
|
-
onUploadComplete?: (uploadedItemCount: number) => void;
|
|
12
|
-
onUploadProgress?: (uploadedItemCount: number, totalItemCount: number) => void;
|
|
12
|
+
onUploadComplete?: (modelID: number, uploadedItemCount: number) => void;
|
|
13
|
+
onUploadProgress?: (modelID: number, uploadedItemCount: number, totalItemCount: number) => void;
|
|
13
14
|
trueNorthEnabled?: boolean;
|
|
14
15
|
useWebGPU?: boolean;
|
|
15
16
|
};
|
|
16
17
|
export declare function parseModelMatrix(matrix?: string): Matrix4 | null;
|
|
17
18
|
export declare function getModelCoordinationMatrix(data: BmtModelData): Matrix4 | null;
|
|
18
19
|
export declare function getModelCoordinationMatrixSource(data: BmtModelData): string | undefined;
|
|
19
|
-
declare function Model({ colorPaletteTexture, coordinationMatrix, modelID, data, loadGeneration, materialMode: materialModeOverride, onUploadComplete, onUploadProgress, trueNorthEnabled, useWebGPU, }: ModelProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare function Model({ colorPaletteTexture, coordinationMatrix, modelID, data, getClippingPlanes, loadGeneration, materialMode: materialModeOverride, onUploadComplete, onUploadProgress, trueNorthEnabled, useWebGPU, }: ModelProps): import("react/jsx-runtime").JSX.Element;
|
|
20
21
|
declare const _default: import("react").MemoExoticComponent<typeof Model>;
|
|
21
22
|
export default _default;
|
package/lib/SelectableMesh.d.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { Matrix4, MeshBasicMaterial, MeshLambertMaterial, type ColorRepresentation, type DataTexture, type Material } from "three";
|
|
2
|
+
import { Matrix4, MeshBasicMaterial, MeshLambertMaterial, type ColorRepresentation, type DataTexture, type Material, type Plane } from "three";
|
|
3
3
|
import type { BmtGeomData, BmtMaterialData } from "./Loaders/BmtLoader";
|
|
4
4
|
import type { ViewerMaterialMode } from "./types";
|
|
5
|
+
import { type SharedMeshMaterials } from "./sharedMeshMaterials";
|
|
5
6
|
export type SelectableMeshProps = {
|
|
6
7
|
colorPaletteTexture: DataTexture;
|
|
7
8
|
data: BmtGeomData;
|
|
9
|
+
/** Current section planes, applied before the mesh is first rendered. */
|
|
10
|
+
getClippingPlanes?: () => Plane[];
|
|
8
11
|
isIfcSpace?: boolean;
|
|
9
12
|
material: BmtMaterialData;
|
|
13
|
+
/** Model-wide cache; without it the mesh owns its material. */
|
|
14
|
+
materialCache?: SharedMeshMaterials;
|
|
10
15
|
materialMode?: ViewerMaterialMode;
|
|
11
16
|
meshMatrix: Matrix4;
|
|
12
17
|
onReady?: (readyKey: string) => void;
|
|
@@ -18,4 +23,4 @@ export declare function createSelectableMaterial({ colorPaletteTexture, material
|
|
|
18
23
|
preselectionColor: ColorRepresentation;
|
|
19
24
|
}): MeshBasicMaterial | MeshLambertMaterial;
|
|
20
25
|
export declare function updateSelectableMaterialPreselectionColor(material: Material, preselectionColor: ColorRepresentation): void;
|
|
21
|
-
export declare const SelectableMesh: React.MemoExoticComponent<({ colorPaletteTexture, material, materialMode, data, isIfcSpace, meshMatrix, onReady, readyKey, useDoubleSideMaterial, }: SelectableMeshProps) => import("react/jsx-runtime").JSX.Element>;
|
|
26
|
+
export declare const SelectableMesh: React.MemoExoticComponent<({ colorPaletteTexture, material, materialCache, materialMode, data, getClippingPlanes, isIfcSpace, meshMatrix, onReady, readyKey, useDoubleSideMaterial, }: SelectableMeshProps) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -5,7 +5,7 @@ import { type ViewerNotesApi } from "../utils/NotesUtils";
|
|
|
5
5
|
import { type ViewerApi, type ViewerSceneApi } from "../api/ViewerApi";
|
|
6
6
|
export type ModelsData = Record<number, BmtModelData>;
|
|
7
7
|
export type CameraDprMode = "wake" | "move" | "sleep";
|
|
8
|
-
export declare
|
|
8
|
+
export declare const ViewerScene: import("react").MemoExoticComponent<({ autoFitCamera, cameraRef, controlRef, fitToView, loadGeneration, lightRef, materialMode, modelRef, modelsData, modelsLoading, initialPlanPlane, createPlanComment, createPlanMarkupCloud, deleteAllPlanNotes, onReady, onModelsReady, onCameraDprModeChange, publicApi, invalidatePlanViews, setPlanPreselectionHandler, setPlanVisualObjectsGetter, setSceneApi, setPlanNotesModeActive, usePerformanceMoving, useWebGPU, }: {
|
|
9
9
|
autoFitCamera: boolean;
|
|
10
10
|
cameraRef: ViewerCameraRef;
|
|
11
11
|
controlRef: ViewerControlsRef;
|
|
@@ -34,4 +34,4 @@ export declare function ViewerScene({ autoFitCamera, cameraRef, controlRef, fitT
|
|
|
34
34
|
setPlanNotesModeActive: (active: boolean) => void;
|
|
35
35
|
usePerformanceMoving: boolean;
|
|
36
36
|
useWebGPU: boolean;
|
|
37
|
-
})
|
|
37
|
+
}) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -15,5 +15,5 @@ export declare function updateWebGpuSelectableMaterialColors(material: Material,
|
|
|
15
15
|
preselectionColor: ColorRepresentation;
|
|
16
16
|
selectionColor: ColorRepresentation;
|
|
17
17
|
}): void;
|
|
18
|
-
export declare const WebGpuSelectableMesh: React.MemoExoticComponent<({ colorPaletteTexture, material, materialMode, data, isIfcSpace, meshMatrix, onReady, readyKey, useDoubleSideMaterial, }: SelectableMeshProps) => import("react/jsx-runtime").JSX.Element>;
|
|
18
|
+
export declare const WebGpuSelectableMesh: React.MemoExoticComponent<({ colorPaletteTexture, material, materialCache, materialMode, data, getClippingPlanes, isIfcSpace, meshMatrix, onReady, readyKey, useDoubleSideMaterial, }: SelectableMeshProps) => import("react/jsx-runtime").JSX.Element>;
|
|
19
19
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(){function e(e){let t=e.length;for(;--t>=0;)e[t]=0}let t=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),n=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),r=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),i=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=Array(288*2);e(a);let o=Array(60);e(o);let s=Array(512);e(s);let c=Array(256);e(c);let l=Array(29);e(l);let u=Array(30);e(u);function d(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let f,p,m;function h(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}let g=e=>e<256?s[e]:s[256+(e>>>7)],_=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},v=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<<e.bi_valid&65535,_(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},y=(e,t,n)=>{v(e,n[t*2],n[t*2+1])},b=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},x=e=>{e.bi_valid===16?(_(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},S=(e,t)=>{let n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,a=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,c=t.stat_desc.max_length,l,u,d,f,p,m,h=0;for(f=0;f<=15;f++)e.bl_count[f]=0;for(n[e.heap[e.heap_max]*2+1]=0,l=e.heap_max+1;l<573;l++)u=e.heap[l],f=n[n[u*2+1]*2+1]+1,f>c&&(f=c,h++),n[u*2+1]=f,!(u>r)&&(e.bl_count[f]++,p=0,u>=s&&(p=o[u-s]),m=n[u*2],e.opt_len+=m*(f+p),a&&(e.static_len+=m*(i[u*2+1]+p)));if(h!==0){do{for(f=c-1;e.bl_count[f]===0;)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[c]--,h-=2}while(h>0);for(f=c;f!==0;f--)for(u=e.bl_count[f];u!==0;)d=e.heap[--l],!(d>r)&&(n[d*2+1]!==f&&(e.opt_len+=(f-n[d*2+1])*n[d*2],n[d*2+1]=f),u--)}},C=(e,t,n)=>{let r=Array(16),i=0,a,o;for(a=1;a<=15;a++)i=i+n[a-1]<<1,r[a]=i;for(o=0;o<=t;o++){let t=e[o*2+1];t!==0&&(e[o*2]=b(r[t]++,t))}},w=()=>{let e,i,h,g,_,v=Array(16);for(h=0,g=0;g<28;g++)for(l[g]=h,e=0;e<1<<t[g];e++)c[h++]=g;for(c[h-1]=g,_=0,g=0;g<16;g++)for(u[g]=_,e=0;e<1<<n[g];e++)s[_++]=g;for(_>>=7;g<30;g++)for(u[g]=_<<7,e=0;e<1<<n[g]-7;e++)s[256+ _++]=g;for(i=0;i<=15;i++)v[i]=0;for(e=0;e<=143;)a[e*2+1]=8,e++,v[8]++;for(;e<=255;)a[e*2+1]=9,e++,v[9]++;for(;e<=279;)a[e*2+1]=7,e++,v[7]++;for(;e<=287;)a[e*2+1]=8,e++,v[8]++;for(C(a,287,v),e=0;e<30;e++)o[e*2+1]=5,o[e*2]=b(e,5);f=new d(a,t,257,286,15),p=new d(o,n,0,30,15),m=new d([],r,0,19,7)},T=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[t*2]=0;for(t=0;t<30;t++)e.dyn_dtree[t*2]=0;for(t=0;t<19;t++)e.bl_tree[t*2]=0;e.dyn_ltree[256*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},E=e=>{e.bi_valid>8?_(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},D=(e,t,n,r)=>{let i=t*2,a=n*2;return e[i]<e[a]||e[i]===e[a]&&r[t]<=r[n]},O=(e,t,n)=>{let r=e.heap[n],i=n<<1;for(;i<=e.heap_len&&(i<e.heap_len&&D(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!D(t,r,e.heap[i],e.depth));)e.heap[n]=e.heap[i],n=i,i<<=1;e.heap[n]=r},ee=(e,r,i)=>{let a,o,s=0,d,f;if(e.sym_next!==0)do a=e.pending_buf[e.sym_buf+ s++]&255,a+=(e.pending_buf[e.sym_buf+ s++]&255)<<8,o=e.pending_buf[e.sym_buf+ s++],a===0?y(e,o,r):(d=c[o],y(e,d+256+1,r),f=t[d],f!==0&&(o-=l[d],v(e,o,f)),a--,d=g(a),y(e,d,i),f=n[d],f!==0&&(a-=u[d],v(e,a,f)));while(s<e.sym_next);y(e,256,r)},k=(e,t)=>{let n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,a=t.stat_desc.elems,o,s,c=-1,l;for(e.heap_len=0,e.heap_max=573,o=0;o<a;o++)n[o*2]===0?n[o*2+1]=0:(e.heap[++e.heap_len]=c=o,e.depth[o]=0);for(;e.heap_len<2;)l=e.heap[++e.heap_len]=c<2?++c:0,n[l*2]=1,e.depth[l]=0,e.opt_len--,i&&(e.static_len-=r[l*2+1]);for(t.max_code=c,o=e.heap_len>>1;o>=1;o--)O(e,n,o);l=a;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],O(e,n,1),s=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=s,n[l*2]=n[o*2]+n[s*2],e.depth[l]=(e.depth[o]>=e.depth[s]?e.depth[o]:e.depth[s])+1,n[o*2+1]=n[s*2+1]=l,e.heap[1]=l++,O(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],S(e,t),C(n,c,e.bl_count)},A=(e,t,n)=>{let r,i=-1,a,o=t[1],s=0,c=7,l=4;for(o===0&&(c=138,l=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)a=o,o=t[(r+1)*2+1],!(++s<c&&a===o)&&(s<l?e.bl_tree[a*2]+=s:a===0?s<=10?e.bl_tree[34]++:e.bl_tree[36]++:(a!==i&&e.bl_tree[a*2]++,e.bl_tree[32]++),s=0,i=a,o===0?(c=138,l=3):a===o?(c=6,l=3):(c=7,l=4))},te=(e,t,n)=>{let r,i=-1,a,o=t[1],s=0,c=7,l=4;for(o===0&&(c=138,l=3),r=0;r<=n;r++)if(a=o,o=t[(r+1)*2+1],!(++s<c&&a===o)){if(s<l)do y(e,a,e.bl_tree);while(--s!==0);else a===0?s<=10?(y(e,17,e.bl_tree),v(e,s-3,3)):(y(e,18,e.bl_tree),v(e,s-11,7)):(a!==i&&(y(e,a,e.bl_tree),s--),y(e,16,e.bl_tree),v(e,s-3,2));s=0,i=a,o===0?(c=138,l=3):a===o?(c=6,l=3):(c=7,l=4)}},ne=e=>{let t;for(A(e,e.dyn_ltree,e.l_desc.max_code),A(e,e.dyn_dtree,e.d_desc.max_code),k(e,e.bl_desc),t=18;t>=3&&e.bl_tree[i[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},re=(e,t,n,r)=>{let a;for(v(e,t-257,5),v(e,n-1,5),v(e,r-4,4),a=0;a<r;a++)v(e,e.bl_tree[i[a]*2+1],3);te(e,e.dyn_ltree,t-1),te(e,e.dyn_dtree,n-1)},ie=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return 0;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return 1;for(n=32;n<256;n++)if(e.dyn_ltree[n*2]!==0)return 1;return 0},ae=!1,oe=e=>{ae||=(w(),!0),e.l_desc=new h(e.dyn_ltree,f),e.d_desc=new h(e.dyn_dtree,p),e.bl_desc=new h(e.bl_tree,m),e.bi_buf=0,e.bi_valid=0,T(e)},se=(e,t,n,r)=>{v(e,0+ +!!r,3),E(e),_(e,n),_(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n};var ce={_tr_init:oe,_tr_stored_block:se,_tr_flush_block:(e,t,n,r)=>{let i,s,c=0;e.level>0?(e.strm.data_type===2&&(e.strm.data_type=ie(e)),k(e,e.l_desc),k(e,e.d_desc),c=ne(e),i=e.opt_len+3+7>>>3,s=e.static_len+3+7>>>3,s<=i&&(i=s)):i=s=n+5,n+4<=i&&t!==-1?se(e,t,n,r):e.strategy===4||s===i?(v(e,2+ +!!r,3),ee(e,a,o)):(v(e,4+ +!!r,3),re(e,e.l_desc.max_code+1,e.d_desc.max_code+1,c+1),ee(e,e.dyn_ltree,e.dyn_dtree)),T(e),r&&E(e)},_tr_tally:(e,t,n)=>(e.pending_buf[e.sym_buf+ e.sym_next++]=t,e.pending_buf[e.sym_buf+ e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+ e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(c[n]+256+1)*2]++,e.dyn_dtree[g(t)*2]++),e.sym_next===e.sym_end),_tr_align:e=>{v(e,2,3),y(e,256,a),x(e)}},le=(e,t,n,r)=>{let i=e&65535|0,a=e>>>16&65535|0,o=0;for(;n!==0;){o=n>2e3?2e3:n,n-=o;do i=i+t[r++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0};let ue=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t})());var j=(e,t,n,r)=>{let i=ue,a=r+n;e^=-1;for(let n=r;n<a;n++)e=e>>>8^i[(e^t[n])&255];return e^-1},M={2:`need dictionary`,1:`stream end`,0:``,"-1":`file error`,"-2":`stream error`,"-3":`data error`,"-4":`insufficient memory`,"-5":`buffer error`,"-6":`incompatible version`},N={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};let{_tr_init:de,_tr_stored_block:fe,_tr_flush_block:pe,_tr_tally:P,_tr_align:me}=ce,{Z_NO_FLUSH:F,Z_PARTIAL_FLUSH:he,Z_FULL_FLUSH:ge,Z_FINISH:I,Z_BLOCK:_e,Z_OK:L,Z_STREAM_END:ve,Z_STREAM_ERROR:R,Z_DATA_ERROR:ye,Z_BUF_ERROR:be,Z_DEFAULT_COMPRESSION:xe,Z_FILTERED:Se,Z_HUFFMAN_ONLY:Ce,Z_RLE:we,Z_FIXED:Te,Z_DEFAULT_STRATEGY:Ee,Z_UNKNOWN:De,Z_DEFLATED:Oe}=N,z=(e,t)=>(e.msg=M[t],t),ke=e=>e*2-(e>4?9:0),B=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Ae=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)},V=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,H=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},U=(e,t)=>{pe(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,H(e.strm)},W=(e,t)=>{e.pending_buf[e.pending++]=t},je=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},Me=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=le(e.adler,t,i,n):e.state.wrap===2&&(e.adler=j(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},Ne=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,a,o=e.prev_length,s=e.nice_match,c=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,l=e.window,u=e.w_mask,d=e.prev,f=e.strstart+258,p=l[r+o-1],m=l[r+o];e.prev_length>=e.good_match&&(n>>=2),s>e.lookahead&&(s=e.lookahead);do{if(i=t,l[i+o]!==m||l[i+o-1]!==p||l[i]!==l[r]||l[++i]!==l[r+1])continue;r+=2,i++;do;while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&r<f);if(a=258-(f-r),r=f-258,a>o){if(e.match_start=t,o=a,a>=s)break;p=l[r+o-1],m=l[r+o]}}while((t=d[t&u])>c&&--n!==0);return o<=e.lookahead?o:e.lookahead},G=e=>{let t=e.w_size,n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-262)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Ae(e),r+=t),e.strm.avail_in===0)break;if(n=Me(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=3)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=V(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=V(e,e.ins_h,e.window[i+3-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<262&&e.strm.avail_in!==0)},Pe=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,a,o=0,s=e.strm.avail_in;do{if(r=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,i=e.strstart-e.block_start,r>i+e.strm.avail_in&&(r=i+e.strm.avail_in),r>a&&(r=a),r<n&&(r===0&&t!==I||t===F||r!==i+e.strm.avail_in)))break;o=+(t===I&&r===i+e.strm.avail_in),fe(e,0,0,o),e.pending_buf[e.pending-4]=r,e.pending_buf[e.pending-3]=r>>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,H(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(Me(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(o===0);return s-=e.strm.avail_in,s&&(s>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=s&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-s,e.strm.next_in),e.strstart),e.strstart+=s,e.insert+=s>e.w_size-e.insert?e.w_size-e.insert:s),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),o?4:t!==F&&t!==I&&e.strm.avail_in===0&&e.strstart===e.block_start?2:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(Me(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,i=e.strstart-e.block_start,(i>=n||(i||t===I)&&t!==F&&e.strm.avail_in===0&&i<=a)&&(r=i>a?a:i,o=+(t===I&&e.strm.avail_in===0&&r===i),fe(e,e.block_start,r,o),e.block_start+=r,H(e.strm)),o?3:1)},Fe=(e,t)=>{let n,r;for(;;){if(e.lookahead<262){if(G(e),e.lookahead<262&&t===F)return 1;if(e.lookahead===0)break}if(n=0,e.lookahead>=3&&(e.ins_h=V(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-262&&(e.match_length=Ne(e,n)),e.match_length>=3)if(r=P(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do e.strstart++,e.ins_h=V(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=V(e,e.ins_h,e.window[e.strstart+1]);else r=P(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(U(e,!1),e.strm.avail_out===0))return 1}return e.insert=e.strstart<2?e.strstart:2,t===I?(U(e,!0),e.strm.avail_out===0?3:4):e.sym_next&&(U(e,!1),e.strm.avail_out===0)?1:2},K=(e,t)=>{let n,r,i;for(;;){if(e.lookahead<262){if(G(e),e.lookahead<262&&t===F)return 1;if(e.lookahead===0)break}if(n=0,e.lookahead>=3&&(e.ins_h=V(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-262&&(e.match_length=Ne(e,n),e.match_length<=5&&(e.strategy===Se||e.match_length===3&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,r=P(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=V(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(U(e,!1),e.strm.avail_out===0))return 1}else if(e.match_available){if(r=P(e,0,e.window[e.strstart-1]),r&&U(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&=(r=P(e,0,e.window[e.strstart-1]),0),e.insert=e.strstart<2?e.strstart:2,t===I?(U(e,!0),e.strm.avail_out===0?3:4):e.sym_next&&(U(e,!1),e.strm.avail_out===0)?1:2},Ie=(e,t)=>{let n,r,i,a,o=e.window;for(;;){if(e.lookahead<=258){if(G(e),e.lookahead<=258&&t===F)return 1;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=e.strstart-1,r=o[i],r===o[++i]&&r===o[++i]&&r===o[++i])){a=e.strstart+258;do;while(r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&i<a);e.match_length=258-(a-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=P(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=P(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(U(e,!1),e.strm.avail_out===0))return 1}return e.insert=0,t===I?(U(e,!0),e.strm.avail_out===0?3:4):e.sym_next&&(U(e,!1),e.strm.avail_out===0)?1:2},Le=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(G(e),e.lookahead===0)){if(t===F)return 1;break}if(e.match_length=0,n=P(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(U(e,!1),e.strm.avail_out===0))return 1}return e.insert=0,t===I?(U(e,!0),e.strm.avail_out===0?3:4):e.sym_next&&(U(e,!1),e.strm.avail_out===0)?1:2};function q(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}let Re=[new q(0,0,0,0,Pe),new q(4,4,8,4,Fe),new q(4,5,16,8,Fe),new q(4,6,32,32,Fe),new q(4,4,16,16,K),new q(8,16,32,32,K),new q(8,16,128,128,K),new q(8,32,128,256,K),new q(32,128,258,1024,K),new q(32,258,258,4096,K)],ze=e=>{e.window_size=2*e.w_size,B(e.head),e.max_lazy_match=Re[e.level].max_lazy,e.good_match=Re[e.level].good_length,e.nice_match=Re[e.level].nice_length,e.max_chain_length=Re[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0};function Be(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Oe,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(573*2),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),B(this.dyn_ltree),B(this.dyn_dtree),B(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),B(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),B(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}let Ve=e=>{if(!e)return 1;let t=e.state;return+(!t||t.strm!==e||t.status!==42&&t.status!==57&&t.status!==69&&t.status!==73&&t.status!==91&&t.status!==103&&t.status!==113&&t.status!==666)},He=e=>{if(Ve(e))return z(e,R);e.total_in=e.total_out=0,e.data_type=De;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?57:t.wrap?42:113,e.adler=t.wrap===2?0:1,t.last_flush=-2,de(t),L},Ue=e=>{let t=He(e);return t===L&&ze(e.state),t},We=(e,t)=>Ve(e)||e.state.wrap!==2?R:(e.state.gzhead=t,L),Ge=(e,t,n,r,i,a)=>{if(!e)return R;let o=1;if(t===xe&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),i<1||i>9||n!==Oe||r<8||r>15||t<0||t>9||a<0||a>Te||r===8&&o!==1)return z(e,R);r===8&&(r=9);let s=new Be;return e.state=s,s.strm=e,s.status=42,s.wrap=o,s.gzhead=null,s.w_bits=r,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=i+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+3-1)/3),s.window=new Uint8Array(s.w_size*2),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<i+6,s.pending_buf_size=s.lit_bufsize*4,s.pending_buf=new Uint8Array(s.pending_buf_size),s.sym_buf=s.lit_bufsize,s.sym_end=(s.lit_bufsize-1)*3,s.level=t,s.strategy=a,s.method=n,Ue(e)};var Ke={deflateInit:(e,t)=>Ge(e,t,Oe,15,8,Ee),deflateInit2:Ge,deflateReset:Ue,deflateResetKeep:He,deflateSetHeader:We,deflate:(e,t)=>{if(Ve(e)||t>_e||t<0)return e?z(e,R):R;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===666&&t!==I)return z(e,e.avail_out===0?be:R);let r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(H(e),e.avail_out===0)return n.last_flush=-1,L}else if(e.avail_in===0&&ke(t)<=ke(r)&&t!==I)return z(e,be);if(n.status===666&&e.avail_in!==0)return z(e,be);if(n.status===42&&n.wrap===0&&(n.status=113),n.status===42){let t=Oe+(n.w_bits-8<<4)<<8,r=-1;if(r=n.strategy>=Ce||n.level<2?0:n.level<6?1:n.level===6?2:3,t|=r<<6,n.strstart!==0&&(t|=32),t+=31-t%31,je(n,t),n.strstart!==0&&(je(n,e.adler>>>16),je(n,e.adler&65535)),e.adler=1,n.status=113,H(e),n.pending!==0)return n.last_flush=-1,L}if(n.status===57){if(e.adler=0,W(n,31),W(n,139),W(n,8),n.gzhead)W(n,+!!n.gzhead.text+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),W(n,n.gzhead.time&255),W(n,n.gzhead.time>>8&255),W(n,n.gzhead.time>>16&255),W(n,n.gzhead.time>>24&255),W(n,n.level===9?2:n.strategy>=Ce||n.level<2?4:0),W(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(W(n,n.gzhead.extra.length&255),W(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=j(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(W(n,0),W(n,0),W(n,0),W(n,0),W(n,0),W(n,n.level===9?2:n.strategy>=Ce||n.level<2?4:0),W(n,3),n.status=113,H(e),n.pending!==0)return n.last_flush=-1,L}if(n.status===69){if(n.gzhead.extra){let t=n.pending,r=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+r>n.pending_buf_size;){let i=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>t&&(e.adler=j(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex+=i,H(e),n.pending!==0)return n.last_flush=-1,L;t=0,r-=i}let i=new Uint8Array(n.gzhead.extra);n.pending_buf.set(i.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending+=r,n.gzhead.hcrc&&n.pending>t&&(e.adler=j(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=73}if(n.status===73){if(n.gzhead.name){let t=n.pending,r;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>t&&(e.adler=j(e.adler,n.pending_buf,n.pending-t,t)),H(e),n.pending!==0)return n.last_flush=-1,L;t=0}r=n.gzindex<n.gzhead.name.length?n.gzhead.name.charCodeAt(n.gzindex++)&255:0,W(n,r)}while(r!==0);n.gzhead.hcrc&&n.pending>t&&(e.adler=j(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=91}if(n.status===91){if(n.gzhead.comment){let t=n.pending,r;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>t&&(e.adler=j(e.adler,n.pending_buf,n.pending-t,t)),H(e),n.pending!==0)return n.last_flush=-1,L;t=0}r=n.gzindex<n.gzhead.comment.length?n.gzhead.comment.charCodeAt(n.gzindex++)&255:0,W(n,r)}while(r!==0);n.gzhead.hcrc&&n.pending>t&&(e.adler=j(e.adler,n.pending_buf,n.pending-t,t))}n.status=103}if(n.status===103){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(H(e),n.pending!==0))return n.last_flush=-1,L;W(n,e.adler&255),W(n,e.adler>>8&255),e.adler=0}if(n.status=113,H(e),n.pending!==0)return n.last_flush=-1,L}if(e.avail_in!==0||n.lookahead!==0||t!==F&&n.status!==666){let r=n.level===0?Pe(n,t):n.strategy===Ce?Le(n,t):n.strategy===we?Ie(n,t):Re[n.level].func(n,t);if((r===3||r===4)&&(n.status=666),r===1||r===3)return e.avail_out===0&&(n.last_flush=-1),L;if(r===2&&(t===he?me(n):t!==_e&&(fe(n,0,0,!1),t===ge&&(B(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),H(e),e.avail_out===0))return n.last_flush=-1,L}return t===I?n.wrap<=0?ve:(n.wrap===2?(W(n,e.adler&255),W(n,e.adler>>8&255),W(n,e.adler>>16&255),W(n,e.adler>>24&255),W(n,e.total_in&255),W(n,e.total_in>>8&255),W(n,e.total_in>>16&255),W(n,e.total_in>>24&255)):(je(n,e.adler>>>16),je(n,e.adler&65535)),H(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending===0?ve:L):L},deflateEnd:e=>{if(Ve(e))return R;let t=e.state.status;return e.state=null,t===113?z(e,ye):L},deflateSetDictionary:(e,t)=>{let n=t.length;if(Ve(e))return R;let r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==42||r.lookahead)return R;if(i===1&&(e.adler=le(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(B(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(n-r.w_size,n),0),t=e,n=r.w_size}let a=e.avail_in,o=e.next_in,s=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,G(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do r.ins_h=V(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++;while(--t);r.strstart=e,r.lookahead=2,G(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=o,e.input=s,e.avail_in=a,r.wrap=i,L},deflateInfo:`pako deflate (from Nodeca project)`};let qe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Je={assign:function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!=`object`)throw TypeError(n+`must be non-object`);for(let t in n)qe(n,t)&&(e[t]=n[t])}}return e},flattenChunks:e=>{let t=0;for(let n=0,r=e.length;n<r;n++)t+=e[n].length;let n=new Uint8Array(t);for(let t=0,r=0,i=e.length;t<i;t++){let i=e[t];n.set(i,r),r+=i.length}return n}};let Ye=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Ye=!1}let Xe=new Uint8Array(256);for(let e=0;e<256;e++)Xe[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Xe[254]=Xe[254]=1;var Ze=e=>{if(typeof TextEncoder==`function`&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,a,o=e.length,s=0;for(i=0;i<o;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),s+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(s),a=0,i=0;a<s;i++)n=e.charCodeAt(i),(n&64512)==55296&&i+1<o&&(r=e.charCodeAt(i+1),(r&64512)==56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t};let Qe=(e,t)=>{if(t<65534&&e.subarray&&Ye)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n=``;for(let r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n};var $e={string2buf:Ze,buf2string:(e,t)=>{let n=t||e.length;if(typeof TextDecoder==`function`&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i,a=Array(n*2);for(i=0,r=0;r<n;){let t=e[r++];if(t<128){a[i++]=t;continue}let o=Xe[t];if(o>4){a[i++]=65533,r+=o-1;continue}for(t&=o===2?31:o===3?15:7;o>1&&r<n;)t=t<<6|e[r++]&63,o--;if(o>1){a[i++]=65533;continue}t<65536?a[i++]=t:(t-=65536,a[i++]=55296|t>>10&1023,a[i++]=56320|t&1023)}return Qe(a,i)},utf8border:(e,t)=>{t||=e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)==128;)n--;return n<0||n===0?t:n+Xe[e[n]]>t?n:t}};function et(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=``,this.state=null,this.data_type=2,this.adler=0}var tt=et;let nt=Object.prototype.toString,{Z_NO_FLUSH:rt,Z_SYNC_FLUSH:it,Z_FULL_FLUSH:at,Z_FINISH:ot,Z_OK:st,Z_STREAM_END:ct,Z_DEFAULT_COMPRESSION:lt,Z_DEFAULT_STRATEGY:ut,Z_DEFLATED:dt}=N;function ft(e){this.options=Je.assign({level:lt,method:dt,chunkSize:16384,windowBits:15,memLevel:8,strategy:ut},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=``,this.ended=!1,this.chunks=[],this.strm=new tt,this.strm.avail_out=0;let n=Ke.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==st)throw Error(M[n]);if(t.header&&Ke.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e=typeof t.dictionary==`string`?$e.string2buf(t.dictionary):nt.call(t.dictionary)===`[object ArrayBuffer]`?new Uint8Array(t.dictionary):t.dictionary,n=Ke.deflateSetDictionary(this.strm,e),n!==st)throw Error(M[n]);this._dict_set=!0}}ft.prototype.push=function(e,t){let n=this.strm,r=this.options.chunkSize,i,a;if(this.ended)return!1;for(a=t===~~t?t:t===!0?ot:rt,typeof e==`string`?n.input=$e.string2buf(e):nt.call(e)===`[object ArrayBuffer]`?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(a===it||a===at)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=Ke.deflate(n,a),i===ct)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Ke.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===st;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0},ft.prototype.onData=function(e){this.chunks.push(e)},ft.prototype.onEnd=function(e){e===st&&(this.result=Je.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function pt(e,t){let n=new ft(t);if(n.push(e,!0),n.err)throw n.msg||M[n.err];return n.result}function mt(e,t){return t||={},t.raw=!0,pt(e,t)}function ht(e,t){return t||={},t.gzip=!0,pt(e,t)}var gt={Deflate:ft,deflate:pt,deflateRaw:mt,gzip:ht,constants:N};let _t=16209;var vt=function(e,t){let n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T,E=e.state;n=e.next_in,w=e.input,r=n+(e.avail_in-5),i=e.next_out,T=e.output,a=i-(t-e.avail_out),o=i+(e.avail_out-257),s=E.dmax,c=E.wsize,l=E.whave,u=E.wnext,d=E.window,f=E.hold,p=E.bits,m=E.lencode,h=E.distcode,g=(1<<E.lenbits)-1,_=(1<<E.distbits)-1;top:do{p<15&&(f+=w[n++]<<p,p+=8,f+=w[n++]<<p,p+=8),v=m[f&g];dolen:for(;;){if(y=v>>>24,f>>>=y,p-=y,y=v>>>16&255,y===0)T[i++]=v&65535;else if(y&16){b=v&65535,y&=15,y&&(p<y&&(f+=w[n++]<<p,p+=8),b+=f&(1<<y)-1,f>>>=y,p-=y),p<15&&(f+=w[n++]<<p,p+=8,f+=w[n++]<<p,p+=8),v=h[f&_];dodist:for(;;){if(y=v>>>24,f>>>=y,p-=y,y=v>>>16&255,y&16){if(x=v&65535,y&=15,p<y&&(f+=w[n++]<<p,p+=8,p<y&&(f+=w[n++]<<p,p+=8)),x+=f&(1<<y)-1,x>s){e.msg=`invalid distance too far back`,E.mode=_t;break top}if(f>>>=y,p-=y,y=i-a,x>y){if(y=x-y,y>l&&E.sane){e.msg=`invalid distance too far back`,E.mode=_t;break top}if(S=0,C=d,u===0){if(S+=c-y,y<b){b-=y;do T[i++]=d[S++];while(--y);S=i-x,C=T}}else if(u<y){if(S+=c+u-y,y-=u,y<b){b-=y;do T[i++]=d[S++];while(--y);if(S=0,u<b){y=u,b-=y;do T[i++]=d[S++];while(--y);S=i-x,C=T}}}else if(S+=u-y,y<b){b-=y;do T[i++]=d[S++];while(--y);S=i-x,C=T}for(;b>2;)T[i++]=C[S++],T[i++]=C[S++],T[i++]=C[S++],b-=3;b&&(T[i++]=C[S++],b>1&&(T[i++]=C[S++]))}else{S=i-x;do T[i++]=T[S++],T[i++]=T[S++],T[i++]=T[S++],b-=3;while(b>2);b&&(T[i++]=T[S++],b>1&&(T[i++]=T[S++]))}}else if(y&64){e.msg=`invalid distance code`,E.mode=_t;break top}else{v=h[(v&65535)+(f&(1<<y)-1)];continue dodist}break}}else if(!(y&64)){v=m[(v&65535)+(f&(1<<y)-1)];continue dolen}else if(y&32){E.mode=16191;break top}else{e.msg=`invalid literal/length code`,E.mode=_t;break top}break}}while(n<r&&i<o);b=p>>3,n-=b,p-=b<<3,f&=(1<<p)-1,e.next_in=n,e.next_out=i,e.avail_in=n<r?5+(r-n):5-(n-r),e.avail_out=i<o?257+(o-i):257-(i-o),E.hold=f,E.bits=p};let yt=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),bt=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),xt=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),St=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var Ct=(e,t,n,r,i,a,o,s)=>{let c=s.bits,l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y,b,x,S,C,w=null,T,E=new Uint16Array(16),D=new Uint16Array(16),O=null,ee,k,A;for(l=0;l<=15;l++)E[l]=0;for(u=0;u<r;u++)E[t[n+u]]++;for(p=c,f=15;f>=1&&E[f]===0;f--);if(p>f&&(p=f),f===0)return i[a++]=20971520,i[a++]=20971520,s.bits=1,0;for(d=1;d<f&&E[d]===0;d++);for(p<d&&(p=d),g=1,l=1;l<=15;l++)if(g<<=1,g-=E[l],g<0)return-1;if(g>0&&(e===0||f!==1))return-1;for(D[1]=0,l=1;l<15;l++)D[l+1]=D[l]+E[l];for(u=0;u<r;u++)t[n+u]!==0&&(o[D[t[n+u]]++]=u);if(e===0?(w=O=o,T=20):e===1?(w=yt,O=bt,T=257):(w=xt,O=St,T=0),v=0,u=0,l=d,C=a,m=p,h=0,x=-1,_=1<<p,S=_-1,e===1&&_>852||e===2&&_>592)return 1;for(;;){ee=l-h,o[u]+1<T?(k=0,A=o[u]):o[u]>=T?(k=O[o[u]-T],A=w[o[u]-T]):(k=96,A=0),y=1<<l-h,b=1<<m,d=b;do b-=y,i[C+(v>>h)+b]=ee<<24|k<<16|A|0;while(b!==0);for(y=1<<l-1;v&y;)y>>=1;if(y===0?v=0:(v&=y-1,v+=y),u++,--E[l]===0){if(l===f)break;l=t[n+o[u]]}if(l>p&&(v&S)!==x){for(h===0&&(h=p),C+=d,m=l-h,g=1<<m;m+h<f&&(g-=E[m+h],!(g<=0));)m++,g<<=1;if(_+=1<<m,e===1&&_>852||e===2&&_>592)return 1;x=v&S,i[x]=p<<24|m<<16|C-a|0}}return v!==0&&(i[C+v]=l-h<<24|4194304),s.bits=p,0};let{Z_FINISH:wt,Z_BLOCK:Tt,Z_TREES:Et,Z_OK:J,Z_STREAM_END:Dt,Z_NEED_DICT:Ot,Z_STREAM_ERROR:Y,Z_DATA_ERROR:kt,Z_MEM_ERROR:At,Z_BUF_ERROR:jt,Z_DEFLATED:Mt}=N,Nt=16180,Pt=16181,Ft=16182,It=16183,Lt=16184,Rt=16185,zt=16186,Bt=16187,Vt=16188,Ht=16189,Ut=16190,X=16191,Wt=16192,Gt=16193,Kt=16194,qt=16195,Jt=16196,Yt=16197,Xt=16198,Zt=16199,Qt=16200,$t=16201,en=16202,tn=16203,nn=16204,rn=16205,an=16206,on=16207,sn=16208,Z=16209,cn=16210,ln=16211,un=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function dn(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}let Q=e=>{if(!e)return 1;let t=e.state;return+(!t||t.strm!==e||t.mode<Nt||t.mode>ln)},fn=e=>{if(Q(e))return Y;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg=``,t.wrap&&(e.adler=t.wrap&1),t.mode=Nt,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,J},pn=e=>{if(Q(e))return Y;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,fn(e)},mn=(e,t)=>{let n;if(Q(e))return Y;let r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Y:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,pn(e))},hn=(e,t)=>{if(!e)return Y;let n=new dn;e.state=n,n.strm=e,n.window=null,n.mode=Nt;let r=mn(e,t);return r!==J&&(e.state=null),r},gn=e=>hn(e,15),_n=!0,vn,yn,bn=e=>{if(_n){vn=new Int32Array(512),yn=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Ct(1,e.lens,0,288,vn,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Ct(2,e.lens,0,32,yn,0,e.work,{bits:5}),_n=!1}e.lencode=vn,e.lenbits=9,e.distcode=yn,e.distbits=5},xn=(e,t,n,r)=>{let i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),r>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),a.window.set(t.subarray(n-r,n-r+i),a.wnext),r-=i,r?(a.window.set(t.subarray(n-r,n),0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0};var $={inflateReset:pn,inflateReset2:mn,inflateResetKeep:fn,inflateInit:gn,inflateInit2:hn,inflate:(e,t)=>{let n,r,i,a,o,s,c,l,u,d,f,p,m,h,g=0,_,v,y,b,x,S,C,w,T=new Uint8Array(4),E,D,O=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Q(e)||!e.output||!e.input&&e.avail_in!==0)return Y;n=e.state,n.mode===X&&(n.mode=Wt),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,d=s,f=c,w=J;inf_leave:for(;;)switch(n.mode){case Nt:if(n.wrap===0){n.mode=Wt;break}for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.wrap&2&&l===35615){n.wbits===0&&(n.wbits=15),n.check=0,T[0]=l&255,T[1]=l>>>8&255,n.check=j(n.check,T,2,0),l=0,u=0,n.mode=Pt;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((l&255)<<8)+(l>>8))%31){e.msg=`incorrect header check`,n.mode=Z;break}if((l&15)!==Mt){e.msg=`unknown compression method`,n.mode=Z;break}if(l>>>=4,u-=4,C=(l&15)+8,n.wbits===0&&(n.wbits=C),C>15||C>n.wbits){e.msg=`invalid window size`,n.mode=Z;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=l&512?Ht:X,l=0,u=0;break;case Pt:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.flags=l,(n.flags&255)!==Mt){e.msg=`unknown compression method`,n.mode=Z;break}if(n.flags&57344){e.msg=`unknown header flags set`,n.mode=Z;break}n.head&&(n.head.text=l>>8&1),n.flags&512&&n.wrap&4&&(T[0]=l&255,T[1]=l>>>8&255,n.check=j(n.check,T,2,0)),l=0,u=0,n.mode=Ft;case Ft:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.time=l),n.flags&512&&n.wrap&4&&(T[0]=l&255,T[1]=l>>>8&255,T[2]=l>>>16&255,T[3]=l>>>24&255,n.check=j(n.check,T,4,0)),l=0,u=0,n.mode=It;case It:for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=l&255,n.head.os=l>>8),n.flags&512&&n.wrap&4&&(T[0]=l&255,T[1]=l>>>8&255,n.check=j(n.check,T,2,0)),l=0,u=0,n.mode=Lt;case Lt:if(n.flags&1024){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length=l,n.head&&(n.head.extra_len=l),n.flags&512&&n.wrap&4&&(T[0]=l&255,T[1]=l>>>8&255,n.check=j(n.check,T,2,0)),l=0,u=0}else n.head&&(n.head.extra=null);n.mode=Rt;case Rt:if(n.flags&1024&&(p=n.length,p>s&&(p=s),p&&(n.head&&(C=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(a,a+p),C)),n.flags&512&&n.wrap&4&&(n.check=j(n.check,r,p,a)),s-=p,a+=p,n.length-=p),n.length))break inf_leave;n.length=0,n.mode=zt;case zt:if(n.flags&2048){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.name+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&n.wrap&4&&(n.check=j(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.name=null);n.length=0,n.mode=Bt;case Bt:if(n.flags&4096){if(s===0)break inf_leave;p=0;do C=r[a+ p++],n.head&&C&&n.length<65536&&(n.head.comment+=String.fromCharCode(C));while(C&&p<s);if(n.flags&512&&n.wrap&4&&(n.check=j(n.check,r,p,a)),s-=p,a+=p,C)break inf_leave}else n.head&&(n.head.comment=null);n.mode=Vt;case Vt:if(n.flags&512){for(;u<16;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.wrap&4&&l!==(n.check&65535)){e.msg=`header crc mismatch`,n.mode=Z;break}l=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=X;break;case Ht:for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}e.adler=n.check=un(l),l=0,u=0,n.mode=Ut;case Ut:if(n.havedict===0)return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,Ot;e.adler=n.check=1,n.mode=X;case X:if(t===Tt||t===Et)break inf_leave;case Wt:if(n.last){l>>>=u&7,u-=u&7,n.mode=an;break}for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}switch(n.last=l&1,l>>>=1,--u,l&3){case 0:n.mode=Gt;break;case 1:if(bn(n),n.mode=Zt,t===Et){l>>>=2,u-=2;break inf_leave}break;case 2:n.mode=Jt;break;case 3:e.msg=`invalid block type`,n.mode=Z}l>>>=2,u-=2;break;case Gt:for(l>>>=u&7,u-=u&7;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if((l&65535)!=(l>>>16^65535)){e.msg=`invalid stored block lengths`,n.mode=Z;break}if(n.length=l&65535,l=0,u=0,n.mode=Kt,t===Et)break inf_leave;case Kt:n.mode=qt;case qt:if(p=n.length,p){if(p>s&&(p=s),p>c&&(p=c),p===0)break inf_leave;i.set(r.subarray(a,a+p),o),s-=p,a+=p,c-=p,o+=p,n.length-=p;break}n.mode=X;break;case Jt:for(;u<14;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.nlen=(l&31)+257,l>>>=5,u-=5,n.ndist=(l&31)+1,l>>>=5,u-=5,n.ncode=(l&15)+4,l>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg=`too many length or distance symbols`,n.mode=Z;break}n.have=0,n.mode=Yt;case Yt:for(;n.have<n.ncode;){for(;u<3;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.lens[O[n.have++]]=l&7,l>>>=3,u-=3}for(;n.have<19;)n.lens[O[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,E={bits:n.lenbits},w=Ct(0,n.lens,0,19,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid code lengths set`,n.mode=Z;break}n.have=0,n.mode=Xt;case Xt:for(;n.have<n.nlen+n.ndist;){for(;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(y<16)l>>>=_,u-=_,n.lens[n.have++]=y;else{if(y===16){for(D=_+2;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(l>>>=_,u-=_,n.have===0){e.msg=`invalid bit length repeat`,n.mode=Z;break}C=n.lens[n.have-1],p=3+(l&3),l>>>=2,u-=2}else if(y===17){for(D=_+3;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=3+(l&7),l>>>=3,u-=3}else{for(D=_+7;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=_,u-=_,C=0,p=11+(l&127),l>>>=7,u-=7}if(n.have+p>n.nlen+n.ndist){e.msg=`invalid bit length repeat`,n.mode=Z;break}for(;p--;)n.lens[n.have++]=C}}if(n.mode===Z)break;if(n.lens[256]===0){e.msg=`invalid code -- missing end-of-block`,n.mode=Z;break}if(n.lenbits=9,E={bits:n.lenbits},w=Ct(1,n.lens,0,n.nlen,n.lencode,0,n.work,E),n.lenbits=E.bits,w){e.msg=`invalid literal/lengths set`,n.mode=Z;break}if(n.distbits=6,n.distcode=n.distdyn,E={bits:n.distbits},w=Ct(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,E),n.distbits=E.bits,w){e.msg=`invalid distances set`,n.mode=Z;break}if(n.mode=Zt,t===Et)break inf_leave;case Zt:n.mode=Qt;case Qt:if(s>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,vt(e,f),o=e.next_out,i=e.output,c=e.avail_out,a=e.next_in,r=e.input,s=e.avail_in,l=n.hold,u=n.bits,n.mode===X&&(n.back=-1);break}for(n.back=0;g=n.lencode[l&(1<<n.lenbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(v&&!(v&240)){for(b=_,x=v,S=y;g=n.lencode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,n.length=y,v===0){n.mode=rn;break}if(v&32){n.back=-1,n.mode=X;break}if(v&64){e.msg=`invalid literal/length code`,n.mode=Z;break}n.extra=v&15,n.mode=$t;case $t:if(n.extra){for(D=n.extra;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.length+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=en;case en:for(;g=n.distcode[l&(1<<n.distbits)-1],_=g>>>24,v=g>>>16&255,y=g&65535,!(_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(!(v&240)){for(b=_,x=v,S=y;g=n.distcode[S+((l&(1<<b+x)-1)>>b)],_=g>>>24,v=g>>>16&255,y=g&65535,!(b+_<=u);){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}l>>>=b,u-=b,n.back+=b}if(l>>>=_,u-=_,n.back+=_,v&64){e.msg=`invalid distance code`,n.mode=Z;break}n.offset=y,n.extra=v&15,n.mode=tn;case tn:if(n.extra){for(D=n.extra;u<D;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}n.offset+=l&(1<<n.extra)-1,l>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg=`invalid distance too far back`,n.mode=Z;break}n.mode=nn;case nn:if(c===0)break inf_leave;if(p=f-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg=`invalid distance too far back`,n.mode=Z;break}p>n.wnext?(p-=n.wnext,m=n.wsize-p):m=n.wnext-p,p>n.length&&(p=n.length),h=n.window}else h=i,m=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do i[o++]=h[m++];while(--p);n.length===0&&(n.mode=Qt);break;case rn:if(c===0)break inf_leave;i[o++]=n.length,c--,n.mode=Qt;break;case an:if(n.wrap){for(;u<32;){if(s===0)break inf_leave;s--,l|=r[a++]<<u,u+=8}if(f-=c,e.total_out+=f,n.total+=f,n.wrap&4&&f&&(e.adler=n.check=n.flags?j(n.check,i,f,o-f):le(n.check,i,f,o-f)),f=c,n.wrap&4&&(n.flags?l:un(l))!==n.check){e.msg=`incorrect data check`,n.mode=Z;break}l=0,u=0}n.mode=on;case on:if(n.wrap&&n.flags){for(;u<32;){if(s===0)break inf_leave;s--,l+=r[a++]<<u,u+=8}if(n.wrap&4&&l!==(n.total&4294967295)){e.msg=`incorrect length check`,n.mode=Z;break}l=0,u=0}n.mode=sn;case sn:w=Dt;break inf_leave;case Z:w=kt;break inf_leave;case cn:return At;case ln:default:return Y}return e.next_out=o,e.avail_out=c,e.next_in=a,e.avail_in=s,n.hold=l,n.bits=u,(n.wsize||f!==e.avail_out&&n.mode<Z&&(n.mode<an||t!==wt))&&xn(e,e.output,e.next_out,f-e.avail_out),d-=e.avail_in,f-=e.avail_out,e.total_in+=d,e.total_out+=f,n.total+=f,n.wrap&4&&f&&(e.adler=n.check=n.flags?j(n.check,i,f,e.next_out-f):le(n.check,i,f,e.next_out-f)),e.data_type=n.bits+(n.last?64:0)+(n.mode===X?128:0)+(n.mode===Zt||n.mode===Kt?256:0),(d===0&&f===0||t===wt)&&w===J&&(w=jt),w},inflateEnd:e=>{if(Q(e))return Y;let t=e.state;return t.window&&=null,e.state=null,J},inflateGetHeader:(e,t)=>{if(Q(e))return Y;let n=e.state;return n.wrap&2?(n.head=t,t.done=!1,J):Y},inflateSetDictionary:(e,t)=>{let n=t.length,r,i,a;return Q(e)||(r=e.state,r.wrap!==0&&r.mode!==Ut)?Y:r.mode===Ut&&(i=1,i=le(i,t,n,0),i!==r.check)?kt:(a=xn(e,t,n,n),a?(r.mode=cn,At):(r.havedict=1,J))},inflateInfo:`pako inflate (from Nodeca project)`};function Sn(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=``,this.comment=``,this.hcrc=0,this.done=!1}var Cn=Sn;let wn=Object.prototype.toString,{Z_NO_FLUSH:Tn,Z_FINISH:En,Z_OK:Dn,Z_STREAM_END:On,Z_NEED_DICT:kn,Z_STREAM_ERROR:An,Z_DATA_ERROR:jn,Z_MEM_ERROR:Mn}=N;function Nn(e){this.options=Je.assign({chunkSize:1024*64,windowBits:15,to:``},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg=``,this.ended=!1,this.chunks=[],this.strm=new tt,this.strm.avail_out=0;let n=$.inflateInit2(this.strm,t.windowBits);if(n!==Dn||(this.header=new Cn,$.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary==`string`?t.dictionary=$e.string2buf(t.dictionary):wn.call(t.dictionary)===`[object ArrayBuffer]`&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=$.inflateSetDictionary(this.strm,t.dictionary),n!==Dn))))throw Error(M[n])}Nn.prototype.push=function(e,t){let n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,o,s;if(this.ended)return!1;for(o=t===~~t?t:t===!0?En:Tn,wn.call(e)===`[object ArrayBuffer]`?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),a=$.inflate(n,o),a===kn&&i&&(a=$.inflateSetDictionary(n,i),a===Dn?a=$.inflate(n,o):a===jn&&(a=kn));n.avail_in>0&&a===On&&n.state.wrap>0&&e[n.next_in]!==0;)$.inflateReset(n),a=$.inflate(n,o);switch(a){case An:case jn:case kn:case Mn:return this.onEnd(a),this.ended=!0,!1}if(s=n.avail_out,n.next_out&&(n.avail_out===0||a===On))if(this.options.to===`string`){let e=$e.utf8border(n.output,n.next_out),t=n.next_out-e,i=$e.buf2string(n.output,e);n.next_out=t,n.avail_out=r-t,t&&n.output.set(n.output.subarray(e,e+t),0),this.onData(i)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===Dn&&s===0)){if(a===On)return a=$.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0},Nn.prototype.onData=function(e){this.chunks.push(e)},Nn.prototype.onEnd=function(e){e===Dn&&(this.options.to===`string`?this.result=this.chunks.join(``):this.result=Je.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Pn(e,t){let n=new Nn(t);if(n.push(e),n.err)throw n.msg||M[n.err];return n.result}function Fn(e,t){return t||={},t.raw=!0,Pn(e,t)}var In={Inflate:Nn,inflate:Pn,inflateRaw:Fn,ungzip:Pn,constants:N};let{Deflate:Ln,deflate:Rn,deflateRaw:zn,gzip:Bn}=gt,{Inflate:Vn,inflate:Hn,inflateRaw:Un,ungzip:Wn}=In;var Gn={Deflate:Ln,deflate:Rn,deflateRaw:zn,gzip:Bn,Inflate:Vn,inflate:Hn,inflateRaw:Un,ungzip:Wn,constants:N},Kn=class{view;offset=0;constructor(e){this.view=new DataView(e)}readUint8(){return this.view.getUint8(this.offset++)}readUint32(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readBytes(e){let t=new Uint8Array(this.view.buffer,this.offset,e);return this.offset+=e,t}eof(){return this.offset>=this.view.byteLength}},qn=class{decodeBuffer(e){return this.textDecoder.decode(Gn.inflate(e))}decoder=Gn;textDecoder=new TextDecoder(`utf-8`);ChunkType={PROP:1,MESH:2,STRUCTURE:3,GRIDS:4,MATRIX:5,MESHSPACE:6,NORTHANGLE:7};parseMesh(e){let t=new DataView(e.buffer,e.byteOffset),n=0,r=()=>{let r=t.getUint32(n,!0);n+=4;let i=new Uint8Array(e.buffer,e.byteOffset+n,r);return n+=r,i};return{pos:r(),ids:r(),ind:(()=>{let r=t.getUint32(n,!0);n+=4;let i=t.getUint32(n,!0);n+=4;let a=new Uint8Array(e.buffer,e.byteOffset+n,r);return n+=r,{data:a,type:i}})(),colorId:(()=>{let e=t.getUint8(n++)/255,r=t.getUint8(n++)/255,i=t.getUint8(n++)/255,a=t.getUint8(n++)/255,o=t.getUint32(n,!0);return n+=4,{r:e,g:r,b:i,opacity:a,name:o}})()}}getExternalMetadataPath(e){let t=e.match(/[?#].*$/)?.[0]??``,n=t?e.slice(0,-t.length):e;return/\.min\.bmt$/i.test(n)?n.replace(/\.min\.bmt$/i,`_props.json`)+t:null}async loadExternalMetadata(e){let t=this.getExternalMetadataPath(e);if(!t)return null;try{let e=await fetch(t);return e.ok?await e.json():null}catch(e){return console.warn(`BMT metadata loading error: ${t}`,e),null}}getCoordinationMatrixFromBinary(e){let t=new Kn(e);if(new TextDecoder().decode(t.readBytes(3))!==`BMT`)return;t.readUint8();let n,r;for(;!t.eof();){let e=t.readUint8(),i=t.readUint32(),a=t.readBytes(i);switch(e){case this.ChunkType.MATRIX:if(i){let e=this.decodeBuffer(a);n??=e,r=e}break;case this.ChunkType.MESH:case this.ChunkType.MESHSPACE:r=void 0;break;default:break}}return r??n}getModelNameFromPath(e){return(e.split(/[?#]/)[0].split(/[\\/]/).pop()||`model`).replace(/\.min\.bmt$/i,``).replace(/\.[^.]+$/i,``).trim()||`model`}async loadModel(e,t){let n=await fetch(e);console.log(`Parsing BMT model`);let r=await n.arrayBuffer(),i=this.parseBinaryFile(r,t);i.name??=this.getModelNameFromPath(e);let a=await this.loadExternalMetadata(e);return a?.props&&(i.props=a.props),a?.grids&&(i.grids=a.grids),a?.coordinationMatrix&&(i.coordinationMatrix=a.coordinationMatrix),a?.structure!==void 0&&(i.structure=a.structure),typeof a?.trueNorthAngle==`number`&&(i.trueNorthAngle=a.trueNorthAngle),i}parseBinaryFile(e,t={}){let n=new Kn(e);if(new TextDecoder().decode(n.readBytes(3))!==`BMT`)throw Error(`Invalid file`);let r=n.readUint8();console.log(`model version: ${r}`);let i=n.view.byteLength,a=this.createParseState(t.streamGeometryChunks?this.getCoordinationMatrixFromBinary(e):void 0);for(;!n.eof();){let e=n.readUint8(),r=n.readUint32(),o=n.readBytes(r);this.parseChunk(a,e,o,t,n.offset,i)}return this.createModelData(a)}createStreamParser(e={},t=0){return new Jn(this,e,t)}createParseState(e){return{curMatrix:``,deferredChunks:null,emittedChunks:0,geomData:{},propsData:{},streamingCoordinationMatrix:e,structure:{}}}parseChunk(e,t,n,r,i,a){switch(t){case this.ChunkType.MESH:case this.ChunkType.MESHSPACE:{let o=this.parseGeometry(n,t,e.curMatrix),s=o.mat.name;if(e.trailingMatrix=void 0,r.streamGeometryChunks){let n={chunkIndex:e.emittedChunks,coordinationMatrix:e.streamingCoordinationMatrix,geometry:o,geometryID:s,isIfcSpace:t===this.ChunkType.MESHSPACE,loadedBytes:i,totalBytes:a};e.emittedChunks++,e.deferredChunks?e.deferredChunks.push(n):r.onGeometryChunk?.(n)}else e.geomData[s]=o;break}case this.ChunkType.PROP:{let t=JSON.parse(this.decodeBuffer(n));t?.id===void 0?t&&typeof t==`object`&&Object.assign(e.propsData,t):e.propsData[t.id]=t}break;case this.ChunkType.STRUCTURE:e.structure=JSON.parse(this.decodeBuffer(n));break;case this.ChunkType.GRIDS:e.gridsData=JSON.parse(this.decodeBuffer(n));break;case this.ChunkType.MATRIX:n.length&&(e.curMatrix=this.decodeBuffer(n),e.firstMatrix??=e.curMatrix,e.trailingMatrix=e.curMatrix);break;case this.ChunkType.NORTHANGLE:{let t=Number(this.decodeBuffer(n));Number.isFinite(t)&&(e.trueNorthAngle=t);break}default:break}r.onProgress?.({emittedChunks:e.emittedChunks,loadedBytes:i,totalBytes:a})}createModelData(e){return{coordinationMatrix:e.trailingMatrix??e.firstMatrix,data:e.geomData,grids:e.gridsData,props:e.propsData,structure:e.structure,trueNorthAngle:e.trueNorthAngle}}parseGeometry(e,t,n){let r=this.parseMesh(e),i=this.decoder.inflate(r.pos),a=this.decoder.inflate(r.ids),o=this.decoder.inflate(r.ind.data),s=new Float32Array(i.buffer),c=new Uint32Array(a.buffer),l;if(o&&o.length)l=r.ind.type===0?new Uint16Array(o.buffer,o.byteOffset,o.byteLength/2):new Uint32Array(o.buffer,o.byteOffset,o.byteLength/4);else{l=new Uint32Array(i.length);for(let e=0;e<i.length;e++)l[e]=e}return{pos:s,ids:c,ind:l,isIfcSpace:t===this.ChunkType.MESHSPACE,mat:r.colorId,matrix:n||void 0}}},Jn=class{buffer;headerRead=!1;length=0;offset=0;state;loader;callbacks;totalBytes;constructor(e,t,n=0){this.loader=e,this.callbacks=t,this.totalBytes=n,this.buffer=new Uint8Array(n>0?n:1048576),this.state=e.createParseState()}push(e){this.ensureCapacity(this.length+e.byteLength),this.buffer.set(e,this.length),this.length+=e.byteLength,this.parseAvailable()}finish(){if(this.parseAvailable(),!this.headerRead||this.offset!==this.length)throw Error(`Unexpected end of BMT file`);let{state:e}=this,t=e.deferredChunks;if(t){e.deferredChunks=null;let n=e.trailingMatrix??e.firstMatrix;t.forEach(e=>{this.callbacks.onGeometryChunk?.({...e,coordinationMatrix:n})})}return this.loader.createModelData(e)}ensureCapacity(e){if(e<=this.buffer.byteLength)return;let t=new Uint8Array(Math.max(e,this.buffer.byteLength*2));t.set(this.buffer.subarray(0,this.length)),this.buffer=t}parseAvailable(){let{buffer:e,state:t}=this;if(!this.headerRead){if(this.length<4)return;if(new TextDecoder().decode(e.subarray(0,3))!==`BMT`)throw Error(`Invalid file`);console.log(`model version: ${e[3]}`),this.offset=4,this.headerRead=!0}let n=new DataView(e.buffer,e.byteOffset),r=this.totalBytes||this.length;for(;this.length-this.offset>=5;){let i=e[this.offset],a=n.getUint32(this.offset+1,!0),o=this.offset+5,s=o+a;if(s>this.length)return;(i===this.loader.ChunkType.MESH||i===this.loader.ChunkType.MESHSPACE)&&this.callbacks.streamGeometryChunks&&t.firstMatrix===void 0&&!t.deferredChunks&&(t.deferredChunks=[]),t.firstMatrix!==void 0&&!t.deferredChunks&&(t.streamingCoordinationMatrix??=t.firstMatrix),this.offset=s,this.loader.parseChunk(t,i,e.subarray(o,s),this.callbacks,s,r)}}},Yn=class{emit;taskId;totalModels;lastEmitTime=-1/0;lastMessage;lastModelIndex;lastPhase;constructor(e){this.emit=e.emit,this.taskId=e.taskId,this.totalModels=Math.max(e.totalModels,1)}emitModelProgress(e,t,n,r,i={}){let a=Date.now();if(!(n!==this.lastPhase||e!==this.lastModelIndex||i.message!==this.lastMessage||r>=1)&&a-this.lastEmitTime<100)return;this.lastEmitTime=a,this.lastMessage=i.message,this.lastModelIndex=e,this.lastPhase=n;let o=this.clampProgress(r),s=this.clampProgress((e+o)/this.totalModels);this.emit({...i,modelIndex:e,modelName:t,phase:n,progress:s,taskId:this.taskId,totalModels:this.totalModels})}emitError(e){this.emit({message:e,modelIndex:-1,phase:`error`,progress:1,taskId:this.taskId,totalModels:this.totalModels})}clampProgress(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):0}};let Xn=new Uint32Array;function Zn(e,t){let n=e?.buffer;n instanceof ArrayBuffer&&t.add(n)}function Qn(e,t){e?.roots.forEach(e=>{e instanceof ArrayBuffer&&t.add(e)}),e?.index!==Xn&&Zn(e?.index,t),Zn(e?.indirectBuffer,t)}function $n(e,t){let{triangleEnd:n,triangleStart:r,vertexEnd:i,vertexStart:a}=t,o=e.ind,s=new Uint32Array((n-r)*3);for(let e=0,t=r*3;e<s.length;e++,t++)s[e]=o[t]-a;return{ids:e.ids.slice(a,i),ind:s,isIfcSpace:e.isIfcSpace,mat:e.mat,matrix:e.matrix,norm:e.norm?.slice(a*3,i*3),pos:e.pos.slice(a*3,i*3)}}function er(e,t=262144){let{ids:n,ind:r,norm:i,pos:a}=e,o=a.length/3;if(o<=t||r.length%3!=0||n.length!==o||i&&i.length!==a.length)return[e];let s=[],c=r.length/3,l=0,u=1/0,d=-1,f=-1;for(let e=0;e<c;e++){let i=r[e*3],a=r[e*3+1],o=r[e*3+2],c=n[i];e>l&&c!==f&&d-u+1>=t&&(s.push({triangleEnd:e,triangleStart:l,vertexEnd:d+1,vertexStart:u}),l=e,u=1/0,d=-1),u=Math.min(u,i,a,o),d=Math.max(d,i,a,o),f=c}if(s.push({triangleEnd:c,triangleStart:l,vertexEnd:d+1,vertexStart:u}),s.length<2)return[e];for(let t=1;t<s.length;t++)if(s[t].vertexStart<s[t-1].vertexEnd)return[e];return s.map(t=>$n(e,t))}var tr=class{nextGeometryID=4294967294;usedGeometryIDs=new Set;allocate(e){if(e!==void 0&&!this.usedGeometryIDs.has(e))return this.usedGeometryIDs.add(e),e;for(;this.usedGeometryIDs.has(this.nextGeometryID);)this.nextGeometryID--;let t=this.nextGeometryID--;return this.usedGeometryIDs.add(t),t}};function nr(e){return{ind:e.ind.slice(),pos:e.pos.slice()}}function rr(e,t){[e.pos,e.norm,e.ind,e.ids].forEach(e=>{let n=e?.buffer;n instanceof ArrayBuffer&&t.add(n)})}let ir=globalThis;function ar(e){return e.name?e.name:e.kind===`url`?or(e.url):e.kind===`file`?e.file.name:`model.bmt`}function or(e){return e.split(/[?#]/)[0].split(/[\\/]/).pop()||`model.bmt`}function sr(e){return ar(e).replace(/\.min\.bmt$/i,``).replace(/\.[^.]+$/i,``).trim()}function cr(e){return e instanceof Error?{message:e.message,stack:e.stack}:{message:String(e)}}function lr(e,t){let n=new Uint8Array(t),r=0;return e.forEach(e=>{n.set(e,r),r+=e.byteLength}),n.buffer}async function ur(e,t,n,r){let i=e.size,a=e.stream().getReader(),o=[],s=0;for(;;){let{done:e,value:c}=await a.read();if(e)break;o.push(c),s+=c.byteLength,t.emitModelProgress(n,r,`reading`,i>0?s/i*.35:.1,{loaded:s,total:i})}return lr(o,s)}async function dr(e,t,n,r){let i=await fetch(e);if(!i.ok)throw Error(`BMT fetch error: ${i.status} ${e}`);let a=i.headers.get(`content-length`),o=a?Number(a):0,s=i.body?.getReader();if(!s){let e=await i.arrayBuffer();return t.emitModelProgress(n,r,`fetching`,.35,{loaded:e.byteLength,total:e.byteLength}),e}let c=[],l=0;for(;;){let{done:e,value:i}=await s.read();if(e)break;c.push(i),l+=i.byteLength,t.emitModelProgress(n,r,`fetching`,o>0?l/o*.35:.1,{loaded:l,total:o||void 0})}return lr(c,l)}async function fr(e,t,n){let r=ar(e);return e.kind===`buffer`?(t.emitModelProgress(n,r,`reading`,.35,{loaded:e.buffer.byteLength,total:e.buffer.byteLength}),e.buffer):e.kind===`file`?ur(e.file,t,n,r):dr(e.url,t,n,r)}function pr(e){let t=e.split(/[?#]/)[0];return/\.min\.bmt$/i.test(t)?new URL(t.replace(/\.min\.bmt$/i,`_props.json`),e).href:null}async function mr(e){if(e.kind!==`url`)return null;let t=pr(e.url);if(!t)return null;try{let e=await fetch(t);return e.ok?await e.json():null}catch(e){return console.warn(`BMT metadata loading error: ${t}`,e),null}}function hr(e,t){return t?(t.props&&(e.props=t.props),t.grids&&(e.grids=t.grids),t.coordinationMatrix&&(e.coordinationMatrix=t.coordinationMatrix),typeof t.trueNorthAngle==`number`&&(e.trueNorthAngle=t.trueNorthAngle),t.structure!==void 0&&(e.structure=t.structure),e):e}function gr(e){let t=new Set;return rr(e,t),Qn(e.boundsTree,t),Array.from(t)}function _r(e,t,n,r,i){er(e.geometry).forEach((a,o)=>{let s=t.allocate(o===0?e.geometryID:void 0),c=s===a.mat.name?a:{...a,mat:{...a.mat,name:s}},l=c.boundsTree?void 0:nr(c),u=gr(c);l&&u.push(l.pos.buffer,l.ind.buffer),ir.postMessage({bvhSource:l,chunk:{chunkIndex:e.chunkIndex,coordinationMatrix:e.coordinationMatrix,geometry:c,geometryID:s,isIfcSpace:e.isIfcSpace,modelIndex:r,modelName:i},taskId:n,type:`chunk`},u)})}async function vr(e,t,n,r,i,a){let o=await fetch(e);if(!o.ok)throw Error(`BMT fetch error: ${o.status} ${e}`);let s=o.headers.get(`content-length`),c=s?Number(s):0,l=t.createStreamParser(n,c),u=o.body?.getReader();if(!u)return l.push(new Uint8Array(await o.arrayBuffer())),l.finish();let d=0;for(;;){let{done:e,value:t}=await u.read();if(e)break;d+=t.byteLength,r.emitModelProgress(i,a,`fetching`,c>0?Math.min(d/c,1)*.95:.1,{loaded:d,total:c||void 0}),l.push(t)}return l.finish()}function yr(e){let t=new Set;return Object.values(e).forEach(e=>{Object.values(e.data).forEach(e=>{gr(e).forEach(e=>t.add(e))})}),Array.from(t)}async function br(e){let t=e.options??{},n=new qn,r=new Yn({emit:t=>{ir.postMessage({progress:t,taskId:e.taskId,type:`progress`})},taskId:e.taskId,totalModels:e.sources.length}),i={};r.emitModelProgress(0,void 0,`queued`,0);for(let a=0;a<e.sources.length;a++){let o=e.sources[a],s=ar(o),c=!!t.streamGeometryChunks,l=new tr,u=mr(o),d=c?t=>_r(t,l,e.taskId,a,s):void 0,f;if(c&&o.kind===`url`)f=await vr(o.url,n,{onGeometryChunk:d,streamGeometryChunks:c},r,a,s);else{let e=await fr(o,r,a);r.emitModelProgress(a,s,`parsing`,.35),f=n.parseBinaryFile(e,{onGeometryChunk:d,onProgress:e=>{r.emitModelProgress(a,s,`parsing`,.35+e.loadedBytes/e.totalBytes*.6,{loaded:e.loadedBytes,total:e.totalBytes})},streamGeometryChunks:c})}f.name??=sr(o),hr(f,await u),i[a]=f,r.emitModelProgress(a,s,`complete`,1)}return i}ir.onmessage=e=>{let t=e.data;t.type===`load-bmt-model`&&br(t).then(e=>{ir.postMessage({models:e,taskId:t.taskId,type:`complete`},yr(e))}).catch(e=>{ir.postMessage({error:cr(e),taskId:t.taskId,type:`error`})})}})();
|