@galacean/engine-loader 1.2.0-alpha.9 → 1.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1007,9 +1007,9 @@ var HierarchyParser = /*#__PURE__*/ function() {
1007
1007
  }
1008
1008
  components.set(path + ":" + name + "/" + componentIndexMap[name]++, component);
1009
1009
  });
1010
- for(var i = 0; i < entity.children.length; i++){
1010
+ for(var i = 0, n = entity.children.length; i < n; i++){
1011
1011
  var child = entity.children[i];
1012
- var childPath = path ? path + "/" + child.name : child.name;
1012
+ var childPath = path ? path + "/" + i : "" + i;
1013
1013
  this._traverseAddEntityToMap(child, context, childPath);
1014
1014
  }
1015
1015
  };
@@ -2165,111 +2165,68 @@ function registerGLTFParser(pipeline) {
2165
2165
  };
2166
2166
  GLTFUtils.getAccessorBuffer = function getAccessorBuffer(context, bufferViews, accessor) {
2167
2167
  var componentType = accessor.componentType;
2168
- var bufferView = bufferViews[accessor.bufferView];
2169
- return context.get(exports.GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
2170
- var bufferIndex = bufferView.buffer;
2171
- var _bufferViewData_byteOffset;
2172
- var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
2173
- var _accessor_byteOffset;
2174
- var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
2175
- var TypedArray = GLTFUtils.getComponentType(componentType);
2176
- var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
2177
- var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
2178
- var elementStride = dataElementSize * dataElementBytes;
2179
- var accessorCount = accessor.count;
2180
- var bufferStride = bufferView.byteStride;
2181
- var bufferInfo;
2182
- // According to the glTF official documentation only byteStride not undefined is allowed
2183
- if (bufferStride !== undefined && bufferStride !== elementStride) {
2184
- var bufferSlice = Math.floor(byteOffset / bufferStride);
2185
- var bufferCacheKey = accessor.bufferView + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
2186
- var accessorBufferCache = context.accessorBufferCache;
2187
- bufferInfo = accessorBufferCache[bufferCacheKey];
2188
- if (!bufferInfo) {
2189
- var offset = bufferByteOffset + bufferSlice * bufferStride;
2190
- var count = accessorCount * (bufferStride / dataElementBytes);
2191
- var data = new TypedArray(bufferViewData.buffer, offset, count);
2192
- accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
2193
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
2168
+ var TypedArray = GLTFUtils.getComponentType(componentType);
2169
+ var dataElementSize = GLTFUtils.getAccessorTypeSize(accessor.type);
2170
+ var dataElementBytes = TypedArray.BYTES_PER_ELEMENT;
2171
+ var elementStride = dataElementSize * dataElementBytes;
2172
+ var accessorCount = accessor.count;
2173
+ var promise;
2174
+ if (accessor.bufferView !== undefined) {
2175
+ var bufferViewIndex = accessor.bufferView;
2176
+ var bufferView = bufferViews[bufferViewIndex];
2177
+ promise = context.get(exports.GLTFParserType.BufferView, accessor.bufferView).then(function(bufferViewData) {
2178
+ var bufferIndex = bufferView.buffer;
2179
+ var _bufferViewData_byteOffset;
2180
+ var bufferByteOffset = (_bufferViewData_byteOffset = bufferViewData.byteOffset) != null ? _bufferViewData_byteOffset : 0;
2181
+ var _accessor_byteOffset;
2182
+ var byteOffset = (_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0;
2183
+ var bufferStride = bufferView.byteStride;
2184
+ var bufferInfo;
2185
+ // According to the glTF official documentation only byteStride not undefined is allowed
2186
+ if (bufferStride !== undefined && bufferStride !== elementStride) {
2187
+ var bufferSlice = Math.floor(byteOffset / bufferStride);
2188
+ var bufferCacheKey = bufferViewIndex + ":" + componentType + ":" + bufferSlice + ":" + accessorCount;
2189
+ var accessorBufferCache = context.accessorBufferCache;
2190
+ bufferInfo = accessorBufferCache[bufferCacheKey];
2191
+ if (!bufferInfo) {
2192
+ var offset = bufferByteOffset + bufferSlice * bufferStride;
2193
+ var count = accessorCount * (bufferStride / dataElementBytes);
2194
+ var data = new TypedArray(bufferViewData.buffer, offset, count);
2195
+ accessorBufferCache[bufferCacheKey] = bufferInfo = new BufferInfo(data, true, bufferStride);
2196
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset, count));
2197
+ }
2198
+ } else {
2199
+ var offset1 = bufferByteOffset + byteOffset;
2200
+ var count1 = accessorCount * dataElementSize;
2201
+ var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
2202
+ bufferInfo = new BufferInfo(data1, false, elementStride);
2203
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
2194
2204
  }
2195
- } else {
2196
- var offset1 = bufferByteOffset + byteOffset;
2197
- var count1 = accessorCount * dataElementSize;
2198
- var data1 = new TypedArray(bufferViewData.buffer, offset1, count1);
2199
- bufferInfo = new BufferInfo(data1, false, elementStride);
2200
- bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(bufferIndex, TypedArray, offset1, count1));
2201
- }
2202
- if (accessor.sparse) {
2203
- return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
2204
- return bufferInfo;
2205
- });
2206
- }
2207
- return bufferInfo;
2208
- });
2205
+ return bufferInfo;
2206
+ });
2207
+ } else {
2208
+ var count = accessorCount * dataElementSize;
2209
+ var data = new TypedArray(count);
2210
+ var bufferInfo = new BufferInfo(data, false, elementStride);
2211
+ bufferInfo.restoreInfo = new BufferDataRestoreInfo(new RestoreDataAccessor(undefined, TypedArray, undefined, count));
2212
+ promise = Promise.resolve(bufferInfo);
2213
+ }
2214
+ return accessor.sparse ? promise.then(function(bufferInfo) {
2215
+ return GLTFUtils.processingSparseData(context, accessor, bufferInfo).then(function() {
2216
+ return bufferInfo;
2217
+ });
2218
+ }) : promise;
2209
2219
  };
