@hztxi/cesium-engine 25.0.6 → 26.2.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.
Files changed (484) hide show
  1. package/Build/Workers/chunk-2GJAWJJT.js +1344 -0
  2. package/Build/Workers/chunk-2J2VS5RI.js +288 -0
  3. package/Build/Workers/chunk-2NCNUVAT.js +56 -0
  4. package/Build/Workers/chunk-2ZYRUVVU.js +301 -0
  5. package/Build/Workers/chunk-36IU7N4V.js +1284 -0
  6. package/Build/Workers/chunk-375SHKGW.js +44 -0
  7. package/Build/Workers/chunk-3BDLET5S.js +198 -0
  8. package/Build/Workers/chunk-3PRHI4KX.js +241 -0
  9. package/Build/Workers/chunk-3R6E2SH4.js +672 -0
  10. package/Build/Workers/chunk-3ZKKXEXL.js +415 -0
  11. package/Build/Workers/chunk-47KVKPTO.js +415 -0
  12. package/Build/Workers/chunk-4N227IPR.js +973 -0
  13. package/Build/Workers/chunk-4P6OAPBM.js +97 -0
  14. package/Build/Workers/chunk-4ZOLEPZK.js +519 -0
  15. package/Build/Workers/chunk-5EF3WWQG.js +352 -0
  16. package/Build/Workers/chunk-5FYUSABU.js +945 -0
  17. package/Build/Workers/chunk-5I76476T.js +288 -0
  18. package/Build/Workers/chunk-5PBZKBAP.js +511 -0
  19. package/Build/Workers/chunk-5RVAAW26.js +82 -0
  20. package/Build/Workers/chunk-5VWK76PO.js +511 -0
  21. package/Build/Workers/chunk-5WU37CUJ.js +630 -0
  22. package/Build/Workers/chunk-6EBDN5WS.js +97 -0
  23. package/Build/Workers/chunk-75HIWCEV.js +301 -0
  24. package/Build/Workers/chunk-77DBX23X.js +455 -0
  25. package/Build/Workers/chunk-7AMVPXZY.js +1992 -0
  26. package/Build/Workers/chunk-7BMDD6SM.js +124 -0
  27. package/Build/Workers/chunk-7GQOWCSN.js +959 -0
  28. package/Build/Workers/chunk-7J2ONMKC.js +198 -0
  29. package/Build/Workers/chunk-7MHUHXZZ.js +219 -0
  30. package/Build/Workers/chunk-7MQPHOAS.js +455 -0
  31. package/Build/Workers/chunk-7NJ5O7TP.js +387 -0
  32. package/Build/Workers/chunk-7OME2OKM.js +171 -0
  33. package/Build/Workers/chunk-7Y642MCO.js +352 -0
  34. package/Build/Workers/chunk-7ZFKBLUE.js +1054 -0
  35. package/Build/Workers/chunk-A2BROW3D.js +352 -0
  36. package/Build/Workers/chunk-A7LGY5XS.js +140 -0
  37. package/Build/Workers/chunk-AN2NVYL6.js +1483 -0
  38. package/Build/Workers/chunk-B4XOVZGA.js +476 -0
  39. package/Build/Workers/chunk-B7PT2VL5.js +630 -0
  40. package/Build/Workers/chunk-C6XQGBPV.js +476 -0
  41. package/Build/Workers/chunk-CAEC5DA2.js +57 -0
  42. package/Build/Workers/chunk-CBCOHH5O.js +837 -0
  43. package/Build/Workers/chunk-CDLPLYLV.js +1287 -0
  44. package/Build/Workers/chunk-CEKCKPFN.js +368 -0
  45. package/Build/Workers/chunk-CEMXKBQO.js +1800 -0
  46. package/Build/Workers/chunk-CHMDKP5L.js +2342 -0
  47. package/Build/Workers/chunk-CKW3STKA.js +1067 -0
  48. package/Build/Workers/chunk-CV5RICKT.js +1992 -0
  49. package/Build/Workers/chunk-CWGB3D4Z.js +257 -0
  50. package/Build/Workers/chunk-DBWSISJT.js +56 -0
  51. package/Build/Workers/chunk-DQEUGBGA.js +2719 -0
  52. package/Build/Workers/chunk-DSBSPPPJ.js +1344 -0
  53. package/Build/Workers/chunk-DSGLDRTI.js +278 -0
  54. package/Build/Workers/chunk-DUBE5G2H.js +497 -0
  55. package/Build/Workers/chunk-DXD7OPSP.js +1992 -0
  56. package/Build/Workers/chunk-DXECZBSA.js +368 -0
  57. package/Build/Workers/chunk-DZIRO6ZK.js +682 -0
  58. package/Build/Workers/chunk-E4CRPGX5.js +140 -0
  59. package/Build/Workers/chunk-E4IVMEBH.js +52 -0
  60. package/Build/Workers/chunk-E4PBNWWK.js +58 -0
  61. package/Build/Workers/chunk-E5MWOMVC.js +57 -0
  62. package/Build/Workers/chunk-ECN3VUMA.js +73 -0
  63. package/Build/Workers/chunk-ECSKVHUB.js +476 -0
  64. package/Build/Workers/chunk-EE3XBOQI.js +1483 -0
  65. package/Build/Workers/chunk-EHA2ZDPZ.js +415 -0
  66. package/Build/Workers/chunk-EKEKPAJF.js +454 -0
  67. package/Build/Workers/chunk-EL4B5CSQ.js +162 -0
  68. package/Build/Workers/chunk-EOHKUXPX.js +198 -0
  69. package/Build/Workers/chunk-ERENMHG2.js +754 -0
  70. package/Build/Workers/chunk-ESQGFRLZ.js +163 -0
  71. package/Build/Workers/chunk-FAYBQGKO.js +219 -0
  72. package/Build/Workers/chunk-FGCXPEZM.js +3201 -0
  73. package/Build/Workers/chunk-FHCRXPA6.js +44 -0
  74. package/Build/Workers/chunk-FQ42MT7M.js +58 -0
  75. package/Build/Workers/chunk-FQDYQG4P.js +1284 -0
  76. package/Build/Workers/chunk-FTCBY5HH.js +138 -0
  77. package/Build/Workers/chunk-FV4OWDV4.js +9230 -0
  78. package/Build/Workers/chunk-FYRNNQSL.js +280 -0
  79. package/Build/Workers/chunk-GI5RWJAY.js +101 -0
  80. package/Build/Workers/chunk-GNLMSDRO.js +945 -0
  81. package/Build/Workers/chunk-GVUJ6O3R.js +73 -0
  82. package/Build/Workers/chunk-HCGU7OCG.js +97 -0
  83. package/Build/Workers/chunk-HRIPVWSC.js +58 -0
  84. package/Build/Workers/chunk-IC3BR6SC.js +102 -0
  85. package/Build/Workers/chunk-IU3YAYPT.js +1344 -0
  86. package/Build/Workers/chunk-J7MZR7B2.js +1483 -0
  87. package/Build/Workers/chunk-JMF4ATAS.js +3794 -0
  88. package/Build/Workers/chunk-KEJKMITY.js +82 -0
  89. package/Build/Workers/chunk-KSIEJYNL.js +3822 -0
  90. package/Build/Workers/chunk-KT3GG7AW.js +754 -0
  91. package/Build/Workers/chunk-KW2QZDUS.js +147 -0
  92. package/Build/Workers/chunk-KYCEM22I.js +1800 -0
  93. package/Build/Workers/chunk-L6B5XPBL.js +73 -0
  94. package/Build/Workers/chunk-LGJXN2VP.js +352 -0
  95. package/Build/Workers/chunk-LJTQW46H.js +57 -0
  96. package/Build/Workers/chunk-LMQGYJME.js +672 -0
  97. package/Build/Workers/chunk-LOBYJQA4.js +76 -0
  98. package/Build/Workers/chunk-LOF32O7F.js +163 -0
  99. package/Build/Workers/chunk-LOTIJA7D.js +124 -0
  100. package/Build/Workers/chunk-LY2UG3HV.js +38 -0
  101. package/Build/Workers/chunk-M7Z3MPAX.js +973 -0
  102. package/Build/Workers/chunk-MHNLTQHO.js +3201 -0
  103. package/Build/Workers/chunk-ML7OMD72.js +2342 -0
  104. package/Build/Workers/chunk-NBTGXEMT.js +945 -0
  105. package/Build/Workers/chunk-NCPJBP24.js +140 -0
  106. package/Build/Workers/chunk-NFY5V6MR.js +102 -0
  107. package/Build/Workers/chunk-NQZC37F7.js +38 -0
  108. package/Build/Workers/chunk-O3X3D2Z3.js +352 -0
  109. package/Build/Workers/chunk-OBUIHPKF.js +352 -0
  110. package/Build/Workers/chunk-OYPSUED3.js +1067 -0
  111. package/Build/Workers/chunk-PAEWNYIV.js +138 -0
  112. package/Build/Workers/chunk-PANJ7YH6.js +102 -0
  113. package/Build/Workers/chunk-PCL3Y7H5.js +82 -0
  114. package/Build/Workers/chunk-PIIUGRQD.js +387 -0
  115. package/Build/Workers/chunk-POKD22OT.js +2719 -0
  116. package/Build/Workers/chunk-PQMA7MFS.js +9237 -0
  117. package/Build/Workers/chunk-PURIPUSY.js +682 -0
  118. package/Build/Workers/chunk-QIOOTLWN.js +56 -0
  119. package/Build/Workers/chunk-QQZPPXY4.js +3822 -0
  120. package/Build/Workers/chunk-QUPRALOD.js +101 -0
  121. package/Build/Workers/chunk-QXLQLGL2.js +1067 -0
  122. package/Build/Workers/chunk-RBEVHHXK.js +3201 -0
  123. package/Build/Workers/chunk-RC4YC3VU.js +278 -0
  124. package/Build/Workers/chunk-RGNNWVR6.js +171 -0
  125. package/Build/Workers/chunk-RHO5HV52.js +305 -0
  126. package/Build/Workers/chunk-SBBIEHYT.js +44 -0
  127. package/Build/Workers/chunk-SVCZUP5R.js +837 -0
  128. package/Build/Workers/chunk-SWVZTU6X.js +305 -0
  129. package/Build/Workers/chunk-T3EUPM5A.js +454 -0
  130. package/Build/Workers/chunk-TA6IU2XL.js +171 -0
  131. package/Build/Workers/chunk-TBHW5UME.js +973 -0
  132. package/Build/Workers/chunk-TLSGD5TR.js +280 -0
  133. package/Build/Workers/chunk-TOXDLWKZ.js +368 -0
  134. package/Build/Workers/chunk-TPOX6IOR.js +1054 -0
  135. package/Build/Workers/chunk-TZBM6TAB.js +124 -0
  136. package/Build/Workers/chunk-U2OY6MX6.js +398 -0
  137. package/Build/Workers/chunk-UCY4B5EV.js +288 -0
  138. package/Build/Workers/chunk-ULNBTI6R.js +138 -0
  139. package/Build/Workers/chunk-UMUS2AQQ.js +398 -0
  140. package/Build/Workers/chunk-UZ7GTP2L.js +162 -0
  141. package/Build/Workers/chunk-V52FEPCV.js +754 -0
  142. package/Build/Workers/chunk-VBEXZBG5.js +147 -0
  143. package/Build/Workers/chunk-VC76B6GM.js +959 -0
  144. package/Build/Workers/chunk-VCUOYHWC.js +519 -0
  145. package/Build/Workers/chunk-VJIL5H6K.js +2719 -0
  146. package/Build/Workers/chunk-VMF7KOGY.js +162 -0
  147. package/Build/Workers/chunk-W3C7OHXF.js +387 -0
  148. package/Build/Workers/chunk-W5OCKMPJ.js +101 -0
  149. package/Build/Workers/chunk-WB5GWYDP.js +455 -0
  150. package/Build/Workers/chunk-WN6MAL25.js +682 -0
  151. package/Build/Workers/chunk-WTR7KMQA.js +693 -0
  152. package/Build/Workers/chunk-WTTFMU3P.js +241 -0
  153. package/Build/Workers/chunk-WULONJZC.js +1800 -0
  154. package/Build/Workers/chunk-WZPMAVTV.js +511 -0
  155. package/Build/Workers/chunk-XHT5SVP4.js +52 -0
  156. package/Build/Workers/chunk-XITBARMZ.js +2342 -0
  157. package/Build/Workers/chunk-XLQZNQ4Z.js +163 -0
  158. package/Build/Workers/chunk-XZ6HDXKM.js +76 -0
  159. package/Build/Workers/chunk-Y7KVUJEB.js +219 -0
  160. package/Build/Workers/chunk-Y7NDFEQ3.js +398 -0
  161. package/Build/Workers/chunk-YBBQDYX2.js +301 -0
  162. package/Build/Workers/chunk-YHPYPVAB.js +837 -0
  163. package/Build/Workers/chunk-YNKK6BXY.js +454 -0
  164. package/Build/Workers/chunk-YRAJ74HR.js +305 -0
  165. package/Build/Workers/chunk-YULTZK5O.js +147 -0
  166. package/Build/Workers/chunk-YUNQYP3Z.js +9237 -0
  167. package/Build/Workers/chunk-Z6JV4DZG.js +1046 -0
  168. package/Build/Workers/chunk-Z7BONRW2.js +241 -0
  169. package/Build/Workers/chunk-ZK2R3DEJ.js +1054 -0
  170. package/Build/Workers/chunk-ZTK5EBUI.js +76 -0
  171. package/Build/Workers/chunk-ZZPDORJK.js +56 -0
  172. package/Build/Workers/combineGeometry.js +24 -24
  173. package/Build/Workers/createBoxGeometry.js +18 -18
  174. package/Build/Workers/createBoxOutlineGeometry.js +18 -18
  175. package/Build/Workers/createCircleGeometry.js +26 -26
  176. package/Build/Workers/createCircleOutlineGeometry.js +19 -19
  177. package/Build/Workers/createCoplanarPolygonGeometry.js +39 -39
  178. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +33 -33
  179. package/Build/Workers/createCorridorGeometry.js +36 -37
  180. package/Build/Workers/createCorridorOutlineGeometry.js +34 -35
  181. package/Build/Workers/createCylinderGeometry.js +20 -20
  182. package/Build/Workers/createCylinderOutlineGeometry.js +20 -20
  183. package/Build/Workers/createEllipseGeometry.js +26 -26
  184. package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
  185. package/Build/Workers/createEllipsoidGeometry.js +19 -19
  186. package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
  187. package/Build/Workers/createFrustumGeometry.js +18 -18
  188. package/Build/Workers/createFrustumOutlineGeometry.js +20 -20
  189. package/Build/Workers/createGeometry.js +25 -24
  190. package/Build/Workers/createGroundPolylineGeometry.js +98 -34
  191. package/Build/Workers/createMvtTile.js +111 -19
  192. package/Build/Workers/createPlaneGeometry.js +18 -18
  193. package/Build/Workers/createPlaneOutlineGeometry.js +17 -17
  194. package/Build/Workers/createPolygonGeometry.js +36 -36
  195. package/Build/Workers/createPolygonOutlineGeometry.js +33 -33
  196. package/Build/Workers/createPolylineGeometry.js +28 -28
  197. package/Build/Workers/createPolylineVolumeGeometry.js +38 -36
  198. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +32 -31
  199. package/Build/Workers/createRectangleGeometry.js +29 -29
  200. package/Build/Workers/createRectangleOutlineGeometry.js +23 -23
  201. package/Build/Workers/createSimplePolylineGeometry.js +26 -26
  202. package/Build/Workers/createSphereGeometry.js +19 -19
  203. package/Build/Workers/createSphereOutlineGeometry.js +18 -18
  204. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  205. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  206. package/Build/Workers/createVectorTileGeometries.js +24 -24
  207. package/Build/Workers/createVectorTilePoints.js +13 -13
  208. package/Build/Workers/createVectorTilePolygons.js +22 -22
  209. package/Build/Workers/createVectorTilePolylines.js +14 -14
  210. package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +26 -26
  211. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +23 -23
  212. package/Build/Workers/createVerticesFromHeightmap.js +23 -23
  213. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +21 -21
  214. package/Build/Workers/createWallGeometry.js +26 -26
  215. package/Build/Workers/createWallOutlineGeometry.js +26 -26
  216. package/Build/Workers/decodeDraco.js +10 -10
  217. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +993 -2334
  218. package/Build/Workers/decodeI3S.js +10 -10
  219. package/Build/Workers/gaussianSplatSorter.js +4 -4
  220. package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
  221. package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
  222. package/Build/Workers/transcodeKTX2.js +6 -6
  223. package/Build/Workers/transferTypedArrayTest.js +1 -1
  224. package/Build/Workers/upsampleQuantizedTerrainMesh.js +23 -23
  225. package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +26 -26
  226. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +1 -5
  227. package/Source/Core/BoundingRectangle.js +6 -8
  228. package/Source/Core/BoundingSphere.js +0 -3
  229. package/Source/Core/Cartesian2.js +1 -1
  230. package/Source/Core/Cartesian3.js +1 -1
  231. package/Source/Core/Cartesian4.js +1 -1
  232. package/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js +3 -4
  233. package/Source/Core/Color.js +1 -0
  234. package/Source/Core/ComponentDatatype.js +35 -0
  235. package/Source/Core/CoplanarPolygonGeometry.js +2 -2
  236. package/Source/Core/CorridorGeometry.js +2 -4
  237. package/Source/Core/CorridorOutlineGeometry.js +1 -3
  238. package/Source/Core/EarthOrientationParameters.js +2 -2
  239. package/Source/Core/EllipseGeometryLibrary.js +2 -2
  240. package/Source/Core/EllipsoidGeodesic.js +3 -3
  241. package/Source/Core/EllipsoidRhumbLine.js +1 -1
  242. package/Source/Core/GroundPolylineGeometry.js +99 -4
  243. package/Source/Core/Heap.js +1 -1
  244. package/Source/Core/HermitePolynomialApproximation.js +215 -179
  245. package/Source/Core/InterpolationAlgorithm.js +58 -50
  246. package/Source/Core/Ion.js +1 -1
  247. package/Source/Core/JulianDate.js +1 -1
  248. package/Source/Core/LagrangePolynomialApproximation.js +55 -52
  249. package/Source/Core/LinearApproximation.js +69 -66
  250. package/Source/Core/MapProjection.js +1 -0
  251. package/Source/Core/Math.js +59 -0
  252. package/Source/Core/Matrix2.js +3 -3
  253. package/Source/Core/Matrix3.js +3 -3
  254. package/Source/Core/Matrix4.js +1 -1
  255. package/Source/Core/OrthographicFrustum.js +1 -1
  256. package/Source/Core/PerspectiveFrustum.js +1 -1
  257. package/Source/Core/PolygonGeometry.js +2 -2
  258. package/Source/Core/PolygonGeometryLibrary.js +1 -1
  259. package/Source/Core/PolygonOutlineGeometry.js +1 -1
  260. package/Source/Core/PolylineGeometry.js +1 -1
  261. package/Source/Core/PolylinePipeline.js +9 -2
  262. package/Source/Core/PolylineVolumeGeometryLibrary.js +1 -1
  263. package/Source/Core/Rectangle.js +7 -1
  264. package/Source/Core/RectangleOutlineGeometry.js +1 -1
  265. package/Source/Core/Resource.js +1 -1
  266. package/Source/Core/ScreenSpaceEventHandler.js +51 -41
  267. package/Source/Core/SimplePolylineGeometry.js +1 -1
  268. package/Source/Core/TerrainEncoding.js +2 -2
  269. package/Source/Core/TerrainMesh.js +3 -3
  270. package/Source/Core/TerrainPicker.js +180 -168
  271. package/Source/Core/TimeIntervalCollection.js +1 -3
  272. package/Source/Core/Tipsify.js +1 -1
  273. package/Source/Core/Transforms.js +5 -1
  274. package/Source/Core/VectorPipeline.js +1117 -0
  275. package/Source/Core/VectorProvider.js +429 -0
  276. package/Source/Core/WallOutlineGeometry.js +1 -1
  277. package/Source/Core/createColorRamp.js +37 -0
  278. package/Source/Core/getTimestamp.js +4 -2
  279. package/Source/Core/globalTypes.js +25 -0
  280. package/Source/Core/writeTextToCanvas.js +1 -0
  281. package/Source/DataSources/CompositeEntityCollection.js +0 -1
  282. package/Source/DataSources/CzmlDataSource.js +14 -0
  283. package/Source/DataSources/DataSourceDisplay.js +1 -1
  284. package/Source/DataSources/GeoJsonDataSource.js +0 -1
  285. package/Source/DataSources/GeometryVisualizer.js +1 -1
  286. package/Source/DataSources/KmlDataSource.js +529 -557
  287. package/Source/DataSources/PathGraphics.js +8 -1
  288. package/Source/DataSources/PathMode.js +27 -0
  289. package/Source/DataSources/PathVisualizer.js +298 -1
  290. package/Source/DataSources/PolylineGeometryUpdater.js +125 -7
  291. package/Source/DataSources/PolylineVisualizer.js +1 -1
  292. package/Source/DataSources/StaticOutlineGeometryBatch.js +1 -1
  293. package/Source/Renderer/AutomaticUniforms.js +23 -0
  294. package/Source/Renderer/Context.js +9 -3
  295. package/Source/Renderer/DrawCommand.js +22 -0
  296. package/Source/Renderer/Framebuffer.js +4 -0
  297. package/Source/Renderer/Pass.js +11 -9
  298. package/Source/Renderer/Texture.js +12 -1
  299. package/Source/Renderer/UniformState.js +7 -0
  300. package/Source/Renderer/VertexArray.js +1 -1
  301. package/Source/Renderer/createUniform.js +346 -239
  302. package/Source/Renderer/createUniformArray.js +494 -381
  303. package/Source/Scene/ArcGisMapServerImageryProvider.js +0 -5
  304. package/Source/Scene/ArcGisMapService.js +1 -1
  305. package/Source/Scene/Billboard.js +2 -1
  306. package/Source/Scene/BillboardCollection.js +15 -5
  307. package/Source/Scene/BillboardTexture.js +5 -3
  308. package/Source/Scene/BufferPointCollection.js +11 -1
  309. package/Source/Scene/BufferPolygonCollection.js +26 -0
  310. package/Source/Scene/BufferPolylineCollection.js +2 -0
  311. package/Source/Scene/BufferPrimitiveCollection.js +105 -32
  312. package/Source/Scene/Camera.js +137 -8
  313. package/Source/Scene/CameraEventAggregator.js +30 -18
  314. package/Source/Scene/CameraFlightPath.js +17 -0
  315. package/Source/Scene/Cesium3DTile.js +102 -4
  316. package/Source/Scene/Cesium3DTileContent.js +195 -254
  317. package/Source/Scene/Cesium3DTileContentFactory.js +10 -2
  318. package/Source/Scene/Cesium3DTileOptimizations.js +4 -6
  319. package/Source/Scene/Cesium3DTileStyle.js +40 -0
  320. package/Source/Scene/Cesium3DTileset.js +213 -8
  321. package/Source/Scene/Cesium3DTilesetTraversal.js +14 -0
  322. package/Source/Scene/ClippingPlaneCollection.js +4 -4
  323. package/Source/Scene/ClippingPolygon.js +2 -0
  324. package/Source/Scene/ClippingPolygonCollection.js +2 -2
  325. package/Source/Scene/ColumbusWorlds.js +190 -0
  326. package/Source/Scene/Composite3DTileContent.js +254 -292
  327. package/Source/Scene/Controllers/Controller.js +63 -0
  328. package/Source/Scene/Controllers/ControllerHost.js +78 -0
  329. package/Source/Scene/Controllers/HybridScreenSpacePanCameraController.js +106 -0
  330. package/Source/Scene/Controllers/MouseButton.js +32 -0
  331. package/Source/Scene/Controllers/ScreenSpaceElevatorCameraController.js +295 -0
  332. package/Source/Scene/Controllers/ScreenSpaceInputBindings.js +154 -0
  333. package/Source/Scene/Controllers/ScreenSpaceMapCameraController.js +310 -0
  334. package/Source/Scene/Controllers/ScreenSpaceTiltOrbitCameraController.js +642 -0
  335. package/Source/Scene/Controllers/ScreenSpaceZoomCameraController.js +431 -0
  336. package/Source/Scene/Controllers/defaultPickWorldPosition.js +84 -0
  337. package/Source/Scene/DerivedCommand.js +98 -0
  338. package/Source/Scene/EdgeDisplayMode.js +50 -0
  339. package/Source/Scene/EdgeFramebuffer.js +1 -5
  340. package/Source/Scene/Empty3DTileContent.js +100 -132
  341. package/Source/Scene/Expression.js +6 -8
  342. package/Source/Scene/FrameState.js +27 -0
  343. package/Source/Scene/GaussianSplat3DTileContent.js +436 -478
  344. package/Source/Scene/GeoJsonPrimitive.js +874 -0
  345. package/Source/Scene/Geometry3DTileContent.js +151 -185
  346. package/Source/Scene/Globe.js +110 -22
  347. package/Source/Scene/GlobeDepth.js +243 -6
  348. package/Source/Scene/GlobeSurfaceShaderSet.js +637 -540
  349. package/Source/Scene/GlobeSurfaceTile.js +575 -398
  350. package/Source/Scene/GlobeSurfaceTileProvider.js +2289 -1842
  351. package/Source/Scene/GltfBufferViewLoader.js +3 -3
  352. package/Source/Scene/GltfLoader.js +146 -3
  353. package/Source/Scene/GltfLoaderUtil.js +20 -4
  354. package/Source/Scene/GltfPipeline/forEachTextureInMaterial.js +10 -0
  355. package/Source/Scene/GltfPipeline/removeUnusedElements.js +21 -11
  356. package/Source/Scene/GltfSpzLoader.js +1 -1
  357. package/Source/Scene/GltfVertexBufferLoader.js +6 -3
  358. package/Source/Scene/GroundPolylinePrimitive.js +2 -1
  359. package/Source/Scene/I3SDataProvider.js +1 -1
  360. package/Source/Scene/I3SLayer.js +1 -1
  361. package/Source/Scene/I3SNode.js +2 -2
  362. package/Source/Scene/ImageryLayer.js +2 -2
  363. package/Source/Scene/ImageryLayerCollection.js +190 -6
  364. package/Source/Scene/Implicit3DTileContent.js +192 -216
  365. package/Source/Scene/ImplicitTileCoordinates.js +17 -0
  366. package/Source/Scene/IonImageryProvider.js +1 -5
  367. package/Source/Scene/Label.js +4 -4
  368. package/Source/Scene/LabelCollection.js +4 -1
  369. package/Source/Scene/MVTDataProvider.js +555 -0
  370. package/Source/Scene/Material.js +1 -0
  371. package/Source/Scene/Model/B3dmLoader.js +1 -2
  372. package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +82 -312
  373. package/Source/Scene/Model/Extensions/Gpm/GltfGpmLoader.js +4 -0
  374. package/Source/Scene/Model/I3dmLoader.js +1 -1
  375. package/Source/Scene/Model/InstancingPipelineStage.js +4 -7
  376. package/Source/Scene/Model/MaterialPipelineStage.js +124 -1
  377. package/Source/Scene/Model/Model.js +45 -10
  378. package/Source/Scene/Model/Model3DTileContent.js +424 -458
  379. package/Source/Scene/Model/ModelClippingPlanesPipelineStage.js +28 -1
  380. package/Source/Scene/Model/ModelDrawCommand.js +180 -8
  381. package/Source/Scene/Model/ModelDrawCommands.js +4 -0
  382. package/Source/Scene/Model/ModelSceneGraph.js +21 -0
  383. package/Source/Scene/Model/ModelUtility.js +5 -0
  384. package/Source/Scene/Model/PickingPipelineStage.js +29 -0
  385. package/Source/Scene/Model/PrimitiveRenderResources.js +24 -0
  386. package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +645 -153
  387. package/Source/Scene/ModelComponents.js +112 -0
  388. package/Source/Scene/Multiple3DTileContent.js +291 -334
  389. package/Source/Scene/MvtLabelCandidates.js +295 -0
  390. package/Source/Scene/MvtLabelManager.js +1069 -0
  391. package/Source/Scene/Picking.js +19 -3
  392. package/Source/Scene/PlanarFillIdFramebuffer.js +172 -0
  393. package/Source/Scene/PntsParser.js +1 -1
  394. package/Source/Scene/Polyline.js +32 -5
  395. package/Source/Scene/PolylineCollection.js +39 -0
  396. package/Source/Scene/PostProcessStage.js +4 -2
  397. package/Source/Scene/Primitive.js +12 -13
  398. package/Source/Scene/PrimitivePipeline.js +158 -28
  399. package/Source/Scene/QuadtreePrimitive.js +3 -2
  400. package/Source/Scene/ResourceCache.js +7 -4
  401. package/Source/Scene/ResourceCacheKey.js +21 -18
  402. package/Source/Scene/Scene.js +655 -6
  403. package/Source/Scene/SceneTransforms.js +18 -0
  404. package/Source/Scene/ScreenSpaceCameraController.js +12 -3
  405. package/Source/Scene/ShadowMap.js +9 -3
  406. package/Source/Scene/ShadowMapShader.js +50 -2
  407. package/Source/Scene/SnapFramebuffer.js +121 -0
  408. package/Source/Scene/Snapping.js +184 -0
  409. package/Source/Scene/TerrainFillMesh.js +3 -2
  410. package/Source/Scene/Tileset3DTileContent.js +113 -146
  411. package/Source/Scene/UrlTemplate3DTilesDataProvider.js +543 -0
  412. package/Source/Scene/Vector3DTileContent.js +207 -237
  413. package/Source/Scene/VectorGltf3DTileContent.js +185 -45
  414. package/Source/Scene/View.js +10 -8
  415. package/Source/Scene/VoxelPrimitive.js +159 -175
  416. package/Source/Scene/VoxelProvider.js +64 -91
  417. package/Source/Scene/VoxelTraversal.js +1 -1
  418. package/Source/Scene/buildVectorGltfFromMVT.js +1208 -0
  419. package/Source/Scene/buildVoxelCustomShader.js +199 -0
  420. package/Source/Scene/createElevationBandMaterial.js +1 -1
  421. package/Source/Scene/decodeMVT.js +877 -0
  422. package/Source/Scene/findMeshoptExtension.js +23 -0
  423. package/Source/Scene/renderBufferPointCollection.js +114 -64
  424. package/Source/Scene/renderBufferPolygonCollection.js +245 -53
  425. package/Source/Scene/renderBufferPolylineCollection.js +271 -145
  426. package/Source/Shaders/BillboardCollectionVS.glsl +23 -25
  427. package/Source/Shaders/BillboardCollectionVS.js +23 -25
  428. package/Source/Shaders/BufferPointMaterialFS.glsl +1 -0
  429. package/Source/Shaders/BufferPointMaterialFS.js +1 -0
  430. package/Source/Shaders/BufferPointMaterialVS.glsl +19 -9
  431. package/Source/Shaders/BufferPointMaterialVS.js +20 -10
  432. package/Source/Shaders/BufferPolygonMaterialFS.glsl +13 -0
  433. package/Source/Shaders/BufferPolygonMaterialFS.js +13 -0
  434. package/Source/Shaders/BufferPolygonMaterialVS.glsl +22 -4
  435. package/Source/Shaders/BufferPolygonMaterialVS.js +23 -5
  436. package/Source/Shaders/BufferPolylineMaterialVS.glsl +16 -2
  437. package/Source/Shaders/BufferPolylineMaterialVS.js +17 -3
  438. package/Source/Shaders/Builtin/Constants/passCesium3DTile.glsl +1 -1
  439. package/Source/Shaders/Builtin/Constants/passCesium3DTile.js +1 -1
  440. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.glsl +1 -1
  441. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassification.js +1 -1
  442. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.glsl +1 -1
  443. package/Source/Shaders/Builtin/Constants/passCesium3DTileClassificationIgnoreShow.js +1 -1
  444. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.glsl +9 -0
  445. package/Source/Shaders/Builtin/Constants/passCesium3DTileEdgesDirect.js +11 -0
  446. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.glsl +9 -0
  447. package/Source/Shaders/Builtin/Constants/passCesium3DTilePlanarFillId.js +11 -0
  448. package/Source/Shaders/Builtin/Constants/passClassification.glsl +1 -1
  449. package/Source/Shaders/Builtin/Constants/passClassification.js +1 -1
  450. package/Source/Shaders/Builtin/Constants/passGaussianSplats.glsl +1 -1
  451. package/Source/Shaders/Builtin/Constants/passGaussianSplats.js +1 -1
  452. package/Source/Shaders/Builtin/Constants/passOpaque.glsl +1 -1
  453. package/Source/Shaders/Builtin/Constants/passOpaque.js +1 -1
  454. package/Source/Shaders/Builtin/Constants/passOverlay.glsl +1 -1
  455. package/Source/Shaders/Builtin/Constants/passOverlay.js +1 -1
  456. package/Source/Shaders/Builtin/Constants/passTranslucent.glsl +1 -1
  457. package/Source/Shaders/Builtin/Constants/passTranslucent.js +1 -1
  458. package/Source/Shaders/Builtin/Constants/passVoxels.glsl +1 -1
  459. package/Source/Shaders/Builtin/Constants/passVoxels.js +1 -1
  460. package/Source/Shaders/Builtin/CzmBuiltins.js +4 -0
  461. package/Source/Shaders/GlobeFS.glsl +10 -6
  462. package/Source/Shaders/GlobeFS.js +10 -6
  463. package/Source/Shaders/Materials/PolylineGlowMaterial.glsl +1 -1
  464. package/Source/Shaders/Materials/PolylineGlowMaterial.js +1 -1
  465. package/Source/Shaders/Model/EdgeVisibilityStageVS.glsl +0 -1
  466. package/Source/Shaders/Model/EdgeVisibilityStageVS.js +0 -1
  467. package/Source/Shaders/Model/MaterialStageFS.glsl +8 -2
  468. package/Source/Shaders/Model/MaterialStageFS.js +8 -2
  469. package/Source/Shaders/Model/ModelFS.glsl +105 -0
  470. package/Source/Shaders/Model/ModelFS.js +105 -0
  471. package/Source/Shaders/PolylineShadowVolumeFS.glsl +14 -0
  472. package/Source/Shaders/PolylineShadowVolumeFS.js +14 -0
  473. package/Source/Shaders/RestoreDepth.glsl +8 -0
  474. package/Source/Shaders/RestoreDepth.js +10 -0
  475. package/Source/Shaders/VectorCommon.glsl +178 -0
  476. package/Source/Shaders/VectorCommon.js +180 -0
  477. package/Source/ThirdParty/zip-module.wasm +0 -0
  478. package/Source/Widget/CesiumWidget.js +30 -0
  479. package/Source/Workers/createMvtTile.js +39 -0
  480. package/Source/Workers/decodeGoogleEarthEnterprisePacket.js +2 -2
  481. package/Source/Workers/incrementallyBuildTerrainPicker.js +2 -0
  482. package/index.d.ts +535 -1393
  483. package/index.js +125 -93
  484. package/package.json +13 -13
@@ -0,0 +1,3822 @@
1
+ /**
2
+ * @license
3
+ * Cesium - https://github.com/CesiumGS/cesium
4
+ * Version 1.144.0
5
+ *
6
+ * Copyright 2011-2022 Cesium Contributors
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ *
20
+ * Columbus View (Pat. Pend.)
21
+ *
22
+ * Portions licensed separately.
23
+ * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details.
24
+ */
25
+
26
+ import {
27
+ TerrainProvider_default
28
+ } from "./chunk-5EF3WWQG.js";
29
+ import {
30
+ EllipsoidalOccluder_default,
31
+ TerrainEncoding_default
32
+ } from "./chunk-KT3GG7AW.js";
33
+ import {
34
+ VerticalExaggeration_default
35
+ } from "./chunk-XZ6HDXKM.js";
36
+ import {
37
+ WebMercatorProjection_default
38
+ } from "./chunk-YULTZK5O.js";
39
+ import {
40
+ OrientedBoundingBox_default
41
+ } from "./chunk-CBCOHH5O.js";
42
+ import {
43
+ AttributeCompression_default
44
+ } from "./chunk-YNKK6BXY.js";
45
+ import {
46
+ AxisAlignedBoundingBox_default
47
+ } from "./chunk-VMF7KOGY.js";
48
+ import {
49
+ IntersectionTests_default,
50
+ Ray_default
51
+ } from "./chunk-IU3YAYPT.js";
52
+ import {
53
+ BoundingSphere_default,
54
+ Interval_default
55
+ } from "./chunk-FQDYQG4P.js";
56
+ import {
57
+ Event_default,
58
+ Rectangle_default,
59
+ Resource_default,
60
+ Transforms_default,
61
+ binarySearch_default,
62
+ buildModuleUrl_default,
63
+ isCrossOriginUrl_default,
64
+ require_URI
65
+ } from "./chunk-PQMA7MFS.js";
66
+ import {
67
+ Matrix4_default
68
+ } from "./chunk-FGCXPEZM.js";
69
+ import {
70
+ ComponentDatatype_default
71
+ } from "./chunk-DSGLDRTI.js";
72
+ import {
73
+ RuntimeError_default
74
+ } from "./chunk-FQ42MT7M.js";
75
+ import {
76
+ Cartesian2_default,
77
+ Cartographic_default,
78
+ Ellipsoid_default,
79
+ FeatureDetection_default
80
+ } from "./chunk-DXD7OPSP.js";
81
+ import {
82
+ Cartesian3_default,
83
+ Frozen_default,
84
+ Matrix3_default
85
+ } from "./chunk-ML7OMD72.js";
86
+ import {
87
+ Math_default
88
+ } from "./chunk-VCUOYHWC.js";
89
+ import {
90
+ Check_default,
91
+ DeveloperError_default
92
+ } from "./chunk-XLQZNQ4Z.js";
93
+ import {
94
+ __toESM,
95
+ defined_default
96
+ } from "./chunk-PCL3Y7H5.js";
97
+
98
+ // node_modules/.pnpm/meshoptimizer@1.2.0/node_modules/meshoptimizer/meshopt_encoder.js
99
+ var MeshoptEncoder = (function() {
100
+ var wasm = "b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiE8AdilveoveovrrwrrrDDoDrbqqbelve9Weiiviebeoweuecj:Gdkr:PlCo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxY9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVJ9V29VVbmE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9WbHa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbOK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbAl79IV9RbXDwebcekdKYq:zf8Adbk;wadhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;i:I:cjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:xjjjb8AdnaiTmbarc;adfadalz:wjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:xjjjb8Aarc;abfarc;adfalz:wjjjb8Aar9cb83iUar9cb83i8War9cb83iyar9cb83iaar9cb83iKar9cb83izar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzcbhHincdhOcbhAdnavci6mbar9cb83i;Ooar9cb83i;Goar9cb83i;yoar9cb83i;qoadaHfgoybbhCcbhXincbhwcbhQdninaoalfhLaoybbgKaC7aQVhQawcP0meaLhoaKhCawcefgwaXfai6mbkkcbhCarc;qofhwincwhYcwh8AdnaQaC93gocFeGgEcs0mbclh8AaEci0mbcdcbaEEh8Akdnaocw4cFeGgEcs0mbclhYaEci0mbcdcbaEEhYkaYa8AfhEawydbh3cwhYcwh8Adnaocz4cFeGg5cs0mbclh8Aa5ci0mbcdcba5Eh8AkaEa3fhEdnaocFFFFb0mbclhYaocFFF8F0mbcbcdaocjjjw6EhYkawaEa8AfaYfBdbawclfhwaCcefgCcw9hmbkaLhoaKhCaXczfgXai6mbkcbhocehwazhQinawaoaQydbarc;qofaocdtfydb6EhoaQclfhQawcefgwcw9hmbkaoclthAcihOkcbhEarc;qlfcbcjdz:xjjjb8AarcbBd;ilar9cb83i;aladh8Eaqh8Fakh3inarc;qlfadaEaEcb9h9Ral2falz:wjjjb8Aaia8Faia8F6EhadnaqaiaE9RaEaqfai6EgKcsfc9WGgoaK9nmbarc;qofaKfcbaoaK9Rz:xjjjb8AkadaEal2fhhcbhginagaAVcl4hXarc;alfagcdtfh8JaHh8Kcbh8Lina8LaHfhwdndndndndndndnagPlbedibkaKTmvahawfhoarc;qlfawfRbbhQarc;qofhwaahCinawaoRbbgYaQ9RgQcetaQcKtc8F91786bbawcefhwaoalfhoaYhQaEaCcufgC9hmbxvkkaKTmla8Kc9:Ghoa8LcitcwGh8Aarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhQarc;qofhwaahCinawa3aofRbbcwta8EaofRbbVgYaQ9RgQcetaQcztc8F917cFFiGa8A486bbaoalfhoawcefhwaYhQaEaCcufgC9hmbxlkkasa8Kc98GgQfhoa3aQfhYarc;qlfawc98GgQfRbbhCcwhwinaoRbbawtaCVhCaocefhoawcwfgwca9hmbxdkkaKTmdxekaKTmea8Lcith5ahaQfh8AcbhLina8ARbbhQcwhoaYhwinawRbbaotaQVhQawcefhwaocwfgoca9hmbkarc;qofaLfaQaC7aX93a5486bbaYalfhYa8Aalfh8AaQhCaLcefgLaK9hmbkka8Jydbh8AcbhLarc;qofhoincdhQcbhwinaQaoawfRbbcb9hfhQawcefgwcz9hmbkclhCcbhwinaCaoawfRbbcd0fhCawcefgwcz9hmbkcwhYcbhwinaYaoawfRbbcP0fhYawcefgwcz9hmbkaQaCaQaC6EgwaYawaY6Egwczawcz6Ea8Afh8AaoczfhoaLczfgLaK6mbka8Ja8ABdbka8Kcefh8Ka8Lcefg8Lcl9hmbkagcefggaO9hmbka8Eamfh8Ea8Faxfh8Fa3amfh3aEaxfgEai6mbkcbhocehwaPhQinawaoaQydbarc;alfaocdtfydb6EhoaQclfhQaOawcefgw9hmbkaraHcd4faAcdVaoaocdSE86bbaHclfgHal6mbkkabaefhgabcefhoalcd4g8McbaDEhkadcefh8Narc;abfceVhecbhmdndninaiam9nmearc;qofcbcjdz:xjjjb8Aagao9Rak6mdadamal2gwfhxcbhHa8Nawfhzaocbakz:xjjjbg8Fakfh3aqaiam9Ramaqfai6Egscsfgocl4cifcd4hOaoc9WGg8JThPindndndndndndndndndndnaDTmbaraHcd4fRbbgQciGPlbedlbkasTmdaxaHfhoarc;abfaHfRbbhQarc;qofhwashCinawaoRbbgYaQ9RgQcetaQcKtc8F91786bbawcefhwaoalfhoaYhQaCcufgCmbxikkasTmiaHcitcwGh8Aarc;abfaHceVfRbbcwtarc;abfaHc9:GgofRbbVhQaxaofhoarc;qofhwashCinawao8VbbgYaQ9RgQcetaQcztc8F917cFFiGa8A486bbawcefhwaoalfhoaYhQaCcufgCmbxikkaeaHc98Gg8Afhoaza8AfhYarc;abfa8AfRbbhCcwhwinaoRbbawtaCVhCaocefhoawcwfgwca9hmbkasTmdaQcl4hKaHcitcKGhEaxa8Afh8AcbhLina8ARbbhQcwhoaYhwinawRbbaotaQVhQawcefhwaocwfgoca9hmbkarc;qofaLfaQaC7aK93aE486bbaYalfhYa8Aalfh8AaQhCaLcefgLas9hmbkkaDmbcbhoxlka8JTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8J9pmdxbkkdnavmbcehoxikcbh8AaOhLaOhKinarc;qofa8Afgocwf8Pibhyao8Pibh8PcdhQcbhwinaQaoawfRbbcb9hfhQawcefgwcz9hmbkclhCcbhwinaCaoawfRbbcd0fhCawcefgwcz9hmbkcwhYcbhwinaYaoawfRbbcP0fhYawcefgwcz9hmbkaQaCaQaC6EgoaYaoaY6Egoczaocz6EaKfhKaocucbaya8P:e9cb9sEgwaoaw6EaLfhLa8Aczfg8Aa8J9pmdxbkka8FaHcd4fgoaoRbbcdaHcetcoGtV86bbxikdnaLas6mbaKas6mba8FaHcd4fgoaoRbbciaHcetcoGtV86bbaga39Ras6mra3arc;qofasz:wjjjbasfh3xikaLaK9phoka8FaHcd4fgwawRbbaoaHcetcoGtV86bbkaga39RaO6mla3cbaOz:xjjjbgaaOfhKdndna8JmbaPhoxekdnagaK9RcK9pmbaPhoxekaocdtc:q:G:cjbfcj:G:cjbaDEg3ydxghcetc;:FFFeGhAcuhEcuahtcu7cFeGh8Ecbh8Karc;qofhQinarc;qofa8KfhXczh8AdndndnahPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEh8AxekcbhoaAh8Aina8Aa8EaQaofRbb9nfh8Aaocefgocz9hmbkkcih5cbhYinczhwdndndna3aYcdtfydbgLPDbeeeeeeedekcucbaXcwf8PibaX8Pib:e9cb9sEhwxekaLcetc;:FFFeGhwcuaLtcu7cFeGhCcbhoinawaCaQaofRbb9nfhwaocefgocz9hmbkkdndnawa8A6mbaLaE9hmeawa8A9hmea3a5cdtfydbcwSmekaYh5awh8AkaYcefgYci9hmbkaaa8Kco4fgoaoRbba5a8Kci4coGtV86bbdndndna3a5cdtfydbgEPDdbbbbbbbebkdncwaE9Tg5TmbcuaEtcu7hwdndnaEceSmbcbh8LaQhXinaXhoa5hYcbhCinaoRbbg8AawcFeGgLa8AaL6EaCaEtVhCaocefhoaYcufgYmbkaKaC86bbaXa5fhXaKcefhKa8La5fg8Lcz6mbxdkkcbh8LaQhXinaXhoa5hYcbhCinaoRbbg8AawcFeGgLa8AaL6EaCcetVhCaocefhoaYcufgYmbkaKaC:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaXa5fhXaKcefhKa8La5fg8Lcz6mbkkcbhoinaKaQaofRbbgC86bbaKaCawcFeG9pfhKaocefgocz9hmbxikkdnaEceSmbinaKcb86bbaKcefhKxbkkinaKcb86bbaKcefhKxbkkaKaX8Pbw83bwaKaX8Pbb83bbaKczfhKka8Kczfg8Ka8J9pgomeaQczfhQagaK9RcK9pmbkkaoTmlaKh3aKTmlkaHcefgHal9hmbkarc;abfaxascufal2falz:wjjjb8Aasamfhma3hoa3mbkcbhwxdkdnagao9RakalfgwcKcaaDEgQawaQ0EgC9pmbcbhwxdkdnawaQ9pmbaocbaCaw9Rgwz:xjjjbawfhokaoarc;adfalz:wjjjbalfhodnaDTmbaoara8Mz:wjjjba8Mfhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;i:I:cjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;i:I:cjbk;HPeLu8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaeaici9UgocHf6mbabcbyd;m:I:cjbgrc;GeV86bbalc;abfcFecjez:xjjjb8Aal9cu83iUal9cu83i8Wal9cu83iyal9cu83iaal9cu83iKal9cu83izal9cu83iwal9cu83ibabaefc9WfhwabcefgDaofhednaiTmbcmcsarcb9kgqEhkcbhxcbhmcbhPcbhscbhzindnaeaw9nmbcbhvxikazcufhvadaPcdtfgHydbhOaHcwfydbhAaHclfydbhCcbhXdndndninalc;abfavcsGcitfgoydlhQdndndnaoydbgoaO9hmbaQaCSmekdnaoaC9hmbaQaA9hmbaXcefhXxekaoaA9hmeaQaO9hmeaXcdfhXkaXc870mdascufhvaHaXcdtgAcxGgoyd:4:G:cjbcdtfydbhQaHaoyd:0:G:cjbcdtfydbhCaHaoyd:W:G:cjbcdtfydbhOcbhodnindnalavcsGcdtfydbaQ9hmbaohXxdkcuhXavcufhvaocefgocz9hmbkkaxaQaxSgvaXce9iaXak9oVgoGfhxdndndncbcsavEaXaoEgvcs9hmbarce9imbaQaQamaQcefamSgvEgmcefSmecmcsavEhvkaDavaAc;WeGV86bbavcs9hmeaQam9Rgvcetavc8F917hvinaecbcjeavcje6EavcFbGV86bbaecefheavcr4gvmbkaQhmxvkcPhvaDaAcPV86bbaQhmkavTmiavak9omicdhocehXazhAxlkavcufhvaXclfgXc;ab9hmbkkdnaHcecdcbaAaxSEaCaxSEcdtgvyd:W:G:cjbcdtfydbgOTaHavyd:0:G:cjbcdtfydbgCceSGaHavyd:4:G:cjbcdtfydbgQcdSGaxcb9hGaqGgLce9hmbal9cu83iUal9cu83i8Wal9cu83iyal9cu83iaal9cu83iKal9cu83izal9cu83iwal9cu83ibcbhxkcbhXascufgvhodnindnalaocsGcdtfydbaC9hmbaXhAxdkcuhAaocufhoaXcefgXcz9hmbkkcbhodnindnalavcsGcdtfydbaQ9hmbaohXxdkcuhXavcufhvaocefgocz9hmbkkaxaOaxSgKfhHdndnaAcm0mbaAcefhAxekcbcsaCaHSgvEhAaHavfhHkdndnaXcm0mbaXcefhXxekcbcsaQaHSgvEhXaHavfhHkc9:cuaKEhYcbhvaXaAcltVg8AcFeGhodndndninavc;q:G:cjbfRbbaoSmeavcefgvcz9hmbxdkkaLaOax9havcm0VVmbaDavc;WeV86bbxekaDaY86bbaea8A86bbaecefhekdnaKmbaOam9Rgvcetavc8F917hvinaecbcjeavcje6EavcFbGV86bbaecefheavcr4gvmbkaOhmkdnaAcs9hmbaCam9Rgvcetavc8F917hvinaecbcjeavcje6EavcFbGV86bbaecefheavcr4gvmbkaChmkdnaXcs9hmbaQam9Rgvcetavc8F917hvinaecbcjeavcje6EavcFbGV86bbaecefheavcr4gvmbkaQhmkalascdtfaOBdbascefcsGhvdndnaAPzbeeeeeeeeeeeeeebekalavcdtfaCBdbascdfcsGhvkdndnaXPzbeeeeeeeeeeeeeebekalavcdtfaQBdbavcefcsGhvkcihoalc;abfazcitfgXaOBdlaXaCBdbazcefcsGhAcdhXavhsaHhxxekcdhoalascdtfaQBdbcehXascefcsGhsazhAkalc;abfaAcitfgvaCBdlavaQBdbalc;abfazaXfcsGcitfgvaQBdlavaOBdbaDcefhDazaofcsGhzaPcifgPai6mbkkdnaeaw9nmbcbhvxekcbhvinaeavfavc;q:G:cjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meaeceadt0mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:I:cjbk:zderu8Jjjjjbcz9Rhlcbhvdnaeaicvf6mbabcbRb;m:I:cjbc;qeV86bbal9cb83iwabcefhvabaefc98fhodnaiTmbcbhecbhrcbhwindnavao6mbcbskadawcdtfydbgDalcwfaraDae9Rgeaec8F91ge7ae9Rc507grcdtfgqydb9Rgec8E91c9:Gaecdt7arVheinavcbcjeaecje6EaecFbGV86bbavcefhvaecr4gembkaqaDBdbaDheawcefgwai9hmbkkdnavao9nmbcbskavcbBbbavab9RclfhvkavkBeeucbhddninadcefgdc8F0meaeceadt0mbkkabadcwfcFeGcr9U2cvfk:dvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhralcxfIdbhqdndnakJbbbb9GTmbaxhkxekJbbjZar:l:tgkak:maxJbbbb9GEhkJbbjZax:l:tgxax:marJbbbb9GEhrkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEavNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohmxekcjjjj94hmkdndnakJbbj:;akJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;akJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaDfgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaifgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkaicwfhiaDclfhDalczfhlaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo: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;gvdDue998Jjjjjbcjd9Rgo8Kjjjjbdndndnadcd4grTmbc:CucbavEhwaohdarhDinadawBdbadclfhdaDcufgDmbkavcd9hmbaeTmbarcdthqcbhkalhxinaohdaxhDarhwinadadydbgmaDydbcL4cFeGc:cufgPamaP9kEBdbaDclfhDadclfhdawcufgwmbkaxaqfhxakcefgkae9hmbxdkkaeTmekarcdthxavce9hhqcbhkindndndnaqmbarTmdc:CuhDalhdarhwinaDadydbcL4cFeGc:cufgmaDam9kEhDadclfhdawcufgwmbxdkkdndndndnavPleddbdkarTmlaohdalhDarhwinadcbaDydbcL4cFeGgmc:cufgPaPam0EBdbadclfhdaDclfhDawcufgwmbxikkarTmicbhdarhDindnaladfIdbgsJbbbb9Bmbaoadfas:8cL4cFeGgwc8Aawc8A0Ec:cufBdbkadclfhdaDcufgDmbxdkkarTmdkc:CuhDkcbhdarhminaDhwdnavceSmbaoadfydbhwkdndnaladfIdbgscjjj;8iawai9RcefgwcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:OhPxekcjjjj94hPkabadfaPcFFFrGawcKtVBdbadclfhdamcufgmmbkkabaxfhbalaxfhlakcefgkae9hmbkkaocjdf8Kjjjjbk:Olveue99iue99iudnaeTmbceaicufthvcuaitcu7:Zhocbhradcl9hhwcbhDindndnalcwfIdbgqJbbbbaqJbbbb9GEgqJbbjZaqJbbjZ9FEaoNJbbbZMgq:lJbbb9p9DTmbaq:Ohixekcjjjj94hikdndnalIdbgqJbbbbaqJbbbb9GEgqJbbjZaqJbbjZ9FEaoNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkadai9Rcd9TgkaifhidndnalclfIdbgqJbbbbaqJbbbb9GEgqJbbjZaqJbbjZ9FEaoNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkadai9Rcd9ThddndnalcxfIdbgqJbbbbaqJbbbb9GEgqJbbjZaqJbbjZ9FEaoNJbbbZMgq:lJbbb9p9DTmbaq:Ohxxekcjjjj94hxkadaifhiaxce91avVhxdndnawmbabaDfgmai86bbamcifax86bbamcdfad86bbamcefak86bbxekabarfgmai87ebamcofax87ebamclfad87ebamcdfak87ebkarcwfhraDclfhDalczfhlaecufgembkkk;mqdQui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:xjjjb8AdnadTmbaiTmbdndnabaeSmbaehoxekavcuadcdtgradcFFFFi0Ecbyd;q:I:cjbHjjjjbbgoBd:SeavceBd:mdaoaearz:wjjjb8AkavcbBd:Oeav9cb83i:Geavc:Gefaoadaiavc:Sefz:pjjjbavyd:Gehwadci9UgDcbyd;q:I:cjbHjjjjbbheavc:Sefavyd:mdgqcdtfaeBdbavaqcefgrBd:mdaecbaDz:xjjjbhkavc:SefarcdtfcuaicdtaicFFFFi0Ecbyd;q:I:cjbHjjjjbbgxBdbavaqcdfgmBd:mdalc;ebfhPawheaxhrinaralIdbaPaeydbgscwascw6EcdtfIdbMUdbaeclfhearclfhraicufgimbkavc:SefamcdtfcuaDcdtadcFFFF970Ecbyd;q:I:cjbHjjjjbbgmBdbdnadci6mbaoheamhraDhiinaraxaeydbcdtfIdbaxaeclfydbcdtfIdbMaxaecwfydbcdtfIdbMUdbaecxfhearclfhraicufgimbkkaqcifhzalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhscbhrcbhXcehQinaehLaoarcx2fgKydbhPaKclfydbhdabaXcx2fgecwfaKcwfydbgYBdbaeclfadBdbaeaPBdbakarfce86bbaOaYBdwaOadBdlaOaPBdbamarcdtfcbBdbcih8AdnasTmbaLhiinaOa8AcdtfaiydbgeBdba8AaeaY9haeaP9haead9hGGfh8AaiclfhiascufgsmbkkaXcefhXcbhsinaCaAaKascdtfydbcdtgifydbcdtfgYheawaifgdydbgPhidnaPTmbdninaeydbarSmeaeclfheaicufgiTmdxbkkaeaYaPcdtfc98fydbBdbadadydbcufBdbkascefgsci9hmbkdndndna8ATmbcuhrJbbbbhEcbhdavyd:KehYavyd:OehKindnawaOadcdtfydbcdtgsfydbgeTmbaxasfgiIdbh3aialcuadadcs0EcdtfclfIdbaHaecwaecw6EcdtfIdbMg5Udba5a3:th5aecdthiaKaYasfydbcdtfheinamaeydbgscdtfgPa5aPIdbMg3Udba3aEaEa39DgPEhEasaraPEhraeclfheaic98fgimbkkadcefgda8A9hmbkarcu9hmekaQaD9pmeindnakaQfRbbmbaQhrxdkaDaQcefgQ9hmbxdkka8Acza8Acz6EhsaOheaLhOarcu9hmekkazTmbaqcdtavc:Seffcwfheinaeydbcbyd;u:I:cjbH:bjjjbbaec98fheazcufgzmbkkavc:qdf8Kjjjjbk:0leoucuaicdtgvaicFFFFi0Egocbyd;q:I:cjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;q:I:cjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;q:I:cjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:xjjjb8AabydbhraehladhvinaralydbcdtfgoaoydbcefBdbalclfhlavcufgvmbkcbhvabydlglhoarhwaihDinaoavBdbaoclfhoawydbavfhvawclfhwaDcufgDmbkadci9Uhqdnadcd9nmbabydwhocbhvinaecwfydbhwaeclfydbhDalaeydbcdtfgbabydbgbcefBdbaoabcdtfavBdbalaDcdtfgDaDydbgDcefBdbaoaDcdtfavBdbalawcdtfgwawydbgwcefBdbaoawcdtfavBdbaecxfheaqavcefgv9hmbkkinalalydbarydb9RBdbarclfhralclfhlaicufgimbkkQbabaeadaic;G:G:cjbz:ojjjbkQbabaeadaic;i:H:cjbz:ojjjbk9DeeuabcFeaicdtz:xjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:3vioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:xjjjb8AalcuadcitgoadcFFFFe0Ecbyd;q:I:cjbHjjjjbbgrBdxalceBd2araeadaicezNjjjbalcuaoadcjjjjoGEcbyd;q:I:cjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:xjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkcwhvcbhiinalcxfavfc98fydbcbyd;u:I:cjbH:bjjjbbaiceGheclhvcehiaeTmbkalc;Waf8Kjjjjbk:Awliuo99iud9:cbhv8Jjjjjbca9Rgocbyd:4:I:cjbBdKaocb8Pd:W:I:cjb83izaocbyd;e:I:cjbBdwaocb8Pd:8:I:cjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:I:cjbgeabcifc98GfgbBd;y:I:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:I:cjbgeabcrfc94GfgbBd;y:I:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikTeeucbabcbyd;y:I:cjbge9Rcifc98GaefgbBd;y:I:cjbdnabZbcztge9nmbabae9RcFFifcz4nb8Akkk;Sddbcj:Gdk;idbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbbbbbebbbdbbbbbbbebbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbb: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:FFuuFFuuFFuuFFuFFFuFFFuFbc;i:IdkCebbbebbbebbbdbbb9G:rbb";
101
+ var wasmpack = new Uint8Array([
102
+ 32,
103
+ 0,
104
+ 65,
105
+ 2,
106
+ 1,
107
+ 106,
108
+ 34,
109
+ 33,
110
+ 3,
111
+ 128,
112
+ 11,
113
+ 4,
114
+ 13,
115
+ 64,
116
+ 6,
117
+ 253,
118
+ 10,
119
+ 7,
120
+ 15,
121
+ 116,
122
+ 127,
123
+ 5,
124
+ 8,
125
+ 12,
126
+ 40,
127
+ 16,
128
+ 19,
129
+ 54,
130
+ 20,
131
+ 9,
132
+ 27,
133
+ 255,
134
+ 113,
135
+ 17,
136
+ 42,
137
+ 67,
138
+ 24,
139
+ 23,
140
+ 146,
141
+ 148,
142
+ 18,
143
+ 14,
144
+ 22,
145
+ 45,
146
+ 70,
147
+ 69,
148
+ 56,
149
+ 114,
150
+ 101,
151
+ 21,
152
+ 25,
153
+ 63,
154
+ 75,
155
+ 136,
156
+ 108,
157
+ 28,
158
+ 118,
159
+ 29,
160
+ 73,
161
+ 115
162
+ ]);
163
+ if (typeof WebAssembly !== "object") {
164
+ return {
165
+ supported: false
166
+ };
167
+ }
168
+ var instance;
169
+ var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
170
+ instance = result.instance;
171
+ instance.exports.__wasm_call_ctors();
172
+ instance.exports.meshopt_encodeVertexVersion(1);
173
+ instance.exports.meshopt_encodeIndexVersion(1);
174
+ });
175
+ function unpack(data) {
176
+ var result = new Uint8Array(data.length);
177
+ for (var i = 0; i < data.length; ++i) {
178
+ var ch = data.charCodeAt(i);
179
+ result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
180
+ }
181
+ var write = 0;
182
+ for (var i = 0; i < data.length; ++i) {
183
+ result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
184
+ }
185
+ return result.buffer.slice(0, write);
186
+ }
187
+ function assert(cond) {
188
+ if (!cond) {
189
+ throw new Error("Assertion failed");
190
+ }
191
+ }
192
+ function bytes(view) {
193
+ return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
194
+ }
195
+ function reorder(fun, indices, vertices, optf) {
196
+ var sbrk = instance.exports.sbrk;
197
+ var ip = sbrk(indices.length * 4);
198
+ var rp = sbrk(vertices * 4);
199
+ var heap = new Uint8Array(instance.exports.memory.buffer);
200
+ var indices8 = bytes(indices);
201
+ heap.set(indices8, ip);
202
+ if (optf) {
203
+ optf(ip, ip, indices.length, vertices);
204
+ }
205
+ var unique = fun(rp, ip, indices.length, vertices);
206
+ heap = new Uint8Array(instance.exports.memory.buffer);
207
+ var remap = new Uint32Array(vertices);
208
+ new Uint8Array(remap.buffer).set(heap.subarray(rp, rp + vertices * 4));
209
+ indices8.set(heap.subarray(ip, ip + indices.length * 4));
210
+ sbrk(ip - sbrk(0));
211
+ for (var i = 0; i < indices.length; ++i) indices[i] = remap[indices[i]];
212
+ return [remap, unique];
213
+ }
214
+ function spatialsort(fun, positions, count, stride) {
215
+ var sbrk = instance.exports.sbrk;
216
+ var ip = sbrk(count * 4);
217
+ var sp = sbrk(count * stride);
218
+ var heap = new Uint8Array(instance.exports.memory.buffer);
219
+ heap.set(bytes(positions), sp);
220
+ fun(ip, sp, count, stride);
221
+ heap = new Uint8Array(instance.exports.memory.buffer);
222
+ var remap = new Uint32Array(count);
223
+ new Uint8Array(remap.buffer).set(heap.subarray(ip, ip + count * 4));
224
+ sbrk(ip - sbrk(0));
225
+ return remap;
226
+ }
227
+ function encode(fun, bound, source, count, size, level, version) {
228
+ var sbrk = instance.exports.sbrk;
229
+ var tp = sbrk(bound);
230
+ var sp = sbrk(count * size);
231
+ var heap = new Uint8Array(instance.exports.memory.buffer);
232
+ heap.set(bytes(source), sp);
233
+ var res = fun(tp, bound, sp, count, size, level, version);
234
+ var target = new Uint8Array(res);
235
+ target.set(heap.subarray(tp, tp + res));
236
+ sbrk(tp - sbrk(0));
237
+ return target;
238
+ }
239
+ function maxindex(source) {
240
+ var result = 0;
241
+ for (var i = 0; i < source.length; ++i) {
242
+ var index = source[i];
243
+ result = result < index ? index : result;
244
+ }
245
+ return result;
246
+ }
247
+ function index32(source, size) {
248
+ assert(size == 2 || size == 4);
249
+ if (size == 4) {
250
+ return new Uint32Array(source.buffer, source.byteOffset, source.byteLength / 4);
251
+ } else {
252
+ var view = new Uint16Array(source.buffer, source.byteOffset, source.byteLength / 2);
253
+ return new Uint32Array(view);
254
+ }
255
+ }
256
+ function filter(fun, source, count, stride, bits, insize, mode) {
257
+ var sbrk = instance.exports.sbrk;
258
+ var tp = sbrk(count * stride);
259
+ var sp = sbrk(count * insize);
260
+ var heap = new Uint8Array(instance.exports.memory.buffer);
261
+ heap.set(bytes(source), sp);
262
+ fun(tp, count, stride, bits, sp, mode);
263
+ var target = new Uint8Array(count * stride);
264
+ target.set(heap.subarray(tp, tp + count * stride));
265
+ sbrk(tp - sbrk(0));
266
+ return target;
267
+ }
268
+ return {
269
+ ready,
270
+ supported: true,
271
+ reorderMesh: function(indices, triangles, optsize) {
272
+ assert(indices instanceof Uint32Array || indices instanceof Int32Array);
273
+ assert(!triangles || indices.length % 3 == 0);
274
+ var optf = triangles ? optsize ? instance.exports.meshopt_optimizeVertexCacheStrip : instance.exports.meshopt_optimizeVertexCache : void 0;
275
+ return reorder(instance.exports.meshopt_optimizeVertexFetchRemap, indices, maxindex(indices) + 1, optf);
276
+ },
277
+ reorderPoints: function(positions, positions_stride) {
278
+ assert(positions instanceof Float32Array);
279
+ assert(positions.length % positions_stride == 0);
280
+ assert(positions_stride >= 3);
281
+ return spatialsort(instance.exports.meshopt_spatialSortRemap, positions, positions.length / positions_stride, positions_stride * 4);
282
+ },
283
+ encodeVertexBuffer: function(source, count, size) {
284
+ assert(size > 0 && size <= 256);
285
+ assert(size % 4 == 0);
286
+ var bound = instance.exports.meshopt_encodeVertexBufferBound(count, size);
287
+ return encode(instance.exports.meshopt_encodeVertexBuffer, bound, source, count, size);
288
+ },
289
+ encodeVertexBufferLevel: function(source, count, size, level, version) {
290
+ assert(size > 0 && size <= 256);
291
+ assert(size % 4 == 0);
292
+ assert(level >= 0 && level <= 3);
293
+ assert(version === void 0 || version == 0 || version == 1);
294
+ var bound = instance.exports.meshopt_encodeVertexBufferBound(count, size);
295
+ return encode(instance.exports.meshopt_encodeVertexBufferLevel, bound, source, count, size, level, version === void 0 ? -1 : version);
296
+ },
297
+ encodeIndexBuffer: function(source, count, size) {
298
+ assert(size == 2 || size == 4);
299
+ assert(count % 3 == 0);
300
+ var indices = index32(source, size);
301
+ var bound = instance.exports.meshopt_encodeIndexBufferBound(count, maxindex(indices) + 1);
302
+ return encode(instance.exports.meshopt_encodeIndexBuffer, bound, indices, count, 4);
303
+ },
304
+ encodeIndexSequence: function(source, count, size) {
305
+ assert(size == 2 || size == 4);
306
+ var indices = index32(source, size);
307
+ var bound = instance.exports.meshopt_encodeIndexSequenceBound(count, maxindex(indices) + 1);
308
+ return encode(instance.exports.meshopt_encodeIndexSequence, bound, indices, count, 4);
309
+ },
310
+ encodeGltfBuffer: function(source, count, size, mode, version) {
311
+ var table = {
312
+ ATTRIBUTES: this.encodeVertexBufferLevel,
313
+ TRIANGLES: this.encodeIndexBuffer,
314
+ INDICES: this.encodeIndexSequence
315
+ };
316
+ assert(table[mode]);
317
+ return table[mode](
318
+ source,
319
+ count,
320
+ size,
321
+ /* level= */
322
+ 2,
323
+ version === void 0 ? 0 : version
324
+ );
325
+ },
326
+ encodeFilterOct: function(source, count, stride, bits) {
327
+ assert(stride == 4 || stride == 8);
328
+ assert(bits >= 2 && bits <= 16);
329
+ return filter(instance.exports.meshopt_encodeFilterOct, source, count, stride, bits, 16);
330
+ },
331
+ encodeFilterQuat: function(source, count, stride, bits) {
332
+ assert(stride == 8);
333
+ assert(bits >= 4 && bits <= 16);
334
+ return filter(instance.exports.meshopt_encodeFilterQuat, source, count, stride, bits, 16);
335
+ },
336
+ encodeFilterExp: function(source, count, stride, bits, mode) {
337
+ assert(stride > 0 && stride % 4 == 0);
338
+ assert(bits >= 1 && bits <= 24);
339
+ var table = {
340
+ Separate: 0,
341
+ SharedVector: 1,
342
+ SharedComponent: 2,
343
+ Clamped: 3
344
+ };
345
+ assert(!mode || mode in table);
346
+ return filter(instance.exports.meshopt_encodeFilterExp, source, count, stride, bits, stride, mode ? table[mode] : 1);
347
+ },
348
+ encodeFilterColor: function(source, count, stride, bits) {
349
+ assert(stride == 4 || stride == 8);
350
+ assert(bits >= 2 && bits <= 16);
351
+ return filter(instance.exports.meshopt_encodeFilterColor, source, count, stride, bits, 16);
352
+ }
353
+ };
354
+ })();
355
+
356
+ // node_modules/.pnpm/meshoptimizer@1.2.0/node_modules/meshoptimizer/meshopt_decoder.mjs
357
+ var MeshoptDecoder = (function() {
358
+ var wasm_base = "b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq1Zkdbk:kYi5ud9:du8Jjjjjbcjq9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCaAcethXaxaDfhiaOaeaoaeao6E9RhQalcl4cifcd4hLazcjdfaAfhKcbhYabaOad2fg8AhEaHh3incbh5dnawTmbaxaYcd4fRbbh5kcbh8Eazcjdfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcjdfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcjdfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaL6mva8FaLfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasaYcd4fRbbgociGPlbedrbkaATmdazaYfh8Fazcjdfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeazaYfhaazcjdfhhcbhoceh8EaKh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaQaocefgofmbka8FaXfh8FcdhoaacdfhaahaXfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8EazaYfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaKhainazcjdfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3aYclfgYad6mbkaza8AaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcjqf8Kjjjjbaok:ysezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk: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:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb";
359
+ var wasm_simd = "b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:59Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:SBlEud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fgOavcjdfasaeaH9RaHasfae6EgAaAcsfgoc9WGgCSEhXaPaDfhQaocl4cifcd4hLavcj;cbfaCcetfhKavcj;cbfaCci2fhYavcj;cbfaCfh8AcbhEaoc;ab6h3incbh5dnawTmbaPaEcd4fRbbh5kcbh8Eavcj;cbfh8Findndndndna5a8Ecet4ciGgoc9:fPdebdkaxaQ9RaC6mwdnaCTmbavcj;cbfa8EaC2faQaC;8qbbkaQaAfhQxdkaCTmeavcj;cbfa8EaC2fcbaC;8kbxekaxaQ9RaL6moaoclVcbawEhraQaLfhocbhidna3mbaxao9Rc;Gb6mbcbhlina8FalfhidndndndndndnaQalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaiaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaiczfaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaoclffa8JRb:q:W:cjbfhoxikaicafaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbagaocwffa8JRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbagaocdffa8JRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsaap5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsaap5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaC0meaihlaxao9Rc;Fb0mbkkdnaiaC9pmbaici4hlinaxao9RcK6mwa8FaifhqdndndndndndnaQaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLgacdp:meaapmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9oghpxiiiiiiiiiiiiiiiip8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spkbbagaoclffa8JRb:q:W:cjbfhoxikaqaopbbwaopbbbgaclp:meaapmbzeHdOiAlCvXoQrLpxssssssssssssssssp9oghpxssssssssssssssssp8Jgap5b9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbagRb:q:W:cjbggpsaap5e9cjF;8;4;W;G;ab9:9cU1:Ng8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPahaap9spkbbagaocwffa8JRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbggcitpbi:q:G:cjbagRb:q:W:cjbggpsaoRbeg8Jcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbagaocdffa8JRb:q:W:cjbfhokalcdfhlaiczfgiaC6mbkkaohQaoTmoka8FaCfh8Fa8Ecefg8Ecl9hmbkdndndndnawTmbazaEcd4fRbbglciGPlbedwbkaCTmdaXaEfhlavaEfpbdbh8Kcbhoinalavcj;cbfaofpblbg8La8Aaofpblbg8MpmbzeHdOiAlCvXoQrLg8NaKaofpblbgyaYaofpblbg8PpmbzeHdOiAlCvXoQrLgIpmbezHdiOAlvCXorQLgacep9Taapxeeeeeeeeeeeeeeeeghp9op9Hp9rgaa8Kp9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8NaIpmwDKYqk8AExm35Ps8E8Fgacep9Taaahp9op9Hp9rgap9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8La8MpmwKDYq8AkEx3m5P8Es8Fg8Laya8PpmwKDYq8AkEx3m5P8Es8Fg8MpmbezHdiOAlvCXorQLgacep9Taaahp9op9Hp9rgap9Ug8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp9Ug8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp9Ug8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9Abbbaladfgla8Ka8La8MpmwDKYqk8AExm35Ps8E8Fgacep9Taaahp9op9Hp9rgap9Ughp9Abbbaladfglahaaaapmlvorlvorlvorlvorp9Ughp9AbbbaladfglahaaaapmwDqkwDqkwDqkwDqkp9Ughp9AbbbaladfglahaaaapmxmPsxmPsxmPsxmPsp9Ug8Kp9AbbbaladfhlaoczfgoaC6mbxikkaCTmeaXaEfhlavaEfpbdbh8Kcbhoinalavcj;cbfaofpblbg8La8Aaofpblbg8MpmbzeHdOiAlCvXoQrLg8NaKaofpblbgyaYaofpblbg8PpmbzeHdOiAlCvXoQrLgIpmbezHdiOAlvCXorQLgacep:neaapxebebebebebebebebghp9op:bep9rgaa8Kp:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8NaIpmwDKYqk8AExm35Ps8E8Fgacep:neaaahp9op:bep9rgap:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8La8MpmwKDYq8AkEx3m5P8Es8Fg8Laya8PpmwKDYq8AkEx3m5P8Es8Fg8MpmbezHdiOAlvCXorQLgacep:neaaahp9op:bep9rgap:oeg8Kp9Abbbaladfgla8Kaaaapmlvorlvorlvorlvorp:oeg8Kp9Abbbaladfgla8KaaaapmwDqkwDqkwDqkwDqkp:oeg8Kp9Abbbaladfgla8KaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9Abbbaladfgla8Ka8La8MpmwDKYqk8AExm35Ps8E8Fgacep:neaaahp9op:bep9rgap:oeghp9Abbbaladfglahaaaapmlvorlvorlvorlvorp:oeghp9AbbbaladfglahaaaapmwDqkwDqkwDqkwDqkp:oeghp9AbbbaladfglahaaaapmxmPsxmPsxmPsxmPsp:oeg8Kp9AbbbaladfhlaoczfgoaC6mbxdkkaCTmbaXaEfhrcbhocbalcl4gl9Rc8FGhiavaEfpbdbhhinaravcj;cbfaofpblbg8Ka8Aaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaKaofpblbg8NaYaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLgaaip:Reaaalp:Tep9qgaahp9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ma8PpmwDKYqk8AExm35Ps8E8Fgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9Abbbaradfgraha8Ka8LpmwDKYqk8AExm35Ps8E8Fgaaip:Reaaalp:Tep9qgap9rghp9Abbbaradfgrahaaaapmlvorlvorlvorlvorp9rghp9AbbbaradfgrahaaaapmwDqkwDqkwDqkwDqkp9rghp9AbbbaradfgrahaaaapmxmPsxmPsxmPsxmPsp9rghp9AbbbaradfhraoczfgoaC6mbkkaEclfgEad6mbkdnaXavcjdf9hmbaAad2goTmbaOavcjdfao;8qbbkdnammbavaXaAcufad2fad;8qbbkaAaHfhHc9:hoaQhPaQmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkNsezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb";
360
+ var detector = new Uint8Array([
361
+ 0,
362
+ 97,
363
+ 115,
364
+ 109,
365
+ 1,
366
+ 0,
367
+ 0,
368
+ 0,
369
+ 1,
370
+ 4,
371
+ 1,
372
+ 96,
373
+ 0,
374
+ 0,
375
+ 3,
376
+ 3,
377
+ 2,
378
+ 0,
379
+ 0,
380
+ 5,
381
+ 3,
382
+ 1,
383
+ 0,
384
+ 1,
385
+ 12,
386
+ 1,
387
+ 0,
388
+ 10,
389
+ 22,
390
+ 2,
391
+ 12,
392
+ 0,
393
+ 65,
394
+ 0,
395
+ 65,
396
+ 0,
397
+ 65,
398
+ 0,
399
+ 252,
400
+ 10,
401
+ 0,
402
+ 0,
403
+ 11,
404
+ 7,
405
+ 0,
406
+ 65,
407
+ 0,
408
+ 253,
409
+ 15,
410
+ 26,
411
+ 11
412
+ ]);
413
+ var wasmpack = new Uint8Array([
414
+ 32,
415
+ 0,
416
+ 65,
417
+ 2,
418
+ 1,
419
+ 106,
420
+ 34,
421
+ 33,
422
+ 3,
423
+ 128,
424
+ 11,
425
+ 4,
426
+ 13,
427
+ 64,
428
+ 6,
429
+ 253,
430
+ 10,
431
+ 7,
432
+ 15,
433
+ 116,
434
+ 127,
435
+ 5,
436
+ 8,
437
+ 12,
438
+ 40,
439
+ 16,
440
+ 19,
441
+ 54,
442
+ 20,
443
+ 9,
444
+ 27,
445
+ 255,
446
+ 113,
447
+ 17,
448
+ 42,
449
+ 67,
450
+ 24,
451
+ 23,
452
+ 146,
453
+ 148,
454
+ 18,
455
+ 14,
456
+ 22,
457
+ 45,
458
+ 70,
459
+ 69,
460
+ 56,
461
+ 114,
462
+ 101,
463
+ 21,
464
+ 25,
465
+ 63,
466
+ 75,
467
+ 136,
468
+ 108,
469
+ 28,
470
+ 118,
471
+ 29,
472
+ 73,
473
+ 115
474
+ ]);
475
+ if (typeof WebAssembly !== "object") {
476
+ return {
477
+ supported: false
478
+ };
479
+ }
480
+ var wasm = WebAssembly.validate(detector) ? unpack(wasm_simd) : unpack(wasm_base);
481
+ var instance;
482
+ var ready = WebAssembly.instantiate(wasm, {}).then(function(result) {
483
+ instance = result.instance;
484
+ instance.exports.__wasm_call_ctors();
485
+ });
486
+ function unpack(data) {
487
+ var result = new Uint8Array(data.length);
488
+ for (var i = 0; i < data.length; ++i) {
489
+ var ch = data.charCodeAt(i);
490
+ result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
491
+ }
492
+ var write = 0;
493
+ for (var i = 0; i < data.length; ++i) {
494
+ result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
495
+ }
496
+ return result.buffer.slice(0, write);
497
+ }
498
+ function decode(instance2, fun, target, count, size, source, filter) {
499
+ var sbrk = instance2.exports.sbrk;
500
+ var count4 = count + 3 & ~3;
501
+ var tp = sbrk(count4 * size);
502
+ var sp = sbrk(source.length);
503
+ var heap = new Uint8Array(instance2.exports.memory.buffer);
504
+ heap.set(source, sp);
505
+ var res = fun(tp, count, size, sp, source.length);
506
+ if (res == 0 && filter) {
507
+ filter(tp, count4, size);
508
+ }
509
+ target.set(heap.subarray(tp, tp + count * size));
510
+ sbrk(tp - sbrk(0));
511
+ if (res != 0) {
512
+ throw new Error("Malformed buffer data: " + res);
513
+ }
514
+ }
515
+ var filters = {
516
+ NONE: "",
517
+ OCTAHEDRAL: "meshopt_decodeFilterOct",
518
+ QUATERNION: "meshopt_decodeFilterQuat",
519
+ EXPONENTIAL: "meshopt_decodeFilterExp",
520
+ COLOR: "meshopt_decodeFilterColor"
521
+ };
522
+ var decoders = {
523
+ ATTRIBUTES: "meshopt_decodeVertexBuffer",
524
+ TRIANGLES: "meshopt_decodeIndexBuffer",
525
+ INDICES: "meshopt_decodeIndexSequence"
526
+ };
527
+ var workers = [];
528
+ var requestId = 0;
529
+ function createWorker2(url) {
530
+ var worker = {
531
+ object: new Worker(url),
532
+ pending: 0,
533
+ requests: {}
534
+ };
535
+ worker.object.onmessage = function(event) {
536
+ var data = event.data;
537
+ worker.pending -= data.count;
538
+ worker.requests[data.id][data.action](data.value);
539
+ delete worker.requests[data.id];
540
+ };
541
+ return worker;
542
+ }
543
+ function initWorkers(count) {
544
+ var source = "self.ready = WebAssembly.instantiate(new Uint8Array([" + new Uint8Array(wasm) + "]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = " + workerProcess.name + ";" + decode.toString() + workerProcess.toString();
545
+ var blob = new Blob([source], { type: "text/javascript" });
546
+ var url = URL.createObjectURL(blob);
547
+ for (var i = workers.length; i < count; ++i) {
548
+ workers[i] = createWorker2(url);
549
+ }
550
+ for (var i = count; i < workers.length; ++i) {
551
+ workers[i].object.postMessage({});
552
+ }
553
+ workers.length = count;
554
+ URL.revokeObjectURL(url);
555
+ }
556
+ function decodeWorker(count, size, source, mode, filter) {
557
+ var worker = workers[0];
558
+ for (var i = 1; i < workers.length; ++i) {
559
+ if (workers[i].pending < worker.pending) {
560
+ worker = workers[i];
561
+ }
562
+ }
563
+ return new Promise(function(resolve, reject) {
564
+ var data = new Uint8Array(source);
565
+ var id = ++requestId;
566
+ worker.pending += count;
567
+ worker.requests[id] = { resolve, reject };
568
+ worker.object.postMessage({ id, count, size, source: data, mode, filter }, [data.buffer]);
569
+ });
570
+ }
571
+ function workerProcess(event) {
572
+ var data = event.data;
573
+ self.ready.then(function(instance2) {
574
+ if (!data.id) {
575
+ return self.close();
576
+ }
577
+ try {
578
+ var target = new Uint8Array(data.count * data.size);
579
+ decode(instance2, instance2.exports[data.mode], target, data.count, data.size, data.source, instance2.exports[data.filter]);
580
+ self.postMessage({ id: data.id, count: data.count, action: "resolve", value: target }, [target.buffer]);
581
+ } catch (error) {
582
+ self.postMessage({ id: data.id, count: data.count, action: "reject", value: error });
583
+ }
584
+ });
585
+ }
586
+ return {
587
+ ready,
588
+ supported: true,
589
+ useWorkers: function(count) {
590
+ initWorkers(count);
591
+ },
592
+ decodeVertexBuffer: function(target, count, size, source, filter) {
593
+ decode(instance, instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]]);
594
+ },
595
+ decodeIndexBuffer: function(target, count, size, source) {
596
+ decode(instance, instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);
597
+ },
598
+ decodeIndexSequence: function(target, count, size, source) {
599
+ decode(instance, instance.exports.meshopt_decodeIndexSequence, target, count, size, source);
600
+ },
601
+ decodeGltfBuffer: function(target, count, size, source, mode, filter) {
602
+ decode(instance, instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);
603
+ },
604
+ decodeGltfBufferAsync: function(count, size, source, mode, filter) {
605
+ if (workers.length > 0) {
606
+ return decodeWorker(count, size, source, decoders[mode], filters[filter]);
607
+ }
608
+ return ready.then(function() {
609
+ var target = new Uint8Array(count * size);
610
+ decode(instance, instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]]);
611
+ return target;
612
+ });
613
+ }
614
+ };
615
+ })();
616
+
617
+ // node_modules/.pnpm/meshoptimizer@1.2.0/node_modules/meshoptimizer/meshopt_simplifier.js
618
+ var MeshoptSimplifier = (function() {
619
+ var wasm = "b9H79Tebbbe:6eO9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gouuuuuue999Gvuuuuueu9Gzuuuuuuuuuuu99uuuub9Gquuuuuuu99uueu9GPuuuuuuuuuuu99uueu9Gquuuuuuuu99ueu9Gruuuuuu99eu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9Gluuuub9GiuuueuiLQdilvorlwDiqkxmPszbHHbelve9Weiiviebeoweuecj:Gdkr:Bdxo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bw8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bD8A9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9O9v9W9K9HtWbqQ9TW79O9V9Wt9F79P9T9W29P9M959t29V9W9W95bkX9TW79O9V9Wt9F79P9T9W29P9M959qV919UWbxQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bmX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2WbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbs59TW79O9V9Wt9F9NW9UWV9HtW9q9V79Pt9P9V9U9sW9T9H9Wbzl79IV9RbHDwebcekdCXq;y;WeQdbk;r:herYue99iuY99Xue9:D998Jjjjjbcj;sb9Rgs8Kjjjjbcbhzasc:Cefcbc;Kbz:tjjjb8AdnabaeSmbabaeadcdtzMjjjb8AkdnamcdGTmbalcrfci4cbyd1:H:cjbHjjjjbbhHasc:Cefasyd;8egecdtfaHBdbasaecefBd;8ecbhlcbhednadTmbabheadhOinaHaeydbci4fcb86bbaeclfheaOcufgOmbkcbhlabheadhOinaHaeydbgAci4fgCaCRbbgCceaAcrGgAtV86bbaCcu7aA4ceGalfhlaeclfheaOcufgOmbkcualcdtalcFFFFi0Ehekaecbyd1:H:cjbHjjjjbbhzasc:Cefasyd;8egecdtfazBdbasaecefBd;8ealcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd1:H:cjbHjjjjbbhHasc:Cefasyd;8egAcdtfaHBdbasaAcefBd;8eaHcFeaOz:tjjjbhQdnadTmbaecufhLcbhKindndnaQabaKcdtfgYydbgAc:v;t;h;Ev2aLGgOcdtfgCydbgHcuSmbceheinazaHcdtfydbaASmdaOaefhHaecefheaQaHaLGgOcdtfgCydbgHcu9hmbkkazaXcdtfaABdbaCaXBdbaXhHaXcefhXkaYaHBdbaKcefgKad9hmbkkaQcbyd:m:H:cjbH:bjjjbbasasyd;8ecufBd;8ekcbh8AcualcefgecdtaecFFFFi0Ecbyd1:H:cjbHjjjjbbhLasc:Cefasyd;8egecdtfaLBdbasaLBdNeasaecefBd;8ecuadcitadcFFFFe0Ecbyd1:H:cjbHjjjjbbhEasc:Cefasyd;8egecdtfaEBdbasaEBd:yeasaecefBd;8eascNefabadalcbz:cjjjbcualcdtgealcFFFFi0Eg3cbyd1:H:cjbHjjjjbbhOasc:Cefasyd;8egHcdtfaOBdbasaHcefBd;8ea3cbyd1:H:cjbHjjjjbbhQasc:Cefasyd;8egHcdtfaQBdbasaHcefBd;8eaOaQaialavazasc:Cefz:djjjbalcbyd1:H:cjbHjjjjbbhYasc:Cefasyd;8egHcdtfaYBdbasaHcefBd;8ea3cbyd1:H:cjbHjjjjbbhHasc:Cefasyd;8egAcdtfaHBdbasaAcefBd;8ea3cbyd1:H:cjbHjjjjbbhAasc:Cefasyd;8egCcdtfaABdbasaCcefBd;8eaHcFeaez:tjjjbh5aAcFeaez:tjjjbh8EdnalTmbindnaLa8AgAcefg8AcdtfydbgCaLaAcdtgefydbgHSmbaCaH9Rh8FaEaHcitfhaa8Eaefhha5aefhKcbhCindndnaaaCcitfydbgXaA9hmbaKaABdbahaABdbxekdnaLaXcdtggfgeclfydbgHaeydbgeSmbaHae9RhHaEaecitfheinaeydbaASmdaecwfheaHcufgHmbkka8EagfgeaAaXaeydbcuSEBdbaKaXaAaKydbcuSEBdbkaCcefgCa8F9hmbkka8Aal9hmbkaOhHaQhAa5hXa8EhCcbheindndnaeaHydbgK9hmbdnaeaAydbgK9hmbaXydbhKdnaCydbg8Fcu9hmbaKcu9hmbaYaefcb86bbxikdna8FcuSmbaKcuSmbaea8FSmbaOa8FcdtfydbaOaKcdtfydb9hmbaYaefcd86bbxikaYaefhadnaea8FSmbaeaKSmbaace86bbxikaacl86bbxdkdnaeaQaKcdtg8Ffydb9hmbdnaCydbgacuSmbaeaaSmbaXydbggcuSmbaeagSmba8Ea8FfydbghcuSmbahaKSmba5a8Ffydbg8FcuSmba8FaKSmbdnaOaacdtfydbgKaOa8Fcdtfydb9hmbaKaOagcdtfydbg8FSmba8FaOahcdtfydb9hmbaYaefcd86bbxlkaYaefcl86bbxikaYaefcl86bbxdkaYaefcl86bbxekaYaefaYaKfRbb86bbkaHclfhHaAclfhAaXclfhXaCclfhCalaecefge9hmbkdnamcaGTmbcbh8JindndnaYa8Jfg8KRbbg8Lc9:fPibebekdndndnaOa8Jcdtfydbgea8J9hmbdnaqmbcbh8FxdkdnazTmbcbh8Fa8JheinaqazaecdtgefydbfRbbce4a8FVceGh8FaQaefydbgea8J9hmbxikkcbh8Fa8JheinaqaefRbbce4a8FVceGh8FaQaecdtfydbgea8J9hmbxdkkaYaefRbbhexeka8JheindnaLaecdtg8AfgeclfydbgHaeydbgeSmbaHae9RhgaEaecitfhhaOa8AfhacbhKinahaKcitfydbgXhednindnaLaecdtgCfgeclfydbgHaeydbgeSmbaHae9RhHaEaecitfheaaydbhAdninaOaeydbcdtfydbaASmeaecwfheaHcufgHTmdxbkkcbhexdkaQaCfydbgeaX9hmbkceheka8FaeVh8FaKcefgKag9hmbkkaQa8Afydbgea8J9hmbka8Lcia8FceGEheka8Kae86bbka8Jcefg8Jal9hmbkkdnaqTmbdndnazTmbazheaOhHalhAindnaqaeydbfRbbceGTmbaYaHydbfcl86bbkaeclfheaHclfhHaAcufgAmbxdkkaqheaOhHalhAindnaeRbbceGTmbaYaHydbfcl86bbkaecefheaHclfhHaAcufgAmbkkaOhealhAaYhHindnaYaeydbfRbbcl9hmbaHcl86bbkaeclfheaHcefhHaAcufgAmbkkamceGTmbaYhealhHindnaeRbbce9hmbaecl86bbkaecefheaHcufgHmbkkcbh8Mcualcx2alc;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbh8Nasc:Cefasyd;8egecdtfa8NBdbasaecefBd;8eascbBd:qeas9cb83i1ea8Naialavazasc1efz:ejjjbhydndnaDmbcbh8PcbhCxekcbhCawhecbhHindnaeIdbJbbbb9ETmbasaCcdtfaHBdbaCcefhCkaeclfheaDaHcefgH9hmbkcuaCal2gecdtaecFFFFi0Ecbyd1:H:cjbHjjjjbbh8Pasc:Cefasyd;8egecdtfa8PBdbasaecefBd;8ealTmbdnaCmbcbhCxekarcd4hgdnazTmbaCcdthhcbh8Fa8Phainaoaza8Fcdtfydbag2cdtfhKasheaahHaChAinaHaKaeydbcdtgXfIdbawaXfIdbNUdbaeclfheaHclfhHaAcufgAmbkaaahfhaa8Fcefg8Fal9hmbxdkkaCcdthhcbh8Fa8Phainaoa8Fag2cdtfhKasheaahHaChAinaHaKaeydbcdtgXfIdbawaXfIdbNUdbaeclfheaHclfhHaAcufgAmbkaaahfhaa8Fcefg8Fal9hmbkkcualc8S2gHalc;D;O;f8U0EgXcbyd1:H:cjbHjjjjbbheasc:Cefasyd;8egAcdtfaeBdbasaAcefBd;8eaecbaHz:tjjjbhIcbh8RcbhgdnaCTmbcbh8MaXcbyd1:H:cjbHjjjjbbhgasc:Cefasyd;8egecdtfagBdbasaecefBd;8eagcbaHz:tjjjb8AcuaCal2gecltgHaecFFFFb0Ecbyd1:H:cjbHjjjjbbh8Rasc:Cefasyd;8egecdtfa8RBdbasaecefBd;8ea8RcbaHz:tjjjb8AamcjjjjdGTmbcualcltgealcFFFFb0Ecbyd1:H:cjbHjjjjbbh8Masc:Cefasyd;8egHcdtfa8MBdbasaHcefBd;8ea8Mcbaez:tjjjb8AkdnadTmbcbhKabhHina8NaHclfydbg8Fcx2fgeIdba8NaHydbgacx2fgAIdbg8S:tgRa8NaHcwfydbghcx2fgXIdlaAIdlg8U:tg8VNaeIdla8U:tg8WaXIdba8S:tg8XN:tg8Ya8YNa8WaXIdwaAIdwg8Z:tg80NaeIdwa8Z:tg8Wa8VN:tg81a81Na8Wa8XNaRa80N:tg80a80NMMg8V:rhBa8Yh8Xa80h8Wa81hRdna8VJbbbb9EgATmba8YaB:vh8Xa80aB:vh8Wa81aB:vhRkaIaOaacdtfydbgXc8S2fgeaRaB:rg8VaRNNg83aeIdbMUdbaea8Wa8Va8WNgUNg85aeIdlMUdlaea8Xa8Va8XNg86Ng87aeIdwMUdwaeaRaUNgUaeIdxMUdxaea86aRNg88aeIdzMUdzaea8Wa86Ng89aeIdCMUdCaeaRa8Va8Xa8ZNaRa8SNa8Ua8WNMM:mg8:Ng86NgRaeIdKMUdKaea8Wa86Ng8WaeId3MUd3aea8Xa86Ng8XaeIdaMUdaaea86a8:Ng86aeId8KMUd8Kaea8VaeIdyMUdyaIaOa8Fcdtfydbg8Fc8S2fgea83aeIdbMUdbaea85aeIdlMUdlaea87aeIdwMUdwaeaUaeIdxMUdxaea88aeIdzMUdzaea89aeIdCMUdCaeaRaeIdKMUdKaea8WaeId3MUd3aea8XaeIdaMUdaaea86aeId8KMUd8Kaea8VaeIdyMUdyaIaOahcdtfydbgac8S2fgea83aeIdbMUdbaea85aeIdlMUdlaea87aeIdwMUdwaeaUaeIdxMUdxaea88aeIdzMUdzaea89aeIdCMUdCaeaRaeIdKMUdKaea8WaeId3MUd3aea8XaeIdaMUdaaea86aeId8KMUd8Kaea8VaeIdyMUdydna8MTmbdnaATmba8YaB:vh8Ya80aB:vh80a81aB:vh81ka8MaXcltfgeaBJbbbZNgRa80Ng8VaeIdlMUdlaeaRa8YNg8WaeIdwMUdwaeaRa81Ng8XaeIdbMUdbaeaRa8S:ma81Na8Ua80N:ta8Za8YN:tNgRaeIdxMUdxa8Ma8Fcltfgea8VaeIdlMUdlaea8WaeIdwMUdwaea8XaeIdbMUdbaeaRaeIdxMUdxa8Maacltfgea8VaeIdlMUdlaea8WaeIdwMUdwaea8XaeIdbMUdbaeaRaeIdxMUdxkaHcxfhHaKcifgKad6mbkkdnalTmbJq;x8J88J;n;m;m89J:v:;;w8ZamczGEamc;abGEh80cbhHaOhXazhKaIhea8NhAindnaHaXydb9hmbaHh8FdnazTmbaKydbh8Fka80hRdnaqTmbJbbjZa80aqa8FfRbbclGEhRkaecxfg8Fa8FIdbJbbbbMUdbaeczfg8Fa8FIdbJbbbbMUdbaecCfg8Fa8FIdbJbbbbMUdbaeaRaecyfg8FIdbg8YNgRaeIdbMUdbaeclfgaaRaaIdbMUdbaecwfgaaRaaIdbMUdbaecKfgaaaIdbaAIdbg8WaRN:tUdbaAcwfIdbh8Vaec3fgaaaIdbaRaAclfIdbg8XN:tUdbaecafgaaaIdbaRa8VN:tUdbaec8KfgaIdbh81a8Fa8YaRMUdbaaa81aRa8Va8VNa8Wa8WNa8Xa8XNMMNMUdbkaXclfhXaKclfhKaec8SfheaAcxfhAalaHcefgH9hmbkkdnadTmbcbh8Aabhainaba8Acdtfh8FcbhHinaYa8FaHc:G:G:cjbfydbcdtfydbgAfRbbhedndnaYaaaHfydbgXfRbbgKc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaKcufcFeGce0mba5aXcdtfydbaA9hmekdnaecufcFeGce0mba8EaAcdtfydbaX9hmekJbbacJbbacJbbbZaecFeGceSEaKcFeGceSEhUdna8Na8FaHc:K:G:cjbfydbcdtfydbcx2fgeIdwa8NaXcx2fgKIdwg86:tg8Sa8NaAcx2fghIdwa86:tg8Xa8XNahIdbaKIdbg8U:tg80a80NahIdlaKIdlg8Z:tg8Va8VNMMg81Na8Xa8Sa8XNaeIdba8U:tg83a80Na8VaeIdla8Z:tg85NMMg8WN:tg8Ya8YNa83a81Na80a8WN:tgRaRNa85a81Na8Va8WN:tg8Wa8WNMMgBJbbbb9ETmba8YaB:rgB:vh8Ya8WaB:vh8WaRaB:vhRkaUa81:rNgBa8Ya86NaRa8UNa8Za8WNMM:mg81Ng87a81Nh88a80a85Na8Va83N:tg81a81Na8Va8SNa8Xa85N:tg8Va8VNa8Xa83Na80a8SN:tg8Xa8XNMMg83:rh80a8Ya87Nh85a8Wa87Nh89aRa87Nh87a8WaBa8YNg8SNh8:a8SaRNhZaRaBa8WNgnNhca8Ya8SNh8Ya8WanNh8WaRaBaRNNh8Sdna83Jbbbb9ETmba81a80:vh81a8Xa80:vh8Xa8Va80:vh8VkaIaOaXcdtfydbc8S2fgeaeIdba8Sa8VaUa80:rNgRa8VNNMg80MUdbaea8Wa8XaRa8XNg8SNMg83aeIdlMUdlaea8Ya81aRa81Ng8WNMg8YaeIdwMUdwaeaca8Va8SNMg8SaeIdxMUdxaeaZa8Wa8VNMgUaeIdzMUdzaea8:a8Xa8WNMg8WaeIdCMUdCaea87a8VaRa81a86Na8Va8UNa8Za8XNMMg86:mNgRNMg8VaeIdKMUdKaea89a8XaRNMg8XaeId3MUd3aea85a81aRNMg81aeIdaMUdaaea88a86aRN:tgRaeId8KMUd8KaeaBaeIdyMUdyaIaOaAcdtfydbc8S2fgea80aeIdbMUdbaea83aeIdlMUdlaea8YaeIdwMUdwaea8SaeIdxMUdxaeaUaeIdzMUdzaea8WaeIdCMUdCaea8VaeIdKMUdKaea8XaeId3MUd3aea81aeIdaMUdaaeaRaeId8KMUd8KaeaBaeIdyMUdykaHclfgHcx9hmbkaacxfhaa8Acifg8Aad6mbkaCTmbcbhainJbbbbh80a8Nabaacdtfgeclfydbg8Fcx2fgHIdwa8Naeydbghcx2fgAIdwg8Z:tg8Va8VNaHIdbaAIdbg83:tg8Wa8WNaHIdlaAIdlg85:tg8Xa8XNMMg8Sa8Naecwfydbg8Acx2fgeIdwa8Z:tg8YNa8Va8YNa8WaeIdba83:tg81Na8XaeIdla85:tgBNMMgRa8VN:tJbbbbJbbjZa8Sa8Ya8YNa81a81NaBaBNMMg8UNaRaRN:tg86:va86Jbbbb9BEg86Nh88a8Ua8VNaRa8YN:ta86Nh89a8SaBNaRa8XN:ta86Nh8:a8Ua8XNaRaBN:ta86NhZa8Sa81NaRa8WN:ta86Nhna8Ua8WNaRa81N:ta86Nhca8WaBNa8Xa81N:tgRaRNa8Xa8YNa8VaBN:tgRaRNa8Va81Na8Wa8YN:tgRaRNMM:rJbbbZNhRa8PahaC2g8JcdtfhHa8Pa8AaC2gDcdtfhAa8Pa8FaC2g8KcdtfhXa8Z:mh9ca85:mhJa83:mh9eascjdfheaChKJbbbbhBJbbbbh86Jbbbbh8SJbbbbh8UJbbbbh8ZJbbbbh83Jbbbbh85Jbbbbh87JbbbbhUinaecwfaRa89aXIdbaHIdbg8Y:tg8XNa88aAIdba8Y:tg81NMg8VNUdbaeclfaRaZa8XNa8:a81NMg8WNUdbaeaRaca8XNana81NMg8XNUdbaecxfaRa9ca8VNaJa8WNa8Ya9ea8XNMMMg8YNUdbaRa8Va8WNNa8ZMh8ZaRa8Va8XNNa8UMh8UaRa8Wa8XNNa8SMh8SaRa8Ya8YNNaUMhUaRa8Va8YNNa87Mh87aRa8Wa8YNNa85Mh85aRa8Xa8YNNa83Mh83aRa8Va8VNNa86Mh86aRa8Wa8WNNaBMhBaRa8Xa8XNNa80Mh80aHclfhHaXclfhXaAclfhAaeczfheaKcufgKmbkagahc8S2fgea80aeIdbMUdbaeaBaeIdlMUdlaea86aeIdwMUdwaea8SaeIdxMUdxaea8UaeIdzMUdzaea8ZaeIdCMUdCaea83aeIdKMUdKaea85aeId3MUd3aea87aeIdaMUdaaeaUaeId8KMUd8KaeaRaeIdyMUdyaga8Fc8S2fgea80aeIdbMUdbaeaBaeIdlMUdlaea86aeIdwMUdwaea8SaeIdxMUdxaea8UaeIdzMUdzaea8ZaeIdCMUdCaea83aeIdKMUdKaea85aeId3MUd3aea87aeIdaMUdaaeaUaeId8KMUd8KaeaRaeIdyMUdyaga8Ac8S2fgea80aeIdbMUdbaeaBaeIdlMUdlaea86aeIdwMUdwaea8SaeIdxMUdxaea8UaeIdzMUdzaea8ZaeIdCMUdCaea83aeIdKMUdKaea85aeId3MUd3aea87aeIdaMUdaaeaUaeId8KMUd8KaeaRaeIdyMUdya8Ra8Jcltfh8FcbhHaChXina8FaHfgeascjdfaHfgAIdbaeIdbMUdbaeclfgKaAclfIdbaKIdbMUdbaecwfgKaAcwfIdbaKIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaHczfhHaXcufgXmbka8Ra8Kcltfh8FcbhHaChXina8FaHfgeascjdfaHfgAIdbaeIdbMUdbaeclfgKaAclfIdbaKIdbMUdbaecwfgKaAcwfIdbaKIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaHczfhHaXcufgXmbka8RaDcltfh8FcbhHaChXina8FaHfgeascjdfaHfgAIdbaeIdbMUdbaeclfgKaAclfIdbaKIdbMUdbaecwfgKaAcwfIdbaKIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaHczfhHaXcufgXmbkaacifgaad6mbkkcbhAdndnamcwGgTmbJbbbbh8ScbhScbh9hcbh9ixekcbhSa3cbyd1:H:cjbHjjjjbbh9iasc:Cefasyd;8egecdtfa9iBdbasaecefBd;8ecua9ialabadaOz:fjjjbgXcltaXcjjjjiGEcbyd1:H:cjbHjjjjbbh9hasc:Cefasyd;8egecdtfa9hBdbasaecefBd;8ea9haXa9ia8Nalz:gjjjbJFFuuh8SaXTmba9hheaXhHinaeIdbgRa8Sa8SaR9EEh8SaeclfheaHcufgHmbkaXhSkdnalTmbaLclfheaLydbhXaYhHalhKcbhAincbaeydbg8FaX9RaHRbbcpeGEaAfhAaHcefhHaeclfhea8FhXaKcufgKmbkaAce4hAkcuadaA9Rcifg6cx2a6c;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbh9kasc:Cefasyd;8egecdtfa9kBdbasaecefBd;8ecua6cdta6cFFFFi0Ecbyd1:H:cjbHjjjjbbh0asc:Cefasyd;8egecdtfa0BdbasaecefBd;8ea3cbyd1:H:cjbHjjjjbbh9masc:Cefasyd;8egecdtfa9mBdbasaecefBd;8ealcbyd1:H:cjbHjjjjbbh9nasc:Cefasyd;8egecdtfa9nBdbasaecefBd;8eaxaxNayJbbjZamclGEgZaZN:vh87JbbbbhUdnadak9nmbdna6ci6mbaCclth9oa9kcwfh9pJbbbbh85JbbbbhUinascNefabadalaOz:cjjjbabh8Acbh9qcbh9rinaba9rcdtfhDcbheindnaOa8AaefydbgAcdtghfydbgXaOaDaec:W:G:cjbfydbcdtfydbgHcdtg8JfydbgKSmbaYaHfRbbgacv2aYaAfRbbg8FfRb;a:G:cjbg8La8Fcv2aafg8KRb;a:G:cjbg3VcFeGTmbdnaKaX9nmba8KRb;G:G:cjbcFeGmekdna8FcufcFeGce0mbaaTmba5ahfydbaH9hmekdna8FTmbaacufcFeGce0mba8Ea8JfydbaA9hmeka9ka9qcx2fgXaHaAa3cFeGgKEBdlaXaAaHaKEBdbaXaKa8LGcb9hBdwa9qcefh9qkaeclfgecx9hmbkdna9rcifg9rad9pmba8Acxfh8Aa9qcifa69nmekka9qTmdcbh8KinaIaOa9ka8Kcx2fghydbgKcdtgXfydbg8Ac8S2fgeIdwa8Nahydlg8Fcx2fgHIdwg8WNaeIdzaHIdbg8XNaeIdaMgRaRMMa8WNaeIdlaHIdlg8YNaeIdCa8WNaeId3MgRaRMMa8YNaeIdba8XNaeIdxa8YNaeIdKMgRaRMMa8XNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8V:va8VJbbbb9BEh8VdndnahydwgDmbJFFuuh86xekJbbbbJbbjZaIaOa8Fcdtfydbc8S2fgeIdyg81:va81Jbbbb9BEaeIdwa8NaKcx2fgHIdwg81NaeIdzaHIdbg80NaeIdaMgBaBMMa81NaeIdlaHIdlgBNaeIdCa81NaeId3Mg81a81MMaBNaeIdba80NaeIdxaBNaeIdKMg81a81MMa80NaeId8KMMM:lNh86ka8VaRNhBdnaCTmbagaKc8S2fgAIdwa8WNaAIdza8XNaAIdaMgRaRMMa8WNaAIdla8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8Pa8FaC2gacdtfhHa8RaKaC2g8JcltfheaAIdyh81aChAinaHIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaHclfhHaeczfheaAcufgAmbkdndnaDmbJbbbbh8Vxekaga8Fc8S2fgAIdwa8NaKcx2fgeIdwg8XNaAIdzaeIdbg8YNaAIdaMg8Va8VMMa8XNaAIdlaeIdlg81NaAIdCa8XNaAId3Mg8Va8VMMa81NaAIdba8YNaAIdxa81NaAIdKMg8Va8VMMa8YNaAId8KMMMh8Va8Pa8JcdtfhHa8RaacltfheaAIdyh80aChAinaHIdbg8Wa8Wa80NaecxfIdba8XaecwfIdbNa8YaeIdbNa81aeclfIdbNMMMg8Wa8WM:tNa8VMh8VaHclfhHaeczfheaAcufgAmbka8V:lh8VkaBaR:lMhBa86a8VMh86dndndnaYaKfRbbc9:fPddbekaQaXfydbgXaKSmbaOa8Fcdtfydbh8Jindndna5aXcdtgafydbgecuSmbaOaecdtfydba8JSmekdna8EaafydbgecuSmbaOaecdtfydba8JSmeka8FhekagaXc8S2fgAIdwa8Naecx2fgHIdwg8WNaAIdzaHIdbg8XNaAIdaMgRaRMMa8WNaAIdlaHIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8PaeaC2cdtfhHa8RaXaC2cltfheaAIdyh81aChAinaHIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaHclfhHaeczfheaAcufgAmbkaBaR:lMhBaQaafydbgXaK9hmbkkaYa8FfRbbci9hmeaDTmeaQa8FcdtfydbgXa8FSmeindndna5aXcdtgafydbgecuSmbaOaecdtfydba8ASmekdna8EaafydbgecuSmbaOaecdtfydba8ASmekaKhekagaXc8S2fgAIdwa8Naecx2fgHIdwg8WNaAIdzaHIdbg8XNaAIdaMgRaRMMa8WNaAIdlaHIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8PaeaC2cdtfhHa8RaXaC2cltfheaAIdyh81aChAinaHIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaHclfhHaeczfheaAcufgAmbka86aR:lMh86aQaafydbgXa8F9hmbxdkkdna8Ea5a5aXfydba8FSEaQaXfydbgacdtfydbgXcu9hmbaQa8FcdtfydbhXkagaac8S2fgAIdwa8NaXcx2fgeIdwg8WNaAIdzaeIdbg8XNaAIdaMgRaRMMa8WNaAIdlaeIdlg8YNaAIdCa8WNaAId3MgRaRMMa8YNaAIdba8XNaAIdxa8YNaAIdKMgRaRMMa8XNaAId8KMMMhRa8PaXaC2g8AcdtfhHa8RaaaC2g8JcltfheaAIdyh81aChAinaHIdbg8Va8Va81NaecxfIdba8WaecwfIdbNa8XaeIdbNa8YaeclfIdbNMMMg8Va8VM:tNaRMhRaHclfhHaeczfheaAcufgAmbkdndnaDmbJbbbbh8VxekagaXc8S2fgAIdwa8Naacx2fgeIdwg8XNaAIdzaeIdbg8YNaAIdaMg8Va8VMMa8XNaAIdlaeIdlg81NaAIdCa8XNaAId3Mg8Va8VMMa81NaAIdba8YNaAIdxa81NaAIdKMg8Va8VMMa8YNaAId8KMMMh8Va8Pa8JcdtfhHa8Ra8AcltfheaAIdyh80aChAinaHIdbg8Wa8Wa80NaecxfIdba8XaecwfIdbNa8YaeIdbNa81aeclfIdbNMMMg8Wa8WM:tNa8VMh8VaHclfhHaeczfheaAcufgAmbka8V:lh8VkaBaR:lMhBa86a8VMh86kaha86aBa86aB9DgeEUdwahaKa8FaeaDcb9hGgeEBdlaha8FaKaeEBdba8Kcefg8Ka9q9hmbkascjdfcbcj;qbz:tjjjb8Aa9phea9qhHinascjdfaeydbcA4cF8FGgAcFAaAcFA6EcdtfgAaAydbcefBdbaecxfheaHcufgHmbkcbhecbhHinascjdfaefgAydbhXaAaHBdbaXaHfhHaeclfgecj;qb9hmbkcbhea9phHinascjdfaHydbcA4cF8FGgAcFAaAcFA6EcdtfgAaAydbgAcefBdba0aAcdtfaeBdbaHcxfhHa9qaecefge9hmbkadak9RgAci9Uh9sdnalTmbcbhea9mhHinaHaeBdbaHclfhHalaecefge9hmbkkcbh9ta9ncbalz:tjjjbh3aAcO9Uh9ua9sce4h9rcbh8Lcbh8Kdnina9ka0a8Kcdtfydbcx2fg8JIdwgRa879Emea8La9s9pmeJFFuuh8Vdna9ra9q9pmba9ka0a9rcdtfydbcx2fIdwJbb;aZNh8VkdnaRa8V9ETmbaRaU9ETmba8La9u0mdkdna3aOa8JydlgDcdtg9vfg8AydbgAfg9wRbba3aOa8Jydbghcdtg9xfydbgefg9yRbbVmbaYahfRbbh9zdndnaLaecdtfgHclfydbgXaHydbgHSmbaXaH9RhXa8NaAcx2fh8Fa8Naecx2fhaaEaHcitfheindna9maeydbcdtfydbgHaASmba9maeclfydbcdtfydbgKaASmbaHaKSmba8NaKcx2fgKIdba8NaHcx2fgHIdbg8W:tgRaaIdlaHIdlg8X:tg80NaKIdla8X:tg8VaaIdba8W:tgBN:tg8YaRa8FIdla8X:tg86Na8Va8FIdba8W:tg8UN:tg8XNa8VaaIdwaHIdwg81:tg8ZNaKIdwa81:tg8Wa80N:tg80a8Va8FIdwa81:tg83Na8Wa86N:tg8VNa8WaBNaRa8ZN:tg81a8Wa8UNaRa83N:tgRNMMa8Ya8YNa80a80Na81a81NMMa8Xa8XNa8Va8VNaRaRNMMN:rJbbj8:N9FmikaecwfheaXcufgXmbkkdndndndna9zc9:fPdebdkahheina8AydbhAdndna5aecdtgHfydbgecuSmbaOaecdtfydbaASmekdna8EaHfydbgecuSmbaOaecdtfydbaASmekaDheka9maHfaeBdbaQaHfydbgeah9hmbxikkdna8Ea5a5a9xfydbaDSEaQa9xfydbghcdtfydbgecu9hmbaQa9vfydbheka9ma9xfaDBdbaehDka9mahcdtfaDBdbka9yce86bba9wce86bba8JIdwgRaUaUaR9DEhUa9tcefh9tcecda9zceSEa8Lfh8Lxeka9rcefh9rka8Kcefg8Ka9q9hmbkka9tTmddnalTmbcbh8Fcbhhindna9mahcdtgefydbgAahSmbaOaAcdtfydbh8AdnahaOaefydb9hg8JmbaIa8Ac8S2fgeaIahc8S2fgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya8MTmba8Ma8Acltfgea8MahcltfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxkaCTmbagaAc8S2fgeagahc8S2gDfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya9oaA2haa8RhHaChXinaHaafgeaHa8FfgAIdbaeIdbMUdbaeclfgKaAclfIdbaKIdbMUdbaecwfgKaAcwfIdbaKIdbMUdbaecxfgeaAcxfIdbaeIdbMUdbaHczfhHaXcufgXmbka8JmbJbbbbJbbjZaIaDfgeIdygR:vaRJbbbb9BEaeIdwa8Na8Acx2fgHIdwgRNaeIdzaHIdbg8VNaeIdaMg8Wa8WMMaRNaeIdlaHIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8VNaeIdxa8WNaeIdKMgRaRMMa8VNaeId8KMMM:lNgRa85a85aR9DEh85ka8Fa9ofh8Fahcefghal9hmbkcbhHa5heindnaeydbgAcuSmbdnaHa9maAcdtgXfydbgA9hmbcuhAa5aXfydbgXcuSmba9maXcdtfydbhAkaeaABdbkaeclfhealaHcefgH9hmbkcbhHa8EheindnaeydbgAcuSmbdnaHa9maAcdtgXfydbgA9hmbcuhAa8EaXfydbgXcuSmba9maXcdtfydbhAkaeaABdbkaeclfhealaHcefgH9hmbkka85aUaCEh85cbhHabhecbhAindnaOa9maeydbcdtfydbg8FcdtfydbgXaOa9maeclfydbcdtfydbgacdtfydbgKSmbaXaOa9maecwfydbcdtfydbg8AcdtfydbghSmbaKahSmbabaHcdtfgXa8FBdbaXcwfa8ABdbaXclfaaBdbaHcifhHkaecxfheaAcifgAad6mbkdndnaTmbaHhdxekdnaHak0mbaHhdxekdna8Sa859FmbaHhdxekJFFuuh8ScbhdabhecbhAindna9ha9iaeydbgXcdtfydbcdtfIdbgRa859ETmbaeclf8Pdbh9AabadcdtfgKaXBdbaKclfa9A83dbaRa8Sa8SaR9EEh8SadcifhdkaecxfheaAcifgAaH6mbkkadak0mbxdkkascNefabadalaOz:cjjjbkdndnadak0mbadhaxekdnaTmbadhaxekdna8Sa879FmbadhaxekcehKina8SJbb;aZNgRa87aRa879DEh8WJbbbbhRdnaSTmba9hheaShHinaeIdbg8VaRa8Va8W9FEaRa8VaR9EEhRaeclfheaHcufgHmbkkJFFuuh8ScbhaabhecbhHindna9ha9iaeydbgAcdtfydbcdtfIdbg8Va8W9ETmbaeclf8Pdbh9AabaacdtfgXaABdbaXclfa9A83dba8Va8Sa8Sa8V9EEh8SaacifhakaecxfheaHcifgHad6mbkdnaKaaad9hVceGmbadhaxdkaRaUaUaR9DEhUaaak9nmecbhKaahda8Sa879FmbkkdnamcjjjjdGTmba9ncbalz:tjjjbh8AdnaaTmbabheaahHina8AaeydbgAfce86bba8AaOaAcdtfydbfce86bbaeclfheaHcufgHmbkkascNefabaaalaOz:cjjjbdndnalTmbcbhXindna8AaXfRbbTmbdnaYaXfRbbgecl0mbceaetcQGmekdnaOaXcdtg8FfydbgeaXSmba8NaXcx2fgHa8Naecx2fgeydwBdwaHae8Pdb83dbxekaIaXc8S2fgKIdygcacJL:3;rUNgRMh87aKIdwg9BaRMh8SaKIdlg9CaRMh8UaKIdbg9DaRMh81aKIdag9EaRa8NaXcx2fg8JIdwg88N:th8ZaKId3g9FaRa8JIdlg89N:th83aKIdKg9Ga8JIdbg8:aRN:th80JbbbbhnaKIdCg9HJbbbbMh85aKIdzg9IJbbbbMhBaKIdxg9JJbbbbMh86dndnaCTmbaXhAinJbbbba87agaAc8S2fgHIdygR:vaRJbbbb9BEhRa8RaAaC2cltfheaHIdaa87Na8ZMh8ZaHId3a87Na83Mh83aHIdKa87Na80Mh80aHIdCa87Na85Mh85aHIdza87NaBMhBaHIdxa87Na86Mh86aHIdwa87Na8SMh8SaHIdla87Na8UMh8UaHIdba87Na81Mh81aChHina8ZaecwfIdbg8VaecxfIdbg8YNaRN:th8Za83aeclfIdbg8Wa8YNaRN:th83a85a8Wa8VNaRN:th85a81aeIdbg8Xa8XNaRN:th81a80a8Xa8YNaRN:th80aBa8Xa8VNaRN:thBa86a8Xa8WNaRN:th86a8Sa8Va8VNaRN:th8Sa8Ua8Wa8WNaRN:th8UaeczfheaHcufgHmbkaQaAcdtfydbgAaX9hmbka8MTmba8MaXcltfgeIdxhxaeIdwh9caeIdlhJaeIdbhRxekJbbbbhxJbbbbh9cJbbbbhJJbbbbhRkaBa81:vg8Wa80Na8Z:ta85aBa86a81:vg8VN:tg8Za8Ua86a8VN:tg8Y:vg8Xa8Va80Na83:tg8UN:th83a9caRa8WN:taJaRa8VN:tg86a8XN:tg85a8SaBa8WN:ta8Za8XN:tgB:vg8S:mh8Za86a8Y:vg9c:mhJdnJbbbbaRaRa81:vg9eN:ta86a9cN:ta85a8SN:tg86:la87J:983:g81NgR9ETmba8Za83NaJa8UNa9ea80Nax:tMMa86:vhnka81:laR9ETmba8Y:laR9ETmbaB:laR9ETmba9e:manNa8W:ma8ZanNa83aB:vMgBNa8V:maJanNa8X:maBNa8Ua8Y:vMMg85Na80:ma81:vMMMh87aLa8FfgeclfydbgHaeydbge9RhhaEaecitfh8FJbbbbhRdnaHaeSgDmbJbbbbhRa8FheahhAina8Naeclfydbcx2fgHIdwa88:tg8Va8VNaHIdba8::tg8Va8VNaHIdla89:tg8Va8VNMMg8Va8Naeydbcx2fgHIdwa88:tg8Wa8WNaHIdba8::tg8Wa8WNaHIdla89:tg8Wa8WNMMg8WaRaRa8W9DEgRaRa8V9DEhRaecwfheaAcufgAmbkaR:rgRaRNhRkaBa88:tg8Va8VNa87a8::tg8Va8VNa85a89:tg8Va8VNMMaR9EmbaKId8KhndnaDmbina8Na8Fclfydbcx2fgeIdba8Na8Fydbcx2fgHIdbg8W:tgRa89aHIdlg8X:tg80NaeIdla8X:tg8Va8:a8W:tg86N:tg8YaRa85a8X:tg8SNa8Va87a8W:tg8UN:tg8XNa8Va88aHIdwg81:tg8ZNaeIdwa81:tg8Wa80N:tg80a8VaBa81:tg83Na8Wa8SN:tg8VNa8Wa86NaRa8ZN:tg81a8Wa8UNaRa83N:tgRNMMa8Ya8YNa80a80Na81a81NMMa8Xa8XNa8Va8VNaRaRNMMN:rJbbj8:N9Fmda8Fcwfh8FahcufghmbkkJbbbbJbbjZac:vacJbbbb9BEgRa9BaBNa9Ia87Na9EMg8Va8VMMaBNa9Ca85Na9HaBNa9FMg8Va8VMMa85Na9Da87Na9Ja85Na9GMg8Va8VMMa87NanMMM:lNaRa9Ba88Na9Ia8:Na9EMg8Va8VMMa88Na9Ca89Na9Ha88Na9FMg8Va8VMMa89Na9Da8:Na9Ja89Na9GMg8Va8VMMa8:NanMMM:lNJbb;aZNJ:983:g81M9Emba8JaBUdwa8Ja85Udla8Ja87UdbkaXcefgXal9hmbkdnaCmbcbhCxdkcbhXindna8AaXfRbbTmbaOaXcdtgefydbaX9hmbaYaXfhhaQaefh8Ja8NaXcx2fhAa8PaXaC2cdtfhDcbhEincuhLdnahRbbci9hmbaXhLa8JydbgeaXSmba8PaEcdtgHfhKaDaHfIdbhRaXhLinaLhHcuhLdnaKaeaC2cdtfIdbaR9CmbaHcuSmbaHhLagaec8S2fIdyagaHc8S2fIdy9ETmbaehLkaQaecdtfydbgeaX9hmbkka8PaEcdtfhKa8RaEcltfh8FaXheinaKaeaC2cdtfJbbbbJbbjZagaeaLaLcuSEgHc8S2fIdygR:vaRJbbbb9BEa8FaHaC2cltfgHIdwaAIdwNaHIdbaAIdbNaHIdlaAIdlNMMaHIdxMNUdbaQaecdtfydbgeaX9hmbkaEcefgEaC9hmbkkaXcefgXal9hmbxdkkaCmbcbhCkaiavaoarawaCala8Na8Pazasayasc1efaYa8Aaqz:hjjjbkdnamcjjjjlGTmbazmbaaTmbabhecbhLinaYaeydbgAfRbbc3thQaecwfgXydbhHcjjjj94hCdna5aAcdtgEfydbaeclfgKydbgOSmbcjjjj94cba8EaOcdtfydbaASEhCkaeaQaCVaAVBdbaYaOfRbbc3th8Fcjjjj94hCcjjjj94hQdna5aOcdtfydbaHSmbcjjjj94cba8EaHcdtfydbaOSEhQkaKa8FaQVaOVBdbaYaHfRbbc3thOdna5aHcdtfydbaASmbcjjjj94cba8EaEfydbaHSEhCkaXaOaCVaHVBdbaecxfheaLcifgLaa6mbkkdnazTmbaaTmbaaheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaZaU:rNUdbkdnasyd;8egHTmbaHcdtasc:Ceffc98fheinaeydbcbyd:m:H:cjbH:bjjjbbaec98fheaHcufgHmbkkascj;sbf8Kjjjjbaak;Yieouabydlhvabydbclfcbaicdtz:tjjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd1:H:cjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:tjjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd:m:H:cjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkabclfhbawclfhwaiaDcefgD9hmbkkk;:odvuv998Jjjjjbca9Rgocbyd1:G:cjbBdKaocb8Pdj:G:cjb83izaocbydN:G:cjbBdwaocb8Pd:m:G:cjb83ibdnadTmbaicd4hrdnabmbdnalTmbcbhwinaealawcdtfydbar2cdtfhDcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkawcefgwad9hmbxikkarcdthwcbhDincbhiinaoczfaifgqaeaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkaeawfheaDcefgDad9hmbxdkkdnalTmbcbhwinabawcx2fgiaealawcdtfydbar2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkawcefgwad9hmbxdkkarcdthlcbhwaehDinabawcx2fgiaeawar2cdtfgqIdbUdbaiaqIdlUdlaiaqIdwUdwcbhiinaoczfaifgqaDaifIdbgkaqIdbgxaxak9EEUdbaoaifgqakaqIdbgxaxak9DEUdbaiclfgicx9hmbkaDalfhDawcefgwad9hmbkkJbbbbaoIdbaoIdzgx:tgkakJbbbb9DEgkaoIdlaoIdCgm:tgPaPak9DEgkaoIdwaoIdKgP:tgsasak9DEhsdnabTmbadTmbJbbbbJbbjZas:vasJbbbb9BEhkinabakabIdbax:tNUdbabclfgoakaoIdbam:tNUdbabcwfgoakaoIdbaP:tNUdbabcxfhbadcufgdmbkkdnavTmbavaPUdwavamUdlavaxUdbkask:WlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvyd:G:G:cjbcdtfydbcdtfydbhodnalawavfydbcdtfydbgqabaqcdtfgkydbgvSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnaoabaocdtfgkydbgvSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnaxabavfgDydbgvSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhkabhvcbhoindndnaoalydbgq9hmbdnaoavydbgq9hmbavakBdbakcefhkxdkavabaqcdtfydbBdbxekavabaqcdtfydbBdbkalclfhlavclfhvaeaocefgo9hmbkakk;jiilud99euabcbaecltz:tjjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakaqakIdlMUdlakaDakIdwMUdwakakIdxJbbjZMUdxaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhkaehrinakcxfgoIdbhDaocbBdbakakIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbakclfgoaDaoIdbNUdbakcwfgoaDaoIdbNUdbakczfhkarcufgrmbkkdnalTmbinavadydbcltfgkaicwfIdbakIdw:tgDaDNaiIdbakIdb:tgDaDNaiclfIdbakIdl:tgDaDNMMgDakIdxgqaqaD9DEUdxadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhkinabakIdbUdbakczfhkabclfhbaecufgembkkk:moerudnaoTmbaecd4hzdnavTmbaicd4hHavcdthOcbhAindnaPaAfRbbTmbaAhednaDTmbaDaAcdtfydbhekdnasTmbasaefRbbceGmekdnamaAfRbbclSmbabaeaz2cdtfgiaraAcx2fgCIdbakNaxIdbMUdbaiaCIdlakNaxIdlMUdlaiaCIdwakNaxIdwMUdwkadaeaH2cdtfhXaqheawhiavhCinaXaeydbcdtgQfaiIdbalaQfIdb:vUdbaeclfheaiclfhiaCcufgCmbkkawaOfhwaAcefgAao9hmbxdkkdnasmbcbheaDhiindnaPaefRbbTmbaehCdnaDTmbaiydbhCkamaefRbbclSmbabaCaz2cdtfgCarIdbakNaxIdbMUdbaCarclfIdbakNaxIdlMUdlaCarcwfIdbakNaxIdwMUdwkaiclfhiarcxfhraoaecefge9hmbxdkkdnaDTmbindnaPRbbTmbasaDydbgefRbbceGmbamRbbclSmbabaeaz2cdtfgearIdbakNaxIdbMUdbaearclfIdbakNaxIdlMUdlaearcwfIdbakNaxIdwMUdwkaPcefhPaDclfhDamcefhmarcxfhraocufgombxdkkazcdthicbheindnaPaefRbbTmbasaefRbbceGmbamaefRbbclSmbabarIdbakNaxIdbMUdbabclfarclfIdbakNaxIdlMUdbabcwfarcwfIdbakNaxIdwMUdbkarcxfhrabaifhbaoaecefge9hmbkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbkRbababaeadaialavaoarawaDaqakaxcjjjjdVamz:bjjjbk:g8Koque99due99duq998Jjjjjbc;Wb9Rgq8Kjjjjbcbhkaqcxfcbc;Kbz:tjjjb8Aaqcualcx2alc;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbgxBdxaqceBd2axaialavcbcbz:ejjjb8AaqcualcdtalcFFFFi0Egmcbyd1:H:cjbHjjjjbbgiBdzaqcdBd2dndnJFF959eJbbjZawJbbjZawJbbjZ9DE:vawJ9VO:d869DEgw:lJbbb9p9DTmbaw:OhPxekcjjjj94hPkadci9Uhsarco9UhzdndnaombaPcd9imekdnalTmbaPcuf:YhwdnaoTmbcbhvaihHaxhOindndnaoavfRbbceGTmbavcjjjjlVhAxekdndnaOclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcqthAdndnaOcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXVhAdndnaOIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXcCtVhAkaHaABdbaHclfhHaOcxfhOalavcefgv9hmbxdkkaxhvaihOalhHindndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcCthAdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqtaAVhAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaOaAaXVBdbavcxfhvaOclfhOaHcufgHmbkkadTmbcbhkaehvcbhOinakaiavclfydbcdtfydbgHaiavcwfydbcdtfydbgA9haiavydbcdtfydbgXaH9haXaA9hGGfhkavcxfhvaOcifgOad6mbkkarci9UhQdndnaz:Z:rJbbbZMgw:lJbbb9p9DTmbaw:Ohvxekcjjjj94hvkaQ:ZhLcbhKc:bwhzdninakaQ9pmeazaP9Rcd9imeavazcufgOavaO9iEaPcefavaP9kEhYdnalTmbaYcuf:YhwdnaoTmbcbhOaihHaxhvindndnaoaOfRbbceGTmbaOcjjjjlVhAxekdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcqthAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXVhAdndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaAaXcCtVhAkaHaABdbaHclfhHavcxfhvalaOcefgO9hmbxdkkaxhvaihOalhHindndnavIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhAxekcjjjj94hAkaAcCthAdndnavclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqtaAVhAdndnavcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaOaAaXVBdbavcxfhvaOclfhOaHcufgHmbkkcbhOdnadTmbaehvcbhHinaOaiavclfydbcdtfydbgAaiavcwfydbcdtfydbgX9haiavydbcdtfydbgraA9haraX9hGGfhOavcxfhvaHcifgHad6mbkkdnas:ZgCaL:taY:Ygwaz:Y:tg8ANak:ZgEaO:Zg3:tNaEaL:tawaP:Y:tg5Na3aC:tNMg8EJbbbb9BmbaCaE:ta5a8Aa3aL:tNNNa8E:vawMhwkdndnaOaQ0mbaOhkaYhPxekaOhsaYhzkdndnaKcl0mbdnawJbbbZMgw:lJbbb9p9DTmbaw:Ohvxdkcjjjj94hvxekaPazfcd9ThvkaKcefgKcs9hmbkkdndndnakmbJbbjZhwcbhOcdhvaDmexdkalcd4alfhHcehOinaOgvcethOavaH6mbkcbhOaqcuavcdtgYavcFFFFi0Ecbyd1:H:cjbHjjjjbbgKBdCaqciBd2aqamcbyd1:H:cjbHjjjjbbgzBdKaqclBd2dndndndnalTmbaPcuf:YhwaoTmecbhOaihAaxhHindndnaoaOfRbbceGTmbaOcjjjjlVhXxekdndnaHclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcqthXdndnaHcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkaXarVhXdndnaHIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkaXarcCtVhXkaAaXBdbaAclfhAaHcxfhHalaOcefgO9hmbxikkaKcFeaYz:tjjjb8AcbhPcbhvxdkaxhOaihHalhAindndnaOIdbawNJbbbZMgC:lJbbb9p9DTmbaC:OhXxekcjjjj94hXkaXcCthXdndnaOclfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkarcqtaXVhXdndnaOcwfIdbawNJbbbZMgC:lJbbb9p9DTmbaC:Ohrxekcjjjj94hrkaHaXarVBdbaOcxfhOaHclfhHaAcufgAmbkkaKcFeaYz:tjjjbhravcufhocbhPcbhYindndndnaraiaYcdtgKfydbgAcm4aA7c:v;t;h;Ev2gvcs4av7aoGgHcdtfgXydbgOcuSmbcehvinaiaOcdtgOfydbaASmdaHavfhOavcefhvaraOaoGgHcdtfgXydbgOcu9hmbkkaXaYBdbaPhvaPcefhPxekazaOfydbhvkazaKfavBdbaYcefgYal9hmbkcuaPc8S2gOaPc;D;O;f8U0EhvkcbhXaqavcbyd1:H:cjbHjjjjbbgvBd3aqcvBd2avcbaOz:tjjjbhOdnadTmbaehiinaxaiclfydbgrcx2fgvIdbaxaiydbgocx2fgHIdbg3:tgCaxaicwfydbgYcx2fgAIdlaHIdlg8A:tgwNavIdla8A:tgEaAIdba3:tg8EN:tgLaLNaEaAIdwaHIdwg5:tg8FNavIdwa5:tgEawN:tgwawNaEa8ENaCa8FN:tgCaCNMMg8E:rhEJbbnnJbbjZazaocdtfydbgvazarcdtfydbgASavazaYcdtfydbgrSGgHEh8Fdna8EJbbbb9ETmbaLaE:vhLaCaE:vhCawaE:vhwkaOavc8S2fgvavIdbawa8FaE:rNgEawNNg8FMUdbavaCaEaCNgaNghavIdlMUdlavaLaEaLNg8ENggavIdwMUdwavawaaNgaavIdxMUdxava8EawNg8JavIdzMUdzavaCa8ENg8EavIdCMUdCavawaEaLa5Nawa3Na8AaCNMM:mg8ANg3NgwavIdKMUdKavaCa3NgCavId3MUd3avaLa3NgLavIdaMUdaava3a8ANg3avId8KMUd8KavaEavIdyMUdydnaHmbaOaAc8S2fgva8FavIdbMUdbavahavIdlMUdlavagavIdwMUdwavaaavIdxMUdxava8JavIdzMUdzava8EavIdCMUdCavawavIdKMUdKavaCavId3MUd3avaLavIdaMUdaava3avId8KMUd8KavaEavIdyMUdyaOarc8S2fgva8FavIdbMUdbavahavIdlMUdlavagavIdwMUdwavaaavIdxMUdxava8JavIdzMUdzava8EavIdCMUdCavawavIdKMUdKavaCavId3MUd3avaLavIdaMUdaava3avId8KMUd8KavaEavIdyMUdykaicxfhiaXcifgXad6mbkkcbhAaqcuaPcdtgvaPcFFFFi0Egicbyd1:H:cjbHjjjjbbgHBdaaqcoBd2aqaicbyd1:H:cjbHjjjjbbgiBd8KaqcrBd2aHcFeavz:tjjjbhYdnalTmbazhHinJbbbbJbbjZaOaHydbgXc8S2fgvIdygw:vawJbbbb9BEavIdwaxcwfIdbgwNavIdzaxIdbgCNavIdaMgLaLMMawNavIdlaxclfIdbgLNavIdCawNavId3MgwawMMaLNavIdbaCNavIdxaLNavIdKMgwawMMaCNavId8KMMM:lNhwdndnaYaXcdtgvfgXydbcuSmbaiavfIdbaw9ETmekaXaABdbaiavfawUdbkaHclfhHaxcxfhxalaAcefgA9hmbkkdndnaPmbJbbbbhwxekJbbbbhwinaiIdbgCawawaC9DEhwaiclfhiaPcufgPmbkaw:rhwkakcd4akfhOcehiinaigvcethiavaO6mbkcbhOaqcuavcdtgiavcFFFFi0Ecbyd1:H:cjbHjjjjbbgHBdyaHcFeaiz:tjjjbhXdnadTmbavcufhrcbhPcbhxindnazaeaxcdtfgvydbcdtfydbgiazavclfydbcdtfydbgOSmbaiazavcwfydbcdtfydbgvSmbaOavSmbaYavcdtfydbhAdndnaYaOcdtfydbgvaYaicdtfydbgi9pmbavaA9pmbaAhlaihoavhAxekdnaAai9pmbaAav9pmbaihlavhoxekavhlaAhoaihAkabaPcx2fgvaABdbavcwfaoBdbavclfalBdbdnaXaoc:3F;N8N2alc:F:b:DD27aAc;D;O:B8J27arGgOcdtfgvydbgicuSmbcehHinaHhvdnabaicx2fgiydbaA9hmbaiydlal9hmbaiydwaoSmikavcefhHaXaOavfarGgOcdtfgvydbgicu9hmbkkavaPBdbaPcefhPkaxcifgxad6mbkaPci2hOkcwhvaDTmekaDawUdbkavcdthvaqcxfc98fhiinaiavfydbcbyd:m:H:cjbH:bjjjbbavc98fgvmbkaqc;Wbf8KjjjjbaOk:3ldrue9:8Jjjjjbc;Wb9Rgr8Kjjjjbcbhwarcxfcbc;Kbz:tjjjb8AdnabaeSmbabaeadcdtzMjjjb8AkarcualcdtalcFFFFi0EgDcbyd1:H:cjbHjjjjbbgqBdxarceBd2aqcbaialavcbarcxfz:djjjbcualcx2alc;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbhkarcxfaryd2gxcdtfakBdbaraxcefgmBd2akaialavcbcbz:ejjjb8AarcxfamcdtfaDcbyd1:H:cjbHjjjjbbgiBdbaraxcdfgvBd2arcxfavcdtfcuaialaeadaqz:fjjjbgecltaecjjjjiGEcbyd1:H:cjbHjjjjbbgqBdbaqaeaiakalz:gjjjbaxcifhkdnadTmbaoaoNhocbhwabhlcbheindnaqaialydbgvcdtfydbcdtfIdbao9ETmbalclf8PdbhPabawcdtfgDavBdbaDclfaP83dbawcifhwkalcxfhlaecifgead6mbkkdnakTmbaxcdtarcxffcwfhlinalydbcbyd:m:H:cjbH:bjjjbbalc98fhlakcufgkmbkkarc;Wbf8Kjjjjbawk:WCoDud99vue99vuv998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:tjjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd1:H:cjbHjjjjbbgqBdxawceBd2aqaeadaicbcbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd1:H:cjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd1:H:cjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhCcbhXadhQcbhLinaeaCcufgiaeai9iEaPcefaeaP9kEhDdndnadTmbaDcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMgK:lJbbb9p9DTmbaK:OhYxekcjjjj94hYkaYcCthYdndnaiclfIdbaONJbbbZMgK:lJbbb9p9DTmbaK:Oh8Axekcjjjj94h8Aka8AcqtaYVhYdndnaicwfIdbaONJbbbZMgK:lJbbb9p9DTmbaK:Oh8Axekcjjjj94h8AkaeaYa8AVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:tjjjbhEcbh3cbh5indnaEaxa5cdtfydbgYcm4aY7c:v;t;h;Ev2gics4ai7aAGgmcdtfg8AydbgecuSmbaeaYSmbcehiinaEamaifaAGgmcdtfg8AydbgecuSmeaicefhiaeaY9hmbkka8AaYBdba3aecuSfh3a5cefg5ad9hmbxdkkazcFeasz:tjjjb8Acbh3kdnaQ:ZgKaH:taD:YgOaC:Y:tg8ENaX:Zg8Fa3:Zga:tNa8FaH:taOaP:Y:tghNaaaK:tNMggJbbbb9BmbaKa8F:taha8EaaaH:tNNNag:vaOMhOkaPaDa3ar0giEhPaXa3aiEhXdna3arSmbaDaCaiEgCaP9Rcd9imbdndnaLcl0mbdnaOJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPaCfcd9Theka3aQaiEhQaLcefgLcs9hmekkdndnaXmbcihicbhDxekcbhiawakcbyd1:H:cjbHjjjjbbg5BdKawclBd2aPcuf:YhKdndnadTmbaqhiaxheadhmindndnaiIdbaKNJbbbZMgO:lJbbb9p9DTmbaO:OhYxekcjjjj94hYkaYcCthYdndnaiclfIdbaKNJbbbZMgO:lJbbb9p9DTmbaO:Oh8Axekcjjjj94h8Aka8AcqtaYVhYdndnaicwfIdbaKNJbbbZMgO:lJbbb9p9DTmbaO:Oh8Axekcjjjj94h8AkaeaYa8AVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:tjjjbhEcbhDcbh3indndndnaEaxa3cdtgCfydbgYcm4aY7c:v;t;h;Ev2gics4ai7aAGgmcdtfg8AydbgecuSmbcehiinaxaecdtgefydbaYSmdamaifheaicefhiaEaeaAGgmcdtfg8Aydbgecu9hmbkka8Aa3BdbaDhiaDcefhDxeka5aefydbhika5aCfaiBdba3cefg3ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:tjjjb8AcbhDcbhekawaecbyd1:H:cjbHjjjjbbgeBd3awcvBd2aecbaiz:tjjjbh8Aavcd4hxdnadTmbdnalTmbaxcdthEa5hYaqhealhmadhAina8AaYydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaYclfhYaecxfheamaEfhmaAcufgAmbxdkka5hmaqheadhYina8Aamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaYcufgYmbkkdnaDTmba8AhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhYawcuaDcdtgCaDcFFFFi0Egicbyd1:H:cjbHjjjjbbgeBdaawcoBd2awaicbyd1:H:cjbHjjjjbbgEBd8KaecFeaCz:tjjjbh3dnadTmbaoJbbjZJbbjZaK:vaPceSENgOaONhKaxcdthxalheinaKaec;8:G:cjbalEgmIdwa8Aa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndna3aAcdtgifgmydbcuSmbaEaifIdbaO9ETmekamaYBdbaEaifaOUdbka5clfh5aqcxfhqaeaxfheadaYcefgY9hmbkkaba3aCzMjjjb8Acrhikaicdthiawcxfc98fheinaeaifydbcbyd:m:H:cjbH:bjjjbbaic98fgimbkkawc;Wbf8KjjjjbaDk:Pdidui99ducbhi8Jjjjjbca9Rglcbyd1:G:cjbBdKalcb8Pdj:G:cjb83izalcbydN:G:cjbBdwalcb8Pd:m:G:cjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:tjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;Bidqui998Jjjjjbc;Wb9Rgl8Kjjjjbalcxfcbc;Kbz:tjjjb8Aadcd4adfhvcehoinaogrcethoarav6mbkalcuarcdtgoarcFFFFi0Ecbyd1:H:cjbHjjjjbbgvBdxavcFeaoz:tjjjbhwdnadTmbaicd4hDarcufhqcbhkindndnawcbaeakaD2cdtfgrydlgiaicjjjj94SEgocH4ao7c:F:b:DD2cbarydbgxaxcjjjj94SEgocH4ao7c;D;O:B8J27cbarydwgmamcjjjj94SEgrcH4ar7c:3F;N8N27aqGgvcdtfgrydbgocuSmbam::hPai::hsax::hzcehiinaihrdnaeaoaD2cdtfgiIdbaz9CmbaiIdlas9CmbaiIdwaP9BmikarcefhiawavarfaqGgvcdtfgrydbgocu9hmbkkarakBdbakhokabakcdtfaoBdbakcefgkad9hmbkkalydxcbyd:m:H:cjbH:bjjjbbalc;Wbf8Kjjjjbk9teiucbcbyd:q:H:cjbgeabcifc98GfgbBd:q:H:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:H:cjbgeabcrfc94GfgbBd:q:H:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikTeeucbabcbyd:q:H:cjbge9Rcifc98GaefgbBd:q:H:cjbdnabZbcztge9nmbabae9RcFFifcz4nb8Akkk:Kedbcj:Gdk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbeeeeeebebbeeebeebbbbebebbbbbbbbbbbbbbbbbbc1:Hdkxebbbdbbb:G:qbb";
620
+ var wasmpack = new Uint8Array([
621
+ 32,
622
+ 0,
623
+ 65,
624
+ 2,
625
+ 1,
626
+ 106,
627
+ 34,
628
+ 33,
629
+ 3,
630
+ 128,
631
+ 11,
632
+ 4,
633
+ 13,
634
+ 64,
635
+ 6,
636
+ 253,
637
+ 10,
638
+ 7,
639
+ 15,
640
+ 116,
641
+ 127,
642
+ 5,
643
+ 8,
644
+ 12,
645
+ 40,
646
+ 16,
647
+ 19,
648
+ 54,
649
+ 20,
650
+ 9,
651
+ 27,
652
+ 255,
653
+ 113,
654
+ 17,
655
+ 42,
656
+ 67,
657
+ 24,
658
+ 23,
659
+ 146,
660
+ 148,
661
+ 18,
662
+ 14,
663
+ 22,
664
+ 45,
665
+ 70,
666
+ 69,
667
+ 56,
668
+ 114,
669
+ 101,
670
+ 21,
671
+ 25,
672
+ 63,
673
+ 75,
674
+ 136,
675
+ 108,
676
+ 28,
677
+ 118,
678
+ 29,
679
+ 73,
680
+ 115
681
+ ]);
682
+ if (typeof WebAssembly !== "object") {
683
+ return {
684
+ supported: false
685
+ };
686
+ }
687
+ var instance;
688
+ var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
689
+ instance = result.instance;
690
+ instance.exports.__wasm_call_ctors();
691
+ });
692
+ function unpack(data) {
693
+ var result = new Uint8Array(data.length);
694
+ for (var i = 0; i < data.length; ++i) {
695
+ var ch = data.charCodeAt(i);
696
+ result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
697
+ }
698
+ var write = 0;
699
+ for (var i = 0; i < data.length; ++i) {
700
+ result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
701
+ }
702
+ return result.buffer.slice(0, write);
703
+ }
704
+ function assert(cond) {
705
+ if (!cond) {
706
+ throw new Error("Assertion failed");
707
+ }
708
+ }
709
+ function bytes(view) {
710
+ return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
711
+ }
712
+ function genremap(fun, positions, vertices, stride) {
713
+ var sbrk = instance.exports.sbrk;
714
+ var rp = sbrk(vertices * 4);
715
+ var sp = sbrk(vertices * stride * 4);
716
+ var heap = new Uint8Array(instance.exports.memory.buffer);
717
+ heap.set(bytes(positions), sp);
718
+ fun(rp, sp, vertices, stride * 4);
719
+ heap = new Uint8Array(instance.exports.memory.buffer);
720
+ var remap = new Uint32Array(vertices);
721
+ new Uint8Array(remap.buffer).set(heap.subarray(rp, rp + vertices * 4));
722
+ sbrk(rp - sbrk(0));
723
+ return remap;
724
+ }
725
+ function reorder(fun, indices, vertices) {
726
+ var sbrk = instance.exports.sbrk;
727
+ var ip = sbrk(indices.length * 4);
728
+ var rp = sbrk(vertices * 4);
729
+ var heap = new Uint8Array(instance.exports.memory.buffer);
730
+ var indices8 = bytes(indices);
731
+ heap.set(indices8, ip);
732
+ var unique = fun(rp, ip, indices.length, vertices);
733
+ heap = new Uint8Array(instance.exports.memory.buffer);
734
+ var remap = new Uint32Array(vertices);
735
+ new Uint8Array(remap.buffer).set(heap.subarray(rp, rp + vertices * 4));
736
+ sbrk(ip - sbrk(0));
737
+ for (var i = 0; i < indices.length; ++i) indices[i] = remap[indices[i]];
738
+ return [remap, unique];
739
+ }
740
+ function maxindex(source) {
741
+ var result = 0;
742
+ for (var i = 0; i < source.length; ++i) {
743
+ var index = source[i];
744
+ result = result < index ? index : result;
745
+ }
746
+ return result;
747
+ }
748
+ function simplify(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, target_index_count, target_error, options) {
749
+ var sbrk = instance.exports.sbrk;
750
+ var te = sbrk(4);
751
+ var ti = sbrk(index_count * 4);
752
+ var sp = sbrk(vertex_count * vertex_positions_stride);
753
+ var si = sbrk(index_count * 4);
754
+ var heap = new Uint8Array(instance.exports.memory.buffer);
755
+ heap.set(bytes(vertex_positions), sp);
756
+ heap.set(bytes(indices), si);
757
+ var result = fun(ti, si, index_count, sp, vertex_count, vertex_positions_stride, target_index_count, target_error, options, te);
758
+ heap = new Uint8Array(instance.exports.memory.buffer);
759
+ var target = new Uint32Array(result);
760
+ bytes(target).set(heap.subarray(ti, ti + result * 4));
761
+ var error = new Float32Array(1);
762
+ bytes(error).set(heap.subarray(te, te + 4));
763
+ sbrk(te - sbrk(0));
764
+ return [target, error[0]];
765
+ }
766
+ function simplifyAttr(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, vertex_attributes, vertex_attributes_stride, attribute_weights, vertex_lock, target_index_count, target_error, options) {
767
+ var sbrk = instance.exports.sbrk;
768
+ var te = sbrk(4);
769
+ var ti = sbrk(index_count * 4);
770
+ var sp = sbrk(vertex_count * vertex_positions_stride);
771
+ var sa = sbrk(vertex_count * vertex_attributes_stride);
772
+ var sw = sbrk(attribute_weights.length * 4);
773
+ var si = sbrk(index_count * 4);
774
+ var vl = vertex_lock ? sbrk(vertex_count) : 0;
775
+ var heap = new Uint8Array(instance.exports.memory.buffer);
776
+ heap.set(bytes(vertex_positions), sp);
777
+ heap.set(bytes(vertex_attributes), sa);
778
+ heap.set(bytes(attribute_weights), sw);
779
+ heap.set(bytes(indices), si);
780
+ if (vertex_lock) {
781
+ heap.set(bytes(vertex_lock), vl);
782
+ }
783
+ var result = fun(
784
+ ti,
785
+ si,
786
+ index_count,
787
+ sp,
788
+ vertex_count,
789
+ vertex_positions_stride,
790
+ sa,
791
+ vertex_attributes_stride,
792
+ sw,
793
+ attribute_weights.length,
794
+ vl,
795
+ target_index_count,
796
+ target_error,
797
+ options,
798
+ te
799
+ );
800
+ heap = new Uint8Array(instance.exports.memory.buffer);
801
+ var target = new Uint32Array(result);
802
+ bytes(target).set(heap.subarray(ti, ti + result * 4));
803
+ var error = new Float32Array(1);
804
+ bytes(error).set(heap.subarray(te, te + 4));
805
+ sbrk(te - sbrk(0));
806
+ return [target, error[0]];
807
+ }
808
+ function simplifyUpdate(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, vertex_attributes, vertex_attributes_stride, attribute_weights, vertex_lock, target_index_count, target_error, options) {
809
+ var sbrk = instance.exports.sbrk;
810
+ var te = sbrk(4);
811
+ var sp = sbrk(vertex_count * vertex_positions_stride);
812
+ var sa = sbrk(vertex_count * vertex_attributes_stride);
813
+ var sw = sbrk(attribute_weights.length * 4);
814
+ var si = sbrk(index_count * 4);
815
+ var vl = vertex_lock ? sbrk(vertex_count) : 0;
816
+ var heap = new Uint8Array(instance.exports.memory.buffer);
817
+ heap.set(bytes(vertex_positions), sp);
818
+ heap.set(bytes(vertex_attributes), sa);
819
+ heap.set(bytes(attribute_weights), sw);
820
+ heap.set(bytes(indices), si);
821
+ if (vertex_lock) {
822
+ heap.set(bytes(vertex_lock), vl);
823
+ }
824
+ var result = fun(
825
+ si,
826
+ index_count,
827
+ sp,
828
+ vertex_count,
829
+ vertex_positions_stride,
830
+ sa,
831
+ vertex_attributes_stride,
832
+ sw,
833
+ attribute_weights.length,
834
+ vl,
835
+ target_index_count,
836
+ target_error,
837
+ options,
838
+ te
839
+ );
840
+ heap = new Uint8Array(instance.exports.memory.buffer);
841
+ bytes(indices).set(heap.subarray(si, si + result * 4));
842
+ bytes(vertex_positions).set(heap.subarray(sp, sp + vertex_count * vertex_positions_stride));
843
+ bytes(vertex_attributes).set(heap.subarray(sa, sa + vertex_count * vertex_attributes_stride));
844
+ var error = new Float32Array(1);
845
+ bytes(error).set(heap.subarray(te, te + 4));
846
+ sbrk(te - sbrk(0));
847
+ return [result, error[0]];
848
+ }
849
+ function simplifyScale(fun, vertex_positions, vertex_count, vertex_positions_stride) {
850
+ var sbrk = instance.exports.sbrk;
851
+ var sp = sbrk(vertex_count * vertex_positions_stride);
852
+ var heap = new Uint8Array(instance.exports.memory.buffer);
853
+ heap.set(bytes(vertex_positions), sp);
854
+ var result = fun(sp, vertex_count, vertex_positions_stride);
855
+ sbrk(sp - sbrk(0));
856
+ return result;
857
+ }
858
+ function simplifyPoints(fun, vertex_positions, vertex_count, vertex_positions_stride, vertex_colors, vertex_colors_stride, color_weight, target_vertex_count) {
859
+ var sbrk = instance.exports.sbrk;
860
+ var ti = sbrk(target_vertex_count * 4);
861
+ var sp = sbrk(vertex_count * vertex_positions_stride);
862
+ var sc = vertex_colors ? sbrk(vertex_count * vertex_colors_stride) : 0;
863
+ var heap = new Uint8Array(instance.exports.memory.buffer);
864
+ heap.set(bytes(vertex_positions), sp);
865
+ if (vertex_colors) {
866
+ heap.set(bytes(vertex_colors), sc);
867
+ }
868
+ var result = fun(ti, sp, vertex_count, vertex_positions_stride, sc, vertex_colors_stride, color_weight, target_vertex_count);
869
+ heap = new Uint8Array(instance.exports.memory.buffer);
870
+ var target = new Uint32Array(result);
871
+ bytes(target).set(heap.subarray(ti, ti + result * 4));
872
+ sbrk(ti - sbrk(0));
873
+ return target;
874
+ }
875
+ function simplifySloppy(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, vertex_lock, target_index_count, target_error) {
876
+ var sbrk = instance.exports.sbrk;
877
+ var te = sbrk(4);
878
+ var ti = sbrk(index_count * 4);
879
+ var sp = sbrk(vertex_count * vertex_positions_stride);
880
+ var si = sbrk(index_count * 4);
881
+ var vl = vertex_lock ? sbrk(vertex_count) : 0;
882
+ var heap = new Uint8Array(instance.exports.memory.buffer);
883
+ heap.set(bytes(vertex_positions), sp);
884
+ heap.set(bytes(indices), si);
885
+ if (vertex_lock) {
886
+ heap.set(bytes(vertex_lock), vl);
887
+ }
888
+ var result = fun(ti, si, index_count, sp, vertex_count, vertex_positions_stride, vl, target_index_count, target_error, te);
889
+ heap = new Uint8Array(instance.exports.memory.buffer);
890
+ var target = new Uint32Array(result);
891
+ bytes(target).set(heap.subarray(ti, ti + result * 4));
892
+ var error = new Float32Array(1);
893
+ bytes(error).set(heap.subarray(te, te + 4));
894
+ sbrk(te - sbrk(0));
895
+ return [target, error[0]];
896
+ }
897
+ function simplifyPrune(fun, indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, target_error) {
898
+ var sbrk = instance.exports.sbrk;
899
+ var ti = sbrk(index_count * 4);
900
+ var sp = sbrk(vertex_count * vertex_positions_stride);
901
+ var si = sbrk(index_count * 4);
902
+ var heap = new Uint8Array(instance.exports.memory.buffer);
903
+ heap.set(bytes(vertex_positions), sp);
904
+ heap.set(bytes(indices), si);
905
+ var result = fun(ti, si, index_count, sp, vertex_count, vertex_positions_stride, target_error);
906
+ heap = new Uint8Array(instance.exports.memory.buffer);
907
+ var target = new Uint32Array(result);
908
+ bytes(target).set(heap.subarray(ti, ti + result * 4));
909
+ sbrk(ti - sbrk(0));
910
+ return target;
911
+ }
912
+ var simplifyOptions = {
913
+ LockBorder: 1,
914
+ Sparse: 2,
915
+ ErrorAbsolute: 4,
916
+ Prune: 8,
917
+ Regularize: 16,
918
+ Permissive: 32,
919
+ RegularizeLight: 64,
920
+ _InternalDebug: 1 << 30
921
+ // internal, don't use!
922
+ };
923
+ return {
924
+ ready,
925
+ supported: true,
926
+ compactMesh: function(indices) {
927
+ assert(
928
+ indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
929
+ );
930
+ assert(indices.length % 3 == 0);
931
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
932
+ var result = reorder(instance.exports.meshopt_optimizeVertexFetchRemap, indices32, maxindex(indices) + 1);
933
+ if (indices !== indices32) {
934
+ for (var i = 0; i < indices32.length; ++i) {
935
+ indices[i] = indices32[i];
936
+ }
937
+ }
938
+ return result;
939
+ },
940
+ generatePositionRemap: function(vertex_positions, vertex_positions_stride) {
941
+ assert(vertex_positions instanceof Float32Array);
942
+ assert(vertex_positions.length % vertex_positions_stride == 0);
943
+ assert(vertex_positions_stride >= 3);
944
+ return genremap(
945
+ instance.exports.meshopt_generatePositionRemap,
946
+ vertex_positions,
947
+ vertex_positions.length / vertex_positions_stride,
948
+ vertex_positions_stride
949
+ );
950
+ },
951
+ simplify: function(indices, vertex_positions, vertex_positions_stride, target_index_count, target_error, flags) {
952
+ assert(
953
+ indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
954
+ );
955
+ assert(indices.length % 3 == 0);
956
+ assert(vertex_positions instanceof Float32Array);
957
+ assert(vertex_positions.length % vertex_positions_stride == 0);
958
+ assert(vertex_positions_stride >= 3);
959
+ assert(target_index_count >= 0 && target_index_count <= indices.length);
960
+ assert(target_index_count % 3 == 0);
961
+ assert(target_error >= 0);
962
+ var options = 0;
963
+ for (var i = 0; i < (flags ? flags.length : 0); ++i) {
964
+ assert(flags[i] in simplifyOptions);
965
+ options |= simplifyOptions[flags[i]];
966
+ }
967
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
968
+ var result = simplify(
969
+ instance.exports.meshopt_simplify,
970
+ indices32,
971
+ indices.length,
972
+ vertex_positions,
973
+ vertex_positions.length / vertex_positions_stride,
974
+ vertex_positions_stride * 4,
975
+ target_index_count,
976
+ target_error,
977
+ options
978
+ );
979
+ result[0] = indices instanceof Uint32Array ? result[0] : new indices.constructor(result[0]);
980
+ return result;
981
+ },
982
+ simplifyWithAttributes: function(indices, vertex_positions, vertex_positions_stride, vertex_attributes, vertex_attributes_stride, attribute_weights, vertex_lock, target_index_count, target_error, flags) {
983
+ assert(
984
+ indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
985
+ );
986
+ assert(indices.length % 3 == 0);
987
+ assert(vertex_positions instanceof Float32Array);
988
+ assert(vertex_positions.length % vertex_positions_stride == 0);
989
+ assert(vertex_positions_stride >= 3);
990
+ assert(vertex_attributes instanceof Float32Array);
991
+ assert(vertex_attributes.length == vertex_attributes_stride * (vertex_positions.length / vertex_positions_stride));
992
+ assert(vertex_attributes_stride >= 0);
993
+ assert(vertex_lock == null || vertex_lock instanceof Uint8Array);
994
+ assert(vertex_lock == null || vertex_lock.length == vertex_positions.length / vertex_positions_stride);
995
+ assert(target_index_count >= 0 && target_index_count <= indices.length);
996
+ assert(target_index_count % 3 == 0);
997
+ assert(target_error >= 0);
998
+ assert(Array.isArray(attribute_weights));
999
+ assert(vertex_attributes_stride >= attribute_weights.length);
1000
+ assert(attribute_weights.length <= 32);
1001
+ for (var i = 0; i < attribute_weights.length; ++i) {
1002
+ assert(attribute_weights[i] >= 0);
1003
+ }
1004
+ var options = 0;
1005
+ for (var i = 0; i < (flags ? flags.length : 0); ++i) {
1006
+ assert(flags[i] in simplifyOptions);
1007
+ options |= simplifyOptions[flags[i]];
1008
+ }
1009
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1010
+ var result = simplifyAttr(
1011
+ instance.exports.meshopt_simplifyWithAttributes,
1012
+ indices32,
1013
+ indices.length,
1014
+ vertex_positions,
1015
+ vertex_positions.length / vertex_positions_stride,
1016
+ vertex_positions_stride * 4,
1017
+ vertex_attributes,
1018
+ vertex_attributes_stride * 4,
1019
+ new Float32Array(attribute_weights),
1020
+ vertex_lock,
1021
+ target_index_count,
1022
+ target_error,
1023
+ options
1024
+ );
1025
+ result[0] = indices instanceof Uint32Array ? result[0] : new indices.constructor(result[0]);
1026
+ return result;
1027
+ },
1028
+ simplifyWithUpdate: function(indices, vertex_positions, vertex_positions_stride, vertex_attributes, vertex_attributes_stride, attribute_weights, vertex_lock, target_index_count, target_error, flags) {
1029
+ assert(
1030
+ indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
1031
+ );
1032
+ assert(indices.length % 3 == 0);
1033
+ assert(vertex_positions instanceof Float32Array);
1034
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1035
+ assert(vertex_positions_stride >= 3);
1036
+ assert(vertex_attributes instanceof Float32Array);
1037
+ assert(vertex_attributes.length == vertex_attributes_stride * (vertex_positions.length / vertex_positions_stride));
1038
+ assert(vertex_attributes_stride >= 0);
1039
+ assert(vertex_lock == null || vertex_lock instanceof Uint8Array);
1040
+ assert(vertex_lock == null || vertex_lock.length == vertex_positions.length / vertex_positions_stride);
1041
+ assert(target_index_count >= 0 && target_index_count <= indices.length);
1042
+ assert(target_index_count % 3 == 0);
1043
+ assert(target_error >= 0);
1044
+ assert(Array.isArray(attribute_weights));
1045
+ assert(vertex_attributes_stride >= attribute_weights.length);
1046
+ assert(attribute_weights.length <= 32);
1047
+ for (var i = 0; i < attribute_weights.length; ++i) {
1048
+ assert(attribute_weights[i] >= 0);
1049
+ }
1050
+ var options = 0;
1051
+ for (var i = 0; i < (flags ? flags.length : 0); ++i) {
1052
+ assert(flags[i] in simplifyOptions);
1053
+ options |= simplifyOptions[flags[i]];
1054
+ }
1055
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1056
+ var result = simplifyUpdate(
1057
+ instance.exports.meshopt_simplifyWithUpdate,
1058
+ indices32,
1059
+ indices.length,
1060
+ vertex_positions,
1061
+ vertex_positions.length / vertex_positions_stride,
1062
+ vertex_positions_stride * 4,
1063
+ vertex_attributes,
1064
+ vertex_attributes_stride * 4,
1065
+ new Float32Array(attribute_weights),
1066
+ vertex_lock,
1067
+ target_index_count,
1068
+ target_error,
1069
+ options
1070
+ );
1071
+ if (indices !== indices32) {
1072
+ for (var i = 0; i < result[0]; ++i) {
1073
+ indices[i] = indices32[i];
1074
+ }
1075
+ }
1076
+ return result;
1077
+ },
1078
+ getScale: function(vertex_positions, vertex_positions_stride) {
1079
+ assert(vertex_positions instanceof Float32Array);
1080
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1081
+ assert(vertex_positions_stride >= 3);
1082
+ return simplifyScale(
1083
+ instance.exports.meshopt_simplifyScale,
1084
+ vertex_positions,
1085
+ vertex_positions.length / vertex_positions_stride,
1086
+ vertex_positions_stride * 4
1087
+ );
1088
+ },
1089
+ simplifyPoints: function(vertex_positions, vertex_positions_stride, target_vertex_count, vertex_colors, vertex_colors_stride, color_weight) {
1090
+ assert(vertex_positions instanceof Float32Array);
1091
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1092
+ assert(vertex_positions_stride >= 3);
1093
+ assert(target_vertex_count >= 0 && target_vertex_count <= vertex_positions.length / vertex_positions_stride);
1094
+ if (vertex_colors) {
1095
+ assert(vertex_colors instanceof Float32Array);
1096
+ assert(vertex_colors.length % vertex_colors_stride == 0);
1097
+ assert(vertex_colors_stride >= 3);
1098
+ assert(vertex_positions.length / vertex_positions_stride == vertex_colors.length / vertex_colors_stride);
1099
+ return simplifyPoints(
1100
+ instance.exports.meshopt_simplifyPoints,
1101
+ vertex_positions,
1102
+ vertex_positions.length / vertex_positions_stride,
1103
+ vertex_positions_stride * 4,
1104
+ vertex_colors,
1105
+ vertex_colors_stride * 4,
1106
+ color_weight || 0,
1107
+ target_vertex_count
1108
+ );
1109
+ } else {
1110
+ return simplifyPoints(
1111
+ instance.exports.meshopt_simplifyPoints,
1112
+ vertex_positions,
1113
+ vertex_positions.length / vertex_positions_stride,
1114
+ vertex_positions_stride * 4,
1115
+ void 0,
1116
+ 0,
1117
+ 0,
1118
+ target_vertex_count
1119
+ );
1120
+ }
1121
+ },
1122
+ simplifySloppy: function(indices, vertex_positions, vertex_positions_stride, vertex_lock, target_index_count, target_error) {
1123
+ assert(
1124
+ indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
1125
+ );
1126
+ assert(indices.length % 3 == 0);
1127
+ assert(vertex_positions instanceof Float32Array);
1128
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1129
+ assert(vertex_positions_stride >= 3);
1130
+ assert(vertex_lock == null || vertex_lock instanceof Uint8Array);
1131
+ assert(vertex_lock == null || vertex_lock.length == vertex_positions.length / vertex_positions_stride);
1132
+ assert(target_index_count >= 0 && target_index_count <= indices.length);
1133
+ assert(target_index_count % 3 == 0);
1134
+ assert(target_error >= 0);
1135
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1136
+ var result = simplifySloppy(
1137
+ instance.exports.meshopt_simplifySloppy,
1138
+ indices32,
1139
+ indices.length,
1140
+ vertex_positions,
1141
+ vertex_positions.length / vertex_positions_stride,
1142
+ vertex_positions_stride * 4,
1143
+ vertex_lock,
1144
+ target_index_count,
1145
+ target_error
1146
+ );
1147
+ result[0] = indices instanceof Uint32Array ? result[0] : new indices.constructor(result[0]);
1148
+ return result;
1149
+ },
1150
+ simplifyPrune: function(indices, vertex_positions, vertex_positions_stride, target_error) {
1151
+ assert(
1152
+ indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
1153
+ );
1154
+ assert(indices.length % 3 == 0);
1155
+ assert(vertex_positions instanceof Float32Array);
1156
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1157
+ assert(vertex_positions_stride >= 3);
1158
+ assert(target_error >= 0);
1159
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1160
+ var result = simplifyPrune(
1161
+ instance.exports.meshopt_simplifyPrune,
1162
+ indices32,
1163
+ indices.length,
1164
+ vertex_positions,
1165
+ vertex_positions.length / vertex_positions_stride,
1166
+ vertex_positions_stride * 4,
1167
+ target_error
1168
+ );
1169
+ result = indices instanceof Uint32Array ? result : new indices.constructor(result);
1170
+ return result;
1171
+ }
1172
+ };
1173
+ })();
1174
+
1175
+ // node_modules/.pnpm/meshoptimizer@1.2.0/node_modules/meshoptimizer/meshopt_clusterizer.js
1176
+ var MeshoptClusterizer = (function() {
1177
+ var wasm = "b9H79Tebbbe:neP9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gouuuuuueu9Gruuuuuuub9Gxuuuuuuuuuuuueu9Gxuuuuuuuuuuu99eu9GPuuuuuuuuuuuuu99b9Gouuuuuub9Gwuuuuuuuub9Gvuuuuub9GluuuubiQXdilvorwDqokoqxmbiibeilve9Weiiviebeoweuecj:Gdkr;Zeqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeY9TW79O9V9Wt9F9I919P29K9nW79O2Wt7S2W94bd39TW79O9V9Wt9F9I919P29K9nW79O2Wt79t9W9Ht9P9H2bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7bw39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bkE9TW79O9V9Wt9F9J9V9T9W91tW9t9W9OWVW9c9V919U9K7bxL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2WtbPl79IV9RbsDwebcekdOAq;W:leXdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:88JDPue99eux99due99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:rjjjb8AcuaocdtgsaocFFFFi0Ehzcbyd;0:G:cjbhHdndnalcb9imbaoal9nmbamazaHHjjjjbbgHBd:CwamceBd;8wamazcbyd;0:G:cjbHjjjjbbgOBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;0:G:cjbHjjjjbbgABd:KwamciBd;8waihzalhsinaHazydbcdtfcbBdbazclfhzascufgsmbkaihzalhsinaHazydbcdtfgCaCydbcefBdbazclfhzascufgsmbkaihzalhCcbhXindnaHazydbcdtgQfgsydbcb9imbaOaQfaXBdbasasydbgQcjjjj94VBdbaQaXfhXkazclfhzaCcufgCmbkalci9UhLdnalci6mbcbhzaihsinascwfydbhCasclfydbhXaOasydbcdtfgQaQydbgQcefBdbaAaQcdtfazBdbaOaXcdtfgXaXydbgXcefBdbaAaXcdtfazBdbaOaCcdtfgCaCydbgCcefBdbaAaCcdtfazBdbascxfhsaLazcefgz9hmbkkaihzalhsindnaHazydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaOaCfgCaCydbaQ9RBdbkazclfhzascufgsmbxdkkamazaHHjjjjbbgHBd:CwamceBd;8wamazcbyd;0:G:cjbHjjjjbbgOBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;0:G:cjbHjjjjbbgABd:KwamciBd;8waHcbasz:rjjjbhXaihzalhsinaXazydbcdtfgCaCydbcefBdbazclfhzascufgsmbkalci9UhLdnaoTmbcbhzaOhsaXhCaohQinasazBdbasclfhsaCydbazfhzaCclfhCaQcufgQmbkkdnalci6mbcbhzaihsinascwfydbhCasclfydbhQaOasydbcdtfgKaKydbgKcefBdbaAaKcdtfazBdbaOaQcdtfgQaQydbgQcefBdbaAaQcdtfazBdbaOaCcdtfgCaCydbgCcefBdbaAaCcdtfazBdbascxfhsaLazcefgz9hmbkkaoTmbcbhzaohsinaOazfgCaCydbaXazfydb9RBdbazclfhzascufgsmbkkamaLcbyd;0:G:cjbHjjjjbbgzBd:OwamclBd;8wazcbaLz:rjjjbhYamcuaLcK2alcjjjjd0Ecbyd;0:G:cjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihsa8AhzaLhrJbbbbh5inavasclfydbaK2cdtfgCIdlh8EavasydbaK2cdtfgXIdlhEavascwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgazaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbazclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyazcxfa8EaE:tg8Eagah:tggNaaah:tgaa8FaE:tghN:tgEJbbbbJbbjZa8Ja8K:tg8FahNa8Ea8La8K:tg8KN:tghahNaEaENaaa8KNa8FagN:tgEaENMMg8K:rg8E:va8KJbbbb9BEg8KNUdbazczfaEa8KNUdbazcCfaha8KNUdbazcwfa8Maya8NMMJbbnn:vUdba5a8EMh5ascxfhsazcKfhzarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;0:G:cjbHjjjjbbgCBd:WwamcoBd;8waq:Zhhdna3mbcbhzaChsinasazBdbasclfhsaLazcefgz9hmbkkaEahNhhamcuaLcltalcFFFFd0Ecbyd;0:G:cjbHjjjjbbg8PBd:0wamcrBd;8wcba8Pa8AaCaLcbz:djjjb8AJFFuuh8MJFFuuh8NJFFuuhydnalci6mbJFFuuhya8AhzaLhsJFFuuh8NJFFuuh8MinazcwfIdbgEa8Ma8MaE9EEh8MazclfIdbgEa8Na8NaE9EEh8NazIdbgEayayaE9EEhyazcKfhzascufgsmbkkah:rhEamaocetgzcuaocu9kEcbyd;0:G:cjbHjjjjbbgCBd:4wdndnaoal9nmbaihzalhsinaCazydbcetfcFFi87ebazclfhzascufgsmbxdkkaCcFeazz:rjjjb8AkaEJbbbZNh8JcuhIdnalci6mbcbhsJFFuuhEa8AhzcuhIinazcwfIdba8M:tghahNazIdbay:tghahNazclfIdba8N:tghahNMM:rghaEaIcuSahaE9DVgXEhEasaIaXEhIazcKfhzaLascefgs9hmbkkamczfcbcjwz:rjjjb8Aam9cb83iwam9cb83ibaxa8JNh8RJbbjZak:th8Lcbh8SJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8Ycbh8ZcbhPinJbbbbhEdna8STmbJbbjZa8S:Z:vhEkJbbbbhhdna8Ya8YNa8Wa8WNa8Xa8XNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8VaENh8Ka8UaENh5aRaENh8EaIhLdndndndndna8SaPVTmbamydwg80Tmea8YahNh8Fa8XahNhaa8WahNhgaeamydbcdtfh81cbh3JFFuuhEcvhQcuhLindnaHa81a3cdtfydbcdtgzfydbgvTmbaAaOazfydbcdtfhsindndnaCaiasydbgKcx2fgzclfydbgrcetf8Vebcs4aCazydbgXcetf8Vebcs4faCazcwfydbglcetf8Vebcs4fgombcbhzxekcehzaHaXcdtfydbgXceSmbcehzaHarcdtfydbgrceSmbcehzaHalcdtfydbglceSmbdnarcdSaXcdSfalcdSfcd6mbaocefhzxekaocdfhzkdnazaQ9kmba8AaKcK2fgXIdwa8K:tghahNaXIdba8E:tghahNaXIdla5:tghahNMM:ra8J:va8LNJbbjZMJ9VO:d86JbbjZaXIdCa8FNaXIdxagNaaaXIdzNMMakN:tghahJ9VO:d869DENghaEazaQ6ahaE9DVgXEhEaKaLaXEhLazaQaXEhQkasclfhsavcufgvmbkka3cefg3a809hmbkkaLcu9hmekama8KUd:ODama5Ud:KDama8EUd:GDamcuBd:qDamcFFF;7rBdjDa8Pcba8AaYamc:GDfamc:qDfamcjDfz:ejjjbamyd:qDhLdndnaxJbbbb9ETmba8SaD6mbaLcuSmeceh3amIdjDa8R9EmixdkaLcu9hmekdna8STmbabaPcltfgHam8Piw83dwaHam8Pib83dbaPcefhPkc3hHinamc:CwfaHfydbcbyd;4:G:cjbH:bjjjbbaHc98fgHc989hmbxvkkcbh3a8Saq9pmbamydwaCaiaLcx2fgzydbcetf8Vebcs4aCazcwfydbcetf8Vebcs4faCazclfydbcetf8Vebcs4ffaw9nmekcbhzcbhsdna8ZTmbcbhsamczfhXinamczfascdtfaXydbgQBdbaXclfhXasaYaQfRbbTfhsa8Zcufg8ZmbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDinamcjDfazfcFFF;7rBdbazclfgzcz9hmbkasc;8easclfc:bd6Eg8Zcdth80dnalTmbaeaXcdtfhocbhrindnaHaoarcdtfydbcdtgzfydbgvTmbaAaOazfydbcdtfhscuhQcuhzinaHaiasydbgKcx2fgXclfydbcdtfydbaHaXydbcdtfydbfaHaXcwfydbcdtfydbfgXazaXaz6gXEhzaKaQaXEhQasclfhsavcufgvmbkaQcuSmba8AaQcK2fgsIdwa8M:tgEaENasIdbay:tgEaENasIdla8N:tgEaENMM:rhEcbhsindndnazamc:qDfasfgvydbgX6mbazaX9hmeaEamcjDfasfIdb9FTmekavazBdbamc:GDfasfaQBdbamcjDfasfaEUdbxdkasclfgscz9hmbkkarcefgral9hmbkkamczfa80fhQcbhzcbhsindnamc:GDfazfydbgXcuSmbaQascdtfaXBdbascefhskazclfgzcz9hmbkasa8Zfg8ZTmbJFFuuhhcuhKamczfhza8ZhvcuhQina8AazydbgXcK2fgsIdwa8M:tgEaENasIdbay:tgEaENasIdla8N:tgEaENMM:rhEdndnaHaiaXcx2fgsclfydbcdtfydbaHasydbcdtfydbfaHascwfydbcdtfydbfgsaQ6mbasaQ9hmeaEah9DTmekaEhhashQaXhKkazclfhzavcufgvmbkaKcuSmbaKhLkdnamaiaLcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbhRJbbbbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YkcbhXinaAaOaraXcdtfydbcdtgsfydbcdtfgKhzaHasfgvydbgQhsdnaQTmbdninazydbaLSmeazclfhzascufgsTmdxbkkazaKaQcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaLcK2fgzIdbhEazIdlhhazIdwh8KazIdxh5azIdzh8EazIdCh8FaYaLfce86bba8Ya8FMh8Ya8Xa8EMh8Xa8Wa5Mh8Wa8Va8KMh8Va8UahMh8UaRaEMhRamydxh8Sxbkkamc:WDf8KjjjjbaPkjoivuv99lu8Jjjjjbca9Rgo8Kjjjjbdndnalcw0mbaiydbhraeabcitfgwalcdtciVBdlawarBdbdnalcd6mbaiclfhralcufhDawcxfhwinarydbhqawcuBdbawc98faqBdbawcwfhwarclfhraDcufgDmbkkalabfhwxekcbhqaocbBdKao9cb83izaocbBdwao9cb83ibJbbjZhkJbbjZhxinadaiaqcdtfydbcK2fhDcbhwinaoczfawfgraDawfIdbgmarIdbgP:tgsaxNaPMgPUdbaoawfgrasamaP:tNarIdbMUdbawclfgwcx9hmbkJbbjZakJbbjZMgk:vhxaqcefgqal9hmbkcbhradcbcecdaoIdlgmaoIdwgP9GEgwaoIdbgsaP9GEawasam9GEgzcdtgwfhHaoczfawfIdbhmaihwalhDinaiarcdtfgqydbhOaqawydbgABdbawaOBdbawclfhwaraHaAcK2fIdbam9DfhraDcufgDmbkdndnarcv6mbavc8X9kmbaralc98f6mekaiydbhraeabcitfgwalcdtciVBdlawarBdbaiclfhralcufhDawcxfhwinarydbhqawcuBdbawc98faqBdbawcwfhwarclfhraDcufgDmbkalabfhwxekaeabcitfgwamUdbawawydlc98GazVBdlabcefaeadaiaravcefgqz:djjjbhDawawydlciGaDabcu7fcdtVBdlaDaeadaiarcdtfalar9Raqz:djjjbhwkaocaf8Kjjjjbawk;Oddvue99dninabaecitfgrydlgwcd4gDTmednawciGgqci9hmbcihqdnawcl6mbabaecitfhbcbheawhqcehkindnaiabydbgDfRbbmbcbhkadaDcK2fgwIdwalIdw:tgxaxNawIdbalIdb:tgxaxNawIdlalIdl:tgxaxNMM:rgxaoIdb9DTmbaoaxUdbavaDBdbarydlhqkabcwfhbaecefgeaqcd46mbkakceGTmikaraqciGBdlskdnabcbaDalaqcdtfIdbarIdb:tgxJbbbb9FEgwaD7aecefgDfgecitfydlabawaDfgDcitfydlVci0mbaraqBdlkabaDadaialavaoz:ejjjbax:laoIdb9Fmbkkkjlevudndnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0mbakmbcbhDabydxaq6mekavawcltfgxab8Pdw83dwaxab8Pdb83dbabydbhDdnabydwgwTmbaoaDcdtfhxawhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkabaDawfBdbabydxhxab9cb83dwababydlaxci2fBdlaP8VebhscehDcbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk:mPrHue99eue99eue99iu8Jjjjjbc;W;Gb9Rgx8KjjjjbdndnalmbcbhmxekcbhPaxc:m;Gbfcbc;Kbz:rjjjb8Aaxcualci9UgscltascjjjjiGEcbyd;0:G:cjbHjjjjbbgzBd:m9GaxceBd;S9GaxcuascK2gHcKfalcpFFFe0Ecbyd;0:G:cjbHjjjjbbgOBd:q9GaxcdBd;S9Gdnalci6gAmbarcd4hCascdthXaOhQazhLinavaiaPcx2fgrydwaC2cdtfhKavarydlaC2cdtfhYavarydbaC2cdtfh8AcbhraLhEinaQarfgma8Aarfg3Idbg5aYarfg8EIdbg8Fa5a8F9DEg5UdbamaKarfgaIdbg8Fa5a8Fa59DEg8FUdbamcxfgma3Idbg5a8EIdbgha5ah9EEg5UdbamaaIdbgha5aha59EEg5UdbaEa8Fa5MJbbbZNUdbaEaXfhEarclfgrcx9hmbkaQcKfhQaLclfhLaPcefgPas9hmbkkaOaHfgr9cb83dbar9cb83dzar9cb83dwaxcuascx2gralc:bjjjl0Ecbyd;0:G:cjbHjjjjbbgHBdN9GaxciBd;S9GascdthgazarfhvaxcwVhPaxclVhCaHh8Jazh8KcbhLinaxcbcj;Gbz:rjjjbhEaLas2cdthadnaAmba8Khrash3inaEarydbgmc8F91cjjjj94Vam7gmcQ4cx2fg8Ea8EydwcefBdwaEamcd4cFrGcx2fg8Ea8EydbcefBdbaEamcx4cFrGcx2fgmamydlcefBdlarclfhra3cufg3mbkkazaafh8AaHaafhXcbhmcbh3cbh8EcbhainaEamfgrydbhQara3BdbarcwfgKydbhYaKaaBdbarclfgrydbhKara8EBdbaQa3fh3aYaafhaaKa8Efh8Eamcxfgmcj;Gb9hmbkdnaAmbcbhravhminamarBdbamclfhmasarcefgr9hmbkavhrashminaEa8Aarydbg3cdtfydbg8Ec8F91a8E7cd4cFrGcx2fg8Ea8Eydbg8EcefBdbaXa8Ecdtfa3Bdbarclfhramcufgmmbka8JhrashminaCa8Aarydbg3cdtfydbg8Ec8F91a8E7cx4cFrGcx2fg8Ea8Eydbg8EcefBdbava8Ecdtfa3BdbarclfhramcufgmmbkavhrashminaPa8Aarydbg3cdtfydbg8Ec8F91cjjjj94Va8E7cQ4cx2fg8Ea8Eydbg8EcefBdbaXa8Ecdtfa3Bdbarclfhramcufgmmbkka8Jagfh8Ja8Kagfh8KaLcefgLci9hmbkaEaocetgrcuaocu9kEcbyd;0:G:cjbHjjjjbbgKBd:y9GaEclBd;S9Gdndnaoal9nmbaihralhminaKarydbcetfcFFi87ebarclfhramcufgmmbxdkkaKcFearz:rjjjb8Akcbh8EaEascbyd;0:G:cjbHjjjjbbg8ABd:C9GaOaHaHascdtfaHascitfa8AascbazaKaiawaDaqakz:hjjjbdndnalci6mba8Ahrashmina8EarRbbfh8EarcefhramcufgmmbkaE9cb83iwaE9cb83ibalawc9:fgrfcufar9UgrasaDfcufaD9Ugmaram0EhYcbhmcbhra8Ehaincbh3dnarTmba8AarfRbbceSh3kamaEaiaHydbcx2fgQydbaQclfydbaQcwfydbaKabaeadamawaqa3a3ce7a8EaY9nVaaamfaY6VGz:fjjjbfhmaHclfhHaaa8AarfRbb9Rhaasarcefgr9hmbkaEydxTmeabamcltfgraE8Piw83dwaraE8Pib83dbamcefhmxekaE9cb83iwaE9cb83ibcbhmkczhrinaEc:m;Gbfarfydbcbyd;4:G:cjbH:bjjjbbarc98fgrc989hmbkkaxc;W;Gbf8Kjjjjbamk:wKDQue99iue99iul9:euw99iu8Jjjjjbc;qb9RgP8Kjjjjbaxhsaxhzdndnavax0gHmbdnavTmbcbhOaehzavhAinawaDazydbcx2fgCcwfydbcetfgX8VebhQawaCclfydbcetfgL8VebhKawaCydbcetfgC8VebhYaXce87ebaLce87ebaCce87ebaOaKcs4aYcs4faQcs4ffhOazclfhzaAcufgAmbkaehzavhAinawaDazydbcx2fgCcwfydbcetfcFFi87ebawaCclfydbcetfcFFi87ebawaCydbcetfcFFi87ebazclfhzaAcufgAmbkcehzaqhsaOaq0mekalce86bbalcefcbavcufz:rjjjb8AxekaPaiBdxaPadBdwaPaeBdlavakaqci9Ug8Aaka8Aak6EaHEgK9RhEaxaK9Rh3aKcufh5aKceth8EaKcdtgCc98fh8FavcitgOaC9Rarfc98fhaascufhhavcufhgaraOfh8JJbbjZas:Y:vh8KcbazceakaxSEg8Lcdtg8M9Rh8NJFFuuhycuh8PcbhIcbh8RinaPclfa8RcdtfydbhQaPcb8Pd:y:G:cjbg8S83i9iaPcb8Pd:q:G:cjbgR83inaPcb8Pd1:G:cjbg8U83iUaPcb8Pdj:G:cjbg8V83i8WaPa8S83iyaPaR83iaaPa8U83iKaPa8V83izaQavcdtgYfh8WcbhXinabaQaXcdtgLfydbcK2fhAcbhzinaPc8WfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaba8WaXcu7cdtfydbcK2fhAcbhzaPIdUh8ZaPId9ih80aPId80h81aPId9ehBaPId8Wh83aPIdnhUinaPczfazfgCaAazfgOIdbg8XaCIdbg8Ya8Xa8Y9DEUdbaCczfgCaOcxfIdbg8XaCIdbg8Ya8Xa8Y9EEUdbazclfgzcx9hmbkaraLfgza80a8Z:tg8XaUa83:tg8YNa8YaBa81:tg8ZNa8Za8XNMMUdbazaYfaPIdyaPIdK:tg8XaPIdaaPIdz:tg8YNa8YaPId8KaPIdC:tg8ZNa8Za8XNMMUdbaXcefgXav9hmbkcbh85dnaHmbcbhAaQhza8JhCavhXinawaDazydbcx2fgOcwfydbcetfgL8Vebh8WawaOclfydbcetfg858Vebh86awaOydbcetfgO8Vebh87aLce87eba85ce87ebaOce87ebaCaAa86cs4a87cs4fa8Wcs4ffgABdbazclfhzaCclfhCaXcufgXmbkavhCinawaDaQydbcx2fgzcwfydbcetfcFFi87ebawazclfydbcetfcFFi87ebawazydbcetfcFFi87ebaQclfhQaCcufgCmbka8Jh85kdndndndndndndndndndndnava8E6mba8Eax9nmeavavaK9UgzaK29Raza320mda5aE9pmqa85Th87ceh8WaEhQxwka5ag9pmDa8Eax9nmixokavaK6mea5aE9pmwcehQaEhXa85Tmixlka5ag6mlxrka5ag9pmokcbhQaghXa85mekJFFuuh8XcbhLa5hzindnazcefgCaK6mbaQavaC9RgOaK6GmbarazcdtfIdbg8YaC:YNaravaz9RcdtfaYfc94fIdbg8ZaO:YNMg80a8X9Embdndna8KaOahf:YNg81:lJbbb9p9DTmba81:OhAxekcjjjj94hAka8ZasaA2aO9R:YNh8Zdndna8Kazasf:YNg81:lJbbb9p9DTmba81:OhOxekcjjjj94hOkamasaO2aC9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgOEh8XaCaLaOEhLkaza8LfgzaX6mbxlkkJFFuuh8XcbhLaEhCaahAa8FhOaKhzindnazaK6mbaQaCaK6GmbaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9Embdndna8Ka85aOfydbgYahf:YNg81:lJbbb9p9DTmba81:Oh8Wxekcjjjj94h8Wkamasa8W2aY9R:Yg81a8YNa8Za81NMNa80Mg8Ya8Xa8Ya8X9DgYEh8XazaLaYEhLkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaX6mbxikka85Th87cbh8WaghQkJFFuuh8XcbhLaEhCaahAa8FhOaKhzindnazazaK9UgXaK29RaXa320mbdna8WTmbaCaCaK9UgXaK29RaXa320mekaraOfIdbg8Yaz:YNaAIdbg8ZaC:YNMg80a8X9EmbazhXaChYdna87mba85aOfydbgXhYkdndna8KaYahf:YNg81:lJbbb9p9DTmba81:Oh86xekcjjjj94h86ka8Zasa862aY9R:YNh8Zdndna8KaXahf:YNg81:lJbbb9p9DTmba81:OhYxekcjjjj94hYkamasaY2aX9R:Ya8YNa8ZMNa80Mg8Ya8Xa8Ya8X9DgXEh8XazaLaXEhLkaCa8L9RhCaAa8NfhAaOa8MfhOaza8LfgzcufaQ6mbkkaLTmba8Xay9DTmba8XhyaLhIa8Rh8Pka8Rcefg8Rci9hmbkdndnaoc8X9kmba8Pcb9omeka8Acufh85cbhYindndndnavaY9RaxaYaxfav0Eg8WTmbcbhAaeaYcdtfgzhCa8WhXinawaDaCydbcx2fgOcwfydbcetfgQ8VebhbawaOclfydbcetfgL8VebhrawaOydbcetfgO8VebhKaQce87ebaLce87ebaOce87ebaAarcs4aKcs4fabcs4ffhAaCclfhCaXcufgXmbka8WhOinawaDazydbcx2fgCcwfydbcetfcFFi87ebawaCclfydbcetfcFFi87ebawaCydbcetfcFFi87ebazclfhzaOcufgOmbkaAaq0mekalaYfgzce86bbazcefcba8Wcufz:rjjjb8AxekalaYfgzce86bbazcefcba85z:rjjjb8Aa8Ah8Wka8WaYfgYav9pmdxbkkaravcdtg8WfhLdnaITmbaPclfa8PcdtfydbhzaIhCinaLazydbfcb86bbazclfhzaCcufgCmbkkdnavaI9nmbaPclfa8PcdtfydbaIcdtfhzavaI9RhCinaLazydbfce86bbazclfhzaCcufgCmbkkcbhYindnaYa8PSmbcbhzaraPclfaYcdtfydbgKa8Wz:qjjjbhCavhXaIhOinaKaOazaLaCydbgQfRbbgAEcdtfaQBdbaCclfhCaOaAfhOazaA9RcefhzaXcufgXmbkkaYcefgYci9hmbkabaeadaialaIaocefgCarawaDaqakaxamz:hjjjbabaeaIcdtgzfadazfaiazfalaIfavaI9RaCarawaDaqakaxamz:hjjjbkaPc;qbf8Kjjjjbk:Seeru8Jjjjjbc:q;ab9Rgo8Kjjjjbaoc:q8WfcFecjzz:rjjjb8AcbhrdnadTmbaehwadhDinaoarcdtfawydbgqBdbaoc:q8WfaqcFiGcdtfgkydbhxakaqBdbawclfhwaraxaq9hfhraDcufgDmbkkabaeadaoaraiavz:jjjjbaoc:q;abf8Kjjjjbk;Sqloud99euD998Jjjjjbc:W;ab9Rgr8KjjjjbdndnadTmbaocd4hwcbhDcbhqindnavaeclfydbaw2cdtfgkIdbavaeydbaw2cdtfgxIdbgm:tgPavaecwfydbaw2cdtfgsIdlaxIdlgz:tgHNakIdlaz:tgOasIdbam:tgAN:tgCaCNaOasIdwaxIdwgX:tgQNakIdwaX:tgOaHN:tgHaHNaOaANaPaQN:tgPaPNMMgOJbbbb9Bmbarc8WfaDcltfgkaCaO:rgO:vgCUdwakaPaO:vgPUdlakaHaO:vgHUdbakaCaXNaHamNazaPNMM:mUdxaDcefhDkaecxfheaqcifgqad6mbkab9cb83dyab9cb83daab9cb83dKab9cb83dzab9cb83dwab9cb83dbaDTmearcbBd8Sar9cb83iKar9cb83izarczfavalaoarc8Sfcbcraiz:kjjjbarIdKhQarIdChLarIdzhKar9cb83iwar9cb83ibararc8WfaDczarc8Sfcbcicbz:kjjjbJbbbbhmdnarIdwgzazNarIdbgHaHNarIdlgXaXNMMgCJbbbb9BmbJbbjZaC:r:vhmkazamNhCaXamNhXaHamNhHJbbjZhmarc8WfheaDhvinaecwfIdbaCNaeIdbaHNaXaeclfIdbNMMgzamazam9DEhmaeczfheavcufgvmbkabaQUdwabaLUdlabaKUdbabarId3UdxdndnamJ;n;m;m899FmbJbbbbhzarc8WfheinaecxfIdbaQaecwfIdbgPNaKaeIdbgONaLaeclfIdbgANMMMaCaPNaHaONaXaANMM:vgPazaPaz9EEhzaeczfheaDcufgDmbkabaCUd8KabaXUdaabaHUd3abaQaCazN:tUdKabaLaXazN:tUdCabaKaHazN:tUdzabJbbjZamamN:t:rgmUdydndnaCJbbj:;aCJbbj:;9GEgzJbbjZazJbbjZ9FEJbb;:9cNJbbbZJbbb:;aCJbbbb9GEMgz:lJbbb9p9DTmbaz:Ohexekcjjjj94hekabae86b8UdndnaXJbbj:;aXJbbj:;9GEgzJbbjZazJbbjZ9FEJbb;:9cNJbbbZJbbb:;aXJbbbb9GEMgz:lJbbb9p9DTmbaz:Ohvxekcjjjj94hvkabav86bRdndnaHJbbj:;aHJbbj:;9GEgzJbbjZazJbbjZ9FEJbb;:9cNJbbbZJbbb:;aHJbbbb9GEMgz:lJbbb9p9DTmbaz:Ohwxekcjjjj94hwkabaw86b8SdndnaecKtcK91:YJbb;:9c:vaC:t:lavcKtcK91:YJbb;:9c:vaX:t:lawcKtcK91:YJbb;:9c:vaH:t:lamMMMJbb;:9cNJbbjZMgm:lJbbb9p9DTmbam:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dyab9cb83daab9cb83dKab9cb83dzab9cb83dwab9cb83dbkarc:W;abf8Kjjjjbk;7woDuo99eue99euv998Jjjjjbcje9Rgw8Kjjjjbawc;abfcbaocdtgDz:rjjjb8Aawc;GbfcbaDz:rjjjb8AawcafhDawhqaohkinaqcFFF97BdbaDcFFF;7rBdbaqclfhqaDclfhDakcufgkmbkavcd4hxaicd4hmdnadTmbaocx2hPcbhsinashzdnarTmbarascdtfydbhzkaeazam2cdtfgDIdwhHaDIdlhOaDIdbhAalazax2cdtfIdbhCcbhDawcafhqawc;Gbfhvawhkawc;abfhiinaCaDc:O:G:cjbfIdbaHNaDc:G:G:cjbfIdbaANaDc:K:G:cjbfIdbaONMMgXMhQazhLdnaXaC:tgXaqIdbgK9DgYmbavydbhLkavaLBdbazhLdnaQakIdbg8A9EmbaiydbhLa8AhQkaiaLBdbakaQUdbaqaXaKaYEUdbaiclfhiakclfhkavclfhvaqclfhqaPaDcxfgD9hmbkascefgsad9hmbkkJbbbbhQcbhLawc;GbfhDawc;abfhqcbhkinalaqydbgvax2cdtfIdbalaDydbgiax2cdtfIdbaeavam2cdtfgvIdwaeaiam2cdtfgiIdw:tgCaCNavIdbaiIdb:tgCaCNavIdlaiIdl:tgCaCNMM:rMMgCaQaCaQ9EgvEhQakaLavEhLaqclfhqaDclfhDaoakcefgk9hmbkJbbbbhCdnaeawc;abfaLcdtgqfydbgkam2cdtfgDIdwaeawc;Gbfaqfydbgvam2cdtfgqIdwgH:tgXaXNaDIdbaqIdbgA:tg8Aa8ANaDIdlaqIdlgE:tgOaONMMgKJbbbb9ETmbaK:rgCalakax2cdtfIdbMalavax2cdtfIdb:taCaCM:vhCkaQJbbbZNhKaXaCNaHMhHaOaCNaEMhOa8AaCNaAMhAdnadTmbcbhqarhkinaqhDdnarTmbakydbhDkdnalaDax2cdtfIdbg3aeaDam2cdtfgDIdwaH:tgQaQNaDIdbaA:tgCaCNaDIdlaO:tgXaXNMMg5:rgEMg8EaK9ETmbJbbbbh8Adna5Jbbbb9ETmba8EaK:taEaEM:vh8Aka8AaQNaHMhHa8AaXNaOMhOa8AaCNaAMhAa3aKaEMMJbbbZNhKkakclfhkadaqcefgq9hmbkkabaKUdxabaHUdwabaOUdlabaAUdbawcjef8Kjjjjbk:reevu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwcbhDdnaiTmbarhiawhqinaiaeadRbbgkcdtfydbBdbaDakcefgkaDak0EhDaiclfhiadcefhdaqcufgqmbkkabarawaeaDalaoz:jjjjbarcj8Wf8Kjjjjbk:Eeeeu8Jjjjjbca9Rgo8Kjjjjbab9cb83dyab9cb83daab9cb83dKab9cb83dzab9cb83dwab9cb83dbdnadTmbaocbBd3ao9cb83iwao9cb83ibaoaeadaialaoc3falEavcbalEcrcbz:kjjjbabao8Pib83dbabao8Piw83dwkaocaf8Kjjjjbk::meQu8Jjjjjbcjz9Rgv8KjjjjbcbhoavcjPfcbaez:rjjjb8Aavcjxfcbaez:rjjjb8AdnaiTmbadhoaihrinavcjxfaoRbbfgwawRbbcef86bbavcjxfaocefRbbfgwawRbbcef86bbavcjxfaocdfRbbfgwawRbbcef86bbaocifhoarcufgrmbkcbhDcjehoadhqcehkindndnalTmbcbhxcuhmaqhrakhwcuhPinawcufamaoavcjPfarcefRbbgsfRbb9RcFeGgzci6aoavcjPfarRbbgHfRbb9RcFeGgOci6faoavcjPfarcdfRbbgAfRbb9RcFeGgCci6fgXcOtaOcFr7azaCf9RcwtVavcjxfaAfRbbgzavcjxfaHfRbbgHavcjxfasfRbbgsaHas6Egsazas6EcFe7VgsaP9kgzEhmaXcd6gHaxcefgOal9iVce9hmdasaPazEhPaxaOaHEhxarcifhrawai6hsawcefhwasmbxdkkcuhmaqhrakhwcuhxinawcufamaoavcjPfarcefRbbfRbb9RcFeGci6aoavcjPfarRbbfRbb9RcFeGci6faoavcjPfarcdfRbbfRbb9RcFeGci6fgPax9kgsEhmaPce0meaPaxasEhxarcifhrawai6hPawcefhwaPmbkkadamci2fgrcdfRbbhwarcefRbbhxarRbbhPadaDci2fgrcifaramaD9Rci2zNjjjb8AaPavcjPffaocefgo86bbaPavcjxffgmamRbbcuf86bbaxavcjPffao86bbaxavcjxffgmamRbbcuf86bbarcdfaw86bbarcefax86bbaraP86bbawavcjPffao86bbawavcjxffgrarRbbcuf86bbaqcifhqakcefhkaDcefgDai9hmbkcbhzdnalcb9mmbcbhsavcjPfcbaez:rjjjb8Aadcvfhlinadasci2fgxcefgDRbbhoaxcdfgqRbbhrdndnavcjPfaxRbbgmfRbbmbavcjPfarfRbbhwdndndnavcjPfaofRbbTmbawcFeGTmexikawcFeGmdascefgAai9pmdasc980mdascifhQcbhLarcFeGhCamcFeGhXalhwcbhKcbhYinawcufRbbhPawRbbhOcehkdndnawc9:fRbbgHao9hmbaPcFeGamSmekdnaPcFeGao9hmbaOcFeGamSmekaHamSaOcFeGaoSGhkkceh8AaYceGhYdndnaHar9hmbaPcFeGaoSmekdnaPcFeGar9hmbaOcFeGaoSmekaHaoSaOcFeGarSGh8AkakaYVhYaLaHcFeGgHaXSaPcFeGgPaCSGaPaXSaOcFeGgPaCSGVaHaCSaPaXSGVVhLa8AaKceGVhKdnaAcefgPai9pmbawcifhwaAaQ6hHaPhAaHmekkaYTmeaKmekarhwaohPaohHarhOamhrxdkdnaYTaLVceGTmbaYaKTVaLVceGmekamhwarhParhHamhOaohrxekaohwamhPamhHaohOkavcjPfarfce86bbavcjPfawfce86bbaxaH86bbaqar86bbaDaO86bbavcjPfaPfce86bbalcifhlascefgsai9hmbkkavcFeaecetz:rjjjbhwaici2hrindnawadRbbgmcetfgx8Uebgocu9kmbaxaz87ebawcjlfazcdtfabamcdtfydbBdbazhoazcefhzkadao86bbadcefhdarcufgrmbkazcdthokabavcjlfaoz:qjjjb8Aavcjzf8KjjjjbkObabaiaeadcbz:njjjbk9teiucbcbyd;8:G:cjbgeabcifc98GfgbBd;8:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;8:G:cjbgeabcrfc94GfgbBd;8:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikTeeucbabcbyd;8:G:cjbge9Rcifc98GaefgbBd;8:G:cjbdnabZbcztge9nmbabae9RcFFifcz4nb8Akk:3qeludndnadch6mbadTmeabaead;8qbbabskabaeSmbdnaeadabfgi9Rcbadcet9R0mbadTmeabaead;8qbbabskaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocxGcxSmbaocd4cefciGhiaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglc3Gc3Smbavalcd4cefcrGgdcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfaeczfydbBdbaicCfaecCfydbBdbaicKfaecKfydbBdbaic3faec3fydbBdbaecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaicefaecefRbb86bbaicdfaecdfRbb86bbaicifaecifRbb86bbaiclfaeclfRbb86bbaicvfaecvfRbb86bbaicofaecofRbb86bbaicrfaecrfRbb86bbaicwfhiaecwfhealc94fglmbkkabkk:pedbcj:GdktFFuuFFuuFFuubbbbFFuFFFuFFFuFbbbbbbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;0:Gdkxebbbdbbbj:qbb";
1178
+ var wasmpack = new Uint8Array([
1179
+ 32,
1180
+ 0,
1181
+ 65,
1182
+ 2,
1183
+ 1,
1184
+ 106,
1185
+ 34,
1186
+ 33,
1187
+ 3,
1188
+ 128,
1189
+ 11,
1190
+ 4,
1191
+ 13,
1192
+ 64,
1193
+ 6,
1194
+ 253,
1195
+ 10,
1196
+ 7,
1197
+ 15,
1198
+ 116,
1199
+ 127,
1200
+ 5,
1201
+ 8,
1202
+ 12,
1203
+ 40,
1204
+ 16,
1205
+ 19,
1206
+ 54,
1207
+ 20,
1208
+ 9,
1209
+ 27,
1210
+ 255,
1211
+ 113,
1212
+ 17,
1213
+ 42,
1214
+ 67,
1215
+ 24,
1216
+ 23,
1217
+ 146,
1218
+ 148,
1219
+ 18,
1220
+ 14,
1221
+ 22,
1222
+ 45,
1223
+ 70,
1224
+ 69,
1225
+ 56,
1226
+ 114,
1227
+ 101,
1228
+ 21,
1229
+ 25,
1230
+ 63,
1231
+ 75,
1232
+ 136,
1233
+ 108,
1234
+ 28,
1235
+ 118,
1236
+ 29,
1237
+ 73,
1238
+ 115
1239
+ ]);
1240
+ if (typeof WebAssembly !== "object") {
1241
+ return {
1242
+ supported: false
1243
+ };
1244
+ }
1245
+ var instance;
1246
+ var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
1247
+ instance = result.instance;
1248
+ instance.exports.__wasm_call_ctors();
1249
+ });
1250
+ function unpack(data) {
1251
+ var result = new Uint8Array(data.length);
1252
+ for (var i = 0; i < data.length; ++i) {
1253
+ var ch = data.charCodeAt(i);
1254
+ result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
1255
+ }
1256
+ var write = 0;
1257
+ for (var i = 0; i < data.length; ++i) {
1258
+ result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
1259
+ }
1260
+ return result.buffer.slice(0, write);
1261
+ }
1262
+ function assert(cond) {
1263
+ if (!cond) {
1264
+ throw new Error("Assertion failed");
1265
+ }
1266
+ }
1267
+ function bytes(view) {
1268
+ return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
1269
+ }
1270
+ var BOUNDS_SIZE = 48;
1271
+ var MESHLET_SIZE = 16;
1272
+ function extractMeshlet(buffers, index) {
1273
+ var vertex_offset = buffers.meshlets[index * 4 + 0];
1274
+ var triangle_offset = buffers.meshlets[index * 4 + 1];
1275
+ var vertex_count = buffers.meshlets[index * 4 + 2];
1276
+ var triangle_count = buffers.meshlets[index * 4 + 3];
1277
+ return {
1278
+ vertices: buffers.vertices.subarray(vertex_offset, vertex_offset + vertex_count),
1279
+ triangles: buffers.triangles.subarray(triangle_offset, triangle_offset + triangle_count * 3)
1280
+ };
1281
+ }
1282
+ function buildMeshlets(fun, indices, vertex_positions, vertex_count, vertex_positions_stride, max_vertices, min_triangles, max_triangles, parama, paramb) {
1283
+ var sbrk = instance.exports.sbrk;
1284
+ var max_meshlets = instance.exports.meshopt_buildMeshletsBound(indices.length, max_vertices, min_triangles);
1285
+ var meshletsp = sbrk(max_meshlets * MESHLET_SIZE);
1286
+ var meshlet_verticesp = sbrk(indices.length * 4);
1287
+ var meshlet_trianglesp = sbrk(indices.length);
1288
+ var indicesp = sbrk(indices.byteLength);
1289
+ var verticesp = sbrk(vertex_positions.byteLength);
1290
+ var heap = new Uint8Array(instance.exports.memory.buffer);
1291
+ heap.set(bytes(indices), indicesp);
1292
+ heap.set(bytes(vertex_positions), verticesp);
1293
+ var count = fun(
1294
+ meshletsp,
1295
+ meshlet_verticesp,
1296
+ meshlet_trianglesp,
1297
+ indicesp,
1298
+ indices.length,
1299
+ verticesp,
1300
+ vertex_count,
1301
+ vertex_positions_stride,
1302
+ max_vertices,
1303
+ min_triangles,
1304
+ max_triangles,
1305
+ parama,
1306
+ paramb
1307
+ );
1308
+ heap = new Uint8Array(instance.exports.memory.buffer);
1309
+ var meshletBytes = heap.subarray(meshletsp, meshletsp + count * MESHLET_SIZE);
1310
+ var meshlets = new Uint32Array(meshletBytes.buffer, meshletBytes.byteOffset, meshletBytes.byteLength / 4).slice();
1311
+ for (var i = 0; i < count; ++i) {
1312
+ var vertex_offset = meshlets[i * 4 + 0];
1313
+ var triangle_offset = meshlets[i * 4 + 1];
1314
+ var vertex_count = meshlets[i * 4 + 2];
1315
+ var triangle_count = meshlets[i * 4 + 3];
1316
+ instance.exports.meshopt_optimizeMeshlet(
1317
+ meshlet_verticesp + vertex_offset * 4,
1318
+ meshlet_trianglesp + triangle_offset,
1319
+ triangle_count,
1320
+ vertex_count
1321
+ );
1322
+ }
1323
+ var used_vertices = count ? meshlets[(count - 1) * 4 + 0] + meshlets[(count - 1) * 4 + 2] : 0;
1324
+ var used_triangles = count ? meshlets[(count - 1) * 4 + 1] + meshlets[(count - 1) * 4 + 3] * 3 : 0;
1325
+ var result = {
1326
+ meshlets,
1327
+ vertices: new Uint32Array(heap.buffer, meshlet_verticesp, used_vertices).slice(),
1328
+ triangles: new Uint8Array(heap.buffer, meshlet_trianglesp, used_triangles).slice(),
1329
+ meshletCount: count
1330
+ };
1331
+ sbrk(meshletsp - sbrk(0));
1332
+ return result;
1333
+ }
1334
+ function extractBounds(boundsp) {
1335
+ var bounds_floats = new Float32Array(instance.exports.memory.buffer, boundsp, BOUNDS_SIZE / 4);
1336
+ return {
1337
+ centerX: bounds_floats[0],
1338
+ centerY: bounds_floats[1],
1339
+ centerZ: bounds_floats[2],
1340
+ radius: bounds_floats[3],
1341
+ coneApexX: bounds_floats[4],
1342
+ coneApexY: bounds_floats[5],
1343
+ coneApexZ: bounds_floats[6],
1344
+ coneAxisX: bounds_floats[7],
1345
+ coneAxisY: bounds_floats[8],
1346
+ coneAxisZ: bounds_floats[9],
1347
+ coneCutoff: bounds_floats[10]
1348
+ };
1349
+ }
1350
+ function computeMeshletBounds(buffers, vertex_positions, vertex_count, vertex_positions_stride) {
1351
+ var sbrk = instance.exports.sbrk;
1352
+ var results = [];
1353
+ var verticesp = sbrk(vertex_positions.byteLength);
1354
+ var meshlet_verticesp = sbrk(buffers.vertices.byteLength);
1355
+ var meshlet_trianglesp = sbrk(buffers.triangles.byteLength);
1356
+ var resultp = sbrk(BOUNDS_SIZE);
1357
+ var heap = new Uint8Array(instance.exports.memory.buffer);
1358
+ heap.set(bytes(vertex_positions), verticesp);
1359
+ heap.set(bytes(buffers.vertices), meshlet_verticesp);
1360
+ heap.set(bytes(buffers.triangles), meshlet_trianglesp);
1361
+ for (var i = 0; i < buffers.meshletCount; ++i) {
1362
+ var vertex_offset = buffers.meshlets[i * 4 + 0];
1363
+ var triangle_offset = buffers.meshlets[i * 4 + 1];
1364
+ var triangle_count = buffers.meshlets[i * 4 + 3];
1365
+ instance.exports.meshopt_computeMeshletBounds(
1366
+ resultp,
1367
+ meshlet_verticesp + vertex_offset * 4,
1368
+ meshlet_trianglesp + triangle_offset,
1369
+ triangle_count,
1370
+ verticesp,
1371
+ vertex_count,
1372
+ vertex_positions_stride
1373
+ );
1374
+ results.push(extractBounds(resultp));
1375
+ }
1376
+ sbrk(verticesp - sbrk(0));
1377
+ return results;
1378
+ }
1379
+ function computeClusterBounds(indices, vertex_positions, vertex_count, vertex_positions_stride) {
1380
+ var sbrk = instance.exports.sbrk;
1381
+ var resultp = sbrk(BOUNDS_SIZE);
1382
+ var indicesp = sbrk(indices.byteLength);
1383
+ var verticesp = sbrk(vertex_positions.byteLength);
1384
+ var heap = new Uint8Array(instance.exports.memory.buffer);
1385
+ heap.set(bytes(indices), indicesp);
1386
+ heap.set(bytes(vertex_positions), verticesp);
1387
+ instance.exports.meshopt_computeClusterBounds(resultp, indicesp, indices.length, verticesp, vertex_count, vertex_positions_stride);
1388
+ var result = extractBounds(resultp);
1389
+ sbrk(resultp - sbrk(0));
1390
+ return result;
1391
+ }
1392
+ function computeSphereBounds(positions, count, positions_stride, radii, radii_stride) {
1393
+ var sbrk = instance.exports.sbrk;
1394
+ var resultp = sbrk(BOUNDS_SIZE);
1395
+ var positionsp = sbrk(positions.byteLength);
1396
+ var radiip = radii ? sbrk(radii.byteLength) : 0;
1397
+ var heap = new Uint8Array(instance.exports.memory.buffer);
1398
+ heap.set(bytes(positions), positionsp);
1399
+ if (radii) {
1400
+ heap.set(bytes(radii), radiip);
1401
+ }
1402
+ instance.exports.meshopt_computeSphereBounds(resultp, positionsp, count, positions_stride, radiip, radii ? radii_stride : 0);
1403
+ var result = extractBounds(resultp);
1404
+ sbrk(resultp - sbrk(0));
1405
+ return result;
1406
+ }
1407
+ return {
1408
+ ready,
1409
+ supported: true,
1410
+ buildMeshlets: function(indices, vertex_positions, vertex_positions_stride, max_vertices, max_triangles, cone_weight) {
1411
+ assert(indices.length % 3 == 0);
1412
+ assert(vertex_positions instanceof Float32Array);
1413
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1414
+ assert(vertex_positions_stride >= 3);
1415
+ assert(max_vertices >= 3 && max_vertices <= 256);
1416
+ assert(max_triangles >= 1 && max_triangles <= 512);
1417
+ cone_weight = cone_weight || 0;
1418
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1419
+ return buildMeshlets(
1420
+ instance.exports.meshopt_buildMeshletsFlex,
1421
+ indices32,
1422
+ vertex_positions,
1423
+ vertex_positions.length / vertex_positions_stride,
1424
+ vertex_positions_stride * 4,
1425
+ max_vertices,
1426
+ max_triangles,
1427
+ max_triangles,
1428
+ cone_weight,
1429
+ 0
1430
+ );
1431
+ },
1432
+ buildMeshletsFlex: function(indices, vertex_positions, vertex_positions_stride, max_vertices, min_triangles, max_triangles, cone_weight, split_factor) {
1433
+ assert(indices.length % 3 == 0);
1434
+ assert(vertex_positions instanceof Float32Array);
1435
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1436
+ assert(vertex_positions_stride >= 3);
1437
+ assert(max_vertices >= 3 && max_vertices <= 256);
1438
+ assert(min_triangles >= 1 && max_triangles <= 512);
1439
+ assert(min_triangles <= max_triangles);
1440
+ cone_weight = cone_weight || 0;
1441
+ split_factor = split_factor || 0;
1442
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1443
+ return buildMeshlets(
1444
+ instance.exports.meshopt_buildMeshletsFlex,
1445
+ indices32,
1446
+ vertex_positions,
1447
+ vertex_positions.length / vertex_positions_stride,
1448
+ vertex_positions_stride * 4,
1449
+ max_vertices,
1450
+ min_triangles,
1451
+ max_triangles,
1452
+ cone_weight,
1453
+ split_factor
1454
+ );
1455
+ },
1456
+ buildMeshletsSpatial: function(indices, vertex_positions, vertex_positions_stride, max_vertices, min_triangles, max_triangles, fill_weight) {
1457
+ assert(indices.length % 3 == 0);
1458
+ assert(vertex_positions instanceof Float32Array);
1459
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1460
+ assert(vertex_positions_stride >= 3);
1461
+ assert(max_vertices >= 3 && max_vertices <= 256);
1462
+ assert(min_triangles >= 1 && max_triangles <= 512);
1463
+ assert(min_triangles <= max_triangles);
1464
+ fill_weight = fill_weight || 0;
1465
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1466
+ return buildMeshlets(
1467
+ instance.exports.meshopt_buildMeshletsSpatial,
1468
+ indices32,
1469
+ vertex_positions,
1470
+ vertex_positions.length / vertex_positions_stride,
1471
+ vertex_positions_stride * 4,
1472
+ max_vertices,
1473
+ min_triangles,
1474
+ max_triangles,
1475
+ fill_weight
1476
+ );
1477
+ },
1478
+ extractMeshlet: function(buffers, index) {
1479
+ assert(index >= 0 && index < buffers.meshletCount);
1480
+ return extractMeshlet(buffers, index);
1481
+ },
1482
+ computeClusterBounds: function(indices, vertex_positions, vertex_positions_stride) {
1483
+ assert(indices.length % 3 == 0);
1484
+ assert(indices.length / 3 <= 512);
1485
+ assert(vertex_positions instanceof Float32Array);
1486
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1487
+ assert(vertex_positions_stride >= 3);
1488
+ var indices32 = indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1489
+ return computeClusterBounds(indices32, vertex_positions, vertex_positions.length / vertex_positions_stride, vertex_positions_stride * 4);
1490
+ },
1491
+ computeMeshletBounds: function(buffers, vertex_positions, vertex_positions_stride) {
1492
+ assert(vertex_positions instanceof Float32Array);
1493
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1494
+ assert(vertex_positions_stride >= 3);
1495
+ return computeMeshletBounds(buffers, vertex_positions, vertex_positions.length / vertex_positions_stride, vertex_positions_stride * 4);
1496
+ },
1497
+ computeSphereBounds: function(positions, positions_stride, radii, radii_stride) {
1498
+ assert(positions instanceof Float32Array);
1499
+ assert(positions.length % positions_stride == 0);
1500
+ assert(positions_stride >= 3);
1501
+ assert(!radii || radii instanceof Float32Array);
1502
+ assert(!radii || radii.length % radii_stride == 0);
1503
+ assert(!radii || radii_stride >= 1);
1504
+ assert(!radii || positions.length / positions_stride == radii.length / radii_stride);
1505
+ radii_stride = radii_stride || 0;
1506
+ return computeSphereBounds(positions, positions.length / positions_stride, positions_stride * 4, radii, radii_stride * 4);
1507
+ }
1508
+ };
1509
+ })();
1510
+
1511
+ // node_modules/.pnpm/meshoptimizer@1.2.0/node_modules/meshoptimizer/meshopt_tangents.js
1512
+ var MeshoptTangents = (function() {
1513
+ var wasm = "b9H79Tebbbegv9Geueu9Geub9Gbb9Gkuuuuuuuuuuub9Giuuueuirodiblbelve9Weiiviebeoweuecj:Gdkrnlo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbK9TW79O9V9Wt9F9NW9UWV9HtW9u9H9U9NW9Ut7bel79IV9RbdDwebcekdlvq;m8Lodbk:wgvOuw99iuv99vu8Jjjjjbc;Wb9Rgk8Kjjjjbakcxfcbc;Kbz:djjjb8AakcualcdtgxalcFFFFi0Ecbyd:q:G:cjbHjjjjbbgmBdxakceBd2adci9UhPalcd4alfhscehzinazgHcethzaHas6mbkakcuaHcdtgzaHcFFFFi0Ecbyd:q:G:cjbHjjjjbbgsBdzakcdBd2ascFeazz:djjjbhOaDcd4hAarcd4hCavcd4hXdnalTmbaHcufhrcbhvindndnaOcbaiavaX2cdtfgHydlgDaDcjjjj94SEgscH4cbaoavaC2cdtfgzydlgQcs4aQcjjjj94SE7as7c:F:b:DD2cbaHydbgLaLcjjjj94SEgscH4cbazydbgKcs4aKcjjjj94SE7as7c;D;O:B8J27cbaHydwgYaYcjjjj94SEgHcH4cbazydwg8Acs4a8Acjjjj94SE7aH7c:3F;N8N27awavaA2cdtfgHydlgEaHydbg37cFFFFrGgHcm4aH7c:fjjK27arGgscdtfgHydbgzcuSmbaE::h5a3::h8Ea8A::h8FaQ::haaK::hhaY::hgaD::h8JaL::h8KcehDinaDhHdnaiazaX2cdtfgDIdba8K9CmbaDIdla8J9CmbaDIdwag9CmbaoazaC2cdtfgDIdbah9CmbaDIdlaa9CmbaDIdwa8F9CmbawazaA2cdtfgDIdba8E9CmbaDIdla59BmikaHcefhDaOasaHfarGgscdtfgHydbgzcu9hmbkkaHavBdbavhzkamavcdtfazBdbavcefgval9hmbkkaOcbydN:G:cjbH:bjjjbbakceBd2akcualcefgHcdtaHcFFFFi0Ecbyd:q:G:cjbHjjjjbbg8LBdzakcdBd2akcuadcdtadcFFFFi0EgYcbyd:q:G:cjbHjjjjbbg8MBdCakciBd2a8Lclfcbaxz:djjjbhzdnadTmbdnaeTmbaehHadhsinazamaHydbcdtfydbcdtfgDaDydbcefBdbaHclfhHascufgsmbxdkkamhHadhsinazaHydbcdtfgDaDydbcefBdbaHclfhHascufgsmbkkdnalTmbcbhsazhHalhDinaHydbhOaHasBdbaHclfhHaOasfhsaDcufgDmbkkdnadci6gQmbcbhscdhHaPhOindndnaeTmbamaeasfgvydbcdtfhDamavcwfydbcdtfhramavclfydbcdtfhvxekamasfgDcwfhraDclfhvkarydbhravydbhvazaDydbcdtfgDaDydbgDcefBdba8MaDcdtfaHc9:fBdbazavcdtfgDaDydbgDcefBdba8MaDcdtfaHcufBdbazarcdtfgDaDydbgDcefBdba8MaDcdtfaHBdbascxfhsaHclfhHaOcufgOmbkkcbhsa8LcbBdbakcuaPcltadcFFFFd0Ecbyd:q:G:cjbHjjjjbbg8NBdKakclBd2dnaQmbaehza8NhHaPhvindndnaeTmbazcwfydbhDazclfydbhOazydbhrxekascdfhDascefhOashrkJbbbbh8KJbbbbJbbbbJbbbbJbbbbJbbjZJbbj:;awaOaA2cdtfgQIdbawaraA2cdtfgLIdbgh:tawaDaA2cdtfgKIdlaLIdlgg:tg8JNaQIdlag:tggaKIdbah:tN:tghJbbbb9EEahJbbbb9BEg8EaiaraX2cdtfgrIdwghaiaOaX2cdtfgOIdwg59BEa8EarIdlgaaOIdlgy9BEa8EarIdbg8FaOIdbg8P9BEg8EahaiaDaX2cdtfgDIdwgI9BEa8EaaaDIdlg8R9BEa8Ea8FaDIdbg8S9BEg8Ea5aI9BEa8Eaya8R9BEa8Ea8Pa8S9BEh8Edna8Ja5ah:tNagaIah:tN:tghahNa8Ja8Pa8F:tNaga8Sa8F:tN:tg8Fa8FNa8Jayaa:tNaga8Raa:tN:tg8Ja8JNMMggJbbbb9Bmba8Eag:r:vh8KkaHcxfa8EUdbaHcwfaha8KNUdbaHclfa8Ja8KNUdbaHa8Fa8KNUdbazcxfhzaHczfhHascifhsavcufgvmbkkcbhHakaYcbyd:q:G:cjbHjjjjbbgDBd3akcvBd2dnadTmbaDhzinazaHBdbazclfhzadaHcefgH9hmbkkakcuaPcdtadcFFFF970Ecbyd:q:G:cjbHjjjjbbgvBdaakcoBd2akaPcbyd:q:G:cjbHjjjjbbg8ABd8KakcrBd2dnadci6mba8NcxfhzavhscbhHinasaHBdba8AaHfcdcbazIdbg8KJbbbb9DEa8KJbbbb9EV86bbasclfhsazczfhzaPaHcefgH9hmbkkdnalTmbcbhRinaRcdthHdna8LaRcefgRcdtfydbgza8LaHfydbgHSmbazaH9RhLa8MaHcdtfhKcbh8UinaKa8Ucdtfg8VydbgHcd4g8Wci2gxaHciGcdtgzyd:e:G:cjbfhHaxazydj:G:cjbfhzdnaeTmbaeaHcdtfydbhHaeazcdtfydbhzkdna8Ucefg8UaL9pmbamaHcdtfydbhYamazcdtfydbh3a8Aa8WfhEava8Wcdtfh8Xa8UhwinaKawcdtfgQydbgHcd4gzci2gAaHciGcdtgHyd:e:G:cjbfhsaAaHydj:G:cjbfhHdnaeTmbaeascdtfydbhsaeaHcdtfydbhHkdndnamaHcdtfydbaYSmbamascdtfydba39hmeka8AazfRbbgHaERbbgsVciSmbdnaHasGmba8Whsdna8Wa8XydbgHSmba8XhOinaOavaHgscdtfgrydbgHBdbarhOasaH9hmbkkdnazavazcdtfgOydbgHSmbinaOavaHgzcdtfgrydbgHBdbarhOazaH9hmbkkasazSmba8AazfgORbba8AasfgHRbbVciSmeavazcdtfasBdbaHaHRbbaORbbV86bbkdna8VydbciGaxfgzaDazcdtfgsydbgHSmbinasaDaHgzcdtfgOydbgHBdbaOhsazaH9hmbkkdnaQydbciGaAfgsaDascdtfgOydbgHSmbinaOaDaHgscdtfgrydbgHBdbarhOasaH9hmbkkazasSmbaDascdtfazBdbkawcefgwaL9hmbkka8UaL9hmbkkaRal9hmbkkdnadTmbcbhrinarhzdnaraDarcdtfgwydbgHSmbawhsinasaDaHgzcdtfgOydbgHBdbaOhsazaH9hmbkkawazBdbarcefgrad9hmbkcbh8Vabcbadcltz:djjjbhKdnadci6mbaqceGhEaDhYaeh3cbh8Windna8Na8WcltfgsIdxJbbbb9Bmbama8Wcx2gHfhxaeaHfhLcbhza8VhwinaKaYazfydbcltfhHdndnaeTmbamaLazc:e:G:cjbfydbcdtfydbcdtfhAamaLazcj:G:cjbfydbcdtfydbcdtfhra3azfydbhOxekaxazc:e:G:cjbfydbcdtfhAaxazcj:G:cjbfydbcdtfhrawhOkaHasIdbggaoamaOcdtfydbgQaC2cdtfgOIdbg8KasIdwg8FaOIdwg8JNaga8KNasIdlg8EaOIdlggNMMghN:tgaJbbbbJbbjZa8Fa8JahN:tg8Fa8FNaaaaNa8EagahN:tghahNMMga:r:vaaJbbbb9BEJ;As6nJbbjZaiarydbaX2cdtfgOIdwaiaQaX2cdtfgrIdwg5:tgaa8Jaaa8JNaOIdbarIdbgy:tg8Pa8KNagaOIdlarIdlgI:tg8RNMMgaN:tg8EaiaAydbaX2cdtfgOIdwa5:tg5a8Ja5a8JNaOIdbay:tg8Sa8KNagaOIdlaI:tgINMMg5N:tg8JNa8Pa8KaaN:tgya8Sa8Ka5N:tg8KNa8RagaaN:tgaaIaga5N:tggNMMJbbbbJbbjZa8Ea8ENayayNaaaaNMMa8Ja8JNa8Ka8KNagagNMMNg8K:rg8J:va8KJbbbb9BENgg:lg8Ka8KJbbjZ9EEg8Ka8KJ7;A9s89NJ:L9t9s::MNJ;ob;jZMJbbjZa8K:t:rNg8K:ta8KagJbbbb9DENg8Ka8Ja8KNaEEg8KNaHIdbMUdbaHaha8KNaHIdlMUdlaHa8Fa8KNaHIdwMUdwawcefhwazclfgzcx9hmbkkaYcxfhYa3cxfh3a8Vcifh8Va8Wcefg8WaP9hmbkcbhrinarhzdnaravarcdtfgsydbgHSmbinasavaHgzcdtfgOydbgHBdbaOhsazaH9hmbkkaKarc8W2fgHc3fJbbjZJbbj:;a8AazfRbbceGEg8KUdbaHc8Sfa8KUdbaHa8KUdxarcefgraP9hmbkkaqcdGhvcbhzaDhsaKhHindnazasydb9hmbJbbbbh8KdnaHcwfgOIdbg8Ja8JNaHIdbggagNaHclfgrIdbghahNMMgaJbbbb9BmbJbbjZaa:r:vh8KkaOa8Ja8KNUdbaraha8KNUdbaHaga8KNg8JUdbavmbaHJbbjZa8Ja8KJbbbb9BEUdbkasclfhsaHczfhHadazcefgz9hmbkcbhHaKhzindnaHaDydbgsSmbazaKascltfgsydwBdwazas8Pdb83dbkaDclfhDazczfhzadaHcefgH9hmbkkdnakyd2gzTmbazcdtakcxffc98fhHinaHydbcbydN:G:cjbH:bjjjbbaHc98fhHazcufgzmbkkakc;Wbf8Kjjjjbk9teiucbcbyd:y:G:cjbgeabcifc98GfgbBd:y:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:y:G:cjbgeabcrfc94GfgbBd:y:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikTeeucbabcbyd:y:G:cjbge9Rcifc98GaefgbBd:y:G:cjbdnabZbcztge9nmbabae9RcFFifcz4nb8Akkk8Rdbcj:Gdkzebbbdbbbbbbbebbbbc:q:Gdkxebbbdbbba:qbb";
1514
+ var wasmpack = new Uint8Array([
1515
+ 32,
1516
+ 0,
1517
+ 65,
1518
+ 2,
1519
+ 1,
1520
+ 106,
1521
+ 34,
1522
+ 33,
1523
+ 3,
1524
+ 128,
1525
+ 11,
1526
+ 4,
1527
+ 13,
1528
+ 64,
1529
+ 6,
1530
+ 253,
1531
+ 10,
1532
+ 7,
1533
+ 15,
1534
+ 116,
1535
+ 127,
1536
+ 5,
1537
+ 8,
1538
+ 12,
1539
+ 40,
1540
+ 16,
1541
+ 19,
1542
+ 54,
1543
+ 20,
1544
+ 9,
1545
+ 27,
1546
+ 255,
1547
+ 113,
1548
+ 17,
1549
+ 42,
1550
+ 67,
1551
+ 24,
1552
+ 23,
1553
+ 146,
1554
+ 148,
1555
+ 18,
1556
+ 14,
1557
+ 22,
1558
+ 45,
1559
+ 70,
1560
+ 69,
1561
+ 56,
1562
+ 114,
1563
+ 101,
1564
+ 21,
1565
+ 25,
1566
+ 63,
1567
+ 75,
1568
+ 136,
1569
+ 108,
1570
+ 28,
1571
+ 118,
1572
+ 29,
1573
+ 73,
1574
+ 115
1575
+ ]);
1576
+ if (typeof WebAssembly !== "object") {
1577
+ return {
1578
+ supported: false
1579
+ };
1580
+ }
1581
+ var instance;
1582
+ var ready = WebAssembly.instantiate(unpack(wasm), {}).then(function(result) {
1583
+ instance = result.instance;
1584
+ instance.exports.__wasm_call_ctors();
1585
+ });
1586
+ function unpack(data) {
1587
+ var result = new Uint8Array(data.length);
1588
+ for (var i = 0; i < data.length; ++i) {
1589
+ var ch = data.charCodeAt(i);
1590
+ result[i] = ch > 96 ? ch - 97 : ch > 64 ? ch - 39 : ch + 4;
1591
+ }
1592
+ var write = 0;
1593
+ for (var i = 0; i < data.length; ++i) {
1594
+ result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];
1595
+ }
1596
+ return result.buffer.slice(0, write);
1597
+ }
1598
+ function assert(cond) {
1599
+ if (!cond) {
1600
+ throw new Error("Assertion failed");
1601
+ }
1602
+ }
1603
+ function bytes(view) {
1604
+ return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);
1605
+ }
1606
+ function generate(indices, index_count, vertex_positions, vertex_count, vertex_positions_stride, vertex_normals, vertex_normals_stride, vertex_uvs, vertex_uvs_stride, options) {
1607
+ var sbrk = instance.exports.sbrk;
1608
+ var resultp = sbrk(index_count * 16);
1609
+ var indicesp = indices ? sbrk(indices.byteLength) : 0;
1610
+ var positionsp = sbrk(vertex_positions.byteLength);
1611
+ var normalsp = sbrk(vertex_normals.byteLength);
1612
+ var uvsp = sbrk(vertex_uvs.byteLength);
1613
+ var heap = new Uint8Array(instance.exports.memory.buffer);
1614
+ if (indices) heap.set(bytes(indices), indicesp);
1615
+ heap.set(bytes(vertex_positions), positionsp);
1616
+ heap.set(bytes(vertex_normals), normalsp);
1617
+ heap.set(bytes(vertex_uvs), uvsp);
1618
+ instance.exports.meshopt_generateTangents(
1619
+ resultp,
1620
+ indicesp,
1621
+ index_count,
1622
+ positionsp,
1623
+ vertex_count,
1624
+ vertex_positions_stride * 4,
1625
+ normalsp,
1626
+ vertex_normals_stride * 4,
1627
+ uvsp,
1628
+ vertex_uvs_stride * 4,
1629
+ options
1630
+ );
1631
+ heap = new Uint8Array(instance.exports.memory.buffer);
1632
+ var result = new Float32Array(heap.buffer, resultp, index_count * 4).slice();
1633
+ sbrk(resultp - sbrk(0));
1634
+ return result;
1635
+ }
1636
+ var tangentOptions = {
1637
+ Compatible: 1,
1638
+ ZeroFallback: 2
1639
+ };
1640
+ return {
1641
+ ready,
1642
+ supported: true,
1643
+ generateTangents: function(indices, vertex_positions, vertex_positions_stride, vertex_normals, vertex_normals_stride, vertex_uvs, vertex_uvs_stride, flags) {
1644
+ assert(
1645
+ indices === null || indices instanceof Uint32Array || indices instanceof Int32Array || indices instanceof Uint16Array || indices instanceof Int16Array
1646
+ );
1647
+ assert(indices === null || indices.length % 3 == 0);
1648
+ assert(vertex_positions instanceof Float32Array);
1649
+ assert(vertex_positions.length % vertex_positions_stride == 0);
1650
+ assert(vertex_positions_stride >= 3);
1651
+ assert(vertex_normals instanceof Float32Array);
1652
+ assert(vertex_normals.length % vertex_normals_stride == 0);
1653
+ assert(vertex_normals_stride >= 3);
1654
+ assert(vertex_uvs instanceof Float32Array);
1655
+ assert(vertex_uvs.length % vertex_uvs_stride == 0);
1656
+ assert(vertex_uvs_stride >= 2);
1657
+ assert(vertex_positions.length / vertex_positions_stride == vertex_normals.length / vertex_normals_stride);
1658
+ assert(vertex_positions.length / vertex_positions_stride == vertex_uvs.length / vertex_uvs_stride);
1659
+ assert(indices !== null || vertex_positions.length / vertex_positions_stride % 3 == 0);
1660
+ var options = 0;
1661
+ for (var i = 0; i < (flags ? flags.length : 0); ++i) {
1662
+ assert(flags[i] in tangentOptions);
1663
+ options |= tangentOptions[flags[i]];
1664
+ }
1665
+ var vertex_count = vertex_positions.length / vertex_positions_stride;
1666
+ var index_count = indices ? indices.length : vertex_count;
1667
+ var indices32 = indices === null || indices.BYTES_PER_ELEMENT == 4 ? indices : new Uint32Array(indices);
1668
+ return generate(
1669
+ indices32,
1670
+ index_count,
1671
+ vertex_positions,
1672
+ vertex_count,
1673
+ vertex_positions_stride,
1674
+ vertex_normals,
1675
+ vertex_normals_stride,
1676
+ vertex_uvs,
1677
+ vertex_uvs_stride,
1678
+ options
1679
+ );
1680
+ }
1681
+ };
1682
+ })();
1683
+
1684
+ // packages/engine/Source/Scene/Axis.js
1685
+ var Axis = {
1686
+ /**
1687
+ * Denotes the x-axis.
1688
+ *
1689
+ * @type {number}
1690
+ * @constant
1691
+ */
1692
+ X: 0,
1693
+ /**
1694
+ * Denotes the y-axis.
1695
+ *
1696
+ * @type {number}
1697
+ * @constant
1698
+ */
1699
+ Y: 1,
1700
+ /**
1701
+ * Denotes the z-axis.
1702
+ *
1703
+ * @type {number}
1704
+ * @constant
1705
+ */
1706
+ Z: 2
1707
+ };
1708
+ Axis.Y_UP_TO_Z_UP = Matrix4_default.fromRotationTranslation(
1709
+ // Rotation about PI/2 around the X-axis
1710
+ Matrix3_default.fromArray([1, 0, 0, 0, 0, 1, 0, -1, 0])
1711
+ );
1712
+ Axis.Z_UP_TO_Y_UP = Matrix4_default.fromRotationTranslation(
1713
+ // Rotation about -PI/2 around the X-axis
1714
+ Matrix3_default.fromArray([1, 0, 0, 0, 0, -1, 0, 1, 0])
1715
+ );
1716
+ Axis.X_UP_TO_Z_UP = Matrix4_default.fromRotationTranslation(
1717
+ // Rotation about -PI/2 around the Y-axis
1718
+ Matrix3_default.fromArray([0, 0, 1, 0, 1, 0, -1, 0, 0])
1719
+ );
1720
+ Axis.Z_UP_TO_X_UP = Matrix4_default.fromRotationTranslation(
1721
+ // Rotation about PI/2 around the Y-axis
1722
+ Matrix3_default.fromArray([0, 0, -1, 0, 1, 0, 1, 0, 0])
1723
+ );
1724
+ Axis.X_UP_TO_Y_UP = Matrix4_default.fromRotationTranslation(
1725
+ // Rotation about PI/2 around the Z-axis
1726
+ Matrix3_default.fromArray([0, 1, 0, -1, 0, 0, 0, 0, 1])
1727
+ );
1728
+ Axis.Y_UP_TO_X_UP = Matrix4_default.fromRotationTranslation(
1729
+ // Rotation about -PI/2 around the Z-axis
1730
+ Matrix3_default.fromArray([0, -1, 0, 1, 0, 0, 0, 0, 1])
1731
+ );
1732
+ Axis.fromName = function(name) {
1733
+ Check_default.typeOf.string("name", name);
1734
+ return Axis[name];
1735
+ };
1736
+ Object.freeze(Axis);
1737
+ var Axis_default = Axis;
1738
+
1739
+ // packages/engine/Source/Scene/SceneMode.js
1740
+ var SceneMode = {
1741
+ /**
1742
+ * Morphing between mode, e.g., 3D to 2D.
1743
+ *
1744
+ * @type {number}
1745
+ * @constant
1746
+ */
1747
+ MORPHING: 0,
1748
+ /**
1749
+ * Columbus View mode. A 2.5D perspective view where the map is laid out
1750
+ * flat and objects with non-zero height are drawn above it.
1751
+ *
1752
+ * @type {number}
1753
+ * @constant
1754
+ */
1755
+ COLUMBUS_VIEW: 1,
1756
+ /**
1757
+ * 2D mode. The map is viewed top-down with an orthographic projection.
1758
+ *
1759
+ * @type {number}
1760
+ * @constant
1761
+ */
1762
+ SCENE2D: 2,
1763
+ /**
1764
+ * 3D mode. A traditional 3D perspective view of the globe.
1765
+ *
1766
+ * @type {number}
1767
+ * @constant
1768
+ */
1769
+ SCENE3D: 3
1770
+ };
1771
+ SceneMode.getMorphTime = function(value) {
1772
+ if (value === SceneMode.SCENE3D) {
1773
+ return 1;
1774
+ } else if (value === SceneMode.MORPHING) {
1775
+ return void 0;
1776
+ }
1777
+ return 0;
1778
+ };
1779
+ Object.freeze(SceneMode);
1780
+ var SceneMode_default = SceneMode;
1781
+
1782
+ // packages/engine/Source/Core/TaskProcessor.js
1783
+ var import_urijs = __toESM(require_URI(), 1);
1784
+
1785
+ // packages/engine/Source/Core/destroyObject.js
1786
+ function returnTrue() {
1787
+ return true;
1788
+ }
1789
+ function destroyObject(object, message) {
1790
+ message = message ?? "This object was destroyed, i.e., destroy() was called.";
1791
+ function throwOnDestroyed() {
1792
+ throw new DeveloperError_default(message);
1793
+ }
1794
+ for (const key in object) {
1795
+ if (typeof object[key] === "function") {
1796
+ object[key] = throwOnDestroyed;
1797
+ }
1798
+ }
1799
+ object.isDestroyed = returnTrue;
1800
+ return void 0;
1801
+ }
1802
+ var destroyObject_default = destroyObject;
1803
+
1804
+ // packages/engine/Source/Core/TaskProcessor.js
1805
+ function canTransferArrayBuffer() {
1806
+ if (!defined_default(TaskProcessor._canTransferArrayBuffer)) {
1807
+ const worker = createWorker("transferTypedArrayTest");
1808
+ worker.postMessage = worker.webkitPostMessage ?? worker.postMessage;
1809
+ const value = 99;
1810
+ const array = new Int8Array([value]);
1811
+ try {
1812
+ worker.postMessage(
1813
+ {
1814
+ array
1815
+ },
1816
+ [array.buffer]
1817
+ );
1818
+ } catch (e) {
1819
+ TaskProcessor._canTransferArrayBuffer = false;
1820
+ return TaskProcessor._canTransferArrayBuffer;
1821
+ }
1822
+ TaskProcessor._canTransferArrayBuffer = new Promise((resolve) => {
1823
+ worker.onmessage = function(event) {
1824
+ const array2 = event.data.array;
1825
+ const result = defined_default(array2) && array2[0] === value;
1826
+ resolve(result);
1827
+ worker.terminate();
1828
+ TaskProcessor._canTransferArrayBuffer = result;
1829
+ };
1830
+ });
1831
+ }
1832
+ return TaskProcessor._canTransferArrayBuffer;
1833
+ }
1834
+ var taskCompletedEvent = new Event_default();
1835
+ function urlFromScript(script) {
1836
+ let blob;
1837
+ try {
1838
+ blob = new Blob([script], {
1839
+ type: "application/javascript"
1840
+ });
1841
+ } catch (e) {
1842
+ const BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;
1843
+ const blobBuilder = new BlobBuilder();
1844
+ blobBuilder.append(script);
1845
+ blob = blobBuilder.getBlob("application/javascript");
1846
+ }
1847
+ const URL2 = window.URL || window.webkitURL;
1848
+ return URL2.createObjectURL(blob);
1849
+ }
1850
+ function createWorker(url) {
1851
+ const uri = new import_urijs.default(url);
1852
+ const isUri = uri.scheme().length !== 0 && uri.fragment().length === 0;
1853
+ const moduleID = url.replace(/\.js$/, "");
1854
+ const options = {};
1855
+ let workerPath;
1856
+ let crossOriginUrl;
1857
+ if (isCrossOriginUrl_default(url)) {
1858
+ crossOriginUrl = url;
1859
+ } else if (!isUri) {
1860
+ const moduleAbsoluteUrl = buildModuleUrl_default(
1861
+ `${TaskProcessor._workerModulePrefix}/${moduleID}.js`
1862
+ );
1863
+ if (isCrossOriginUrl_default(moduleAbsoluteUrl)) {
1864
+ crossOriginUrl = moduleAbsoluteUrl;
1865
+ }
1866
+ }
1867
+ if (crossOriginUrl) {
1868
+ const script = `import "${crossOriginUrl}";`;
1869
+ workerPath = urlFromScript(script);
1870
+ options.type = "module";
1871
+ return new Worker(workerPath, options);
1872
+ }
1873
+ if (!isUri && typeof CESIUM_WORKERS !== "undefined") {
1874
+ const script = `
1875
+ importScripts("${urlFromScript(CESIUM_WORKERS)}");
1876
+ CesiumWorkers["${moduleID}"]();
1877
+ `;
1878
+ workerPath = urlFromScript(script);
1879
+ return new Worker(workerPath, options);
1880
+ }
1881
+ workerPath = url;
1882
+ if (!isUri) {
1883
+ workerPath = buildModuleUrl_default(
1884
+ `${TaskProcessor._workerModulePrefix + moduleID}.js`
1885
+ );
1886
+ }
1887
+ if (!FeatureDetection_default.supportsEsmWebWorkers()) {
1888
+ throw new RuntimeError_default(
1889
+ "This browser is not supported. Please update your browser to continue."
1890
+ );
1891
+ }
1892
+ options.type = "module";
1893
+ return new Worker(workerPath, options);
1894
+ }
1895
+ async function getWebAssemblyLoaderConfig(processor, wasmOptions) {
1896
+ const config = {
1897
+ modulePath: void 0,
1898
+ wasmBinaryFile: void 0,
1899
+ wasmBinary: void 0
1900
+ };
1901
+ if (!FeatureDetection_default.supportsWebAssembly()) {
1902
+ if (!defined_default(wasmOptions.fallbackModulePath)) {
1903
+ throw new RuntimeError_default(
1904
+ `This browser does not support Web Assembly, and no backup module was provided for ${processor._workerPath}`
1905
+ );
1906
+ }
1907
+ config.modulePath = buildModuleUrl_default(wasmOptions.fallbackModulePath);
1908
+ return config;
1909
+ }
1910
+ config.wasmBinaryFile = buildModuleUrl_default(wasmOptions.wasmBinaryFile);
1911
+ const arrayBuffer = await Resource_default.fetchArrayBuffer({
1912
+ url: config.wasmBinaryFile
1913
+ });
1914
+ config.wasmBinary = arrayBuffer;
1915
+ return config;
1916
+ }
1917
+ function TaskProcessor(workerPath, maximumActiveTasks) {
1918
+ this._workerPath = workerPath;
1919
+ this._maximumActiveTasks = maximumActiveTasks ?? Number.POSITIVE_INFINITY;
1920
+ this._activeTasks = 0;
1921
+ this._nextID = 0;
1922
+ this._webAssemblyPromise = void 0;
1923
+ }
1924
+ var createOnmessageHandler = (worker, id, resolve, reject) => {
1925
+ const listener = ({ data }) => {
1926
+ if (data.id !== id) {
1927
+ return;
1928
+ }
1929
+ if (defined_default(data.error)) {
1930
+ let error = data.error;
1931
+ if (error.name === "RuntimeError") {
1932
+ error = new RuntimeError_default(data.error.message);
1933
+ error.stack = data.error.stack;
1934
+ } else if (error.name === "DeveloperError") {
1935
+ error = new DeveloperError_default(data.error.message);
1936
+ error.stack = data.error.stack;
1937
+ } else if (error.name === "Error") {
1938
+ error = new Error(data.error.message);
1939
+ error.stack = data.error.stack;
1940
+ }
1941
+ taskCompletedEvent.raiseEvent(error);
1942
+ reject(error);
1943
+ } else {
1944
+ taskCompletedEvent.raiseEvent();
1945
+ resolve(data.result);
1946
+ }
1947
+ worker.removeEventListener("message", listener);
1948
+ };
1949
+ return listener;
1950
+ };
1951
+ var emptyTransferableObjectArray = [];
1952
+ async function runTask(processor, parameters, transferableObjects) {
1953
+ const canTransfer = await Promise.resolve(canTransferArrayBuffer());
1954
+ if (!defined_default(transferableObjects)) {
1955
+ transferableObjects = emptyTransferableObjectArray;
1956
+ } else if (!canTransfer) {
1957
+ transferableObjects.length = 0;
1958
+ }
1959
+ const id = processor._nextID++;
1960
+ const promise = new Promise((resolve, reject) => {
1961
+ processor._worker.addEventListener(
1962
+ "message",
1963
+ createOnmessageHandler(processor._worker, id, resolve, reject)
1964
+ );
1965
+ });
1966
+ processor._worker.postMessage(
1967
+ {
1968
+ id,
1969
+ baseUrl: buildModuleUrl_default.getCesiumBaseUrl().url,
1970
+ parameters,
1971
+ canTransferArrayBuffer: canTransfer
1972
+ },
1973
+ transferableObjects
1974
+ );
1975
+ return promise;
1976
+ }
1977
+ async function scheduleTask(processor, parameters, transferableObjects) {
1978
+ ++processor._activeTasks;
1979
+ try {
1980
+ const result = await runTask(processor, parameters, transferableObjects);
1981
+ --processor._activeTasks;
1982
+ return result;
1983
+ } catch (error) {
1984
+ --processor._activeTasks;
1985
+ throw error;
1986
+ }
1987
+ }
1988
+ TaskProcessor.prototype.scheduleTask = function(parameters, transferableObjects) {
1989
+ if (!defined_default(this._worker)) {
1990
+ this._worker = createWorker(this._workerPath);
1991
+ }
1992
+ if (this._activeTasks >= this._maximumActiveTasks) {
1993
+ return void 0;
1994
+ }
1995
+ return scheduleTask(this, parameters, transferableObjects);
1996
+ };
1997
+ TaskProcessor.prototype.initWebAssemblyModule = async function(webAssemblyOptions) {
1998
+ if (defined_default(this._webAssemblyPromise)) {
1999
+ return this._webAssemblyPromise;
2000
+ }
2001
+ const init = async () => {
2002
+ const worker = this._worker = createWorker(this._workerPath);
2003
+ const wasmConfig = await getWebAssemblyLoaderConfig(
2004
+ this,
2005
+ webAssemblyOptions
2006
+ );
2007
+ const canTransfer = await Promise.resolve(canTransferArrayBuffer());
2008
+ let transferableObjects;
2009
+ const binary = wasmConfig.wasmBinary;
2010
+ if (defined_default(binary) && canTransfer) {
2011
+ transferableObjects = [binary];
2012
+ }
2013
+ const promise = new Promise((resolve, reject) => {
2014
+ worker.onmessage = function({ data }) {
2015
+ if (defined_default(data)) {
2016
+ resolve(data.result);
2017
+ } else {
2018
+ reject(new RuntimeError_default("Could not configure wasm module"));
2019
+ }
2020
+ };
2021
+ });
2022
+ worker.postMessage(
2023
+ {
2024
+ canTransferArrayBuffer: canTransfer,
2025
+ parameters: { webAssemblyConfig: wasmConfig }
2026
+ },
2027
+ transferableObjects
2028
+ );
2029
+ return promise;
2030
+ };
2031
+ this._webAssemblyPromise = init();
2032
+ return this._webAssemblyPromise;
2033
+ };
2034
+ TaskProcessor.prototype.isDestroyed = function() {
2035
+ return false;
2036
+ };
2037
+ TaskProcessor.prototype.destroy = function() {
2038
+ if (defined_default(this._worker)) {
2039
+ this._worker.terminate();
2040
+ }
2041
+ return destroyObject_default(this);
2042
+ };
2043
+ TaskProcessor.taskCompletedEvent = taskCompletedEvent;
2044
+ TaskProcessor._defaultWorkerModulePrefix = "Workers/";
2045
+ TaskProcessor._workerModulePrefix = TaskProcessor._defaultWorkerModulePrefix;
2046
+ TaskProcessor._canTransferArrayBuffer = void 0;
2047
+ var TaskProcessor_default = TaskProcessor;
2048
+
2049
+ // packages/engine/Source/Core/TerrainPicker.js
2050
+ var MAXIMUM_TERRAIN_PICKER_LEVEL = 3;
2051
+ var TerrainPicker = class {
2052
+ /**
2053
+ * @param {Float64Array} vertices The terrain mesh's vertex buffer.
2054
+ * @param {Uint8Array|Uint16Array|Uint32Array} indices The terrain mesh's index buffer.
2055
+ * @param {TerrainEncoding} encoding The terrain mesh's vertex encoding.
2056
+ */
2057
+ constructor(vertices, indices, encoding) {
2058
+ Check_default.defined("vertices", vertices);
2059
+ Check_default.defined("indices", indices);
2060
+ Check_default.defined("encoding", encoding);
2061
+ this._vertices = vertices;
2062
+ this._indices = indices;
2063
+ this._encoding = encoding;
2064
+ this._inverseTransform = new Matrix4_default();
2065
+ this._needsRebuild = true;
2066
+ this._rootNode = new TerrainPickerNode();
2067
+ }
2068
+ /**
2069
+ * Indicates whether the terrain picker needs to be rebuilt due to changes in the underlying terrain mesh's vertices or indices.
2070
+ * @type {boolean}
2071
+ */
2072
+ get needsRebuild() {
2073
+ return this._needsRebuild;
2074
+ }
2075
+ set needsRebuild(value) {
2076
+ this._needsRebuild = value;
2077
+ }
2078
+ /**
2079
+ * Determines the point on the mesh where the given ray intersects.
2080
+ * @param {Ray} ray The ray to test.
2081
+ * @param {Matrix4} tileTransform The terrain mesh tile's transform from local space to world space.
2082
+ * @param {Boolean} cullBackFaces Whether to consider back-facing triangles as intersections.
2083
+ * @param {SceneMode} mode The scene mode (2D/3D/Columbus View).
2084
+ * @param {MapProjection} projection The map projection.
2085
+ * @returns {Cartesian3 | undefined} result The intersection point, or undefined if there is no intersection.
2086
+ * @private
2087
+ */
2088
+ rayIntersect(ray, tileTransform, cullBackFaces, mode, projection) {
2089
+ if (this._needsRebuild) {
2090
+ reset(this, tileTransform);
2091
+ }
2092
+ const invTransform = this._inverseTransform;
2093
+ const transformedRay = scratchTransformedRay;
2094
+ transformedRay.origin = Matrix4_default.multiplyByPoint(
2095
+ invTransform,
2096
+ ray.origin,
2097
+ transformedRay.origin
2098
+ );
2099
+ transformedRay.direction = Matrix4_default.multiplyByPointAsVector(
2100
+ invTransform,
2101
+ ray.direction,
2102
+ transformedRay.direction
2103
+ );
2104
+ const intersections = [];
2105
+ getNodesIntersectingRay(this._rootNode, transformedRay, intersections);
2106
+ return findClosestPointInClosestNode(
2107
+ this,
2108
+ intersections,
2109
+ ray,
2110
+ cullBackFaces,
2111
+ mode,
2112
+ projection
2113
+ );
2114
+ }
2115
+ };
2116
+ var incrementallyBuildTerrainPickerTaskProcessor = new TaskProcessor_default(
2117
+ "incrementallyBuildTerrainPicker"
2118
+ );
2119
+ var TerrainPickerNode = class _TerrainPickerNode {
2120
+ constructor() {
2121
+ this.x = 0;
2122
+ this.y = 0;
2123
+ this.level = 0;
2124
+ this.aabb = createAABBForNode(this.x, this.y, this.level);
2125
+ this.intersectingTriangles = new Uint32Array(0);
2126
+ this.children = [];
2127
+ this.buildingChildren = false;
2128
+ }
2129
+ /**
2130
+ * Adds a child node to this node.
2131
+ *
2132
+ * @param {number} childIdx The index of the child to add (0-3).
2133
+ */
2134
+ addChild(childIdx) {
2135
+ if (childIdx < 0 || childIdx > 3) {
2136
+ throw new DeveloperError_default(
2137
+ "TerrainPickerNode child index must be between 0 and 3, inclusive."
2138
+ );
2139
+ }
2140
+ const childNode = new _TerrainPickerNode();
2141
+ childNode.x = this.x * 2 + (childIdx & 1);
2142
+ childNode.y = this.y * 2 + (childIdx >> 1 & 1);
2143
+ childNode.level = this.level + 1;
2144
+ childNode.aabb = createAABBForNode(
2145
+ childNode.x,
2146
+ childNode.y,
2147
+ childNode.level
2148
+ );
2149
+ this.children[childIdx] = childNode;
2150
+ }
2151
+ };
2152
+ var scratchTransformedRay = new Ray_default();
2153
+ var scratchTrianglePoints = [
2154
+ new Cartesian3_default(),
2155
+ new Cartesian3_default(),
2156
+ new Cartesian3_default()
2157
+ ];
2158
+ function reset(terrainPicker, tileTransform) {
2159
+ Matrix4_default.inverse(tileTransform, terrainPicker._inverseTransform);
2160
+ terrainPicker._needsRebuild = false;
2161
+ const triangleCount = terrainPicker._indices.length / 3;
2162
+ const intersectingTriangles = new Uint32Array(triangleCount);
2163
+ for (let i = 0; i < triangleCount; ++i) {
2164
+ intersectingTriangles[i] = i;
2165
+ }
2166
+ terrainPicker._rootNode.intersectingTriangles = intersectingTriangles;
2167
+ terrainPicker._rootNode.children.length = 0;
2168
+ }
2169
+ var scratchAABBMin = new Cartesian3_default();
2170
+ var scratchAABBMax = new Cartesian3_default();
2171
+ function createAABBForNode(x, y, level) {
2172
+ const sizeAtLevel = 1 / Math.pow(2, level);
2173
+ const aabbMin = Cartesian3_default.fromElements(
2174
+ x * sizeAtLevel - 0.5,
2175
+ y * sizeAtLevel - 0.5,
2176
+ -0.5,
2177
+ scratchAABBMin
2178
+ );
2179
+ const aabbMax = Cartesian3_default.fromElements(
2180
+ (x + 1) * sizeAtLevel - 0.5,
2181
+ (y + 1) * sizeAtLevel - 0.5,
2182
+ 0.5,
2183
+ scratchAABBMax
2184
+ );
2185
+ return AxisAlignedBoundingBox_default.fromCorners(aabbMin, aabbMax);
2186
+ }
2187
+ function packTriangleBuffers(trianglePositionsBuffer, triangleIndicesBuffer, trianglePositions, triangleIndex, bufferIndex) {
2188
+ Cartesian3_default.pack(
2189
+ trianglePositions[0],
2190
+ // @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
2191
+ trianglePositionsBuffer,
2192
+ 9 * bufferIndex
2193
+ );
2194
+ Cartesian3_default.pack(
2195
+ trianglePositions[1],
2196
+ // @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
2197
+ trianglePositionsBuffer,
2198
+ 9 * bufferIndex + 3
2199
+ );
2200
+ Cartesian3_default.pack(
2201
+ trianglePositions[2],
2202
+ // @ts-expect-error https://github.com/CesiumGS/cesium/pull/13302
2203
+ trianglePositionsBuffer,
2204
+ 9 * bufferIndex + 6
2205
+ );
2206
+ triangleIndicesBuffer[bufferIndex] = triangleIndex;
2207
+ }
2208
+ var scratchInterval = new Interval_default();
2209
+ function getNodesIntersectingRay(currentNode, ray, intersectingNodes) {
2210
+ const interval = IntersectionTests_default.rayAxisAlignedBoundingBox(
2211
+ ray,
2212
+ currentNode.aabb,
2213
+ scratchInterval
2214
+ );
2215
+ if (!defined_default(interval)) {
2216
+ return;
2217
+ }
2218
+ const isLeaf = !currentNode.children.length || currentNode.buildingChildren;
2219
+ if (isLeaf) {
2220
+ intersectingNodes.push({
2221
+ node: currentNode,
2222
+ interval: new Interval_default(interval.start, interval.stop)
2223
+ });
2224
+ return;
2225
+ }
2226
+ for (let i = 0; i < currentNode.children.length; i++) {
2227
+ getNodesIntersectingRay(currentNode.children[i], ray, intersectingNodes);
2228
+ }
2229
+ }
2230
+ function findClosestPointInClosestNode(terrainPicker, intersections, ray, cullBackFaces, mode, projection) {
2231
+ const sortedIntersections = intersections.sort(function(a, b) {
2232
+ return a.interval.start - b.interval.start;
2233
+ });
2234
+ let minT = Number.MAX_VALUE;
2235
+ for (let i = 0; i < sortedIntersections.length; i++) {
2236
+ const intersection = sortedIntersections[i];
2237
+ const intersectionResult = getClosestTriangleInNode(
2238
+ terrainPicker,
2239
+ ray,
2240
+ intersection.node,
2241
+ cullBackFaces,
2242
+ mode,
2243
+ projection
2244
+ );
2245
+ minT = Math.min(intersectionResult, minT);
2246
+ if (minT !== Number.MAX_VALUE) {
2247
+ break;
2248
+ }
2249
+ }
2250
+ if (minT !== Number.MAX_VALUE) {
2251
+ return Ray_default.getPoint(ray, minT);
2252
+ }
2253
+ return void 0;
2254
+ }
2255
+ function getClosestTriangleInNode(terrainPicker, ray, node, cullBackFaces, mode, projection) {
2256
+ let result = Number.MAX_VALUE;
2257
+ const encoding = terrainPicker._encoding;
2258
+ const indices = terrainPicker._indices;
2259
+ const vertices = terrainPicker._vertices;
2260
+ const triangleCount = node.intersectingTriangles.length;
2261
+ const isMaxLevel = node.level >= MAXIMUM_TERRAIN_PICKER_LEVEL;
2262
+ const shouldBuildChildren = !isMaxLevel && !node.buildingChildren;
2263
+ let trianglePositions;
2264
+ let triangleIndices;
2265
+ if (shouldBuildChildren) {
2266
+ trianglePositions = new Float64Array(triangleCount * 9);
2267
+ triangleIndices = new Uint32Array(triangleCount);
2268
+ }
2269
+ for (let i = 0; i < triangleCount; i++) {
2270
+ const triIndex = node.intersectingTriangles[i];
2271
+ const v0 = getVertexPosition(
2272
+ encoding,
2273
+ mode,
2274
+ projection,
2275
+ ray,
2276
+ vertices,
2277
+ indices[3 * triIndex],
2278
+ scratchTrianglePoints[0]
2279
+ );
2280
+ const v1 = getVertexPosition(
2281
+ encoding,
2282
+ mode,
2283
+ projection,
2284
+ ray,
2285
+ vertices,
2286
+ indices[3 * triIndex + 1],
2287
+ scratchTrianglePoints[1]
2288
+ );
2289
+ const v2 = getVertexPosition(
2290
+ encoding,
2291
+ mode,
2292
+ projection,
2293
+ ray,
2294
+ vertices,
2295
+ indices[3 * triIndex + 2],
2296
+ scratchTrianglePoints[2]
2297
+ );
2298
+ const triT = IntersectionTests_default.rayTriangleParametric(
2299
+ ray,
2300
+ v0,
2301
+ v1,
2302
+ v2,
2303
+ cullBackFaces
2304
+ );
2305
+ if (defined_default(triT) && triT < result && triT >= 0) {
2306
+ result = triT;
2307
+ }
2308
+ if (shouldBuildChildren) {
2309
+ packTriangleBuffers(
2310
+ trianglePositions,
2311
+ triangleIndices,
2312
+ scratchTrianglePoints,
2313
+ triIndex,
2314
+ i
2315
+ );
2316
+ }
2317
+ }
2318
+ if (shouldBuildChildren) {
2319
+ for (let childIdx = 0; childIdx < 4; childIdx++) {
2320
+ node.addChild(childIdx);
2321
+ }
2322
+ addTrianglesToChildrenNodes(
2323
+ terrainPicker._inverseTransform,
2324
+ node,
2325
+ triangleIndices,
2326
+ trianglePositions
2327
+ );
2328
+ }
2329
+ return result;
2330
+ }
2331
+ var scratchCartographic = new Cartographic_default();
2332
+ function getVertexPosition(encoding, mode, projection, ray, vertices, index, result) {
2333
+ let position = encoding.getExaggeratedPosition(vertices, index, result);
2334
+ if (mode === SceneMode_default.SCENE3D) {
2335
+ return position;
2336
+ }
2337
+ const ellipsoid = projection.ellipsoid;
2338
+ const positionCartographic = ellipsoid.cartesianToCartographic(
2339
+ position,
2340
+ scratchCartographic
2341
+ );
2342
+ position = projection.project(positionCartographic, result);
2343
+ position = Cartesian3_default.fromElements(
2344
+ position.z,
2345
+ position.x,
2346
+ position.y,
2347
+ result
2348
+ );
2349
+ const worldWidth = Math_default.TWO_PI * projection.ellipsoid.maximumRadius;
2350
+ const k = Math.round((ray.origin.y - position.y) / worldWidth);
2351
+ position.y += k * worldWidth;
2352
+ return position;
2353
+ }
2354
+ async function addTrianglesToChildrenNodes(inverseTransform, node, triangleIndices, trianglePositions) {
2355
+ node.buildingChildren = true;
2356
+ const inverseTransformPacked = new Float64Array(16);
2357
+ Matrix4_default.pack(inverseTransform, inverseTransformPacked, 0);
2358
+ const aabbArray = new Float64Array(6 * 4);
2359
+ for (let i = 0; i < 4; i++) {
2360
+ Cartesian3_default.pack(node.children[i].aabb.minimum, aabbArray, i * 6);
2361
+ Cartesian3_default.pack(node.children[i].aabb.maximum, aabbArray, i * 6 + 3);
2362
+ }
2363
+ const parameters = {
2364
+ aabbs: aabbArray,
2365
+ inverseTransform: inverseTransformPacked,
2366
+ triangleIndices,
2367
+ trianglePositions
2368
+ };
2369
+ const transferableObjects = [
2370
+ aabbArray.buffer,
2371
+ inverseTransformPacked.buffer,
2372
+ triangleIndices.buffer,
2373
+ trianglePositions.buffer
2374
+ ];
2375
+ const incrementallyBuildTerrainPickerPromise = incrementallyBuildTerrainPickerTaskProcessor.scheduleTask(
2376
+ parameters,
2377
+ transferableObjects
2378
+ );
2379
+ if (!defined_default(incrementallyBuildTerrainPickerPromise)) {
2380
+ node.buildingChildren = false;
2381
+ return;
2382
+ }
2383
+ const result = (
2384
+ /** @type {{intersectingTrianglesArrays: ArrayBuffer[]}} */
2385
+ await incrementallyBuildTerrainPickerPromise
2386
+ );
2387
+ result.intersectingTrianglesArrays.forEach((buffer, index) => {
2388
+ if (defined_default(node.children[index])) {
2389
+ node.children[index].intersectingTriangles = new Uint32Array(buffer);
2390
+ }
2391
+ });
2392
+ node.intersectingTriangles = new Uint32Array(0);
2393
+ node.buildingChildren = false;
2394
+ }
2395
+ var TerrainPicker_default = TerrainPicker;
2396
+
2397
+ // packages/engine/Source/Core/TerrainMesh.js
2398
+ function TerrainMesh(center, vertices, indices, indexCountWithoutSkirts, vertexCountWithoutSkirts, minimumHeight, maximumHeight, rectangle, boundingSphere3D, occludeePointInScaledSpace, vertexStride, orientedBoundingBox, encoding, westIndicesSouthToNorth, southIndicesEastToWest, eastIndicesNorthToSouth, northIndicesWestToEast) {
2399
+ this.center = center;
2400
+ this.vertices = vertices;
2401
+ this.stride = vertexStride ?? 6;
2402
+ this.indices = indices;
2403
+ this.indexCountWithoutSkirts = indexCountWithoutSkirts;
2404
+ this.vertexCountWithoutSkirts = vertexCountWithoutSkirts;
2405
+ this.minimumHeight = minimumHeight;
2406
+ this.maximumHeight = maximumHeight;
2407
+ this.rectangle = rectangle;
2408
+ this.boundingSphere3D = boundingSphere3D;
2409
+ this.occludeePointInScaledSpace = occludeePointInScaledSpace;
2410
+ this.orientedBoundingBox = orientedBoundingBox;
2411
+ this.encoding = encoding;
2412
+ this.westIndicesSouthToNorth = westIndicesSouthToNorth;
2413
+ this.southIndicesEastToWest = southIndicesEastToWest;
2414
+ this.eastIndicesNorthToSouth = eastIndicesNorthToSouth;
2415
+ this.northIndicesWestToEast = northIndicesWestToEast;
2416
+ this._transform = new Matrix4_default();
2417
+ this._lastPickSceneMode = void 0;
2418
+ this._terrainPicker = new TerrainPicker_default(vertices, indices, encoding);
2419
+ }
2420
+ TerrainMesh.prototype.getTransform = function(mode, projection) {
2421
+ if (this._lastPickSceneMode === mode) {
2422
+ return this._transform;
2423
+ }
2424
+ this._terrainPicker.needsRebuild = true;
2425
+ if (!defined_default(mode) || mode === SceneMode_default.SCENE3D) {
2426
+ return computeTransform(this, this._transform);
2427
+ }
2428
+ return computeTransform2D(this, projection, this._transform);
2429
+ };
2430
+ function computeTransform(mesh, result) {
2431
+ const exaggeration = mesh.encoding.exaggeration;
2432
+ const exaggerationRelativeHeight = mesh.encoding.exaggerationRelativeHeight;
2433
+ const exaggeratedMinHeight = VerticalExaggeration_default.getHeight(
2434
+ mesh.minimumHeight,
2435
+ exaggeration,
2436
+ exaggerationRelativeHeight
2437
+ );
2438
+ const exaggeratedMaxHeight = VerticalExaggeration_default.getHeight(
2439
+ mesh.maximumHeight,
2440
+ exaggeration,
2441
+ exaggerationRelativeHeight
2442
+ );
2443
+ const obb = OrientedBoundingBox_default.fromRectangle(
2444
+ mesh.rectangle,
2445
+ exaggeratedMinHeight,
2446
+ exaggeratedMaxHeight,
2447
+ Ellipsoid_default.default,
2448
+ mesh.orientedBoundingBox
2449
+ );
2450
+ OrientedBoundingBox_default.computeTransformation(obb, result);
2451
+ const zScale = Matrix4_default.getScale(result, scratchScale).z;
2452
+ if (zScale <= Math_default.EPSILON16) {
2453
+ scratchScale.z = 1;
2454
+ Matrix4_default.setScale(result, scratchScale, result);
2455
+ }
2456
+ return result;
2457
+ }
2458
+ var scratchSWCartesian = new Cartesian3_default();
2459
+ var scratchNECartesian = new Cartesian3_default();
2460
+ var scratchSWCartographic = new Cartographic_default();
2461
+ var scratchNECartographic = new Cartographic_default();
2462
+ var scratchScale2D = new Cartesian3_default();
2463
+ var scratchCenter2D = new Cartesian3_default();
2464
+ var scratchScale = new Cartesian3_default();
2465
+ function computeTransform2D(mesh, projection, result) {
2466
+ const exaggeration = mesh.encoding.exaggeration;
2467
+ const exaggerationRelativeHeight = mesh.encoding.exaggerationRelativeHeight;
2468
+ const exaggeratedMinHeight = VerticalExaggeration_default.getHeight(
2469
+ mesh.minimumHeight,
2470
+ exaggeration,
2471
+ exaggerationRelativeHeight
2472
+ );
2473
+ const exaggeratedMaxHeight = VerticalExaggeration_default.getHeight(
2474
+ mesh.maximumHeight,
2475
+ exaggeration,
2476
+ exaggerationRelativeHeight
2477
+ );
2478
+ const southwest = projection.project(
2479
+ Cartographic_default.fromRadians(
2480
+ mesh.rectangle.west,
2481
+ mesh.rectangle.south,
2482
+ 0,
2483
+ scratchSWCartographic
2484
+ ),
2485
+ scratchSWCartesian
2486
+ );
2487
+ const northeast = projection.project(
2488
+ Cartographic_default.fromRadians(
2489
+ mesh.rectangle.east,
2490
+ mesh.rectangle.north,
2491
+ 0,
2492
+ scratchNECartographic
2493
+ ),
2494
+ scratchNECartesian
2495
+ );
2496
+ const heightRange = exaggeratedMaxHeight - exaggeratedMinHeight;
2497
+ const scale = Cartesian3_default.fromElements(
2498
+ northeast.x - southwest.x,
2499
+ northeast.y - southwest.y,
2500
+ heightRange > 0 ? heightRange : 1,
2501
+ // Avoid zero scale
2502
+ scratchScale2D
2503
+ );
2504
+ const center = Cartesian3_default.fromElements(
2505
+ southwest.x + scale.x * 0.5,
2506
+ southwest.y + scale.y * 0.5,
2507
+ exaggeratedMinHeight + scale.z * 0.5,
2508
+ scratchCenter2D
2509
+ );
2510
+ Matrix4_default.fromTranslation(center, result);
2511
+ Matrix4_default.setScale(result, scale, result);
2512
+ Matrix4_default.multiply(Transforms_default.SWIZZLE_3D_TO_2D_MATRIX, result, result);
2513
+ return result;
2514
+ }
2515
+ TerrainMesh.prototype.pick = function(ray, cullBackFaces, mode, projection) {
2516
+ const intersection = this._terrainPicker.rayIntersect(
2517
+ ray,
2518
+ this.getTransform(mode, projection),
2519
+ cullBackFaces,
2520
+ mode,
2521
+ projection
2522
+ );
2523
+ this._lastPickSceneMode = mode;
2524
+ return intersection;
2525
+ };
2526
+ TerrainMesh.prototype.updateExaggeration = function(exaggeration, exaggerationRelativeHeight) {
2527
+ this._terrainPicker._vertices = this.vertices;
2528
+ this._terrainPicker.needsRebuild = true;
2529
+ this._lastPickSceneMode = void 0;
2530
+ };
2531
+ TerrainMesh.prototype.updateSceneMode = function(mode) {
2532
+ this._terrainPicker.needsRebuild = true;
2533
+ this._lastPickSceneMode = void 0;
2534
+ };
2535
+ var TerrainMesh_default = TerrainMesh;
2536
+
2537
+ // packages/engine/Source/Core/Cesium3DTilesTerrainGeometryProcessor.js
2538
+ var Cesium3DTilesTerrainGeometryProcessor = {};
2539
+ var scratchGltfInfo = {
2540
+ positions: void 0,
2541
+ normals: void 0,
2542
+ indices: void 0,
2543
+ edgeIndicesWest: void 0,
2544
+ edgeIndicesSouth: void 0,
2545
+ edgeIndicesEast: void 0,
2546
+ edgeIndicesNorth: void 0
2547
+ };
2548
+ var scratchCenterCartographic = new Cartographic_default();
2549
+ var scratchCenterCartesian = new Cartesian3_default();
2550
+ var scratchEnuToEcef = new Matrix4_default();
2551
+ var scratchEcefToEnu = new Matrix4_default();
2552
+ var scratchTilesetTransform = new Matrix4_default();
2553
+ var scratchMinimumPositionENU = new Cartesian3_default();
2554
+ var scratchMaximumPositionENU = new Cartesian3_default();
2555
+ var scratchPosLocal = new Cartesian3_default();
2556
+ var scratchPosEcef = new Cartesian3_default();
2557
+ var scratchCartographic2 = new Cartographic_default();
2558
+ var scratchUV = new Cartesian2_default();
2559
+ var scratchNormal = new Cartesian3_default();
2560
+ var scratchNormalOct = new Cartesian2_default();
2561
+ var scratchGeodeticSurfaceNormal = new Cartesian3_default();
2562
+ var scratchPosEnu = new Cartesian3_default();
2563
+ var sortedEdgeCompare = function(a, b) {
2564
+ return a - b;
2565
+ };
2566
+ Cesium3DTilesTerrainGeometryProcessor.createMesh = async function(options) {
2567
+ options = options ?? Frozen_default.EMPTY_OBJECT;
2568
+ const {
2569
+ exaggeration = 1,
2570
+ exaggerationRelativeHeight = 0,
2571
+ hasVertexNormals,
2572
+ hasWebMercatorT,
2573
+ gltf,
2574
+ minimumHeight,
2575
+ maximumHeight,
2576
+ skirtHeight
2577
+ } = options;
2578
+ Check_default.typeOf.object("options.ellipsoid", options.ellipsoid);
2579
+ Check_default.typeOf.object("options.rectangle", options.rectangle);
2580
+ Check_default.typeOf.bool("options.hasVertexNormals", hasVertexNormals);
2581
+ Check_default.typeOf.bool("options.hasWebMercatorT", hasWebMercatorT);
2582
+ Check_default.typeOf.object("options.gltf", gltf);
2583
+ Check_default.typeOf.number("options.minimumHeight", minimumHeight);
2584
+ Check_default.typeOf.number("options.maximumHeight", maximumHeight);
2585
+ Check_default.typeOf.object("options.boundingSphere", options.boundingSphere);
2586
+ Check_default.typeOf.object(
2587
+ "options.orientedBoundingBox",
2588
+ options.orientedBoundingBox
2589
+ );
2590
+ Check_default.typeOf.object(
2591
+ "options.horizonOcclusionPoint",
2592
+ options.horizonOcclusionPoint
2593
+ );
2594
+ Check_default.typeOf.number("options.skirtHeight", skirtHeight);
2595
+ const hasExaggeration = exaggeration !== 1;
2596
+ const hasGeodeticSurfaceNormals = hasExaggeration;
2597
+ const boundingSphere = BoundingSphere_default.clone(
2598
+ options.boundingSphere,
2599
+ new BoundingSphere_default()
2600
+ );
2601
+ const orientedBoundingBox = OrientedBoundingBox_default.clone(
2602
+ options.orientedBoundingBox,
2603
+ new OrientedBoundingBox_default()
2604
+ );
2605
+ const horizonOcclusionPoint = Cartesian3_default.clone(
2606
+ options.horizonOcclusionPoint,
2607
+ new Cartesian3_default()
2608
+ );
2609
+ const ellipsoid = Ellipsoid_default.clone(options.ellipsoid, new Ellipsoid_default());
2610
+ const rectangle = Rectangle_default.clone(options.rectangle, new Rectangle_default());
2611
+ const hasMeshOptCompression = gltf.extensionsRequired !== void 0 && gltf.extensionsRequired.indexOf("EXT_meshopt_compression") !== -1;
2612
+ const decoderPromise = hasMeshOptCompression ? MeshoptDecoder.ready : Promise.resolve(void 0);
2613
+ await decoderPromise;
2614
+ const tileMinLongitude = rectangle.west;
2615
+ const tileMinLatitude = rectangle.south;
2616
+ const tileMaxLatitude = rectangle.north;
2617
+ const tileLengthLongitude = rectangle.width;
2618
+ const tileLengthLatitude = rectangle.height;
2619
+ const approximateCenterCartographic = Rectangle_default.center(
2620
+ rectangle,
2621
+ scratchCenterCartographic
2622
+ );
2623
+ approximateCenterCartographic.height = 0.5 * (minimumHeight + maximumHeight);
2624
+ const approximateCenterPosition = Cartographic_default.toCartesian(
2625
+ approximateCenterCartographic,
2626
+ ellipsoid,
2627
+ scratchCenterCartesian
2628
+ );
2629
+ const enuToEcef = Transforms_default.eastNorthUpToFixedFrame(
2630
+ approximateCenterPosition,
2631
+ ellipsoid,
2632
+ scratchEnuToEcef
2633
+ );
2634
+ const ecefToEnu = Matrix4_default.inverseTransformation(enuToEcef, scratchEcefToEnu);
2635
+ let tilesetTransform = Matrix4_default.unpack(
2636
+ gltf.nodes[0].matrix,
2637
+ 0,
2638
+ scratchTilesetTransform
2639
+ );
2640
+ tilesetTransform = Matrix4_default.multiply(
2641
+ Axis_default.Y_UP_TO_Z_UP,
2642
+ tilesetTransform,
2643
+ tilesetTransform
2644
+ );
2645
+ const gltfInfo = decodeGltf(gltf, hasVertexNormals, scratchGltfInfo);
2646
+ const skirtVertexCount = TerrainProvider_default.getSkirtVertexCount(
2647
+ gltfInfo.edgeIndicesWest,
2648
+ gltfInfo.edgeIndicesSouth,
2649
+ gltfInfo.edgeIndicesEast,
2650
+ gltfInfo.edgeIndicesNorth
2651
+ );
2652
+ const positionsLocalWithoutSkirts = gltfInfo.positions;
2653
+ const normalsWithoutSkirts = gltfInfo.normals;
2654
+ const indicesWithoutSkirts = gltfInfo.indices;
2655
+ const vertexCountWithoutSkirts = positionsLocalWithoutSkirts.length / 3;
2656
+ const vertexCountWithSkirts = vertexCountWithoutSkirts + skirtVertexCount;
2657
+ const indexCountWithoutSkirts = indicesWithoutSkirts.length;
2658
+ const skirtIndexCount = TerrainProvider_default.getSkirtIndexCountWithFilledCorners(skirtVertexCount);
2659
+ const SizedIndexTypeWithSkirts = vertexCountWithSkirts <= 65535 ? Uint16Array : Uint32Array;
2660
+ const indexBufferWithSkirts = new SizedIndexTypeWithSkirts(
2661
+ indexCountWithoutSkirts + skirtIndexCount
2662
+ );
2663
+ indexBufferWithSkirts.set(indicesWithoutSkirts);
2664
+ const westIndices = new SizedIndexTypeWithSkirts(gltfInfo.edgeIndicesWest);
2665
+ const southIndices = new SizedIndexTypeWithSkirts(gltfInfo.edgeIndicesSouth);
2666
+ const eastIndices = new SizedIndexTypeWithSkirts(gltfInfo.edgeIndicesEast);
2667
+ const northIndices = new SizedIndexTypeWithSkirts(gltfInfo.edgeIndicesNorth);
2668
+ const sortedWestIndices = new SizedIndexTypeWithSkirts(westIndices).sort();
2669
+ const sortedSouthIndices = new SizedIndexTypeWithSkirts(southIndices).sort();
2670
+ const sortedEastIndices = new SizedIndexTypeWithSkirts(eastIndices).sort();
2671
+ const sortedNorthIndices = new SizedIndexTypeWithSkirts(northIndices).sort();
2672
+ const southMercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(tileMinLatitude);
2673
+ const northMercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(tileMaxLatitude);
2674
+ const oneOverMercatorHeight = 1 / (northMercatorAngle - southMercatorAngle);
2675
+ let minPosEnu = Cartesian3_default.fromElements(
2676
+ Number.POSITIVE_INFINITY,
2677
+ Number.POSITIVE_INFINITY,
2678
+ Number.POSITIVE_INFINITY,
2679
+ scratchMinimumPositionENU
2680
+ );
2681
+ let maxPosEnu = Cartesian3_default.fromElements(
2682
+ Number.NEGATIVE_INFINITY,
2683
+ Number.NEGATIVE_INFINITY,
2684
+ Number.NEGATIVE_INFINITY,
2685
+ scratchMaximumPositionENU
2686
+ );
2687
+ const tempTerrainEncoding = new TerrainEncoding_default(
2688
+ boundingSphere.center,
2689
+ void 0,
2690
+ void 0,
2691
+ void 0,
2692
+ void 0,
2693
+ hasVertexNormals,
2694
+ hasWebMercatorT,
2695
+ hasGeodeticSurfaceNormals,
2696
+ exaggeration,
2697
+ exaggerationRelativeHeight
2698
+ );
2699
+ const tempBufferStride = tempTerrainEncoding.stride;
2700
+ const tempBuffer = new Float32Array(vertexCountWithSkirts * tempBufferStride);
2701
+ let tempBufferOffset = 0;
2702
+ for (let i = 0; i < vertexCountWithoutSkirts; i++) {
2703
+ const posLocal = Cartesian3_default.unpack(
2704
+ positionsLocalWithoutSkirts,
2705
+ i * 3,
2706
+ scratchPosLocal
2707
+ );
2708
+ const posECEF = Matrix4_default.multiplyByPoint(
2709
+ tilesetTransform,
2710
+ posLocal,
2711
+ scratchPosEcef
2712
+ );
2713
+ const cartographic = Cartographic_default.fromCartesian(
2714
+ posECEF,
2715
+ ellipsoid,
2716
+ scratchCartographic2
2717
+ );
2718
+ const { longitude, latitude, height } = cartographic;
2719
+ let u = (longitude - tileMinLongitude) / tileLengthLongitude;
2720
+ let v = (latitude - tileMinLatitude) / tileLengthLatitude;
2721
+ u = Math_default.clamp(u, 0, 1);
2722
+ v = Math_default.clamp(v, 0, 1);
2723
+ if (binarySearch_default(sortedWestIndices, i, sortedEdgeCompare) >= 0) {
2724
+ u = 0;
2725
+ } else if (binarySearch_default(sortedEastIndices, i, sortedEdgeCompare) >= 0) {
2726
+ u = 1;
2727
+ }
2728
+ if (binarySearch_default(sortedSouthIndices, i, sortedEdgeCompare) >= 0) {
2729
+ v = 0;
2730
+ } else if (binarySearch_default(sortedNorthIndices, i, sortedEdgeCompare) >= 0) {
2731
+ v = 1;
2732
+ }
2733
+ const uv = Cartesian2_default.fromElements(u, v, scratchUV);
2734
+ let normalOct;
2735
+ if (hasVertexNormals) {
2736
+ let normal = Cartesian3_default.unpack(
2737
+ normalsWithoutSkirts,
2738
+ i * 3,
2739
+ scratchNormal
2740
+ );
2741
+ normal = Matrix4_default.multiplyByPointAsVector(
2742
+ tilesetTransform,
2743
+ normal,
2744
+ scratchNormal
2745
+ );
2746
+ normal = Cartesian3_default.normalize(normal, scratchNormal);
2747
+ normalOct = AttributeCompression_default.octEncode(normal, scratchNormalOct);
2748
+ }
2749
+ let webMercatorT;
2750
+ if (hasWebMercatorT) {
2751
+ const mercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(latitude);
2752
+ webMercatorT = (mercatorAngle - southMercatorAngle) * oneOverMercatorHeight;
2753
+ }
2754
+ let geodeticSurfaceNormal;
2755
+ if (hasGeodeticSurfaceNormals) {
2756
+ geodeticSurfaceNormal = ellipsoid.geodeticSurfaceNormal(
2757
+ posECEF,
2758
+ scratchGeodeticSurfaceNormal
2759
+ );
2760
+ }
2761
+ tempBufferOffset = tempTerrainEncoding.encode(
2762
+ tempBuffer,
2763
+ tempBufferOffset,
2764
+ posECEF,
2765
+ uv,
2766
+ height,
2767
+ normalOct,
2768
+ webMercatorT,
2769
+ geodeticSurfaceNormal
2770
+ );
2771
+ const posEnu = Matrix4_default.multiplyByPoint(ecefToEnu, posECEF, scratchPosEnu);
2772
+ minPosEnu = Cartesian3_default.minimumByComponent(posEnu, minPosEnu, minPosEnu);
2773
+ maxPosEnu = Cartesian3_default.maximumByComponent(posEnu, maxPosEnu, maxPosEnu);
2774
+ }
2775
+ const mesh = new TerrainMesh_default(
2776
+ Cartesian3_default.clone(tempTerrainEncoding.center, new Cartesian3_default()),
2777
+ tempBuffer,
2778
+ indexBufferWithSkirts,
2779
+ indexCountWithoutSkirts,
2780
+ vertexCountWithoutSkirts,
2781
+ minimumHeight,
2782
+ maximumHeight,
2783
+ rectangle,
2784
+ BoundingSphere_default.clone(boundingSphere, new BoundingSphere_default()),
2785
+ Cartesian3_default.clone(horizonOcclusionPoint, new Cartesian3_default()),
2786
+ tempBufferStride,
2787
+ OrientedBoundingBox_default.clone(orientedBoundingBox, new OrientedBoundingBox_default()),
2788
+ tempTerrainEncoding,
2789
+ westIndices,
2790
+ southIndices,
2791
+ eastIndices,
2792
+ northIndices
2793
+ );
2794
+ addSkirtsToMesh(
2795
+ mesh,
2796
+ rectangle,
2797
+ ellipsoid,
2798
+ minPosEnu,
2799
+ maxPosEnu,
2800
+ enuToEcef,
2801
+ ecefToEnu,
2802
+ skirtHeight
2803
+ );
2804
+ return Promise.resolve(mesh);
2805
+ };
2806
+ var scratchMinUV = new Cartesian2_default();
2807
+ var scratchMaxUV = new Cartesian2_default();
2808
+ var scratchPolygonIndices = new Array(6);
2809
+ var scratchUvA = new Cartesian2_default();
2810
+ var scratchUvB = new Cartesian2_default();
2811
+ var scratchUvC = new Cartesian2_default();
2812
+ var scratchNormalA = new Cartesian3_default();
2813
+ var scratchNormalB = new Cartesian3_default();
2814
+ var scratchNormalC = new Cartesian3_default();
2815
+ var scratchCenterCartographicUpsample = new Cartographic_default();
2816
+ var scratchCenterCartesianUpsample = new Cartesian3_default();
2817
+ var scratchCartographicSkirt = new Cartographic_default();
2818
+ var scratchCartographicUpsample = new Cartographic_default();
2819
+ var scratchPosEcefSkirt = new Cartesian3_default();
2820
+ var scratchPosEcefUpsample = new Cartesian3_default();
2821
+ var scratchPosEnuSkirt = new Cartesian3_default();
2822
+ var scratchPosEnuUpsample = new Cartesian3_default();
2823
+ var scratchMinimumPositionENUSkirt = new Cartesian3_default();
2824
+ var scratchMaximumPositionENUSkirt = new Cartesian3_default();
2825
+ var scratchMinimumPositionENUUpsample = new Cartesian3_default();
2826
+ var scratchMaximumPositionENUUpsample = new Cartesian3_default();
2827
+ var scratchEnuToEcefUpsample = new Matrix4_default();
2828
+ var scratchEcefToEnuUpsample = new Matrix4_default();
2829
+ var scratchUVSkirt = new Cartesian2_default();
2830
+ var scratchUVUpsample = new Cartesian2_default();
2831
+ var scratchHorizonOcclusionPoint = new Cartesian3_default();
2832
+ var scratchBoundingSphere = new BoundingSphere_default();
2833
+ var scratchOrientedBoundingBox = new OrientedBoundingBox_default();
2834
+ var scratchAABBEnuSkirt = new AxisAlignedBoundingBox_default();
2835
+ var scratchNormalUpsample = new Cartesian3_default();
2836
+ var scratchNormalOctSkirt = new Cartesian2_default();
2837
+ var scratchNormalOctUpsample = new Cartesian2_default();
2838
+ var scratchGeodeticSurfaceNormalSkirt = new Cartesian3_default();
2839
+ var scratchGeodeticSurfaceNormalUpsample = new Cartesian3_default();
2840
+ function decodePositions(gltf) {
2841
+ const primitive = gltf.meshes[0].primitives[0];
2842
+ const accessor = gltf.accessors[primitive.attributes["POSITION"]];
2843
+ const bufferView = gltf.bufferViews[accessor.bufferView];
2844
+ const positionCount = accessor.count;
2845
+ const bufferViewMeshOpt = bufferView.extensions ? bufferView.extensions["EXT_meshopt_compression"] : void 0;
2846
+ if (bufferViewMeshOpt === void 0) {
2847
+ const buffer2 = gltf.buffers[bufferView.buffer].extras._pipeline.source;
2848
+ return new Float32Array(
2849
+ buffer2.buffer,
2850
+ buffer2.byteOffset + // offset from the start of the glb
2851
+ (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2852
+ positionCount * 3
2853
+ );
2854
+ }
2855
+ const buffer = gltf.buffers[bufferViewMeshOpt.buffer].extras._pipeline.source;
2856
+ const compressedBuffer = new Uint8Array(
2857
+ buffer.buffer,
2858
+ buffer.byteOffset + // offset from the start of the glb
2859
+ (bufferViewMeshOpt.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2860
+ bufferViewMeshOpt.byteLength
2861
+ );
2862
+ const positionByteLength = bufferViewMeshOpt.byteStride;
2863
+ const PositionType = positionByteLength === 4 ? Uint8Array : Uint16Array;
2864
+ const positionsResult = new PositionType(positionCount * 4);
2865
+ MeshoptDecoder.decodeVertexBuffer(
2866
+ new Uint8Array(positionsResult.buffer),
2867
+ positionCount,
2868
+ positionByteLength,
2869
+ compressedBuffer
2870
+ );
2871
+ const positionStorageValueMax = (1 << positionsResult.BYTES_PER_ELEMENT * 8) - 1;
2872
+ const positions = new Float32Array(positionCount * 3);
2873
+ for (let p = 0; p < positionCount; p++) {
2874
+ positions[p * 3 + 0] = positionsResult[p * 4 + 0] / positionStorageValueMax;
2875
+ positions[p * 3 + 1] = positionsResult[p * 4 + 1] / positionStorageValueMax;
2876
+ positions[p * 3 + 2] = positionsResult[p * 4 + 2] / positionStorageValueMax;
2877
+ }
2878
+ return positions;
2879
+ }
2880
+ function decodeNormals(gltf) {
2881
+ const primitive = gltf.meshes[0].primitives[0];
2882
+ const accessor = gltf.accessors[primitive.attributes["NORMAL"]];
2883
+ const bufferView = gltf.bufferViews[accessor.bufferView];
2884
+ const normalCount = accessor.count;
2885
+ const bufferViewMeshOpt = bufferView.extensions ? bufferView.extensions["EXT_meshopt_compression"] : void 0;
2886
+ if (bufferViewMeshOpt === void 0) {
2887
+ const buffer2 = gltf.buffers[bufferView.buffer].extras._pipeline.source;
2888
+ return new Float32Array(
2889
+ buffer2.buffer,
2890
+ buffer2.byteOffset + // offset from the start of the glb
2891
+ (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2892
+ normalCount * 3
2893
+ );
2894
+ }
2895
+ const buffer = gltf.buffers[bufferViewMeshOpt.buffer].extras._pipeline.source;
2896
+ const compressedBuffer = new Uint8Array(
2897
+ buffer.buffer,
2898
+ buffer.byteOffset + // offset from the start of the glb
2899
+ (bufferViewMeshOpt.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2900
+ bufferViewMeshOpt.byteLength
2901
+ );
2902
+ const normalByteLength = bufferViewMeshOpt.byteStride;
2903
+ const normalsResult = new Int8Array(normalCount * normalByteLength);
2904
+ MeshoptDecoder.decodeVertexBuffer(
2905
+ new Uint8Array(normalsResult.buffer),
2906
+ normalCount,
2907
+ normalByteLength,
2908
+ compressedBuffer
2909
+ );
2910
+ const normals = new Float32Array(normalCount * 3);
2911
+ for (let i = 0; i < normalCount; i++) {
2912
+ let octX = Math.max(normalsResult[i * 4 + 0] / 127, -1);
2913
+ let octY = Math.max(normalsResult[i * 4 + 1] / 127, -1);
2914
+ const octZ = 1 - (Math.abs(octX) + Math.abs(octY));
2915
+ if (octZ < 0) {
2916
+ const oldX = octX;
2917
+ const oldY = octY;
2918
+ octX = (1 - Math.abs(oldY)) * Math_default.signNotZero(oldX);
2919
+ octY = (1 - Math.abs(oldX)) * Math_default.signNotZero(oldY);
2920
+ }
2921
+ let normal = scratchNormal;
2922
+ normal.x = octX;
2923
+ normal.y = octY;
2924
+ normal.z = octZ;
2925
+ normal = Cartesian3_default.normalize(normal, scratchNormal);
2926
+ normals[i * 3 + 0] = normal.x;
2927
+ normals[i * 3 + 1] = normal.y;
2928
+ normals[i * 3 + 2] = normal.z;
2929
+ }
2930
+ return normals;
2931
+ }
2932
+ function decodeIndices(gltf) {
2933
+ const primitive = gltf.meshes[0].primitives[0];
2934
+ const accessor = gltf.accessors[primitive.indices];
2935
+ const bufferView = gltf.bufferViews[accessor.bufferView];
2936
+ const indexCount = accessor.count;
2937
+ const SizedIndexType = accessor.componentType === ComponentDatatype_default.UNSIGNED_SHORT ? Uint16Array : Uint32Array;
2938
+ const bufferViewMeshOpt = bufferView.extensions ? bufferView.extensions["EXT_meshopt_compression"] : void 0;
2939
+ if (bufferViewMeshOpt === void 0) {
2940
+ const buffer2 = gltf.buffers[bufferView.buffer].extras._pipeline.source;
2941
+ return new SizedIndexType(
2942
+ buffer2.buffer,
2943
+ buffer2.byteOffset + // offset from the glb
2944
+ (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2945
+ indexCount
2946
+ );
2947
+ }
2948
+ const buffer = gltf.buffers[bufferViewMeshOpt.buffer].extras._pipeline.source;
2949
+ const compressedBuffer = new Uint8Array(
2950
+ buffer.buffer,
2951
+ buffer.byteOffset + // offset from the start of the glb
2952
+ (bufferViewMeshOpt.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2953
+ bufferViewMeshOpt.byteLength
2954
+ );
2955
+ const indices = new SizedIndexType(indexCount);
2956
+ MeshoptDecoder.decodeIndexBuffer(
2957
+ new Uint8Array(indices.buffer),
2958
+ indexCount,
2959
+ bufferViewMeshOpt.byteStride,
2960
+ compressedBuffer
2961
+ );
2962
+ return indices;
2963
+ }
2964
+ function decodeEdgeIndices(gltf, name) {
2965
+ const primitive = gltf.meshes[0].primitives[0];
2966
+ const accessor = gltf.accessors[primitive.extensions.CESIUM_tile_edges[name]];
2967
+ const bufferView = gltf.bufferViews[accessor.bufferView];
2968
+ const indexCount = accessor.count;
2969
+ const SizedIndexType = accessor.componentType === ComponentDatatype_default.UNSIGNED_SHORT ? Uint16Array : Uint32Array;
2970
+ const bufferViewMeshOpt = bufferView.extensions ? bufferView.extensions["EXT_meshopt_compression"] : void 0;
2971
+ if (bufferViewMeshOpt === void 0) {
2972
+ const buffer2 = gltf.buffers[bufferView.buffer].extras._pipeline.source;
2973
+ return new SizedIndexType(
2974
+ buffer2.buffer,
2975
+ buffer2.byteOffset + // offset from the glb
2976
+ (bufferView.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2977
+ indexCount
2978
+ );
2979
+ }
2980
+ const buffer = gltf.buffers[bufferViewMeshOpt.buffer].extras._pipeline.source;
2981
+ const compressedBuffer = new Uint8Array(
2982
+ buffer.buffer,
2983
+ buffer.byteOffset + // offset from the start of the glb
2984
+ (bufferViewMeshOpt.byteOffset ?? 0) + (accessor.byteOffset ?? 0),
2985
+ bufferViewMeshOpt.byteLength
2986
+ );
2987
+ const indices = new SizedIndexType(indexCount);
2988
+ const indexByteLength = bufferViewMeshOpt.byteStride;
2989
+ MeshoptDecoder.decodeIndexSequence(
2990
+ new Uint8Array(indices.buffer),
2991
+ indexCount,
2992
+ indexByteLength,
2993
+ compressedBuffer
2994
+ );
2995
+ return indices;
2996
+ }
2997
+ function decodeGltf(gltf, hasNormals, result) {
2998
+ result.positions = decodePositions(gltf);
2999
+ result.normals = hasNormals ? decodeNormals(gltf) : void 0;
3000
+ result.indices = decodeIndices(gltf);
3001
+ result.edgeIndicesWest = decodeEdgeIndices(gltf, "left");
3002
+ result.edgeIndicesSouth = decodeEdgeIndices(gltf, "bottom");
3003
+ result.edgeIndicesEast = decodeEdgeIndices(gltf, "right");
3004
+ result.edgeIndicesNorth = decodeEdgeIndices(gltf, "top");
3005
+ return result;
3006
+ }
3007
+ Cesium3DTilesTerrainGeometryProcessor.upsampleMesh = function(options) {
3008
+ options = options ?? Frozen_default.EMPTY_OBJECT;
3009
+ const {
3010
+ isEastChild,
3011
+ isNorthChild,
3012
+ parentMinimumHeight,
3013
+ parentMaximumHeight,
3014
+ skirtHeight
3015
+ } = options;
3016
+ Check_default.typeOf.bool("options.isEastChild", isEastChild);
3017
+ Check_default.typeOf.bool("options.isNorthChild", isNorthChild);
3018
+ Check_default.typeOf.object("options.parentVertices", options.parentVertices);
3019
+ Check_default.typeOf.object("options.parentIndices", options.parentIndices);
3020
+ Check_default.typeOf.number(
3021
+ "options.parentVertexCountWithoutSkirts",
3022
+ options.parentVertexCountWithoutSkirts
3023
+ );
3024
+ Check_default.typeOf.number(
3025
+ "options.parentIndexCountWithoutSkirts",
3026
+ options.parentIndexCountWithoutSkirts
3027
+ );
3028
+ Check_default.typeOf.number("options.parentMinimumHeight", parentMinimumHeight);
3029
+ Check_default.typeOf.number("options.parentMaximumHeight", parentMaximumHeight);
3030
+ Check_default.typeOf.object("options.parentEncoding", options.parentEncoding);
3031
+ Check_default.typeOf.object("options.rectangle", options.rectangle);
3032
+ Check_default.typeOf.number("options.skirtHeight", skirtHeight);
3033
+ Check_default.typeOf.object("options.ellipsoid", options.ellipsoid);
3034
+ const indexCount = options.parentIndexCountWithoutSkirts;
3035
+ const indices = options.parentIndices;
3036
+ const vertexCount = options.parentVertexCountWithoutSkirts;
3037
+ const vertexBuffer = options.parentVertices;
3038
+ const encoding = TerrainEncoding_default.clone(
3039
+ options.parentEncoding,
3040
+ new TerrainEncoding_default()
3041
+ );
3042
+ const hasVertexNormals = encoding.hasVertexNormals;
3043
+ const hasWebMercatorT = encoding.hasWebMercatorT;
3044
+ const exaggeration = encoding.exaggeration;
3045
+ const exaggerationRelativeHeight = encoding.exaggerationRelativeHeight;
3046
+ const hasExaggeration = exaggeration !== 1;
3047
+ const hasGeodeticSurfaceNormals = hasExaggeration;
3048
+ const upsampleRectangle = Rectangle_default.clone(options.rectangle, new Rectangle_default());
3049
+ const ellipsoid = Ellipsoid_default.clone(options.ellipsoid);
3050
+ const upsampledTriIDs = [];
3051
+ const upsampledUVs = [];
3052
+ const upsampledBarys = [];
3053
+ const upsampledIndices = [];
3054
+ const upsampledWestIndices = [];
3055
+ const upsampledSouthIndices = [];
3056
+ const upsampledEastIndices = [];
3057
+ const upsampledNorthIndices = [];
3058
+ clipTileFromQuadrant(
3059
+ isEastChild,
3060
+ isNorthChild,
3061
+ indexCount,
3062
+ indices,
3063
+ vertexCount,
3064
+ vertexBuffer,
3065
+ encoding,
3066
+ upsampledIndices,
3067
+ upsampledWestIndices,
3068
+ upsampledSouthIndices,
3069
+ upsampledEastIndices,
3070
+ upsampledNorthIndices,
3071
+ upsampledTriIDs,
3072
+ upsampledBarys,
3073
+ upsampledUVs
3074
+ );
3075
+ const approximateCenterCartographic = Rectangle_default.center(
3076
+ upsampleRectangle,
3077
+ scratchCenterCartographicUpsample
3078
+ );
3079
+ approximateCenterCartographic.height = 0.5 * (parentMinimumHeight + parentMaximumHeight);
3080
+ const approximateCenterPosition = Cartographic_default.toCartesian(
3081
+ approximateCenterCartographic,
3082
+ ellipsoid,
3083
+ scratchCenterCartesianUpsample
3084
+ );
3085
+ const upsampledVertexCountWithoutSkirts = upsampledTriIDs.length;
3086
+ const upsampledTerrainEncoding = new TerrainEncoding_default(
3087
+ approximateCenterPosition,
3088
+ void 0,
3089
+ void 0,
3090
+ void 0,
3091
+ void 0,
3092
+ hasVertexNormals,
3093
+ hasWebMercatorT,
3094
+ hasGeodeticSurfaceNormals,
3095
+ exaggeration,
3096
+ exaggerationRelativeHeight
3097
+ );
3098
+ const upsampledVertexBufferStride = upsampledTerrainEncoding.stride;
3099
+ const upsampledSkirtVertexCount = TerrainProvider_default.getSkirtVertexCount(
3100
+ upsampledWestIndices,
3101
+ upsampledSouthIndices,
3102
+ upsampledEastIndices,
3103
+ upsampledNorthIndices
3104
+ );
3105
+ const upsampledVertexCountWithSkirts = upsampledVertexCountWithoutSkirts + upsampledSkirtVertexCount;
3106
+ const upsampledIndexCountWithoutSkirts = upsampledIndices.length;
3107
+ const upsampledSkirtIndexCount = TerrainProvider_default.getSkirtIndexCountWithFilledCorners(
3108
+ upsampledSkirtVertexCount
3109
+ );
3110
+ const upsampledIndexCountWithSkirts = upsampledIndexCountWithoutSkirts + upsampledSkirtIndexCount;
3111
+ const SizedIndexTypeWithSkirts = upsampledVertexCountWithSkirts <= 65535 ? Uint16Array : Uint32Array;
3112
+ const upsampledIndexBuffer = new SizedIndexTypeWithSkirts(
3113
+ upsampledIndexCountWithSkirts
3114
+ );
3115
+ upsampledIndexBuffer.set(upsampledIndices);
3116
+ const upsampledWestIndicesBuffer = new SizedIndexTypeWithSkirts(
3117
+ upsampledWestIndices
3118
+ );
3119
+ const upsampledSouthIndicesBuffer = new SizedIndexTypeWithSkirts(
3120
+ upsampledSouthIndices
3121
+ );
3122
+ const upsampledEastIndicesBuffer = new SizedIndexTypeWithSkirts(
3123
+ upsampledEastIndices
3124
+ );
3125
+ const upsampledNorthIndicesBuffer = new SizedIndexTypeWithSkirts(
3126
+ upsampledNorthIndices
3127
+ );
3128
+ const upsampledVertexBuffer = new Float32Array(
3129
+ upsampledVertexCountWithSkirts * upsampledVertexBufferStride
3130
+ );
3131
+ let upsampledVertexBufferOffset = 0;
3132
+ const enuToEcef = Transforms_default.eastNorthUpToFixedFrame(
3133
+ approximateCenterPosition,
3134
+ ellipsoid,
3135
+ scratchEnuToEcefUpsample
3136
+ );
3137
+ const ecefToEnu = Matrix4_default.inverseTransformation(
3138
+ enuToEcef,
3139
+ scratchEcefToEnuUpsample
3140
+ );
3141
+ const minimumLongitude = upsampleRectangle.west;
3142
+ const maximumLongitude = upsampleRectangle.east;
3143
+ const minimumLatitude = upsampleRectangle.south;
3144
+ const maximumLatitude = upsampleRectangle.north;
3145
+ const southMercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(minimumLatitude);
3146
+ const northMercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(maximumLatitude);
3147
+ const oneOverMercatorHeight = 1 / (northMercatorAngle - southMercatorAngle);
3148
+ let minimumHeight = Number.POSITIVE_INFINITY;
3149
+ let maximumHeight = Number.NEGATIVE_INFINITY;
3150
+ let minPosEnu = Cartesian3_default.fromElements(
3151
+ Number.POSITIVE_INFINITY,
3152
+ Number.POSITIVE_INFINITY,
3153
+ Number.POSITIVE_INFINITY,
3154
+ scratchMinimumPositionENUUpsample
3155
+ );
3156
+ let maxPosEnu = Cartesian3_default.fromElements(
3157
+ Number.NEGATIVE_INFINITY,
3158
+ Number.NEGATIVE_INFINITY,
3159
+ Number.NEGATIVE_INFINITY,
3160
+ scratchMaximumPositionENUUpsample
3161
+ );
3162
+ for (let i = 0; i < upsampledVertexCountWithoutSkirts; i++) {
3163
+ const triId = upsampledTriIDs[i];
3164
+ const indexA = indices[triId * 3 + 0];
3165
+ const indexB = indices[triId * 3 + 1];
3166
+ const indexC = indices[triId * 3 + 2];
3167
+ const uv = scratchUVUpsample;
3168
+ uv.x = upsampledUVs[i * 2 + 0];
3169
+ uv.y = upsampledUVs[i * 2 + 1];
3170
+ const u = uv.x;
3171
+ const v = uv.y;
3172
+ const baryA = upsampledBarys[i * 2 + 0];
3173
+ const baryB = upsampledBarys[i * 2 + 1];
3174
+ const baryC = 1 - baryA - baryB;
3175
+ const heightA = encoding.decodeHeight(vertexBuffer, indexA);
3176
+ const heightB = encoding.decodeHeight(vertexBuffer, indexB);
3177
+ const heightC = encoding.decodeHeight(vertexBuffer, indexC);
3178
+ const height = heightA * baryA + heightB * baryB + heightC * baryC;
3179
+ minimumHeight = Math.min(height, minimumHeight);
3180
+ maximumHeight = Math.max(height, maximumHeight);
3181
+ const lon = Math_default.lerp(minimumLongitude, maximumLongitude, u);
3182
+ const lat = Math_default.lerp(minimumLatitude, maximumLatitude, v);
3183
+ const carto = Cartographic_default.fromRadians(
3184
+ lon,
3185
+ lat,
3186
+ height,
3187
+ scratchCartographicUpsample
3188
+ );
3189
+ const position = Cartographic_default.toCartesian(
3190
+ carto,
3191
+ ellipsoid,
3192
+ scratchPosEcefUpsample
3193
+ );
3194
+ const posEnu = Matrix4_default.multiplyByPoint(
3195
+ ecefToEnu,
3196
+ position,
3197
+ scratchPosEnuUpsample
3198
+ );
3199
+ minPosEnu = Cartesian3_default.minimumByComponent(posEnu, minPosEnu, minPosEnu);
3200
+ maxPosEnu = Cartesian3_default.maximumByComponent(posEnu, maxPosEnu, maxPosEnu);
3201
+ let normalOct;
3202
+ if (hasVertexNormals) {
3203
+ const normalA = encoding.decodeNormal(
3204
+ vertexBuffer,
3205
+ indexA,
3206
+ scratchNormalA
3207
+ );
3208
+ const normalB = encoding.decodeNormal(
3209
+ vertexBuffer,
3210
+ indexB,
3211
+ scratchNormalB
3212
+ );
3213
+ const normalC = encoding.decodeNormal(
3214
+ vertexBuffer,
3215
+ indexC,
3216
+ scratchNormalC
3217
+ );
3218
+ let normal = Cartesian3_default.fromElements(
3219
+ normalA.x * baryA + normalB.x * baryB + normalC.x * baryC,
3220
+ normalA.y * baryA + normalB.y * baryB + normalC.y * baryC,
3221
+ normalA.z * baryA + normalB.z * baryB + normalC.z * baryC,
3222
+ scratchNormalUpsample
3223
+ );
3224
+ normal = Cartesian3_default.normalize(normal, scratchNormalUpsample);
3225
+ normalOct = AttributeCompression_default.octEncode(
3226
+ normal,
3227
+ scratchNormalOctUpsample
3228
+ );
3229
+ }
3230
+ let webMercatorT;
3231
+ if (hasWebMercatorT) {
3232
+ const mercatorAngle = WebMercatorProjection_default.geodeticLatitudeToMercatorAngle(lat);
3233
+ webMercatorT = (mercatorAngle - southMercatorAngle) * oneOverMercatorHeight;
3234
+ }
3235
+ let geodeticSurfaceNormal;
3236
+ if (hasGeodeticSurfaceNormals) {
3237
+ geodeticSurfaceNormal = ellipsoid.geodeticSurfaceNormal(
3238
+ position,
3239
+ scratchGeodeticSurfaceNormalUpsample
3240
+ );
3241
+ }
3242
+ upsampledVertexBufferOffset = upsampledTerrainEncoding.encode(
3243
+ upsampledVertexBuffer,
3244
+ upsampledVertexBufferOffset,
3245
+ position,
3246
+ uv,
3247
+ height,
3248
+ normalOct,
3249
+ webMercatorT,
3250
+ geodeticSurfaceNormal
3251
+ );
3252
+ }
3253
+ const orientedBoundingBox = OrientedBoundingBox_default.fromRectangle(
3254
+ upsampleRectangle,
3255
+ minimumHeight,
3256
+ maximumHeight,
3257
+ ellipsoid,
3258
+ scratchOrientedBoundingBox
3259
+ );
3260
+ const boundingSphere = BoundingSphere_default.fromVertices(
3261
+ upsampledVertexBuffer,
3262
+ upsampledTerrainEncoding.center,
3263
+ upsampledVertexBufferStride,
3264
+ scratchBoundingSphere
3265
+ );
3266
+ const occluder = new EllipsoidalOccluder_default(ellipsoid);
3267
+ const horizonOcclusionPoint = occluder.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid(
3268
+ upsampledTerrainEncoding.center,
3269
+ // vector from ellipsoid center to horizon occlusion point
3270
+ upsampledVertexBuffer,
3271
+ upsampledVertexBufferStride,
3272
+ upsampledTerrainEncoding.center,
3273
+ minimumHeight,
3274
+ scratchHorizonOcclusionPoint
3275
+ );
3276
+ const upsampledMesh = new TerrainMesh_default(
3277
+ Cartesian3_default.clone(upsampledTerrainEncoding.center, new Cartesian3_default()),
3278
+ upsampledVertexBuffer,
3279
+ upsampledIndexBuffer,
3280
+ upsampledIndexCountWithoutSkirts,
3281
+ upsampledVertexCountWithoutSkirts,
3282
+ minimumHeight,
3283
+ maximumHeight,
3284
+ upsampleRectangle,
3285
+ BoundingSphere_default.clone(boundingSphere),
3286
+ Cartesian3_default.clone(horizonOcclusionPoint),
3287
+ upsampledVertexBufferStride,
3288
+ OrientedBoundingBox_default.clone(orientedBoundingBox),
3289
+ upsampledTerrainEncoding,
3290
+ upsampledWestIndicesBuffer,
3291
+ upsampledSouthIndicesBuffer,
3292
+ upsampledEastIndicesBuffer,
3293
+ upsampledNorthIndicesBuffer
3294
+ );
3295
+ addSkirtsToMesh(
3296
+ upsampledMesh,
3297
+ upsampleRectangle,
3298
+ ellipsoid,
3299
+ minPosEnu,
3300
+ maxPosEnu,
3301
+ enuToEcef,
3302
+ ecefToEnu,
3303
+ skirtHeight
3304
+ );
3305
+ return upsampledMesh;
3306
+ };
3307
+ function addSkirtsToMesh(mesh, rectangle, ellipsoid, enuMinimum, enuMaximum, enuToEcef, ecefToEnu, skirtHeight) {
3308
+ const { encoding } = mesh;
3309
+ const vertexStride = encoding.stride;
3310
+ const vertexBuffer = mesh.vertices;
3311
+ const {
3312
+ hasVertexNormals,
3313
+ hasWebMercatorT,
3314
+ exaggeration,
3315
+ exaggerationRelativeHeight
3316
+ } = encoding;
3317
+ const hasExaggeration = exaggeration !== 1;
3318
+ const hasGeodeticSurfaceNormals = hasExaggeration;
3319
+ const vertexCountWithoutSkirts = mesh.vertexCountWithoutSkirts;
3320
+ let vertexBufferOffset = vertexCountWithoutSkirts * vertexStride;
3321
+ const vertexCountWithSkirts = vertexBuffer.length / vertexStride;
3322
+ const skirtVertexCount = vertexCountWithSkirts - vertexCountWithoutSkirts;
3323
+ const indices = mesh.indices;
3324
+ const indexCountWithoutSkirts = mesh.indexCountWithoutSkirts;
3325
+ const westIndices = mesh.westIndicesSouthToNorth;
3326
+ const southIndices = mesh.southIndicesEastToWest;
3327
+ const eastIndices = mesh.eastIndicesNorthToSouth;
3328
+ const northIndices = mesh.northIndicesWestToEast;
3329
+ TerrainProvider_default.addSkirtIndicesWithFilledCorners(
3330
+ westIndices,
3331
+ southIndices,
3332
+ eastIndices,
3333
+ northIndices,
3334
+ vertexCountWithoutSkirts,
3335
+ indices,
3336
+ indexCountWithoutSkirts
3337
+ );
3338
+ const westOffset = 0;
3339
+ const southOffset = westOffset + westIndices.length;
3340
+ const eastOffset = southOffset + southIndices.length;
3341
+ const northOffset = eastOffset + eastIndices.length;
3342
+ const edges = [westIndices, southIndices, eastIndices, northIndices];
3343
+ const edgeIndexOffset = [westOffset, southOffset, eastOffset, northOffset];
3344
+ const edgeLongitudeSign = [-1, 0, 1, 0];
3345
+ const edgeLatitudeSign = [0, -1, 0, 1];
3346
+ const minimumPositionENUWithSkirts = Cartesian3_default.clone(
3347
+ enuMinimum,
3348
+ scratchMinimumPositionENUSkirt
3349
+ );
3350
+ const maximumPositionENUWithSkirts = Cartesian3_default.clone(
3351
+ enuMaximum,
3352
+ scratchMaximumPositionENUSkirt
3353
+ );
3354
+ const maximumHeight = mesh.maximumHeight;
3355
+ const minimumHeightWithSkirts = mesh.minimumHeight - skirtHeight;
3356
+ for (let skirtId = 0; skirtId < skirtVertexCount; skirtId++) {
3357
+ let side;
3358
+ for (side = 0; side < 3; side++) {
3359
+ if (skirtId < edgeIndexOffset[side + 1]) {
3360
+ break;
3361
+ }
3362
+ }
3363
+ const vertexIndex = edges[side][skirtId - edgeIndexOffset[side]];
3364
+ const uv = encoding.decodeTextureCoordinates(
3365
+ vertexBuffer,
3366
+ vertexIndex,
3367
+ scratchUVSkirt
3368
+ );
3369
+ const skirtLonLatOffsetPercent = 1e-4;
3370
+ const longitudeT = uv.x + edgeLongitudeSign[side] * skirtLonLatOffsetPercent;
3371
+ const latitudeT = uv.y + edgeLatitudeSign[side] * skirtLonLatOffsetPercent;
3372
+ const longitude = Math_default.lerp(
3373
+ rectangle.west,
3374
+ rectangle.east,
3375
+ longitudeT
3376
+ );
3377
+ const latitude = Math_default.clamp(
3378
+ Math_default.lerp(rectangle.south, rectangle.north, latitudeT),
3379
+ -Math_default.PI_OVER_TWO,
3380
+ +Math_default.PI_OVER_TWO
3381
+ );
3382
+ const vertHeight = encoding.decodeHeight(vertexBuffer, vertexIndex);
3383
+ const height = vertHeight - skirtHeight;
3384
+ const cartographic = Cartographic_default.fromRadians(
3385
+ longitude,
3386
+ latitude,
3387
+ height,
3388
+ scratchCartographicSkirt
3389
+ );
3390
+ const positionEcef = Cartographic_default.toCartesian(
3391
+ cartographic,
3392
+ ellipsoid,
3393
+ scratchPosEcefSkirt
3394
+ );
3395
+ let normalOct;
3396
+ if (hasVertexNormals) {
3397
+ normalOct = encoding.getOctEncodedNormal(
3398
+ vertexBuffer,
3399
+ vertexIndex,
3400
+ scratchNormalOctSkirt
3401
+ );
3402
+ }
3403
+ let webMercatorT;
3404
+ if (hasWebMercatorT) {
3405
+ webMercatorT = encoding.decodeWebMercatorT(vertexBuffer, vertexIndex);
3406
+ }
3407
+ let geodeticSurfaceNormal;
3408
+ if (hasGeodeticSurfaceNormals) {
3409
+ geodeticSurfaceNormal = ellipsoid.geodeticSurfaceNormal(
3410
+ positionEcef,
3411
+ scratchGeodeticSurfaceNormalSkirt
3412
+ );
3413
+ }
3414
+ vertexBufferOffset = encoding.encode(
3415
+ vertexBuffer,
3416
+ vertexBufferOffset,
3417
+ positionEcef,
3418
+ uv,
3419
+ height,
3420
+ normalOct,
3421
+ webMercatorT,
3422
+ geodeticSurfaceNormal
3423
+ );
3424
+ const positionENU = Matrix4_default.multiplyByPoint(
3425
+ ecefToEnu,
3426
+ positionEcef,
3427
+ scratchPosEnuSkirt
3428
+ );
3429
+ Cartesian3_default.minimumByComponent(
3430
+ positionENU,
3431
+ minimumPositionENUWithSkirts,
3432
+ minimumPositionENUWithSkirts
3433
+ );
3434
+ Cartesian3_default.maximumByComponent(
3435
+ positionENU,
3436
+ maximumPositionENUWithSkirts,
3437
+ maximumPositionENUWithSkirts
3438
+ );
3439
+ }
3440
+ const aabbEnuWithSkirts = AxisAlignedBoundingBox_default.fromCorners(
3441
+ minimumPositionENUWithSkirts,
3442
+ maximumPositionENUWithSkirts,
3443
+ scratchAABBEnuSkirt
3444
+ );
3445
+ const encodingWithSkirts = new TerrainEncoding_default(
3446
+ encoding.center,
3447
+ aabbEnuWithSkirts,
3448
+ minimumHeightWithSkirts,
3449
+ maximumHeight,
3450
+ enuToEcef,
3451
+ encoding.hasVertexNormals,
3452
+ encoding.hasWebMercatorT,
3453
+ hasGeodeticSurfaceNormals,
3454
+ exaggeration,
3455
+ exaggerationRelativeHeight
3456
+ );
3457
+ if (encoding.quantization !== encodingWithSkirts.quantization) {
3458
+ const finalEncoding = encodingWithSkirts;
3459
+ const finalVertexStride = finalEncoding.stride;
3460
+ const finalVertexBuffer = new Float32Array(
3461
+ vertexCountWithSkirts * finalVertexStride
3462
+ );
3463
+ let finalVertexBufferOffset = 0;
3464
+ for (let i = 0; i < vertexCountWithSkirts; i++) {
3465
+ finalVertexBufferOffset = finalEncoding.encode(
3466
+ finalVertexBuffer,
3467
+ finalVertexBufferOffset,
3468
+ encoding.decodePosition(vertexBuffer, i, scratchPosEcefSkirt),
3469
+ encoding.decodeTextureCoordinates(vertexBuffer, i, scratchUVSkirt),
3470
+ encoding.decodeHeight(vertexBuffer, i),
3471
+ encoding.hasVertexNormals ? encoding.getOctEncodedNormal(vertexBuffer, i, scratchNormalOctSkirt) : void 0,
3472
+ encoding.hasWebMercatorT ? encoding.decodeWebMercatorT(vertexBuffer, i) : void 0,
3473
+ encoding.hasGeodeticSurfaceNormals ? encoding.decodeGeodeticSurfaceNormal(
3474
+ vertexBuffer,
3475
+ i,
3476
+ scratchGeodeticSurfaceNormalSkirt
3477
+ ) : void 0
3478
+ );
3479
+ }
3480
+ mesh.vertices = finalVertexBuffer;
3481
+ mesh.stride = finalVertexStride;
3482
+ mesh.encoding = finalEncoding;
3483
+ }
3484
+ return mesh;
3485
+ }
3486
+ var EDGE_ID_LEFT = 0;
3487
+ var EDGE_ID_TOP = 1;
3488
+ var EDGE_ID_RIGHT = 2;
3489
+ var EDGE_ID_BOTTOM = 3;
3490
+ var EDGE_COUNT = 4;
3491
+ var scratchIntersection = new Cartesian3_default();
3492
+ var scratchInBarys = [
3493
+ new Cartesian3_default(),
3494
+ new Cartesian3_default(),
3495
+ new Cartesian3_default(),
3496
+ new Cartesian3_default(),
3497
+ new Cartesian3_default(),
3498
+ new Cartesian3_default()
3499
+ ];
3500
+ var scratchInPoints = [
3501
+ new Cartesian2_default(),
3502
+ new Cartesian2_default(),
3503
+ new Cartesian2_default(),
3504
+ new Cartesian2_default(),
3505
+ new Cartesian2_default(),
3506
+ new Cartesian2_default()
3507
+ ];
3508
+ var scratchOutBarys = [
3509
+ new Cartesian3_default(),
3510
+ new Cartesian3_default(),
3511
+ new Cartesian3_default(),
3512
+ new Cartesian3_default(),
3513
+ new Cartesian3_default(),
3514
+ new Cartesian3_default()
3515
+ ];
3516
+ var scratchOutPoints = [
3517
+ new Cartesian2_default(),
3518
+ new Cartesian2_default(),
3519
+ new Cartesian2_default(),
3520
+ new Cartesian2_default(),
3521
+ new Cartesian2_default(),
3522
+ new Cartesian2_default()
3523
+ ];
3524
+ function inside(boxMinimum, boxMaximum, edgeId, p) {
3525
+ switch (edgeId) {
3526
+ case EDGE_ID_LEFT:
3527
+ return Math_default.sign(p.x - boxMinimum.x);
3528
+ case EDGE_ID_RIGHT:
3529
+ return Math_default.sign(boxMaximum.x - p.x);
3530
+ case EDGE_ID_BOTTOM:
3531
+ return Math_default.sign(p.y - boxMinimum.y);
3532
+ default:
3533
+ return Math_default.sign(boxMaximum.y - p.y);
3534
+ }
3535
+ }
3536
+ function intersect(boxMinimum, boxMaximum, edgeId, a, b, result) {
3537
+ let t, intersectX, intersectY;
3538
+ switch (edgeId) {
3539
+ case EDGE_ID_LEFT:
3540
+ t = (boxMinimum.x - a.x) / (b.x - a.x);
3541
+ intersectX = boxMinimum.x;
3542
+ intersectY = a.y + (b.y - a.y) * t;
3543
+ break;
3544
+ case EDGE_ID_RIGHT:
3545
+ t = (boxMaximum.x - a.x) / (b.x - a.x);
3546
+ intersectX = boxMaximum.x;
3547
+ intersectY = a.y + (b.y - a.y) * t;
3548
+ break;
3549
+ case EDGE_ID_BOTTOM:
3550
+ t = (boxMinimum.y - a.y) / (b.y - a.y);
3551
+ intersectX = a.x + (b.x - a.x) * t;
3552
+ intersectY = boxMinimum.y;
3553
+ break;
3554
+ default:
3555
+ t = (boxMaximum.y - a.y) / (b.y - a.y);
3556
+ intersectX = a.x + (b.x - a.x) * t;
3557
+ intersectY = boxMaximum.y;
3558
+ break;
3559
+ }
3560
+ return Cartesian3_default.fromElements(intersectX, intersectY, t, result);
3561
+ }
3562
+ var scratchPolygon = {
3563
+ length: 0,
3564
+ coordinates: [
3565
+ new Cartesian2_default(),
3566
+ new Cartesian2_default(),
3567
+ new Cartesian2_default(),
3568
+ new Cartesian2_default(),
3569
+ new Cartesian2_default(),
3570
+ new Cartesian2_default()
3571
+ ],
3572
+ barycentricCoordinates: [
3573
+ new Cartesian3_default(),
3574
+ new Cartesian3_default(),
3575
+ new Cartesian3_default(),
3576
+ new Cartesian3_default(),
3577
+ new Cartesian3_default(),
3578
+ new Cartesian3_default()
3579
+ ]
3580
+ };
3581
+ function clipTriangleAgainstBoxEdgeRange(edgeStart, edgeCount, boxMinimum, boxMaximum, p0, p1, p2, result) {
3582
+ let inputLength;
3583
+ let inputPoints = scratchInPoints;
3584
+ let inputBarys = scratchInBarys;
3585
+ let outputLength = 3;
3586
+ let outputPoints = scratchOutPoints;
3587
+ Cartesian2_default.clone(p0, outputPoints[0]);
3588
+ Cartesian2_default.clone(p1, outputPoints[1]);
3589
+ Cartesian2_default.clone(p2, outputPoints[2]);
3590
+ let outputBarys = scratchOutBarys;
3591
+ Cartesian3_default.fromElements(1, 0, 0, outputBarys[0]);
3592
+ Cartesian3_default.fromElements(0, 1, 0, outputBarys[1]);
3593
+ Cartesian3_default.fromElements(0, 0, 1, outputBarys[2]);
3594
+ for (let e = 0; e < edgeCount; e++) {
3595
+ const edgeId = (edgeStart + e) % EDGE_COUNT;
3596
+ const tempPoints = inputPoints;
3597
+ const tempBarys = inputBarys;
3598
+ inputPoints = outputPoints;
3599
+ inputBarys = outputBarys;
3600
+ inputLength = outputLength;
3601
+ outputPoints = tempPoints;
3602
+ outputBarys = tempBarys;
3603
+ outputLength = 0;
3604
+ const prevIdx = inputLength - 1;
3605
+ let prevPoint = inputPoints[prevIdx];
3606
+ let prevBary = inputBarys[prevIdx];
3607
+ let prevInside = inside(boxMinimum, boxMaximum, edgeId, prevPoint);
3608
+ for (let currIdx = 0; currIdx < inputLength; currIdx++) {
3609
+ const currPoint = inputPoints[currIdx];
3610
+ const currBary = inputBarys[currIdx];
3611
+ const currInside = inside(boxMinimum, boxMaximum, edgeId, currPoint);
3612
+ if (prevInside * currInside === -1) {
3613
+ const intersection = intersect(
3614
+ boxMinimum,
3615
+ boxMaximum,
3616
+ edgeId,
3617
+ prevPoint,
3618
+ currPoint,
3619
+ scratchIntersection
3620
+ );
3621
+ const { x, y, z: t } = intersection;
3622
+ const tInv = 1 - t;
3623
+ const baryA = prevBary.x * tInv + currBary.x * t;
3624
+ const baryB = prevBary.y * tInv + currBary.y * t;
3625
+ const baryC = prevBary.z * tInv + currBary.z * t;
3626
+ Cartesian2_default.fromElements(x, y, outputPoints[outputLength]);
3627
+ Cartesian3_default.fromElements(baryA, baryB, baryC, outputBarys[outputLength]);
3628
+ outputLength++;
3629
+ }
3630
+ if (currInside >= 0) {
3631
+ Cartesian2_default.clone(currPoint, outputPoints[outputLength]);
3632
+ Cartesian3_default.clone(currBary, outputBarys[outputLength]);
3633
+ outputLength++;
3634
+ }
3635
+ prevPoint = currPoint;
3636
+ prevBary = currBary;
3637
+ prevInside = currInside;
3638
+ }
3639
+ if (outputLength === 0) {
3640
+ break;
3641
+ }
3642
+ }
3643
+ result.length = outputLength;
3644
+ for (let i = 0; i < outputLength; i++) {
3645
+ Cartesian2_default.clone(outputPoints[i], result.coordinates[i]);
3646
+ Cartesian3_default.clone(outputBarys[i], result.barycentricCoordinates[i]);
3647
+ }
3648
+ return result;
3649
+ }
3650
+ function clipTriangleFromQuadrant(isEastChild, isNorthChild, boxMinimum, boxMaximum, p0, p1, p2, result) {
3651
+ const edgeStart = isEastChild ? isNorthChild ? EDGE_ID_BOTTOM : EDGE_ID_LEFT : isNorthChild ? EDGE_ID_RIGHT : EDGE_ID_TOP;
3652
+ return clipTriangleAgainstBoxEdgeRange(
3653
+ edgeStart,
3654
+ 2,
3655
+ boxMinimum,
3656
+ boxMaximum,
3657
+ p0,
3658
+ p1,
3659
+ p2,
3660
+ result
3661
+ );
3662
+ }
3663
+ var lookUpTableBaryToPrim = [
3664
+ [],
3665
+ // 000
3666
+ [0],
3667
+ // 001
3668
+ [1],
3669
+ // 010
3670
+ [0, 1],
3671
+ // 011
3672
+ [2],
3673
+ // 100
3674
+ [0, 2],
3675
+ // 101
3676
+ [1, 2],
3677
+ // 110
3678
+ [0, 1, 2]
3679
+ // 111
3680
+ ];
3681
+ function clipTileFromQuadrant(isEastChild, isNorthChild, indexCount, indices, vertexCount, vertices, vertexEncoding, resultIndices, resultWestIndices, resultSouthIndices, resultEastIndices, resultNorthIndices, resultTriIds, resultBary, resultUVs) {
3682
+ const upsampledVertexMap = {};
3683
+ const minU = isEastChild ? 0.5 : 0;
3684
+ const maxU = isEastChild ? 1 : 0.5;
3685
+ const minV = isNorthChild ? 0.5 : 0;
3686
+ const maxV = isNorthChild ? 1 : 0.5;
3687
+ const minUV = scratchMinUV;
3688
+ minUV.x = minU;
3689
+ minUV.y = minV;
3690
+ const maxUV = scratchMaxUV;
3691
+ maxUV.x = maxU;
3692
+ maxUV.y = maxV;
3693
+ let upsampledVertexCount = 0;
3694
+ for (let i = 0; i < indexCount; i += 3) {
3695
+ const indexA = indices[i + 0];
3696
+ const indexB = indices[i + 1];
3697
+ const indexC = indices[i + 2];
3698
+ const uvA = vertexEncoding.decodeTextureCoordinates(
3699
+ vertices,
3700
+ indexA,
3701
+ scratchUvA
3702
+ );
3703
+ const uvB = vertexEncoding.decodeTextureCoordinates(
3704
+ vertices,
3705
+ indexB,
3706
+ scratchUvB
3707
+ );
3708
+ const uvC = vertexEncoding.decodeTextureCoordinates(
3709
+ vertices,
3710
+ indexC,
3711
+ scratchUvC
3712
+ );
3713
+ const clippedPolygon = clipTriangleFromQuadrant(
3714
+ isEastChild,
3715
+ isNorthChild,
3716
+ minUV,
3717
+ maxUV,
3718
+ uvA,
3719
+ uvB,
3720
+ uvC,
3721
+ scratchPolygon
3722
+ );
3723
+ const clippedPolygonLength = clippedPolygon.length;
3724
+ if (clippedPolygonLength < 3) {
3725
+ continue;
3726
+ }
3727
+ const polygonUpsampledIndices = scratchPolygonIndices;
3728
+ for (let p = 0; p < clippedPolygonLength; p++) {
3729
+ const polygonBary = clippedPolygon.barycentricCoordinates[p];
3730
+ const bA = polygonBary.x;
3731
+ const bB = polygonBary.y;
3732
+ const bC = polygonBary.z;
3733
+ const baryId = Math.ceil(bA) | Math.ceil(bB) << 1 | Math.ceil(bC) << 2;
3734
+ const primitiveIds = lookUpTableBaryToPrim[baryId];
3735
+ let upsampledIndex;
3736
+ let isNewVertex = false;
3737
+ if (primitiveIds.length === 1) {
3738
+ const pointPrimitiveId = primitiveIds[0];
3739
+ const pointIndex = indices[i + pointPrimitiveId];
3740
+ const pointKey = pointIndex;
3741
+ upsampledIndex = upsampledVertexMap[pointKey];
3742
+ if (upsampledIndex === void 0) {
3743
+ isNewVertex = true;
3744
+ upsampledIndex = upsampledVertexCount++;
3745
+ upsampledVertexMap[pointKey] = upsampledIndex;
3746
+ }
3747
+ } else if (primitiveIds.length === 2) {
3748
+ const edgePrimitiveIdA = primitiveIds[0];
3749
+ const edgePrimitiveIdB = primitiveIds[1];
3750
+ const edgeIndexA = indices[i + edgePrimitiveIdA];
3751
+ const edgeIndexB = indices[i + edgePrimitiveIdB];
3752
+ const prevBary = clippedPolygon.barycentricCoordinates[(p + clippedPolygonLength - 1) % clippedPolygonLength];
3753
+ const prevBaryId = Math.ceil(prevBary.x) | Math.ceil(prevBary.y) << 1 | Math.ceil(prevBary.z) << 2;
3754
+ const sameEdge = baryId === prevBaryId;
3755
+ const minIndex = Math.min(edgeIndexA, edgeIndexB);
3756
+ const maxIndex = Math.max(edgeIndexA, edgeIndexB);
3757
+ const baseKey = vertexCount + 2 * (minIndex * vertexCount + maxIndex);
3758
+ const firstKey = baseKey + 0;
3759
+ const secondKey = baseKey + 1;
3760
+ const firstEntry = upsampledVertexMap[firstKey];
3761
+ const secondEntry = upsampledVertexMap[secondKey];
3762
+ const useFirst = !sameEdge === (firstEntry === void 0 || secondEntry === void 0);
3763
+ upsampledIndex = useFirst ? firstEntry : secondEntry;
3764
+ if (upsampledIndex === void 0) {
3765
+ isNewVertex = true;
3766
+ upsampledIndex = upsampledVertexCount++;
3767
+ const edgeKey = useFirst ? firstKey : secondKey;
3768
+ upsampledVertexMap[edgeKey] = upsampledIndex;
3769
+ }
3770
+ } else {
3771
+ isNewVertex = true;
3772
+ upsampledIndex = upsampledVertexCount++;
3773
+ }
3774
+ polygonUpsampledIndices[p] = upsampledIndex;
3775
+ if (isNewVertex) {
3776
+ const triId = i / 3;
3777
+ resultTriIds.push(triId);
3778
+ const polygonUV = clippedPolygon.coordinates[p];
3779
+ const u = (polygonUV.x - minU) / (maxU - minU);
3780
+ const v = (polygonUV.y - minV) / (maxV - minV);
3781
+ resultUVs.push(u, v);
3782
+ resultBary.push(bA, bB);
3783
+ if (u === 0) {
3784
+ resultWestIndices.push(upsampledIndex);
3785
+ } else if (u === 1) {
3786
+ resultEastIndices.push(upsampledIndex);
3787
+ }
3788
+ if (v === 0) {
3789
+ resultSouthIndices.push(upsampledIndex);
3790
+ } else if (v === 1) {
3791
+ resultNorthIndices.push(upsampledIndex);
3792
+ }
3793
+ }
3794
+ }
3795
+ const ui0 = polygonUpsampledIndices[0];
3796
+ let ui1 = polygonUpsampledIndices[1];
3797
+ let ui2 = polygonUpsampledIndices[2];
3798
+ resultIndices.push(ui0, ui1, ui2);
3799
+ for (let j = 3; j < clippedPolygonLength; j++) {
3800
+ ui1 = ui2;
3801
+ ui2 = polygonUpsampledIndices[j];
3802
+ resultIndices.push(ui0, ui1, ui2);
3803
+ }
3804
+ }
3805
+ resultWestIndices.sort(function(a, b) {
3806
+ return resultUVs[a * 2 + 1] - resultUVs[b * 2 + 1];
3807
+ });
3808
+ resultSouthIndices.sort(function(a, b) {
3809
+ return resultUVs[b * 2 + 0] - resultUVs[a * 2 + 0];
3810
+ });
3811
+ resultEastIndices.sort(function(a, b) {
3812
+ return resultUVs[b * 2 + 1] - resultUVs[a * 2 + 1];
3813
+ });
3814
+ resultNorthIndices.sort(function(a, b) {
3815
+ return resultUVs[a * 2 + 0] - resultUVs[b * 2 + 0];
3816
+ });
3817
+ }
3818
+ var Cesium3DTilesTerrainGeometryProcessor_default = Cesium3DTilesTerrainGeometryProcessor;
3819
+
3820
+ export {
3821
+ Cesium3DTilesTerrainGeometryProcessor_default
3822
+ };