@jdultra/threedtiles 13.1.3 → 13.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/splats/SplatsMesh.d.ts +1 -1
- package/dist/threedtiles.cjs.js +6 -6
- package/dist/threedtiles.cjs.js.map +1 -1
- package/dist/threedtiles.es.js +447 -447
- package/dist/threedtiles.es.js.map +1 -1
- package/dist/threedtiles.umd.js +6 -6
- package/dist/threedtiles.umd.js.map +1 -1
- package/dist/tileset/TileLoader.d.ts +3 -0
- package/package.json +1 -1
package/dist/threedtiles.es.js
CHANGED
|
@@ -2,7 +2,7 @@ var Zt = Object.defineProperty;
|
|
|
2
2
|
var $t = (c, e, a) => e in c ? Zt(c, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : c[e] = a;
|
|
3
3
|
var ge = (c, e, a) => $t(c, typeof e != "symbol" ? e + "" : e, a);
|
|
4
4
|
import * as E from "three";
|
|
5
|
-
import { Matrix3 as Fa, Vector3 as D, Box3 as Ra, Matrix4 as Se, Ray as eA, BufferGeometry as ea, LineBasicMaterial as It, LineSegments as mt, BufferAttribute as he, TrianglesDrawMode as aA, TriangleFanDrawMode as ya, TriangleStripDrawMode as Bt, Loader as Ma, LoaderUtils as Le, FileLoader as Ce, Color as le, LinearSRGBColorSpace as K, SpotLight as tA, PointLight as AA, DirectionalLight as iA, MeshBasicMaterial as
|
|
5
|
+
import { Matrix3 as Fa, Vector3 as D, Box3 as Ra, Matrix4 as Se, Ray as eA, BufferGeometry as ea, LineBasicMaterial as It, LineSegments as mt, BufferAttribute as he, TrianglesDrawMode as aA, TriangleFanDrawMode as ya, TriangleStripDrawMode as Bt, Loader as Ma, LoaderUtils as Le, FileLoader as Ce, Color as le, LinearSRGBColorSpace as K, SpotLight as tA, PointLight as AA, DirectionalLight as iA, MeshBasicMaterial as Ue, SRGBColorSpace as re, MeshPhysicalMaterial as ae, Vector2 as Ct, Quaternion as pt, InstancedMesh as sA, InstancedBufferAttribute as wa, Object3D as Et, TextureLoader as rA, ImageBitmapLoader as nA, InterleavedBuffer as oA, InterleavedBufferAttribute as cA, LinearFilter as Be, LinearMipmapLinearFilter as $e, RepeatWrapping as ka, NearestFilter as v, PointsMaterial as bA, Material as ta, MeshStandardMaterial as Ha, DoubleSide as dA, PropertyBinding as hA, SkinnedMesh as lA, Mesh as xa, Line as gA, LineLoop as fA, Points as uA, Group as Aa, PerspectiveCamera as IA, MathUtils as mA, OrthographicCamera as Qt, Skeleton as BA, AnimationClip as CA, Bone as pA, InterpolateLinear as yt, ColorManagement as ja, NearestMipmapNearestFilter as EA, LinearMipmapNearestFilter as QA, NearestMipmapLinearFilter as yA, ClampToEdgeWrapping as wA, MirroredRepeatWrapping as kA, InterpolateDiscrete as xA, FrontSide as Ze, Texture as Na, VectorKeyframeTrack as La, NumberKeyframeTrack as Oa, QuaternionKeyframeTrack as Pa, Sphere as jA, Interpolant as SA, CompressedCubeTexture as DA, CompressedArrayTexture as vA, CompressedTexture as Ja, RGBAFormat as ee, RGBA_ASTC_4x4_Format as wt, RGB_BPTC_UNSIGNED_Format as FA, RGBA_BPTC_Format as RA, RGBA_ETC2_EAC_Format as MA, RGBA_PVRTC_4BPPV1_Format as TA, RGBA_S3TC_DXT5_Format as UA, RGB_ETC1_Format as GA, RGB_ETC2_Format as HA, RGB_PVRTC_4BPPV1_Format as NA, RGBA_S3TC_DXT1_Format as LA, UnsignedByteType as X, HalfFloatType as ke, FloatType as R, DataTexture as Ge, Data3DTexture as OA, NoColorSpace as PA, RGFormat as He, RedFormat as Ne, RGBA_ASTC_6x6_Format as qa, WebGL3DRenderTarget as ne, ShaderMaterial as ia, InstancedBufferGeometry as _a, DynamicDrawUsage as Ka, Scene as JA, PlaneGeometry as qA } from "three";
|
|
6
6
|
class es {
|
|
7
7
|
constructor() {
|
|
8
8
|
this.cullMap = [], this.cullMaterial = new E.MeshBasicMaterial({ vertexColors: !0 }), this.cullMaterial.side = E.FrontSide, this.cullTarget = this._createCullTarget(), this.cullPixels = new Uint8Array(4 * this.cullTarget.width * this.cullTarget.height);
|
|
@@ -26,7 +26,7 @@ class es {
|
|
|
26
26
|
return this.cullMap[e];
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
const _ = new Fa(),
|
|
29
|
+
const _ = new Fa(), G = new D(), za = new D(), Va = new Ra(), Ke = new Se(), Ya = new Se(), Wa = new eA();
|
|
30
30
|
class $ {
|
|
31
31
|
constructor(e) {
|
|
32
32
|
this.center = new D(e[0], e[1], e[2]), this.e1 = new D(e[3], e[4], e[5]), this.e2 = new D(e[6], e[7], e[8]), this.e3 = new D(e[9], e[10], e[11]), this.halfSize = new D(this.e1.length(), this.e2.length(), this.e3.length()), this.e1.normalize(), this.e2.normalize(), this.e3.normalize(), this.rotationMatrix = new Fa(), this.rotationMatrix.set(this.e1.x, this.e2.x, this.e3.x, this.e1.y, this.e2.y, this.e3.y, this.e1.z, this.e2.z, this.e3.z);
|
|
@@ -39,17 +39,17 @@ class $ {
|
|
|
39
39
|
}
|
|
40
40
|
applyMatrix4(e) {
|
|
41
41
|
const a = e.elements;
|
|
42
|
-
let t =
|
|
43
|
-
const A =
|
|
42
|
+
let t = G.set(a[0], a[1], a[2]).length();
|
|
43
|
+
const A = G.set(a[4], a[5], a[6]).length(), i = G.set(a[8], a[9], a[10]).length();
|
|
44
44
|
e.determinant() < 0 && (t = -t), _.setFromMatrix4(e);
|
|
45
45
|
const s = 1 / t, r = 1 / A, o = 1 / i;
|
|
46
|
-
return _.elements[0] *= s, _.elements[1] *= s, _.elements[2] *= s, _.elements[3] *= r, _.elements[4] *= r, _.elements[5] *= r, _.elements[6] *= o, _.elements[7] *= o, _.elements[8] *= o, this.rotationMatrix.multiply(_), this.halfSize.x *= t, this.halfSize.y *= A, this.halfSize.z *= i,
|
|
46
|
+
return _.elements[0] *= s, _.elements[1] *= s, _.elements[2] *= s, _.elements[3] *= r, _.elements[4] *= r, _.elements[5] *= r, _.elements[6] *= o, _.elements[7] *= o, _.elements[8] *= o, this.rotationMatrix.multiply(_), this.halfSize.x *= t, this.halfSize.y *= A, this.halfSize.z *= i, G.setFromMatrixPosition(e), this.center.applyMatrix4(e), this.rotationMatrix.extractBasis(this.e1, this.e2, this.e3), this;
|
|
47
47
|
}
|
|
48
48
|
intersectRay(e, a) {
|
|
49
|
-
return this.getSize(za), Va.setFromCenterAndSize(
|
|
49
|
+
return this.getSize(za), Va.setFromCenterAndSize(G.set(0, 0, 0), za), Ke.setFromMatrix3(this.rotationMatrix), Ke.setPosition(this.center), Ya.copy(Ke).invert(), Wa.copy(e).applyMatrix4(Ya), Wa.intersectBox(Va, a) ? a.applyMatrix4(Ke) : null;
|
|
50
50
|
}
|
|
51
51
|
intersectsRay(e) {
|
|
52
|
-
return this.intersectRay(e,
|
|
52
|
+
return this.intersectRay(e, G) !== null;
|
|
53
53
|
}
|
|
54
54
|
insidePlane(e) {
|
|
55
55
|
e.normal.normalize();
|
|
@@ -64,8 +64,8 @@ class $ {
|
|
|
64
64
|
return !0;
|
|
65
65
|
}
|
|
66
66
|
distanceToPoint(e) {
|
|
67
|
-
|
|
68
|
-
let a = Math.max(0, Math.max(-this.halfSize.x -
|
|
67
|
+
G.copy(e), G.sub(this.center), G.applyMatrix3(this.rotationMatrix);
|
|
68
|
+
let a = Math.max(0, Math.max(-this.halfSize.x - G.x, G.x - this.halfSize.x)), t = Math.max(0, Math.max(-this.halfSize.y - G.y, G.y - this.halfSize.y)), A = Math.max(0, Math.max(-this.halfSize.z - G.z, G.z - this.halfSize.z));
|
|
69
69
|
return Math.sqrt(a * a + t * t + A * A);
|
|
70
70
|
}
|
|
71
71
|
helper() {
|
|
@@ -191,10 +191,10 @@ class xt {
|
|
|
191
191
|
if (s instanceof Object) {
|
|
192
192
|
if (Array.isArray(s)) return s;
|
|
193
193
|
{
|
|
194
|
-
const { buffer: r, binOffset: o, binLength: n } = this,
|
|
194
|
+
const { buffer: r, binOffset: o, binLength: n } = this, b = s.byteOffset || 0, d = s.type || A, g = s.componentType || t;
|
|
195
195
|
if ("type" in s && A && s.type !== A) throw new Error("FeatureTable: Specified type does not match expected type.");
|
|
196
196
|
let l, h;
|
|
197
|
-
switch (
|
|
197
|
+
switch (d) {
|
|
198
198
|
case "SCALAR":
|
|
199
199
|
l = 1;
|
|
200
200
|
break;
|
|
@@ -210,7 +210,7 @@ class xt {
|
|
|
210
210
|
default:
|
|
211
211
|
throw new Error(`FeatureTable : Feature type not provided for "${e}".`);
|
|
212
212
|
}
|
|
213
|
-
const f = o +
|
|
213
|
+
const f = o + b, I = a * l;
|
|
214
214
|
switch (g) {
|
|
215
215
|
case "BYTE":
|
|
216
216
|
h = new Int8Array(r, f, I);
|
|
@@ -257,25 +257,25 @@ class KA extends xt {
|
|
|
257
257
|
function Xa(c) {
|
|
258
258
|
let e, a, t, A = -1, i = 0;
|
|
259
259
|
for (let n = 0; n < c.length; ++n) {
|
|
260
|
-
const
|
|
261
|
-
if (e === void 0 && (e =
|
|
262
|
-
if (a === void 0 && (a =
|
|
263
|
-
if (t === void 0 && (t =
|
|
264
|
-
if (A === -1 && (A =
|
|
265
|
-
i +=
|
|
260
|
+
const b = c[n];
|
|
261
|
+
if (e === void 0 && (e = b.array.constructor), e !== b.array.constructor) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."), null;
|
|
262
|
+
if (a === void 0 && (a = b.itemSize), a !== b.itemSize) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."), null;
|
|
263
|
+
if (t === void 0 && (t = b.normalized), t !== b.normalized) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."), null;
|
|
264
|
+
if (A === -1 && (A = b.gpuType), A !== b.gpuType) return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."), null;
|
|
265
|
+
i += b.count * a;
|
|
266
266
|
}
|
|
267
267
|
const s = new e(i), r = new he(s, a, t);
|
|
268
268
|
let o = 0;
|
|
269
269
|
for (let n = 0; n < c.length; ++n) {
|
|
270
|
-
const
|
|
271
|
-
if (
|
|
272
|
-
const
|
|
273
|
-
for (let g = 0, l =
|
|
274
|
-
const f =
|
|
275
|
-
r.setComponent(g +
|
|
270
|
+
const b = c[n];
|
|
271
|
+
if (b.isInterleavedBufferAttribute) {
|
|
272
|
+
const d = o / a;
|
|
273
|
+
for (let g = 0, l = b.count; g < l; g++) for (let h = 0; h < a; h++) {
|
|
274
|
+
const f = b.getComponent(g, h);
|
|
275
|
+
r.setComponent(g + d, h, f);
|
|
276
276
|
}
|
|
277
|
-
} else s.set(
|
|
278
|
-
o +=
|
|
277
|
+
} else s.set(b.array, o);
|
|
278
|
+
o += b.count * a;
|
|
279
279
|
}
|
|
280
280
|
return A !== void 0 && (r.gpuType = A), r;
|
|
281
281
|
}
|
|
@@ -312,14 +312,14 @@ class jt {
|
|
|
312
312
|
console.assert(r === "b3dm");
|
|
313
313
|
const o = s.getUint32(8, !0);
|
|
314
314
|
console.assert(o === e.byteLength);
|
|
315
|
-
const n = s.getUint32(12, !0),
|
|
316
|
-
new KA(e, l.getData("BATCH_LENGTH"), h,
|
|
317
|
-
const f = h +
|
|
315
|
+
const n = s.getUint32(12, !0), b = s.getUint32(16, !0), d = s.getUint32(20, !0), g = s.getUint32(24, !0), l = new xt(e, 28, n, b), h = 28 + n + b;
|
|
316
|
+
new KA(e, l.getData("BATCH_LENGTH"), h, d, g);
|
|
317
|
+
const f = h + d + g, I = new Uint8Array(e, f, o - f).slice().buffer;
|
|
318
318
|
return new Promise(async (m, u) => {
|
|
319
319
|
await this.checkLoaderInitialized(), this.gltfLoader.parse(I, null, (C) => {
|
|
320
320
|
const B = l.getData("RTC_CENTER");
|
|
321
|
-
B ? (this.tempMatrix.makeTranslation(B[0], B[1], B[2]), C.scene.applyMatrix4(this.tempMatrix)) : C.userData.gltfExtensions && C.userData.gltfExtensions.CESIUM_RTC && (this.tempMatrix.makeTranslation(C.userData.gltfExtensions.CESIUM_RTC.center[0], C.userData.gltfExtensions.CESIUM_RTC.center[1], C.userData.gltfExtensions.CESIUM_RTC.center[2]), C.scene.applyMatrix4(this.tempMatrix)), t && C.scene.applyMatrix4(i.zUpToYUpMatrix), C.scene.asset = C.asset, C.scene.traverse((
|
|
322
|
-
|
|
321
|
+
B ? (this.tempMatrix.makeTranslation(B[0], B[1], B[2]), C.scene.applyMatrix4(this.tempMatrix)) : C.userData.gltfExtensions && C.userData.gltfExtensions.CESIUM_RTC && (this.tempMatrix.makeTranslation(C.userData.gltfExtensions.CESIUM_RTC.center[0], C.userData.gltfExtensions.CESIUM_RTC.center[1], C.userData.gltfExtensions.CESIUM_RTC.center[2]), C.scene.applyMatrix4(this.tempMatrix)), t && C.scene.applyMatrix4(i.zUpToYUpMatrix), C.scene.asset = C.asset, C.scene.traverse((w) => {
|
|
322
|
+
w.isMesh && (A && w.applyMatrix4(i.zUpToYUpMatrix), a && a(w));
|
|
323
323
|
}), m(C.scene);
|
|
324
324
|
}, (C) => {
|
|
325
325
|
console.error(C);
|
|
@@ -329,14 +329,14 @@ class jt {
|
|
|
329
329
|
parseB3DMInstanced(e, a, t, A, i) {
|
|
330
330
|
return this.parseB3DM(e, a, A, i).then((s) => {
|
|
331
331
|
let r, o = [], n = [];
|
|
332
|
-
s.updateWorldMatrix(!1, !0), s.traverse((
|
|
333
|
-
|
|
332
|
+
s.updateWorldMatrix(!1, !0), s.traverse((d) => {
|
|
333
|
+
d.isMesh && (d.geometry.applyMatrix4(d.matrixWorld), o.push(d.geometry), n.push(d.material));
|
|
334
334
|
});
|
|
335
|
-
let
|
|
335
|
+
let b = function(d) {
|
|
336
336
|
let g = /* @__PURE__ */ new Set();
|
|
337
|
-
return
|
|
337
|
+
return d.forEach((h) => {
|
|
338
338
|
for (let f in h.attributes) g.add(f);
|
|
339
|
-
}),
|
|
339
|
+
}), d.forEach((h) => {
|
|
340
340
|
g.forEach((f) => {
|
|
341
341
|
if (!h.attributes[f]) {
|
|
342
342
|
const I = function(u) {
|
|
@@ -356,8 +356,8 @@ class jt {
|
|
|
356
356
|
}
|
|
357
357
|
});
|
|
358
358
|
}), function(h, f = !1) {
|
|
359
|
-
const I = h[0].index !== null, m = new Set(Object.keys(h[0].attributes)), u = new Set(Object.keys(h[0].morphAttributes)), C = {}, B = {},
|
|
360
|
-
let
|
|
359
|
+
const I = h[0].index !== null, m = new Set(Object.keys(h[0].attributes)), u = new Set(Object.keys(h[0].morphAttributes)), C = {}, B = {}, w = h[0].morphTargetsRelative, k = new ea();
|
|
360
|
+
let y = 0;
|
|
361
361
|
for (let p = 0; p < h.length; ++p) {
|
|
362
362
|
const Q = h[p];
|
|
363
363
|
let x = 0;
|
|
@@ -367,7 +367,7 @@ class jt {
|
|
|
367
367
|
C[j] === void 0 && (C[j] = []), C[j].push(Q.attributes[j]), x++;
|
|
368
368
|
}
|
|
369
369
|
if (x !== m.size) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + p + ". Make sure all geometries have the same number of attributes."), null;
|
|
370
|
-
if (
|
|
370
|
+
if (w !== Q.morphTargetsRelative) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + p + ". .morphTargetsRelative must be consistent throughout all geometries."), null;
|
|
371
371
|
for (const j in Q.morphAttributes) {
|
|
372
372
|
if (!u.has(j)) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + p + ". .morphAttributes must be consistent throughout all geometries."), null;
|
|
373
373
|
B[j] === void 0 && (B[j] = []), B[j].push(Q.morphAttributes[j]);
|
|
@@ -379,7 +379,7 @@ class jt {
|
|
|
379
379
|
if (Q.attributes.position === void 0) return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index " + p + ". The geometry must have either an index or a position attribute"), null;
|
|
380
380
|
j = Q.attributes.position.count;
|
|
381
381
|
}
|
|
382
|
-
k.addGroup(
|
|
382
|
+
k.addGroup(y, j, p), y += j;
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
385
|
if (I) {
|
|
@@ -410,9 +410,9 @@ class jt {
|
|
|
410
410
|
}
|
|
411
411
|
}
|
|
412
412
|
return k;
|
|
413
|
-
}(
|
|
413
|
+
}(d, !0);
|
|
414
414
|
}(o);
|
|
415
|
-
return r = new E.InstancedMesh(
|
|
415
|
+
return r = new E.InstancedMesh(b, n, t), r.baseMatrix = new E.Matrix4().identity(), r;
|
|
416
416
|
});
|
|
417
417
|
}
|
|
418
418
|
}
|
|
@@ -451,7 +451,7 @@ class XA {
|
|
|
451
451
|
return new Promise(async (s, r) => {
|
|
452
452
|
await i.checkLoaderInitialized(), i.gltfLoader.parse(e, null, (o) => {
|
|
453
453
|
o.scene;
|
|
454
|
-
const n = o.scene.children[0],
|
|
454
|
+
const n = o.scene.children[0], b = n.geometry.attributes.position, d = n.geometry.attributes.color, g = n.geometry.attributes.cov_0, l = n.geometry.attributes.cov_1, h = A.addSplatsTile(b, d, g, l);
|
|
455
455
|
o.scene.traverse((f) => {
|
|
456
456
|
f.dispose && f.dispose();
|
|
457
457
|
}), s(h);
|
|
@@ -513,11 +513,11 @@ class Dt extends Ma {
|
|
|
513
513
|
}, o = new Ce(this.manager);
|
|
514
514
|
o.setPath(this.path), o.setResponseType("arraybuffer"), o.setRequestHeader(this.requestHeader), o.setWithCredentials(this.withCredentials), o.load(e, function(n) {
|
|
515
515
|
try {
|
|
516
|
-
i.parse(n, s, function(
|
|
517
|
-
a(
|
|
516
|
+
i.parse(n, s, function(b) {
|
|
517
|
+
a(b), i.manager.itemEnd(e);
|
|
518
518
|
}, r);
|
|
519
|
-
} catch (
|
|
520
|
-
r(
|
|
519
|
+
} catch (b) {
|
|
520
|
+
r(b);
|
|
521
521
|
}
|
|
522
522
|
}, t, r);
|
|
523
523
|
}
|
|
@@ -544,8 +544,8 @@ class Dt extends Ma {
|
|
|
544
544
|
if (o.decode(new Uint8Array(e, 0, 4)) === vt) {
|
|
545
545
|
try {
|
|
546
546
|
s[S.KHR_BINARY_GLTF] = new Bi(e);
|
|
547
|
-
} catch (
|
|
548
|
-
return void (A && A(
|
|
547
|
+
} catch (b) {
|
|
548
|
+
return void (A && A(b));
|
|
549
549
|
}
|
|
550
550
|
i = JSON.parse(s[S.KHR_BINARY_GLTF].content);
|
|
551
551
|
} else i = JSON.parse(o.decode(e));
|
|
@@ -553,27 +553,27 @@ class Dt extends Ma {
|
|
|
553
553
|
if (i.asset === void 0 || i.asset.version[0] < 2) return void (A && A(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));
|
|
554
554
|
const n = new Fi(i, { path: a || this.resourcePath || "", crossOrigin: this.crossOrigin, requestHeader: this.requestHeader, manager: this.manager, ktx2Loader: this.ktx2Loader, meshoptDecoder: this.meshoptDecoder });
|
|
555
555
|
n.fileLoader.setRequestHeader(this.requestHeader);
|
|
556
|
-
for (let
|
|
557
|
-
const
|
|
558
|
-
|
|
556
|
+
for (let b = 0; b < this.pluginCallbacks.length; b++) {
|
|
557
|
+
const d = this.pluginCallbacks[b](n);
|
|
558
|
+
d.name || console.error("THREE.GLTFLoader: Invalid plugin found: missing name"), r[d.name] = d, s[d.name] = !0;
|
|
559
559
|
}
|
|
560
|
-
if (i.extensionsUsed) for (let
|
|
561
|
-
const
|
|
562
|
-
switch (
|
|
560
|
+
if (i.extensionsUsed) for (let b = 0; b < i.extensionsUsed.length; ++b) {
|
|
561
|
+
const d = i.extensionsUsed[b], g = i.extensionsRequired || [];
|
|
562
|
+
switch (d) {
|
|
563
563
|
case S.KHR_MATERIALS_UNLIT:
|
|
564
|
-
s[
|
|
564
|
+
s[d] = new ei();
|
|
565
565
|
break;
|
|
566
566
|
case S.KHR_DRACO_MESH_COMPRESSION:
|
|
567
|
-
s[
|
|
567
|
+
s[d] = new Ci(i, this.dracoLoader);
|
|
568
568
|
break;
|
|
569
569
|
case S.KHR_TEXTURE_TRANSFORM:
|
|
570
|
-
s[
|
|
570
|
+
s[d] = new pi();
|
|
571
571
|
break;
|
|
572
572
|
case S.KHR_MESH_QUANTIZATION:
|
|
573
|
-
s[
|
|
573
|
+
s[d] = new Ei();
|
|
574
574
|
break;
|
|
575
575
|
default:
|
|
576
|
-
g.indexOf(
|
|
576
|
+
g.indexOf(d) >= 0 && r[d] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + d + '".');
|
|
577
577
|
}
|
|
578
578
|
}
|
|
579
579
|
n.setExtensions(s), n.setPlugins(r), n.parse(t, A);
|
|
@@ -648,7 +648,7 @@ class ei {
|
|
|
648
648
|
this.name = S.KHR_MATERIALS_UNLIT;
|
|
649
649
|
}
|
|
650
650
|
getMaterialType() {
|
|
651
|
-
return
|
|
651
|
+
return Ue;
|
|
652
652
|
}
|
|
653
653
|
extendParams(e, a, t) {
|
|
654
654
|
const A = [];
|
|
@@ -923,12 +923,12 @@ class fi {
|
|
|
923
923
|
return null;
|
|
924
924
|
}
|
|
925
925
|
return i.then(function(r) {
|
|
926
|
-
const o = A.byteOffset || 0, n = A.byteLength || 0,
|
|
927
|
-
return s.decodeGltfBufferAsync ? s.decodeGltfBufferAsync(
|
|
926
|
+
const o = A.byteOffset || 0, n = A.byteLength || 0, b = A.count, d = A.byteStride, g = new Uint8Array(r, o, n);
|
|
927
|
+
return s.decodeGltfBufferAsync ? s.decodeGltfBufferAsync(b, d, g, A.mode, A.filter).then(function(l) {
|
|
928
928
|
return l.buffer;
|
|
929
929
|
}) : s.ready.then(function() {
|
|
930
|
-
const l = new ArrayBuffer(
|
|
931
|
-
return s.decodeGltfBuffer(new Uint8Array(l),
|
|
930
|
+
const l = new ArrayBuffer(b * d);
|
|
931
|
+
return s.decodeGltfBuffer(new Uint8Array(l), b, d, g, A.mode, A.filter), l;
|
|
932
932
|
});
|
|
933
933
|
});
|
|
934
934
|
}
|
|
@@ -943,14 +943,14 @@ class ui {
|
|
|
943
943
|
const a = this.parser.json, t = a.nodes[e];
|
|
944
944
|
if (!t.extensions || !t.extensions[this.name] || t.mesh === void 0) return null;
|
|
945
945
|
const A = a.meshes[t.mesh];
|
|
946
|
-
for (const o of A.primitives) if (o.mode !==
|
|
946
|
+
for (const o of A.primitives) if (o.mode !== P.TRIANGLES && o.mode !== P.TRIANGLE_STRIP && o.mode !== P.TRIANGLE_FAN && o.mode !== void 0) return null;
|
|
947
947
|
const i = t.extensions[this.name].attributes, s = [], r = {};
|
|
948
948
|
for (const o in i) s.push(this.parser.getDependency("accessor", i[o]).then((n) => (r[o] = n, r[o])));
|
|
949
949
|
return s.length < 1 ? null : (s.push(this.parser.createNodeMesh(e)), Promise.all(s).then((o) => {
|
|
950
|
-
const n = o.pop(),
|
|
951
|
-
for (const l of
|
|
952
|
-
const h = new Se(), f = new D(), I = new pt(), m = new D(1, 1, 1), u = new sA(l.geometry, l.material,
|
|
953
|
-
for (let C = 0; C <
|
|
950
|
+
const n = o.pop(), b = n.isGroup ? n.children : [n], d = o[0].count, g = [];
|
|
951
|
+
for (const l of b) {
|
|
952
|
+
const h = new Se(), f = new D(), I = new pt(), m = new D(1, 1, 1), u = new sA(l.geometry, l.material, d);
|
|
953
|
+
for (let C = 0; C < d; C++) r.TRANSLATION && f.fromBufferAttribute(r.TRANSLATION, C), r.ROTATION && I.fromBufferAttribute(r.ROTATION, C), r.SCALE && m.fromBufferAttribute(r.SCALE, C), u.setMatrixAt(C, h.compose(f, I, m));
|
|
954
954
|
for (const C in r) if (C === "_COLOR_0") {
|
|
955
955
|
const B = r[C];
|
|
956
956
|
u.instanceColor = new wa(B.array, B.itemSize, B.normalized);
|
|
@@ -993,25 +993,25 @@ class Ci {
|
|
|
993
993
|
}
|
|
994
994
|
decodePrimitive(e, a) {
|
|
995
995
|
const t = this.json, A = this.dracoLoader, i = e.extensions[this.name].bufferView, s = e.extensions[this.name].attributes, r = {}, o = {}, n = {};
|
|
996
|
-
for (const
|
|
997
|
-
const
|
|
998
|
-
r[
|
|
996
|
+
for (const b in s) {
|
|
997
|
+
const d = Sa[b] || b.toLowerCase();
|
|
998
|
+
r[d] = s[b];
|
|
999
999
|
}
|
|
1000
|
-
for (const
|
|
1001
|
-
const
|
|
1002
|
-
if (s[
|
|
1003
|
-
const g = t.accessors[e.attributes[
|
|
1004
|
-
n[
|
|
1000
|
+
for (const b in e.attributes) {
|
|
1001
|
+
const d = Sa[b] || b.toLowerCase();
|
|
1002
|
+
if (s[b] !== void 0) {
|
|
1003
|
+
const g = t.accessors[e.attributes[b]], l = xe[g.componentType];
|
|
1004
|
+
n[d] = l.name, o[d] = g.normalized === !0;
|
|
1005
1005
|
}
|
|
1006
1006
|
}
|
|
1007
|
-
return a.getDependency("bufferView", i).then(function(
|
|
1008
|
-
return new Promise(function(
|
|
1009
|
-
A.decodeDracoFile(
|
|
1007
|
+
return a.getDependency("bufferView", i).then(function(b) {
|
|
1008
|
+
return new Promise(function(d, g) {
|
|
1009
|
+
A.decodeDracoFile(b, function(l) {
|
|
1010
1010
|
for (const h in l.attributes) {
|
|
1011
1011
|
const f = l.attributes[h], I = o[h];
|
|
1012
1012
|
I !== void 0 && (f.normalized = I);
|
|
1013
1013
|
}
|
|
1014
|
-
|
|
1014
|
+
d(l);
|
|
1015
1015
|
}, r, n, K, g);
|
|
1016
1016
|
});
|
|
1017
1017
|
});
|
|
@@ -1040,10 +1040,10 @@ class Ft extends SA {
|
|
|
1040
1040
|
return a;
|
|
1041
1041
|
}
|
|
1042
1042
|
interpolate_(e, a, t, A) {
|
|
1043
|
-
const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, o = 2 * r, n = 3 * r,
|
|
1043
|
+
const i = this.resultBuffer, s = this.sampleValues, r = this.valueSize, o = 2 * r, n = 3 * r, b = A - a, d = (t - a) / b, g = d * d, l = g * d, h = e * n, f = h - n, I = -2 * l + 3 * g, m = l - g, u = 1 - I, C = m - g + d;
|
|
1044
1044
|
for (let B = 0; B !== r; B++) {
|
|
1045
|
-
const
|
|
1046
|
-
i[B] = u *
|
|
1045
|
+
const w = s[f + B + r], k = s[f + B + o] * b, y = s[h + B + r], p = s[h + B] * b;
|
|
1046
|
+
i[B] = u * w + C * k + I * y + m * p;
|
|
1047
1047
|
}
|
|
1048
1048
|
return i;
|
|
1049
1049
|
}
|
|
@@ -1055,7 +1055,7 @@ class yi extends Ft {
|
|
|
1055
1055
|
return Qi.fromArray(i).normalize().toArray(i), i;
|
|
1056
1056
|
}
|
|
1057
1057
|
}
|
|
1058
|
-
const
|
|
1058
|
+
const P = { FLOAT: 5126, FLOAT_MAT3: 35675, FLOAT_MAT4: 35676, FLOAT_VEC2: 35664, FLOAT_VEC3: 35665, FLOAT_VEC4: 35666, LINEAR: 9729, REPEAT: 10497, SAMPLER_2D: 35678, POINTS: 0, LINES: 1, LINE_LOOP: 2, LINE_STRIP: 3, TRIANGLES: 4, TRIANGLE_STRIP: 5, TRIANGLE_FAN: 6, UNSIGNED_BYTE: 5121, UNSIGNED_SHORT: 5123 }, xe = { 5120: Int8Array, 5121: Uint8Array, 5122: Int16Array, 5123: Uint16Array, 5125: Uint32Array, 5126: Float32Array }, $a = { 9728: v, 9729: Be, 9984: EA, 9985: QA, 9986: yA, 9987: $e }, et = { 33071: wA, 33648: kA, 10497: ka }, na = { SCALAR: 1, VEC2: 2, VEC3: 3, VEC4: 4, MAT2: 4, MAT3: 9, MAT4: 16 }, Sa = { POSITION: "position", NORMAL: "normal", TANGENT: "tangent", TEXCOORD_0: "uv", TEXCOORD_1: "uv1", TEXCOORD_2: "uv2", TEXCOORD_3: "uv3", COLOR_0: "color", WEIGHTS_0: "skinWeight", JOINTS_0: "skinIndex" }, oe = { scale: "scale", translation: "position", rotation: "quaternion", weights: "morphTargetInfluences" }, wi = { CUBICSPLINE: void 0, LINEAR: yt, STEP: xA }, ki = "OPAQUE", xi = "MASK", ji = "BLEND";
|
|
1059
1059
|
function fe(c, e, a) {
|
|
1060
1060
|
for (const t in a.extensions) c[t] === void 0 && (e.userData.gltfExtensions = e.userData.gltfExtensions || {}, e.userData.gltfExtensions[t] = a.extensions[t]);
|
|
1061
1061
|
}
|
|
@@ -1154,7 +1154,7 @@ class Fi {
|
|
|
1154
1154
|
const A = t.clone(), i = (s, r) => {
|
|
1155
1155
|
const o = this.associations.get(s);
|
|
1156
1156
|
o != null && this.associations.set(r, o);
|
|
1157
|
-
for (const [n,
|
|
1157
|
+
for (const [n, b] of s.children.entries()) i(b, r.children[n]);
|
|
1158
1158
|
};
|
|
1159
1159
|
return i(t, A), A.name += "_instance_" + e.uses[a]++, A;
|
|
1160
1160
|
}
|
|
@@ -1272,19 +1272,19 @@ class Fi {
|
|
|
1272
1272
|
}
|
|
1273
1273
|
const i = [];
|
|
1274
1274
|
return A.bufferView !== void 0 ? i.push(this.getDependency("bufferView", A.bufferView)) : i.push(null), A.sparse !== void 0 && (i.push(this.getDependency("bufferView", A.sparse.indices.bufferView)), i.push(this.getDependency("bufferView", A.sparse.values.bufferView))), Promise.all(i).then(function(s) {
|
|
1275
|
-
const r = s[0], o = na[A.type], n = xe[A.componentType],
|
|
1275
|
+
const r = s[0], o = na[A.type], n = xe[A.componentType], b = n.BYTES_PER_ELEMENT, d = b * o, g = A.byteOffset || 0, l = A.bufferView !== void 0 ? t.bufferViews[A.bufferView].byteStride : void 0, h = A.normalized === !0;
|
|
1276
1276
|
let f, I;
|
|
1277
|
-
if (l && l !==
|
|
1277
|
+
if (l && l !== d) {
|
|
1278
1278
|
const m = Math.floor(g / l), u = "InterleavedBuffer:" + A.bufferView + ":" + A.componentType + ":" + m + ":" + A.count;
|
|
1279
1279
|
let C = a.cache.get(u);
|
|
1280
|
-
C || (f = new n(r, m * l, A.count * l /
|
|
1280
|
+
C || (f = new n(r, m * l, A.count * l / b), C = new oA(f, l / b), a.cache.add(u, C)), I = new cA(C, o, g % l / b, h);
|
|
1281
1281
|
} else f = r === null ? new n(A.count * o) : new n(r, g, A.count * o), I = new he(f, o, h);
|
|
1282
1282
|
if (A.sparse !== void 0) {
|
|
1283
|
-
const m = na.SCALAR, u = xe[A.sparse.indices.componentType], C = A.sparse.indices.byteOffset || 0, B = A.sparse.values.byteOffset || 0,
|
|
1283
|
+
const m = na.SCALAR, u = xe[A.sparse.indices.componentType], C = A.sparse.indices.byteOffset || 0, B = A.sparse.values.byteOffset || 0, w = new u(s[1], C, A.sparse.count * m), k = new n(s[2], B, A.sparse.count * o);
|
|
1284
1284
|
r !== null && (I = new he(I.array.slice(), I.itemSize, I.normalized)), I.normalized = !1;
|
|
1285
|
-
for (let
|
|
1286
|
-
const Q = y
|
|
1287
|
-
if (I.setX(Q, k[
|
|
1285
|
+
for (let y = 0, p = w.length; y < p; y++) {
|
|
1286
|
+
const Q = w[y];
|
|
1287
|
+
if (I.setX(Q, k[y * o]), o >= 2 && I.setY(Q, k[y * o + 1]), o >= 3 && I.setZ(Q, k[y * o + 2]), o >= 4 && I.setW(Q, k[y * o + 3]), o >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
|
|
1288
1288
|
}
|
|
1289
1289
|
I.normalized = h;
|
|
1290
1290
|
}
|
|
@@ -1303,10 +1303,10 @@ class Fi {
|
|
|
1303
1303
|
loadTextureImage(e, a, t) {
|
|
1304
1304
|
const A = this, i = this.json, s = i.textures[e], r = i.images[a], o = (r.uri || r.bufferView) + ":" + s.sampler;
|
|
1305
1305
|
if (this.textureCache[o]) return this.textureCache[o];
|
|
1306
|
-
const n = this.loadImageSource(a, t).then(function(
|
|
1307
|
-
|
|
1308
|
-
const
|
|
1309
|
-
return
|
|
1306
|
+
const n = this.loadImageSource(a, t).then(function(b) {
|
|
1307
|
+
b.flipY = !1, b.name = s.name || r.name || "", b.name === "" && typeof r.uri == "string" && r.uri.startsWith("data:image/") === !1 && (b.name = r.uri);
|
|
1308
|
+
const d = (i.samplers || {})[s.sampler] || {};
|
|
1309
|
+
return b.magFilter = $a[d.magFilter] || Be, b.minFilter = $a[d.minFilter] || $e, b.wrapS = et[d.wrapS] || ka, b.wrapT = et[d.wrapT] || ka, b.generateMipmaps = !b.isCompressedTexture && b.minFilter !== v && b.minFilter !== Be, A.associations.set(b, { textures: e }), b;
|
|
1310
1310
|
}).catch(function() {
|
|
1311
1311
|
return null;
|
|
1312
1312
|
});
|
|
@@ -1314,30 +1314,30 @@ class Fi {
|
|
|
1314
1314
|
}
|
|
1315
1315
|
loadImageSource(e, a) {
|
|
1316
1316
|
const t = this, A = this.json, i = this.options;
|
|
1317
|
-
if (this.sourceCache[e] !== void 0) return this.sourceCache[e].then((
|
|
1317
|
+
if (this.sourceCache[e] !== void 0) return this.sourceCache[e].then((d) => d.clone());
|
|
1318
1318
|
const s = A.images[e], r = self.URL || self.webkitURL;
|
|
1319
1319
|
let o = s.uri || "", n = !1;
|
|
1320
|
-
if (s.bufferView !== void 0) o = t.getDependency("bufferView", s.bufferView).then(function(
|
|
1320
|
+
if (s.bufferView !== void 0) o = t.getDependency("bufferView", s.bufferView).then(function(d) {
|
|
1321
1321
|
n = !0;
|
|
1322
|
-
const g = new Blob([
|
|
1322
|
+
const g = new Blob([d], { type: s.mimeType });
|
|
1323
1323
|
return o = r.createObjectURL(g), o;
|
|
1324
1324
|
});
|
|
1325
1325
|
else if (s.uri === void 0) throw new Error("THREE.GLTFLoader: Image " + e + " is missing URI and bufferView");
|
|
1326
|
-
const
|
|
1326
|
+
const b = Promise.resolve(o).then(function(d) {
|
|
1327
1327
|
return new Promise(function(g, l) {
|
|
1328
1328
|
let h = g;
|
|
1329
1329
|
a.isImageBitmapLoader === !0 && (h = function(f) {
|
|
1330
1330
|
const I = new Na(f);
|
|
1331
1331
|
I.needsUpdate = !0, g(I);
|
|
1332
|
-
}), a.load(Le.resolveURL(
|
|
1332
|
+
}), a.load(Le.resolveURL(d, i.path), h, void 0, l);
|
|
1333
1333
|
});
|
|
1334
|
-
}).then(function(
|
|
1334
|
+
}).then(function(d) {
|
|
1335
1335
|
var g;
|
|
1336
|
-
return n === !0 && r.revokeObjectURL(o), se(
|
|
1337
|
-
}).catch(function(
|
|
1338
|
-
throw console.error("THREE.GLTFLoader: Couldn't load texture", o),
|
|
1336
|
+
return n === !0 && r.revokeObjectURL(o), se(d, s), d.userData.mimeType = s.mimeType || ((g = s.uri).search(/\.jpe?g($|\?)/i) > 0 || g.search(/^data\:image\/jpeg/) === 0 ? "image/jpeg" : g.search(/\.webp($|\?)/i) > 0 || g.search(/^data\:image\/webp/) === 0 ? "image/webp" : g.search(/\.ktx2($|\?)/i) > 0 || g.search(/^data\:image\/ktx2/) === 0 ? "image/ktx2" : "image/png"), d;
|
|
1337
|
+
}).catch(function(d) {
|
|
1338
|
+
throw console.error("THREE.GLTFLoader: Couldn't load texture", o), d;
|
|
1339
1339
|
});
|
|
1340
|
-
return this.sourceCache[e] =
|
|
1340
|
+
return this.sourceCache[e] = b, b;
|
|
1341
1341
|
}
|
|
1342
1342
|
assignTexture(e, a, t, A) {
|
|
1343
1343
|
const i = this;
|
|
@@ -1382,33 +1382,33 @@ class Fi {
|
|
|
1382
1382
|
let s;
|
|
1383
1383
|
const r = {}, o = [];
|
|
1384
1384
|
if ((i.extensions || {})[S.KHR_MATERIALS_UNLIT]) {
|
|
1385
|
-
const
|
|
1386
|
-
s =
|
|
1385
|
+
const b = A[S.KHR_MATERIALS_UNLIT];
|
|
1386
|
+
s = b.getMaterialType(), o.push(b.extendParams(r, i, a));
|
|
1387
1387
|
} else {
|
|
1388
|
-
const
|
|
1389
|
-
if (r.color = new le(1, 1, 1), r.opacity = 1, Array.isArray(
|
|
1390
|
-
const
|
|
1391
|
-
r.color.setRGB(
|
|
1388
|
+
const b = i.pbrMetallicRoughness || {};
|
|
1389
|
+
if (r.color = new le(1, 1, 1), r.opacity = 1, Array.isArray(b.baseColorFactor)) {
|
|
1390
|
+
const d = b.baseColorFactor;
|
|
1391
|
+
r.color.setRGB(d[0], d[1], d[2], K), r.opacity = d[3];
|
|
1392
1392
|
}
|
|
1393
|
-
|
|
1394
|
-
return
|
|
1395
|
-
}), o.push(Promise.all(this._invokeAll(function(
|
|
1396
|
-
return
|
|
1393
|
+
b.baseColorTexture !== void 0 && o.push(a.assignTexture(r, "map", b.baseColorTexture, re)), r.metalness = b.metallicFactor !== void 0 ? b.metallicFactor : 1, r.roughness = b.roughnessFactor !== void 0 ? b.roughnessFactor : 1, b.metallicRoughnessTexture !== void 0 && (o.push(a.assignTexture(r, "metalnessMap", b.metallicRoughnessTexture)), o.push(a.assignTexture(r, "roughnessMap", b.metallicRoughnessTexture))), s = this._invokeOne(function(d) {
|
|
1394
|
+
return d.getMaterialType && d.getMaterialType(e);
|
|
1395
|
+
}), o.push(Promise.all(this._invokeAll(function(d) {
|
|
1396
|
+
return d.extendMaterialParams && d.extendMaterialParams(e, r);
|
|
1397
1397
|
})));
|
|
1398
1398
|
}
|
|
1399
1399
|
i.doubleSided === !0 && (r.side = dA);
|
|
1400
1400
|
const n = i.alphaMode || ki;
|
|
1401
|
-
if (n === ji ? (r.transparent = !0, r.depthWrite = !1) : (r.transparent = !1, n === xi && (r.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && s !==
|
|
1402
|
-
const
|
|
1403
|
-
r.normalScale.set(
|
|
1401
|
+
if (n === ji ? (r.transparent = !0, r.depthWrite = !1) : (r.transparent = !1, n === xi && (r.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && s !== Ue && (o.push(a.assignTexture(r, "normalMap", i.normalTexture)), r.normalScale = new Ct(1, 1), i.normalTexture.scale !== void 0)) {
|
|
1402
|
+
const b = i.normalTexture.scale;
|
|
1403
|
+
r.normalScale.set(b, b);
|
|
1404
1404
|
}
|
|
1405
|
-
if (i.occlusionTexture !== void 0 && s !==
|
|
1406
|
-
const
|
|
1407
|
-
r.emissive = new le().setRGB(
|
|
1405
|
+
if (i.occlusionTexture !== void 0 && s !== Ue && (o.push(a.assignTexture(r, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (r.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && s !== Ue) {
|
|
1406
|
+
const b = i.emissiveFactor;
|
|
1407
|
+
r.emissive = new le().setRGB(b[0], b[1], b[2], K);
|
|
1408
1408
|
}
|
|
1409
|
-
return i.emissiveTexture !== void 0 && s !==
|
|
1410
|
-
const
|
|
1411
|
-
return i.name && (
|
|
1409
|
+
return i.emissiveTexture !== void 0 && s !== Ue && o.push(a.assignTexture(r, "emissiveMap", i.emissiveTexture, re)), Promise.all(o).then(function() {
|
|
1410
|
+
const b = new s(r);
|
|
1411
|
+
return i.name && (b.name = i.name), se(b, i), a.associations.set(b, { materials: e }), i.extensions && fe(A, b, i), b;
|
|
1412
1412
|
});
|
|
1413
1413
|
}
|
|
1414
1414
|
createUniqueName(e) {
|
|
@@ -1424,34 +1424,34 @@ class Fi {
|
|
|
1424
1424
|
}
|
|
1425
1425
|
const s = [];
|
|
1426
1426
|
for (let r = 0, o = e.length; r < o; r++) {
|
|
1427
|
-
const n = e[r],
|
|
1428
|
-
if (
|
|
1427
|
+
const n = e[r], b = Di(n), d = A[b];
|
|
1428
|
+
if (d) s.push(d.promise);
|
|
1429
1429
|
else {
|
|
1430
1430
|
let g;
|
|
1431
|
-
g = n.extensions && n.extensions[S.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new ea(), n, a), A[
|
|
1431
|
+
g = n.extensions && n.extensions[S.KHR_DRACO_MESH_COMPRESSION] ? i(n) : at(new ea(), n, a), A[b] = { primitive: n, promise: g }, s.push(g);
|
|
1432
1432
|
}
|
|
1433
1433
|
}
|
|
1434
1434
|
return Promise.all(s);
|
|
1435
1435
|
}
|
|
1436
1436
|
loadMesh(e) {
|
|
1437
1437
|
const a = this, t = this.json, A = this.extensions, i = t.meshes[e], s = i.primitives, r = [];
|
|
1438
|
-
for (let n = 0,
|
|
1439
|
-
const
|
|
1440
|
-
r.push(
|
|
1438
|
+
for (let n = 0, b = s.length; n < b; n++) {
|
|
1439
|
+
const d = s[n].material === void 0 ? ((o = this.cache).DefaultMaterial === void 0 && (o.DefaultMaterial = new Ha({ color: 16777215, emissive: 0, metalness: 1, roughness: 1, transparent: !1, depthTest: !0, side: Ze })), o.DefaultMaterial) : this.getDependency("material", s[n].material);
|
|
1440
|
+
r.push(d);
|
|
1441
1441
|
}
|
|
1442
1442
|
var o;
|
|
1443
1443
|
return r.push(a.loadGeometries(s)), Promise.all(r).then(function(n) {
|
|
1444
|
-
const
|
|
1445
|
-
for (let h = 0, f =
|
|
1446
|
-
const I =
|
|
1444
|
+
const b = n.slice(0, n.length - 1), d = n[n.length - 1], g = [];
|
|
1445
|
+
for (let h = 0, f = d.length; h < f; h++) {
|
|
1446
|
+
const I = d[h], m = s[h];
|
|
1447
1447
|
let u;
|
|
1448
|
-
const C =
|
|
1449
|
-
if (m.mode ===
|
|
1450
|
-
else if (m.mode ===
|
|
1451
|
-
else if (m.mode ===
|
|
1452
|
-
else if (m.mode ===
|
|
1448
|
+
const C = b[h];
|
|
1449
|
+
if (m.mode === P.TRIANGLES || m.mode === P.TRIANGLE_STRIP || m.mode === P.TRIANGLE_FAN || m.mode === void 0) u = i.isSkinnedMesh === !0 ? new lA(I, C) : new xa(I, C), u.isSkinnedMesh === !0 && u.normalizeSkinWeights(), m.mode === P.TRIANGLE_STRIP ? u.geometry = Za(u.geometry, Bt) : m.mode === P.TRIANGLE_FAN && (u.geometry = Za(u.geometry, ya));
|
|
1450
|
+
else if (m.mode === P.LINES) u = new mt(I, C);
|
|
1451
|
+
else if (m.mode === P.LINE_STRIP) u = new gA(I, C);
|
|
1452
|
+
else if (m.mode === P.LINE_LOOP) u = new fA(I, C);
|
|
1453
1453
|
else {
|
|
1454
|
-
if (m.mode !==
|
|
1454
|
+
if (m.mode !== P.POINTS) throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + m.mode);
|
|
1455
1455
|
u = new uA(I, C);
|
|
1456
1456
|
}
|
|
1457
1457
|
Object.keys(u.geometry.morphAttributes).length > 0 && Si(u, i), u.name = a.createUniqueName(i.name || "mesh_" + e), se(u, i), m.extensions && fe(A, u, m), a.assignFinalMaterial(u), g.push(u);
|
|
@@ -1475,10 +1475,10 @@ class Fi {
|
|
|
1475
1475
|
for (let A = 0, i = a.joints.length; A < i; A++) t.push(this._loadNodeShallow(a.joints[A]));
|
|
1476
1476
|
return a.inverseBindMatrices !== void 0 ? t.push(this.getDependency("accessor", a.inverseBindMatrices)) : t.push(null), Promise.all(t).then(function(A) {
|
|
1477
1477
|
const i = A.pop(), s = A, r = [], o = [];
|
|
1478
|
-
for (let n = 0,
|
|
1479
|
-
const
|
|
1480
|
-
if (
|
|
1481
|
-
r.push(
|
|
1478
|
+
for (let n = 0, b = s.length; n < b; n++) {
|
|
1479
|
+
const d = s[n];
|
|
1480
|
+
if (d) {
|
|
1481
|
+
r.push(d);
|
|
1482
1482
|
const g = new Se();
|
|
1483
1483
|
i !== null && g.fromArray(i.array, 16 * n), o.push(g);
|
|
1484
1484
|
} else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', a.joints[n]);
|
|
@@ -1487,18 +1487,18 @@ class Fi {
|
|
|
1487
1487
|
});
|
|
1488
1488
|
}
|
|
1489
1489
|
loadAnimation(e) {
|
|
1490
|
-
const a = this.json, t = this, A = a.animations[e], i = A.name ? A.name : "animation_" + e, s = [], r = [], o = [], n = [],
|
|
1491
|
-
for (let
|
|
1492
|
-
const l = A.channels[
|
|
1493
|
-
f.node !== void 0 && (s.push(this.getDependency("node", I)), r.push(this.getDependency("accessor", m)), o.push(this.getDependency("accessor", u)), n.push(h),
|
|
1490
|
+
const a = this.json, t = this, A = a.animations[e], i = A.name ? A.name : "animation_" + e, s = [], r = [], o = [], n = [], b = [];
|
|
1491
|
+
for (let d = 0, g = A.channels.length; d < g; d++) {
|
|
1492
|
+
const l = A.channels[d], h = A.samplers[l.sampler], f = l.target, I = f.node, m = A.parameters !== void 0 ? A.parameters[h.input] : h.input, u = A.parameters !== void 0 ? A.parameters[h.output] : h.output;
|
|
1493
|
+
f.node !== void 0 && (s.push(this.getDependency("node", I)), r.push(this.getDependency("accessor", m)), o.push(this.getDependency("accessor", u)), n.push(h), b.push(f));
|
|
1494
1494
|
}
|
|
1495
|
-
return Promise.all([Promise.all(s), Promise.all(r), Promise.all(o), Promise.all(n), Promise.all(
|
|
1496
|
-
const g =
|
|
1495
|
+
return Promise.all([Promise.all(s), Promise.all(r), Promise.all(o), Promise.all(n), Promise.all(b)]).then(function(d) {
|
|
1496
|
+
const g = d[0], l = d[1], h = d[2], f = d[3], I = d[4], m = [];
|
|
1497
1497
|
for (let u = 0, C = g.length; u < C; u++) {
|
|
1498
|
-
const B = g[u],
|
|
1498
|
+
const B = g[u], w = l[u], k = h[u], y = f[u], p = I[u];
|
|
1499
1499
|
if (B === void 0) continue;
|
|
1500
1500
|
B.updateMatrix && B.updateMatrix();
|
|
1501
|
-
const Q = t._createAnimationTracks(B,
|
|
1501
|
+
const Q = t._createAnimationTracks(B, w, k, y, p);
|
|
1502
1502
|
if (Q) for (let x = 0; x < Q.length; x++) m.push(Q[x]);
|
|
1503
1503
|
}
|
|
1504
1504
|
return new CA(i, void 0, m);
|
|
@@ -1518,11 +1518,11 @@ class Fi {
|
|
|
1518
1518
|
for (let o = 0, n = s.length; o < n; o++) i.push(a.getDependency("node", s[o]));
|
|
1519
1519
|
const r = t.skin === void 0 ? Promise.resolve(null) : a.getDependency("skin", t.skin);
|
|
1520
1520
|
return Promise.all([A, Promise.all(i), r]).then(function(o) {
|
|
1521
|
-
const n = o[0],
|
|
1522
|
-
|
|
1523
|
-
g.isSkinnedMesh && g.bind(
|
|
1521
|
+
const n = o[0], b = o[1], d = o[2];
|
|
1522
|
+
d !== null && n.traverse(function(g) {
|
|
1523
|
+
g.isSkinnedMesh && g.bind(d, vi);
|
|
1524
1524
|
});
|
|
1525
|
-
for (let g = 0, l =
|
|
1525
|
+
for (let g = 0, l = b.length; g < l; g++) n.add(b[g]);
|
|
1526
1526
|
return n;
|
|
1527
1527
|
});
|
|
1528
1528
|
}
|
|
@@ -1539,13 +1539,13 @@ class Fi {
|
|
|
1539
1539
|
}).forEach(function(n) {
|
|
1540
1540
|
r.push(n);
|
|
1541
1541
|
}), this.nodeCache[e] = Promise.all(r).then(function(n) {
|
|
1542
|
-
let
|
|
1543
|
-
if (
|
|
1544
|
-
if (i.name && (
|
|
1545
|
-
const
|
|
1546
|
-
|
|
1547
|
-
} else i.translation !== void 0 &&
|
|
1548
|
-
return A.associations.has(
|
|
1542
|
+
let b;
|
|
1543
|
+
if (b = i.isBone === !0 ? new pA() : n.length > 1 ? new Aa() : n.length === 1 ? n[0] : new Et(), b !== n[0]) for (let d = 0, g = n.length; d < g; d++) b.add(n[d]);
|
|
1544
|
+
if (i.name && (b.userData.name = i.name, b.name = s), se(b, i), i.extensions && fe(t, b, i), i.matrix !== void 0) {
|
|
1545
|
+
const d = new Se();
|
|
1546
|
+
d.fromArray(i.matrix), b.applyMatrix4(d);
|
|
1547
|
+
} else i.translation !== void 0 && b.position.fromArray(i.translation), i.rotation !== void 0 && b.quaternion.fromArray(i.rotation), i.scale !== void 0 && b.scale.fromArray(i.scale);
|
|
1548
|
+
return A.associations.has(b) || A.associations.set(b, {}), A.associations.get(b).nodes = e, b;
|
|
1549
1549
|
}), this.nodeCache[e];
|
|
1550
1550
|
}
|
|
1551
1551
|
loadScene(e) {
|
|
@@ -1554,14 +1554,14 @@ class Fi {
|
|
|
1554
1554
|
const s = t.nodes || [], r = [];
|
|
1555
1555
|
for (let o = 0, n = s.length; o < n; o++) r.push(A.getDependency("node", s[o]));
|
|
1556
1556
|
return Promise.all(r).then(function(o) {
|
|
1557
|
-
for (let n = 0,
|
|
1557
|
+
for (let n = 0, b = o.length; n < b; n++) i.add(o[n]);
|
|
1558
1558
|
return A.associations = ((n) => {
|
|
1559
|
-
const
|
|
1560
|
-
for (const [
|
|
1561
|
-
return n.traverse((
|
|
1562
|
-
const g = A.associations.get(
|
|
1563
|
-
g != null &&
|
|
1564
|
-
}),
|
|
1559
|
+
const b = /* @__PURE__ */ new Map();
|
|
1560
|
+
for (const [d, g] of A.associations) (d instanceof ta || d instanceof Na) && b.set(d, g);
|
|
1561
|
+
return n.traverse((d) => {
|
|
1562
|
+
const g = A.associations.get(d);
|
|
1563
|
+
g != null && b.set(d, g);
|
|
1564
|
+
}), b;
|
|
1565
1565
|
})(i), i;
|
|
1566
1566
|
});
|
|
1567
1567
|
}
|
|
@@ -1575,7 +1575,7 @@ class Fi {
|
|
|
1575
1575
|
n = Oa;
|
|
1576
1576
|
break;
|
|
1577
1577
|
case oe.rotation:
|
|
1578
|
-
n =
|
|
1578
|
+
n = Pa;
|
|
1579
1579
|
break;
|
|
1580
1580
|
case oe.position:
|
|
1581
1581
|
case oe.scale:
|
|
@@ -1584,9 +1584,9 @@ class Fi {
|
|
|
1584
1584
|
default:
|
|
1585
1585
|
t.itemSize === 1 ? n = Oa : n = La;
|
|
1586
1586
|
}
|
|
1587
|
-
const
|
|
1587
|
+
const b = A.interpolation !== void 0 ? wi[A.interpolation] : yt, d = this._getArrayFromAccessor(t);
|
|
1588
1588
|
for (let g = 0, l = o.length; g < l; g++) {
|
|
1589
|
-
const h = new n(o[g] + "." + oe[i.path], a.array,
|
|
1589
|
+
const h = new n(o[g] + "." + oe[i.path], a.array, d, b);
|
|
1590
1590
|
A.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(h), s.push(h);
|
|
1591
1591
|
}
|
|
1592
1592
|
return s;
|
|
@@ -1602,7 +1602,7 @@ class Fi {
|
|
|
1602
1602
|
}
|
|
1603
1603
|
_createCubicSplineTrackInterpolant(e) {
|
|
1604
1604
|
e.createInterpolant = function(a) {
|
|
1605
|
-
return new (this instanceof
|
|
1605
|
+
return new (this instanceof Pa ? yi : Ft)(this.times, this.values, this.getValueSize() / 3, a);
|
|
1606
1606
|
}, e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
|
|
1607
1607
|
}
|
|
1608
1608
|
}
|
|
@@ -1624,45 +1624,45 @@ function at(c, e, a) {
|
|
|
1624
1624
|
A.push(s);
|
|
1625
1625
|
}
|
|
1626
1626
|
return ja.workingColorSpace !== K && "COLOR_0" in t && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${ja.workingColorSpace}" not supported.`), se(c, e), function(s, r, o) {
|
|
1627
|
-
const n = r.attributes,
|
|
1627
|
+
const n = r.attributes, b = new Ra();
|
|
1628
1628
|
if (n.POSITION === void 0) return;
|
|
1629
1629
|
{
|
|
1630
1630
|
const l = o.json.accessors[n.POSITION], h = l.min, f = l.max;
|
|
1631
1631
|
if (h === void 0 || f === void 0) return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1632
|
-
if (
|
|
1632
|
+
if (b.set(new D(h[0], h[1], h[2]), new D(f[0], f[1], f[2])), l.normalized) {
|
|
1633
1633
|
const I = Da(xe[l.componentType]);
|
|
1634
|
-
|
|
1634
|
+
b.min.multiplyScalar(I), b.max.multiplyScalar(I);
|
|
1635
1635
|
}
|
|
1636
1636
|
}
|
|
1637
|
-
const
|
|
1638
|
-
if (
|
|
1637
|
+
const d = r.targets;
|
|
1638
|
+
if (d !== void 0) {
|
|
1639
1639
|
const l = new D(), h = new D();
|
|
1640
|
-
for (let f = 0, I =
|
|
1641
|
-
const m =
|
|
1640
|
+
for (let f = 0, I = d.length; f < I; f++) {
|
|
1641
|
+
const m = d[f];
|
|
1642
1642
|
if (m.POSITION !== void 0) {
|
|
1643
1643
|
const u = o.json.accessors[m.POSITION], C = u.min, B = u.max;
|
|
1644
1644
|
if (C !== void 0 && B !== void 0) {
|
|
1645
1645
|
if (h.setX(Math.max(Math.abs(C[0]), Math.abs(B[0]))), h.setY(Math.max(Math.abs(C[1]), Math.abs(B[1]))), h.setZ(Math.max(Math.abs(C[2]), Math.abs(B[2]))), u.normalized) {
|
|
1646
|
-
const
|
|
1647
|
-
h.multiplyScalar(
|
|
1646
|
+
const w = Da(xe[u.componentType]);
|
|
1647
|
+
h.multiplyScalar(w);
|
|
1648
1648
|
}
|
|
1649
1649
|
l.max(h);
|
|
1650
1650
|
} else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
|
|
1651
1651
|
}
|
|
1652
1652
|
}
|
|
1653
|
-
|
|
1653
|
+
b.expandByVector(l);
|
|
1654
1654
|
}
|
|
1655
|
-
s.boundingBox =
|
|
1655
|
+
s.boundingBox = b;
|
|
1656
1656
|
const g = new jA();
|
|
1657
|
-
|
|
1657
|
+
b.getCenter(g.center), g.radius = b.min.distanceTo(b.max) / 2, s.boundingSphere = g;
|
|
1658
1658
|
}(c, e, a), Promise.all(A).then(function() {
|
|
1659
1659
|
return e.targets !== void 0 ? function(s, r, o) {
|
|
1660
|
-
let n = !1,
|
|
1660
|
+
let n = !1, b = !1, d = !1;
|
|
1661
1661
|
for (let f = 0, I = r.length; f < I; f++) {
|
|
1662
1662
|
const m = r[f];
|
|
1663
|
-
if (m.POSITION !== void 0 && (n = !0), m.NORMAL !== void 0 && (
|
|
1663
|
+
if (m.POSITION !== void 0 && (n = !0), m.NORMAL !== void 0 && (b = !0), m.COLOR_0 !== void 0 && (d = !0), n && b && d) break;
|
|
1664
1664
|
}
|
|
1665
|
-
if (!n && !
|
|
1665
|
+
if (!n && !b && !d) return Promise.resolve(s);
|
|
1666
1666
|
const g = [], l = [], h = [];
|
|
1667
1667
|
for (let f = 0, I = r.length; f < I; f++) {
|
|
1668
1668
|
const m = r[f];
|
|
@@ -1670,18 +1670,18 @@ function at(c, e, a) {
|
|
|
1670
1670
|
const u = m.POSITION !== void 0 ? o.getDependency("accessor", m.POSITION) : s.attributes.position;
|
|
1671
1671
|
g.push(u);
|
|
1672
1672
|
}
|
|
1673
|
-
if (
|
|
1673
|
+
if (b) {
|
|
1674
1674
|
const u = m.NORMAL !== void 0 ? o.getDependency("accessor", m.NORMAL) : s.attributes.normal;
|
|
1675
1675
|
l.push(u);
|
|
1676
1676
|
}
|
|
1677
|
-
if (
|
|
1677
|
+
if (d) {
|
|
1678
1678
|
const u = m.COLOR_0 !== void 0 ? o.getDependency("accessor", m.COLOR_0) : s.attributes.color;
|
|
1679
1679
|
h.push(u);
|
|
1680
1680
|
}
|
|
1681
1681
|
}
|
|
1682
1682
|
return Promise.all([Promise.all(g), Promise.all(l), Promise.all(h)]).then(function(f) {
|
|
1683
1683
|
const I = f[0], m = f[1], u = f[2];
|
|
1684
|
-
return n && (s.morphAttributes.position = I),
|
|
1684
|
+
return n && (s.morphAttributes.position = I), b && (s.morphAttributes.normal = m), d && (s.morphAttributes.color = u), s.morphTargetsRelative = !0, s;
|
|
1685
1685
|
});
|
|
1686
1686
|
}(c, e.targets, a) : c;
|
|
1687
1687
|
});
|
|
@@ -1723,8 +1723,8 @@ class Rt extends Ma {
|
|
|
1723
1723
|
if (e.byteLength === 0) throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.");
|
|
1724
1724
|
}
|
|
1725
1725
|
let A;
|
|
1726
|
-
const i = this.workerNextTaskID++, s = e.byteLength, r = this._getWorker(i, s).then((o) => (A = o, new Promise((n,
|
|
1727
|
-
A._callbacks[i] = { resolve: n, reject:
|
|
1726
|
+
const i = this.workerNextTaskID++, s = e.byteLength, r = this._getWorker(i, s).then((o) => (A = o, new Promise((n, b) => {
|
|
1727
|
+
A._callbacks[i] = { resolve: n, reject: b }, A.postMessage({ type: "decode", id: i, taskConfig: a, buffer: e }, [e]);
|
|
1728
1728
|
}))).then((o) => this._createGeometry(o.geometry));
|
|
1729
1729
|
return r.catch(() => !0).then(() => {
|
|
1730
1730
|
A && i && this._releaseTask(A, i);
|
|
@@ -1802,7 +1802,7 @@ class Rt extends Ma {
|
|
|
1802
1802
|
function Ri() {
|
|
1803
1803
|
let c, e;
|
|
1804
1804
|
function a(t, A, i, s, r, o) {
|
|
1805
|
-
const n = o.num_components(),
|
|
1805
|
+
const n = o.num_components(), b = i.num_points() * n, d = b * r.BYTES_PER_ELEMENT, g = function(f, I) {
|
|
1806
1806
|
switch (I) {
|
|
1807
1807
|
case Float32Array:
|
|
1808
1808
|
return f.DT_FLOAT32;
|
|
@@ -1819,9 +1819,9 @@ function Ri() {
|
|
|
1819
1819
|
case Uint32Array:
|
|
1820
1820
|
return f.DT_UINT32;
|
|
1821
1821
|
}
|
|
1822
|
-
}(t, r), l = t._malloc(
|
|
1823
|
-
A.GetAttributeDataArrayForAllPoints(i, o, g,
|
|
1824
|
-
const h = new r(t.HEAPF32.buffer, l,
|
|
1822
|
+
}(t, r), l = t._malloc(d);
|
|
1823
|
+
A.GetAttributeDataArrayForAllPoints(i, o, g, d, l);
|
|
1824
|
+
const h = new r(t.HEAPF32.buffer, l, b).slice();
|
|
1825
1825
|
return t._free(l), { name: s, array: h, itemSize: n };
|
|
1826
1826
|
}
|
|
1827
1827
|
onmessage = function(t) {
|
|
@@ -1839,7 +1839,7 @@ function Ri() {
|
|
|
1839
1839
|
e.then((r) => {
|
|
1840
1840
|
const o = r.draco, n = new o.Decoder();
|
|
1841
1841
|
try {
|
|
1842
|
-
const
|
|
1842
|
+
const b = function(g, l, h, f) {
|
|
1843
1843
|
const I = f.attributeIDs, m = f.attributeTypes;
|
|
1844
1844
|
let u, C;
|
|
1845
1845
|
const B = l.GetEncodedGeometryType(h);
|
|
@@ -1849,28 +1849,28 @@ function Ri() {
|
|
|
1849
1849
|
u = new g.PointCloud(), C = l.DecodeArrayToPointCloud(h, h.byteLength, u);
|
|
1850
1850
|
}
|
|
1851
1851
|
if (!C.ok() || u.ptr === 0) throw new Error("THREE.DRACOLoader: Decoding failed: " + C.error_msg());
|
|
1852
|
-
const
|
|
1852
|
+
const w = { index: null, attributes: [] };
|
|
1853
1853
|
for (const k in I) {
|
|
1854
|
-
const
|
|
1854
|
+
const y = self[m[k]];
|
|
1855
1855
|
let p, Q;
|
|
1856
1856
|
if (f.useUniqueIDs) Q = I[k], p = l.GetAttributeByUniqueId(u, Q);
|
|
1857
1857
|
else {
|
|
1858
1858
|
if (Q = l.GetAttributeId(u, g[I[k]]), Q === -1) continue;
|
|
1859
1859
|
p = l.GetAttribute(u, Q);
|
|
1860
1860
|
}
|
|
1861
|
-
const x = a(g, l, u, k,
|
|
1862
|
-
k === "color" && (x.vertexColorSpace = f.vertexColorSpace),
|
|
1861
|
+
const x = a(g, l, u, k, y, p);
|
|
1862
|
+
k === "color" && (x.vertexColorSpace = f.vertexColorSpace), w.attributes.push(x);
|
|
1863
1863
|
}
|
|
1864
|
-
return B === g.TRIANGULAR_MESH && (
|
|
1864
|
+
return B === g.TRIANGULAR_MESH && (w.index = function(k, y, p) {
|
|
1865
1865
|
const Q = p.num_faces(), x = 3 * Q, j = 4 * x, M = k._malloc(j);
|
|
1866
|
-
|
|
1866
|
+
y.GetTrianglesUInt32Array(p, j, M);
|
|
1867
1867
|
const O = new Uint32Array(k.HEAPF32.buffer, M, x).slice();
|
|
1868
1868
|
return k._free(M), { array: O, itemSize: 1 };
|
|
1869
|
-
}(g, l, u)), g.destroy(u),
|
|
1870
|
-
}(o, n, new Int8Array(i), s),
|
|
1871
|
-
|
|
1872
|
-
} catch (
|
|
1873
|
-
console.error(
|
|
1869
|
+
}(g, l, u)), g.destroy(u), w;
|
|
1870
|
+
}(o, n, new Int8Array(i), s), d = b.attributes.map((g) => g.array.buffer);
|
|
1871
|
+
b.index && d.push(b.index.array.buffer), self.postMessage({ type: "decode", id: A.id, geometry: b }, d);
|
|
1872
|
+
} catch (b) {
|
|
1873
|
+
console.error(b), self.postMessage({ type: "error", id: A.id, error: b.message });
|
|
1874
1874
|
} finally {
|
|
1875
1875
|
o.destroy(n);
|
|
1876
1876
|
}
|
|
@@ -1915,7 +1915,7 @@ class Mi {
|
|
|
1915
1915
|
this.workers.forEach((e) => e.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
|
|
1916
1916
|
}
|
|
1917
1917
|
}
|
|
1918
|
-
const Mt = 9, Tt = 15,
|
|
1918
|
+
const Mt = 9, Tt = 15, Ut = 16, Gt = 22, Ht = 37, Nt = 43, Lt = 76, Ot = 83, Pt = 97, Jt = 100, qt = 103, _t = 109, Kt = 165, zt = 166, Ta = 1000066e3;
|
|
1919
1919
|
class Ti {
|
|
1920
1920
|
constructor() {
|
|
1921
1921
|
this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = 0, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: 0, descriptorBlockSize: 0, versionNumber: 2, colorModel: 0, colorPrimaries: 1, transferFunction: 2, flags: 0, texelBlockDimension: [0, 0, 0, 0], bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0], samples: [] }], this.keyValue = {}, this.globalData = null;
|
|
@@ -1968,7 +1968,7 @@ let ba, ie, va;
|
|
|
1968
1968
|
const da = { env: { emscripten_notify_memory_growth: function(c) {
|
|
1969
1969
|
va = new Uint8Array(ie.exports.memory.buffer);
|
|
1970
1970
|
} } };
|
|
1971
|
-
class
|
|
1971
|
+
class Ui {
|
|
1972
1972
|
init() {
|
|
1973
1973
|
return ba || (ba = typeof fetch < "u" ? fetch("data:application/wasm;base64," + At).then((e) => e.arrayBuffer()).then((e) => WebAssembly.instantiate(e, da)).then(this._init) : WebAssembly.instantiate(Buffer.from(At, "base64"), da).then(this._init), ba);
|
|
1974
1974
|
}
|
|
@@ -2012,8 +2012,8 @@ class L extends Ma {
|
|
|
2012
2012
|
const r = L.BasisWorker.toString(), o = ["/* constants */", "let _EngineFormat = " + JSON.stringify(L.EngineFormat), "let _EngineType = " + JSON.stringify(L.EngineType), "let _TranscoderFormat = " + JSON.stringify(L.TranscoderFormat), "let _BasisFormat = " + JSON.stringify(L.BasisFormat), "/* basis_transcoder.js */", i, "/* worker */", r.substring(r.indexOf("{") + 1, r.lastIndexOf("}"))].join(`
|
|
2013
2013
|
`);
|
|
2014
2014
|
this.workerSourceURL = URL.createObjectURL(new Blob([o])), this.transcoderBinary = s, this.workerPool.setWorkerCreator(() => {
|
|
2015
|
-
const n = new Worker(this.workerSourceURL),
|
|
2016
|
-
return n.postMessage({ type: "init", config: this.workerConfig, transcoderBinary:
|
|
2015
|
+
const n = new Worker(this.workerSourceURL), b = this.transcoderBinary.slice(0);
|
|
2016
|
+
return n.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: b }, [b]), n;
|
|
2017
2017
|
});
|
|
2018
2018
|
}), ga > 0 && console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."), ga++;
|
|
2019
2019
|
}
|
|
@@ -2033,45 +2033,45 @@ class L extends Ma {
|
|
|
2033
2033
|
this._createTexture(e).then((A) => a ? a(A) : null).catch(t);
|
|
2034
2034
|
}
|
|
2035
2035
|
_createTextureFrom(e, a) {
|
|
2036
|
-
const { type: t, error: A, data: { faces: i, width: s, height: r, format: o, type: n, dfdFlags:
|
|
2036
|
+
const { type: t, error: A, data: { faces: i, width: s, height: r, format: o, type: n, dfdFlags: b } } = e;
|
|
2037
2037
|
if (t === "error") return Promise.reject(A);
|
|
2038
|
-
let
|
|
2039
|
-
if (a.faceCount === 6)
|
|
2038
|
+
let d;
|
|
2039
|
+
if (a.faceCount === 6) d = new DA(i, o, n);
|
|
2040
2040
|
else {
|
|
2041
2041
|
const g = i[0].mipmaps;
|
|
2042
|
-
|
|
2042
|
+
d = a.layerCount > 1 ? new vA(g, s, r, a.layerCount, o, n) : new Ja(g, s, r, o, n);
|
|
2043
2043
|
}
|
|
2044
|
-
return
|
|
2044
|
+
return d.minFilter = i[0].mipmaps.length === 1 ? Be : $e, d.magFilter = Be, d.generateMipmaps = !1, d.needsUpdate = !0, d.colorSpace = it(a), d.premultiplyAlpha = !!(1 & b), d;
|
|
2045
2045
|
}
|
|
2046
2046
|
async _createTexture(e, a = {}) {
|
|
2047
2047
|
const t = function(r) {
|
|
2048
2048
|
const o = new Uint8Array(r.buffer, r.byteOffset, H.length);
|
|
2049
2049
|
if (o[0] !== H[0] || o[1] !== H[1] || o[2] !== H[2] || o[3] !== H[3] || o[4] !== H[4] || o[5] !== H[5] || o[6] !== H[6] || o[7] !== H[7] || o[8] !== H[8] || o[9] !== H[9] || o[10] !== H[10] || o[11] !== H[11]) throw new Error("Missing KTX 2.0 identifier.");
|
|
2050
|
-
const n = new Ti(),
|
|
2051
|
-
n.vkFormat =
|
|
2052
|
-
const g =
|
|
2053
|
-
n.supercompressionScheme =
|
|
2054
|
-
const l =
|
|
2050
|
+
const n = new Ti(), b = 17 * Uint32Array.BYTES_PER_ELEMENT, d = new Me(r, H.length, b, !0);
|
|
2051
|
+
n.vkFormat = d._nextUint32(), n.typeSize = d._nextUint32(), n.pixelWidth = d._nextUint32(), n.pixelHeight = d._nextUint32(), n.pixelDepth = d._nextUint32(), n.layerCount = d._nextUint32(), n.faceCount = d._nextUint32();
|
|
2052
|
+
const g = d._nextUint32();
|
|
2053
|
+
n.supercompressionScheme = d._nextUint32();
|
|
2054
|
+
const l = d._nextUint32(), h = d._nextUint32(), f = d._nextUint32(), I = d._nextUint32(), m = d._nextUint64(), u = d._nextUint64(), C = new Me(r, H.length + b, 3 * g * 8, !0);
|
|
2055
2055
|
for (let F = 0; F < g; F++) n.levels.push({ levelData: new Uint8Array(r.buffer, r.byteOffset + C._nextUint64(), C._nextUint64()), uncompressedByteLength: C._nextUint64() });
|
|
2056
|
-
const B = new Me(r, l, h, !0),
|
|
2056
|
+
const B = new Me(r, l, h, !0), w = { vendorId: B._skip(4)._nextUint16(), descriptorType: B._nextUint16(), versionNumber: B._nextUint16(), descriptorBlockSize: B._nextUint16(), colorModel: B._nextUint8(), colorPrimaries: B._nextUint8(), transferFunction: B._nextUint8(), flags: B._nextUint8(), texelBlockDimension: [B._nextUint8(), B._nextUint8(), B._nextUint8(), B._nextUint8()], bytesPlane: [B._nextUint8(), B._nextUint8(), B._nextUint8(), B._nextUint8(), B._nextUint8(), B._nextUint8(), B._nextUint8(), B._nextUint8()], samples: [] }, k = (w.descriptorBlockSize / 4 - 6) / 4;
|
|
2057
2057
|
for (let F = 0; F < k; F++) {
|
|
2058
|
-
const
|
|
2059
|
-
64 &
|
|
2058
|
+
const U = { bitOffset: B._nextUint16(), bitLength: B._nextUint8(), channelType: B._nextUint8(), samplePosition: [B._nextUint8(), B._nextUint8(), B._nextUint8(), B._nextUint8()], sampleLower: -1 / 0, sampleUpper: 1 / 0 };
|
|
2059
|
+
64 & U.channelType ? (U.sampleLower = B._nextInt32(), U.sampleUpper = B._nextInt32()) : (U.sampleLower = B._nextUint32(), U.sampleUpper = B._nextUint32()), w.samples[F] = U;
|
|
2060
2060
|
}
|
|
2061
|
-
n.dataFormatDescriptor.length = 0, n.dataFormatDescriptor.push(
|
|
2062
|
-
const
|
|
2063
|
-
for (;
|
|
2064
|
-
const F =
|
|
2065
|
-
if (n.keyValue[
|
|
2066
|
-
const V = tt(n.keyValue[
|
|
2067
|
-
n.keyValue[
|
|
2061
|
+
n.dataFormatDescriptor.length = 0, n.dataFormatDescriptor.push(w);
|
|
2062
|
+
const y = new Me(r, f, I, !0);
|
|
2063
|
+
for (; y._offset < I; ) {
|
|
2064
|
+
const F = y._nextUint32(), U = y._scan(F), J = tt(U);
|
|
2065
|
+
if (n.keyValue[J] = y._nextUint8Array(F - U.byteLength - 1), J.match(/^ktx/i)) {
|
|
2066
|
+
const V = tt(n.keyValue[J]);
|
|
2067
|
+
n.keyValue[J] = V.substring(0, V.lastIndexOf("\0"));
|
|
2068
2068
|
}
|
|
2069
|
-
|
|
2069
|
+
y._skip(F % 4 ? 4 - F % 4 : 0);
|
|
2070
2070
|
}
|
|
2071
2071
|
if (u <= 0) return n;
|
|
2072
2072
|
const p = new Me(r, m, u, !0), Q = p._nextUint16(), x = p._nextUint16(), j = p._nextUint32(), M = p._nextUint32(), O = p._nextUint32(), aa = p._nextUint32(), De = [];
|
|
2073
2073
|
for (let F = 0; F < g; F++) De.push({ imageFlags: p._nextUint32(), rgbSliceByteOffset: p._nextUint32(), rgbSliceByteLength: p._nextUint32(), alphaSliceByteOffset: p._nextUint32(), alphaSliceByteLength: p._nextUint32() });
|
|
2074
|
-
const
|
|
2074
|
+
const Je = m + p._offset, ve = Je + j, Fe = ve + M, Re = Fe + O, qe = new Uint8Array(r.buffer, r.byteOffset + Je, j), _e = new Uint8Array(r.buffer, r.byteOffset + ve, M), z = new Uint8Array(r.buffer, r.byteOffset + Fe, O), pe = new Uint8Array(r.buffer, r.byteOffset + Re, aa);
|
|
2075
2075
|
return n.globalData = { endpointCount: Q, selectorCount: x, imageDescs: De, endpointsData: qe, selectorsData: _e, tablesData: z, extendedData: pe }, n;
|
|
2076
2076
|
}(new Uint8Array(e)), A = t.vkFormat === Ta && t.dataFormatDescriptor[0].colorModel === 167;
|
|
2077
2077
|
if (!(t.vkFormat === 0 || A && !this.workerConfig.astcHDRSupported)) return async function(r) {
|
|
@@ -2079,10 +2079,10 @@ class L extends Ma {
|
|
|
2079
2079
|
if (fa[o] === void 0) throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
|
|
2080
2080
|
let n;
|
|
2081
2081
|
r.supercompressionScheme === 2 && (la || (la = new Promise(async (g) => {
|
|
2082
|
-
const l = new
|
|
2082
|
+
const l = new Ui();
|
|
2083
2083
|
await l.init(), g(l);
|
|
2084
2084
|
})), n = await la);
|
|
2085
|
-
const
|
|
2085
|
+
const b = [];
|
|
2086
2086
|
for (let g = 0; g < r.levels.length; g++) {
|
|
2087
2087
|
const l = Math.max(1, r.pixelWidth >> g), h = Math.max(1, r.pixelHeight >> g), f = r.pixelDepth ? Math.max(1, r.pixelDepth >> g) : 0, I = r.levels[g];
|
|
2088
2088
|
let m, u;
|
|
@@ -2091,15 +2091,15 @@ class L extends Ma {
|
|
|
2091
2091
|
if (r.supercompressionScheme !== 2) throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
|
|
2092
2092
|
m = n.decode(I.levelData, I.uncompressedByteLength);
|
|
2093
2093
|
}
|
|
2094
|
-
u = ua[o] === R ? new Float32Array(m.buffer, m.byteOffset, m.byteLength / Float32Array.BYTES_PER_ELEMENT) : ua[o] === ke ? new Uint16Array(m.buffer, m.byteOffset, m.byteLength / Uint16Array.BYTES_PER_ELEMENT) : m,
|
|
2094
|
+
u = ua[o] === R ? new Float32Array(m.buffer, m.byteOffset, m.byteLength / Float32Array.BYTES_PER_ELEMENT) : ua[o] === ke ? new Uint16Array(m.buffer, m.byteOffset, m.byteLength / Uint16Array.BYTES_PER_ELEMENT) : m, b.push({ data: u, width: l, height: h, depth: f });
|
|
2095
2095
|
}
|
|
2096
|
-
let
|
|
2097
|
-
if (
|
|
2096
|
+
let d;
|
|
2097
|
+
if (Gi.has(fa[o])) d = r.pixelDepth === 0 ? new Ge(b[0].data, r.pixelWidth, r.pixelHeight) : new OA(b[0].data, r.pixelWidth, r.pixelHeight, r.pixelDepth);
|
|
2098
2098
|
else {
|
|
2099
2099
|
if (r.pixelDepth > 0) throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
|
|
2100
|
-
|
|
2100
|
+
d = new Ja(b, r.pixelWidth, r.pixelHeight), d.minFilter = b.length === 1 ? Be : $e, d.magFilter = Be;
|
|
2101
2101
|
}
|
|
2102
|
-
return
|
|
2102
|
+
return d.mipmaps = b, d.type = ua[o], d.format = fa[o], d.colorSpace = it(r), d.needsUpdate = !0, Promise.resolve(d);
|
|
2103
2103
|
}(t);
|
|
2104
2104
|
const i = a, s = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: e, taskConfig: i }, [e])).then((r) => this._createTextureFrom(r.data, t));
|
|
2105
2105
|
return ha.set(e, { promise: s }), s;
|
|
@@ -2108,11 +2108,11 @@ class L extends Ma {
|
|
|
2108
2108
|
return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), ga--, this;
|
|
2109
2109
|
}
|
|
2110
2110
|
}
|
|
2111
|
-
L.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, L.TranscoderFormat = { ETC1: 0, ETC2: 1, BC1: 2, BC3: 3, BC4: 4, BC5: 5, BC7_M6_OPAQUE_ONLY: 6, BC7_M5: 7, PVRTC1_4_RGB: 8, PVRTC1_4_RGBA: 9, ASTC_4x4: 10, ATC_RGB: 11, ATC_RGBA_INTERPOLATED_ALPHA: 12, RGBA32: 13, RGB565: 14, BGR565: 15, RGBA4444: 16, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, L.EngineFormat = { RGBAFormat: ee, RGBA_ASTC_4x4_Format: wt, RGB_BPTC_UNSIGNED_Format: FA, RGBA_BPTC_Format: RA, RGBA_ETC2_EAC_Format: MA, RGBA_PVRTC_4BPPV1_Format: TA, RGBA_S3TC_DXT5_Format:
|
|
2111
|
+
L.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, L.TranscoderFormat = { ETC1: 0, ETC2: 1, BC1: 2, BC3: 3, BC4: 4, BC5: 5, BC7_M6_OPAQUE_ONLY: 6, BC7_M5: 7, PVRTC1_4_RGB: 8, PVRTC1_4_RGBA: 9, ASTC_4x4: 10, ATC_RGB: 11, ATC_RGBA_INTERPOLATED_ALPHA: 12, RGBA32: 13, RGB565: 14, BGR565: 15, RGBA4444: 16, BC6H: 22, RGB_HALF: 24, RGBA_HALF: 25 }, L.EngineFormat = { RGBAFormat: ee, RGBA_ASTC_4x4_Format: wt, RGB_BPTC_UNSIGNED_Format: FA, RGBA_BPTC_Format: RA, RGBA_ETC2_EAC_Format: MA, RGBA_PVRTC_4BPPV1_Format: TA, RGBA_S3TC_DXT5_Format: UA, RGB_ETC1_Format: GA, RGB_ETC2_Format: HA, RGB_PVRTC_4BPPV1_Format: NA, RGBA_S3TC_DXT1_Format: LA }, L.EngineType = { UnsignedByteType: X, HalfFloatType: ke, FloatType: R }, L.BasisWorker = function() {
|
|
2112
2112
|
let c, e, a;
|
|
2113
2113
|
const t = _EngineFormat, A = _EngineType, i = _TranscoderFormat, s = _BasisFormat;
|
|
2114
|
-
self.addEventListener("message", function(
|
|
2115
|
-
const g =
|
|
2114
|
+
self.addEventListener("message", function(d) {
|
|
2115
|
+
const g = d.data;
|
|
2116
2116
|
switch (g.type) {
|
|
2117
2117
|
case "init":
|
|
2118
2118
|
c = g.config, l = g.transcoderBinary, e = new Promise((h) => {
|
|
@@ -2124,52 +2124,52 @@ L.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, L.TranscoderFormat = { ETC
|
|
|
2124
2124
|
case "transcode":
|
|
2125
2125
|
e.then(() => {
|
|
2126
2126
|
try {
|
|
2127
|
-
const { faces: h, buffers: f, width: I, height: m, hasAlpha: u, format: C, type: B, dfdFlags:
|
|
2128
|
-
const
|
|
2127
|
+
const { faces: h, buffers: f, width: I, height: m, hasAlpha: u, format: C, type: B, dfdFlags: w } = function(k) {
|
|
2128
|
+
const y = new a.KTX2File(new Uint8Array(k));
|
|
2129
2129
|
function p() {
|
|
2130
|
-
|
|
2130
|
+
y.close(), y.delete();
|
|
2131
2131
|
}
|
|
2132
|
-
if (!
|
|
2132
|
+
if (!y.isValid()) throw p(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
|
|
2133
2133
|
let Q;
|
|
2134
|
-
if (
|
|
2135
|
-
else if (
|
|
2134
|
+
if (y.isUASTC()) Q = s.UASTC;
|
|
2135
|
+
else if (y.isETC1S()) Q = s.ETC1S;
|
|
2136
2136
|
else {
|
|
2137
|
-
if (!
|
|
2137
|
+
if (!y.isHDR()) throw new Error("THREE.KTX2Loader: Unknown Basis encoding");
|
|
2138
2138
|
Q = s.UASTC_HDR;
|
|
2139
2139
|
}
|
|
2140
|
-
const x =
|
|
2141
|
-
const
|
|
2142
|
-
for (let V = 0; V <
|
|
2143
|
-
const q =
|
|
2144
|
-
if (!(q.if && !c[q.if]) && q.basisFormat.includes(z) && !(
|
|
2145
|
-
return { transcoderFormat: q.transcoderFormat[
|
|
2140
|
+
const x = y.getWidth(), j = y.getHeight(), M = y.getLayers() || 1, O = y.getLevels(), aa = y.getFaces(), De = y.getHasAlpha(), Je = y.getDFDFlags(), { transcoderFormat: ve, engineFormat: Fe, engineType: Re } = function(z, pe, F, U) {
|
|
2141
|
+
const J = o[z];
|
|
2142
|
+
for (let V = 0; V < J.length; V++) {
|
|
2143
|
+
const q = J[V];
|
|
2144
|
+
if (!(q.if && !c[q.if]) && q.basisFormat.includes(z) && !(U && q.transcoderFormat.length < 2) && !(q.needsPowerOfTwo && (!n(pe) || !n(F))))
|
|
2145
|
+
return { transcoderFormat: q.transcoderFormat[U ? 1 : 0], engineFormat: q.engineFormat[U ? 1 : 0], engineType: q.engineType[0] };
|
|
2146
2146
|
}
|
|
2147
2147
|
throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.");
|
|
2148
2148
|
}(Q, x, j, De);
|
|
2149
2149
|
if (!x || !j || !O) throw p(), new Error("THREE.KTX2Loader: Invalid texture");
|
|
2150
|
-
if (!
|
|
2150
|
+
if (!y.startTranscoding()) throw p(), new Error("THREE.KTX2Loader: .startTranscoding failed");
|
|
2151
2151
|
const qe = [], _e = [];
|
|
2152
2152
|
for (let z = 0; z < aa; z++) {
|
|
2153
2153
|
const pe = [];
|
|
2154
2154
|
for (let F = 0; F < O; F++) {
|
|
2155
|
-
const
|
|
2156
|
-
let
|
|
2155
|
+
const U = [];
|
|
2156
|
+
let J, V;
|
|
2157
2157
|
for (let Ee = 0; Ee < M; Ee++) {
|
|
2158
|
-
const Qe =
|
|
2159
|
-
z !== 0 || F !== 0 || Ee !== 0 || Qe.origWidth % 4 == 0 && Qe.origHeight % 4 == 0 || console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), O > 1 ? (
|
|
2160
|
-
let ye = new Uint8Array(
|
|
2161
|
-
const Xt =
|
|
2158
|
+
const Qe = y.getImageLevelInfo(F, Ee, z);
|
|
2159
|
+
z !== 0 || F !== 0 || Ee !== 0 || Qe.origWidth % 4 == 0 && Qe.origHeight % 4 == 0 || console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), O > 1 ? (J = Qe.origWidth, V = Qe.origHeight) : (J = Qe.width, V = Qe.height);
|
|
2160
|
+
let ye = new Uint8Array(y.getImageTranscodedSizeInBytes(F, Ee, 0, ve));
|
|
2161
|
+
const Xt = y.transcodeImage(ye, F, Ee, z, ve, 0, -1, -1);
|
|
2162
2162
|
if (Re === A.HalfFloatType && (ye = new Uint16Array(ye.buffer, ye.byteOffset, ye.byteLength / Uint16Array.BYTES_PER_ELEMENT)), !Xt) throw p(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
|
|
2163
|
-
|
|
2163
|
+
U.push(ye);
|
|
2164
2164
|
}
|
|
2165
|
-
const q =
|
|
2166
|
-
pe.push({ data: q, width:
|
|
2165
|
+
const q = b(U);
|
|
2166
|
+
pe.push({ data: q, width: J, height: V }), _e.push(q.buffer);
|
|
2167
2167
|
}
|
|
2168
2168
|
qe.push({ mipmaps: pe, width: x, height: j, format: Fe, type: Re });
|
|
2169
2169
|
}
|
|
2170
|
-
return p(), { faces: qe, buffers: _e, width: x, height: j, hasAlpha: De, dfdFlags:
|
|
2170
|
+
return p(), { faces: qe, buffers: _e, width: x, height: j, hasAlpha: De, dfdFlags: Je, format: Fe, type: Re };
|
|
2171
2171
|
}(g.buffer);
|
|
2172
|
-
self.postMessage({ type: "transcode", id: g.id, data: { faces: h, width: I, height: m, hasAlpha: u, format: C, type: B, dfdFlags:
|
|
2172
|
+
self.postMessage({ type: "transcode", id: g.id, data: { faces: h, width: I, height: m, hasAlpha: u, format: C, type: B, dfdFlags: w } }, f);
|
|
2173
2173
|
} catch (h) {
|
|
2174
2174
|
console.error(h), self.postMessage({ type: "error", id: g.id, error: h.message });
|
|
2175
2175
|
}
|
|
@@ -2177,28 +2177,28 @@ L.BasisFormat = { ETC1S: 0, UASTC: 1, UASTC_HDR: 2 }, L.TranscoderFormat = { ETC
|
|
|
2177
2177
|
}
|
|
2178
2178
|
var l;
|
|
2179
2179
|
});
|
|
2180
|
-
const r = [{ if: "astcSupported", basisFormat: [s.UASTC], transcoderFormat: [i.ASTC_4x4, i.ASTC_4x4], engineFormat: [t.RGBA_ASTC_4x4_Format, t.RGBA_ASTC_4x4_Format], engineType: [A.UnsignedByteType], priorityETC1S: 1 / 0, priorityUASTC: 1, needsPowerOfTwo: !1 }, { if: "bptcSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.BC7_M5, i.BC7_M5], engineFormat: [t.RGBA_BPTC_Format, t.RGBA_BPTC_Format], engineType: [A.UnsignedByteType], priorityETC1S: 3, priorityUASTC: 2, needsPowerOfTwo: !1 }, { if: "dxtSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.BC1, i.BC3], engineFormat: [t.RGBA_S3TC_DXT1_Format, t.RGBA_S3TC_DXT5_Format], engineType: [A.UnsignedByteType], priorityETC1S: 4, priorityUASTC: 5, needsPowerOfTwo: !1 }, { if: "etc2Supported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.ETC1, i.ETC2], engineFormat: [t.RGB_ETC2_Format, t.RGBA_ETC2_EAC_Format], engineType: [A.UnsignedByteType], priorityETC1S: 1, priorityUASTC: 3, needsPowerOfTwo: !1 }, { if: "etc1Supported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.ETC1], engineFormat: [t.RGB_ETC1_Format], engineType: [A.UnsignedByteType], priorityETC1S: 2, priorityUASTC: 4, needsPowerOfTwo: !1 }, { if: "pvrtcSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.PVRTC1_4_RGB, i.PVRTC1_4_RGBA], engineFormat: [t.RGB_PVRTC_4BPPV1_Format, t.RGBA_PVRTC_4BPPV1_Format], engineType: [A.UnsignedByteType], priorityETC1S: 5, priorityUASTC: 6, needsPowerOfTwo: !0 }, { if: "bptcSupported", basisFormat: [s.UASTC_HDR], transcoderFormat: [i.BC6H], engineFormat: [t.RGB_BPTC_UNSIGNED_Format], engineType: [A.HalfFloatType], priorityHDR: 1, needsPowerOfTwo: !1 }, { basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.RGBA32, i.RGBA32], engineFormat: [t.RGBAFormat, t.RGBAFormat], engineType: [A.UnsignedByteType, A.UnsignedByteType], priorityETC1S: 100, priorityUASTC: 100, needsPowerOfTwo: !1 }, { basisFormat: [s.UASTC_HDR], transcoderFormat: [i.RGBA_HALF], engineFormat: [t.RGBAFormat], engineType: [A.HalfFloatType], priorityHDR: 100, needsPowerOfTwo: !1 }], o = { [s.ETC1S]: r.filter((
|
|
2181
|
-
function n(
|
|
2182
|
-
return
|
|
2180
|
+
const r = [{ if: "astcSupported", basisFormat: [s.UASTC], transcoderFormat: [i.ASTC_4x4, i.ASTC_4x4], engineFormat: [t.RGBA_ASTC_4x4_Format, t.RGBA_ASTC_4x4_Format], engineType: [A.UnsignedByteType], priorityETC1S: 1 / 0, priorityUASTC: 1, needsPowerOfTwo: !1 }, { if: "bptcSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.BC7_M5, i.BC7_M5], engineFormat: [t.RGBA_BPTC_Format, t.RGBA_BPTC_Format], engineType: [A.UnsignedByteType], priorityETC1S: 3, priorityUASTC: 2, needsPowerOfTwo: !1 }, { if: "dxtSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.BC1, i.BC3], engineFormat: [t.RGBA_S3TC_DXT1_Format, t.RGBA_S3TC_DXT5_Format], engineType: [A.UnsignedByteType], priorityETC1S: 4, priorityUASTC: 5, needsPowerOfTwo: !1 }, { if: "etc2Supported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.ETC1, i.ETC2], engineFormat: [t.RGB_ETC2_Format, t.RGBA_ETC2_EAC_Format], engineType: [A.UnsignedByteType], priorityETC1S: 1, priorityUASTC: 3, needsPowerOfTwo: !1 }, { if: "etc1Supported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.ETC1], engineFormat: [t.RGB_ETC1_Format], engineType: [A.UnsignedByteType], priorityETC1S: 2, priorityUASTC: 4, needsPowerOfTwo: !1 }, { if: "pvrtcSupported", basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.PVRTC1_4_RGB, i.PVRTC1_4_RGBA], engineFormat: [t.RGB_PVRTC_4BPPV1_Format, t.RGBA_PVRTC_4BPPV1_Format], engineType: [A.UnsignedByteType], priorityETC1S: 5, priorityUASTC: 6, needsPowerOfTwo: !0 }, { if: "bptcSupported", basisFormat: [s.UASTC_HDR], transcoderFormat: [i.BC6H], engineFormat: [t.RGB_BPTC_UNSIGNED_Format], engineType: [A.HalfFloatType], priorityHDR: 1, needsPowerOfTwo: !1 }, { basisFormat: [s.ETC1S, s.UASTC], transcoderFormat: [i.RGBA32, i.RGBA32], engineFormat: [t.RGBAFormat, t.RGBAFormat], engineType: [A.UnsignedByteType, A.UnsignedByteType], priorityETC1S: 100, priorityUASTC: 100, needsPowerOfTwo: !1 }, { basisFormat: [s.UASTC_HDR], transcoderFormat: [i.RGBA_HALF], engineFormat: [t.RGBAFormat], engineType: [A.HalfFloatType], priorityHDR: 100, needsPowerOfTwo: !1 }], o = { [s.ETC1S]: r.filter((d) => d.basisFormat.includes(s.ETC1S)).sort((d, g) => d.priorityUASTC - g.priorityUASTC), [s.UASTC]: r.filter((d) => d.basisFormat.includes(s.UASTC)).sort((d, g) => d.priorityUASTC - g.priorityUASTC), [s.UASTC_HDR]: r.filter((d) => d.basisFormat.includes(s.UASTC_HDR)).sort((d, g) => d.priorityHDR - g.priorityHDR) };
|
|
2181
|
+
function n(d) {
|
|
2182
|
+
return d <= 2 || !(d & d - 1) && d !== 0;
|
|
2183
2183
|
}
|
|
2184
|
-
function d
|
|
2185
|
-
if (
|
|
2184
|
+
function b(d) {
|
|
2185
|
+
if (d.length === 1) return d[0];
|
|
2186
2186
|
let g = 0;
|
|
2187
|
-
for (let f = 0; f <
|
|
2188
|
-
g +=
|
|
2187
|
+
for (let f = 0; f < d.length; f++)
|
|
2188
|
+
g += d[f].byteLength;
|
|
2189
2189
|
const l = new Uint8Array(g);
|
|
2190
2190
|
let h = 0;
|
|
2191
|
-
for (let f = 0; f <
|
|
2192
|
-
const I =
|
|
2191
|
+
for (let f = 0; f < d.length; f++) {
|
|
2192
|
+
const I = d[f];
|
|
2193
2193
|
l.set(I, h), h += I.byteLength;
|
|
2194
2194
|
}
|
|
2195
2195
|
return l;
|
|
2196
2196
|
}
|
|
2197
2197
|
};
|
|
2198
|
-
const
|
|
2198
|
+
const Gi = /* @__PURE__ */ new Set([ee, He, Ne]), fa = { [_t]: ee, [Pt]: ee, [Ht]: ee, [Nt]: ee, [qt]: He, [Ot]: He, [Ut]: He, [Gt]: He, [Jt]: Ne, [Lt]: Ne, [Tt]: Ne, [Mt]: Ne, [Ta]: wt, [zt]: qa, [Kt]: qa }, ua = { [_t]: R, [Pt]: ke, [Ht]: X, [Nt]: X, [qt]: R, [Ot]: ke, [Ut]: X, [Gt]: X, [Jt]: R, [Lt]: ke, [Tt]: X, [Mt]: X, [Ta]: ke, [zt]: X, [Kt]: X };
|
|
2199
2199
|
function it(c) {
|
|
2200
2200
|
const e = c.dataFormatDescriptor[0];
|
|
2201
|
-
return e.colorPrimaries === 1 ? e.transferFunction === 2 ? re : K : e.colorPrimaries === 10 ? e.transferFunction === 2 ? "display-p3" : "display-p3-linear" : (e.colorPrimaries === 0 || console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`),
|
|
2201
|
+
return e.colorPrimaries === 1 ? e.transferFunction === 2 ? re : K : e.colorPrimaries === 10 ? e.transferFunction === 2 ? "display-p3" : "display-p3-linear" : (e.colorPrimaries === 0 || console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${e.colorPrimaries}"`), PA);
|
|
2202
2202
|
}
|
|
2203
2203
|
async function st(c) {
|
|
2204
2204
|
const e = c.split("?")[0].split(".").pop(), a = await fetch(c);
|
|
@@ -2209,7 +2209,7 @@ async function st(c) {
|
|
|
2209
2209
|
}
|
|
2210
2210
|
if (e === "subtree")
|
|
2211
2211
|
return async function(t, A) {
|
|
2212
|
-
const i = new DataView(t), s = i.getBigUint64(8, !0), r = i.getBigUint64(16, !0), o = 24, n = o + Number(s),
|
|
2212
|
+
const i = new DataView(t), s = i.getBigUint64(8, !0), r = i.getBigUint64(16, !0), o = 24, n = o + Number(s), b = n + (8 - n % 8) % 8, d = b + Number(r), g = t.slice(o, n), l = new TextDecoder().decode(g).trim(), h = JSON.parse(l);
|
|
2213
2213
|
if (!h.buffers) throw new Error("subtree has no buffers");
|
|
2214
2214
|
const f = h.buffers.map(async (m) => {
|
|
2215
2215
|
if (m.uri) {
|
|
@@ -2217,7 +2217,7 @@ async function st(c) {
|
|
|
2217
2217
|
if (!C.ok) throw new Error(`Failed to fetch binary file ${u}: ${C.statusText}`);
|
|
2218
2218
|
return new Uint8Array(await C.arrayBuffer());
|
|
2219
2219
|
}
|
|
2220
|
-
return new Uint8Array(t.slice(
|
|
2220
|
+
return new Uint8Array(t.slice(b, d));
|
|
2221
2221
|
}), I = await Promise.all(f);
|
|
2222
2222
|
return /* @__PURE__ */ function(m, u) {
|
|
2223
2223
|
function C(p, Q) {
|
|
@@ -2235,7 +2235,7 @@ async function st(c) {
|
|
|
2235
2235
|
const j = x % 8;
|
|
2236
2236
|
return p[Q + Math.floor(x / 8)] >> j & !0;
|
|
2237
2237
|
}
|
|
2238
|
-
function
|
|
2238
|
+
function w(p) {
|
|
2239
2239
|
let Q = 0;
|
|
2240
2240
|
return Q = p.z == null ? Ia(p.x, p.y, p.level) : Ba(p.x, p.y, p.z, p.level), C(m.tileAvailability, Q);
|
|
2241
2241
|
}
|
|
@@ -2247,11 +2247,11 @@ async function st(c) {
|
|
|
2247
2247
|
x.push(C(j, Q));
|
|
2248
2248
|
}), x;
|
|
2249
2249
|
}
|
|
2250
|
-
function
|
|
2250
|
+
function y(p) {
|
|
2251
2251
|
let Q = 0;
|
|
2252
2252
|
return Q = p.z == null ? Ia(p.x, p.y) : Ba(p.x, p.y, p.z), C(m.childSubtreeAvailability, Q);
|
|
2253
2253
|
}
|
|
2254
|
-
return { isTileAvailable:
|
|
2254
|
+
return { isTileAvailable: w, isContentAvailable: k, isChildSubtreeAvailable: y };
|
|
2255
2255
|
}(h, I);
|
|
2256
2256
|
}(await a.arrayBuffer(), rt(c));
|
|
2257
2257
|
throw new Error(`Unsupported file extension: ${e}`);
|
|
@@ -2275,7 +2275,7 @@ function Ba(c, e, a, t) {
|
|
|
2275
2275
|
return t && (A = (Math.pow(8, t) - 1) / 7), A + (ma(c) | ma(e) << 1 | ma(a) << 2);
|
|
2276
2276
|
}
|
|
2277
2277
|
const Te = /* @__PURE__ */ new Map();
|
|
2278
|
-
async function
|
|
2278
|
+
async function Ua(c, e) {
|
|
2279
2279
|
if (!c.root || !c.root.implicitTiling) return c;
|
|
2280
2280
|
if (!c.root.content && !c.root.contents) throw new Error("implicit tiling requires a Template URI");
|
|
2281
2281
|
let a = !0;
|
|
@@ -2294,13 +2294,13 @@ async function Ga(c, e) {
|
|
|
2294
2294
|
a && (s = t.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0)), a || (s = t.replace("{level}", 0).replace("{x}", 0).replace("{y}", 0).replace("{z}", 0));
|
|
2295
2295
|
const r = { level: 0, x: 0, y: 0 }, o = { level: 0, x: 0, y: 0 };
|
|
2296
2296
|
a || (r.z = 0, o.z = 0), Te.set(s, await st(i + s));
|
|
2297
|
-
const n = Te.get(s),
|
|
2297
|
+
const n = Te.get(s), b = [];
|
|
2298
2298
|
n.isContentAvailable(o) && A.forEach((l) => {
|
|
2299
2299
|
let h;
|
|
2300
|
-
a && (h = l.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y)), a || (h = l.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y).replace("{z}", r.z)),
|
|
2300
|
+
a && (h = l.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y)), a || (h = l.replace("{level}", r.level).replace("{x}", r.x).replace("{y}", r.y).replace("{z}", r.z)), b.push({ uri: h });
|
|
2301
2301
|
});
|
|
2302
|
-
const
|
|
2303
|
-
return { root:
|
|
2302
|
+
const d = { geometricError: c.root.geometricError, boundingVolume: c.root.boundingVolume, refine: c.root.refine, globalAddress: r, localAddress: o, subtree: n, contents: b, getChildren: async () => g(d) };
|
|
2303
|
+
return { root: d };
|
|
2304
2304
|
async function g(l) {
|
|
2305
2305
|
const h = [];
|
|
2306
2306
|
if (l.localAddress.level == c.root.implicitTiling.availableLevels - 1) return h;
|
|
@@ -2309,14 +2309,14 @@ async function Ga(c, e) {
|
|
|
2309
2309
|
for (let u = 0; u < f.length; u++) {
|
|
2310
2310
|
const C = f[u], B = I[u];
|
|
2311
2311
|
l.subtree.isChildSubtreeAvailable(C) && (a && t.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y), a || t.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y).replace("{z}", B.z)), Te.has(s) || Te.set(s, await st(i + s));
|
|
2312
|
-
const
|
|
2312
|
+
const w = Te.get(s), k = { level: 0, x: 0, y: 0 };
|
|
2313
2313
|
a || (k.z = 0);
|
|
2314
|
-
const
|
|
2315
|
-
|
|
2314
|
+
const y = [];
|
|
2315
|
+
w.isContentAvailable(k) && A.forEach((Q) => {
|
|
2316
2316
|
let x;
|
|
2317
|
-
a && (x = Q.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y)), a || (x = Q.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y).replace("{z}", B.z)),
|
|
2317
|
+
a && (x = Q.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y)), a || (x = Q.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y).replace("{z}", B.z)), y.push({ uri: x });
|
|
2318
2318
|
});
|
|
2319
|
-
const p = { geometricError: l.geometricError / 2, boundingVolume: m[u], refine: c.root.refine, globalAddress: B, localAddress: k, subtree:
|
|
2319
|
+
const p = { geometricError: l.geometricError / 2, boundingVolume: m[u], refine: c.root.refine, globalAddress: B, localAddress: k, subtree: w, contents: y, getChildren: async () => g(p) };
|
|
2320
2320
|
h.push(p);
|
|
2321
2321
|
}
|
|
2322
2322
|
} else {
|
|
@@ -2324,15 +2324,15 @@ async function Ga(c, e) {
|
|
|
2324
2324
|
for (let u = 0; u < f.length; u++) {
|
|
2325
2325
|
const C = f[u], B = I[u];
|
|
2326
2326
|
if (!l.subtree.isTileAvailable(C)) continue;
|
|
2327
|
-
const
|
|
2327
|
+
const w = [], k = l.subtree.isContentAvailable(C);
|
|
2328
2328
|
for (let p = 0; p < A.length; p++) {
|
|
2329
2329
|
if (!k[p]) continue;
|
|
2330
2330
|
const Q = A[p];
|
|
2331
2331
|
let x;
|
|
2332
|
-
a && (x = Q.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y)), a || (x = Q.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y).replace("{z}", B.z)),
|
|
2332
|
+
a && (x = Q.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y)), a || (x = Q.replace("{level}", B.level).replace("{x}", B.x).replace("{y}", B.y).replace("{z}", B.z)), w.push({ uri: x });
|
|
2333
2333
|
}
|
|
2334
|
-
const
|
|
2335
|
-
h.push(
|
|
2334
|
+
const y = { geometricError: l.geometricError / 2, boundingVolume: m[u], refine: c.root.refine, globalAddress: B, localAddress: C, subtree: l.subtree, contents: w, getChildren: async () => g(y) };
|
|
2335
|
+
h.push(y);
|
|
2336
2336
|
}
|
|
2337
2337
|
}
|
|
2338
2338
|
return h.length > 0 ? h : void 0;
|
|
@@ -2350,12 +2350,12 @@ function ot(c, e, a) {
|
|
|
2350
2350
|
}
|
|
2351
2351
|
function Hi(c, e, a) {
|
|
2352
2352
|
if (e.region) return function(t, A, i) {
|
|
2353
|
-
const [s, r, o, n,
|
|
2353
|
+
const [s, r, o, n, b, d] = A, g = (o - s) / 2 ** i.level, l = (n - r) / 2 ** i.level, h = t ? 0 : (d - b) / 2 ** i.level, f = s + g * i.x, I = r + l * i.y, m = f + g, u = I + l, C = t ? b : b + h * i.z, B = t ? d : C + h;
|
|
2354
2354
|
return { region: [f, I, m, u, C, B] };
|
|
2355
2355
|
}(c, e.region, a);
|
|
2356
2356
|
if (e.box) return function(t, A, i) {
|
|
2357
|
-
const s = A.slice(0, 3), r = [A.slice(3, 6), A.slice(6, 9), A.slice(9, 12)], o = 1 / Math.pow(2, i.level), n = [o, o, t ? 1 : o],
|
|
2358
|
-
return { box: [
|
|
2357
|
+
const s = A.slice(0, 3), r = [A.slice(3, 6), A.slice(6, 9), A.slice(9, 12)], o = 1 / Math.pow(2, i.level), n = [o, o, t ? 1 : o], b = r.map((l, h) => l.map((f) => f * n[h])), d = [s[0] - r[0][0] - r[1][0] - r[2][0], s[1] - r[0][1] - r[1][1] - r[2][1], s[2] - r[0][2] - r[1][2] - r[2][2]];
|
|
2358
|
+
return { box: [d[0] + (2 * i.x + 1) * (b[0][0] + b[1][0] + b[2][0]), d[1] + (2 * i.y + 1) * (b[0][1] + b[1][1] + b[2][1]), t ? s[2] : d[2] + (2 * i.z + 1) * (b[0][2] + b[1][2] + b[2][2])].concat(...b) };
|
|
2359
2359
|
}(c, e.box, a);
|
|
2360
2360
|
throw new Error("Unsupported bounding volume type");
|
|
2361
2361
|
}
|
|
@@ -2363,13 +2363,13 @@ function Hi(c, e, a) {
|
|
|
2363
2363
|
var c, e = new Uint8Array([32, 0, 65, 2, 1, 106, 34, 33, 3, 128, 11, 4, 13, 64, 6, 253, 10, 7, 15, 116, 127, 5, 8, 12, 40, 16, 19, 54, 20, 9, 27, 255, 113, 17, 42, 67, 24, 23, 146, 148, 18, 14, 22, 45, 70, 69, 56, 114, 101, 21, 25, 63, 75, 136, 108, 28, 118, 29, 73, 115]);
|
|
2364
2364
|
if (typeof WebAssembly != "object") return { supported: !1 };
|
|
2365
2365
|
var a = WebAssembly.instantiate(function(n) {
|
|
2366
|
-
for (var
|
|
2367
|
-
var g = n.charCodeAt(
|
|
2368
|
-
d
|
|
2366
|
+
for (var b = new Uint8Array(n.length), d = 0; d < n.length; ++d) {
|
|
2367
|
+
var g = n.charCodeAt(d);
|
|
2368
|
+
b[d] = g > 96 ? g - 97 : g > 64 ? g - 39 : g + 4;
|
|
2369
2369
|
}
|
|
2370
2370
|
var l = 0;
|
|
2371
|
-
for (
|
|
2372
|
-
return
|
|
2371
|
+
for (d = 0; d < n.length; ++d) b[l++] = b[d] < 60 ? e[b[d]] : 64 * (b[d] - 60) + b[++d];
|
|
2372
|
+
return b.buffer.slice(0, l);
|
|
2373
2373
|
}("b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:G:Qdkr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq;A9pLdbk;QqeKu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRbN:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9Uc;WFbGgecjdaecjd6Ehqcbhkindndnaiak9nmbaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndnaec9WGgsTmbcbhzaPhHawhOxekdnaxmbalheinaraw9Ram6miawcbamzNjjjbamfhwaecufgembxvkkcbhAaPhOinaDaAfRbbhCaDcjlfheaOhoaxhXinaeaoRbbgQaC9RgCcetaCcKtcK91cr4786bbaoalfhoaecefheaQhCaXcufgXmbkaraw9Ram6mdaOcefhOawcbamzNjjjbamfhwaAcefgAal9hmbxlkkindnaxTmbaDazfRbbhCaDcjlfheaHhoaxhXinaeaoRbbgQaC9RgCcetaCcKtcK91cr4786bbaoalfhoaecefheaQhCaXcufgXmbkkaraO9Ram6mearaOcbamzNjjjbgLamfgw9RcK6mecbhKaDcjlfhOinaDcjlfaKfhYcwhAczhQceheindndnaegXce9hmbcuhoaYRbbmecbhodninaogecsSmeaecefhoaOaefcefRbbTmbkkcucbaecs6EhoxekaXcethocuaXtc;:bGcFb7hCcbheinaoaCaOaefRbb9nfhoaecefgecz9hmbkkaoaQaoaQ6geEhQaXaAaeEhAaXcetheaXcl6mbkdndndndnaAcufPdiebkaLaKco4fgeaeRbbcdciaAclSEaKci4coGtV86bbaAcw9hmeawaY8Pbb83bbawcwfaYcwf8Pbb83bbawczfhwxdkaLaKco4fgeaeRbbceaKci4coGtV86bbkdncwaA9Tg8Ambinawcb86bbawcefhwxbkkcuaAtcu7hYcbhEaOh3ina3hea8AhCcbhoinaeRbbgQaYcFeGgXaQaX6EaoaAtVhoaecefheaCcufgCmbkawao86bba3a8Afh3awcefhwaEa8AfgEcz6mbkcbheindnaOaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaKczfgKas9pmbaOczfhOaraw9RcL0mekkaKas6meawTmeaHcefhHawhOazcefgzalSmixbkkcbhoxikcbhoaraw9Ralcaalca0E6mddnalc8F0mbawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9RhoxdkaDaPaxcufal2falz:tjjjb8Aaxakfhkawmbkcbhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBdN:kjjbk:zse5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:e:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc:y1jjbfydbcdtfydbh3aLaocN1jjbfydbcdtfydbh8AaLaoc:q1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc:q1jjbfydbcdtfydbgKTaLavcN1jjbfydbcdtfydbg8AceSGaLavc:y1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavcj1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:e:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:e:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b9kEc:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A9kEc:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;HqdCui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgradcFFFFi0Ecbyd:m:kjjbHjjjjbbgeBd:SeavceBd:mdaeabarz:tjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaeadaiavc:Sefz:njjjbavyd:Gehwadci9UgDcbyd:m:kjjbHjjjjbbhravc:Sefavyd:mdgqcdtfarBdbavaqcefgkBd:mdarcbaDzNjjjbhxavc:SefakcdtfcuaicdtaicFFFFi0Ecbyd:m:kjjbHjjjjbbgmBdbavaqcdfgPBd:mdawhramhkinakalIdbalarydbgscwascw6Ecdtfc;ebfIdbMUdbarclfhrakclfhkaicufgimbkavc:SefaPcdtfcuaDcdtadcFFFF970Ecbyd:m:kjjbHjjjjbbgPBdbdnadci6mbaehraPhkaDhiinakamarydbcdtfIdbamarclfydbcdtfIdbMamarcwfydbcdtfIdbMUdbarcxfhrakclfhkaicufgimbkkaqcifhoavc;qbfhzavhravyd:KehHavyd:OehOcbhscbhkcbhAcehCinarhXcihQaeakci2gLcdtfgrydbhdarclfydbhqabaAcx2fgicwfarcwfydbgKBdbaiclfaqBdbaiadBdbaxakfce86bbazaKBdwazaqBdlazadBdbaPakcdtfcbBdbdnasTmbcihQaXhiinazaQcdtfaiydbgrBdbaQaraK9harad9haraq9hGGfhQaiclfhiascufgsmbkkaAcefhAcbhsinaOaHaeasaLfcdtfydbcdtgifydbcdtfgKhrawaifgqydbgdhidnadTmbdninarydbakSmearclfhraicufgiTmdxbkkaraKadcdtfc98fydbBdbaqaqydbcufBdbkascefgsci9hmbkdndnaQTmbcuhkJbbbbhYcbhqavyd:KehKavyd:OehLindndnawazaqcdtfydbcdtgsfydbgrmbaqcefhqxekaqcs0hiamasfgdIdbh8AadalcbaqcefgqaiEcdtfIdbalarcwarcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEarcdthiaLaKasfydbcdtfhrinaParydbgscdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYasakadEhkarclfhraic98fgimbkkaqaQ9hmbkakcu9hmekaCaD9pmdindnaxaCfRbbmbaChkxdkaDaCcefgC9hmbxikkaQczaQcz6EhsazhraXhzakcu9hmbkkaocdtavc:Seffc98fhrdninaoTmearydbcbyd1:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd:m:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:m:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:m:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;Wkivuo99lu8Jjjjjbc;W;Gb9Rgl8Kjjjjbcbhvalcj;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:m:kjjbHjjjjbbgrBdj9GalceBd;G9GalcFFF;7rBdwal9cFFF;7;3FF:;Fb83dbalcFFF97Bd;S9Gal9cFFF;7FFF:;u83d;K9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;K;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;S9GhDalIdlhkalId;O9GhxalIdbhmalId;K9GhPkdndnadTmbJbbbbJbbjZJbbbbaPam:tgPaPJbbbb9DEgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhHalaocbyd:m:kjjbHjjjjbbgiBd:e9GdnadTmbabhzinazaHBdbazclfhzadaHcefgH9hmbkabhHadhzinalaraHydbgecdtfydbcFrGcx2fgvavydbgvcefBdbaiavcdtfaeBdbaHclfhHazcufgzmbkaihHadhzinalaraHydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaHclfhHazcufgzmbkabhHadhzinalaraHydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwaiavcdtfaeBdbaHclfhHazcufgzmbkcbhHinabaiydbcdtfaHBdbaiclfhiadaHcefgH9hmbkkclhidninaic98Smealcj;Gbfaifydbcbyd1:kjjbH:bjjjbbaic98fhixbkkalc;W;Gbf8Kjjjjbk9teiucbcbyd:q:kjjbgeabcifc98GfgbBd:q:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:kjjbgeabcrfc94GfgbBd:q:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:kjjbfgdBd:q:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iddbcjwk:edb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:bc:eqkzebbbebbbdbbba:vbb"), {}).then(function(n) {
|
|
2374
2374
|
(c = n.instance).exports.__wasm_call_ctors(), c.exports.meshopt_encodeVertexVersion(0), c.exports.meshopt_encodeIndexVersion(1);
|
|
2375
2375
|
});
|
|
@@ -2379,27 +2379,27 @@ function Hi(c, e, a) {
|
|
|
2379
2379
|
function A(n) {
|
|
2380
2380
|
return new Uint8Array(n.buffer, n.byteOffset, n.byteLength);
|
|
2381
2381
|
}
|
|
2382
|
-
function i(n,
|
|
2383
|
-
var h = c.exports.sbrk, f = h(
|
|
2384
|
-
m.set(A(
|
|
2385
|
-
var u = n(f,
|
|
2382
|
+
function i(n, b, d, g, l) {
|
|
2383
|
+
var h = c.exports.sbrk, f = h(b), I = h(g * l), m = new Uint8Array(c.exports.memory.buffer);
|
|
2384
|
+
m.set(A(d), I);
|
|
2385
|
+
var u = n(f, b, I, g, l), C = new Uint8Array(u);
|
|
2386
2386
|
return C.set(m.subarray(f, f + u)), h(f - h(0)), C;
|
|
2387
2387
|
}
|
|
2388
2388
|
function s(n) {
|
|
2389
|
-
for (var
|
|
2390
|
-
var g = n[
|
|
2391
|
-
return
|
|
2389
|
+
for (var b = 0, d = 0; d < n.length; ++d)
|
|
2390
|
+
var g = n[d];
|
|
2391
|
+
return b;
|
|
2392
2392
|
}
|
|
2393
|
-
function r(n,
|
|
2394
|
-
if (t(
|
|
2395
|
-
var
|
|
2396
|
-
return new Uint32Array(
|
|
2393
|
+
function r(n, b) {
|
|
2394
|
+
if (t(b == 2 || b == 4), b == 4) return new Uint32Array(n.buffer, n.byteOffset, n.byteLength / 4);
|
|
2395
|
+
var d = new Uint16Array(n.buffer, n.byteOffset, n.byteLength / 2);
|
|
2396
|
+
return new Uint32Array(d);
|
|
2397
2397
|
}
|
|
2398
|
-
function o(n,
|
|
2399
|
-
var I = c.exports.sbrk, m = I(
|
|
2400
|
-
C.set(A(
|
|
2401
|
-
var B = new Uint8Array(
|
|
2402
|
-
return B.set(C.subarray(m, m +
|
|
2398
|
+
function o(n, b, d, g, l, h, f) {
|
|
2399
|
+
var I = c.exports.sbrk, m = I(d * g), u = I(d * h), C = new Uint8Array(c.exports.memory.buffer);
|
|
2400
|
+
C.set(A(b), u), n(m, d, g, l, u, f);
|
|
2401
|
+
var B = new Uint8Array(d * g);
|
|
2402
|
+
return B.set(C.subarray(m, m + d * g)), I(m - I(0)), B;
|
|
2403
2403
|
}
|
|
2404
2404
|
})();
|
|
2405
2405
|
var Vt = function() {
|
|
@@ -2418,13 +2418,13 @@ var Vt = function() {
|
|
|
2418
2418
|
return h.buffer.slice(0, m);
|
|
2419
2419
|
}
|
|
2420
2420
|
function s(l, h, f, I, m, u, C) {
|
|
2421
|
-
var B = l.exports.sbrk,
|
|
2422
|
-
p.set(u,
|
|
2423
|
-
var Q = h(k, I, m,
|
|
2424
|
-
if (Q == 0 && C && C(k,
|
|
2421
|
+
var B = l.exports.sbrk, w = I + 3 & -4, k = B(w * m), y = B(u.length), p = new Uint8Array(l.exports.memory.buffer);
|
|
2422
|
+
p.set(u, y);
|
|
2423
|
+
var Q = h(k, I, m, y, u.length);
|
|
2424
|
+
if (Q == 0 && C && C(k, w, m), f.set(p.subarray(k, k + I * m)), B(k - B(0)), Q != 0) throw new Error("Malformed buffer data: " + Q);
|
|
2425
2425
|
}
|
|
2426
|
-
var r = { NONE: "", OCTAHEDRAL: "meshopt_decodeFilterOct", QUATERNION: "meshopt_decodeFilterQuat", EXPONENTIAL: "meshopt_decodeFilterExp" }, o = { ATTRIBUTES: "meshopt_decodeVertexBuffer", TRIANGLES: "meshopt_decodeIndexBuffer", INDICES: "meshopt_decodeIndexSequence" }, n = [],
|
|
2427
|
-
function
|
|
2426
|
+
var r = { NONE: "", OCTAHEDRAL: "meshopt_decodeFilterOct", QUATERNION: "meshopt_decodeFilterQuat", EXPONENTIAL: "meshopt_decodeFilterExp" }, o = { ATTRIBUTES: "meshopt_decodeVertexBuffer", TRIANGLES: "meshopt_decodeIndexBuffer", INDICES: "meshopt_decodeIndexSequence" }, n = [], b = 0;
|
|
2427
|
+
function d(l) {
|
|
2428
2428
|
var h = { object: new Worker(l), pending: 0, requests: {} };
|
|
2429
2429
|
return h.object.onmessage = function(f) {
|
|
2430
2430
|
var I = f.data;
|
|
@@ -2445,7 +2445,7 @@ var Vt = function() {
|
|
|
2445
2445
|
}
|
|
2446
2446
|
return { ready: A, supported: !0, useWorkers: function(l) {
|
|
2447
2447
|
(function(h) {
|
|
2448
|
-
for (var f = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(t) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + g.name + ";" + s.toString() + g.toString(), I = new Blob([f], { type: "text/javascript" }), m = URL.createObjectURL(I), u = n.length; u < h; ++u) n[u] =
|
|
2448
|
+
for (var f = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(t) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + g.name + ";" + s.toString() + g.toString(), I = new Blob([f], { type: "text/javascript" }), m = URL.createObjectURL(I), u = n.length; u < h; ++u) n[u] = d(m);
|
|
2449
2449
|
for (u = h; u < n.length; ++u) n[u].object.postMessage({});
|
|
2450
2450
|
n.length = h, URL.revokeObjectURL(m);
|
|
2451
2451
|
})(l);
|
|
@@ -2458,11 +2458,11 @@ var Vt = function() {
|
|
|
2458
2458
|
}, decodeGltfBuffer: function(l, h, f, I, m, u) {
|
|
2459
2459
|
s(a, a.exports[o[m]], l, h, f, I, a.exports[r[u]]);
|
|
2460
2460
|
}, decodeGltfBufferAsync: function(l, h, f, I, m) {
|
|
2461
|
-
return n.length > 0 ? function(u, C, B,
|
|
2462
|
-
for (var
|
|
2461
|
+
return n.length > 0 ? function(u, C, B, w, k) {
|
|
2462
|
+
for (var y = n[0], p = 1; p < n.length; ++p) n[p].pending < y.pending && (y = n[p]);
|
|
2463
2463
|
return new Promise(function(Q, x) {
|
|
2464
|
-
var j = new Uint8Array(B), M = ++
|
|
2465
|
-
|
|
2464
|
+
var j = new Uint8Array(B), M = ++b;
|
|
2465
|
+
y.pending += u, y.requests[M] = { resolve: Q, reject: x }, y.object.postMessage({ id: M, count: u, size: C, source: j, mode: w, filter: k }, [j.buffer]);
|
|
2466
2466
|
});
|
|
2467
2467
|
}(l, h, f, o[I], r[m]) : A.then(function() {
|
|
2468
2468
|
var u = new Uint8Array(l * h);
|
|
@@ -2475,12 +2475,12 @@ var Vt = function() {
|
|
|
2475
2475
|
if (typeof WebAssembly != "object") return { supported: !1 };
|
|
2476
2476
|
var a = WebAssembly.instantiate(function(r) {
|
|
2477
2477
|
for (var o = new Uint8Array(r.length), n = 0; n < r.length; ++n) {
|
|
2478
|
-
var
|
|
2479
|
-
o[n] =
|
|
2478
|
+
var b = r.charCodeAt(n);
|
|
2479
|
+
o[n] = b > 96 ? b - 97 : b > 64 ? b - 39 : b + 4;
|
|
2480
2480
|
}
|
|
2481
|
-
var
|
|
2482
|
-
for (n = 0; n < r.length; ++n) o[
|
|
2483
|
-
return o.buffer.slice(0,
|
|
2481
|
+
var d = 0;
|
|
2482
|
+
for (n = 0; n < r.length; ++n) o[d++] = o[n] < 60 ? e[o[n]] : 64 * (o[n] - 60) + o[++n];
|
|
2483
|
+
return o.buffer.slice(0, d);
|
|
2484
2484
|
}("b9H79Tebbbe9Hk9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gvuuuuue999Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuecj:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdmxq;UMesdbk:kfvKue99euY99Qu8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ljjjb8AdnabaeSmbabaeadcdtz:kjjjb8AkdnamcdGTmbalcrfci4gHcbyd;S1jjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhAcbhlcbhednadTmbcbhlabheadhHinaAaeydbgOci4fgCaCRbbgCceaOcrGgOtV86bbaCcu7aO4ceGalfhlaeclfheaHcufgHmbkcualcdtalcFFFFi0Ehekaecbyd;S1jjbHjjjjbbhzascxfasyd2gecdtfazBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd;S1jjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhQdnadTmbaecufhCcbhLinabaXcdtfgKydbgAc:v;t;h;Ev2hOcbhedndninaQaOaCGgOcdtfgYydbgHcuSmeazaHcdtfydbaASmdaecefgeaOfhOaeaC9nmbxdkkazaLcdtfaABdbaYaLBdbaLhHaLcefhLkaKaHBdbaXcefgXad9hmbkkaQcbyd;O1jjbH:bjjjbbasasyd2cufBd2kcualcefgecdtaecFFFFi0Ecbyd;S1jjbHjjjjbbh8Aascxfasyd2gecdtfa8ABdbasa8ABdlasaecefBd2cuadcitadcFFFFe0Ecbyd;S1jjbHjjjjbbhEascxfasyd2gecdtfaEBdbasaEBdwasaecefBd2asclfabadalcbz:cjjjbcualcdtg3alcFFFFi0Eg5cbyd;S1jjbHjjjjbbhQascxfasyd2gecdtfaQBdbasaecefBd2a5cbyd;S1jjbHjjjjbbh8Eascxfasyd2gecdtfa8EBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhLcuaecdtgOaecFFFFi0Ecbyd;S1jjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhXdnalTmbavcd4hCaecufhHinaLhednazTmbazaLcdtfydbhekaiaeaC2cdtfgeydlgOcH4aO7c:F:b:DD2aeydbgOcH4aO7c;D;O:B8J27aeydwgecH4ae7c:3F;N8N27aHGheaLcdth8FdndndndndnazTmbaza8FfhKcbhOinaXaecdtfgYydbgAcuSmlaiazaAcdtfydbaC2cdtfaiaKydbaC2cdtfcxz:ojjjbTmiaOcefgOaefaHGheaOaH9nmbxdkkaiaLaC2cdtfhKcbhOinaXaecdtfgYydbgAcuSmiaiaAaC2cdtfaKcxz:ojjjbTmdaOcefgOaefaHGheaOaH9nmbkkcbhYkaYydbgecu9hmekaYaLBdbaLhekaQa8FfaeBdbaLcefgLal9hmbkcbhea8EhHinaHaeBdbaHclfhHalaecefge9hmbkcbheaQhHa8EhOindnaeaHydbgCSmbaOa8EaCcdtfgCydbBdbaCaeBdbkaHclfhHaOclfhOalaecefge9hmbkkcbhaaXcbyd;O1jjbH:bjjjbbasasyd2cufBd2alcbyd;S1jjbHjjjjbbhXascxfasyd2gecdtfaXBdbasaecefBd2a5cbyd;S1jjbHjjjjbbheascxfasyd2gHcdtfaeBdbasaHcefBd2a5cbyd;S1jjbHjjjjbbhHascxfasyd2gOcdtfaHBdbasaOcefBd2aecFea3z:ljjjbhhaHcFea3z:ljjjbhgdnalTmbaEcwfh8Jindna8AaagOcefgacdtfydbgCa8AaOcdtgefydbgHSmbaCaH9Rh8FaEaHcitfh3agaefh8KahaefhLcbhAindndna3aAcitfydbgYaO9hmbaLaOBdba8KaOBdbxekdna8AaYcdtg8LfgeclfydbgHaeydbgeSmbaEaecitgCfydbaOSmeaHae9Rh8Maecu7aHfhKa8JaCfhHcbheinaKaeSmeaecefheaHydbhCaHcwfhHaCaO9hmbkaea8M6mekaga8LfgeaOaYaeydbcuSEBdbaLaYaOaLydbcuSEBdbkaAcefgAa8F9hmbkkaaal9hmbkaQhHa8EhOaghCahhAcbheindndnaeaHydbgY9hmbdnaeaOydbgY9hmbaAydbhYdnaCydbgKcu9hmbaYcu9hmbaXaefcb86bbxikaXaefhLdnaeaKSmbaeaYSmbaLce86bbxikaLcl86bbxdkdnaea8EaYcdtgKfydb9hmbdnaCydbgLcuSmbaeaLSmbaAydbg8FcuSmbaea8FSmbagaKfydbg3cuSmba3aYSmbahaKfydbgKcuSmbaKaYSmbdnaQaLcdtfydbgYaQaKcdtfydb9hmbaYaQa8FcdtfydbgKSmbaKaQa3cdtfydb9hmbaXaefcd86bbxlkaXaefcl86bbxikaXaefcl86bbxdkaXaefcl86bbxekaXaefaXaYfRbb86bbkaHclfhHaOclfhOaCclfhCaAclfhAalaecefge9hmbkdnaqTmbdndnazTmbazheaQhHalhOindnaqaeydbfRbbTmbaXaHydbfcl86bbkaeclfheaHclfhHaOcufgOmbxdkkaQhealhHindnaqRbbTmbaXaeydbfcl86bbkaqcefhqaeclfheaHcufgHmbkkaQhealhOaXhHindnaXaeydbfRbbcl9hmbaHcl86bbkaeclfheaHcefhHaOcufgOmbkkamceGTmbaXhealhHindnaeRbbce9hmbaecl86bbkaecefheaHcufgHmbkkcualcx2alc;v:Q;v:Qe0Ecbyd;S1jjbHjjjjbbhaascxfasyd2gecdtfaaBdbasaecefBd2aaaialavazz:djjjbh8NdndnaDmbcbhycbh8Jxekcbh8JawhecbhHindnaeIdbJbbbb9ETmbasc;Wbfa8JcdtfaHBdba8Jcefh8JkaeclfheaDaHcefgH9hmbkcua8Jal2gecdtaecFFFFi0Ecbyd;S1jjbHjjjjbbhyascxfasyd2gecdtfayBdbasaecefBd2alTmba8JTmbarcd4hLdnazTmba8JcdthicbhYayhKinaoazaYcdtfydbaL2cdtfhAasc;WbfheaKhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaKaifhKaYcefgYal9hmbxdkka8JcdthicbhYayhKinaoaYaL2cdtfhAasc;WbfheaKhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaKaifhKaYcefgYal9hmbkkcualc8S2gHalc;D;O;f8U0EgCcbyd;S1jjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhqdndndndna8JTmbaCcbyd;S1jjbHjjjjbbhvascxfasyd2gecdtfavBdbcehOasaecefBd2avcbaHz:ljjjb8Acua8Jal2gecltgHaecFFFFb0Ecbyd;S1jjbHjjjjbbhrascxfasyd2gecdtfarBdbasaecefBd2arcbaHz:ljjjb8AadmexikcbhvadTmecbhrkcbhAabhHindnaaaHclfydbgYcx2fgeIdbaaaHydbgKcx2fgOIdbg8P:tgIaaaHcwfydbgLcx2fgCIdlaOIdlg8R:tg8SNaCIdba8P:tgRaeIdla8R:tg8UN:tg8Va8VNa8UaCIdwaOIdwg8W:tg8XNa8SaeIdwa8W:tg8UN:tg8Sa8SNa8UaRNa8XaIN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaQaKcdtfydbc8S2fgea8SaR:rgRa8SNNg8UaeIdbMUdbaeaIaRaINg8YNg8XaeIdlMUdlaea8VaRa8VNg8ZNg80aeIdwMUdwaea8Ya8SNg8YaeIdxMUdxaea8Za8SNg81aeIdzMUdzaea8ZaINg8ZaeIdCMUdCaea8SaRa8Va8WNa8Sa8PNa8RaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaQaYcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaqaQaLcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaHcxfhHaAcifgAad6mbkcbhiabhKinabaicdtfhYcbhHinaXaYaHc:G1jjbfydbcdtfydbgOfRbbhedndnaXaKaHfydbgCfRbbgAc99fcFeGcpe0mbaeceSmbaecd9hmekdnaAcufcFeGce0mbahaCcdtfydbaO9hmekdnaecufcFeGce0mbagaOcdtfydbaC9hmekdnaAcv2aefcj1jjbfRbbTmbaQaOcdtfydbaQaCcdtfydb0mekJbbacJbbacJbbjZaeceSEaAceSEh8ZdnaaaYaHc:K1jjbfydbcdtfydbcx2fgeIdwaaaCcx2fgAIdwg8R:tg8VaaaOcx2fgLIdwa8R:tg8Sa8SNaLIdbaAIdbg8W:tgIaINaLIdlaAIdlg8U:tgRaRNMMg8PNa8Va8SNaeIdba8W:tg80aINaRaeIdla8U:tg8YNMMg8Xa8SN:tg8Va8VNa80a8PNa8XaIN:tg8Sa8SNa8Ya8PNa8XaRN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaQaCcdtfydbc8S2fgea8Sa8Za8P:rNgRa8SNNg8XaeIdbMUdbaeaIaRaINg8ZNg80aeIdlMUdlaea8VaRa8VNg8PNg8YaeIdwMUdwaea8Za8SNg8ZaeIdxMUdxaea8Pa8SNg81aeIdzMUdzaea8PaINgBaeIdCMUdCaea8SaRa8Va8RNa8Sa8WNa8UaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaQaOcdtfydbc8S2fgea8XaeIdbMUdbaea80aeIdlMUdlaea8YaeIdwMUdwaea8ZaeIdxMUdxaea81aeIdzMUdzaeaBaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdykaHclfgHcx9hmbkaKcxfhKaicifgiad6mbkdna8JTmbcbhKinJbbbbh8WaaabaKcdtfgeclfydbgLcx2fgHIdwaaaeydbgicx2fgOIdwg8Y:tgIaINaHIdbaOIdbg81:tg8Va8VNaHIdlaOIdlgB:tgRaRNMMg8Zaaaecwfydbg8Fcx2fgeIdwa8Y:tg8PNaIaIa8PNa8VaeIdba81:tg8RNaRaeIdlaB:tg8UNMMg8SN:tJbbbbJbbjZa8Za8Pa8PNa8Ra8RNa8Ua8UNMMg80Na8Sa8SN:tg8X:va8XJbbbb9BEg8XNh83a80aINa8Pa8SN:ta8XNhUa8Za8UNaRa8SN:ta8XNh85a80aRNa8Ua8SN:ta8XNh86a8Za8RNa8Va8SN:ta8XNh87a80a8VNa8Ra8SN:ta8XNh88a8Va8UNa8RaRN:tg8Sa8SNaRa8PNa8UaIN:tg8Sa8SNaIa8RNa8Pa8VN:tg8Sa8SNMM:rJbbbZNh8Sayaia8J2g3cdtfhHaya8Fa8J2gwcdtfhOayaLa8J2g8LcdtfhCa8Y:mh89aB:mh8:a81:mhZcbhAa8JhYJbbbbh8UJbbbbh8XJbbbbh8ZJbbbbh80Jbbbbh8YJbbbbh81JbbbbhBJbbbbhnJbbbbhcinasc;WbfaAfgecwfa8SaUaCIdbaHIdbg8P:tgRNa83aOIdba8P:tg8RNMgINUdbaeclfa8Sa86aRNa85a8RNMg8VNUdbaea8Sa88aRNa87a8RNMgRNUdbaecxfa8Sa89aINa8:a8VNa8PaZaRNMMMg8PNUdba8SaIa8VNNa80Mh80a8SaIaRNNa8YMh8Ya8Sa8VaRNNa81Mh81a8Sa8Pa8PNNa8WMh8Wa8SaIa8PNNa8UMh8Ua8Sa8Va8PNNa8XMh8Xa8SaRa8PNNa8ZMh8Za8SaIaINNaBMhBa8Sa8Va8VNNanMhna8SaRaRNNacMhcaHclfhHaCclfhCaOclfhOaAczfhAaYcufgYmbkavaic8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyavaLc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyava8Fc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyara3cltfhYcbhHa8JhCinaYaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkara8LcltfhYcbhHa8JhCinaYaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkarawcltfhYcbhHa8JhCinaYaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkaKcifgKad6mbkkcbhOxekcehOcbhrkcbh8FdndnamcwGg9cmbJbbbbh8ZcbhJcbhocbhCxekcbhea5cbyd;S1jjbHjjjjbbhCascxfasyd2gHcdtfaCBdbasaHcefBd2dnalTmbaChHinaHaeBdbaHclfhHalaecefge9hmbkkdnaOmbcbhiinabaicdtfhLcbhKinaQaLaKcdtgec:G1jjbfydbcdtfydbcdtfydbhHdnaCaQaLaefydbcdtfydbgOcdtfgAydbgeaOSmbinaAaCaegOcdtfgYydbgeBdbaYhAaOae9hmbkkdnaCaHcdtfgAydbgeaHSmbinaAaCaegHcdtfgYydbgeBdbaYhAaHae9hmbkkdnaOaHSmbaCaOaHaOaH0EcdtfaOaHaOaH6EBdbkaKcefgKci9hmbkaicifgiad6mbkkcbhJdnalTmbcbhYindnaQaYcdtgefydbaY9hmbaYhHdnaCaefgKydbgeaYSmbaKhOinaOaCaegHcdtfgAydbgeBdbaAhOaHae9hmbkkaKaHBdbkaYcefgYal9hmbkcbheaQhOaChHcbhJindndnaeaOydbgA9hmbdnaeaHydbgA9hmbaHaJBdbaJcefhJxdkaHaCaAcdtfydbBdbxekaHaCaAcdtfydbBdbkaOclfhOaHclfhHalaecefge9hmbkkcuaJcltgeaJcjjjjiGEcbyd;S1jjbHjjjjbbhoascxfasyd2gHcdtfaoBdbasaHcefBd2aocbaez:ljjjbhAdnalTmbaChOaahealhYinaecwfIdbh8SaeclfIdbhIaAaOydbcltfgHaeIdbaHIdbMUdbaHclfgKaIaKIdbMUdbaHcwfgKa8SaKIdbMUdbaHcxfgHaHIdbJbbjZMUdbaOclfhOaecxfheaYcufgYmbkkdnaJTmbaAheaJhHinaecxfgOIdbh8SaOcbBdbaeaeIdbJbbbbJbbjZa8S:va8SJbbbb9BEg8SNUdbaeclfgOa8SaOIdbNUdbaecwfgOa8SaOIdbNUdbaeczfheaHcufgHmbkkdnalTmbaChOaahealhYinaAaOydbcltfgHcxfgKaecwfIdbaHcwfIdb:tg8Sa8SNaeIdbaHIdb:tg8Sa8SNaeclfIdbaHclfIdb:tg8Sa8SNMMg8SaKIdbgIaIa8S9DEUdbaOclfhOaecxfheaYcufgYmbkkdnaJmbcbhJJFFuuh8ZxekaAcxfheaAhHaJhOinaHaeIdbUdbaeczfheaHclfhHaOcufgOmbkJFFuuh8ZaAheaJhHinaeIdbg8Sa8Za8Za8S9EEh8ZaeclfheaHcufgHmbkkasydlh9ednalTmba9eclfhea9eydbhAaXhHalhYcbhOincbaeydbgKaA9RaHRbbcpeGEaOfhOaHcefhHaeclfheaKhAaYcufgYmbkaOce4h8Fkcuada8F9RcifgTcx2aTc;v:Q;v:Qe0Ecbyd;S1jjbHjjjjbbhDascxfasyd2gecdtfaDBdbasaecefBd2cuaTcdtaTcFFFFi0Ecbyd;S1jjbHjjjjbbhSascxfasyd2gecdtfaSBdbasaecefBd2a5cbyd;S1jjbHjjjjbbh8Mascxfasyd2gecdtfa8MBdbasaecefBd2alcbyd;S1jjbHjjjjbbh9hascxfasyd2gecdtfa9hBdbasaecefBd2axaxNa8NJbbjZamclGEg83a83N:vhcJbbbbhndnadak9nmbdnaTci6mba8Jclth9iaDcwfh6JbbbbhBJbbbbhninasclfabadalaQz:cjjjbabh8FcbhEcbh5inaba5cdtfh3cbheindnaQa8FaefydbgOcdtgifydbgYaQa3aec:W1jjbfydbcdtfydbgHcdtgwfydbgKSmbaXaHfRbbgLcv2aXaOfRbbgAfc;a1jjbfRbbg8AaAcv2aLfg8Lc;a1jjbfRbbg8KVcFeGTmbdnaKaY9nmba8Lcj1jjbfRbbcFeGmekaAcufhYdnaAaL9hmbaYcFeGce0mbahaifydbaH9hmekdndnaAclSmbaLcl9hmekdnaYcFeGce0mbahaifydbaH9hmdkaLcufcFeGce0mbagawfydbaO9hmekaDaEcx2fgAaHaOa8KcFeGgYEBdlaAaOaHaYEBdbaAaYa8AGcb9hBdwaEcefhEkaeclfgecx9hmbkdna5cifg5ad9pmba8Fcxfh8FaEcifaT9nmekkaETmdcbhiinJbbbbJbbjZaqaQaDaicx2fgAydlgKaAydbgYaAydwgHEgLcdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwaaaYaKaHEg8Fcx2fgHIdwgRNaeIdzaHIdbg8PNaeIdaMg8Sa8SMMaRNaeIdlaHIdlg8RNaeIdCaRNaeId3Mg8Sa8SMMa8RNaeIdba8PNaeIdxa8RNaeIdKMg8Sa8SMMa8PNaeId8KMMM:lNh80JbbbbJbbjZaqaQaYcdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwaaaKcx2fgHIdwg8VNaeIdzaHIdbg8WNaeIdaMg8Sa8SMMa8VNaeIdlaHIdlg8UNaeIdCa8VNaeId3Mg8Sa8SMMa8UNaeIdba8WNaeIdxa8UNaeIdKMg8Sa8SMMa8WNaeId8KMMM:lNh8YaAcwfh3aAclfhwdna8JTmbavaYc8S2fgOIdwa8VNaOIdza8WNaOIdaMg8Sa8SMMa8VNaOIdla8UNaOIdCa8VNaOId3Mg8Sa8SMMa8UNaOIdba8WNaOIdxa8UNaOIdKMg8Sa8SMMa8WNaOId8KMMMh8SayaKa8J2cdtfhHaraYa8J2cltfheaOIdyh8Xa8JhOinaHIdbgIaIa8XNaecxfIdba8VaecwfIdbNa8WaeIdbNa8UaeclfIdbNMMMgIaIM:tNa8SMh8SaHclfhHaeczfheaOcufgOmbkavaLc8S2fgOIdwaRNaOIdza8PNaOIdaMgIaIMMaRNaOIdla8RNaOIdCaRNaOId3MgIaIMMa8RNaOIdba8PNaOIdxa8RNaOIdKMgIaIMMa8PNaOId8KMMMhIaya8Fa8J2cdtfhHaraLa8J2cltfheaOIdyh8Wa8JhOinaHIdbg8Va8Va8WNaecxfIdbaRaecwfIdbNa8PaeIdbNa8RaeclfIdbNMMMg8Va8VM:tNaIMhIaHclfhHaeczfheaOcufgOmbka80aI:lMh80a8Ya8S:lMh8YkawaKa8Fa8Ya809FgeEBdbaAaYaLaeEBdba3a8Ya80aeEUdbaicefgiaE9hmbkasc;Wbfcbcj;qbz:ljjjb8Aa6heaEhHinasc;WbfaeydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbcefBdbaecxfheaHcufgHmbkcbhecbhHinasc;WbfaefgOydbhAaOaHBdbaAaHfhHaeclfgecj;qb9hmbkcbhea6hHinasc;WbfaHydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbgOcefBdbaSaOcdtfaeBdbaHcxfhHaEaecefge9hmbkadak9RgOci9Uh9kdnalTmbcbhea8MhHinaHaeBdbaHclfhHalaecefge9hmbkkcbh0a9hcbalz:ljjjbh9maOcO9Uh9na9kce4h9oasydwh9pcbh8KcbhwdninaDaSawcdtfydbcx2fg3Idwg8Sac9Emea8Ka9k9pmeJFFuuhIdna9oaE9pmbaDaSa9ocdtfydbcx2fIdwJbb;aZNhIkdna8SaI9ETmba8San9ETmba8Ka9n0mdkdna9maQa3ydlgicdtg9qfydbgAfg9rRbba9maQa3ydbgLcdtg9sfydbgHfg9tRbbVmbaXaLfRbbh9udna9eaHcdtfgeclfydbgOaeydbgeSmbaOae9RhKa9paecitfheaaaAcx2fg8Lcwfh5a8Lclfh9vaaaHcx2fg8Acwfh9wa8Aclfh9xcbhHceh8Fdnindna8MaeydbcdtfydbgOaASmba8MaeclfydbcdtfydbgYaASmbaOaYSmbaaaYcx2fgYIdbaaaOcx2fgOIdbg8V:tg8Sa9xIdbaOIdlgR:tg8WNa8AIdba8V:tg8UaYIdlaR:tgIN:tg8Pa8Sa9vIdbaR:tg8XNa8LIdba8V:tg80aIN:tgRNaIa9wIdbaOIdwg8R:tg8YNa8WaYIdwa8R:tg8VN:tg8WaIa5Idba8R:tg81Na8Xa8VN:tgINa8Va8UNa8Ya8SN:tg8Ra8Va80Na81a8SN:tg8SNMMa8Pa8PNa8Wa8WNa8Ra8RNMMaRaRNaIaINa8Sa8SNMMN:rJbbj8:N9FmdkaecwfheaHcefgHaK6h8FaKaH9hmbkka8FceGTmba9ocefh9oxeka3cwfhHdndndndna9uc9:fPdebdkaLheina8MaecdtgefaiBdba8EaefydbgeaL9hmbxikkdnagahaha9sfydbaiSEa8Ea9sfydbgLcdtfydbgecu9hmba8Ea9qfydbheka8Ma9sfaiBdbaehika8MaLcdtfaiBdbka9tce86bba9rce86bbaHIdbg8Sanana8S9DEhna0cefh0cecda9uceSEa8Kfh8KkawcefgwaE9hmbkka0TmddnalTmbcbhKcbhiindna8MaicdtgefydbgOaiSmbaQaOcdtfydbh8FdnaiaQaefydb9hg3mbaqa8Fc8S2fgeaqaic8S2fgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdyka8JTmbavaOc8S2fgeavaic8S2gwfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya9iaO2hLarhHa8JhAinaHaLfgeaHaKfgOIdbaeIdbMUdbaeclfgYaOclfIdbaYIdbMUdbaecwfgYaOcwfIdbaYIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbka3mbJbbbbJbbjZaqawfgeIdyg8S:va8SJbbbb9BEaeIdwaaa8Fcx2fgHIdwg8SNaeIdzaHIdbgINaeIdaMg8Va8VMMa8SNaeIdlaHIdlg8VNaeIdCa8SNaeId3Mg8Sa8SMMa8VNaeIdbaINaeIdxa8VNaeIdKMg8Sa8SMMaINaeId8KMMM:lNg8SaBaBa8S9DEhBkaKa9ifhKaicefgial9hmbkcbhHahheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOahaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkcbhHagheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOagaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkkaBana8JEhBcbhYabhecbhKindna8MaeydbcdtfydbgHa8MaeclfydbcdtfydbgOSmbaHa8MaecwfydbcdtfydbgASmbaOaASmbabaYcdtfgLaHBdbaLcwfaABdbaLclfaOBdbaYcifhYkaecxfheaKcifgKad6mbkdndna9cTmbaYak9nmba8ZaB9FTmbcbhdabhecbhHindnaoaCaeydbgOcdtfydbcdtfIdbaB9ETmbabadcdtfgAaOBdbaAclfaeclfydbBdbaAcwfaecwfydbBdbadcifhdkaecxfheaHcifgHaY6mbkJFFuuh8ZaJTmeaoheaJhHJFFuuh8SinaeIdbgIa8Sa8SaI9EEg8Va8SaIaB9EgOEh8Sa8Va8ZaOEh8ZaeclfheaHcufgHmbxdkkaYhdkadak0mbxdkkasclfabadalaQz:cjjjbkdndnadak0mbadhOxekdna9cmbadhOxekdna8Zac9FmbadhOxekina8ZJbb;aZNg8Saca8Sac9DEh8VJbbbbh8SdnaJTmbaoheaJhHinaeIdbgIa8SaIa8V9FEa8SaIa8S9EEh8SaeclfheaHcufgHmbkkcbhOabhecbhHindnaoaCaeydbgAcdtfydbcdtfIdba8V9ETmbabaOcdtfgYaABdbaYclfaeclfydbBdbaYcwfaecwfydbBdbaOcifhOkaecxfheaHcifgHad6mbkJFFuuh8ZdnaJTmbaoheaJhHJFFuuhIinaeIdbgRaIaIaR9EEg8PaIaRa8V9EgAEhIa8Pa8ZaAEh8ZaeclfheaHcufgHmbkkdnaOad9hmbadhOxdka8Sanana8S9DEhnaOak9nmeaOhda8Zac9FmbkkdnamcjjjjlGTmbazmbaOTmbcbhQabheinaXaeydbgAfRbbc3thKaecwfgLydbhHdndnahaAcdtg8FfydbaeclfgiydbgCSmbcbhYagaCcdtfydbaA9hmekcjjjj94hYkaeaKaYVaAVBdbaXaCfRbbc3thKdndnahaCcdtfydbaHSmbcbhYagaHcdtfydbaC9hmekcjjjj94hYkaiaKaYVaCVBdbaXaHfRbbc3thYdndnahaHcdtfydbaASmbcbhCaga8FfydbaH9hmekcjjjj94hCkaLaYaCVaHVBdbaecxfheaQcifgQaO6mbkkdnazTmbaOTmbaOheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPa83an:rNUdbkasyd2gecdtascxffc98fhHdninaeTmeaHydbcbyd;O1jjbH:bjjjbbaHc98fhHaecufhexbkkasc;W;qbf8KjjjjbaOk;Yieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk;Podvuv998Jjjjjbca9RgvcFFF;7rBd3av9cFFF;7;3FF:;Fb83dCavcFFF97Bdzav9cFFF;7FFF:;u83dwdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavcCfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavcCfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavcCfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavcCfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdwavIdCgk:tgqaqJbbbb9DEgqavIdxavIdKgx:tgmamaq9DEgqavIdzavId3gm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:nCoDud99rue99lul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd;S1jjbHjjjjbbgqBdxawceBd2aqaeadaicbz:djjjb8AawcuadcdtadcFFFFi0Egkcbyd;S1jjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd;S1jjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbh5cbh8Eindna3axa8EcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5a8Ecefg8Ead9hmbxdkkazcFeasz:ljjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8FaD:Y:tgaa8FaK:Y:tgha5:ZggaH:tNNNaOaH:tahNa8Aag:tNa8AaH:taaNagaO:tNM:va8FMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd;S1jjbHjjjjbbg8EBdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbhDcbh5inaxa5cdtgYfydbgCcm4aC7c:v;t;h;Ev2gics4ai7hecbhidndnina3aeaAGgmcdtfgEydbgecuSmednaxaecdtgEfydbaCSmbaicefgiamfheaiaA9nmekka8EaEfydbhixekaEa5BdbaDhiaDcefhDka8EaYfaiBdba5cefg5ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ljjjb8AcbhDcbhekawaecbyd;S1jjbHjjjjbbgeBd3awcvBd2aecbaiz:ljjjbhEavcd4hxdnadTmbdnalTmbaxcdth3a8EhCalheaqhmadhAinaEaCydbc32fgiamIdbaiIdbMUdbaiamclfIdbaiIdlMUdlaiamcwfIdbaiIdwMUdwaiaeIdbaiIdxMUdxaiaeclfIdbaiIdzMUdzaiaecwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaea3fheamcxfhmaAcufgAmbxdkka8EhmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd;S1jjbHjjjjbbgeBdaawcoBd2awaicbyd;S1jjbHjjjjbbg3Bd8KaecFeaYz:ljjjbh5dnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8Aaxcdthxalheina8Aaec;C1jjbalEgmIdwaEa8EydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndna5aAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka8Eclfh8EaeaxfheaqcxfhqadaCcefgC9hmbkkaba5aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd;O1jjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Odieui99iu8Jjjjjbca9RgicFFF;7rBd3ai9cFFF;7;3FF:;Fb83dCaicFFF97Bdzai9cFFF;7FFF:;u83dwdndnaembJbbjFhlJbbjFhvJbbjFhoxekadcd4cdthrcbhwincbhdinaicCfadfgDabadfIdbglaDIdbgvaval9EEUdbaicwfadfgDalaDIdbgvaval9DEUdbadclfgdcx9hmbkabarfhbawcefgwae9hmbkaiIdzaiId3:thoaiIdxaiIdK:thvaiIdwaiIdC:thlkJbbbbalalJbbbb9DEglavaval9DEglaoaoal9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd;W1jjbgeabcifc98GfgbBd;W1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;W1jjbgeabcrfc94GfgbBd;W1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;W1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;W1jjbfgdBd;W1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:bedbcjwk9Oeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc;OwkxebbbdbbbjNbb"), {}).then(function(r) {
|
|
2485
2485
|
(c = r.instance).exports.__wasm_call_ctors();
|
|
2486
2486
|
});
|
|
@@ -2490,13 +2490,13 @@ var Vt = function() {
|
|
|
2490
2490
|
function A(r) {
|
|
2491
2491
|
return new Uint8Array(r.buffer, r.byteOffset, r.byteLength);
|
|
2492
2492
|
}
|
|
2493
|
-
function i(r, o, n,
|
|
2494
|
-
var f = c.exports.sbrk, I = f(4 * h), m = f(n *
|
|
2495
|
-
C.set(A(o), m),
|
|
2496
|
-
var B = r(I, m, n,
|
|
2493
|
+
function i(r, o, n, b, d, g, l, h) {
|
|
2494
|
+
var f = c.exports.sbrk, I = f(4 * h), m = f(n * b), u = f(n * g), C = new Uint8Array(c.exports.memory.buffer);
|
|
2495
|
+
C.set(A(o), m), d && C.set(A(d), u);
|
|
2496
|
+
var B = r(I, m, n, b, u, g, l, h);
|
|
2497
2497
|
new Uint8Array(c.exports.memory.buffer);
|
|
2498
|
-
var
|
|
2499
|
-
return A(
|
|
2498
|
+
var w = new Uint32Array(B);
|
|
2499
|
+
return A(w).set(C.subarray(I, I + 4 * B)), f(I - f(0)), w;
|
|
2500
2500
|
}
|
|
2501
2501
|
var s = { LockBorder: 1, Sparse: 2, ErrorAbsolute: 4, Prune: 8, _InternalDebug: 1 << 30 };
|
|
2502
2502
|
})(), function() {
|
|
@@ -2507,9 +2507,9 @@ var Vt = function() {
|
|
|
2507
2507
|
var n = s.charCodeAt(o);
|
|
2508
2508
|
r[o] = n > 96 ? n - 97 : n > 64 ? n - 39 : n + 4;
|
|
2509
2509
|
}
|
|
2510
|
-
var
|
|
2511
|
-
for (o = 0; o < s.length; ++o) r[
|
|
2512
|
-
return r.buffer.slice(0,
|
|
2510
|
+
var b = 0;
|
|
2511
|
+
for (o = 0; o < s.length; ++o) r[b++] = r[o] < 60 ? e[r[o]] : 64 * (r[o] - 60) + r[++o];
|
|
2512
|
+
return r.buffer.slice(0, b);
|
|
2513
2513
|
}("b9H79Tebbbefx9Geueu9Geub9Gbb9Giuuueu9Gkuuuuuuuuuu99eu9Gvuuuuueu9Gkuuuuuuuuu9999eu9Gruuuuuuub9Gkuuuuuuuuuuueu9Gouuuuuub9Giuuub9GluuuubiOHdilvorwDqrkbiibeilve9Weiiviebeoweuec:q:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bd39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;L9kHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:oAlPue99eux998Jjjjjbc:We9Rgk8Kjjjjbakc;mbfcbc;Kbz:njjjb8AakcuaocdtgxaocFFFFi0Egmcbyd:e1jjbHjjjjbbgPBd9makceBd:SeakaPBdnakamcbyd:e1jjbHjjjjbbgsBd9qakcdBd:SeakasBd9eakcualcdtalcFFFFi0Ecbyd:e1jjbHjjjjbbgzBd9uakazBd9iakciBd:SeaPcbaxz:njjjbhHalci9UhOdnalTmbaihPalhAinaHaPydbcdtfgCaCydbcefBdbaPclfhPaAcufgAmbkkdnaoTmbcbhPashAaHhCaohXinaAaPBdbaAclfhAaCydbaPfhPaCclfhCaXcufgXmbkkdnalci6mbcbhPaihAinaAcwfydbhCaAclfydbhXasaAydbcdtfgQaQydbgQcefBdbazaQcdtfaPBdbasaXcdtfgXaXydbgXcefBdbazaXcdtfaPBdbasaCcdtfgCaCydbgCcefBdbazaCcdtfaPBdbaAcxfhAaOaPcefgP9hmbkkdnaoTmbaHhAashPaohCinaPaPydbaAydb9RBdbaAclfhAaPclfhPaCcufgCmbkkakamcbyd:e1jjbHjjjjbbgPBd9yakclBd:SeaPaHaxz:mjjjbhmakaOcbyd:e1jjbHjjjjbbgPBd9CakcvBd:SeaPcbaOz:njjjbhLakcuaOcK2alcjjjjd0Ecbyd:e1jjbHjjjjbbgKBd9GakcoBd:SeJbbbbhYdnalci6g8Ambarcd4hxaihAaKhPaOhrJbbbbhEinavaAclfydbax2cdtfgCIdlh3avaAydbax2cdtfgXIdlhYavaAcwfydbax2cdtfgQIdlh5aCIdwh8EaXIdwh8FaQIdwhaaPaCIdbghaXIdbggMaQIdbg8JMJbbnn:vUdbaPclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8KaCIdwh8LaXIdwh8MaPcxfa3aY:tg3aaa8F:tgaNa5aY:tg5a8Ea8F:tg8EN:tgYJbbbbJbbjZahag:tgha5Na8Jag:tgga3N:tg8Fa8FNaYaYNa8EagNaaahN:tgYaYNMM:rgg:vagJbbbb9BEg3NUdbaPczfaYa3NUdbaPcCfa8Fa3NUdbaPcwfa8Ka8Ma8LMMJbbnn:vUdbaEagMhEaAcxfhAaPcKfhParcufgrmbkaEaO:Z:vJbbbZNhYkakcuaOcdtalcFFFF970Ecbyd:e1jjbHjjjjbbgCBd9KakcrBd:SeaYaD:ZN:rhYdna8AmbcbhPaChAinaAaPBdbaAclfhAaOaPcefgP9hmbkkaYJbbbZNh8MakcuaOcltalcFFFFd0Ecbyd:e1jjbHjjjjbbg8ABd9OakcwBd:Secba8AaKaCaOz:djjjb8Aakaocbyd:e1jjbHjjjjbbgPBd2aPcFeaoz:njjjbhrakc8Wfcwf9cb83ibak9cb83i8WcbhPJbbbbhEJbbbbh5Jbbbbh8EJbbbbhYJbbbbh8FJbbbbhgcbhlinJbbbbh3dnaPTmbJbbjZaP:Z:vh3kaka8Ea3NgaUdaaka5a3NghUd3akaEa3Ng8JUdKJbbbbh3dnagagNaYaYNa8Fa8FNMMg8KJbbbb9BmbJbbjZa8K:r:vh3kakaga3NUd8Saka8Fa3NUdyakaYa3NUd8Kdndndnakyd8WgQakydUgAakcKfaeaiakc;abfaKamara8Maqz:ejjjbgCcuSmbdnaPaD9pmbaAaraiaCcx2fgXydbfRbbcFeSfaraXclfydbfRbbcFeSfaraXcwfydbfRbbcFeSfaw9nmdkaQaAcbaeaiakc;abfaKamara8MJbbbbz:ejjjbgCcu9hmekakaaUdCakahUdzaka8JUdxakcuBdwakcFFF;7rBdla8AcbaKaLakcxfakcwfakclfz:fjjjbakydwgCcuSmekdnakc8WfaiaCcx2fgOydbgPaOclfydbgAaOcwfydbgXarabaeadalawaDz:gjjjbTmbalcefhlJbbbbhEJbbbbh5Jbbbbh8EJbbbbhYJbbbbh8FJbbbbhgkamaPcdtfgPaPydbcufBdbamaAcdtfgPaPydbcufBdbamaXcdtfgPaPydbcufBdbcbhXinazasaOaXcdtfydbcdtgAfydbcdtfgxhPaHaAfgvydbgQhAdnaQTmbdninaPydbaCSmeaPclfhPaAcufgATmdxbkkaPaxaQcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbkaKaCcK2fgPIdbh3aPIdlhaaPIdwhhaPIdxh8JaPIdzh8KaPIdCh8LaLaCfce86bbaga8LMhga8Fa8KMh8FaYa8JMhYa8EahMh8Ea5aaMh5aEa3MhEakyd88hPxekkdnaPTmbdnakyd80gAaPci2fgCciGTmbadaCfcbaPaAcu7fciGcefz:njjjb8AkabalcltfgPak8Pi8W83dbaPcwfakc8Wfcwf8Pib83dbalcefhlkcahPdninaPc98Smeakc;mbfaPfydbcbydj1jjbH:bjjjbbaPc98fhPxbkkakc:Wef8Kjjjjbalk;3vivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbaeabcitfgrarydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark;Bloeue99vue99Due99dndnaembcuhkxekJbbjZaq:thxaiabcdtfhmavydbhPavydlhsavydwhzcbhHJFFuuhOcvhbcuhkindnaPamaHcdtfydbcdtgvfydbgATmbazasavfydbcdtfhiindndnawalaiydbgCcx2fgvclfydbgXfRbbcFeSawavydbgQfRbbcFeSfawavcwfydbgLfRbbcFeSfgKmbcbhvxekcehvaraQcdtfydbgYceSmbcehvaraXcdtfydbg8AceSmbcehvaraLcdtfydbgEceSmbdna8AcdSaYcdSfaEcdSfcd6mbaKcefhvxekaKcdfhvkdnavab9kmbdndnadTmbaoaCcK2fgQIdwadIdw:tg3a3NaQIdbadIdb:tg3a3NaQIdladIdl:tg3a3NMM:raD:vaxNJbbjZMJ9VO:d86JbbjZaQIdCadIdCNaQIdxadIdxNaQIdzadIdzNMMaqN:tg3a3J9VO:d869DENh3xekaraQcdtfydbaraXcdtfydbfaraLcdtfydbfc99f:Zh3kaCakavab6a3aO9DVgQEhkavabaQEhba3aOaQEhOkaiclfhiaAcufgAmbkkaHcefgHae9hmbkkakk;bddlue99dndndnabaecitfgrydlgwciGgDci9hmbarclfhqxekinabcbawcd4gwalaDcdtfIdbabaecitfIdb:tgkJbbbb9FEgDaecefgefadaialavaoz:fjjjbak:laoIdb9FTmdabaDaw7aefgecitfgrydlgwciGgDci9hmbkarclfhqkabaecitfhecuhbindnaiaeydbgDfRbbmbadaDcK2fgrIdwalIdw:tgkakNarIdbalIdb:tgkakNarIdlalIdl:tgkakNMM:rgkaoIdb9DTmbaoakUdbavaDBdbaqydbhwkaecwfheabcefgbawcd46mbkkk;yleoudnaladfgkRbbcFeSalaefgxRbbgmcFeSfabydwgPfalaifgsRbbcFeSfaD0abydxaq9pVgzce9hmbavawcltfgmab8Pdb83dbamcwfabcwfgm8Pdb83dbdndnamydbmbcbhqxekcbhDaohminalamabydbcdtfydbfcFe86bbamclfhmaDcefgDabydwgq6mbkkdnabydxglci2gDabydlgmfgPciGTmbaraPfcbalamcu7fciGcefz:njjjb8Aabydxci2hDabydlhmabydwhqkab9cb83dwababydbaqfBdbabaDcifc98GamfBdlaxRbbhmcbhPkdnamcFeGcFe9hmbaxaP86bbababydwgmcefBdwaoabydbcdtfamcdtfaeBdbkdnakRbbcFe9hmbakabydw86bbababydwgmcefBdwaoabydbcdtfamcdtfadBdbkdnasRbbcFe9hmbasabydw86bbababydwgmcefBdwaoabydbcdtfamcdtfaiBdbkarabydlfabydxci2faxRbb86bbarabydlfabydxci2fcefakRbb86bbarabydlfabydxci2fcdfasRbb86bbababydxcefBdxazk;Ckovud99euv99eul998Jjjjjbc:G;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:G:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaocafawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeao9cb83iKao9cb83izaoczfaocafawci2z1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:G:qefawz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:G:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:G:qefheaocafhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabazUd3abc8KfaxUdbabcafasUdbabcKfaCaxaPN:tUdbabcCfaXasaPN:tUdbabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabc8Ufae86bbdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabcRfav86bbdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:G;aef8Kjjjjbk:mvdouq99cbhi8Jjjjjbca9RglczfcwfcbBdbal9cb83izalcwfcbBdbal9cb83ibdnadTmbcbhvinaeaifhocbhrinalczfarfgwavawydbgwaoarfIdbgDaearawcx2ffIdb9DEBdbalarfgwavawydbgwaDaearawcx2ffIdb9EEBdbarclfgrcx9hmbkaicxfhiavcefgvad9hmbkkJbbbbhDcbhrcbhicbhvinaealarfydbcx2fgwIdwaealczfarfydbcx2fgoIdw:tgqaqNawIdbaoIdb:tgqaqNawIdlaoIdl:tgqaqNMMgqaDaqaD9EgwEhDavaiawEhiarclfhravcefgvci9hmbkaealczfaicdtgvfydbcx2fgrIdwaealavfydbcx2fglIdwMJbbbZNhqarIdlalIdlMJbbbZNhkarIdbalIdbMJbbbZNhxaD:rJbbbZNhDdnadTmbindnaecwfIdbgmaq:tgPaPNaeIdbgsax:tgPaPNaeclfIdbgzak:tgPaPNMMgPaDaDN9ETmbaqaDaP:rgH:vJbbbZNJbbbZMgPNamJbbjZaP:tgONMhqakaPNazaONMhkaxaPNasaONMhxaDaHMJbbbZNhDkaecxfheadcufgdmbkkabaDUdxabaqUdwabakUdlabaxUdbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:Ylequ8Jjjjjbcjx9Rgl8Kjjjjbcbhvalcjqfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjqfaDcefRbbfRbb9RcFeGci6aoalcjqfaDRbbfRbb9RcFeGci6faoalcjqfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjqffaocefgo86bbaxalcjqffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjqffao86bbarcifhravcefgvad9hmbkalcFeaiz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkfgwRbbgDcFe9hmbawax86bbaocjdfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjdfaDz:mjjjb8Aalcjxf8Kjjjjbk9teiucbcbyd11jjbgeabcifc98GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd11jjbgeabcrfc94GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd11jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd11jjbfgdBd11jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkkAebcjwkxebbbdbbbzNbb"), {}).then(function(s) {
|
|
2514
2514
|
(c = s.instance).exports.__wasm_call_ctors();
|
|
2515
2515
|
});
|
|
@@ -2527,7 +2527,7 @@ var Vt = function() {
|
|
|
2527
2527
|
let te = 0;
|
|
2528
2528
|
class Ni {
|
|
2529
2529
|
constructor(e) {
|
|
2530
|
-
if (this.timeout = e.timeout != null ? e.timeout : 5e3, this.renderer = e.renderer, this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.proxy = e.proxy, e && (this.meshCallback = e.meshCallback, this.pointsCallback = e.pointsCallback, e.maxCachedItems != null && (this.maxCachedItems = e.maxCachedItems)), this.gltfLoader = new Dt(), e && e.dracoLoader) this.gltfLoader.setDRACOLoader(e.dracoLoader), this.hasDracoLoader = !0;
|
|
2530
|
+
if (this.downloadParallelism = e.downloadParallelism == null ? 8 : e.downloadParallelism, this.timeout = e.timeout != null ? e.timeout : 5e3, this.renderer = e.renderer, this.zUpToYUpMatrix = new E.Matrix4(), this.zUpToYUpMatrix.set(1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1), this.maxCachedItems = 100, this.proxy = e.proxy, e && (this.meshCallback = e.meshCallback, this.pointsCallback = e.pointsCallback, e.maxCachedItems != null && (this.maxCachedItems = e.maxCachedItems)), this.gltfLoader = new Dt(), e && e.dracoLoader) this.gltfLoader.setDRACOLoader(e.dracoLoader), this.hasDracoLoader = !0;
|
|
2531
2531
|
else {
|
|
2532
2532
|
const a = new Rt();
|
|
2533
2533
|
a.setDecoderPath("https://storage.googleapis.com/ogc-3d-tiles/draco/"), this.dracoLoader = a, this.gltfLoader.setDRACOLoader(a), this.gltfLoader.hasDracoLoader = !0;
|
|
@@ -2541,7 +2541,7 @@ class Ni {
|
|
|
2541
2541
|
}
|
|
2542
2542
|
update() {
|
|
2543
2543
|
const e = this;
|
|
2544
|
-
te <
|
|
2544
|
+
te < e.downloadParallelism && e._download(), e._loadBatch();
|
|
2545
2545
|
}
|
|
2546
2546
|
_scheduleDownload(e) {
|
|
2547
2547
|
this.downloads.unshift(e);
|
|
@@ -2597,7 +2597,7 @@ class Ni {
|
|
|
2597
2597
|
}
|
|
2598
2598
|
}
|
|
2599
2599
|
}
|
|
2600
|
-
get(e, a, t, A, i, s, r, o, n,
|
|
2600
|
+
get(e, a, t, A, i, s, r, o, n, b, d, g) {
|
|
2601
2601
|
const l = this, h = ct(t), f = new AbortController();
|
|
2602
2602
|
if (e.signal.addEventListener("abort", () => {
|
|
2603
2603
|
l.register[h] && Object.keys(l.register[h]).length != 0 || f.abort("user abort");
|
|
@@ -2611,8 +2611,8 @@ class Ni {
|
|
|
2611
2611
|
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2612
2612
|
return u.arrayBuffer();
|
|
2613
2613
|
}).then((u) => this.b3dmDecoder.parseB3DM(u, (C) => {
|
|
2614
|
-
l.meshCallback(C,
|
|
2615
|
-
}, n,
|
|
2614
|
+
l.meshCallback(C, d);
|
|
2615
|
+
}, n, b)).then((u) => {
|
|
2616
2616
|
l.cache.put(h, u), this._meshReceived(l.cache, l.register, h, i, s, r, a), l._checkSize();
|
|
2617
2617
|
}).catch((u) => {
|
|
2618
2618
|
}).finally(() => {
|
|
@@ -2623,7 +2623,7 @@ class Ni {
|
|
|
2623
2623
|
m = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: f.signal }) : () => fetch(t, { signal: f.signal }), te++, m().then((u) => {
|
|
2624
2624
|
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2625
2625
|
return u.arrayBuffer();
|
|
2626
|
-
}).then((u) => this.splatsDecoder.parseSplats(u, n,
|
|
2626
|
+
}).then((u) => this.splatsDecoder.parseSplats(u, n, b, g)).then((u) => {
|
|
2627
2627
|
l.cache.put(h, u), l._meshReceived(l.cache, l.register, h, i, s, r, a), l._checkSize();
|
|
2628
2628
|
}).catch((u) => {
|
|
2629
2629
|
}).finally(() => {
|
|
@@ -2637,13 +2637,13 @@ class Ni {
|
|
|
2637
2637
|
}).then(async (u) => {
|
|
2638
2638
|
await async function(C) {
|
|
2639
2639
|
return new Promise((B) => {
|
|
2640
|
-
const
|
|
2641
|
-
C.hasDracoLoader && !C.dracoLoader || C.hasKTX2Loader && !C.ktx2Loader || (clearInterval(
|
|
2640
|
+
const w = setInterval(() => {
|
|
2641
|
+
C.hasDracoLoader && !C.dracoLoader || C.hasKTX2Loader && !C.ktx2Loader || (clearInterval(w), B());
|
|
2642
2642
|
}, 10);
|
|
2643
2643
|
});
|
|
2644
2644
|
}(this.gltfLoader), this.gltfLoader.parse(u, null, (C) => {
|
|
2645
2645
|
C.scene.asset = C.asset, n && C.scene.applyMatrix4(this.zUpToYUpMatrix), C.scene.traverse((B) => {
|
|
2646
|
-
B.isMesh && (
|
|
2646
|
+
B.isMesh && (b && B.applyMatrix4(this.zUpToYUpMatrix), l.meshCallback && l.meshCallback(B, d)), B.isPoints && l.pointsCallback && l.pointsCallback(B, d);
|
|
2647
2647
|
}), l.cache.put(h, C.scene), l._meshReceived(l.cache, l.register, h, i, s, r, a), l._checkSize();
|
|
2648
2648
|
});
|
|
2649
2649
|
}).catch((u) => {
|
|
@@ -2656,7 +2656,7 @@ class Ni {
|
|
|
2656
2656
|
m = l.proxy ? () => fetch(l.proxy, { method: "POST", body: t, signal: f.signal }) : () => fetch(t, { signal: f.signal }), te++, m().then((u) => {
|
|
2657
2657
|
if (!u.ok) throw console.error("could not load tile with path : " + t), new Error(`couldn't load "${t}". Request failed with status ${u.status} : ${u.statusText}`);
|
|
2658
2658
|
return u.json();
|
|
2659
|
-
}).then((u) =>
|
|
2659
|
+
}).then((u) => Ua(u, t)).then((u) => {
|
|
2660
2660
|
l.cache.put(h, u), l._meshReceived(l.cache, l.register, h), l._checkSize();
|
|
2661
2661
|
}).catch((u) => {
|
|
2662
2662
|
console.error(u);
|
|
@@ -2778,13 +2778,13 @@ var je = { resolve: function() {
|
|
|
2778
2778
|
} else A > r && (c.charCodeAt(a + n) === 47 ? o = n : n === 0 && (o = 0));
|
|
2779
2779
|
break;
|
|
2780
2780
|
}
|
|
2781
|
-
var
|
|
2782
|
-
if (
|
|
2783
|
-
|
|
2781
|
+
var b = c.charCodeAt(a + n);
|
|
2782
|
+
if (b !== e.charCodeAt(i + n)) break;
|
|
2783
|
+
b === 47 && (o = n);
|
|
2784
2784
|
}
|
|
2785
|
-
var
|
|
2786
|
-
for (n = a + o + 1; n <= t; ++n) n !== t && c.charCodeAt(n) !== 47 || (
|
|
2787
|
-
return
|
|
2785
|
+
var d = "";
|
|
2786
|
+
for (n = a + o + 1; n <= t; ++n) n !== t && c.charCodeAt(n) !== 47 || (d.length === 0 ? d += ".." : d += "/..");
|
|
2787
|
+
return d.length > 0 ? d + e.slice(i + o) : (i += o, e.charCodeAt(i) === 47 && ++i, e.slice(i));
|
|
2788
2788
|
}, _makeLong: function(c) {
|
|
2789
2789
|
return c;
|
|
2790
2790
|
}, dirname: function(c) {
|
|
@@ -2844,12 +2844,12 @@ var je = { resolve: function() {
|
|
|
2844
2844
|
if (c.length === 0) return e;
|
|
2845
2845
|
var a, t = c.charCodeAt(0), A = t === 47;
|
|
2846
2846
|
A ? (e.root = "/", a = 1) : a = 0;
|
|
2847
|
-
for (var i = -1, s = 0, r = -1, o = !0, n = c.length - 1,
|
|
2847
|
+
for (var i = -1, s = 0, r = -1, o = !0, n = c.length - 1, b = 0; n >= a; --n) if ((t = c.charCodeAt(n)) !== 47) r === -1 && (o = !1, r = n + 1), t === 46 ? i === -1 ? i = n : b !== 1 && (b = 1) : i !== -1 && (b = -1);
|
|
2848
2848
|
else if (!o) {
|
|
2849
2849
|
s = n + 1;
|
|
2850
2850
|
break;
|
|
2851
2851
|
}
|
|
2852
|
-
return i === -1 || r === -1 ||
|
|
2852
|
+
return i === -1 || r === -1 || b === 0 || b === 1 && i === r - 1 && i === s + 1 ? r !== -1 && (e.base = e.name = s === 0 && A ? c.slice(1, r) : c.slice(s, r)) : (s === 0 && A ? (e.name = c.slice(1, i), e.base = c.slice(1, r)) : (e.name = c.slice(s, i), e.base = c.slice(s, r)), e.ext = c.slice(i, r)), s > 0 ? e.dir = c.slice(0, s - 1) : A && (e.dir = "/"), e;
|
|
2853
2853
|
}, sep: "/", delimiter: ":", win32: null, posix: null };
|
|
2854
2854
|
je.posix = je;
|
|
2855
2855
|
var dt, de = je;
|
|
@@ -3053,21 +3053,21 @@ class Oe extends me {
|
|
|
3053
3053
|
return i;
|
|
3054
3054
|
}
|
|
3055
3055
|
}
|
|
3056
|
-
class
|
|
3056
|
+
class Pe extends Oe {
|
|
3057
3057
|
constructor(e = [], a) {
|
|
3058
3058
|
super(e, a);
|
|
3059
3059
|
}
|
|
3060
3060
|
clone() {
|
|
3061
|
-
return new
|
|
3061
|
+
return new Pe(this, { comparator: this.comparator, toElementFn: this.toElementFn });
|
|
3062
3062
|
}
|
|
3063
3063
|
filter(e, a) {
|
|
3064
|
-
const t = new
|
|
3064
|
+
const t = new Pe([], { toElementFn: this.toElementFn, comparator: this.comparator });
|
|
3065
3065
|
let A = 0;
|
|
3066
3066
|
for (const i of this) e.call(a, i, A, this) && t.add(i), A++;
|
|
3067
3067
|
return t;
|
|
3068
3068
|
}
|
|
3069
3069
|
map(e, a, t, A) {
|
|
3070
|
-
const i = new
|
|
3070
|
+
const i = new Pe([], { comparator: a, toElementFn: t });
|
|
3071
3071
|
let s = 0;
|
|
3072
3072
|
for (const r of this) i.add(e.call(A, r, s, this)), s++;
|
|
3073
3073
|
return i;
|
|
@@ -3077,37 +3077,37 @@ function Oi(c) {
|
|
|
3077
3077
|
return new Worker("" + new URL("assets/PointsManager.worker-5fpGpVvf.js", import.meta.url).href, { type: "module", name: c == null ? void 0 : c.name });
|
|
3078
3078
|
}
|
|
3079
3079
|
new Ra(), new D(), new D(), new D(), new D();
|
|
3080
|
-
const Ve = new D(),
|
|
3080
|
+
const Ve = new D(), Pi = new D(), Yt = new Fa();
|
|
3081
3081
|
Yt.set(1, 0, 0, 0, 0, 1, 0, -1, 0);
|
|
3082
|
-
class
|
|
3083
|
-
constructor(e, a) {
|
|
3084
|
-
const
|
|
3085
|
-
let
|
|
3086
|
-
|
|
3087
|
-
const
|
|
3088
|
-
e.initRenderTarget(
|
|
3089
|
-
const r = new ne(512, 512, 1, { magFilter: v, minFilter: v, anisotropy: 0, type: R, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3090
|
-
r.texture.type = R, e.initRenderTarget(r);
|
|
3082
|
+
class Ji extends xa {
|
|
3083
|
+
constructor(e, a, t) {
|
|
3084
|
+
const i = Math.min(Math.ceil(8) * 512, Math.pow(512, 2));
|
|
3085
|
+
let s = 1 * Math.pow(512, 2);
|
|
3086
|
+
s = Math.floor(s / i) * i;
|
|
3087
|
+
const r = new ne(512, 512, 1, { magFilter: v, minFilter: v, anisotropy: 0, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3088
|
+
e.initRenderTarget(r);
|
|
3091
3089
|
const o = new ne(512, 512, 1, { magFilter: v, minFilter: v, anisotropy: 0, type: R, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3092
3090
|
o.texture.type = R, e.initRenderTarget(o);
|
|
3093
3091
|
const n = new ne(512, 512, 1, { magFilter: v, minFilter: v, anisotropy: 0, type: R, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3094
3092
|
n.texture.type = R, e.initRenderTarget(n);
|
|
3095
|
-
const
|
|
3096
|
-
b.
|
|
3097
|
-
const
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
const
|
|
3106
|
-
|
|
3093
|
+
const b = new ne(512, 512, 1, { magFilter: v, minFilter: v, anisotropy: 0, type: R, depthBuffer: !1, resolveDepthBuffer: !1 });
|
|
3094
|
+
b.texture.type = R, e.initRenderTarget(b);
|
|
3095
|
+
const d = new ia({ uniforms: { textureSize: { value: 512 }, numSlices: { value: 1 }, cov1Texture: { value: n.texture }, cov2Texture: { value: b.texture }, colorTexture: { value: r.texture }, positionTexture: { value: o.texture }, zUpToYUpMatrix3x3: { value: Yt }, sizeMultiplier: { value: 1 }, cropRadius: { value: Number.MAX_VALUE }, cameraNear: { value: 0.01 }, cameraFar: { value: 10 }, computeLinearDepth: { value: !0 } }, vertexShader: qi(), fragmentShader: t || _i(), transparent: !0, side: Ze, depthTest: !1, depthWrite: !1 }), g = new _a(), l = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]);
|
|
3096
|
+
g.setIndex([0, 2, 1, 2, 3, 1]), g.setAttribute("position", new he(l, 3));
|
|
3097
|
+
const h = new Uint32Array(s), f = new wa(h, 1, !1);
|
|
3098
|
+
f.needsUpdate = !0, f.setUsage(Ka), g.setAttribute("order", f), g.instanceCount = 0, super(g, d), this.matrixAutoUpdate = !1, this.numBatches = 0, this.numVisibleBatches = 0, this.orderAttribute = f, this.textureSize = 512, this.numTextures = 1, this.batchSize = i, this.maxSplats = s, this.numSplatsRendered = 0, this.colorRenderTarget = r, this.positionRenderTarget = o, this.cov1RenderTarget = n, this.cov2RenderTarget = b, this.renderer = e, this.sortID = 0, this.freeAddresses = new Pe();
|
|
3099
|
+
for (let m = 0; m < this.maxSplats; m += i) this.freeAddresses.add(m);
|
|
3100
|
+
this.worker = new Oi({ type: "module" }), this.sortListeners = [], this.worker.onmessage = (m) => {
|
|
3101
|
+
const u = new Uint32Array(m.data.order);
|
|
3102
|
+
if (this.numSplatsRendered = u.length, u.length > this.orderAttribute.count) {
|
|
3103
|
+
const C = new _a(), B = new Float32Array([-0.5, 0.5, 0, 0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0]), w = [0, 2, 1, 2, 3, 1];
|
|
3104
|
+
C.setIndex(w), C.setAttribute("position", new he(B, 3));
|
|
3105
|
+
const k = new Uint32Array(this.maxSplats), y = new wa(k, 1, !1);
|
|
3106
|
+
y.needsUpdate = !0, y.setUsage(Ka), C.setAttribute("order", y), C.instanceCount = 0, this.geometry.dispose(), this.geometry = C, this.orderAttribute = y;
|
|
3107
3107
|
}
|
|
3108
|
-
this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(
|
|
3109
|
-
for (let
|
|
3110
|
-
this.sortListeners[
|
|
3108
|
+
this.orderAttribute.clearUpdateRanges(), this.orderAttribute.set(u), this.orderAttribute.addUpdateRange(0, u.length), this.orderAttribute.needsUpdate = !0, this.geometry.instanceCount = m.data.count, this.geometry.needsUpdate = !0;
|
|
3109
|
+
for (let C = this.sortListeners.length - 1; C >= 0; C--)
|
|
3110
|
+
this.sortListeners[C](m.data.id) && this.sortListeners.splice(C, 1);
|
|
3111
3111
|
}, this.cameraPosition = new D(0, 0, 0), this.rotateOnAxis(new D(1, 0, 0), 0.5 * Math.PI), this.frustumCulled = !1, this.copyMaterial2D = new ia({ uniforms: { sourceTexture: {} }, vertexShader: ht(), fragmentShader: `
|
|
3112
3112
|
precision highp float;
|
|
3113
3113
|
|
|
@@ -3127,9 +3127,9 @@ in vec2 vUv;
|
|
|
3127
3127
|
|
|
3128
3128
|
void main() {
|
|
3129
3129
|
gl_FragColor = texture( sourceTexture, vec3(vUv, w) );
|
|
3130
|
-
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyCamera = new Qt(-0.5, 0.5, 0.5, -0.5, 0.1, 10), this.copyCamera.position.z = 1, this.copyScene = new
|
|
3131
|
-
const
|
|
3132
|
-
this.copyQuad = new xa(
|
|
3130
|
+
}`, transparent: !1, side: Ze, depthTest: !1, depthWrite: !1 }), this.copyCamera = new Qt(-0.5, 0.5, 0.5, -0.5, 0.1, 10), this.copyCamera.position.z = 1, this.copyScene = new JA();
|
|
3131
|
+
const I = new qA(1, 1);
|
|
3132
|
+
this.copyQuad = new xa(I, this.copyMaterial2D), this.copyScene.add(this.copyQuad), this.copyScene.matrixAutoUpdate = !1, this.copyQuad.matrixAutoUpdate = !1;
|
|
3133
3133
|
}
|
|
3134
3134
|
dispose() {
|
|
3135
3135
|
this.material.dispose(), this.copyMaterial2D.dispose(), this.copyMaterial3D.dispose(), this.cov1RenderTarget.dispose(), this.cov2RenderTarget.dispose(), this.positionRenderTarget.dispose(), this.colorRenderTarget.dispose(), this.worker.terminate(), this.worker = null, this.orderAttribute.array = void 0, this.geometry.dispose();
|
|
@@ -3161,7 +3161,7 @@ void main() {
|
|
|
3161
3161
|
}
|
|
3162
3162
|
addSplatsTile(e, a, t, A) {
|
|
3163
3163
|
if (!this.worker) return;
|
|
3164
|
-
const i = this, s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, o = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)),
|
|
3164
|
+
const i = this, s = e.data ? e.data.array : e.array, r = e.data && e.data.isInterleavedBuffer ? e.data.stride : 3, o = e.data && e.data.isInterleavedBuffer ? e.offset : 0, n = Math.ceil(s.length / (this.batchSize * r)), b = [], d = [];
|
|
3165
3165
|
let g = () => {
|
|
3166
3166
|
};
|
|
3167
3167
|
const l = new Float32Array(s.length / r * 3);
|
|
@@ -3170,47 +3170,47 @@ void main() {
|
|
|
3170
3170
|
const u = m * m;
|
|
3171
3171
|
for (let C = 0; C < l.length; C += 3) {
|
|
3172
3172
|
Ve.set(l[C], -l[C + 2], l[C + 1]);
|
|
3173
|
-
const B =
|
|
3173
|
+
const B = Pi.copy(Ve).sub(f.origin).dot(f.direction);
|
|
3174
3174
|
B > 0 && f.distanceSqToPoint(Ve) < u && I.push({ distance: B, point: Ve.clone(), type: "splat" });
|
|
3175
3175
|
}
|
|
3176
3176
|
}, n > this.freeAddresses.size && this.growTextures();
|
|
3177
3177
|
for (let f = 0; f < n; f++) {
|
|
3178
3178
|
const I = this.freeAddresses.poll();
|
|
3179
|
-
isNaN(I) && console.log("insuficient texture size to store splats info"),
|
|
3179
|
+
isNaN(I) && console.log("insuficient texture size to store splats info"), b.push(I), d.push(3 * I);
|
|
3180
3180
|
const m = f * this.batchSize;
|
|
3181
3181
|
this.addSplatsBatch(m, I, e, a, t, A);
|
|
3182
3182
|
}
|
|
3183
|
-
i.worker.postMessage({ method: "addBatches", insertionIndexes:
|
|
3183
|
+
i.worker.postMessage({ method: "addBatches", insertionIndexes: d, positions: s.buffer, offset: o, stride: r, batchSize: i.batchSize }, [s.buffer]);
|
|
3184
3184
|
let h = !1;
|
|
3185
3185
|
return { hide: () => {
|
|
3186
|
-
h == 1 && i.worker && (i.numVisibleBatches--, h = !1, i.worker.postMessage({ method: "hideBatches", insertionIndexes:
|
|
3186
|
+
h == 1 && i.worker && (i.numVisibleBatches--, h = !1, i.worker.postMessage({ method: "hideBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }));
|
|
3187
3187
|
}, show: (f) => {
|
|
3188
3188
|
if (h == 0 && i.worker) {
|
|
3189
3189
|
i.numVisibleBatches--, h = !0;
|
|
3190
3190
|
const I = i.sortID, m = (u) => u >= I && (f(), !0);
|
|
3191
|
-
i.sortListeners.push(m), i.worker.postMessage({ method: "showBatches", insertionIndexes:
|
|
3191
|
+
i.sortListeners.push(m), i.worker.postMessage({ method: "showBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ });
|
|
3192
3192
|
}
|
|
3193
3193
|
}, remove: () => {
|
|
3194
|
-
i.worker && (g = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes:
|
|
3194
|
+
i.worker && (g = void 0, i.worker.postMessage({ method: "removeBatches", insertionIndexes: d, xyz: [i.cameraPosition.x, i.cameraPosition.z, -i.cameraPosition.y], id: i.sortID++ }), b.forEach((f) => i.freeAddresses.add(f)));
|
|
3195
3195
|
}, sort: this.sort, raycast: g, isSplatsBatch: !0 };
|
|
3196
3196
|
}
|
|
3197
3197
|
addSplatsBatch(e, a, t, A, i, s) {
|
|
3198
|
-
const r = new Float32Array(4 * this.batchSize), o = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize),
|
|
3198
|
+
const r = new Float32Array(4 * this.batchSize), o = new Uint8Array(4 * this.batchSize), n = new Float32Array(4 * this.batchSize), b = new Float32Array(4 * this.batchSize);
|
|
3199
3199
|
for (let u = a; u < a + this.batchSize; u++) {
|
|
3200
|
-
const C = u - a, B = 4 * C,
|
|
3201
|
-
if (
|
|
3202
|
-
r[B] = t.getX(
|
|
3200
|
+
const C = u - a, B = 4 * C, w = e + C;
|
|
3201
|
+
if (w >= t.count) break;
|
|
3202
|
+
r[B] = t.getX(w), r[B + 1] = t.getY(w), r[B + 2] = t.getZ(w), Math.floor(255 * A.getX(w)), Math.floor(255 * A.getY(w)), Math.floor(255 * A.getZ(w)), Math.floor(255 * A.getW(w)), o[B] = Math.floor(255 * A.getX(w)), o[B + 1] = Math.floor(255 * A.getY(w)), o[B + 2] = Math.floor(255 * A.getZ(w)), o[B + 3] = Math.floor(255 * A.getW(w)), n[B] = i.getX(w), n[B + 1] = i.getY(w), n[B + 2] = i.getZ(w), b[B] = s.getX(w), b[B + 1] = s.getY(w), b[B + 2] = s.getZ(w);
|
|
3203
3203
|
}
|
|
3204
|
-
const
|
|
3204
|
+
const d = Math.floor(a / Math.pow(this.textureSize, 2)), g = Math.ceil(this.batchSize / this.textureSize), l = [0, a / this.textureSize - d * this.textureSize, this.textureSize];
|
|
3205
3205
|
l.push(l[1] + g);
|
|
3206
|
-
const h = new
|
|
3207
|
-
h.generateMipmaps = !1, h.magFilter = v, h.minFilter = v, h.anisotropy = 0, h.needsUpdate = !0, this.renderer.initTexture(h), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(h, this.positionRenderTarget, l,
|
|
3208
|
-
const f = new
|
|
3209
|
-
f.generateMipmaps = !1, f.magFilter = v, f.minFilter = v, f.anisotropy = 0, f.needsUpdate = !0, this.renderer.initTexture(f), this.copyTex2D(f, this.colorRenderTarget, l,
|
|
3210
|
-
const I = new
|
|
3211
|
-
I.generateMipmaps = !1, I.magFilter = v, I.minFilter = v, I.anisotropy = 0, I.needsUpdate = !0, this.renderer.initTexture(I), this.copyTex2D(I, this.cov1RenderTarget, l,
|
|
3212
|
-
const m = new
|
|
3213
|
-
m.generateMipmaps = !1, m.magFilter = v, m.minFilter = v, m.anisotropy = 0, m.needsUpdate = !0, this.renderer.initTexture(m), this.copyTex2D(m, this.cov2RenderTarget, l,
|
|
3206
|
+
const h = new Ge(r, this.textureSize, g, ee, R);
|
|
3207
|
+
h.generateMipmaps = !1, h.magFilter = v, h.minFilter = v, h.anisotropy = 0, h.needsUpdate = !0, this.renderer.initTexture(h), this.renderer.initRenderTarget(this.positionRenderTarget), this.copyTex2D(h, this.positionRenderTarget, l, d), h.dispose();
|
|
3208
|
+
const f = new Ge(o, this.textureSize, g, ee, X);
|
|
3209
|
+
f.generateMipmaps = !1, f.magFilter = v, f.minFilter = v, f.anisotropy = 0, f.needsUpdate = !0, this.renderer.initTexture(f), this.copyTex2D(f, this.colorRenderTarget, l, d), f.dispose();
|
|
3210
|
+
const I = new Ge(n, this.textureSize, g, ee, R);
|
|
3211
|
+
I.generateMipmaps = !1, I.magFilter = v, I.minFilter = v, I.anisotropy = 0, I.needsUpdate = !0, this.renderer.initTexture(I), this.copyTex2D(I, this.cov1RenderTarget, l, d), I.dispose();
|
|
3212
|
+
const m = new Ge(b, this.textureSize, g, ee, R);
|
|
3213
|
+
m.generateMipmaps = !1, m.magFilter = v, m.minFilter = v, m.anisotropy = 0, m.needsUpdate = !0, this.renderer.initTexture(m), this.copyTex2D(m, this.cov2RenderTarget, l, d), m.dispose();
|
|
3214
3214
|
}
|
|
3215
3215
|
growTextures() {
|
|
3216
3216
|
for (let s = this.maxSplats; s < this.maxSplats + this.textureSize * this.textureSize; s += this.batchSize) this.freeAddresses.add(s);
|
|
@@ -3462,7 +3462,7 @@ class Wt extends E.Object3D {
|
|
|
3462
3462
|
}
|
|
3463
3463
|
(a.proxy ? () => fetch(a.proxy, { method: "POST", body: t, signal: a.abortController.signal }) : () => fetch(t, { signal: a.abortController.signal }))().then((i) => {
|
|
3464
3464
|
if (!i.ok) throw new Error(`couldn't load "${e.url}". Request failed with status ${i.status} : ${i.statusText}`);
|
|
3465
|
-
i.json().then((s) =>
|
|
3465
|
+
i.json().then((s) => Ua(s, t)).then((s) => {
|
|
3466
3466
|
a._setup({ rootPath: de.dirname(e.url), json: s });
|
|
3467
3467
|
});
|
|
3468
3468
|
}).catch((i) => {
|
|
@@ -3477,18 +3477,18 @@ class Wt extends E.Object3D {
|
|
|
3477
3477
|
this.splatsCropRadius = e, this.splatsMesh && this.splatsMesh.setSplatsCropRadius(this.splatsCropRadius);
|
|
3478
3478
|
}
|
|
3479
3479
|
updateMatrices() {
|
|
3480
|
-
this.updateMatrix(), this.static && this.traverse((e) => {
|
|
3480
|
+
this.updateMatrix(), this.splatsMesh && this.splatsMesh.updateMatrix(), this.static && (this.traverse((e) => {
|
|
3481
3481
|
e.isObject3D && (e.matrixWorldAutoUpdate = !0);
|
|
3482
|
-
}), this.updateMatrixWorld(!0), this.static && this.traverse((e) => {
|
|
3482
|
+
}), this.splatsMesh && (this.splatsMesh.matrixWorldAutoUpdate = !0)), this.updateMatrixWorld(!0), this.static && (this.traverse((e) => {
|
|
3483
3483
|
e.isObject3D && (e.matrixWorldAutoUpdate = !1);
|
|
3484
|
-
});
|
|
3484
|
+
}), this.splatsMesh && (this.splatsMesh.matrixWorldAutoUpdate = !1));
|
|
3485
3485
|
}
|
|
3486
3486
|
setCanvasSize(e, a) {
|
|
3487
3487
|
this.rendererSize.set(e, a);
|
|
3488
3488
|
}
|
|
3489
3489
|
async _setup(e) {
|
|
3490
3490
|
const a = this;
|
|
3491
|
-
if (e.json.extensionsRequired && (e.json.extensionsRequired.includes("JDULTRA_gaussian_splats") || e.json.extensionsRequired.includes("JDULTRA_gaussian_splats_V2")) && (a.splatsMesh = new
|
|
3491
|
+
if (e.json.extensionsRequired && (e.json.extensionsRequired.includes("JDULTRA_gaussian_splats") || e.json.extensionsRequired.includes("JDULTRA_gaussian_splats_V2")) && (a.splatsMesh = new Ji(a.tileLoader.renderer), a.splatsMesh.setSplatsCropRadius(a.splatsCropRadius), a.splatsMesh.setSplatsSizeMultiplier(a.splatsSizeMultiplier), a.static && (a.splatsMesh.matrixWorldAutoUpdate = !1), a.add(a.splatsMesh), a.updateMatrices()), e.json.root ? (a.json = e.json.root, a.json.refine || (a.json.refine = e.json.refine), a.json.geometricError || (a.json.geometricError = e.json.geometricError), a.json.transform || (a.json.transform = e.json.transform), a.json.boundingVolume || (a.json.boundingVolume = e.json.boundingVolume)) : a.json = e.json, a.json.children || (a.json.getChildren ? a.json.children = await a.json.getChildren() : a.json.children = []), a.rootPath = e.json.rootPath ? e.json.rootPath : e.rootPath, a.json.refine ? a.refine = a.json.refine : a.refine = e.parentRefine, a.json.geometricError ? a.geometricError = a.json.geometricError : a.geometricError = e.parentGeometricError, a.json.transform) {
|
|
3492
3492
|
let A = new E.Matrix4();
|
|
3493
3493
|
A.elements = a.json.transform, a.applyMatrix4(A);
|
|
3494
3494
|
}
|
|
@@ -3538,11 +3538,11 @@ class Wt extends E.Object3D {
|
|
|
3538
3538
|
async function A(i, s, r, o) {
|
|
3539
3539
|
let n;
|
|
3540
3540
|
i.uri ? n = i.uri : i.url && (n = i.url);
|
|
3541
|
-
const
|
|
3542
|
-
if (
|
|
3543
|
-
var
|
|
3544
|
-
for (let g in t.queryParams) t.queryParams.hasOwnProperty(g) && (
|
|
3545
|
-
n.includes("?") ? n +=
|
|
3541
|
+
const b = /^(?:http|https|ftp|tcp|udp):\/\/\S+/;
|
|
3542
|
+
if (b.test(t.rootPath) ? b.test(n) || (n = t._assembleURL(t.rootPath, n)) : de.isAbsolute(t.rootPath) && (n = t.rootPath + de.sep + n), n = t._extractQueryParams(n, t.queryParams), t.queryParams) {
|
|
3543
|
+
var d = "";
|
|
3544
|
+
for (let g in t.queryParams) t.queryParams.hasOwnProperty(g) && (d += "&" + g + "=" + t.queryParams[g]);
|
|
3545
|
+
n.includes("?") ? n += d : n += "?" + d.substring(1);
|
|
3546
3546
|
}
|
|
3547
3547
|
if (n) if (t.contentURL.push(n), o && (n.includes(".b3dm") || n.includes(".glb") || n.includes(".gltf"))) try {
|
|
3548
3548
|
t.tileLoader.get(t.abortController, t.uuid, n, (g) => {
|
|
@@ -3832,8 +3832,8 @@ class Wt extends E.Object3D {
|
|
|
3832
3832
|
this.distanceBias = e, this.childrenTiles.forEach((a) => a.setDistanceBias(e));
|
|
3833
3833
|
}
|
|
3834
3834
|
_transformWGS84ToCartesian(e, a, t, A) {
|
|
3835
|
-
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), o = Math.sin(a), n = i + t,
|
|
3836
|
-
A.set(
|
|
3835
|
+
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), o = Math.sin(a), n = i + t, b = n * s * r, d = n * s * Math.sin(e), g = (0.993305615557957 * i + t) * o;
|
|
3836
|
+
A.set(b, d, g);
|
|
3837
3837
|
}
|
|
3838
3838
|
}
|
|
3839
3839
|
function gt(c) {
|
|
@@ -3851,7 +3851,7 @@ function pa() {
|
|
|
3851
3851
|
}), e = e.slice(0, -2), W.textContent = e;
|
|
3852
3852
|
}
|
|
3853
3853
|
const N = new E.Sphere(new E.Vector3(0, 0, 0), 1), be = new E.Vector3(0, 0, 0), Ea = new E.Vector3(0, 0, 0), Vi = new E.Vector3(0, 1, 0), Qa = new E.Vector2(), ft = new E.Quaternion(), ut = new E.Matrix4();
|
|
3854
|
-
class
|
|
3854
|
+
class Ga extends E.Object3D {
|
|
3855
3855
|
constructor(e) {
|
|
3856
3856
|
super();
|
|
3857
3857
|
const a = this;
|
|
@@ -3958,7 +3958,7 @@ class Ua extends E.Object3D {
|
|
|
3958
3958
|
t.isSetup && (t.materialVisibility, t.boundingVolume && t.geometricError && (t.metric = t.calculateUpdateMetric(e, a)), t.childrenTiles.forEach((i) => i._update(e, a)), A(t.metric), function(i) {
|
|
3959
3959
|
i < 0 && t.hasMeshContent || (!t.hasMeshContent && t.rootPath || i < t.master.geometricErrorMultiplier * t.geometricError && t.meshContent.size > 0) && t.json && t.jsonChildren && t.childrenTiles.length != t.jsonChildren.length && t.jsonChildren.forEach((s) => {
|
|
3960
3960
|
if (!(s.root || s.children || s.getChildren || s.content || s.contents)) return;
|
|
3961
|
-
let r = new
|
|
3961
|
+
let r = new Ga({ parentTile: t, queryParams: t.queryParams, parentGeometricError: t.geometricError, parentBoundingVolume: t.boundingVolume, parentRefinement: t.refinement, json: s, rootPath: t.rootPath, loadOutsideView: t.loadOutsideView, level: t.level + 1, tileLoader: t.tileLoader, cameraOnLoad: e, master: t.master, centerModel: !1 });
|
|
3962
3962
|
t.childrenTiles.push(r);
|
|
3963
3963
|
});
|
|
3964
3964
|
}(t.metric), function(i) {
|
|
@@ -4029,13 +4029,13 @@ class Ua extends E.Object3D {
|
|
|
4029
4029
|
return this.matrixWorld;
|
|
4030
4030
|
}
|
|
4031
4031
|
transformWGS84ToCartesian(e, a, t, A) {
|
|
4032
|
-
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), o = Math.sin(a), n = i + t,
|
|
4033
|
-
A.set(
|
|
4032
|
+
const i = 6378137 / Math.sqrt(1 - 0.006694384442042 * Math.pow(Math.sin(a), 2)), s = Math.cos(a), r = Math.cos(e), o = Math.sin(a), n = i + t, b = n * s * r, d = n * s * Math.sin(e), g = (0.993305615557957 * i + t) * o;
|
|
4033
|
+
A.set(b, d, g);
|
|
4034
4034
|
}
|
|
4035
4035
|
}
|
|
4036
4036
|
class as extends E.Object3D {
|
|
4037
4037
|
constructor(e) {
|
|
4038
|
-
super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new E.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new E.Vector2(1e3, 1e3), this.renderer = e.renderer, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.tileset = new
|
|
4038
|
+
super(), e.master = this, e.domWidth && e.domHeight ? this.rendererSize = new E.Vector2(e.domWidth, e.domHeight) : this.rendererSize = new E.Vector2(1e3, 1e3), this.renderer = e.renderer, this.distanceBias = Math.max(1e-4, e.distanceBias ? e.distanceBias : 1), this.geometricErrorMultiplier = e.geometricErrorMultiplier ? e.geometricErrorMultiplier : 1, this.tileset = new Ga(e), e.static && (this.matrixAutoUpdate = !1), this.tileLoader = e.tileLoader;
|
|
4039
4039
|
}
|
|
4040
4040
|
_renderSize(e) {
|
|
4041
4041
|
this.renderer ? this.renderer.getDrawingBufferSize(e) : e.copy(this.rendererSize);
|
|
@@ -4178,7 +4178,7 @@ class ts {
|
|
|
4178
4178
|
a = e.proxy ? () => fetch(e.proxy, { method: "POST", body: t.path }) : () => fetch(t.path), Ie++, a().then((A) => {
|
|
4179
4179
|
if (!A.ok) throw console.error("could not load tile with path : " + t.path), new Error(`couldn't load "${t.path}". Request failed with status ${A.status} : ${A.statusText}`);
|
|
4180
4180
|
return A.json();
|
|
4181
|
-
}).then((A) =>
|
|
4181
|
+
}).then((A) => Ua(A, t.path)).then((A) => {
|
|
4182
4182
|
t.tile.setObject(A, t.path), e.ready.unshift(t);
|
|
4183
4183
|
}).catch((A) => console.error(A)).finally(() => {
|
|
4184
4184
|
Ie--;
|
|
@@ -4206,8 +4206,8 @@ class ts {
|
|
|
4206
4206
|
}
|
|
4207
4207
|
}
|
|
4208
4208
|
}
|
|
4209
|
-
get(e, a, t, A, i, s, r, o, n,
|
|
4210
|
-
const
|
|
4209
|
+
get(e, a, t, A, i, s, r, o, n, b) {
|
|
4210
|
+
const d = this, g = function(h) {
|
|
4211
4211
|
for (var f = h.split("/"), I = [], m = 0, u = 0; u < f.length; u++) {
|
|
4212
4212
|
var C = f[u];
|
|
4213
4213
|
C !== "." && C !== "" && C !== ".." ? I[m++] = C : C === ".." && m > 0 && m--;
|
|
@@ -4218,18 +4218,18 @@ class ts {
|
|
|
4218
4218
|
return B;
|
|
4219
4219
|
}(a);
|
|
4220
4220
|
if (!(a.includes(".b3dm") || a.includes(".json") || a.includes(".glb") || a.includes(".gltf"))) return void console.error("the 3DTiles cache can only be used to load B3DM, gltf and json data");
|
|
4221
|
-
const l =
|
|
4221
|
+
const l = d.cache.get(g);
|
|
4222
4222
|
if (l) l.addInstance(A);
|
|
4223
4223
|
else if (a.includes(".b3dm") || a.includes(".glb") || a.includes(".gltf")) {
|
|
4224
|
-
const h = new Yi(
|
|
4225
|
-
h.addInstance(A),
|
|
4224
|
+
const h = new Yi(d.scene);
|
|
4225
|
+
h.addInstance(A), d.cache.put(g, h);
|
|
4226
4226
|
const f = new AbortController();
|
|
4227
4227
|
e.signal.addEventListener("abort", () => {
|
|
4228
4228
|
h.getCount() == 0 && f.abort();
|
|
4229
|
-
}), this.downloads.push({ abortController: f, tile: h, key: g, path: a, distanceFunction: i, getSiblings: s, level: r, uuid: t, sceneZupToYup: o, meshZupToYup: n, geometricError:
|
|
4229
|
+
}), this.downloads.push({ abortController: f, tile: h, key: g, path: a, distanceFunction: i, getSiblings: s, level: r, uuid: t, sceneZupToYup: o, meshZupToYup: n, geometricError: b, shouldDoDownload: () => !0 });
|
|
4230
4230
|
} else if (a.includes(".json")) {
|
|
4231
4231
|
const h = new Wi();
|
|
4232
|
-
h.addInstance(A),
|
|
4232
|
+
h.addInstance(A), d.cache.put(g, h);
|
|
4233
4233
|
const f = new AbortController();
|
|
4234
4234
|
e.signal.addEventListener("abort", () => {
|
|
4235
4235
|
h.getCount() == 0 && f.abort();
|