2210
- GLTFUtils.bufferToVector3Array = function bufferToVector3Array(data, byteStride, accessorByteOffset, count) {
2211
- var bytesPerElement = data.BYTES_PER_ELEMENT;
2212
- var offset = accessorByteOffset % byteStride / bytesPerElement;
2213
- var stride = byteStride / bytesPerElement;
2214
- var vector3s = new Array(count);
2220
+ GLTFUtils.bufferToVector3Array = function bufferToVector3Array(buffer, byteOffset, count, normalized, componentType) {
2221
+ var baseOffset = byteOffset / buffer.BYTES_PER_ELEMENT;
2222
+ var stride = buffer.length / count;
2223
+ var vertices = new Array(count);
2224
+ var factor = normalized ? GLTFUtils.getNormalizedComponentScale(componentType) : 1;
2215
2225
  for(var i = 0; i < count; i++){
2216
- var index = offset + i * stride;
2217
- vector3s[i] = new miniprogram$1.Vector3(data[index], data[index + 1], data[index + 2]);
2226
+ var index = baseOffset + i * stride;
2227
+ vertices[i] = new miniprogram$1.Vector3(buffer[index] * factor, buffer[index + 1] * factor, buffer[index + 2] * factor);
2218
2228
  }
2219
- return vector3s;
2220
- };
2221
- /**
2222
- * @deprecated
2223
- * Get accessor data.
2224
- */ GLTFUtils.getAccessorData = function getAccessorData(glTF, accessor, buffers) {
2225
- var bufferViews = glTF.bufferViews;
2226
- var bufferView = bufferViews[accessor.bufferView];
2227
- var arrayBuffer = buffers[bufferView.buffer];
2228
- var accessorByteOffset = accessor.hasOwnProperty("byteOffset") ? accessor.byteOffset : 0;
2229
- var bufferViewByteOffset = bufferView.hasOwnProperty("byteOffset") ? bufferView.byteOffset : 0;
2230
- var byteOffset = accessorByteOffset + bufferViewByteOffset;
2231
- var accessorTypeSize = GLTFUtils.getAccessorTypeSize(accessor.type);
2232
- var length = accessorTypeSize * accessor.count;
2233
- var _bufferView_byteStride;
2234
- var byteStride = (_bufferView_byteStride = bufferView.byteStride) != null ? _bufferView_byteStride : 0;
2235
- var arrayType = GLTFUtils.getComponentType(accessor.componentType);
2236
- var uint8Array;
2237
- if (byteStride) {
2238
- var accessorByteSize = accessorTypeSize * arrayType.BYTES_PER_ELEMENT;
2239
- uint8Array = new Uint8Array(accessor.count * accessorByteSize);
2240
- var originalBufferView = new Uint8Array(arrayBuffer, bufferViewByteOffset, bufferView.byteLength);
2241
- for(var i = 0; i < accessor.count; i++){
2242
- for(var j = 0; j < accessorByteSize; j++){
2243
- uint8Array[i * accessorByteSize + j] = originalBufferView[i * byteStride + accessorByteOffset + j];
2244
- }
2245
- }
2246
- } else {
2247
- uint8Array = new Uint8Array(arrayBuffer.slice(byteOffset, byteOffset + length * arrayType.BYTES_PER_ELEMENT));
2248
- }
2249
- var typedArray = new arrayType(uint8Array.buffer);
2250
- if (accessor.sparse) {
2251
- var _accessor_sparse = accessor.sparse, count = _accessor_sparse.count, indices = _accessor_sparse.indices, values = _accessor_sparse.values;
2252
- var indicesBufferView = bufferViews[indices.bufferView];
2253
- var valuesBufferView = bufferViews[values.bufferView];
2254
- var indicesArrayBuffer = buffers[indicesBufferView.buffer];
2255
- var valuesArrayBuffer = buffers[valuesBufferView.buffer];
2256
- var _indices_byteOffset, _indicesBufferView_byteOffset;
2257
- var indicesByteOffset = ((_indices_byteOffset = indices.byteOffset) != null ? _indices_byteOffset : 0) + ((_indicesBufferView_byteOffset = indicesBufferView.byteOffset) != null ? _indicesBufferView_byteOffset : 0);
2258
- var indicesByteLength = indicesBufferView.byteLength;
2259
- var _values_byteOffset, _valuesBufferView_byteOffset;
2260
- var valuesByteOffset = ((_values_byteOffset = values.byteOffset) != null ? _values_byteOffset : 0) + ((_valuesBufferView_byteOffset = valuesBufferView.byteOffset) != null ? _valuesBufferView_byteOffset : 0);
2261
- var valuesByteLength = valuesBufferView.byteLength;
2262
- var indicesType = GLTFUtils.getComponentType(indices.componentType);
2263
- var indicesArray = new indicesType(indicesArrayBuffer, indicesByteOffset, indicesByteLength / indicesType.BYTES_PER_ELEMENT);
2264
- var valuesArray = new arrayType(valuesArrayBuffer, valuesByteOffset, valuesByteLength / arrayType.BYTES_PER_ELEMENT);
2265
- for(var i1 = 0; i1 < count; i1++){
2266
- var replaceIndex = indicesArray[i1];
2267
- for(var j1 = 0; j1 < accessorTypeSize; j1++){
2268
- typedArray[replaceIndex * accessorTypeSize + j1] = valuesArray[i1 * accessorTypeSize + j1];
2269
- }
2270
- }
2271
- }
2272
- return typedArray;
2229
+ return vertices;
2273
2230
  };
2274
2231
  GLTFUtils.getBufferViewData = function getBufferViewData(bufferView, buffers) {
2275
2232
  var _bufferView_byteOffset = bufferView.byteOffset, byteOffset = _bufferView_byteOffset === void 0 ? 0 : _bufferView_byteOffset;
@@ -2403,7 +2360,7 @@ function registerGLTFParser(pipeline) {
2403
2360
  };
2404
2361
  /**
2405
2362
  * Parse the glb format.
2406
- */ GLTFUtils.parseGLB = function parseGLB(context, glb) {
2363
+ */ GLTFUtils.parseGLB = function parseGLB(context, originBuffer) {
2407
2364
  var UINT32_LENGTH = 4;
2408
2365
  var GLB_HEADER_MAGIC = 0x46546c67; // 'glTF'
2409
2366
  var GLB_HEADER_LENGTH = 12;
@@ -2411,7 +2368,7 @@ function registerGLTFParser(pipeline) {
2411
2368
  JSON: 0x4e4f534a,
2412
2369
  BIN: 0x004e4942
2413
2370
  };
2414
- var dataView = new DataView(glb);
2371
+ var dataView = new DataView(originBuffer);
2415
2372
  // read header
2416
2373
  var header = {
2417
2374
  magic: dataView.getUint32(0, true),
@@ -2419,8 +2376,9 @@ function registerGLTFParser(pipeline) {
2419
2376
  length: dataView.getUint32(2 * UINT32_LENGTH, true)
2420
2377
  };
2421
2378
  if (header.magic !== GLB_HEADER_MAGIC) {
2422
- console.error("Invalid glb magic number. Expected 0x46546C67, found 0x" + header.magic.toString(16));
2423
- return null;
2379
+ return {
2380
+ originBuffer: originBuffer
2381
+ };
2424
2382
  }
2425
2383
  // read main data
2426
2384
  var chunkLength = dataView.getUint32(GLB_HEADER_LENGTH, true);
@@ -2430,7 +2388,7 @@ function registerGLTFParser(pipeline) {
2430
2388
  console.error("Invalid glb chunk type. Expected 0x4E4F534A, found 0x" + chunkType.toString(16));
2431
2389
  return null;
2432
2390
  }
2433
- var glTFData = new Uint8Array(glb, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
2391
+ var glTFData = new Uint8Array(originBuffer, GLB_HEADER_LENGTH + 2 * UINT32_LENGTH, chunkLength);
2434
2392
  var glTF = JSON.parse(miniprogram.Utils.decodeText(glTFData));
2435
2393
  // read all buffers
2436
2394
  var buffers = [];
@@ -2444,7 +2402,7 @@ function registerGLTFParser(pipeline) {
2444
2402
  return null;
2445
2403
  }
2446
2404
  var currentOffset = byteOffset + 2 * UINT32_LENGTH;
2447
- var buffer = glb.slice(currentOffset, currentOffset + chunkLength);
2405
+ var buffer = originBuffer.slice(currentOffset, currentOffset + chunkLength);
2448
2406
  buffers.push(buffer);
2449
2407
  restoreGLBBufferSlice.push(new miniprogram$1.Vector2(currentOffset, chunkLength));
2450
2408
  byteOffset += chunkLength + 2 * UINT32_LENGTH;
@@ -3583,16 +3541,16 @@ exports.KTX2Transcoder = void 0;
3583
3541
  var frame = restoreInfo.blendShape.frames[0];
3584
3542
  var position = restoreInfo.position;
3585
3543
  var positionData = _this._getBufferData(buffers, position.buffer);
3586
- frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.stride, position.byteOffset, position.count);
3544
+ frame.deltaPositions = GLTFUtils.bufferToVector3Array(positionData, position.byteOffset, position.count, position.normalized, position.componentType);
3587
3545
  if (restoreInfo.normal) {
3588
3546
  var normal = restoreInfo.normal;
3589
3547
  var normalData = _this._getBufferData(buffers, normal.buffer);
3590
- frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.stride, normal.byteOffset, normal.count);
3548
+ frame.deltaNormals = GLTFUtils.bufferToVector3Array(normalData, normal.byteOffset, normal.count, normal.normalized, normal.componentType);
3591
3549
  }
3592
3550
  if (restoreInfo.tangent) {
3593
3551
  var tangent = restoreInfo.tangent;
3594
3552
  var tangentData = _this._getBufferData(buffers, tangent.buffer);
3595
- frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.stride, tangent.byteOffset, tangent.count);
3553
+ frame.deltaTangents = GLTFUtils.bufferToVector3Array(tangentData, tangent.byteOffset, tangent.count, tangent.normalized, tangent.componentType);
3596
3554
  }
3597
3555
  }
3598
3556
  mesh.uploadData(true);
@@ -3604,8 +3562,13 @@ exports.KTX2Transcoder = void 0;
3604
3562
  };
3605
3563
  _proto._getBufferData = function _getBufferData(buffers, restoreInfo) {
3606
3564
  var main = restoreInfo.main;
3607
- var buffer = buffers[main.bufferIndex];
3608
- var data = new main.TypedArray(buffer, main.byteOffset, main.length);
3565
+ var data;
3566
+ if (main) {
3567
+ var buffer = buffers[main.bufferIndex];
3568
+ data = new main.TypedArray(buffer, main.byteOffset, main.length);
3569
+ } else {
3570
+ data = new main.TypedArray(main.length);
3571
+ }
3609
3572
  var sparseCount = restoreInfo.sparseCount;
3610
3573
  if (sparseCount) {
3611
3574
  var sparseIndex = restoreInfo.sparseIndices;
@@ -3678,11 +3641,12 @@ exports.KTX2Transcoder = void 0;
3678
3641
  };
3679
3642
  /**
3680
3643
  * @internal
3681
- */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, stride, byteOffset, count) {
3644
+ */ var BlendShapeDataRestoreInfo = function BlendShapeDataRestoreInfo(buffer, byteOffset, count, normalized, componentType) {
3682
3645
  this.buffer = buffer;
3683
- this.stride = stride;
3684
3646
  this.byteOffset = byteOffset;
3685
3647
  this.count = count;
3648
+ this.normalized = normalized;
3649
+ this.componentType = componentType;
3686
3650
  };
3687
3651
 
3688
3652
  /**
@@ -3858,23 +3822,20 @@ exports.GLTFSchemaParser = /*#__PURE__*/ function(GLTFParser1) {
3858
3822
  var requestConfig = {
3859
3823
  type: "arraybuffer"
3860
3824
  };
3861
- var isGLB = this._isGLB(url);
3862
- contentRestorer.isGLB = isGLB;
3863
- var promise = isGLB ? miniprogram.request(url, requestConfig).onProgress(undefined, context._onTaskDetail).then(function(glb) {
3825
+ return miniprogram.request(url, requestConfig).onProgress(undefined, context._onTaskDetail).then(function(buffer) {
3864
3826
  restoreBufferRequests.push(new BufferRequestInfo(url, requestConfig));
3865
- return GLTFUtils.parseGLB(context, glb);
3866
- }).then(function(param) {
3867
- var glTF = param.glTF, buffers = param.buffers;
3868
- context.buffers = buffers;
3869
- return glTF;
3870
- }) : miniprogram.request(url, {
3871
- type: "json"
3872
- }).onProgress(undefined, context._onTaskDetail);
3873
- return promise;
3874
- };
3875
- _proto._isGLB = function _isGLB(url) {
3876
- var index = url.lastIndexOf(".");
3877
- return url.substring(index + 1, index + 4) === "glb";
3827
+ return GLTFUtils.parseGLB(context, buffer);
3828
+ }).then(function(result) {
3829
+ var _result;
3830
+ if ((_result = result) == null ? void 0 : _result.glTF) {
3831
+ contentRestorer.isGLB = true;
3832
+ context.buffers = result.buffers;
3833
+ return result.glTF;
3834
+ } else {
3835
+ contentRestorer.isGLB = false;
3836
+ return JSON.parse(miniprogram.Utils.decodeText(new Uint8Array(result.originBuffer)));
3837
+ }
3838
+ });
3878
3839
  };
3879
3840
  return GLTFSchemaParser;
3880
3841
  }(GLTFParser);
@@ -3934,13 +3895,13 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
3934
3895
  break;
3935
3896
  }
