@loaders.gl/tiles 4.5.3 → 5.0.0-alpha.10

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 (295) hide show
  1. package/LICENSE +14 -3
  2. package/README.md +136 -1
  3. package/dist/dist.dev.js +22570 -4947
  4. package/dist/dist.min.js +3 -1
  5. package/dist/image-set.d.ts +94 -0
  6. package/dist/image-set.d.ts.map +1 -0
  7. package/dist/image-set.js +243 -0
  8. package/dist/image-set.js.map +1 -0
  9. package/dist/index.cjs +10171 -2117
  10. package/dist/index.cjs.map +3 -4
  11. package/dist/index.d.ts +50 -9
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +28 -8
  14. package/dist/index.js.map +1 -1
  15. package/dist/point-cloud/point-cloud-tile.d.ts +47 -0
  16. package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -0
  17. package/dist/point-cloud/point-cloud-tile.js +70 -0
  18. package/dist/point-cloud/point-cloud-tile.js.map +1 -0
  19. package/dist/point-cloud/point-cloud-tileset.d.ts +135 -0
  20. package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
  21. package/dist/point-cloud/point-cloud-tileset.js +549 -0
  22. package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
  23. package/dist/point-cloud/types.d.ts +81 -0
  24. package/dist/point-cloud/types.d.ts.map +1 -0
  25. package/dist/point-cloud/types.js +5 -0
  26. package/dist/point-cloud/types.js.map +1 -0
  27. package/dist/raster-set.d.ts +124 -0
  28. package/dist/raster-set.d.ts.map +1 -0
  29. package/dist/raster-set.js +348 -0
  30. package/dist/raster-set.js.map +1 -0
  31. package/dist/spatial/format-spatial-reference.d.ts +68 -0
  32. package/dist/spatial/format-spatial-reference.d.ts.map +1 -0
  33. package/dist/spatial/format-spatial-reference.js +291 -0
  34. package/dist/spatial/format-spatial-reference.js.map +1 -0
  35. package/dist/spatial/get-spatial-coordinate-frame.d.ts +20 -0
  36. package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -0
  37. package/dist/spatial/get-spatial-coordinate-frame.js +139 -0
  38. package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -0
  39. package/dist/spatial/i3s-elevation.d.ts +20 -0
  40. package/dist/spatial/i3s-elevation.d.ts.map +1 -0
  41. package/dist/spatial/i3s-elevation.js +90 -0
  42. package/dist/spatial/i3s-elevation.js.map +1 -0
  43. package/dist/spatial/i3s-spatial-transformer.d.ts +189 -0
  44. package/dist/spatial/i3s-spatial-transformer.d.ts.map +1 -0
  45. package/dist/spatial/i3s-spatial-transformer.js +686 -0
  46. package/dist/spatial/i3s-spatial-transformer.js.map +1 -0
  47. package/dist/spatial/normalize-crs-identifier.d.ts +15 -0
  48. package/dist/spatial/normalize-crs-identifier.d.ts.map +1 -0
  49. package/dist/spatial/normalize-crs-identifier.js +22 -0
  50. package/dist/spatial/normalize-crs-identifier.js.map +1 -0
  51. package/dist/spatial/spatial-coordinate-transformer.d.ts +52 -0
  52. package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -0
  53. package/dist/spatial/spatial-coordinate-transformer.js +295 -0
  54. package/dist/spatial/spatial-coordinate-transformer.js.map +1 -0
  55. package/dist/spatial/spatial-resource-registry.d.ts +44 -0
  56. package/dist/spatial/spatial-resource-registry.d.ts.map +1 -0
  57. package/dist/spatial/spatial-resource-registry.js +67 -0
  58. package/dist/spatial/spatial-resource-registry.js.map +1 -0
  59. package/dist/spatial/spatial-types.d.ts +190 -0
  60. package/dist/spatial/spatial-types.d.ts.map +1 -0
  61. package/dist/spatial/spatial-types.js +192 -0
  62. package/dist/spatial/spatial-types.js.map +1 -0
  63. package/dist/spatial/tiles-3d-spatial-transformer.d.ts +32 -0
  64. package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +1 -0
  65. package/dist/spatial/tiles-3d-spatial-transformer.js +175 -0
  66. package/dist/spatial/tiles-3d-spatial-transformer.js.map +1 -0
  67. package/dist/tileset-2d/adapter.d.ts +37 -0
  68. package/dist/tileset-2d/adapter.d.ts.map +1 -0
  69. package/dist/tileset-2d/adapter.js +5 -0
  70. package/dist/tileset-2d/adapter.js.map +1 -0
  71. package/dist/tileset-2d/index.d.ts +7 -0
  72. package/dist/tileset-2d/index.d.ts.map +1 -0
  73. package/dist/tileset-2d/index.js +6 -0
  74. package/dist/tileset-2d/index.js.map +1 -0
  75. package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
  76. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  77. package/dist/tileset-2d/tile-2d-header.js +181 -0
  78. package/dist/tileset-2d/tile-2d-header.js.map +1 -0
  79. package/dist/tileset-2d/tileset-2d.d.ts +200 -0
  80. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  81. package/dist/tileset-2d/tileset-2d.js +532 -0
  82. package/dist/tileset-2d/tileset-2d.js.map +1 -0
  83. package/dist/tileset-2d/types.d.ts +44 -0
  84. package/dist/tileset-2d/types.d.ts.map +1 -0
  85. package/dist/tileset-2d/types.js +5 -0
  86. package/dist/tileset-2d/types.js.map +1 -0
  87. package/dist/tileset-2d.d.ts +2 -0
  88. package/dist/tileset-2d.d.ts.map +1 -0
  89. package/dist/tileset-2d.js +5 -0
  90. package/dist/tileset-2d.js.map +1 -0
  91. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
  92. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
  93. package/dist/tileset-3d/common/indexed-archive-tileset-source.js +130 -0
  94. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
  95. package/dist/tileset-3d/common/tile-3d-contracts.d.ts +63 -0
  96. package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +1 -0
  97. package/dist/tileset-3d/common/tile-3d-contracts.js +51 -0
  98. package/dist/tileset-3d/common/tile-3d-contracts.js.map +1 -0
  99. package/dist/tileset-3d/common/tile-3d.d.ts +410 -0
  100. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
  101. package/dist/tileset-3d/common/tile-3d.js +1056 -0
  102. package/dist/tileset-3d/common/tile-3d.js.map +1 -0
  103. package/dist/tileset-3d/common/tileset-3d.d.ts +360 -0
  104. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
  105. package/dist/tileset-3d/common/tileset-3d.js +846 -0
  106. package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
  107. package/dist/tileset-3d/common/tileset-cache.d.ts +29 -0
  108. package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
  109. package/dist/{tileset → tileset-3d/common}/tileset-cache.js +12 -4
  110. package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
  111. package/dist/tileset-3d/common/tileset-content-traversal.d.ts +37 -0
  112. package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +1 -0
  113. package/dist/tileset-3d/common/tileset-content-traversal.js +80 -0
  114. package/dist/tileset-3d/common/tileset-content-traversal.js.map +1 -0
  115. package/dist/tileset-3d/common/tileset-observability.d.ts +60 -0
  116. package/dist/tileset-3d/common/tileset-observability.d.ts.map +1 -0
  117. package/dist/tileset-3d/common/tileset-observability.js +39 -0
  118. package/dist/tileset-3d/common/tileset-observability.js.map +1 -0
  119. package/dist/tileset-3d/common/tileset-source.d.ts +228 -0
  120. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
  121. package/dist/tileset-3d/common/tileset-source.js +17 -0
  122. package/dist/tileset-3d/common/tileset-source.js.map +1 -0
  123. package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +35 -3
  124. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
  125. package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +61 -13
  126. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
  127. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +182 -0
  128. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
  129. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +681 -0
  130. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
  131. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +221 -0
  132. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
  133. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +770 -0
  134. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
  135. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +110 -0
  136. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
  137. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +331 -0
  138. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  139. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
  140. package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +3 -0
  141. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  142. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +116 -0
  143. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
  144. package/dist/tileset-3d/format-i3s/i3s-source.js +450 -0
  145. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
  146. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
  147. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +5 -2
  148. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
  149. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
  150. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
  151. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +17 -23
  152. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
  153. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
  154. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
  155. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +3 -0
  156. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
  157. package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +7 -3
  158. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
  159. package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +20 -91
  160. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
  161. package/dist/tileset-3d/helpers/frame-state.d.ts +93 -0
  162. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
  163. package/dist/{tileset → tileset-3d}/helpers/frame-state.js +92 -10
  164. package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
  165. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
  166. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
  167. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +21 -9
  168. package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
  169. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +17 -0
  170. package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +1 -0
  171. package/dist/tileset-3d/helpers/s2-bounding-volume.js +20 -0
  172. package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +1 -0
  173. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +72 -0
  174. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
  175. package/dist/tileset-3d/helpers/tiles-3d-lod.js +257 -0
  176. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
  177. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
  178. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
  179. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
  180. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
  181. package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
  182. package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
  183. package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
  184. package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
  185. package/dist/tileset-3d/helpers/zoom.js.map +1 -0
  186. package/dist/types.d.ts +14 -0
  187. package/dist/types.d.ts.map +1 -1
  188. package/dist/types.js +3 -0
  189. package/dist/types.js.map +1 -1
  190. package/dist/utils/doubly-linked-list.d.ts.map +1 -1
  191. package/dist/utils/doubly-linked-list.js +1 -0
  192. package/dist/utils/doubly-linked-list.js.map +1 -1
  193. package/dist/utils/managed-array.d.ts.map +1 -1
  194. package/dist/utils/managed-array.js +1 -0
  195. package/dist/utils/managed-array.js.map +1 -1
  196. package/package.json +12 -9
  197. package/src/image-set.ts +328 -0
  198. package/src/index.ts +157 -9
  199. package/src/point-cloud/point-cloud-tile.ts +80 -0
  200. package/src/point-cloud/point-cloud-tileset.ts +767 -0
  201. package/src/point-cloud/types.ts +99 -0
  202. package/src/raster-set.ts +504 -0
  203. package/src/spatial/format-spatial-reference.ts +385 -0
  204. package/src/spatial/get-spatial-coordinate-frame.ts +169 -0
  205. package/src/spatial/i3s-elevation.ts +96 -0
  206. package/src/spatial/i3s-spatial-transformer.ts +957 -0
  207. package/src/spatial/normalize-crs-identifier.ts +26 -0
  208. package/src/spatial/spatial-coordinate-transformer.ts +376 -0
  209. package/src/spatial/spatial-resource-registry.ts +79 -0
  210. package/src/spatial/spatial-types.ts +422 -0
  211. package/src/spatial/tiles-3d-spatial-transformer.ts +206 -0
  212. package/src/tileset-2d/adapter.ts +46 -0
  213. package/src/tileset-2d/index.ts +33 -0
  214. package/src/tileset-2d/tile-2d-header.ts +224 -0
  215. package/src/tileset-2d/tileset-2d.ts +715 -0
  216. package/src/tileset-2d/types.ts +39 -0
  217. package/src/tileset-2d.ts +5 -0
  218. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
  219. package/src/tileset-3d/common/tile-3d-contracts.ts +115 -0
  220. package/src/tileset-3d/common/tile-3d.ts +1310 -0
  221. package/src/tileset-3d/common/tileset-3d.ts +1166 -0
  222. package/src/{tileset → tileset-3d/common}/tileset-cache.ts +16 -8
  223. package/src/tileset-3d/common/tileset-content-traversal.ts +114 -0
  224. package/src/tileset-3d/common/tileset-observability.ts +100 -0
  225. package/src/tileset-3d/common/tileset-source.ts +284 -0
  226. package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +74 -14
  227. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +1059 -0
  228. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +1025 -0
  229. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +379 -0
  230. package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +4 -0
  231. package/src/tileset-3d/format-i3s/i3s-source.ts +557 -0
  232. package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +6 -2
  233. package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +20 -24
  234. package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +5 -1
  235. package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +31 -114
  236. package/src/tileset-3d/helpers/frame-state.ts +322 -0
  237. package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +24 -10
  238. package/src/tileset-3d/helpers/s2-bounding-volume.ts +35 -0
  239. package/src/tileset-3d/helpers/tiles-3d-lod.ts +370 -0
  240. package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
  241. package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
  242. package/src/types.ts +18 -0
  243. package/src/utils/doubly-linked-list.ts +2 -0
  244. package/src/utils/managed-array.ts +2 -0
  245. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +0 -7
  246. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
  247. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +0 -53
  248. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  249. package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
  250. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  251. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
  252. package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
  253. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
  254. package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
  255. package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
  256. package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
  257. package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
  258. package/dist/tileset/helpers/bounding-volume.js.map +0 -1
  259. package/dist/tileset/helpers/frame-state.d.ts +0 -28
  260. package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
  261. package/dist/tileset/helpers/frame-state.js.map +0 -1
  262. package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
  263. package/dist/tileset/helpers/i3s-lod.js.map +0 -1
  264. package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
  265. package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
  266. package/dist/tileset/helpers/tiles-3d-lod.js +0 -113
  267. package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
  268. package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
  269. package/dist/tileset/helpers/transform-utils.js.map +0 -1
  270. package/dist/tileset/helpers/zoom.d.ts.map +0 -1
  271. package/dist/tileset/helpers/zoom.js.map +0 -1
  272. package/dist/tileset/tile-3d.d.ts +0 -230
  273. package/dist/tileset/tile-3d.d.ts.map +0 -1
  274. package/dist/tileset/tile-3d.js +0 -631
  275. package/dist/tileset/tile-3d.js.map +0 -1
  276. package/dist/tileset/tileset-3d.d.ts +0 -284
  277. package/dist/tileset/tileset-3d.d.ts.map +0 -1
  278. package/dist/tileset/tileset-3d.js +0 -814
  279. package/dist/tileset/tileset-3d.js.map +0 -1
  280. package/dist/tileset/tileset-cache.d.ts +0 -19
  281. package/dist/tileset/tileset-cache.d.ts.map +0 -1
  282. package/dist/tileset/tileset-cache.js.map +0 -1
  283. package/dist/tileset/tileset-traverser.d.ts.map +0 -1
  284. package/dist/tileset/tileset-traverser.js.map +0 -1
  285. package/src/tileset/format-3d-tiles/tileset-3d-traverser.ts +0 -63
  286. package/src/tileset/helpers/frame-state.ts +0 -183
  287. package/src/tileset/helpers/tiles-3d-lod.ts +0 -149
  288. package/src/tileset/tile-3d.ts +0 -788
  289. package/src/tileset/tileset-3d.ts +0 -1037
  290. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
  291. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
  292. /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
  293. /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
  294. /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
  295. /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