3936
3897
  input[input.length - 1];
3937
- sampleDataCollection.push({
3898
+ sampleDataCollection[j] = {
3938
3899
  type: outputAccessor.type,
3939
3900
  interpolation: samplerInterpolation,
3940
3901
  input: input,
3941
3902
  output: output,
3942
3903
  outputSize: outputStride
3943
- });
3904
+ };
3944
3905
  });
3945
3906
  promises.push(promise);
3946
3907
  };
@@ -3948,11 +3909,12 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
3948
3909
  var glTF = context.glTF;
3949
3910
  var accessors = glTF.accessors, bufferViews = glTF.bufferViews;
3950
3911
  var channels = animationInfo.channels, samplers = animationInfo.samplers;
3951
- var sampleDataCollection = new Array();
3912
+ var len = samplers.length;
3913
+ var sampleDataCollection = new Array(len);
3952
3914
  var entities = context.get(exports.GLTFParserType.Entity);
3953
3915
  var promises = new Array();
3954
3916
  // parse samplers
3955
- for(var j = 0, m = samplers.length; j < m; j++)_loop(j);
3917
+ for(var j = 0, m = len; j < m; j++)_loop(j);
3956
3918
  promises.push(context.get(exports.GLTFParserType.Scene));
3957
3919
  return Promise.all(promises).then(function() {
3958
3920
  for(var j = 0, m = channels.length; j < m; j++){
@@ -4310,23 +4272,7 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
4310
4272
  var meshRestoreInfo = new ModelMeshRestoreInfo();
4311
4273
  meshRestoreInfo.mesh = mesh1;
4312
4274
  context.contentRestorer.meshes.push(meshRestoreInfo);
4313
- exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, function(attributeSemantic) {
4314
- return null;
4315
- }, function(attributeName, shapeIndex) {
4316
- var shapeAccessorIdx = gltfPrimitive.targets[shapeIndex];
4317
- var attributeAccessorIdx = shapeAccessorIdx[attributeName];
4318
- if (attributeAccessorIdx) {
4319
- var accessor = glTF.accessors[attributeAccessorIdx];
4320
- return GLTFUtils.getAccessorBuffer(context, context.glTF.bufferViews, accessor);
4321
- } else {
4322
- return null;
4323
- }
4324
- }, function() {
4325
- var indexAccessor = glTF.accessors[gltfPrimitive.indices];
4326
- return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
4327
- return GLTFUtils.getAccessorData(glTF, indexAccessor, buffers);
4328
- });
4329
- }, context.params.keepMeshData).then(resolve);
4275
+ exports.GLTFMeshParser._parseMeshFromGLTFPrimitive(context, mesh1, meshRestoreInfo, meshInfo, gltfPrimitive, glTF, context.params.keepMeshData).then(resolve);
4330
4276
  }
4331
4277
  });
4332
4278
  };
@@ -4339,7 +4285,7 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
4339
4285
  };
4340
4286
  /**
4341
4287
  * @internal
4342
- */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, getVertexBufferData, getBlendShapeData, getIndexBufferData, keepMeshData) {
4288
+ */ GLTFMeshParser1._parseMeshFromGLTFPrimitive = function _parseMeshFromGLTFPrimitive(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, gltf, keepMeshData) {
4343
4289
  var _loop = function(attribute) {
4344
4290
  var accessor = accessors[attributes[attribute]];
4345
4291
  var promise = GLTFUtils.getAccessorBuffer(context, gltf.bufferViews, accessor).then(function(accessorBuffer) {
@@ -4434,61 +4380,68 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
4434
4380
  }
4435
4381
  // BlendShapes
4436
4382
  if (targets) {
4437
- promises.push(exports.GLTFMeshParser._createBlendShape(mesh, meshRestoreInfo, gltfMesh, accessors, targets, getBlendShapeData));
4383
+ promises.push(exports.GLTFMeshParser._createBlendShape(context, mesh, meshRestoreInfo, gltfMesh, gltfPrimitive, targets));
4438
4384
  }
4439
4385
  return Promise.all(promises).then(function() {
4440
4386
  mesh.uploadData(!keepMeshData);
4441
- return Promise.resolve(mesh);
4387
+ return mesh;
4442
4388
  });
4443
4389
  });
4444
4390
  };
4391
+ GLTFMeshParser1._getBlendShapeData = function _getBlendShapeData(context, glTF, accessor) {
4392
+ return GLTFUtils.getAccessorBuffer(context, glTF.bufferViews, accessor).then(function(bufferInfo) {
4393
+ var buffer = bufferInfo.data;
4394
+ var _accessor_byteOffset;
4395
+ var byteOffset = bufferInfo.interleaved ? ((_accessor_byteOffset = accessor.byteOffset) != null ? _accessor_byteOffset : 0) % bufferInfo.stride : 0;
4396
+ var count = accessor.count, normalized = accessor.normalized, componentType = accessor.componentType;
4397
+ var vertices = GLTFUtils.bufferToVector3Array(buffer, byteOffset, count, normalized, componentType);
4398
+ var restoreInfo = new BlendShapeDataRestoreInfo(bufferInfo.restoreInfo, byteOffset, count, normalized, componentType);
4399
+ return {
4400
+ vertices: vertices,
4401
+ restoreInfo: restoreInfo
4402
+ };
4403
+ });
4404
+ };
4445
4405
  /**
4446
4406
  * @internal
4447
- */ GLTFMeshParser1._createBlendShape = function _createBlendShape(mesh, meshRestoreInfo, glTFMesh, accessors, glTFTargets, getBlendShapeData) {
4448
- var _loop = function(i, n) {
4407
+ */ GLTFMeshParser1._createBlendShape = function _createBlendShape(context, mesh, meshRestoreInfo, glTFMesh, gltfPrimitive, glTFTargets) {
4408
+ var _this = this, _loop = function(i) {
4409
+ var blendShapeData = {};
4410
+ blendShapeCollection[i] = blendShapeData;
4449
4411
  var name = blendShapeNames ? blendShapeNames[i] : "blendShape" + i;
4412
+ var targets = gltfPrimitive.targets[i];
4413
+ var normalTarget = targets["NORMAL"];
4414
+ var tangentTarget = targets["TANGENT"];
4415
+ var hasNormal = normalTarget !== undefined;
4416
+ var hasTangent = tangentTarget !== undefined;
4450
4417
  var promise = Promise.all([
4451
- getBlendShapeData("POSITION", i),
4452
- getBlendShapeData("NORMAL", i),
4453
- getBlendShapeData("TANGENT", i)
4454
- ]).then(function(infos) {
4455
- var posBufferInfo = infos[0];
4456
- var norBufferInfo = infos[1];
4457
- var tanBufferInfo = infos[2];
4458
- var target = glTFTargets[i];
4459
- var posAccessor;
4460
- var norAccessor;
4461
- var tanAccessor;
4462
- var positions = null;
4463
- if (posBufferInfo) {
4464
- posAccessor = accessors[target["POSITION"]];
4465
- var _posAccessor_byteOffset;
4466
- positions = GLTFUtils.bufferToVector3Array(posBufferInfo.data, posBufferInfo.stride, (_posAccessor_byteOffset = posAccessor.byteOffset) != null ? _posAccessor_byteOffset : 0, posAccessor.count);
4467
- }
4468
- var normals = null;
4469
- if (norBufferInfo) {
4470
- norAccessor = accessors[target["NORMAL"]];
4471
- var _norAccessor_byteOffset;
4472
- normals = GLTFUtils.bufferToVector3Array(norBufferInfo.data, norBufferInfo.stride, (_norAccessor_byteOffset = norAccessor.byteOffset) != null ? _norAccessor_byteOffset : 0, norAccessor.count);
4473
- }
4474
- var tangents = null;
4475
- if (tanBufferInfo) {
4476
- tanAccessor = accessors[target["NORMAL"]];
4477
- var _tanAccessor_byteOffset;
4478
- tangents = GLTFUtils.bufferToVector3Array(tanBufferInfo.data, tanBufferInfo.stride, (_tanAccessor_byteOffset = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset : 0, tanAccessor.count);
4479
- }
4418
+ _this._getBlendShapeData(context, glTF, accessors[targets["POSITION"]]),
4419
+ hasNormal ? _this._getBlendShapeData(context, glTF, accessors[normalTarget]) : null,
4420
+ hasTangent ? _this._getBlendShapeData(context, glTF, accessors[tangentTarget]) : null
4421
+ ]).then(function(vertices) {
4422
+ var _tangentData;
4423
+ var positionData = vertices[0], normalData = vertices[1], tangentData = vertices[2];
4480
4424
  var blendShape = new miniprogram.BlendShape(name);
4481
- blendShape.addFrame(1.0, positions, normals, tangents);
4482
- mesh.addBlendShape(blendShape);
4483
- var _posAccessor_byteOffset1, _norAccessor_byteOffset1, _tanAccessor_byteOffset1;
4484
- meshRestoreInfo.blendShapes.push(new BlendShapeRestoreInfo(blendShape, new BlendShapeDataRestoreInfo(posBufferInfo.restoreInfo, posBufferInfo.stride, (_posAccessor_byteOffset1 = posAccessor.byteOffset) != null ? _posAccessor_byteOffset1 : 0, posAccessor.count), norBufferInfo ? new BlendShapeDataRestoreInfo(norBufferInfo.restoreInfo, norBufferInfo.stride, (_norAccessor_byteOffset1 = norAccessor.byteOffset) != null ? _norAccessor_byteOffset1 : 0, norAccessor.count) : null, tanBufferInfo ? new BlendShapeDataRestoreInfo(tanBufferInfo.restoreInfo, tanBufferInfo.stride, (_tanAccessor_byteOffset1 = tanAccessor.byteOffset) != null ? _tanAccessor_byteOffset1 : 0, tanAccessor.count) : null));
4425
+ blendShape.addFrame(1.0, positionData.vertices, hasNormal ? normalData.vertices : null, hasTangent ? tangentData.vertices : null);
4426
+ blendShapeData.blendShape = blendShape;
4427
+ blendShapeData.restoreInfo = new BlendShapeRestoreInfo(blendShape, positionData.restoreInfo, hasNormal ? normalData.restoreInfo : null, hasTangent ? (_tangentData = tangentData) == null ? void 0 : _tangentData.restoreInfo : null);
4485
4428
  });
4486
4429
  promises.push(promise);
4487
4430
  };
4431
+ var glTF = context.glTF;
4432
+ var accessors = glTF.accessors;
4488
4433
  var blendShapeNames = glTFMesh.extras ? glTFMesh.extras.targetNames : null;
4489
4434
  var promises = new Array();
4490
- for(var i = 0, n = glTFTargets.length; i < n; i++)_loop(i);
4491
- return Promise.all(promises);
4435
+ var blendShapeCount = glTFTargets.length;
4436
+ var blendShapeCollection = new Array(blendShapeCount);
4437
+ for(var i = 0; i < blendShapeCount; i++)_loop(i);
4438
+ return Promise.all(promises).then(function() {
4439
+ for(var _iterator = _create_for_of_iterator_helper_loose(blendShapeCollection), _step; !(_step = _iterator()).done;){
4440
+ var blendShape = _step.value;
4441
+ mesh.addBlendShape(blendShape.blendShape);
4442
+ meshRestoreInfo.blendShapes.push(blendShape.restoreInfo);
4443
+ }
4444
+ });
4492
4445
  };
4493
4446
  return GLTFMeshParser1;
4494
4447
  }(GLTFParser), function() {
@@ -4932,7 +4885,7 @@ var MeshoptDecoder = function() {
4932
4885
  return worker;
4933
4886
  };
4934
4887
  var initWorkers = function initWorkers(count) {
4935
- var source = "var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {})" + ".then(function(result) {instance = result.instance; instance.exports.__wasm_call_ctors();});" + "self.onmessage = workerProcess;" + decode.toString() + workerProcess.toString();
4888
+ var source = "var instance; var ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(unpack(wasm)) + "]), {})" + ".then(function(result) {instance = result.instance; instance.exports.__wasm_call_ctors();});\n" + "self.onmessage = workerProcess;\n" + 'function decode(fun, target, count, size, source, filter) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3;\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res == 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res != 0) {\n throw new Error("Malformed buffer data: " + res);\n }\n }\n' + 'function workerProcess(event) {\n ready.then(function () {\n const data = event.data;\n try {\n const target = new Uint8Array(data.count * data.size);\n decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);\n self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [target.buffer]);\n } catch (error) {\n self.postMessage({\n id: data.id,\n count: data.count,\n action: "reject",\n value: error\n });\n }\n });\n }';
4936
4889
  var blob = new engineMiniprogramAdapter.Blob([
4937
4890
  source
4938
4891
  ], {
@@ -4971,30 +4924,6 @@ var MeshoptDecoder = function() {
4971
4924
  ]);
4972
4925
  });
4973
4926
  };