@@ -0,0 +1,60 @@
1
+ import type { CoreAPI, Loader, LoaderOptions, ReadableFile } from '@loaders.gl/loader-utils';
2
+ import type { TilesetSourceResolver } from "./tileset-source.js";
3
+ /** Options for {@link IndexedArchiveTilesetSource}. */
4
+ export type IndexedArchiveTilesetSourceOptions<ArchiveT> = {
5
+ /** Archive URL or Blob. */
6
+ data: string | Blob;
7
+ /** Filename to expose for Blob inputs that do not provide a name. */
8
+ fallbackFilename: string;
9
+ /** Archive file extension used as the URL path marker. */
10
+ archiveExtension: string;
11
+ /** Path to the root metadata resource inside the archive. */
12
+ rootPath: string;
13
+ /** Optional mode passed when loading the root metadata resource. */
14
+ rootMode?: string;
15
+ /** Parses an opened readable file into an indexed archive object. */
16
+ parseArchive: (file: ReadableFile) => Promise<ArchiveT>;
17
+ /** Loads one resource from the parsed archive. */
18
+ getFile: (archive: ArchiveT, pathInArchive: string, mode?: string) => Promise<ArrayBuffer>;
19
+ /** Returns the core API used for local file loading and nested resource parsing. */
20
+ getCoreApi: () => CoreAPI | undefined;
21
+ /** Error message to throw when the core API is required but unavailable. */
22
+ missingCoreApiMessage: string;
23
+ };
24
+ /**
25
+ * Tileset source resolver backed by an indexed archive such as 3TZ or SLPK.
26
+ *
27
+ * The source owns archive opening, archive caching, path resolution, and archive-backed `fetch`
28
+ * injection. Format-specific parsing and file lookup stay in the owning format module.
29
+ */
30
+ export declare class IndexedArchiveTilesetSource<ArchiveT> implements TilesetSourceResolver {
31
+ /** URL exposed to the tileset source that owns this archive source. */
32
+ readonly sourceUrl: string;
33
+ private readonly options;
34
+ private archivePromise?;
35
+ /**
36
+ * Creates an indexed archive tileset source.
37
+ * @param options Archive source options
38
+ */
39
+ constructor(options: IndexedArchiveTilesetSourceOptions<ArchiveT>);
40
+ /**
41
+ * Loads and parses the archive root metadata resource.
42
+ * @param url Root URL, ignored because the archive root path is configured explicitly
43
+ * @param loader Loader used to parse the root metadata
44
+ * @param loadOptions Loader options forwarded to parsing
45
+ */
46
+ loadRoot<DataT>(url: string, loader: Loader<DataT>, loadOptions: LoaderOptions): Promise<DataT>;
47
+ /**
48
+ * Loads and parses an archive resource relative to a requesting resource URL.
49
+ * @param url Resource URL
50
+ * @param loader Loader used to parse the resource
51
+ * @param loadOptions Loader options forwarded to parsing
52
+ */
53
+ loadResource<DataT>(url: string, loader: Loader<DataT>, loadOptions: LoaderOptions): Promise<DataT>;
54
+ private parseArchiveResource;
55
+ private createArchiveFetch;
56
+ private loadFile;
57
+ private openArchiveReadableFile;
58
+ private resolveArchivePath;
59
+ }
60
+ //# sourceMappingURL=indexed-archive-tileset-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed-archive-tileset-source.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/common/indexed-archive-tileset-source.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAC3F,OAAO,KAAK,EAAC,qBAAqB,EAAC,4BAAyB;AAE5D,uDAAuD;AACvD,MAAM,MAAM,kCAAkC,CAAC,QAAQ,IAAI;IACzD,2BAA2B;IAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,kDAAkD;IAClD,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3F,oFAAoF;IACpF,UAAU,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;IACtC,4EAA4E;IAC5E,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,2BAA2B,CAAC,QAAQ,CAAE,YAAW,qBAAqB;IACjF,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,cAAc,CAAC,CAAoB;IAE3C;;;OAGG;gBACS,OAAO,EAAE,kCAAkC,CAAC,QAAQ,CAAC;IAKjE;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EACrB,WAAW,EAAE,aAAa,GACzB,OAAO,CAAC,KAAK,CAAC;IAcjB;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EACrB,WAAW,EAAE,aAAa,GACzB,OAAO,CAAC,KAAK,CAAC;YAKH,oBAAoB;IA+BlC,OAAO,CAAC,kBAAkB;YAUZ,QAAQ;YAQR,uBAAuB;IAkBrC,OAAO,CAAC,kBAAkB;CAgC3B"}
@@ -0,0 +1,130 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { BlobFile, HttpFile, path } from '@loaders.gl/loader-utils';
5
+ /**
6
+ * Tileset source resolver backed by an indexed archive such as 3TZ or SLPK.
7
+ *
8
+ * The source owns archive opening, archive caching, path resolution, and archive-backed `fetch`
9
+ * injection. Format-specific parsing and file lookup stay in the owning format module.
10
+ */
11
+ export class IndexedArchiveTilesetSource {
12
+ /** URL exposed to the tileset source that owns this archive source. */
13
+ sourceUrl;
14
+ options;
15
+ archivePromise;
16
+ /**
17
+ * Creates an indexed archive tileset source.
18
+ * @param options Archive source options
19
+ */
20
+ constructor(options) {
21
+ this.options = options;
22
+ this.sourceUrl = getArchiveSourceUrl(options.data, options.fallbackFilename);
23
+ }
24
+ /**
25
+ * Loads and parses the archive root metadata resource.
26
+ * @param url Root URL, ignored because the archive root path is configured explicitly
27
+ * @param loader Loader used to parse the root metadata
28
+ * @param loadOptions Loader options forwarded to parsing
29
+ */
30
+ async loadRoot(url, loader, loadOptions) {
31
+ // Resolve root-relative URIs inside the archive rather than beside its download URL.
32
+ const resourceUrl = this.options.rootPath
33
+ ? `${stripQueryString(this.sourceUrl)}/${this.options.rootPath}`
34
+ : url;
35
+ return await this.parseArchiveResource(resourceUrl, this.options.rootPath, loader, loadOptions, this.options.rootMode);
36
+ }
37
+ /**
38
+ * Loads and parses an archive resource relative to a requesting resource URL.
39
+ * @param url Resource URL
40
+ * @param loader Loader used to parse the resource
41
+ * @param loadOptions Loader options forwarded to parsing
42
+ */
43
+ async loadResource(url, loader, loadOptions) {
44
+ const pathInArchive = this.resolveArchivePath(url, url);
45
+ return await this.parseArchiveResource(url, pathInArchive, loader, loadOptions);
46
+ }
47
+ async parseArchiveResource(resourceUrl, pathInArchive, loader, loadOptions, mode) {
48
+ const coreApi = this.options.getCoreApi();
49
+ if (!coreApi) {
50
+ throw new Error(this.options.missingCoreApiMessage);
51
+ }
52
+ const data = await this.loadFile(pathInArchive, mode);
53
+ const archiveFetch = this.createArchiveFetch(resourceUrl);
54
+ return (await coreApi.parse(data, loader, {
55
+ ...loadOptions,
56
+ fetch: archiveFetch
57
+ }, {
58
+ url: resourceUrl,
59
+ fetch: archiveFetch,
60
+ _parse: coreApi.parse,
61
+ loaders: [loader],
62
+ coreApi
63
+ }));
64
+ }
65
+ createArchiveFetch(contextUrl) {
66
+ return async (input) => {
67
+ const requestUrl = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
68
+ const pathInArchive = this.resolveArchivePath(requestUrl, contextUrl);
69
+ const data = await this.loadFile(pathInArchive);
70
+ return new Response(data, { status: 200 });
71
+ };
72
+ }
73
+ async loadFile(pathInArchive, mode) {
74
+ this.archivePromise ||= this.openArchiveReadableFile().then(file => this.options.parseArchive(file));
75
+ const archive = await this.archivePromise;
76
+ return await this.options.getFile(archive, pathInArchive, mode);
77
+ }
78
+ async openArchiveReadableFile() {
79
+ const { data } = this.options;
80
+ if (typeof data !== 'string') {
81
+ return new BlobFile(data);
82
+ }
83
+ if (/^https?:\/\//i.test(data)) {
84
+ return new HttpFile(data);
85
+ }
86
+ const coreApi = this.options.getCoreApi();
87
+ if (!coreApi) {
88
+ throw new Error(this.options.missingCoreApiMessage);
89
+ }
90
+ const response = await coreApi.fetchFile(data);
91
+ return new BlobFile(await response.arrayBuffer());
92
+ }
93
+ resolveArchivePath(request, baseUrl) {
94
+ const requestWithoutQuery = stripQueryString(request);
95
+ const archiveRoot = stripQueryString(this.sourceUrl);
96
+ const baseWithoutQuery = stripQueryString(baseUrl);
97
+ const basePath = baseWithoutQuery === archiveRoot ? archiveRoot : path.dirname(baseWithoutQuery);
98
+ const markerExpression = new RegExp(`\\.${this.options.archiveExtension}/(.*)$`, 'i');
99
+ const markerMatch = requestWithoutQuery.match(markerExpression);
100
+ if (markerMatch?.[1]) {
101
+ return markerMatch[1];
102
+ }
103
+ const isAbsoluteRequest = /^[a-z][a-z0-9+.-]*:/i.test(requestWithoutQuery) || requestWithoutQuery.startsWith('/');
104
+ const absoluteRequest = requestWithoutQuery.startsWith(archiveRoot)
105
+ ? requestWithoutQuery
106
+ : baseWithoutQuery === archiveRoot && !isAbsoluteRequest
107
+ ? `${archiveRoot}/${requestWithoutQuery}`
108
+ : /^[a-z][a-z0-9+.-]*:\/\//i.test(baseWithoutQuery)
109
+ ? new URL(requestWithoutQuery, baseWithoutQuery).href
110
+ : path.resolve(basePath, requestWithoutQuery);
111
+ if (absoluteRequest === archiveRoot) {
112
+ return '';
113
+ }
114
+ if (absoluteRequest.startsWith(`${archiveRoot}/`)) {
115
+ return absoluteRequest.slice(archiveRoot.length + 1);
116
+ }
117
+ return absoluteRequest.replace(/^\/+/, '');
118
+ }
119
+ }
120
+ function getArchiveSourceUrl(data, fallbackFilename) {
121
+ if (typeof data === 'string') {
122
+ return data;
123
+ }
124
+ const fileName = 'name' in data && typeof data.name === 'string' && data.name ? data.name : fallbackFilename;
125
+ return `memory://${fileName}`;
126
+ }
127
+ function stripQueryString(url) {
128
+ return url.split(/[?#]/, 1)[0];
129
+ }
130
+ //# sourceMappingURL=indexed-archive-tileset-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed-archive-tileset-source.js","sourceRoot":"","sources":["../../../src/tileset-3d/common/indexed-archive-tileset-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /** Structural subset implemented by math.gl bounding volumes used by tile renderers. */
2
+ export type Tile3DBoundingVolume = {
3
+ distanceSquaredTo?(point: unknown): number;
4
+ intersectPlane?(plane: unknown): number;
5
+ };
6
+ /** Renderer-neutral description of one ordered tile content entry. */
7
+ export type Tile3DContent = {
8
+ /** Zero-based source order, stable across loading and unloading. */
9
+ index: number;
10
+ /** Resolved content URI when declared by the tileset. */
11
+ uri?: string;
12
+ /** Tileset group index declared by this content entry. */
13
+ group?: number;
14
+ /** Normalized tile content kind, when detected. */
15
+ type?: string;
16
+ /** Decoded payload, or null while unloaded/failed. */
17
+ payload: unknown;
18
+ /** Raw content metadata reference. */
19
+ metadata: Record<string, unknown> | null;
20
+ /** Transformed content volume, with tile-volume fallback. */
21
+ boundingVolume: Tile3DBoundingVolume | null;
22
+ /** Normalized feature-id declarations for this content. */
23
+ featureIds: Tile3DFeatureIdSet[];
24
+ /** Whether the payload can currently be rendered. */
25
+ renderable: boolean;
26
+ };
27
+ /** Renderer-neutral feature-id declaration from a tile content payload. */
28
+ export type Tile3DFeatureIdSet = {
29
+ /** Source of the feature identifiers. */
30
+ source: 'attribute' | 'property-table' | 'constant' | 'texture' | 'implicit';
31
+ /** glTF attribute name for attribute-backed identifiers. */
32
+ attribute?: string;
33
+ /** Structural-metadata property-table index. */
34
+ propertyTable?: number;
35
+ /** Constant feature identifier. */
36
+ constant?: number;
37
+ /** Texture-backed identifier declaration, when present. */
38
+ texture?: Record<string, unknown>;
39
+ /** Implicit identifier declaration, when present. */
40
+ implicit?: Record<string, unknown>;
41
+ /** Decoded identifier values, when supplied by a content loader. */
42
+ values?: Uint32Array | Uint16Array | Uint8Array;
43
+ /** Unrecognized source fields preserved for forward compatibility. */
44
+ details?: Record<string, unknown>;
45
+ };
46
+ /** Raw metadata references inherited by a tile and its contents. */
47
+ export type Tile3DMetadataContext = {
48
+ /** Tileset-level metadata entity. */
49
+ tileset?: Record<string, unknown> | null;
50
+ /** Group metadata entity selected for the tile's primary content. */
51
+ group?: Record<string, unknown> | null;
52
+ /** All tileset groups, used to resolve a selected content entry's group. */
53
+ groups?: readonly (Record<string, unknown> | null)[];
54
+ /** Tile metadata entity. */
55
+ tile?: Record<string, unknown> | null;
56
+ /** Content metadata entity. */
57
+ content?: Record<string, unknown> | null;
58
+ /** Implicit-subtree metadata entity. */
59
+ subtree?: Record<string, unknown> | null;
60
+ };
61
+ /** Extracts mesh-feature declarations from a decoded glTF-like payload. */
62
+ export declare function getTile3DFeatureIdSets(payload: unknown): Tile3DFeatureIdSet[];
63
+ //# sourceMappingURL=tile-3d-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-3d-contracts.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/common/tile-3d-contracts.ts"],"names":[],"mappings":"AAIA,wFAAwF;AACxF,MAAM,MAAM,oBAAoB,GAAG;IACjC,iBAAiB,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3C,cAAc,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACzC,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,6DAA6D;IAC7D,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,2DAA2D;IAC3D,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,qDAAqD;IACrD,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yCAAyC;IACzC,MAAM,EAAE,WAAW,GAAG,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IAC7E,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,oEAAoE;IACpE,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;IAChD,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,qBAAqB,GAAG;IAClC,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvC,4EAA4E;IAC5E,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACrD,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,EAAE,CA6C7E"}
@@ -0,0 +1,51 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ /** Extracts mesh-feature declarations from a decoded glTF-like payload. */
5
+ export function getTile3DFeatureIdSets(payload) {
6
+ const featureIdSets = [];
7
+ const visited = new Set();
8
+ const visit = (value) => {
9
+ if (!value || typeof value !== 'object') {
10
+ return;
11
+ }
12
+ if (visited.has(value)) {
13
+ return;
14
+ }
15
+ visited.add(value);
16
+ const record = value;
17
+ const declarations = record.extensions?.EXT_mesh_features?.featureIds;
18
+ if (Array.isArray(declarations)) {
19
+ for (const declaration of declarations) {
20
+ if (!declaration || typeof declaration !== 'object') {
21
+ continue;
22
+ }
23
+ const source = declaration.texture
24
+ ? 'texture'
25
+ : declaration.implicit
26
+ ? 'implicit'
27
+ : declaration.attribute !== undefined
28
+ ? 'attribute'
29
+ : declaration.propertyTable !== undefined
30
+ ? 'property-table'
31
+ : 'constant';
32
+ featureIdSets.push({
33
+ source,
34
+ attribute: declaration.attribute,
35
+ propertyTable: declaration.propertyTable,
36
+ constant: declaration.constant,
37
+ texture: declaration.texture,
38
+ implicit: declaration.implicit,
39
+ values: declaration.values,
40
+ details: declaration
41
+ });
42
+ }
43
+ }
44
+ for (const child of Object.values(record)) {
45
+ visit(child);
46
+ }
47
+ };
48
+ visit(payload);
49
+ return featureIdSets;
50
+ }
51
+ //# sourceMappingURL=tile-3d-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-3d-contracts.js","sourceRoot":"","sources":["../../../src/tileset-3d/common/tile-3d-contracts.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAkEpC,2EAA2E;AAC3E,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,aAAa,GAAyB,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,KAAc,EAAQ,EAAE;QACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAe,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAe,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,KAA4B,CAAC;QAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC;QACtE,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;oBACpD,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO;oBAChC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,WAAW,CAAC,QAAQ;wBACpB,CAAC,CAAC,UAAU;wBACZ,CAAC,CAAC,WAAW,CAAC,SAAS,KAAK,SAAS;4BACnC,CAAC,CAAC,WAAW;4BACb,CAAC,CAAC,WAAW,CAAC,aAAa,KAAK,SAAS;gCACvC,CAAC,CAAC,gBAAgB;gCAClB,CAAC,CAAC,UAAU,CAAC;gBACrB,aAAa,CAAC,IAAI,CAAC;oBACjB,MAAM;oBACN,SAAS,EAAE,WAAW,CAAC,SAAS;oBAChC,aAAa,EAAE,WAAW,CAAC,aAAa;oBACxC,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,QAAQ,EAAE,WAAW,CAAC,QAAQ;oBAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,OAAO,EAAE,WAAW;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,CAAC;IACf,OAAO,aAAa,CAAC;AACvB,CAAC"}