4974
- var workerProcess = function workerProcess(event) {
4975
- ready.then(function() {
4976
- var data = event.data;
4977
- try {
4978
- var target = new Uint8Array(data.count * data.size);
4979
- decode(instance.exports[data.mode], target, data.count, data.size, data.source, instance.exports[data.filter]);
4980
- self.postMessage({
4981
- id: data.id,
4982
- count: data.count,
4983
- action: "resolve",
4984
- value: target
4985
- }, [
4986
- target.buffer
4987
- ]);
4988
- } catch (error) {
4989
- self.postMessage({
4990
- id: data.id,
4991
- count: data.count,
4992
- action: "reject",
4993
- value: error
4994
- });
4995
- }
4996
- });
4997
- };
4998
4927
  var wasm_base = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb";
4999
4928
  var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb";
5000
4929
  var wasmpack = new Uint8Array([
@@ -6278,7 +6207,7 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
6278
6207
  // parse ambient light
6279
6208
  var ambient = data.scene.ambient;
6280
6209
  if (ambient) {
6281
- var useCustomAmbient = ambient.specularMode === "Custom";
6210
+ var useCustomAmbient = ambient.specularMode === exports.SpecularMode.Custom;
6282
6211
  var useSH = ambient.diffuseMode === miniprogram.DiffuseMode.SphericalHarmonics;
6283
6212
  scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
6284
6213
  scene.ambientLight.specularIntensity = ambient.specularIntensity;
@@ -6306,6 +6235,7 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
6306
6235
  }));
6307
6236
  }
6308
6237
  }
6238
+ // parse background
6309
6239
  var background = data.scene.background;
6310
6240
  scene.background.mode = background.mode;
6311
6241
  switch(scene.background.mode){
@@ -6349,6 +6279,17 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
6349
6279
  var _shadow_shadowTwoCascadeSplits;
6350
6280
  scene.shadowTwoCascadeSplits = (_shadow_shadowTwoCascadeSplits = shadow.shadowTwoCascadeSplits) != null ? _shadow_shadowTwoCascadeSplits : scene.shadowTwoCascadeSplits;
6351
6281
  shadow.shadowFourCascadeSplits && scene.shadowFourCascadeSplits.copyFrom(shadow.shadowFourCascadeSplits);
6282
+ var _shadow_shadowFadeBorder;
6283
+ scene.shadowFadeBorder = (_shadow_shadowFadeBorder = shadow.shadowFadeBorder) != null ? _shadow_shadowFadeBorder : scene.shadowFadeBorder;
6284
+ }
6285
+ // parse fog
6286
+ var fog = data.scene.fog;
6287
+ if (fog) {
6288
+ if (fog.fogMode != undefined) scene.fogMode = fog.fogMode;
6289
+ if (fog.fogStart != undefined) scene.fogStart = fog.fogStart;
6290
+ if (fog.fogEnd != undefined) scene.fogEnd = fog.fogEnd;
6291
+ if (fog.fogDensity != undefined) scene.fogDensity = fog.fogDensity;
6292
+ if (fog.fogColor != undefined) scene.fogColor.copyFrom(fog.fogColor);
6352
6293
  }
6353
6294
  return Promise.all(promises).then(function() {
6354
6295
  resolve(scene);