@babylonjs/viewer 7.40.0 → 7.40.1-alpha

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 (615) hide show
  1. package/assets/photoStudio.env +0 -0
  2. package/dist/babylon-viewer.esm.js +2 -0
  3. package/dist/babylon-viewer.esm.js.map +1 -0
  4. package/dist/babylon-viewer.esm.min.js +2 -0
  5. package/dist/babylon-viewer.esm.min.js.map +1 -0
  6. package/dist/chunks/EXT_lights_ies-gxFyrTPG.esm.min.js +2 -0
  7. package/dist/chunks/EXT_lights_ies-gxFyrTPG.esm.min.js.map +1 -0
  8. package/dist/chunks/EXT_lights_ies-pE68tmBj.esm.js +84 -0
  9. package/dist/chunks/EXT_lights_ies-pE68tmBj.esm.js.map +1 -0
  10. package/dist/chunks/EXT_lights_image_based-B8Oal0Ur.esm.min.js +2 -0
  11. package/dist/chunks/EXT_lights_image_based-B8Oal0Ur.esm.min.js.map +1 -0
  12. package/dist/chunks/EXT_lights_image_based-CmP_ZGlF.esm.js +171 -0
  13. package/dist/chunks/EXT_lights_image_based-CmP_ZGlF.esm.js.map +1 -0
  14. package/dist/chunks/EXT_mesh_gpu_instancing-DSFpOud_.esm.min.js +2 -0
  15. package/dist/chunks/EXT_mesh_gpu_instancing-DSFpOud_.esm.min.js.map +1 -0
  16. package/dist/chunks/EXT_mesh_gpu_instancing-DksAVeyV.esm.js +86 -0
  17. package/dist/chunks/EXT_mesh_gpu_instancing-DksAVeyV.esm.js.map +1 -0
  18. package/dist/chunks/EXT_meshopt_compression-CNUItnkN.esm.min.js +2 -0
  19. package/dist/chunks/EXT_meshopt_compression-CNUItnkN.esm.min.js.map +1 -0
  20. package/dist/chunks/EXT_meshopt_compression-CeM-AELC.esm.js +134 -0
  21. package/dist/chunks/EXT_meshopt_compression-CeM-AELC.esm.js.map +1 -0
  22. package/dist/chunks/EXT_texture_avif-BWOJV_Yf.esm.js +44 -0
  23. package/dist/chunks/EXT_texture_avif-BWOJV_Yf.esm.js.map +1 -0
  24. package/dist/chunks/EXT_texture_avif-CSTfqZHT.esm.min.js +2 -0
  25. package/dist/chunks/EXT_texture_avif-CSTfqZHT.esm.min.js.map +1 -0
  26. package/dist/chunks/EXT_texture_webp-4Pxv5jC9.esm.min.js +2 -0
  27. package/dist/chunks/EXT_texture_webp-4Pxv5jC9.esm.min.js.map +1 -0
  28. package/dist/chunks/EXT_texture_webp-C9og1YZL.esm.js +43 -0
  29. package/dist/chunks/EXT_texture_webp-C9og1YZL.esm.js.map +1 -0
  30. package/dist/chunks/ExtrasAsMetadata-BmFy6ZgN.esm.js +64 -0
  31. package/dist/chunks/ExtrasAsMetadata-BmFy6ZgN.esm.js.map +1 -0
  32. package/dist/chunks/ExtrasAsMetadata-BwYwFtj7.esm.min.js +2 -0
  33. package/dist/chunks/ExtrasAsMetadata-BwYwFtj7.esm.min.js.map +1 -0
  34. package/dist/chunks/KHR_animation_pointer-BM2iOlKg.esm.js +352 -0
  35. package/dist/chunks/KHR_animation_pointer-BM2iOlKg.esm.js.map +1 -0
  36. package/dist/chunks/KHR_animation_pointer-C7FvhqL3.esm.min.js +2 -0
  37. package/dist/chunks/KHR_animation_pointer-C7FvhqL3.esm.min.js.map +1 -0
  38. package/dist/chunks/KHR_draco_mesh_compression-BocaEHGh.esm.js +617 -0
  39. package/dist/chunks/KHR_draco_mesh_compression-BocaEHGh.esm.js.map +1 -0
  40. package/dist/chunks/KHR_draco_mesh_compression-CjRCmIUz.esm.min.js +2 -0
  41. package/dist/chunks/KHR_draco_mesh_compression-CjRCmIUz.esm.min.js.map +1 -0
  42. package/dist/chunks/KHR_interactivity-C_ndoQHo.esm.min.js +2 -0
  43. package/dist/chunks/KHR_interactivity-C_ndoQHo.esm.min.js.map +1 -0
  44. package/dist/chunks/KHR_interactivity-ClHXW_8S.esm.js +4033 -0
  45. package/dist/chunks/KHR_interactivity-ClHXW_8S.esm.js.map +1 -0
  46. package/dist/chunks/KHR_lights_punctual-D0u7ZFj4.esm.js +581 -0
  47. package/dist/chunks/KHR_lights_punctual-D0u7ZFj4.esm.js.map +1 -0
  48. package/dist/chunks/KHR_lights_punctual-Z509RdIo.esm.min.js +2 -0
  49. package/dist/chunks/KHR_lights_punctual-Z509RdIo.esm.min.js.map +1 -0
  50. package/dist/chunks/KHR_materials_anisotropy-Dz4vBqG3.esm.min.js +2 -0
  51. package/dist/chunks/KHR_materials_anisotropy-Dz4vBqG3.esm.min.js.map +1 -0
  52. package/dist/chunks/KHR_materials_anisotropy-VuLS4v3P.esm.js +65 -0
  53. package/dist/chunks/KHR_materials_anisotropy-VuLS4v3P.esm.js.map +1 -0
  54. package/dist/chunks/KHR_materials_clearcoat-DM7vCrC3.esm.min.js +2 -0
  55. package/dist/chunks/KHR_materials_clearcoat-DM7vCrC3.esm.min.js.map +1 -0
  56. package/dist/chunks/KHR_materials_clearcoat-Dt0nQ5Ky.esm.js +96 -0
  57. package/dist/chunks/KHR_materials_clearcoat-Dt0nQ5Ky.esm.js.map +1 -0
  58. package/dist/chunks/KHR_materials_diffuse_transmission-1Pa4ScwD.esm.min.js +2 -0
  59. package/dist/chunks/KHR_materials_diffuse_transmission-1Pa4ScwD.esm.min.js.map +1 -0
  60. package/dist/chunks/KHR_materials_diffuse_transmission-DIUHVeOQ.esm.js +97 -0
  61. package/dist/chunks/KHR_materials_diffuse_transmission-DIUHVeOQ.esm.js.map +1 -0
  62. package/dist/chunks/KHR_materials_dispersion-CMpGZsUw.esm.min.js +2 -0
  63. package/dist/chunks/KHR_materials_dispersion-CMpGZsUw.esm.min.js.map +1 -0
  64. package/dist/chunks/KHR_materials_dispersion-CeSj8nUI.esm.js +62 -0
  65. package/dist/chunks/KHR_materials_dispersion-CeSj8nUI.esm.js.map +1 -0
  66. package/dist/chunks/KHR_materials_emissive_strength-CQQX31qK.esm.js +55 -0
  67. package/dist/chunks/KHR_materials_emissive_strength-CQQX31qK.esm.js.map +1 -0
  68. package/dist/chunks/KHR_materials_emissive_strength-DH4A4kIp.esm.min.js +2 -0
  69. package/dist/chunks/KHR_materials_emissive_strength-DH4A4kIp.esm.min.js.map +1 -0
  70. package/dist/chunks/KHR_materials_ior-BTU1gw-j.esm.js +64 -0
  71. package/dist/chunks/KHR_materials_ior-BTU1gw-j.esm.js.map +1 -0
  72. package/dist/chunks/KHR_materials_ior-DyzPdK6b.esm.min.js +2 -0
  73. package/dist/chunks/KHR_materials_ior-DyzPdK6b.esm.min.js.map +1 -0
  74. package/dist/chunks/KHR_materials_iridescence-8ZgbULX5.esm.min.js +2 -0
  75. package/dist/chunks/KHR_materials_iridescence-8ZgbULX5.esm.min.js.map +1 -0
  76. package/dist/chunks/KHR_materials_iridescence-D2HCEadq.esm.js +72 -0
  77. package/dist/chunks/KHR_materials_iridescence-D2HCEadq.esm.js.map +1 -0
  78. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-C4K79VpA.esm.min.js +2 -0
  79. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-C4K79VpA.esm.min.js.map +1 -0
  80. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DtJVJ-gl.esm.js +81 -0
  81. package/dist/chunks/KHR_materials_pbrSpecularGlossiness-DtJVJ-gl.esm.js.map +1 -0
  82. package/dist/chunks/KHR_materials_sheen-CT4KjW_v.esm.js +85 -0
  83. package/dist/chunks/KHR_materials_sheen-CT4KjW_v.esm.js.map +1 -0
  84. package/dist/chunks/KHR_materials_sheen-DQt5abo-.esm.min.js +2 -0
  85. package/dist/chunks/KHR_materials_sheen-DQt5abo-.esm.min.js.map +1 -0
  86. package/dist/chunks/KHR_materials_specular-CCvL1awH.esm.min.js +2 -0
  87. package/dist/chunks/KHR_materials_specular-CCvL1awH.esm.min.js.map +1 -0
  88. package/dist/chunks/KHR_materials_specular-CgLKBQCa.esm.js +75 -0
  89. package/dist/chunks/KHR_materials_specular-CgLKBQCa.esm.js.map +1 -0
  90. package/dist/chunks/KHR_materials_transmission-B64oDwox.esm.js +307 -0
  91. package/dist/chunks/KHR_materials_transmission-B64oDwox.esm.js.map +1 -0
  92. package/dist/chunks/KHR_materials_transmission-C6yPYKde.esm.min.js +2 -0
  93. package/dist/chunks/KHR_materials_transmission-C6yPYKde.esm.min.js.map +1 -0
  94. package/dist/chunks/KHR_materials_unlit-BGPDq328.esm.js +74 -0
  95. package/dist/chunks/KHR_materials_unlit-BGPDq328.esm.js.map +1 -0
  96. package/dist/chunks/KHR_materials_unlit-Sz3qCEGr.esm.min.js +2 -0
  97. package/dist/chunks/KHR_materials_unlit-Sz3qCEGr.esm.min.js.map +1 -0
  98. package/dist/chunks/KHR_materials_variants-Cqw7xft3.esm.min.js +2 -0
  99. package/dist/chunks/KHR_materials_variants-Cqw7xft3.esm.min.js.map +1 -0
  100. package/dist/chunks/KHR_materials_variants-D7rYTNoB.esm.js +262 -0
  101. package/dist/chunks/KHR_materials_variants-D7rYTNoB.esm.js.map +1 -0
  102. package/dist/chunks/KHR_materials_volume-BBsNt0LM.esm.js +87 -0
  103. package/dist/chunks/KHR_materials_volume-BBsNt0LM.esm.js.map +1 -0
  104. package/dist/chunks/KHR_materials_volume-DfWO7kG_.esm.min.js +2 -0
  105. package/dist/chunks/KHR_materials_volume-DfWO7kG_.esm.min.js.map +1 -0
  106. package/dist/chunks/KHR_mesh_quantization-BiDGkiGh.esm.min.js +2 -0
  107. package/dist/chunks/KHR_mesh_quantization-BiDGkiGh.esm.min.js.map +1 -0
  108. package/dist/chunks/KHR_mesh_quantization-fE1qitjF.esm.js +26 -0
  109. package/dist/chunks/KHR_mesh_quantization-fE1qitjF.esm.js.map +1 -0
  110. package/dist/chunks/KHR_node_hoverability-DaOK-Y48.esm.min.js +2 -0
  111. package/dist/chunks/KHR_node_hoverability-DaOK-Y48.esm.min.js.map +1 -0
  112. package/dist/chunks/KHR_node_hoverability-glogCdHq.esm.js +39 -0
  113. package/dist/chunks/KHR_node_hoverability-glogCdHq.esm.js.map +1 -0
  114. package/dist/chunks/KHR_node_visibility-BCVXn2la.esm.min.js +2 -0
  115. package/dist/chunks/KHR_node_visibility-BCVXn2la.esm.min.js.map +1 -0
  116. package/dist/chunks/KHR_node_visibility-CCfVtnan.esm.js +46 -0
  117. package/dist/chunks/KHR_node_visibility-CCfVtnan.esm.js.map +1 -0
  118. package/dist/chunks/KHR_texture_basisu-_cpZJuOo.esm.min.js +2 -0
  119. package/dist/chunks/KHR_texture_basisu-_cpZJuOo.esm.min.js.map +1 -0
  120. package/dist/chunks/KHR_texture_basisu-nhRrTq0b.esm.js +43 -0
  121. package/dist/chunks/KHR_texture_basisu-nhRrTq0b.esm.js.map +1 -0
  122. package/dist/chunks/KHR_texture_transform-AgI_J0Ru.esm.js +63 -0
  123. package/dist/chunks/KHR_texture_transform-AgI_J0Ru.esm.js.map +1 -0
  124. package/dist/chunks/KHR_texture_transform-CgcA7bhJ.esm.min.js +2 -0
  125. package/dist/chunks/KHR_texture_transform-CgcA7bhJ.esm.min.js.map +1 -0
  126. package/dist/chunks/KHR_xmp_json_ld-C37VZwlU.esm.min.js +2 -0
  127. package/dist/chunks/KHR_xmp_json_ld-C37VZwlU.esm.min.js.map +1 -0
  128. package/dist/chunks/KHR_xmp_json_ld-Cm4z6qFH.esm.js +51 -0
  129. package/dist/chunks/KHR_xmp_json_ld-Cm4z6qFH.esm.js.map +1 -0
  130. package/dist/chunks/MSFT_audio_emitter-4EFTMS8D.esm.js +2207 -0
  131. package/dist/chunks/MSFT_audio_emitter-4EFTMS8D.esm.js.map +1 -0
  132. package/dist/chunks/MSFT_audio_emitter-Czn1DAbD.esm.min.js +2 -0
  133. package/dist/chunks/MSFT_audio_emitter-Czn1DAbD.esm.min.js.map +1 -0
  134. package/dist/chunks/MSFT_lod-Bn4FnO5A.esm.js +337 -0
  135. package/dist/chunks/MSFT_lod-Bn4FnO5A.esm.js.map +1 -0
  136. package/dist/chunks/MSFT_lod-DDB-SKXR.esm.min.js +2 -0
  137. package/dist/chunks/MSFT_lod-DDB-SKXR.esm.min.js.map +1 -0
  138. package/dist/chunks/MSFT_minecraftMesh-APRwcxWb.esm.min.js +2 -0
  139. package/dist/chunks/MSFT_minecraftMesh-APRwcxWb.esm.min.js.map +1 -0
  140. package/dist/chunks/MSFT_minecraftMesh-DPvby_FZ.esm.js +46 -0
  141. package/dist/chunks/MSFT_minecraftMesh-DPvby_FZ.esm.js.map +1 -0
  142. package/dist/chunks/MSFT_sRGBFactors-D33sXFGi.esm.js +47 -0
  143. package/dist/chunks/MSFT_sRGBFactors-D33sXFGi.esm.js.map +1 -0
  144. package/dist/chunks/MSFT_sRGBFactors-OsUqZSue.esm.min.js +2 -0
  145. package/dist/chunks/MSFT_sRGBFactors-OsUqZSue.esm.min.js.map +1 -0
  146. package/dist/chunks/animationGroup-BR3zskS8.esm.js +2482 -0
  147. package/dist/chunks/animationGroup-BR3zskS8.esm.js.map +1 -0
  148. package/dist/chunks/animationGroup-ChIp5GuO.esm.min.js +2 -0
  149. package/dist/chunks/animationGroup-ChIp5GuO.esm.min.js.map +1 -0
  150. package/dist/chunks/assetContainer-DLSDgjTx.esm.min.js +2 -0
  151. package/dist/chunks/assetContainer-DLSDgjTx.esm.min.js.map +1 -0
  152. package/dist/chunks/assetContainer-cm8rvay3.esm.js +1720 -0
  153. package/dist/chunks/assetContainer-cm8rvay3.esm.js.map +1 -0
  154. package/dist/chunks/audioEngine-Cx5dB73O.esm.js +305 -0
  155. package/dist/chunks/audioEngine-Cx5dB73O.esm.js.map +1 -0
  156. package/dist/chunks/audioEngine-hKZ2m0jY.esm.min.js +2 -0
  157. package/dist/chunks/audioEngine-hKZ2m0jY.esm.min.js.map +1 -0
  158. package/dist/chunks/bakedVertexAnimation-BCUFE4CP.esm.min.js +2 -0
  159. package/dist/chunks/bakedVertexAnimation-BCUFE4CP.esm.min.js.map +1 -0
  160. package/dist/chunks/bakedVertexAnimation-ByPKjjzz.esm.js +114 -0
  161. package/dist/chunks/bakedVertexAnimation-ByPKjjzz.esm.js.map +1 -0
  162. package/dist/chunks/basisTextureLoader-BIqCbGFg.esm.min.js +2 -0
  163. package/dist/chunks/basisTextureLoader-BIqCbGFg.esm.min.js.map +1 -0
  164. package/dist/chunks/basisTextureLoader-CT8X4ynA.esm.js +600 -0
  165. package/dist/chunks/basisTextureLoader-CT8X4ynA.esm.js.map +1 -0
  166. package/dist/chunks/dds-BDOPTCsA.esm.min.js +2 -0
  167. package/dist/chunks/dds-BDOPTCsA.esm.min.js.map +1 -0
  168. package/dist/chunks/dds-BYrGO6eI.esm.js +540 -0
  169. package/dist/chunks/dds-BYrGO6eI.esm.js.map +1 -0
  170. package/dist/chunks/ddsTextureLoader-BbrffKmM.esm.min.js +2 -0
  171. package/dist/chunks/ddsTextureLoader-BbrffKmM.esm.min.js.map +1 -0
  172. package/dist/chunks/ddsTextureLoader-C36kkIBH.esm.js +88 -0
  173. package/dist/chunks/ddsTextureLoader-C36kkIBH.esm.js.map +1 -0
  174. package/dist/chunks/decalFragment-07cq9QvS.esm.min.js +2 -0
  175. package/dist/chunks/decalFragment-07cq9QvS.esm.min.js.map +1 -0
  176. package/dist/chunks/decalFragment-B16Nfnl3.esm.js +18 -0
  177. package/dist/chunks/decalFragment-B16Nfnl3.esm.js.map +1 -0
  178. package/dist/chunks/default.fragment-BkjbMxBE.esm.min.js +2 -0
  179. package/dist/chunks/default.fragment-BkjbMxBE.esm.min.js.map +1 -0
  180. package/dist/chunks/default.fragment-C-8jVS2k.esm.min.js +2 -0
  181. package/dist/chunks/default.fragment-C-8jVS2k.esm.min.js.map +1 -0
  182. package/dist/chunks/default.fragment-C3Pectqi.esm.js +515 -0
  183. package/dist/chunks/default.fragment-C3Pectqi.esm.js.map +1 -0
  184. package/dist/chunks/default.fragment-D3LhG5le.esm.js +446 -0
  185. package/dist/chunks/default.fragment-D3LhG5le.esm.js.map +1 -0
  186. package/dist/chunks/default.vertex-CPx_2Z0S.esm.js +181 -0
  187. package/dist/chunks/default.vertex-CPx_2Z0S.esm.js.map +1 -0
  188. package/dist/chunks/default.vertex-CVMUuXku.esm.js +202 -0
  189. package/dist/chunks/default.vertex-CVMUuXku.esm.js.map +1 -0
  190. package/dist/chunks/default.vertex-CbVQZVXB.esm.min.js +2 -0
  191. package/dist/chunks/default.vertex-CbVQZVXB.esm.min.js.map +1 -0
  192. package/dist/chunks/default.vertex-S3Wv9p0Q.esm.min.js +2 -0
  193. package/dist/chunks/default.vertex-S3Wv9p0Q.esm.min.js.map +1 -0
  194. package/dist/chunks/defaultUboDeclaration-BdxOUPT0.esm.min.js +2 -0
  195. package/dist/chunks/defaultUboDeclaration-BdxOUPT0.esm.min.js.map +1 -0
  196. package/dist/chunks/defaultUboDeclaration-CUaZKOKG.esm.min.js +2 -0
  197. package/dist/chunks/defaultUboDeclaration-CUaZKOKG.esm.min.js.map +1 -0
  198. package/dist/chunks/defaultUboDeclaration-DdcmVbYg.esm.js +15 -0
  199. package/dist/chunks/defaultUboDeclaration-DdcmVbYg.esm.js.map +1 -0
  200. package/dist/chunks/defaultUboDeclaration-rLhenj1H.esm.js +13 -0
  201. package/dist/chunks/defaultUboDeclaration-rLhenj1H.esm.js.map +1 -0
  202. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js +11 -0
  203. package/dist/chunks/drawWrapper.functions-CKg3_9x4.esm.js.map +1 -0
  204. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js +2 -0
  205. package/dist/chunks/drawWrapper.functions-ng7lvueZ.esm.min.js.map +1 -0
  206. package/dist/chunks/dumpTools-CPmY0U7D.esm.js +200 -0
  207. package/dist/chunks/dumpTools-CPmY0U7D.esm.js.map +1 -0
  208. package/dist/chunks/dumpTools-DVDwJ2sz.esm.min.js +2 -0
  209. package/dist/chunks/dumpTools-DVDwJ2sz.esm.min.js.map +1 -0
  210. package/dist/chunks/engine-BqSrdURz.esm.min.js +2 -0
  211. package/dist/chunks/engine-BqSrdURz.esm.min.js.map +1 -0
  212. package/dist/chunks/engine-D_GgT2Nf.esm.js +2216 -0
  213. package/dist/chunks/engine-D_GgT2Nf.esm.js.map +1 -0
  214. package/dist/chunks/engine.common-CN1Lug5p.esm.js +1162 -0
  215. package/dist/chunks/engine.common-CN1Lug5p.esm.js.map +1 -0
  216. package/dist/chunks/engine.common-DgiXKhLy.esm.min.js +2 -0
  217. package/dist/chunks/engine.common-DgiXKhLy.esm.min.js.map +1 -0
  218. package/dist/chunks/envTextureLoader-BORNR9vu.esm.min.js +2 -0
  219. package/dist/chunks/envTextureLoader-BORNR9vu.esm.min.js.map +1 -0
  220. package/dist/chunks/envTextureLoader-DHwsXTfw.esm.js +64 -0
  221. package/dist/chunks/envTextureLoader-DHwsXTfw.esm.js.map +1 -0
  222. package/dist/chunks/environmentTextureTools-B2vnsFq-.esm.js +382 -0
  223. package/dist/chunks/environmentTextureTools-B2vnsFq-.esm.js.map +1 -0
  224. package/dist/chunks/environmentTextureTools-BYQHZH-c.esm.min.js +2 -0
  225. package/dist/chunks/environmentTextureTools-BYQHZH-c.esm.min.js.map +1 -0
  226. package/dist/chunks/exrTextureLoader-B8FQohBr.esm.js +1683 -0
  227. package/dist/chunks/exrTextureLoader-B8FQohBr.esm.js.map +1 -0
  228. package/dist/chunks/exrTextureLoader-D8xP0GLQ.esm.min.js +2 -0
  229. package/dist/chunks/exrTextureLoader-D8xP0GLQ.esm.min.js.map +1 -0
  230. package/dist/chunks/fogFragment-5YT33bDn.esm.js +102 -0
  231. package/dist/chunks/fogFragment-5YT33bDn.esm.js.map +1 -0
  232. package/dist/chunks/fogFragment-BOBZ2KwN.esm.min.js +2 -0
  233. package/dist/chunks/fogFragment-BOBZ2KwN.esm.min.js.map +1 -0
  234. package/dist/chunks/fogFragment-CLENZGuB.esm.js +101 -0
  235. package/dist/chunks/fogFragment-CLENZGuB.esm.js.map +1 -0
  236. package/dist/chunks/fogFragment-D9dudohA.esm.min.js +2 -0
  237. package/dist/chunks/fogFragment-D9dudohA.esm.min.js.map +1 -0
  238. package/dist/chunks/fresnelFunction-BkO99b6C.esm.js +12 -0
  239. package/dist/chunks/fresnelFunction-BkO99b6C.esm.js.map +1 -0
  240. package/dist/chunks/fresnelFunction-CqiLsMCu.esm.min.js +2 -0
  241. package/dist/chunks/fresnelFunction-CqiLsMCu.esm.min.js.map +1 -0
  242. package/dist/chunks/glTFLoader-CkL-dxBD.esm.min.js +2 -0
  243. package/dist/chunks/glTFLoader-CkL-dxBD.esm.min.js.map +1 -0
  244. package/dist/chunks/glTFLoader-IEHRfiUn.esm.js +7586 -0
  245. package/dist/chunks/glTFLoader-IEHRfiUn.esm.js.map +1 -0
  246. package/dist/chunks/glTFLoaderAnimation-CV32Nmqb.esm.js +77 -0
  247. package/dist/chunks/glTFLoaderAnimation-CV32Nmqb.esm.js.map +1 -0
  248. package/dist/chunks/glTFLoaderAnimation-Cq2ziV9o.esm.min.js +2 -0
  249. package/dist/chunks/glTFLoaderAnimation-Cq2ziV9o.esm.min.js.map +1 -0
  250. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js +2 -0
  251. package/dist/chunks/gltfPathToObjectConverter-Dyt_Y9jE.esm.min.js.map +1 -0
  252. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js +67 -0
  253. package/dist/chunks/gltfPathToObjectConverter-GcUmfOyo.esm.js.map +1 -0
  254. package/dist/chunks/harmonicsFunctions-B5QCEZvF.esm.js +34 -0
  255. package/dist/chunks/harmonicsFunctions-B5QCEZvF.esm.js.map +1 -0
  256. package/dist/chunks/harmonicsFunctions-BxLCgoIQ.esm.min.js +2 -0
  257. package/dist/chunks/harmonicsFunctions-BxLCgoIQ.esm.min.js.map +1 -0
  258. package/dist/chunks/harmonicsFunctions-Daxnf8NE.esm.min.js +2 -0
  259. package/dist/chunks/harmonicsFunctions-Daxnf8NE.esm.min.js.map +1 -0
  260. package/dist/chunks/harmonicsFunctions-UzG0C-sm.esm.js +35 -0
  261. package/dist/chunks/harmonicsFunctions-UzG0C-sm.esm.js.map +1 -0
  262. package/dist/chunks/hdrTextureLoader-BpVjKGyb.esm.min.js +2 -0
  263. package/dist/chunks/hdrTextureLoader-BpVjKGyb.esm.min.js.map +1 -0
  264. package/dist/chunks/hdrTextureLoader-DgW8CxRF.esm.js +253 -0
  265. package/dist/chunks/hdrTextureLoader-DgW8CxRF.esm.js.map +1 -0
  266. package/dist/chunks/helperFunctions-BFgvMG5S.esm.min.js +2 -0
  267. package/dist/chunks/helperFunctions-BFgvMG5S.esm.min.js.map +1 -0
  268. package/dist/chunks/helperFunctions-BatAhE6u.esm.js +108 -0
  269. package/dist/chunks/helperFunctions-BatAhE6u.esm.js.map +1 -0
  270. package/dist/chunks/helperFunctions-qECwmiwu.esm.min.js +2 -0
  271. package/dist/chunks/helperFunctions-qECwmiwu.esm.min.js.map +1 -0
  272. package/dist/chunks/helperFunctions-vbA-oTJx.esm.js +80 -0
  273. package/dist/chunks/helperFunctions-vbA-oTJx.esm.js.map +1 -0
  274. package/dist/chunks/iesTextureLoader-Ccd5pvbh.esm.min.js +2 -0
  275. package/dist/chunks/iesTextureLoader-Ccd5pvbh.esm.min.js.map +1 -0
  276. package/dist/chunks/iesTextureLoader-nMYnOfhm.esm.js +189 -0
  277. package/dist/chunks/iesTextureLoader-nMYnOfhm.esm.js.map +1 -0
  278. package/dist/chunks/index-BHIM4QBr.esm.min.js +57 -0
  279. package/dist/chunks/index-BHIM4QBr.esm.min.js.map +1 -0
  280. package/dist/chunks/index-CtkZLm9J.esm.js +74717 -0
  281. package/dist/chunks/index-CtkZLm9J.esm.js.map +1 -0
  282. package/dist/chunks/ktxTextureLoader-CkkvHzY3.esm.js +814 -0
  283. package/dist/chunks/ktxTextureLoader-CkkvHzY3.esm.js.map +1 -0
  284. package/dist/chunks/ktxTextureLoader-CwGlHia2.esm.min.js +2 -0
  285. package/dist/chunks/ktxTextureLoader-CwGlHia2.esm.min.js.map +1 -0
  286. package/dist/chunks/logDepthDeclaration-BiUSPlzz.esm.js +35 -0
  287. package/dist/chunks/logDepthDeclaration-BiUSPlzz.esm.js.map +1 -0
  288. package/dist/chunks/logDepthDeclaration-Bq2fzMbS.esm.js +11 -0
  289. package/dist/chunks/logDepthDeclaration-Bq2fzMbS.esm.js.map +1 -0
  290. package/dist/chunks/logDepthDeclaration-C8DJP16D.esm.min.js +2 -0
  291. package/dist/chunks/logDepthDeclaration-C8DJP16D.esm.min.js.map +1 -0
  292. package/dist/chunks/logDepthDeclaration-DJpvEdPG.esm.min.js +2 -0
  293. package/dist/chunks/logDepthDeclaration-DJpvEdPG.esm.min.js.map +1 -0
  294. package/dist/chunks/logDepthVertex-C00_obGd.esm.min.js +2 -0
  295. package/dist/chunks/logDepthVertex-C00_obGd.esm.min.js.map +1 -0
  296. package/dist/chunks/logDepthVertex-CYIGBMYd.esm.js +77 -0
  297. package/dist/chunks/logDepthVertex-CYIGBMYd.esm.js.map +1 -0
  298. package/dist/chunks/logDepthVertex-CxT8FVOf.esm.js +81 -0
  299. package/dist/chunks/logDepthVertex-CxT8FVOf.esm.js.map +1 -0
  300. package/dist/chunks/logDepthVertex-SyM_Fu5K.esm.min.js +2 -0
  301. package/dist/chunks/logDepthVertex-SyM_Fu5K.esm.min.js.map +1 -0
  302. package/dist/chunks/mainUVVaryingDeclaration-BaIG4IFB.esm.js +11 -0
  303. package/dist/chunks/mainUVVaryingDeclaration-BaIG4IFB.esm.js.map +1 -0
  304. package/dist/chunks/mainUVVaryingDeclaration-CQzOmEIM.esm.min.js +2 -0
  305. package/dist/chunks/mainUVVaryingDeclaration-CQzOmEIM.esm.min.js.map +1 -0
  306. package/dist/chunks/mainUVVaryingDeclaration-D100Qvmm.esm.min.js +2 -0
  307. package/dist/chunks/mainUVVaryingDeclaration-D100Qvmm.esm.min.js.map +1 -0
  308. package/dist/chunks/mainUVVaryingDeclaration-OSD7irdC.esm.js +11 -0
  309. package/dist/chunks/mainUVVaryingDeclaration-OSD7irdC.esm.js.map +1 -0
  310. package/dist/chunks/meshUboDeclaration--wzKOTOT.esm.min.js +2 -0
  311. package/dist/chunks/meshUboDeclaration--wzKOTOT.esm.min.js.map +1 -0
  312. package/dist/chunks/meshUboDeclaration-DIi9ZPDc.esm.js +26 -0
  313. package/dist/chunks/meshUboDeclaration-DIi9ZPDc.esm.js.map +1 -0
  314. package/dist/chunks/objFileLoader-Cda8pwUd.esm.js +1338 -0
  315. package/dist/chunks/objFileLoader-Cda8pwUd.esm.js.map +1 -0
  316. package/dist/chunks/objFileLoader-kzI-pZ8o.esm.min.js +2 -0
  317. package/dist/chunks/objFileLoader-kzI-pZ8o.esm.min.js.map +1 -0
  318. package/dist/chunks/oitFragment-4cP4dKVP.esm.min.js +2 -0
  319. package/dist/chunks/oitFragment-4cP4dKVP.esm.min.js.map +1 -0
  320. package/dist/chunks/oitFragment-Bz1w36ia.esm.js +1078 -0
  321. package/dist/chunks/oitFragment-Bz1w36ia.esm.js.map +1 -0
  322. package/dist/chunks/oitFragment-DUkW-kmb.esm.min.js +2 -0
  323. package/dist/chunks/oitFragment-DUkW-kmb.esm.min.js.map +1 -0
  324. package/dist/chunks/oitFragment-DiuTTpNa.esm.js +1240 -0
  325. package/dist/chunks/oitFragment-DiuTTpNa.esm.js.map +1 -0
  326. package/dist/chunks/pass.fragment-B8l5NRgR.esm.min.js +2 -0
  327. package/dist/chunks/pass.fragment-B8l5NRgR.esm.min.js.map +1 -0
  328. package/dist/chunks/pass.fragment-BF4UEoT8.esm.min.js +2 -0
  329. package/dist/chunks/pass.fragment-BF4UEoT8.esm.min.js.map +1 -0
  330. package/dist/chunks/pass.fragment-CD3_26yo.esm.js +15 -0
  331. package/dist/chunks/pass.fragment-CD3_26yo.esm.js.map +1 -0
  332. package/dist/chunks/pass.fragment-DfeELUEn.esm.js +15 -0
  333. package/dist/chunks/pass.fragment-DfeELUEn.esm.js.map +1 -0
  334. package/dist/chunks/pbr.fragment-BDylAp64.esm.min.js +2 -0
  335. package/dist/chunks/pbr.fragment-BDylAp64.esm.min.js.map +1 -0
  336. package/dist/chunks/pbr.fragment-C1qko419.esm.min.js +2 -0
  337. package/dist/chunks/pbr.fragment-C1qko419.esm.min.js.map +1 -0
  338. package/dist/chunks/pbr.fragment-EBVxSAEQ.esm.js +3232 -0
  339. package/dist/chunks/pbr.fragment-EBVxSAEQ.esm.js.map +1 -0
  340. package/dist/chunks/pbr.fragment-lt62m8b7.esm.js +3273 -0
  341. package/dist/chunks/pbr.fragment-lt62m8b7.esm.js.map +1 -0
  342. package/dist/chunks/pbr.vertex-CGRL_eY2.esm.js +339 -0
  343. package/dist/chunks/pbr.vertex-CGRL_eY2.esm.js.map +1 -0
  344. package/dist/chunks/pbr.vertex-CHv4zeYj.esm.min.js +2 -0
  345. package/dist/chunks/pbr.vertex-CHv4zeYj.esm.min.js.map +1 -0
  346. package/dist/chunks/pbr.vertex-Dk4h9ywZ.esm.min.js +2 -0
  347. package/dist/chunks/pbr.vertex-Dk4h9ywZ.esm.min.js.map +1 -0
  348. package/dist/chunks/pbr.vertex-DopP5mYu.esm.js +214 -0
  349. package/dist/chunks/pbr.vertex-DopP5mYu.esm.js.map +1 -0
  350. package/dist/chunks/postprocess.vertex-Bt30-Flh.esm.min.js +2 -0
  351. package/dist/chunks/postprocess.vertex-Bt30-Flh.esm.min.js.map +1 -0
  352. package/dist/chunks/postprocess.vertex-pLUOpXIY.esm.js +20 -0
  353. package/dist/chunks/postprocess.vertex-pLUOpXIY.esm.js.map +1 -0
  354. package/dist/chunks/rawTexture-78KJgWfq.esm.js +191 -0
  355. package/dist/chunks/rawTexture-78KJgWfq.esm.js.map +1 -0
  356. package/dist/chunks/rawTexture-CCCnj14W.esm.min.js +2 -0
  357. package/dist/chunks/rawTexture-CCCnj14W.esm.min.js.map +1 -0
  358. package/dist/chunks/ray-CfhmGTmj.esm.js +946 -0
  359. package/dist/chunks/ray-CfhmGTmj.esm.js.map +1 -0
  360. package/dist/chunks/ray-Du89cGmz.esm.min.js +2 -0
  361. package/dist/chunks/ray-Du89cGmz.esm.min.js.map +1 -0
  362. package/dist/chunks/rgbdDecode.fragment-BHAQKD_5.esm.js +13 -0
  363. package/dist/chunks/rgbdDecode.fragment-BHAQKD_5.esm.js.map +1 -0
  364. package/dist/chunks/rgbdDecode.fragment-CV6q4aIi.esm.js +13 -0
  365. package/dist/chunks/rgbdDecode.fragment-CV6q4aIi.esm.js.map +1 -0
  366. package/dist/chunks/rgbdDecode.fragment-DEu4F_6T.esm.min.js +2 -0
  367. package/dist/chunks/rgbdDecode.fragment-DEu4F_6T.esm.min.js.map +1 -0
  368. package/dist/chunks/rgbdDecode.fragment-DiJfgZKv.esm.min.js +2 -0
  369. package/dist/chunks/rgbdDecode.fragment-DiJfgZKv.esm.min.js.map +1 -0
  370. package/dist/chunks/rgbdEncode.fragment-CR30N0Mr.esm.js +13 -0
  371. package/dist/chunks/rgbdEncode.fragment-CR30N0Mr.esm.js.map +1 -0
  372. package/dist/chunks/rgbdEncode.fragment-CUE3DGC8.esm.min.js +2 -0
  373. package/dist/chunks/rgbdEncode.fragment-CUE3DGC8.esm.min.js.map +1 -0
  374. package/dist/chunks/rgbdEncode.fragment-DdFs5QJM.esm.js +13 -0
  375. package/dist/chunks/rgbdEncode.fragment-DdFs5QJM.esm.js.map +1 -0
  376. package/dist/chunks/rgbdEncode.fragment-omm81hdD.esm.min.js +2 -0
  377. package/dist/chunks/rgbdEncode.fragment-omm81hdD.esm.min.js.map +1 -0
  378. package/dist/chunks/splatFileLoader-BnaOhITn.esm.js +3379 -0
  379. package/dist/chunks/splatFileLoader-BnaOhITn.esm.js.map +1 -0
  380. package/dist/chunks/splatFileLoader-CuMIDOsR.esm.min.js +2 -0
  381. package/dist/chunks/splatFileLoader-CuMIDOsR.esm.min.js.map +1 -0
  382. package/dist/chunks/spotLight-Ca0-j1Op.esm.js +701 -0
  383. package/dist/chunks/spotLight-Ca0-j1Op.esm.js.map +1 -0
  384. package/dist/chunks/spotLight-DXuSbTaJ.esm.min.js +2 -0
  385. package/dist/chunks/spotLight-DXuSbTaJ.esm.min.js.map +1 -0
  386. package/dist/chunks/standardMaterial-DKyaZtcm.esm.js +1805 -0
  387. package/dist/chunks/standardMaterial-DKyaZtcm.esm.js.map +1 -0
  388. package/dist/chunks/standardMaterial-h3ccobBt.esm.min.js +2 -0
  389. package/dist/chunks/standardMaterial-h3ccobBt.esm.min.js.map +1 -0
  390. package/dist/chunks/stlFileLoader-CDv97liE.esm.js +238 -0
  391. package/dist/chunks/stlFileLoader-CDv97liE.esm.js.map +1 -0
  392. package/dist/chunks/stlFileLoader-e2ImyWaM.esm.min.js +2 -0
  393. package/dist/chunks/stlFileLoader-e2ImyWaM.esm.min.js.map +1 -0
  394. package/dist/chunks/tgaTextureLoader-DJaEph-Q.esm.js +349 -0
  395. package/dist/chunks/tgaTextureLoader-DJaEph-Q.esm.js.map +1 -0
  396. package/dist/chunks/tgaTextureLoader-slv-QvZW.esm.min.js +2 -0
  397. package/dist/chunks/tgaTextureLoader-slv-QvZW.esm.min.js.map +1 -0
  398. package/dist/chunks/thinEngine-Ue9ZAvRK.esm.js +3848 -0
  399. package/dist/chunks/thinEngine-Ue9ZAvRK.esm.js.map +1 -0
  400. package/dist/chunks/thinEngine-pihAbdON.esm.min.js +2 -0
  401. package/dist/chunks/thinEngine-pihAbdON.esm.min.js.map +1 -0
  402. package/dist/chunks/thinInstanceMesh-BgfKoejL.esm.min.js +2 -0
  403. package/dist/chunks/thinInstanceMesh-BgfKoejL.esm.min.js.map +1 -0
  404. package/dist/chunks/thinInstanceMesh-V41szD4h.esm.js +314 -0
  405. package/dist/chunks/thinInstanceMesh-V41szD4h.esm.js.map +1 -0
  406. package/dist/chunks/vertexColorMixing-CZsK7mYP.esm.min.js +2 -0
  407. package/dist/chunks/vertexColorMixing-CZsK7mYP.esm.min.js.map +1 -0
  408. package/dist/chunks/vertexColorMixing-DKVusFas.esm.js +522 -0
  409. package/dist/chunks/vertexColorMixing-DKVusFas.esm.js.map +1 -0
  410. package/dist/chunks/vertexColorMixing-DeZKI8QK.esm.js +412 -0
  411. package/dist/chunks/vertexColorMixing-DeZKI8QK.esm.js.map +1 -0
  412. package/dist/chunks/vertexColorMixing-axGN1U7X.esm.min.js +2 -0
  413. package/dist/chunks/vertexColorMixing-axGN1U7X.esm.min.js.map +1 -0
  414. package/dist/chunks/webgpuEngine-COis70hT.esm.js +11533 -0
  415. package/dist/chunks/webgpuEngine-COis70hT.esm.js.map +1 -0
  416. package/dist/chunks/webgpuEngine-Cx_GlShD.esm.min.js +2 -0
  417. package/dist/chunks/webgpuEngine-Cx_GlShD.esm.min.js.map +1 -0
  418. package/dist/chunks/workerPool-BUOov2K1.esm.js +122 -0
  419. package/dist/chunks/workerPool-BUOov2K1.esm.js.map +1 -0
  420. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js +2 -0
  421. package/dist/chunks/workerPool-BWHiDmEZ.esm.min.js.map +1 -0
  422. package/lib/index.d.ts +559 -0
  423. package/lib/index.js +2083 -0
  424. package/lib/index.js.map +1 -0
  425. package/package.json +19 -28
  426. package/readme.md +28 -28
  427. package/configuration/configuration.d.ts +0 -107
  428. package/configuration/configuration.js +0 -16
  429. package/configuration/configuration.js.map +0 -1
  430. package/configuration/configurationCompatibility.d.ts +0 -8
  431. package/configuration/configurationCompatibility.js +0 -66
  432. package/configuration/configurationCompatibility.js.map +0 -1
  433. package/configuration/configurationContainer.d.ts +0 -10
  434. package/configuration/configurationContainer.js +0 -10
  435. package/configuration/configurationContainer.js.map +0 -1
  436. package/configuration/globals.d.ts +0 -6
  437. package/configuration/globals.js +0 -18
  438. package/configuration/globals.js.map +0 -1
  439. package/configuration/index.d.ts +0 -2
  440. package/configuration/index.js +0 -4
  441. package/configuration/index.js.map +0 -1
  442. package/configuration/interfaces/cameraConfiguration.d.ts +0 -31
  443. package/configuration/interfaces/cameraConfiguration.js +0 -2
  444. package/configuration/interfaces/cameraConfiguration.js.map +0 -1
  445. package/configuration/interfaces/colorGradingConfiguration.d.ts +0 -81
  446. package/configuration/interfaces/colorGradingConfiguration.js +0 -2
  447. package/configuration/interfaces/colorGradingConfiguration.js.map +0 -1
  448. package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +0 -20
  449. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +0 -2
  450. package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +0 -1
  451. package/configuration/interfaces/environmentMapConfiguration.d.ts +0 -22
  452. package/configuration/interfaces/environmentMapConfiguration.js +0 -2
  453. package/configuration/interfaces/environmentMapConfiguration.js.map +0 -1
  454. package/configuration/interfaces/groundConfiguration.d.ts +0 -24
  455. package/configuration/interfaces/groundConfiguration.js +0 -2
  456. package/configuration/interfaces/groundConfiguration.js.map +0 -1
  457. package/configuration/interfaces/imageProcessingConfiguration.d.ts +0 -45
  458. package/configuration/interfaces/imageProcessingConfiguration.js +0 -2
  459. package/configuration/interfaces/imageProcessingConfiguration.js.map +0 -1
  460. package/configuration/interfaces/index.d.ts +0 -15
  461. package/configuration/interfaces/index.js +0 -16
  462. package/configuration/interfaces/index.js.map +0 -1
  463. package/configuration/interfaces/lightConfiguration.d.ts +0 -60
  464. package/configuration/interfaces/lightConfiguration.js +0 -2
  465. package/configuration/interfaces/lightConfiguration.js.map +0 -1
  466. package/configuration/interfaces/modelAnimationConfiguration.d.ts +0 -26
  467. package/configuration/interfaces/modelAnimationConfiguration.js +0 -2
  468. package/configuration/interfaces/modelAnimationConfiguration.js.map +0 -1
  469. package/configuration/interfaces/modelConfiguration.d.ts +0 -65
  470. package/configuration/interfaces/modelConfiguration.js +0 -2
  471. package/configuration/interfaces/modelConfiguration.js.map +0 -1
  472. package/configuration/interfaces/observersConfiguration.d.ts +0 -5
  473. package/configuration/interfaces/observersConfiguration.js +0 -2
  474. package/configuration/interfaces/observersConfiguration.js.map +0 -1
  475. package/configuration/interfaces/sceneConfiguration.d.ts +0 -48
  476. package/configuration/interfaces/sceneConfiguration.js +0 -2
  477. package/configuration/interfaces/sceneConfiguration.js.map +0 -1
  478. package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +0 -23
  479. package/configuration/interfaces/sceneOptimizerConfiguration.js +0 -2
  480. package/configuration/interfaces/sceneOptimizerConfiguration.js.map +0 -1
  481. package/configuration/interfaces/skyboxConfiguration.d.ts +0 -21
  482. package/configuration/interfaces/skyboxConfiguration.js +0 -2
  483. package/configuration/interfaces/skyboxConfiguration.js.map +0 -1
  484. package/configuration/interfaces/templateConfiguration.d.ts +0 -67
  485. package/configuration/interfaces/templateConfiguration.js +0 -2
  486. package/configuration/interfaces/templateConfiguration.js.map +0 -1
  487. package/configuration/interfaces/vrConfiguration.d.ts +0 -16
  488. package/configuration/interfaces/vrConfiguration.js +0 -2
  489. package/configuration/interfaces/vrConfiguration.js.map +0 -1
  490. package/configuration/loader.d.ts +0 -4
  491. package/configuration/loader.js +0 -17
  492. package/configuration/loader.js.map +0 -1
  493. package/configuration/mappers.d.ts +0 -43
  494. package/configuration/mappers.js +0 -193
  495. package/configuration/mappers.js.map +0 -1
  496. package/configuration/renderOnlyLoader.d.ts +0 -33
  497. package/configuration/renderOnlyLoader.js +0 -162
  498. package/configuration/renderOnlyLoader.js.map +0 -1
  499. package/configuration/types/default.d.ts +0 -6
  500. package/configuration/types/default.js +0 -121
  501. package/configuration/types/default.js.map +0 -1
  502. package/configuration/types/environmentMap.d.ts +0 -5
  503. package/configuration/types/environmentMap.js +0 -14
  504. package/configuration/types/environmentMap.js.map +0 -1
  505. package/configuration/types/extended.d.ts +0 -6
  506. package/configuration/types/extended.js +0 -317
  507. package/configuration/types/extended.js.map +0 -1
  508. package/configuration/types/index.d.ts +0 -14
  509. package/configuration/types/index.js +0 -51
  510. package/configuration/types/index.js.map +0 -1
  511. package/configuration/types/minimal.d.ts +0 -6
  512. package/configuration/types/minimal.js +0 -43
  513. package/configuration/types/minimal.js.map +0 -1
  514. package/configuration/types/renderOnlyDefault.d.ts +0 -30
  515. package/configuration/types/renderOnlyDefault.js +0 -31
  516. package/configuration/types/renderOnlyDefault.js.map +0 -1
  517. package/configuration/types/shadowLight.d.ts +0 -9
  518. package/configuration/types/shadowLight.js +0 -64
  519. package/configuration/types/shadowLight.js.map +0 -1
  520. package/helper/index.d.ts +0 -29
  521. package/helper/index.js +0 -66
  522. package/helper/index.js.map +0 -1
  523. package/index.d.ts +0 -30
  524. package/index.js +0 -46
  525. package/index.js.map +0 -1
  526. package/initializer.d.ts +0 -11
  527. package/initializer.js +0 -35
  528. package/initializer.js.map +0 -1
  529. package/interfaces.d.ts +0 -5
  530. package/interfaces.js +0 -7
  531. package/interfaces.js.map +0 -1
  532. package/labs/environmentSerializer.d.ts +0 -126
  533. package/labs/environmentSerializer.js +0 -191
  534. package/labs/environmentSerializer.js.map +0 -1
  535. package/labs/texture.d.ts +0 -183
  536. package/labs/texture.js +0 -351
  537. package/labs/texture.js.map +0 -1
  538. package/labs/viewerLabs.d.ts +0 -51
  539. package/labs/viewerLabs.js +0 -134
  540. package/labs/viewerLabs.js.map +0 -1
  541. package/loader/modelLoader.d.ts +0 -56
  542. package/loader/modelLoader.js +0 -202
  543. package/loader/modelLoader.js.map +0 -1
  544. package/loader/plugins/applyMaterialConfig.d.ts +0 -12
  545. package/loader/plugins/applyMaterialConfig.js +0 -16
  546. package/loader/plugins/applyMaterialConfig.js.map +0 -1
  547. package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +0 -9
  548. package/loader/plugins/extendedMaterialLoaderPlugin.js +0 -16
  549. package/loader/plugins/extendedMaterialLoaderPlugin.js.map +0 -1
  550. package/loader/plugins/index.d.ts +0 -19
  551. package/loader/plugins/index.js +0 -44
  552. package/loader/plugins/index.js.map +0 -1
  553. package/loader/plugins/loaderPlugin.d.ts +0 -24
  554. package/loader/plugins/loaderPlugin.js +0 -2
  555. package/loader/plugins/loaderPlugin.js.map +0 -1
  556. package/loader/plugins/msftLodLoaderPlugin.d.ts +0 -12
  557. package/loader/plugins/msftLodLoaderPlugin.js +0 -21
  558. package/loader/plugins/msftLodLoaderPlugin.js.map +0 -1
  559. package/loader/plugins/telemetryLoaderPlugin.d.ts +0 -12
  560. package/loader/plugins/telemetryLoaderPlugin.js +0 -36
  561. package/loader/plugins/telemetryLoaderPlugin.js.map +0 -1
  562. package/managers/observablesManager.d.ts +0 -66
  563. package/managers/observablesManager.js +0 -35
  564. package/managers/observablesManager.js.map +0 -1
  565. package/managers/sceneManager.d.ts +0 -245
  566. package/managers/sceneManager.js +0 -1375
  567. package/managers/sceneManager.js.map +0 -1
  568. package/managers/telemetryManager.d.ts +0 -78
  569. package/managers/telemetryManager.js +0 -117
  570. package/managers/telemetryManager.js.map +0 -1
  571. package/model/modelAnimation.d.ts +0 -215
  572. package/model/modelAnimation.js +0 -237
  573. package/model/modelAnimation.js.map +0 -1
  574. package/model/viewerModel.d.ts +0 -233
  575. package/model/viewerModel.js +0 -673
  576. package/model/viewerModel.js.map +0 -1
  577. package/optimizer/custom/extended.d.ts +0 -13
  578. package/optimizer/custom/extended.js +0 -101
  579. package/optimizer/custom/extended.js.map +0 -1
  580. package/optimizer/custom/index.d.ts +0 -9
  581. package/optimizer/custom/index.js +0 -26
  582. package/optimizer/custom/index.js.map +0 -1
  583. package/renderOnlyIndex.d.ts +0 -11
  584. package/renderOnlyIndex.js +0 -18
  585. package/renderOnlyIndex.js.map +0 -1
  586. package/templating/eventManager.d.ts +0 -35
  587. package/templating/eventManager.js +0 -66
  588. package/templating/eventManager.js.map +0 -1
  589. package/templating/plugins/hdButtonPlugin.d.ts +0 -9
  590. package/templating/plugins/hdButtonPlugin.js +0 -22
  591. package/templating/plugins/hdButtonPlugin.js.map +0 -1
  592. package/templating/plugins/printButton.d.ts +0 -9
  593. package/templating/plugins/printButton.js +0 -41
  594. package/templating/plugins/printButton.js.map +0 -1
  595. package/templating/templateManager.d.ts +0 -197
  596. package/templating/templateManager.js +0 -561
  597. package/templating/templateManager.js.map +0 -1
  598. package/templating/viewerTemplatePlugin.d.ts +0 -21
  599. package/templating/viewerTemplatePlugin.js +0 -69
  600. package/templating/viewerTemplatePlugin.js.map +0 -1
  601. package/viewer/defaultViewer.d.ts +0 -130
  602. package/viewer/defaultViewer.js +0 -672
  603. package/viewer/defaultViewer.js.map +0 -1
  604. package/viewer/renderOnlyViewer.d.ts +0 -9
  605. package/viewer/renderOnlyViewer.js +0 -46
  606. package/viewer/renderOnlyViewer.js.map +0 -1
  607. package/viewer/viewer.d.ts +0 -258
  608. package/viewer/viewer.js +0 -783
  609. package/viewer/viewer.js.map +0 -1
  610. package/viewer/viewerManager.d.ts +0 -58
  611. package/viewer/viewerManager.js +0 -91
  612. package/viewer/viewerManager.js.map +0 -1
  613. package/viewer/viewerWithTemplate.d.ts +0 -9
  614. package/viewer/viewerWithTemplate.js +0 -20
  615. package/viewer/viewerWithTemplate.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KHR_interactivity-C_ndoQHo.esm.min.js","sources":["../../../../../dev/core/dist/FlowGraph/flowGraphConnection.js","../../../../../dev/core/dist/FlowGraph/flowGraphInteger.js","../../../../../dev/core/dist/FlowGraph/flowGraphRichTypes.js","../../../../../dev/core/dist/FlowGraph/flowGraphDataConnection.js","../../../../../dev/core/dist/FlowGraph/serialization.js","../../../../../dev/core/dist/FlowGraph/flowGraphBlock.js","../../../../../dev/core/dist/FlowGraph/flowGraphSignalConnection.js","../../../../../dev/core/dist/FlowGraph/flowGraphExecutionBlock.js","../../../../../dev/core/dist/FlowGraph/flowGraphAsyncExecutionBlock.js","../../../../../dev/core/dist/FlowGraph/flowGraphEventBlock.js","../../../../../dev/core/dist/FlowGraph/flowGraphContext.js","../../../../../dev/core/dist/FlowGraph/utils.js","../../../../../dev/core/dist/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.js","../../../../../dev/core/dist/FlowGraph/flowGraph.js","../../../../../dev/core/dist/Misc/timer.js","../../../../../dev/core/dist/FlowGraph/flowGraphCoordinator.js","../../../../../dev/core/dist/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js","../../../../../dev/core/dist/FlowGraph/flowGraphExecutionBlockWithOutSignal.js","../../../../../dev/core/dist/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js","../../../../../dev/core/dist/FlowGraph/flowGraphPathConverterComponent.js","../../../../../dev/core/dist/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js","../../../../../dev/core/dist/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js","../../../../../dev/core/dist/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js","../../../../../dev/loaders/dist/glTF/2.0/Extensions/interactivityUtils.js","../../../../../dev/loaders/dist/glTF/2.0/Extensions/interactivityFunctions.js","../../../../../dev/loaders/dist/glTF/2.0/Extensions/interactivityPathToObjectConverter.js","../../../../../dev/loaders/dist/glTF/2.0/Extensions/KHR_interactivity.js"],"sourcesContent":["import { Tools } from \"../Misc/tools\";\nimport { RandomGUID } from \"../Misc/guid\";\n/**\n * @experimental\n * The type of a connection point - inpput or output.\n */\nexport var FlowGraphConnectionType;\n(function (FlowGraphConnectionType) {\n FlowGraphConnectionType[FlowGraphConnectionType[\"Input\"] = 0] = \"Input\";\n FlowGraphConnectionType[FlowGraphConnectionType[\"Output\"] = 1] = \"Output\";\n})(FlowGraphConnectionType || (FlowGraphConnectionType = {}));\n/**\n * @experimental\n * The base connection class.\n */\nexport class FlowGraphConnection {\n constructor(name, _connectionType, \n /* @internal */ _ownerBlock) {\n this._ownerBlock = _ownerBlock;\n /** @internal */\n this._connectedPoint = [];\n /**\n * A uniquely identifying string for the connection.\n */\n this.uniqueId = RandomGUID();\n /**\n * Used for parsing connections.\n * @internal\n */\n // disable warning as this is used for parsing\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.connectedPointIds = [];\n this.name = name;\n this._connectionType = _connectionType;\n }\n /**\n * The type of the connection\n */\n get connectionType() {\n return this._connectionType;\n }\n /**\n * @internal\n * Override this to indicate if a point can connect to more than one point.\n */\n _isSingularConnection() {\n return true;\n }\n /**\n * Returns if a point is connected to any other point.\n * @returns boolean indicating if the point is connected.\n */\n isConnected() {\n return this._connectedPoint.length > 0;\n }\n /**\n * Connects two connections together.\n * @param point the connection to connect to.\n */\n connectTo(point) {\n if (this._connectionType === point._connectionType) {\n throw new Error(`Cannot connect two points of type ${this.connectionType}`);\n }\n if ((this._isSingularConnection() && this._connectedPoint.length > 0) || (point._isSingularConnection() && point._connectedPoint.length > 0)) {\n throw new Error(\"Max number of connections for point reached\");\n }\n this._connectedPoint.push(point);\n point._connectedPoint.push(this);\n }\n /**\n * Saves the connection to a JSON object.\n * @param serializationObject the object to serialize to.\n */\n serialize(serializationObject = {}) {\n serializationObject.uniqueId = this.uniqueId;\n serializationObject.name = this.name;\n serializationObject._connectionType = this._connectionType;\n serializationObject.connectedPointIds = [];\n serializationObject.className = this.getClassName();\n for (const point of this._connectedPoint) {\n serializationObject.connectedPointIds.push(point.uniqueId);\n }\n }\n /**\n * @returns class name of the connection.\n */\n getClassName() {\n return \"FGConnection\";\n }\n /**\n * Deserialize from a object into this\n * @param serializationObject the object to deserialize from.\n */\n deserialize(serializationObject) {\n this.uniqueId = serializationObject.uniqueId;\n this.name = serializationObject.name;\n this._connectionType = serializationObject._connectionType;\n this.connectedPointIds = serializationObject.connectedPointIds;\n }\n /**\n * Parses a connection from an object\n * @param serializationObject the object to parse from.\n * @param ownerBlock the block that owns the connection.\n * @returns the parsed connection.\n */\n static Parse(serializationObject = {}, ownerBlock) {\n const type = Tools.Instantiate(serializationObject.className);\n const connection = new type(serializationObject.name, serializationObject._connectionType, ownerBlock);\n connection.deserialize(serializationObject);\n return connection;\n }\n}\n//# sourceMappingURL=flowGraphConnection.js.map","import { RegisterClass } from \"../Misc/typeStore\";\n/**\n * @experimental\n * Class that represents an integer value.\n */\nexport class FlowGraphInteger {\n constructor(value) {\n this.value = this._toInt(value);\n }\n /**\n * Converts a float to an integer.\n * @param n the float to convert\n * @returns the result of n | 0 - converting it to a int\n */\n _toInt(n) {\n return n | 0;\n }\n /**\n * Adds two integers together.\n * @param other the other integer to add\n * @returns a FlowGraphInteger with the result of the addition\n */\n add(other) {\n return new FlowGraphInteger(this.value + other.value);\n }\n /**\n * Subtracts two integers.\n * @param other the other integer to subtract\n * @returns a FlowGraphInteger with the result of the subtraction\n */\n subtract(other) {\n return new FlowGraphInteger(this.value - other.value);\n }\n /**\n * Multiplies two integers.\n * @param other the other integer to multiply\n * @returns a FlowGraphInteger with the result of the multiplication\n */\n multiply(other) {\n return new FlowGraphInteger(Math.imul(this.value, other.value));\n }\n /**\n * Divides two integers.\n * @param other the other integer to divide\n * @returns a FlowGraphInteger with the result of the division\n */\n divide(other) {\n return new FlowGraphInteger(this.value / other.value);\n }\n /**\n * The class name of this type.\n * @returns\n */\n getClassName() {\n return FlowGraphInteger.ClassName;\n }\n /**\n * Compares two integers for equality.\n * @param other the other integer to compare\n * @returns\n */\n equals(other) {\n return this.value === other.value;\n }\n /**\n * Parses a FlowGraphInteger from a serialization object.\n * @param serializationObject\n * @returns\n */\n static Parse(serializationObject) {\n return new FlowGraphInteger(serializationObject.value);\n }\n}\nFlowGraphInteger.ClassName = \"FlowGraphInteger\";\nRegisterClass(\"FlowGraphInteger\", FlowGraphInteger);\n//# sourceMappingURL=flowGraphInteger.js.map","import { Vector2, Vector3, Vector4, Matrix, Quaternion } from \"../Maths/math.vector\";\nimport { Color3, Color4 } from \"../Maths/math.color\";\nimport { FlowGraphInteger } from \"./flowGraphInteger\";\n/**\n * A rich type represents extra information about a type,\n * such as its name and a default value constructor.\n * @experimental\n */\nexport class RichType {\n constructor(\n /**\n * The name given to the type.\n */\n typeName, \n /**\n * The default value of the type.\n */\n defaultValue) {\n this.typeName = typeName;\n this.defaultValue = defaultValue;\n }\n /**\n * Serializes this rich type into a serialization object.\n * @param serializationObject the object to serialize to\n */\n serialize(serializationObject) {\n serializationObject.typeName = this.typeName;\n serializationObject.defaultValue = this.defaultValue;\n }\n /**\n * Parses a rich type from a serialization object.\n * @param serializationObject a serialization object\n * @returns the parsed rich type\n */\n static Parse(serializationObject) {\n return new RichType(serializationObject.typeName, serializationObject.defaultValue);\n }\n}\nexport const RichTypeAny = new RichType(\"any\", undefined);\nexport const RichTypeString = new RichType(\"string\", \"\");\nexport const RichTypeNumber = new RichType(\"number\", 0);\nexport const RichTypeBoolean = new RichType(\"boolean\", false);\nexport const RichTypeVector2 = new RichType(\"Vector2\", Vector2.Zero());\nexport const RichTypeVector3 = new RichType(\"Vector3\", Vector3.Zero());\nexport const RichTypeVector4 = new RichType(\"Vector4\", Vector4.Zero());\nexport const RichTypeMatrix = new RichType(\"Matrix\", Matrix.Identity());\nexport const RichTypeColor3 = new RichType(\"Color3\", Color3.Black());\nexport const RichTypeColor4 = new RichType(\"Color4\", new Color4(0, 0, 0, 0));\nexport const RichTypeQuaternion = new RichType(\"Quaternion\", Quaternion.Identity());\nexport const RichTypeFlowGraphInteger = new RichType(\"FlowGraphInteger\", new FlowGraphInteger(0));\n/**\n * Given a value, try to deduce its rich type.\n * @param value the value to deduce the rich type from\n * @returns the value's rich type, or RichTypeAny if the type could not be deduced.\n */\nexport function getRichTypeFromValue(value) {\n switch (typeof value) {\n case \"string\":\n return RichTypeString;\n case \"number\":\n return RichTypeNumber;\n case \"boolean\":\n return RichTypeBoolean;\n case \"object\":\n if (value instanceof Vector2) {\n return RichTypeVector2;\n }\n else if (value instanceof Vector3) {\n return RichTypeVector3;\n }\n else if (value instanceof Vector4) {\n return RichTypeVector4;\n }\n else if (value instanceof Color3) {\n return RichTypeColor3;\n }\n else if (value instanceof Color4) {\n return RichTypeColor4;\n }\n else if (value instanceof Quaternion) {\n return RichTypeQuaternion;\n }\n else if (value instanceof FlowGraphInteger) {\n return RichTypeFlowGraphInteger;\n }\n else {\n return RichTypeAny;\n }\n default:\n return RichTypeAny;\n }\n}\n//# sourceMappingURL=flowGraphRichTypes.js.map","import { RegisterClass } from \"../Misc/typeStore\";\nimport { FlowGraphConnection } from \"./flowGraphConnection\";\nimport { RichType } from \"./flowGraphRichTypes\";\n/**\n * @experimental\n * Represents a connection point for data.\n * An unconnected input point can have a default value.\n * An output point will only have a value if it is connected to an input point. Furthermore,\n * if the point belongs to a \"function\" node, the node will run its function to update the value.\n */\nexport class FlowGraphDataConnection extends FlowGraphConnection {\n /**\n * Create a new data connection point.\n * @param name\n * @param connectionType\n * @param ownerBlock\n * @param richType\n */\n constructor(name, connectionType, ownerBlock, \n /**\n * the type of the data in this block\n */\n richType) {\n super(name, connectionType, ownerBlock);\n this.richType = richType;\n }\n /**\n * An output data block can connect to multiple input data blocks,\n * but an input data block can only connect to one output data block.\n * @returns true if the connection is singular\n */\n _isSingularConnection() {\n return this.connectionType === 0 /* FlowGraphConnectionType.Input */;\n }\n /**\n * Set the value of the connection in a specific context.\n * @param value the value to set\n * @param context the context to which the value is set\n */\n setValue(value, context) {\n context._setConnectionValue(this, value);\n }\n /**\n * Connect this point to another point.\n * @param point the point to connect to.\n */\n connectTo(point) {\n super.connectTo(point);\n }\n _getValueOrDefault(context) {\n if (context._hasConnectionValue(this)) {\n return context._getConnectionValue(this);\n }\n else {\n return this.richType.defaultValue;\n }\n }\n /**\n * Gets the value of the connection in a specific context.\n * @param context the context from which the value is retrieved\n * @returns the value of the connection\n */\n getValue(context) {\n if (this.connectionType === 1 /* FlowGraphConnectionType.Output */) {\n context._notifyExecuteNode(this._ownerBlock);\n this._ownerBlock._updateOutputs(context);\n return this._getValueOrDefault(context);\n }\n if (!this.isConnected()) {\n return this._getValueOrDefault(context);\n }\n else {\n return this._connectedPoint[0].getValue(context);\n }\n }\n /**\n * @returns class name of the object.\n */\n getClassName() {\n return \"FGDataConnection\";\n }\n /**\n * Serializes this object.\n * @param serializationObject the object to serialize to\n */\n serialize(serializationObject = {}) {\n super.serialize(serializationObject);\n serializationObject.richType = {};\n this.richType.serialize(serializationObject.richType);\n }\n /**\n * Parses a data connection from a serialized object.\n * @param serializationObject the object to parse from\n * @param ownerBlock the block that owns the connection\n * @returns the parsed connection\n */\n static Parse(serializationObject, ownerBlock) {\n const obj = FlowGraphConnection.Parse(serializationObject, ownerBlock);\n obj.richType = RichType.Parse(serializationObject.richType);\n return obj;\n }\n}\nRegisterClass(\"FGDataConnection\", FlowGraphDataConnection);\n//# sourceMappingURL=flowGraphDataConnection.js.map","import { Color3, Color4 } from \"../Maths/math.color\";\nimport { Matrix, Quaternion, Vector2, Vector3, Vector4 } from \"../Maths/math.vector\";\nimport { FlowGraphInteger } from \"./flowGraphInteger\";\nfunction isMeshClassName(className) {\n return (className === \"Mesh\" ||\n className === \"AbstractMesh\" ||\n className === \"GroundMesh\" ||\n className === \"InstanceMesh\" ||\n className === \"LinesMesh\" ||\n className === \"GoldbergMesh\" ||\n className === \"GreasedLineMesh\" ||\n className === \"TrailMesh\");\n}\nfunction isVectorClassName(className) {\n return className === \"Vector2\" || className === \"Vector3\" || className === \"Vector4\" || className === \"Quaternion\" || className === \"Color3\" || className === \"Color4\";\n}\nfunction parseVector(className, value) {\n if (className === \"Vector2\") {\n return Vector2.FromArray(value);\n }\n else if (className === \"Vector3\") {\n return Vector3.FromArray(value);\n }\n else if (className === \"Vector4\") {\n return Vector4.FromArray(value);\n }\n else if (className === \"Quaternion\") {\n return Quaternion.FromArray(value);\n }\n else if (className === \"Color3\") {\n return new Color3(value[0], value[1], value[2]);\n }\n else if (className === \"Color4\") {\n return new Color4(value[0], value[1], value[2], value[3]);\n }\n else {\n throw new Error(`Unknown vector class name ${className}`);\n }\n}\n/**\n * The default function that serializes values in a context object to a serialization object\n * @param key the key where the value should be stored in the serialization object\n * @param value the value to store\n * @param serializationObject the object where the value will be stored\n */\nexport function defaultValueSerializationFunction(key, value, serializationObject) {\n const className = value?.getClassName?.() ?? \"\";\n if (isMeshClassName(className)) {\n serializationObject[key] = {\n name: value.name,\n className,\n };\n }\n else if (isVectorClassName(className)) {\n serializationObject[key] = {\n value: value.asArray(),\n className,\n };\n }\n else {\n serializationObject[key] = value;\n }\n}\n/**\n * The default function that parses values stored in a serialization object\n * @param key the key to the value that will be parsed\n * @param serializationObject the object that will be parsed\n * @param scene\n * @returns\n */\nexport function defaultValueParseFunction(key, serializationObject, scene) {\n const intermediateValue = serializationObject[key];\n let finalValue;\n const className = intermediateValue?.className;\n if (isMeshClassName(className)) {\n finalValue = scene.getMeshByName(intermediateValue.name);\n }\n else if (isVectorClassName(className)) {\n finalValue = parseVector(className, intermediateValue.value);\n }\n else if (className === \"Matrix\") {\n finalValue = Matrix.FromArray(intermediateValue.value);\n }\n else if (className === FlowGraphInteger.ClassName) {\n finalValue = FlowGraphInteger.Parse(intermediateValue);\n }\n else if (intermediateValue && intermediateValue.value !== undefined) {\n finalValue = intermediateValue.value;\n }\n else {\n finalValue = intermediateValue;\n }\n return finalValue;\n}\n/**\n * Given a name of a flow graph block class, return if this\n * class needs to be created with a path converter. Used in\n * parsing.\n * @param className the name of the flow graph block class\n * @returns a boolean indicating if the class needs a path converter\n */\nexport function needsPathConverter(className) {\n // I am not using the ClassName property here because it was causing a circular dependency\n // that jest didn't like!\n return className === \"FGSetPropertyBlock\" || className === \"FGGetPropertyBlock\" || className === \"FGPlayAnimationBlock\" || className === \"FGMeshPickEventBlock\";\n}\n//# sourceMappingURL=serialization.js.map","import { RandomGUID } from \"../Misc/guid\";\nimport { FlowGraphDataConnection } from \"./flowGraphDataConnection\";\nimport { Tools } from \"../Misc/tools\";\nimport { defaultValueParseFunction, defaultValueSerializationFunction, needsPathConverter } from \"./serialization\";\n/**\n * @experimental\n * A block in a flow graph. The most basic form\n * of a block has inputs and outputs that contain\n * data.\n */\nexport class FlowGraphBlock {\n /** Constructor is protected so only subclasses can be instantiated\n * @param config optional configuration for this block\n */\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n this.config = config;\n /**\n * A randomly generated GUID for each block.\n */\n this.uniqueId = RandomGUID();\n this.name = this.config?.name ?? this.getClassName();\n this.dataInputs = [];\n this.dataOutputs = [];\n }\n /**\n * @internal\n */\n _updateOutputs(_context) {\n // empty by default, overriden in data blocks\n }\n /**\n * Registers a data input on the block.\n * @param name the name of the input\n * @param richType the type of the input\n * @returns the created connection\n */\n registerDataInput(name, richType) {\n const input = new FlowGraphDataConnection(name, 0 /* FlowGraphConnectionType.Input */, this, richType);\n this.dataInputs.push(input);\n return input;\n }\n /**\n * Registers a data output on the block.\n * @param name the name of the input\n * @param richType the type of the input\n * @returns the created connection\n */\n registerDataOutput(name, richType) {\n const output = new FlowGraphDataConnection(name, 1 /* FlowGraphConnectionType.Output */, this, richType);\n this.dataOutputs.push(output);\n return output;\n }\n /**\n * Given the name of a data input, returns the connection if it exists\n * @param name the name of the input\n * @returns the connection if it exists, undefined otherwise\n */\n getDataInput(name) {\n return this.dataInputs.find((i) => i.name === name);\n }\n /**\n * Given the name of a data output, returns the connection if it exists\n * @param name the name of the output\n * @returns the connection if it exists, undefined otherwise\n */\n getDataOutput(name) {\n return this.dataOutputs.find((i) => i.name === name);\n }\n /**\n * Serializes this block\n * @param serializationObject the object to serialize to\n * @param _valueSerializeFunction a function that serializes a specific value\n */\n serialize(serializationObject = {}, _valueSerializeFunction = defaultValueSerializationFunction) {\n serializationObject.uniqueId = this.uniqueId;\n serializationObject.config = {};\n if (this.config) {\n serializationObject.config[\"name\"] = this.config.name;\n }\n serializationObject.dataInputs = [];\n serializationObject.dataOutputs = [];\n serializationObject.className = this.getClassName();\n for (const input of this.dataInputs) {\n const serializedInput = {};\n input.serialize(serializedInput);\n serializationObject.dataInputs.push(serializedInput);\n }\n for (const output of this.dataOutputs) {\n const serializedOutput = {};\n output.serialize(serializedOutput);\n serializationObject.dataOutputs.push(serializedOutput);\n }\n }\n /**\n * Gets the class name of this block\n * @returns the class name\n */\n getClassName() {\n return \"FGBlock\";\n }\n /**\n * Parses a block from a serialization object\n * @param serializationObject the object to parse from\n * @param parseOptions options for parsing the block\n * @returns the parsed block\n */\n static Parse(serializationObject, parseOptions) {\n const classType = Tools.Instantiate(serializationObject.className);\n const parsedConfig = {};\n const valueParseFunction = parseOptions.valueParseFunction ?? defaultValueParseFunction;\n if (serializationObject.config) {\n for (const key in serializationObject.config) {\n parsedConfig[key] = valueParseFunction(key, serializationObject.config, parseOptions.scene);\n }\n }\n if (needsPathConverter(serializationObject.className)) {\n parsedConfig.pathConverter = parseOptions.pathConverter;\n }\n const obj = new classType(parsedConfig);\n obj.uniqueId = serializationObject.uniqueId;\n for (let i = 0; i < serializationObject.dataInputs.length; i++) {\n const dataInput = obj.getDataInput(serializationObject.dataInputs[i].name);\n if (dataInput) {\n dataInput.deserialize(serializationObject.dataInputs[i]);\n }\n else {\n throw new Error(\"Could not find data input with name \" + serializationObject.dataInputs[i].name + \" in block \" + serializationObject.className);\n }\n }\n for (let i = 0; i < serializationObject.dataOutputs.length; i++) {\n const dataOutput = obj.getDataOutput(serializationObject.dataOutputs[i].name);\n if (dataOutput) {\n dataOutput.deserialize(serializationObject.dataOutputs[i]);\n }\n else {\n throw new Error(\"Could not find data output with name \" + serializationObject.dataOutputs[i].name + \" in block \" + serializationObject.className);\n }\n }\n obj.metadata = serializationObject.metadata;\n obj.deserialize && obj.deserialize(serializationObject);\n return obj;\n }\n}\n//# sourceMappingURL=flowGraphBlock.js.map","import { FlowGraphConnection } from \"./flowGraphConnection\";\nimport { RegisterClass } from \"../Misc/typeStore\";\n/**\n * @experimental\n * Represents a connection point for a signal.\n * When an output point is activated, it will activate the connected input point.\n * When an input point is activated, it will execute the block it belongs to.\n */\nexport class FlowGraphSignalConnection extends FlowGraphConnection {\n /**\n * @internal\n * A signal input can be connected to more than one signal output,\n * but a signal output can only connect to one signal input\n * @returns true if the connection is singular\n */\n _isSingularConnection() {\n return this.connectionType === 1 /* FlowGraphConnectionType.Output */;\n }\n /**\n * @internal\n */\n _activateSignal(context) {\n if (this.connectionType === 0 /* FlowGraphConnectionType.Input */) {\n context._notifyExecuteNode(this._ownerBlock);\n this._ownerBlock._execute(context, this);\n context._increaseExecutionId();\n }\n else {\n this._connectedPoint[0]?._activateSignal(context);\n }\n }\n}\nRegisterClass(\"FlowGraphSignalConnection\", FlowGraphSignalConnection);\n//# sourceMappingURL=flowGraphSignalConnection.js.map","import { FlowGraphBlock } from \"./flowGraphBlock\";\nimport { FlowGraphSignalConnection } from \"./flowGraphSignalConnection\";\n/**\n * @experimental\n * A block that executes some action. Always has an input signal (which is not used by event blocks).\n * Can have one or more output signals.\n */\nexport class FlowGraphExecutionBlock extends FlowGraphBlock {\n constructor(config) {\n super(config);\n this.signalInputs = [];\n this.signalOutputs = [];\n this.in = this._registerSignalInput(\"in\");\n }\n _registerSignalInput(name) {\n const input = new FlowGraphSignalConnection(name, 0 /* FlowGraphConnectionType.Input */, this);\n this.signalInputs.push(input);\n return input;\n }\n _registerSignalOutput(name) {\n const output = new FlowGraphSignalConnection(name, 1 /* FlowGraphConnectionType.Output */, this);\n this.signalOutputs.push(output);\n return output;\n }\n /**\n * Given a name of a signal input, return that input if it exists\n * @param name the name of the input\n * @returns if the input exists, the input. Otherwise, undefined.\n */\n getSignalInput(name) {\n return this.signalInputs.find((input) => input.name === name);\n }\n /**\n * Given a name of a signal output, return that input if it exists\n * @param name the name of the input\n * @returns if the input exists, the input. Otherwise, undefined.\n */\n getSignalOutput(name) {\n return this.signalOutputs.find((output) => output.name === name);\n }\n /**\n * Serializes this block\n * @param serializationObject the object to serialize in\n */\n serialize(serializationObject = {}) {\n super.serialize(serializationObject);\n serializationObject.signalInputs = [];\n serializationObject.signalOutputs = [];\n for (const input of this.signalInputs) {\n const serializedInput = {};\n input.serialize(serializedInput);\n serializationObject.signalInputs.push(serializedInput);\n }\n for (const output of this.signalOutputs) {\n const serializedOutput = {};\n output.serialize(serializedOutput);\n serializationObject.signalOutputs.push(serializedOutput);\n }\n }\n /**\n * Deserializes from an object\n * @param serializationObject the object to deserialize from\n */\n deserialize(serializationObject) {\n for (let i = 0; i < serializationObject.signalInputs.length; i++) {\n const signalInput = this.getSignalInput(serializationObject.signalInputs[i].name);\n if (signalInput) {\n signalInput.deserialize(serializationObject.signalInputs[i]);\n }\n else {\n throw new Error(\"Could not find signal input with name \" + serializationObject.signalInputs[i].name + \" in block \" + serializationObject.className);\n }\n }\n for (let i = 0; i < serializationObject.signalOutputs.length; i++) {\n const signalOutput = this.getSignalOutput(serializationObject.signalOutputs[i].name);\n if (signalOutput) {\n signalOutput.deserialize(serializationObject.signalOutputs[i]);\n }\n else {\n throw new Error(\"Could not find signal output with name \" + serializationObject.signalOutputs[i].name + \" in block \" + serializationObject.className);\n }\n }\n }\n /**\n * @returns the class name\n */\n getClassName() {\n return \"FGExecutionBlock\";\n }\n}\n//# sourceMappingURL=flowGraphExecutionBlock.js.map","import { FlowGraphExecutionBlock } from \"./flowGraphExecutionBlock\";\n/**\n * An async execution block can start tasks that will be executed asynchronously.\n * It should also be responsible for clearing it in _cancelPendingTasks.\n * @experimental\n */\nexport class FlowGraphAsyncExecutionBlock extends FlowGraphExecutionBlock {\n constructor(config) {\n super(config);\n this.out = this._registerSignalOutput(\"out\");\n this.done = this._registerSignalOutput(\"done\");\n }\n /**\n * @internal\n * @param context\n */\n _startPendingTasks(context) {\n this._preparePendingTasks(context);\n context._addPendingBlock(this);\n }\n}\n//# sourceMappingURL=flowGraphAsyncExecutionBlock.js.map","import { FlowGraphAsyncExecutionBlock } from \"./flowGraphAsyncExecutionBlock\";\n/**\n * @experimental\n * A type of block that listens to an event observable and activates\n * its output signal when the event is triggered.\n */\nexport class FlowGraphEventBlock extends FlowGraphAsyncExecutionBlock {\n /**\n * @internal\n */\n _execute(context) {\n context._notifyExecuteNode(this);\n this.out._activateSignal(context);\n }\n}\n//# sourceMappingURL=flowGraphEventBlock.js.map","import { __decorate } from \"tslib\";\nimport { serialize } from \"../Misc/decorators\";\nimport { RandomGUID } from \"../Misc/guid\";\nimport { defaultValueParseFunction, defaultValueSerializationFunction } from \"./serialization\";\nimport { Observable } from \"../Misc/observable\";\n/**\n * @experimental\n * The context represents the current state and execution of the flow graph.\n * It contains both user-defined variables, which are derived from\n * a more general variable definition, and execution variables that\n * are set by the blocks.\n */\nexport class FlowGraphContext {\n constructor(params) {\n /**\n * A randomly generated GUID for each context.\n */\n this.uniqueId = RandomGUID();\n /**\n * These are the variables defined by a user.\n */\n this._userVariables = {};\n /**\n * These are the variables set by the blocks.\n */\n this._executionVariables = {};\n /**\n * These are the values for the data connection points\n */\n this._connectionValues = {};\n /**\n * These are blocks that have currently pending tasks/listeners that need to be cleaned up.\n */\n this._pendingBlocks = [];\n /**\n * A monotonically increasing ID for each execution.\n * Incremented for every block executed.\n */\n this._executionId = 0;\n /**\n * Observable that is triggered when a node is executed.\n */\n this.onNodeExecutedObservable = new Observable();\n this._configuration = params;\n }\n /**\n * Check if a user-defined variable is defined.\n * @param name the name of the variable\n * @returns true if the variable is defined\n */\n hasVariable(name) {\n return name in this._userVariables;\n }\n /**\n * Set a user-defined variable.\n * @param name the name of the variable\n * @param value the value of the variable\n */\n setVariable(name, value) {\n this._userVariables[name] = value;\n }\n /**\n * Get a user-defined variable.\n * @param name the name of the variable\n * @returns the value of the variable\n */\n getVariable(name) {\n return this._userVariables[name];\n }\n /**\n * Gets all user variables map\n */\n get userVariables() {\n return this._userVariables;\n }\n _getUniqueIdPrefixedName(obj, name) {\n return `${obj.uniqueId}_${name}`;\n }\n /**\n * Set an internal execution variable\n * @internal\n * @param name\n * @param value\n */\n _setExecutionVariable(block, name, value) {\n this._executionVariables[this._getUniqueIdPrefixedName(block, name)] = value;\n }\n /**\n * Get an internal execution variable\n * @internal\n * @param name\n * @returns\n */\n _getExecutionVariable(block, name, defaultValue) {\n if (this._hasExecutionVariable(block, name)) {\n return this._executionVariables[this._getUniqueIdPrefixedName(block, name)];\n }\n else {\n return defaultValue;\n }\n }\n /**\n * Delete an internal execution variable\n * @internal\n * @param block\n * @param name\n */\n _deleteExecutionVariable(block, name) {\n delete this._executionVariables[this._getUniqueIdPrefixedName(block, name)];\n }\n /**\n * Check if an internal execution variable is defined\n * @internal\n * @param block\n * @param name\n * @returns\n */\n _hasExecutionVariable(block, name) {\n return this._getUniqueIdPrefixedName(block, name) in this._executionVariables;\n }\n /**\n * Check if a connection value is defined\n * @internal\n * @param connectionPoint\n * @returns\n */\n _hasConnectionValue(connectionPoint) {\n return connectionPoint.uniqueId in this._connectionValues;\n }\n /**\n * Set a connection value\n * @internal\n * @param connectionPoint\n * @param value\n */\n _setConnectionValue(connectionPoint, value) {\n this._connectionValues[connectionPoint.uniqueId] = value;\n }\n /**\n * Get a connection value\n * @internal\n * @param connectionPoint\n * @returns\n */\n _getConnectionValue(connectionPoint) {\n return this._connectionValues[connectionPoint.uniqueId];\n }\n /**\n * Get the configuration\n * @internal\n * @param name\n * @param value\n */\n get configuration() {\n return this._configuration;\n }\n /**\n * Add a block to the list of blocks that have pending tasks.\n * @internal\n * @param block\n */\n _addPendingBlock(block) {\n this._pendingBlocks.push(block);\n }\n /**\n * Remove a block from the list of blocks that have pending tasks.\n * @internal\n * @param block\n */\n _removePendingBlock(block) {\n const index = this._pendingBlocks.indexOf(block);\n if (index !== -1) {\n this._pendingBlocks.splice(index, 1);\n }\n }\n /**\n * Clear all pending blocks.\n * @internal\n */\n _clearPendingBlocks() {\n for (const block of this._pendingBlocks) {\n block._cancelPendingTasks(this);\n }\n this._pendingBlocks.length = 0;\n }\n /**\n * @internal\n * Function that notifies the node executed observable\n * @param node\n */\n _notifyExecuteNode(node) {\n this.onNodeExecutedObservable.notifyObservers(node);\n }\n /**\n * @internal\n */\n _increaseExecutionId() {\n this._executionId++;\n }\n /**\n * A monotonically increasing ID for each execution.\n * Incremented for every block executed.\n */\n get executionId() {\n return this._executionId;\n }\n /**\n * Serializes a context\n * @param serializationObject the object to write the values in\n * @param valueSerializationFunction a function to serialize complex values\n */\n serialize(serializationObject = {}, valueSerializationFunction = defaultValueSerializationFunction) {\n serializationObject.uniqueId = this.uniqueId;\n serializationObject._userVariables = {};\n for (const key in this._userVariables) {\n valueSerializationFunction(key, this._userVariables[key], serializationObject._userVariables);\n }\n serializationObject._connectionValues = {};\n for (const key in this._connectionValues) {\n valueSerializationFunction(key, this._connectionValues[key], serializationObject._connectionValues);\n }\n }\n /**\n * @returns the class name of the object.\n */\n getClassName() {\n return \"FGContext\";\n }\n /**\n * Parses a context\n * @param serializationObject the object containing the context serialization values\n * @param options the options for parsing the context\n * @returns\n */\n static Parse(serializationObject, options) {\n const result = options.graph.createContext();\n const valueParseFunction = options.valueParseFunction ?? defaultValueParseFunction;\n result.uniqueId = serializationObject.uniqueId;\n for (const key in serializationObject._userVariables) {\n const value = valueParseFunction(key, serializationObject._userVariables, result._configuration.scene);\n result._userVariables[key] = value;\n }\n for (const key in serializationObject._connectionValues) {\n const value = valueParseFunction(key, serializationObject._connectionValues, result._configuration.scene);\n result._connectionValues[key] = value;\n }\n return result;\n }\n}\n__decorate([\n serialize()\n], FlowGraphContext.prototype, \"uniqueId\", void 0);\n//# sourceMappingURL=flowGraphContext.js.map","/**\n * @internal\n * Returns if mesh1 is a descendant of mesh2\n * @param mesh1\n * @param mesh2\n * @returns\n */\nexport function _isADescendantOf(mesh1, mesh2) {\n return !!(mesh1.parent && (mesh1.parent === mesh2 || _isADescendantOf(mesh1.parent, mesh2)));\n}\n//# sourceMappingURL=utils.js.map","import { AbstractMesh } from \"../../../Meshes/abstractMesh\";\nimport { FlowGraphEventBlock } from \"../../flowGraphEventBlock\";\nimport { PointerEventTypes } from \"../../../Events/pointerEvents\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\nimport { _isADescendantOf } from \"../../utils\";\n/**\n * @experimental\n * A block that activates when a mesh is picked.\n */\nexport class FlowGraphMeshPickEventBlock extends FlowGraphEventBlock {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n }\n _getReferencedMesh() {\n const iAccessor = this.config.pathConverter.convert(this.config.path);\n const mesh = iAccessor.info.getObject(iAccessor.object);\n if (!mesh || !(mesh instanceof AbstractMesh)) {\n throw new Error(\"Mesh pick event block requires a valid mesh\");\n }\n return mesh;\n }\n /**\n * @internal\n */\n _preparePendingTasks(context) {\n let pickObserver = context._getExecutionVariable(this, \"meshPickObserver\");\n if (!pickObserver) {\n const mesh = this._getReferencedMesh();\n context._setExecutionVariable(this, \"mesh\", mesh);\n pickObserver = mesh.getScene().onPointerObservable.add((pointerInfo) => {\n if (pointerInfo.type === PointerEventTypes.POINTERPICK &&\n pointerInfo.pickInfo?.pickedMesh &&\n (pointerInfo.pickInfo?.pickedMesh === mesh || _isADescendantOf(pointerInfo.pickInfo?.pickedMesh, mesh))) {\n this._execute(context);\n }\n });\n const disposeObserver = mesh.onDisposeObservable.add(() => this._onDispose);\n context._setExecutionVariable(this, \"meshPickObserver\", pickObserver);\n context._setExecutionVariable(this, \"meshDisposeObserver\", disposeObserver);\n }\n }\n _onDispose(context) {\n this._cancelPendingTasks(context);\n context._removePendingBlock(this);\n }\n /**\n * @internal\n */\n _cancelPendingTasks(context) {\n const mesh = context._getExecutionVariable(this, \"mesh\");\n const pickObserver = context._getExecutionVariable(this, \"meshPickObserver\");\n const disposeObserver = context._getExecutionVariable(this, \"meshDisposeObserver\");\n mesh.getScene().onPointerObservable.remove(pickObserver);\n mesh.onDisposeObservable.remove(disposeObserver);\n context._deleteExecutionVariable(this, \"mesh\");\n context._deleteExecutionVariable(this, \"meshPickObserver\");\n context._deleteExecutionVariable(this, \"meshDisposeObserver\");\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphMeshPickEventBlock.ClassName;\n }\n /**\n * Serializes the block to a JSON object.\n * @param serializationObject the object to serialize to.\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.config.path = this.config.path;\n }\n}\n/**\n * Class name of the block.\n */\nFlowGraphMeshPickEventBlock.ClassName = \"FGMeshPickEventBlock\";\nRegisterClass(FlowGraphMeshPickEventBlock.ClassName, FlowGraphMeshPickEventBlock);\n//# sourceMappingURL=flowGraphMeshPickEventBlock.js.map","import { FlowGraphEventBlock } from \"./flowGraphEventBlock\";\nimport { FlowGraphContext } from \"./flowGraphContext\";\nimport { FlowGraphBlock } from \"./flowGraphBlock\";\nimport { FlowGraphExecutionBlock } from \"./flowGraphExecutionBlock\";\nimport { FlowGraphMeshPickEventBlock } from \"./Blocks/Event/flowGraphMeshPickEventBlock\";\nimport { _isADescendantOf } from \"./utils\";\nimport { defaultValueParseFunction } from \"./serialization\";\nexport var FlowGraphState;\n(function (FlowGraphState) {\n /**\n * The graph is stopped\n */\n FlowGraphState[FlowGraphState[\"Stopped\"] = 0] = \"Stopped\";\n /**\n * The graph is running\n */\n FlowGraphState[FlowGraphState[\"Started\"] = 1] = \"Started\";\n})(FlowGraphState || (FlowGraphState = {}));\n/**\n * @experimental\n * Class used to represent a flow graph.\n * A flow graph is a graph of blocks that can be used to create complex logic.\n * Blocks can be added to the graph and connected to each other.\n * The graph can then be started, which will init and start all of its event blocks.\n */\nexport class FlowGraph {\n /**\n * Construct a Flow Graph\n * @param params construction parameters. currently only the scene\n */\n constructor(params) {\n /** @internal */\n this._eventBlocks = [];\n this._executionContexts = [];\n /**\n * The state of the graph\n */\n this.state = 0 /* FlowGraphState.Stopped */;\n this._scene = params.scene;\n this._coordinator = params.coordinator;\n this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => this.dispose());\n }\n /**\n * Create a context. A context represents one self contained execution for the graph, with its own variables.\n * @returns the context, where you can get and set variables\n */\n createContext() {\n const context = new FlowGraphContext({ scene: this._scene, coordinator: this._coordinator });\n this._executionContexts.push(context);\n return context;\n }\n /**\n * Returns the execution context at a given index\n * @param index the index of the context\n * @returns the execution context at that index\n */\n getContext(index) {\n return this._executionContexts[index];\n }\n /**\n * Add an event block. When the graph is started, it will start listening to events\n * from the block and execute the graph when they are triggered.\n * @param block the event block to be added\n */\n addEventBlock(block) {\n this._eventBlocks.push(block);\n }\n /**\n * Starts the flow graph. Initializes the event blocks and starts listening to events.\n */\n start() {\n if (this.state === 1 /* FlowGraphState.Started */) {\n return;\n }\n this.state = 1 /* FlowGraphState.Started */;\n if (this._executionContexts.length === 0) {\n this.createContext();\n }\n for (const context of this._executionContexts) {\n const contextualOrder = this._getContextualOrder();\n for (const block of contextualOrder) {\n block._startPendingTasks(context);\n }\n }\n }\n _getContextualOrder() {\n const order = [];\n for (const block1 of this._eventBlocks) {\n // If the block is a mesh pick, guarantee that picks of children meshes come before picks of parent meshes\n if (block1.getClassName() === FlowGraphMeshPickEventBlock.ClassName) {\n const mesh1 = block1._getReferencedMesh();\n let i = 0;\n for (; i < order.length; i++) {\n const block2 = order[i];\n const mesh2 = block2._getReferencedMesh();\n if (mesh1 && mesh2 && _isADescendantOf(mesh1, mesh2)) {\n break;\n }\n }\n order.splice(i, 0, block1);\n }\n else {\n order.push(block1);\n }\n }\n return order;\n }\n /**\n * Disposes of the flow graph. Cancels any pending tasks and removes all event listeners.\n */\n dispose() {\n if (this.state === 0 /* FlowGraphState.Stopped */) {\n return;\n }\n this.state = 0 /* FlowGraphState.Stopped */;\n for (const context of this._executionContexts) {\n context._clearPendingBlocks();\n }\n this._executionContexts.length = 0;\n this._eventBlocks.length = 0;\n this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);\n this._sceneDisposeObserver = null;\n }\n /**\n * Executes a function in all blocks of a flow graph, starting with the event blocks.\n * @param visitor the function to execute.\n */\n visitAllBlocks(visitor) {\n const visitList = [];\n const idsAddedToVisitList = new Set();\n for (const block of this._eventBlocks) {\n visitList.push(block);\n idsAddedToVisitList.add(block.uniqueId);\n }\n while (visitList.length > 0) {\n const block = visitList.pop();\n visitor(block);\n for (const dataIn of block.dataInputs) {\n for (const connection of dataIn._connectedPoint) {\n if (!idsAddedToVisitList.has(connection._ownerBlock.uniqueId)) {\n visitList.push(connection._ownerBlock);\n idsAddedToVisitList.add(connection._ownerBlock.uniqueId);\n }\n }\n }\n if (block instanceof FlowGraphExecutionBlock) {\n for (const signalOut of block.signalOutputs) {\n for (const connection of signalOut._connectedPoint) {\n if (!idsAddedToVisitList.has(connection._ownerBlock.uniqueId)) {\n visitList.push(connection._ownerBlock);\n idsAddedToVisitList.add(connection._ownerBlock.uniqueId);\n }\n }\n }\n }\n }\n }\n /**\n * Serializes a graph\n * @param serializationObject the object to write the values in\n * @param valueSerializeFunction a function to serialize complex values\n */\n serialize(serializationObject = {}, valueSerializeFunction) {\n serializationObject.allBlocks = [];\n this.visitAllBlocks((block) => {\n const serializedBlock = {};\n block.serialize(serializedBlock);\n serializationObject.allBlocks.push(serializedBlock);\n });\n serializationObject.executionContexts = [];\n for (const context of this._executionContexts) {\n const serializedContext = {};\n context.serialize(serializedContext, valueSerializeFunction);\n serializationObject.executionContexts.push(serializedContext);\n }\n }\n /**\n * Given a list of blocks, find an output data connection that has a specific unique id\n * @param blocks a list of flow graph blocks\n * @param uniqueId the unique id of a connection\n * @returns the connection that has this unique id. throws an error if none was found\n */\n static GetDataOutConnectionByUniqueId(blocks, uniqueId) {\n for (const block of blocks) {\n for (const dataOut of block.dataOutputs) {\n if (dataOut.uniqueId === uniqueId) {\n return dataOut;\n }\n }\n }\n throw new Error(\"Could not find data out connection with unique id \" + uniqueId);\n }\n /**\n * Given a list of blocks, find an input signal connection that has a specific unique id\n * @param blocks a list of flow graph blocks\n * @param uniqueId the unique id of a connection\n * @returns the connection that has this unique id. throws an error if none was found\n */\n static GetSignalInConnectionByUniqueId(blocks, uniqueId) {\n for (const block of blocks) {\n if (block instanceof FlowGraphExecutionBlock) {\n for (const signalIn of block.signalInputs) {\n if (signalIn.uniqueId === uniqueId) {\n return signalIn;\n }\n }\n }\n }\n throw new Error(\"Could not find signal in connection with unique id \" + uniqueId);\n }\n /**\n * Parses a graph from a given serialization object\n * @param serializationObject the object where the values are written\n * @param options options for parsing the graph\n * @returns the parsed graph\n */\n static Parse(serializationObject, options) {\n const graph = options.coordinator.createGraph();\n const blocks = [];\n const valueParseFunction = options.valueParseFunction ?? defaultValueParseFunction;\n // Parse all blocks\n for (const serializedBlock of serializationObject.allBlocks) {\n const block = FlowGraphBlock.Parse(serializedBlock, { scene: options.coordinator.config.scene, pathConverter: options.pathConverter, valueParseFunction });\n blocks.push(block);\n if (block instanceof FlowGraphEventBlock) {\n graph.addEventBlock(block);\n }\n }\n // After parsing all blocks, connect them\n for (const block of blocks) {\n for (const dataIn of block.dataInputs) {\n for (const serializedConnection of dataIn.connectedPointIds) {\n const connection = FlowGraph.GetDataOutConnectionByUniqueId(blocks, serializedConnection);\n dataIn.connectTo(connection);\n }\n }\n if (block instanceof FlowGraphExecutionBlock) {\n for (const signalOut of block.signalOutputs) {\n for (const serializedConnection of signalOut.connectedPointIds) {\n const connection = FlowGraph.GetSignalInConnectionByUniqueId(blocks, serializedConnection);\n signalOut.connectTo(connection);\n }\n }\n }\n }\n for (const serializedContext of serializationObject.executionContexts) {\n FlowGraphContext.Parse(serializedContext, { graph, valueParseFunction });\n }\n return graph;\n }\n}\n//# sourceMappingURL=flowGraph.js.map","import { Observable } from \"../Misc/observable\";\n/**\n * The current state of the timer\n */\nexport var TimerState;\n(function (TimerState) {\n /**\n * Timer initialized, not yet started\n */\n TimerState[TimerState[\"INIT\"] = 0] = \"INIT\";\n /**\n * Timer started and counting\n */\n TimerState[TimerState[\"STARTED\"] = 1] = \"STARTED\";\n /**\n * Timer ended (whether aborted or time reached)\n */\n TimerState[TimerState[\"ENDED\"] = 2] = \"ENDED\";\n})(TimerState || (TimerState = {}));\n/**\n * A simple version of the timer. Will take options and start the timer immediately after calling it\n *\n * @param options options with which to initialize this timer\n * @returns an observer that can be used to stop the timer\n */\nexport function setAndStartTimer(options) {\n let timer = 0;\n const startTime = Date.now();\n options.observableParameters = options.observableParameters ?? {};\n const observer = options.contextObservable.add((payload) => {\n const now = Date.now();\n timer = now - startTime;\n const data = {\n startTime,\n currentTime: now,\n deltaTime: timer,\n completeRate: timer / options.timeout,\n payload,\n };\n options.onTick && options.onTick(data);\n if (options.breakCondition && options.breakCondition()) {\n options.contextObservable.remove(observer);\n options.onAborted && options.onAborted(data);\n }\n if (timer >= options.timeout) {\n options.contextObservable.remove(observer);\n options.onEnded && options.onEnded(data);\n }\n }, options.observableParameters.mask, options.observableParameters.insertFirst, options.observableParameters.scope);\n return observer;\n}\n/**\n * An advanced implementation of a timer class\n */\nexport class AdvancedTimer {\n /**\n * Will construct a new advanced timer based on the options provided. Timer will not start until start() is called.\n * @param options construction options for this advanced timer\n */\n constructor(options) {\n /**\n * Will notify each time the timer calculates the remaining time\n */\n this.onEachCountObservable = new Observable();\n /**\n * Will trigger when the timer was aborted due to the break condition\n */\n this.onTimerAbortedObservable = new Observable();\n /**\n * Will trigger when the timer ended successfully\n */\n this.onTimerEndedObservable = new Observable();\n /**\n * Will trigger when the timer state has changed\n */\n this.onStateChangedObservable = new Observable();\n this._observer = null;\n this._breakOnNextTick = false;\n this._tick = (payload) => {\n const now = Date.now();\n this._timer = now - this._startTime;\n const data = {\n startTime: this._startTime,\n currentTime: now,\n deltaTime: this._timer,\n completeRate: this._timer / this._timeToEnd,\n payload,\n };\n const shouldBreak = this._breakOnNextTick || this._breakCondition(data);\n if (shouldBreak || this._timer >= this._timeToEnd) {\n this._stop(data, shouldBreak);\n }\n else {\n this.onEachCountObservable.notifyObservers(data);\n }\n };\n this._setState(0 /* TimerState.INIT */);\n this._contextObservable = options.contextObservable;\n this._observableParameters = options.observableParameters ?? {};\n this._breakCondition = options.breakCondition ?? (() => false);\n this._timeToEnd = options.timeout;\n if (options.onEnded) {\n this.onTimerEndedObservable.add(options.onEnded);\n }\n if (options.onTick) {\n this.onEachCountObservable.add(options.onTick);\n }\n if (options.onAborted) {\n this.onTimerAbortedObservable.add(options.onAborted);\n }\n }\n /**\n * set a breaking condition for this timer. Default is to never break during count\n * @param predicate the new break condition. Returns true to break, false otherwise\n */\n set breakCondition(predicate) {\n this._breakCondition = predicate;\n }\n /**\n * Reset ALL associated observables in this advanced timer\n */\n clearObservables() {\n this.onEachCountObservable.clear();\n this.onTimerAbortedObservable.clear();\n this.onTimerEndedObservable.clear();\n this.onStateChangedObservable.clear();\n }\n /**\n * Will start a new iteration of this timer. Only one instance of this timer can run at a time.\n *\n * @param timeToEnd how much time to measure until timer ended\n */\n start(timeToEnd = this._timeToEnd) {\n if (this._state === 1 /* TimerState.STARTED */) {\n throw new Error(\"Timer already started. Please stop it before starting again\");\n }\n this._timeToEnd = timeToEnd;\n this._startTime = Date.now();\n this._timer = 0;\n this._observer = this._contextObservable.add(this._tick, this._observableParameters.mask, this._observableParameters.insertFirst, this._observableParameters.scope);\n this._setState(1 /* TimerState.STARTED */);\n }\n /**\n * Will force a stop on the next tick.\n */\n stop() {\n if (this._state !== 1 /* TimerState.STARTED */) {\n return;\n }\n this._breakOnNextTick = true;\n }\n /**\n * Dispose this timer, clearing all resources\n */\n dispose() {\n if (this._observer) {\n this._contextObservable.remove(this._observer);\n }\n this.clearObservables();\n }\n _setState(newState) {\n this._state = newState;\n this.onStateChangedObservable.notifyObservers(this._state);\n }\n _stop(data, aborted = false) {\n this._contextObservable.remove(this._observer);\n this._setState(2 /* TimerState.ENDED */);\n if (aborted) {\n this.onTimerAbortedObservable.notifyObservers(data);\n }\n else {\n this.onTimerEndedObservable.notifyObservers(data);\n }\n }\n}\n//# sourceMappingURL=timer.js.map","import { Observable } from \"core/Misc/observable\";\nimport { FlowGraph } from \"./flowGraph\";\nimport { defaultValueParseFunction } from \"./serialization\";\n/**\n * This class holds all of the existing flow graphs and is responsible for creating new ones.\n * It also handles starting/stopping multiple graphs and communication between them through an Event Coordinator\n */\nexport class FlowGraphCoordinator {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n this.config = config;\n this._flowGraphs = [];\n this._customEventsMap = new Map();\n // When the scene is disposed, dispose all graphs currently running on it.\n this.config.scene.onDisposeObservable.add(() => {\n this.dispose();\n });\n // Add itself to the SceneCoordinators list for the Inspector.\n const coordinators = FlowGraphCoordinator.SceneCoordinators.get(this.config.scene) ?? [];\n coordinators.push(this);\n }\n /**\n * Creates a new flow graph and adds it to the list of existing flow graphs\n * @returns a new flow graph\n */\n createGraph() {\n const graph = new FlowGraph({ scene: this.config.scene, coordinator: this });\n this._flowGraphs.push(graph);\n return graph;\n }\n /**\n * Removes a flow graph from the list of existing flow graphs and disposes it\n * @param graph the graph to remove\n */\n removeGraph(graph) {\n const index = this._flowGraphs.indexOf(graph);\n if (index !== -1) {\n graph.dispose();\n this._flowGraphs.splice(index, 1);\n }\n }\n /**\n * Starts all graphs\n */\n start() {\n this._flowGraphs.forEach((graph) => graph.start());\n }\n /**\n * Disposes all graphs\n */\n dispose() {\n this._flowGraphs.forEach((graph) => graph.dispose());\n this._flowGraphs.length = 0;\n // Remove itself from the SceneCoordinators list for the Inspector.\n const coordinators = FlowGraphCoordinator.SceneCoordinators.get(this.config.scene) ?? [];\n const index = coordinators.indexOf(this);\n if (index !== -1) {\n coordinators.splice(index, 1);\n }\n }\n /**\n * Serializes this coordinator to a JSON object.\n * @param serializationObject the object to serialize to\n * @param valueSerializeFunction the function to use to serialize the value\n */\n serialize(serializationObject, valueSerializeFunction) {\n serializationObject._flowGraphs = [];\n this._flowGraphs.forEach((graph) => {\n const serializedGraph = {};\n graph.serialize(serializedGraph, valueSerializeFunction);\n serializationObject._flowGraphs.push(serializedGraph);\n });\n }\n /**\n * Parses a serialized coordinator.\n * @param serializedObject the object to parse\n * @param options the options to use when parsing\n * @returns the parsed coordinator\n */\n static Parse(serializedObject, options) {\n const valueParseFunction = options.valueParseFunction ?? defaultValueParseFunction;\n const coordinator = new FlowGraphCoordinator({ scene: options.scene });\n serializedObject._flowGraphs?.forEach((serializedGraph) => {\n FlowGraph.Parse(serializedGraph, { coordinator, valueParseFunction, pathConverter: options.pathConverter });\n });\n return coordinator;\n }\n /**\n * Gets the list of flow graphs\n */\n get flowGraphs() {\n return this._flowGraphs;\n }\n /**\n * Get an observable that will be notified when the event with the given id is fired.\n * @param id the id of the event\n * @returns the observable for the event\n */\n getCustomEventObservable(id) {\n let observable = this._customEventsMap.get(id);\n if (!observable) {\n observable = new Observable();\n this._customEventsMap.set(id, observable);\n }\n return observable;\n }\n /**\n * Notifies the observable for the given event id with the given data.\n * @param id the id of the event\n * @param data the data to send with the event\n */\n notifyCustomEvent(id, data) {\n const observable = this._customEventsMap.get(id);\n if (observable) {\n observable.notifyObservers(data);\n }\n }\n}\n/**\n * @internal\n * A list of all the coordinators per scene. Will be used by the inspector\n */\nFlowGraphCoordinator.SceneCoordinators = new Map();\n//# sourceMappingURL=flowGraphCoordinator.js.map","import { FlowGraphEventBlock } from \"../../flowGraphEventBlock\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\n/**\n * @experimental\n * Block that triggers when a scene is ready.\n */\nexport class FlowGraphSceneReadyEventBlock extends FlowGraphEventBlock {\n /**\n * @internal\n */\n _preparePendingTasks(context) {\n if (!context._getExecutionVariable(this, \"sceneReadyObserver\")) {\n const scene = context.configuration.scene;\n const contextObserver = scene.onReadyObservable.add(() => {\n this._execute(context);\n });\n context._setExecutionVariable(this, \"sceneReadyObserver\", contextObserver);\n }\n }\n /**\n * @internal\n */\n _cancelPendingTasks(context) {\n const contextObserver = context._getExecutionVariable(this, \"sceneReadyObserver\");\n const scene = context.configuration.scene;\n scene.onReadyObservable.remove(contextObserver);\n context._deleteExecutionVariable(this, \"sceneReadyObserver\");\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphSceneReadyEventBlock.ClassName;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSceneReadyEventBlock.ClassName = \"FGSceneReadyEventBlock\";\nRegisterClass(\"FGSceneReadyEventBlock\", FlowGraphSceneReadyEventBlock);\n//# sourceMappingURL=flowGraphSceneReadyEventBlock.js.map","import { FlowGraphEventBlock } from \"../../flowGraphEventBlock\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\n/**\n * @experimental\n * Block that triggers on scene tick (before each render).\n */\nexport class FlowGraphSceneTickEventBlock extends FlowGraphEventBlock {\n /**\n * @internal\n */\n _preparePendingTasks(context) {\n if (!context._getExecutionVariable(this, \"sceneBeforeRender\")) {\n const scene = context.configuration.scene;\n const contextObserver = scene.onBeforeRenderObservable.add(() => {\n this._execute(context);\n });\n context._setExecutionVariable(this, \"sceneBeforeRender\", contextObserver);\n }\n }\n /**\n * @internal\n */\n _cancelPendingTasks(context) {\n const contextObserver = context._getExecutionVariable(this, \"sceneBeforeRender\");\n const scene = context.configuration.scene;\n scene.onBeforeRenderObservable.remove(contextObserver);\n context._deleteExecutionVariable(this, \"sceneBeforeRender\");\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphSceneTickEventBlock.ClassName;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSceneTickEventBlock.ClassName = \"FGSceneTickEventBlock\";\nRegisterClass(FlowGraphSceneTickEventBlock.ClassName, FlowGraphSceneTickEventBlock);\n//# sourceMappingURL=flowGraphSceneTickEventBlock.js.map","import { FlowGraphExecutionBlock } from \"./flowGraphExecutionBlock\";\n/**\n * @experimental\n * An execution block that has an out signal. This signal is triggered when the synchronous execution of this block is done.\n * Most execution blocks will inherit from this, except for the ones that have multiple signals to be triggered.\n * (such as if blocks)\n */\nexport class FlowGraphExecutionBlockWithOutSignal extends FlowGraphExecutionBlock {\n constructor(config) {\n super(config);\n this.out = this._registerSignalOutput(\"out\");\n }\n}\n//# sourceMappingURL=flowGraphExecutionBlockWithOutSignal.js.map","import { FlowGraphExecutionBlockWithOutSignal } from \"../../flowGraphExecutionBlockWithOutSignal\";\nimport { RichTypeAny } from \"../../flowGraphRichTypes\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\nimport { Logger } from \"core/Misc/logger\";\n/**\n * @experimental\n * Block that logs a message to the console.\n */\nexport class FlowGraphConsoleLogBlock extends FlowGraphExecutionBlockWithOutSignal {\n constructor(config) {\n super(config);\n this.message = this.registerDataInput(\"message\", RichTypeAny);\n }\n /**\n * @internal\n */\n _execute(context) {\n const messageValue = this.message.getValue(context);\n Logger.Log(messageValue);\n // activate the output flow block\n this.out._activateSignal(context);\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphConsoleLogBlock.ClassName;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphConsoleLogBlock.ClassName = \"FGConsoleLogBlock\";\nRegisterClass(FlowGraphConsoleLogBlock.ClassName, FlowGraphConsoleLogBlock);\n//# sourceMappingURL=flowGraphConsoleLogBlock.js.map","import { AdvancedTimer } from \"../../../../Misc/timer\";\nimport { FlowGraphAsyncExecutionBlock } from \"../../../flowGraphAsyncExecutionBlock\";\nimport { RichTypeNumber } from \"../../../flowGraphRichTypes\";\nimport { Tools } from \"../../../../Misc/tools\";\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\n/**\n * @experimental\n * Block that provides two different output flows. One is started immediately once the block is executed,\n * and the other is executed after a set time. The timer for this block runs based on the scene's render loop.\n */\nexport class FlowGraphTimerBlock extends FlowGraphAsyncExecutionBlock {\n constructor(config) {\n super(config);\n this.timeout = this.registerDataInput(\"timeout\", RichTypeNumber);\n }\n _preparePendingTasks(context) {\n const currentTimeout = this.timeout.getValue(context);\n if (currentTimeout !== undefined && currentTimeout >= 0) {\n const timers = context._getExecutionVariable(this, \"runningTimers\") || [];\n const scene = context.configuration.scene;\n const timer = new AdvancedTimer({\n timeout: currentTimeout,\n contextObservable: scene.onBeforeRenderObservable,\n onEnded: () => this._onEnded(timer, context),\n });\n timer.start();\n timers.push(timer);\n context._setExecutionVariable(this, \"runningTimers\", timers);\n }\n }\n /**\n * @internal\n */\n _execute(context) {\n this._startPendingTasks(context);\n this.out._activateSignal(context);\n }\n _onEnded(timer, context) {\n const timers = context._getExecutionVariable(this, \"runningTimers\") || [];\n const index = timers.indexOf(timer);\n if (index !== -1) {\n timers.splice(index, 1);\n }\n else {\n Tools.Warn(\"FlowGraphTimerBlock: Timer ended but was not found in the running timers list\");\n }\n context._removePendingBlock(this);\n this.done._activateSignal(context);\n }\n _cancelPendingTasks(context) {\n const timers = context._getExecutionVariable(this, \"runningTimers\") || [];\n for (const timer of timers) {\n timer.dispose();\n }\n context._deleteExecutionVariable(this, \"runningTimers\");\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphTimerBlock.ClassName;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTimerBlock.ClassName = \"FGTimerBlock\";\nRegisterClass(\"FGTimerBlock\", FlowGraphTimerBlock);\n//# sourceMappingURL=flowGraphTimerBlock.js.map","import { RichTypeAny } from \"core/FlowGraph/flowGraphRichTypes\";\nimport { FlowGraphExecutionBlockWithOutSignal } from \"../../flowGraphExecutionBlockWithOutSignal\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\n/**\n * @experimental\n */\nexport class FlowGraphSendCustomEventBlock extends FlowGraphExecutionBlockWithOutSignal {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n for (let i = 0; i < this.config.eventData.length; i++) {\n const dataName = this.config.eventData[i];\n this.registerDataInput(dataName, RichTypeAny);\n }\n }\n _execute(context) {\n const eventId = this.config.eventId;\n const eventDatas = this.dataInputs.map((port) => port.getValue(context));\n context.configuration.coordinator.notifyCustomEvent(eventId, eventDatas);\n this.out._activateSignal(context);\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphSendCustomEventBlock.ClassName;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSendCustomEventBlock.ClassName = \"FGSendCustomEventBlock\";\nRegisterClass(\"FGSendCustomEventBlock\", FlowGraphSendCustomEventBlock);\n//# sourceMappingURL=flowGraphSendCustomEventBlock.js.map","import { FlowGraphEventBlock } from \"../../flowGraphEventBlock\";\nimport { Tools } from \"../../../Misc/tools\";\nimport { RichTypeAny } from \"../../flowGraphRichTypes\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\n/**\n * @experimental\n * A block that receives a custom event. It saves the data sent in the eventData output.\n */\nexport class FlowGraphReceiveCustomEventBlock extends FlowGraphEventBlock {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n for (let i = 0; i < this.config.eventData.length; i++) {\n const dataName = this.config.eventData[i];\n this.registerDataOutput(dataName, RichTypeAny);\n }\n }\n _preparePendingTasks(context) {\n const observable = context.configuration.coordinator.getCustomEventObservable(this.config.eventId);\n this._eventObserver = observable.add((eventDatas) => {\n for (let i = 0; i < eventDatas.length; i++) {\n this.dataOutputs[i].setValue(eventDatas[i], context);\n }\n this._execute(context);\n });\n }\n _cancelPendingTasks(context) {\n const observable = context.configuration.coordinator.getCustomEventObservable(this.config.eventId);\n if (observable) {\n observable.remove(this._eventObserver);\n }\n else {\n Tools.Warn(`FlowGraphReceiveCustomEventBlock: Missing observable for event ${this.config.eventId}`);\n }\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphReceiveCustomEventBlock.ClassName;\n }\n /**\n * Serializes this block\n * @param serializationObject the object to serialize to\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.eventId = this.config.eventId;\n serializationObject.eventData = this.config.eventData;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphReceiveCustomEventBlock.ClassName = \"FGReceiveCustomEventBlock\";\nRegisterClass(FlowGraphReceiveCustomEventBlock.ClassName, FlowGraphReceiveCustomEventBlock);\n//# sourceMappingURL=flowGraphReceiveCustomEventBlock.js.map","import { RegisterClass } from \"../../../../Misc/typeStore\";\nimport { FlowGraphExecutionBlock } from \"../../../flowGraphExecutionBlock\";\n/**\n * @experimental\n * A block that executes its output flows in sequence.\n */\nexport class FlowGraphSequenceBlock extends FlowGraphExecutionBlock {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n this.outFlows = [];\n for (let i = 0; i < this.config.numberOutputFlows; i++) {\n this.outFlows.push(this._registerSignalOutput(`${i}`));\n }\n }\n _execute(context) {\n for (let i = 0; i < this.config.numberOutputFlows; i++) {\n this.outFlows[i]._activateSignal(context);\n }\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphSequenceBlock.ClassName;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSequenceBlock.ClassName = \"FGSequenceBlock\";\nRegisterClass(FlowGraphSequenceBlock.ClassName, FlowGraphSequenceBlock);\n//# sourceMappingURL=flowGraphSequenceBlock.js.map","import { RichTypeFlowGraphInteger } from \"./flowGraphRichTypes\";\nconst pathHasTemplatesRegex = new RegExp(/\\{(\\w+)\\}/g);\n/**\n * @experimental\n * A component that converts a path to an object accessor.\n */\nexport class FlowGraphPathConverterComponent {\n constructor(path, ownerBlock) {\n this.path = path;\n this.ownerBlock = ownerBlock;\n /**\n * The templated inputs for the provided path.\n */\n this.templatedInputs = [];\n let match = pathHasTemplatesRegex.exec(path);\n while (match) {\n const [, matchGroup] = match;\n this.templatedInputs.push(ownerBlock.registerDataInput(matchGroup, RichTypeFlowGraphInteger));\n match = pathHasTemplatesRegex.exec(path);\n }\n }\n getAccessor(pathConverter, context) {\n let finalPath = this.path;\n for (const templatedInput of this.templatedInputs) {\n const valueToReplace = templatedInput.getValue(context).value;\n finalPath = finalPath.replace(`{${templatedInput.name}}`, valueToReplace.toString());\n }\n return pathConverter.convert(finalPath);\n }\n}\n//# sourceMappingURL=flowGraphPathConverterComponent.js.map","import { RegisterClass } from \"../../../Misc/typeStore\";\nimport { FlowGraphBlock } from \"../../flowGraphBlock\";\nimport { RichTypeAny } from \"../../flowGraphRichTypes\";\nimport { FlowGraphPathConverterComponent } from \"../../flowGraphPathConverterComponent\";\n/**\n * @experimental\n */\nexport class FlowGraphGetPropertyBlock extends FlowGraphBlock {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n this.value = this.registerDataOutput(\"value\", RichTypeAny);\n this.templateComponent = new FlowGraphPathConverterComponent(config.path, this);\n }\n _updateOutputs(context) {\n const accessorContainer = this.templateComponent.getAccessor(this.config.pathConverter, context);\n const value = accessorContainer.info.get(accessorContainer.object);\n this.value.setValue(value, context);\n }\n /**\n * Gets the class name of this block\n * @returns the class name\n */\n getClassName() {\n return FlowGraphGetPropertyBlock.ClassName;\n }\n /**\n * Serializes this block\n * @param serializationObject the object to serialize to\n */\n serialize(serializationObject = {}) {\n super.serialize(serializationObject);\n serializationObject.config.path = this.config.path;\n }\n}\n/**\n * Class name of the block.\n */\nFlowGraphGetPropertyBlock.ClassName = \"FGGetPropertyBlock\";\nRegisterClass(FlowGraphGetPropertyBlock.ClassName, FlowGraphGetPropertyBlock);\n//# sourceMappingURL=flowGraphGetPropertyBlock.js.map","import { RichTypeAny } from \"../../flowGraphRichTypes\";\nimport { FlowGraphExecutionBlockWithOutSignal } from \"../../flowGraphExecutionBlockWithOutSignal\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\nimport { FlowGraphPathConverterComponent } from \"../../flowGraphPathConverterComponent\";\n/**\n * @experimental\n * Block that sets a property on a target object.\n */\nexport class FlowGraphSetPropertyBlock extends FlowGraphExecutionBlockWithOutSignal {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n this.a = this.registerDataInput(\"a\", RichTypeAny);\n this.templateComponent = new FlowGraphPathConverterComponent(config.path, this);\n }\n _execute(context) {\n const value = this.a.getValue(context);\n const accessor = this.templateComponent.getAccessor(this.config.pathConverter, context);\n accessor.info.set(value, accessor.object);\n this.out._activateSignal(context);\n }\n /**\n * Serializes the block to a JSON object.\n * @param serializationObject the object to serialize to.\n */\n serialize(serializationObject = {}) {\n super.serialize(serializationObject);\n serializationObject.config.path = this.config.path;\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphSetPropertyBlock.ClassName;\n }\n}\n/**\n * Class name of the block.\n */\nFlowGraphSetPropertyBlock.ClassName = \"FGSetPropertyBlock\";\nRegisterClass(\"FGSetPropertyBlock\", FlowGraphSetPropertyBlock);\n//# sourceMappingURL=flowGraphSetPropertyBlock.js.map","import { FlowGraphBlock } from \"../../flowGraphBlock\";\nconst cacheName = \"cachedOperationValue\";\nconst cacheExecIdName = \"cachedExecutionId\";\n/**\n * @experimental\n */\nexport class FlowGraphCachedOperationBlock extends FlowGraphBlock {\n constructor(outputRichType, config) {\n super(config);\n this.value = this.registerDataOutput(\"value\", outputRichType);\n }\n _updateOutputs(context) {\n const cachedExecutionId = context._getExecutionVariable(this, cacheExecIdName);\n const cachedValue = context._getExecutionVariable(this, cacheName);\n if (cachedValue !== undefined && cachedExecutionId === context.executionId) {\n this.value.setValue(cachedValue, context);\n }\n else {\n const calculatedValue = this._doOperation(context);\n context._setExecutionVariable(this, cacheName, calculatedValue);\n context._setExecutionVariable(this, cacheExecIdName, context.executionId);\n this.value.setValue(calculatedValue, context);\n }\n }\n}\n//# sourceMappingURL=flowGraphCachedOperationBlock.js.map","import { FlowGraphCachedOperationBlock } from \"./flowGraphCachedOperationBlock\";\n/**\n * @experimental\n * The base block for all binary operation blocks. Receives an input of type\n * LeftT, one of type RightT, and outputs a value of type ResultT.\n */\nexport class FlowGraphBinaryOperationBlock extends FlowGraphCachedOperationBlock {\n constructor(leftRichType, rightRichType, resultRichType, _operation, _className, config) {\n super(resultRichType, config);\n this._operation = _operation;\n this._className = _className;\n this.a = this.registerDataInput(\"a\", leftRichType);\n this.b = this.registerDataInput(\"b\", rightRichType);\n }\n /**\n * the operation performed by this block\n * @param context the graph context\n * @returns the result of the operation\n */\n _doOperation(context) {\n return this._operation(this.a.getValue(context), this.b.getValue(context));\n }\n /**\n * Gets the class name of this block\n * @returns the class name\n */\n getClassName() {\n return this._className;\n }\n}\n//# sourceMappingURL=flowGraphBinaryOperationBlock.js.map","import { FlowGraphCachedOperationBlock } from \"./flowGraphCachedOperationBlock\";\n/**\n * @experimental\n * Block that outputs a value of type ResultT, resulting of an operation with no inputs.\n */\nexport class FlowGraphConstantOperationBlock extends FlowGraphCachedOperationBlock {\n constructor(richType, _operation, _className, config) {\n super(richType, config);\n this._operation = _operation;\n this._className = _className;\n }\n /**\n * the operation performed by this block\n * @param _context the graph context\n * @returns the result of the operation\n */\n _doOperation(_context) {\n return this._operation();\n }\n /**\n * Gets the class name of this block\n * @returns the class name\n */\n getClassName() {\n return this._className;\n }\n}\n//# sourceMappingURL=flowGraphConstantOperationBlock.js.map","import { FlowGraphCachedOperationBlock } from \"./flowGraphCachedOperationBlock\";\n/**\n * @experimental\n * The base block for all unary operation blocks. Receives an input of type InputT, and outputs a value of type ResultT.\n */\nexport class FlowGraphUnaryOperationBlock extends FlowGraphCachedOperationBlock {\n constructor(inputRichType, resultRichType, _operation, _className, config) {\n super(resultRichType, config);\n this._operation = _operation;\n this._className = _className;\n this.a = this.registerDataInput(\"a\", inputRichType);\n }\n /**\n * the operation performed by this block\n * @param context the graph context\n * @returns the result of the operation\n */\n _doOperation(context) {\n return this._operation(this.a.getValue(context));\n }\n /**\n * Gets the class name of this block\n * @returns the class name\n */\n getClassName() {\n return this._className;\n }\n}\n//# sourceMappingURL=flowGraphUnaryOperationBlock.js.map","import { FlowGraphCachedOperationBlock } from \"./flowGraphCachedOperationBlock\";\n/**\n * @experimental\n * The base block for all ternary operation blocks.\n */\nexport class FlowGraphTernaryOperationBlock extends FlowGraphCachedOperationBlock {\n constructor(t1Type, t2Type, t3Type, resultRichType, _operation, _className, config) {\n super(resultRichType, config);\n this._operation = _operation;\n this._className = _className;\n this.a = this.registerDataInput(\"a\", t1Type);\n this.b = this.registerDataInput(\"b\", t2Type);\n this.c = this.registerDataInput(\"c\", t3Type);\n }\n /**\n * the operation performed by this block\n * @param context the graph context\n * @returns the result of the operation\n */\n _doOperation(context) {\n return this._operation(this.a.getValue(context), this.b.getValue(context), this.c.getValue(context));\n }\n /**\n * Gets the class name of this block\n * @returns the class name\n */\n getClassName() {\n return this._className;\n }\n}\n//# sourceMappingURL=flowGraphTernaryOperationBlock.js.map","import { RegisterClass } from \"../../../../Misc/typeStore\";\nimport { RichTypeAny, RichTypeBoolean, RichTypeFlowGraphInteger, RichTypeMatrix, RichTypeNumber, RichTypeVector2, RichTypeVector3 } from \"../../../flowGraphRichTypes\";\nimport { FlowGraphBinaryOperationBlock } from \"../flowGraphBinaryOperationBlock\";\nimport { FlowGraphConstantOperationBlock } from \"../flowGraphConstantOperationBlock\";\nimport { Matrix, Vector2, Vector3, Vector4 } from \"../../../../Maths/math.vector\";\nimport { FlowGraphUnaryOperationBlock } from \"../flowGraphUnaryOperationBlock\";\nimport { FlowGraphTernaryOperationBlock } from \"../flowGraphTernaryOperationBlock\";\nimport { FlowGraphInteger } from \"../../../flowGraphInteger\";\n/**\n * @internal\n */\nfunction _getClassNameOf(v) {\n if (v.getClassName) {\n return v.getClassName();\n }\n return \"\";\n}\n/**\n * @internal\n * @returns\n */\nfunction _areSameVectorClass(className, className2) {\n return (className === \"Vector2\" && className2 === \"Vector2\") || (className === \"Vector3\" && className2 === \"Vector3\") || (className === \"Vector4\" && className2 === \"Vector4\");\n}\n/**\n * @internal\n * @returns\n */\nfunction _areSameMatrixClass(className, className2) {\n return className === \"Matrix\" && className2 === \"Matrix\";\n}\n/**\n * @internal\n * @returns\n */\nfunction _areSameIntegerClass(className, className2) {\n return className === \"FlowGraphInteger\" && className2 === \"FlowGraphInteger\";\n}\n/**\n * @experimental\n * Polymorphic add block.\n */\nexport class FlowGraphAddBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicAdd(a, b), FlowGraphAddBlock.ClassName, config);\n }\n _polymorphicAdd(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameMatrixClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.add(b);\n }\n else {\n return a + b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAddBlock.ClassName = \"FGAddBlock\";\nRegisterClass(FlowGraphAddBlock.ClassName, FlowGraphAddBlock);\n/**\n * @experimental\n * Polymorphic add block.\n */\nexport class FlowGraphSubtractBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicAdd(a, b), FlowGraphSubtractBlock.ClassName, config);\n }\n _polymorphicAdd(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.subtract(b);\n }\n else if (_areSameMatrixClass(aClassName, bClassName)) {\n return a.add(b.scale(-1));\n }\n else {\n return a - b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSubtractBlock.ClassName = \"FGSubBlock\";\nRegisterClass(FlowGraphSubtractBlock.ClassName, FlowGraphSubtractBlock);\n/**\n * @experimental\n * Polymorphic multiply block.\n * In case of matrix, it is a component wise multiplication.\n */\nexport class FlowGraphMultiplyBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicMultiply(a, b), FlowGraphMultiplyBlock.ClassName, config);\n }\n _polymorphicMultiply(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.multiply(b);\n }\n else if (_areSameMatrixClass(aClassName, bClassName)) {\n return Matrix.FromValues(a.m[0] * b.m[0], a.m[4] * b.m[4], a.m[8] * b.m[8], a.m[12] * b.m[12], a.m[1] * b.m[1], a.m[5] * b.m[5], a.m[9] * b.m[9], a.m[13] * b.m[13], a.m[2] * b.m[2], a.m[6] * b.m[6], a.m[10] * b.m[10], a.m[14] * b.m[14], a.m[3] * b.m[3], a.m[7] * b.m[7], a.m[11] * b.m[11], a.m[15] * b.m[15]);\n }\n else {\n return a * b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMultiplyBlock.ClassName = \"FGMultiplyBlock\";\nRegisterClass(FlowGraphMultiplyBlock.ClassName, FlowGraphMultiplyBlock);\n/**\n * @experimental\n * Polymorphic division block.\n */\nexport class FlowGraphDivideBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicDivide(a, b), FlowGraphDivideBlock.ClassName, config);\n }\n _polymorphicDivide(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.divide(b);\n }\n else if (_areSameMatrixClass(aClassName, bClassName)) {\n return Matrix.FromValues(a.m[0] / b.m[0], a.m[4] / b.m[4], a.m[8] / b.m[8], a.m[12] / b.m[12], a.m[1] / b.m[1], a.m[5] / b.m[5], a.m[9] / b.m[9], a.m[13] / b.m[13], a.m[2] / b.m[2], a.m[6] / b.m[6], a.m[10] / b.m[10], a.m[14] / b.m[14], a.m[3] / b.m[3], a.m[7] / b.m[7], a.m[11] / b.m[11], a.m[15] / b.m[15]);\n }\n else {\n return a / b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDivideBlock.ClassName = \"FGDivideBlock\";\nRegisterClass(FlowGraphDivideBlock.ClassName, FlowGraphDivideBlock);\n/**\n * @experimental\n * Random number between 0 and 1.\n */\nexport class FlowGraphRandomBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Math.random(), FlowGraphRandomBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRandomBlock.ClassName = \"FGRandomBlock\";\nRegisterClass(FlowGraphRandomBlock.ClassName, FlowGraphRandomBlock);\n/**\n * @experimental\n * Dot product block.\n */\nexport class FlowGraphDotBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeNumber, (a, b) => this._polymorphicDot(a, b), FlowGraphDotBlock.ClassName, config);\n }\n _polymorphicDot(a, b) {\n const className = _getClassNameOf(a);\n switch (className) {\n case \"Vector2\":\n return Vector2.Dot(a, b);\n case \"Vector3\":\n return Vector3.Dot(a, b);\n case \"Vector4\":\n return Vector4.Dot(a, b);\n default:\n throw new Error(`Cannot get dot product of ${a} and ${b}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDotBlock.ClassName = \"FGDotBlock\";\nRegisterClass(FlowGraphDotBlock.ClassName, FlowGraphDotBlock);\n/**\n * @experimental\n * E constant.\n */\nexport class FlowGraphEBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Math.E, FlowGraphEBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphEBlock.ClassName = \"FGEBlock\";\nRegisterClass(FlowGraphEBlock.ClassName, FlowGraphEBlock);\n/**\n * @experimental\n * Pi constant.\n */\nexport class FlowGraphPiBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Math.PI, FlowGraphPiBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphPiBlock.ClassName = \"FGPIBlock\";\nRegisterClass(FlowGraphPiBlock.ClassName, FlowGraphPiBlock);\n/**\n * @experimental\n * Positive inf constant.\n */\nexport class FlowGraphInfBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Number.POSITIVE_INFINITY, FlowGraphInfBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphInfBlock.ClassName = \"FGInfBlock\";\nRegisterClass(FlowGraphInfBlock.ClassName, FlowGraphInfBlock);\n/**\n * @experimental\n * NaN constant.\n */\nexport class FlowGraphNaNBlock extends FlowGraphConstantOperationBlock {\n constructor(config) {\n super(RichTypeNumber, () => Number.NaN, FlowGraphNaNBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphNaNBlock.ClassName = \"FGNaNBlock\";\nRegisterClass(FlowGraphNaNBlock.ClassName, FlowGraphNaNBlock);\nfunction _componentWiseUnaryOperation(a, op) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"FlowGraphInteger\":\n return new FlowGraphInteger(op(a.value));\n case \"Vector2\":\n return new Vector2(op(a.x), op(a.y));\n case \"Vector3\":\n return new Vector3(op(a.x), op(a.y), op(a.z));\n case \"Vector4\":\n return new Vector4(op(a.x), op(a.y), op(a.z), op(a.w));\n case \"Matrix\":\n return Matrix.FromValues(op(a.m[0]), op(a.m[4]), op(a.m[8]), op(a.m[12]), op(a.m[1]), op(a.m[5]), op(a.m[9]), op(a.m[13]), op(a.m[2]), op(a.m[6]), op(a.m[10]), op(a.m[14]), op(a.m[3]), op(a.m[7]), op(a.m[11]), op(a.m[15]));\n default:\n return op(a);\n }\n}\n/**\n * @experimental\n * Absolute value block.\n */\nexport class FlowGraphAbsBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicAbs(a), FlowGraphAbsBlock.ClassName, config);\n }\n _polymorphicAbs(a) {\n return _componentWiseUnaryOperation(a, Math.abs);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAbsBlock.ClassName = \"FGAbsBlock\";\nRegisterClass(FlowGraphAbsBlock.ClassName, FlowGraphAbsBlock);\n/**\n * @experimental\n * Sign block.\n */\nexport class FlowGraphSignBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicSign(a), FlowGraphSignBlock.ClassName, config);\n }\n _polymorphicSign(a) {\n return _componentWiseUnaryOperation(a, Math.sign);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSignBlock.ClassName = \"FGSignBlock\";\nRegisterClass(FlowGraphSignBlock.ClassName, FlowGraphSignBlock);\n/**\n * @experimental\n * Truncation block.\n */\nexport class FlowGraphTruncBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicTrunc(a), FlowGraphTruncBlock.ClassName, config);\n }\n _polymorphicTrunc(a) {\n return _componentWiseUnaryOperation(a, Math.trunc);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTruncBlock.ClassName = \"FGTruncBlock\";\nRegisterClass(FlowGraphTruncBlock.ClassName, FlowGraphTruncBlock);\n/**\n * @experimental\n * Floor block.\n */\nexport class FlowGraphFloorBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicFloor(a), FlowGraphFloorBlock.ClassName, config);\n }\n _polymorphicFloor(a) {\n return _componentWiseUnaryOperation(a, Math.floor);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphFloorBlock.ClassName = \"FGFloorBlock\";\nRegisterClass(FlowGraphFloorBlock.ClassName, FlowGraphFloorBlock);\n/**\n * @experimental\n * Ceiling block.\n */\nexport class FlowGraphCeilBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicCeiling(a), FlowGraphCeilBlock.ClassName, config);\n }\n _polymorphicCeiling(a) {\n return _componentWiseUnaryOperation(a, Math.ceil);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCeilBlock.ClassName = \"FGCeilBlock\";\nRegisterClass(FlowGraphCeilBlock.ClassName, FlowGraphCeilBlock);\n/**\n * @experimental\n * Fract block.\n */\nexport class FlowGraphFractBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicFract(a), FlowGraphFractBlock.ClassName, config);\n }\n _polymorphicFract(a) {\n return _componentWiseUnaryOperation(a, (a) => a - Math.floor(a));\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphFractBlock.ClassName = \"FGFractBlock\";\nRegisterClass(FlowGraphFractBlock.ClassName, FlowGraphFractBlock);\n/**\n * @experimental\n * Negation block.\n */\nexport class FlowGraphNegBlock extends FlowGraphUnaryOperationBlock {\n /**\n * construct a new negation block.\n * @param config optional configuration\n */\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicNeg(a), FlowGraphNegBlock.ClassName, config);\n }\n _polymorphicNeg(a) {\n return _componentWiseUnaryOperation(a, (a) => -a);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphNegBlock.ClassName = \"FGNegBlock\";\nRegisterClass(FlowGraphNegBlock.ClassName, FlowGraphNegBlock);\nfunction _componentWiseBinaryOperation(a, b, op) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"FlowGraphInteger\":\n return new FlowGraphInteger(op(a.value, b.value));\n case \"Vector2\":\n return new Vector2(op(a.x, b.x), op(a.y, b.y));\n case \"Vector3\":\n return new Vector3(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n case \"Vector4\":\n return new Vector4(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n case \"Matrix\":\n return Matrix.FromValues(op(a.m[0], b.m[0]), op(a.m[4], b.m[4]), op(a.m[8], b.m[8]), op(a.m[12], b.m[12]), op(a.m[1], b.m[1]), op(a.m[5], b.m[5]), op(a.m[9], b.m[9]), op(a.m[13], b.m[13]), op(a.m[2], b.m[2]), op(a.m[6], b.m[6]), op(a.m[10], b.m[10]), op(a.m[14], b.m[14]), op(a.m[3], b.m[3]), op(a.m[7], b.m[7]), op(a.m[11], b.m[11]), op(a.m[15], b.m[15]));\n default:\n return op(a, b);\n }\n}\n/**\n * @experimental\n * Remainder block.\n */\nexport class FlowGraphRemainderBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicRemainder(a, b), FlowGraphRemainderBlock.ClassName, config);\n }\n _polymorphicRemainder(a, b) {\n return _componentWiseBinaryOperation(a, b, (a, b) => a % b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRemainderBlock.ClassName = \"FGRemainderBlock\";\nRegisterClass(FlowGraphRemainderBlock.ClassName, FlowGraphRemainderBlock);\n/**\n * @experimental\n * Min block.\n */\nexport class FlowGraphMinBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicMin(a, b), FlowGraphMinBlock.ClassName, config);\n }\n _polymorphicMin(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.min);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMinBlock.ClassName = \"FGMinBlock\";\nRegisterClass(FlowGraphMinBlock.ClassName, FlowGraphMinBlock);\n/**\n * @experimental\n * Max block\n */\nexport class FlowGraphMaxBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicMax(a, b), FlowGraphMaxBlock.ClassName, config);\n }\n _polymorphicMax(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.max);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMaxBlock.ClassName = \"FGMaxBlock\";\nRegisterClass(FlowGraphMaxBlock.ClassName, FlowGraphMaxBlock);\nfunction _clamp(a, b, c) {\n return Math.min(Math.max(a, Math.min(b, c)), Math.max(b, c));\n}\nfunction _componentWiseTernaryOperation(a, b, c, op) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"FlowGraphInteger\":\n return new FlowGraphInteger(op(a.value, b.value, c.value));\n case \"Vector2\":\n return new Vector2(op(a.x, b.x, c.x), op(a.y, b.y, c.y));\n case \"Vector3\":\n return new Vector3(op(a.x, b.x, c.x), op(a.y, b.y, c.y), op(a.z, b.z, c.z));\n case \"Vector4\":\n return new Vector4(op(a.x, b.x, c.x), op(a.y, b.y, c.y), op(a.z, b.z, c.z), op(a.w, b.w, c.w));\n case \"Matrix\":\n return Matrix.FromValues(op(a.m[0], b.m[0], c.m[0]), op(a.m[4], b.m[4], c.m[4]), op(a.m[8], b.m[8], c.m[8]), op(a.m[12], b.m[12], c.m[12]), op(a.m[1], b.m[1], c.m[1]), op(a.m[5], b.m[5], c.m[5]), op(a.m[9], b.m[9], c.m[9]), op(a.m[13], b.m[13], c.m[13]), op(a.m[2], b.m[2], c.m[2]), op(a.m[6], b.m[6], c.m[6]), op(a.m[10], b.m[10], c.m[10]), op(a.m[14], b.m[14], c.m[14]), op(a.m[3], b.m[3], c.m[3]), op(a.m[7], b.m[7], c.m[7]), op(a.m[11], b.m[11], c.m[11]), op(a.m[15], b.m[15], c.m[15]));\n default:\n return op(a, b, c);\n }\n}\n/**\n * @experimental\n * Clamp block.\n */\nexport class FlowGraphClampBlock extends FlowGraphTernaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, RichTypeAny, (a, b, c) => this._polymorphicClamp(a, b, c), FlowGraphClampBlock.ClassName, config);\n }\n _polymorphicClamp(a, b, c) {\n return _componentWiseTernaryOperation(a, b, c, _clamp);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphClampBlock.ClassName = \"FGClampBlock\";\nRegisterClass(FlowGraphClampBlock.ClassName, FlowGraphClampBlock);\nfunction _saturate(a) {\n return Math.min(Math.max(a, 0), 1);\n}\n/**\n * @experimental\n * Saturate block.\n */\nexport class FlowGraphSaturateBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicSaturate(a), FlowGraphSaturateBlock.ClassName, config);\n }\n _polymorphicSaturate(a) {\n return _componentWiseUnaryOperation(a, _saturate);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSaturateBlock.ClassName = \"FGSaturateBlock\";\nRegisterClass(FlowGraphSaturateBlock.ClassName, FlowGraphSaturateBlock);\n/**\n * @experimental\n * Interpolate block.\n */\nexport class FlowGraphInterpolateBlock extends FlowGraphTernaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, RichTypeAny, (a, b, c) => this._polymorphicInterpolate(a, b, c), FlowGraphInterpolateBlock.ClassName, config);\n }\n _interpolate(a, b, c) {\n return (1 - c) * a + c * b;\n }\n _polymorphicInterpolate(a, b, c) {\n return _componentWiseTernaryOperation(a, b, c, this._interpolate);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphInterpolateBlock.ClassName = \"FGInterpolateBlock\";\nRegisterClass(FlowGraphInterpolateBlock.ClassName, FlowGraphInterpolateBlock);\n/**\n * @experimental\n * Equals block.\n */\nexport class FlowGraphEqBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicEq(a, b), FlowGraphEqBlock.ClassName, config);\n }\n _polymorphicEq(a, b) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (_areSameVectorClass(aClassName, bClassName) || _areSameMatrixClass(aClassName, bClassName) || _areSameIntegerClass(aClassName, bClassName)) {\n return a.equals(b);\n }\n else {\n return a === b;\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphEqBlock.ClassName = \"FGEqBlock\";\nRegisterClass(FlowGraphEqBlock.ClassName, FlowGraphEqBlock);\nfunction _comparisonOperators(a, b, op) {\n const aClassName = _getClassNameOf(a);\n const bClassName = _getClassNameOf(b);\n if (aClassName === bClassName) {\n // float\n if (aClassName === \"\") {\n return op(a, b);\n }\n else if (aClassName === \"FlowGraphInteger\") {\n return op(a.value, b.value);\n }\n else {\n throw new Error(`Cannot compare ${a} and ${b}`);\n }\n }\n throw new Error(`${a} and ${b} are of different types.`);\n}\n/**\n * @experimental\n * Less than block.\n */\nexport class FlowGraphLessThanBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicLessThan(a, b), FlowGraphLessThanBlock.ClassName, config);\n }\n _polymorphicLessThan(a, b) {\n return _comparisonOperators(a, b, (a, b) => a < b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLessThanBlock.ClassName = \"FGLessThanBlock\";\nRegisterClass(FlowGraphLessThanBlock.ClassName, FlowGraphLessThanBlock);\n/**\n * @experimental\n * Less than or equal block.\n */\nexport class FlowGraphLessThanOrEqualBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicLessThanOrEqual(a, b), FlowGraphLessThanOrEqualBlock.ClassName, config);\n }\n _polymorphicLessThanOrEqual(a, b) {\n return _comparisonOperators(a, b, (a, b) => a <= b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLessThanOrEqualBlock.ClassName = \"FGLessThanOrEqualBlock\";\n/**\n * @experimental\n * Greater than block.\n */\nexport class FlowGraphGreaterThanBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicGreaterThan(a, b), FlowGraphGreaterThanBlock.ClassName, config);\n }\n _polymorphicGreaterThan(a, b) {\n return _comparisonOperators(a, b, (a, b) => a > b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphGreaterThanBlock.ClassName = \"FGGreaterThanBlock\";\nRegisterClass(FlowGraphGreaterThanBlock.ClassName, FlowGraphGreaterThanBlock);\n/**\n * @experimental\n * Greater than or equal block.\n */\nexport class FlowGraphGreaterThanOrEqualBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeBoolean, (a, b) => this._polymorphicGreaterThanOrEqual(a, b), FlowGraphGreaterThanOrEqualBlock.ClassName, config);\n }\n _polymorphicGreaterThanOrEqual(a, b) {\n return _comparisonOperators(a, b, (a, b) => a >= b);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphGreaterThanOrEqualBlock.ClassName = \"FGGreaterThanOrEqualBlock\";\nRegisterClass(FlowGraphGreaterThanOrEqualBlock.ClassName, FlowGraphGreaterThanOrEqualBlock);\n/**\n * @experimental\n * Is NaN block.\n */\nexport class FlowGraphIsNanBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeBoolean, (a) => this._polymorphicIsNan(a), FlowGraphIsNanBlock.ClassName, config);\n }\n _polymorphicIsNan(a) {\n const aClassName = _getClassNameOf(a);\n if (aClassName === \"\") {\n return isNaN(a);\n }\n else if (aClassName === \"FlowGraphInteger\") {\n return isNaN(a.value);\n }\n else {\n throw new Error(`Cannot get NaN of ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphIsNanBlock.ClassName = \"FGIsNanBlock\";\nRegisterClass(FlowGraphIsNanBlock.ClassName, FlowGraphIsNanBlock);\n/**\n * @experimental\n * Is Inf block.\n */\nexport class FlowGraphIsInfBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeBoolean, (a) => this._polymorphicIsInf(a), FlowGraphIsInfBlock.ClassName, config);\n }\n _polymorphicIsInf(a) {\n const aClassName = _getClassNameOf(a);\n if (aClassName === \"\") {\n return !isFinite(a);\n }\n else if (aClassName === \"FlowGraphInteger\") {\n return !isFinite(a.value);\n }\n else {\n throw new Error(`Cannot get isInf of ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphIsInfBlock.ClassName = \"FGIsInfBlock\";\n/**\n * @experimental\n * Convert degrees to radians block.\n */\nexport class FlowGraphDegToRadBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicDegToRad(a), FlowGraphDegToRadBlock.ClassName, config);\n }\n _degToRad(a) {\n return (a * Math.PI) / 180;\n }\n _polymorphicDegToRad(a) {\n return _componentWiseUnaryOperation(a, this._degToRad);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDegToRadBlock.ClassName = \"FGDegToRadBlock\";\nRegisterClass(FlowGraphDegToRadBlock.ClassName, FlowGraphDegToRadBlock);\n/**\n * @experimental\n * Convert radians to degrees block.\n */\nexport class FlowGraphRadToDegBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicRadToDeg(a), FlowGraphRadToDegBlock.ClassName, config);\n }\n _radToDeg(a) {\n return (a * 180) / Math.PI;\n }\n _polymorphicRadToDeg(a) {\n return _componentWiseUnaryOperation(a, this._radToDeg);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRadToDegBlock.ClassName = \"FGRadToDegBlock\";\nRegisterClass(FlowGraphRadToDegBlock.ClassName, FlowGraphRadToDegBlock);\n/**\n * @experimental\n * Sin block.\n */\nexport class FlowGraphSinBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicSin(a), FlowGraphSinBlock.ClassName, config);\n }\n _polymorphicSin(a) {\n return _componentWiseUnaryOperation(a, Math.sin);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSinBlock.ClassName = \"FGSinBlock\";\nRegisterClass(FlowGraphSinBlock.ClassName, FlowGraphSinBlock);\n/**\n * @experimental\n * Cos block.\n */\nexport class FlowGraphCosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicCos(a), FlowGraphCosBlock.ClassName, config);\n }\n _polymorphicCos(a) {\n return _componentWiseUnaryOperation(a, Math.cos);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCosBlock.ClassName = \"FGCosBlock\";\nRegisterClass(FlowGraphCosBlock.ClassName, FlowGraphCosBlock);\n/**\n * @experimental\n * Tan block.\n */\nexport class FlowGraphTanBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicTan(a), FlowGraphTanBlock.ClassName, config);\n }\n _polymorphicTan(a) {\n return _componentWiseUnaryOperation(a, Math.tan);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTanBlock.ClassName = \"FGTanBlock\";\nRegisterClass(FlowGraphTanBlock.ClassName, FlowGraphTanBlock);\n/**\n * @experimental\n * Arcsin block.\n */\nexport class FlowGraphAsinBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicAsin(a), FlowGraphAsinBlock.ClassName, config);\n }\n _polymorphicAsin(a) {\n return _componentWiseUnaryOperation(a, Math.asin);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAsinBlock.ClassName = \"FGAsinBlock\";\nRegisterClass(FlowGraphAsinBlock.ClassName, FlowGraphAsinBlock);\n/**\n * @experimental\n * Arccos block.\n */\nexport class FlowGraphAcosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicAcos(a), FlowGraphAcosBlock.ClassName, config);\n }\n _polymorphicAcos(a) {\n return _componentWiseUnaryOperation(a, Math.acos);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAcosBlock.ClassName = \"FGAcosBlock\";\nRegisterClass(FlowGraphAcosBlock.ClassName, FlowGraphAcosBlock);\n/**\n * @experimental\n * Arctan block.\n */\nexport class FlowGraphAtanBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicAtan(a), FlowGraphAtanBlock.ClassName, config);\n }\n _polymorphicAtan(a) {\n return _componentWiseUnaryOperation(a, Math.atan);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAtanBlock.ClassName = \"FGAtanBlock\";\nRegisterClass(FlowGraphAtanBlock.ClassName, FlowGraphAtanBlock);\n/**\n * @experimental\n * Arctan2 block.\n */\nexport class FlowGraphAtan2Block extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, RichTypeAny, (a, b) => this._polymorphicAtan2(a, b), FlowGraphAtan2Block.ClassName, config);\n }\n _polymorphicAtan2(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.atan2);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAtan2Block.ClassName = \"FGAtan2Block\";\nRegisterClass(FlowGraphAtan2Block.ClassName, FlowGraphAtan2Block);\n/**\n * @experimental\n * Hyperbolic sin block.\n */\nexport class FlowGraphSinhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicSinh(a), FlowGraphSinhBlock.ClassName, config);\n }\n _polymorphicSinh(a) {\n return _componentWiseUnaryOperation(a, Math.sinh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSinhBlock.ClassName = \"FGSinhBlock\";\nRegisterClass(FlowGraphSinhBlock.ClassName, FlowGraphSinhBlock);\n/**\n * @experimental\n * Hyperbolic cos block.\n */\nexport class FlowGraphCoshBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicCosh(a), FlowGraphCoshBlock.ClassName, config);\n }\n _polymorphicCosh(a) {\n return _componentWiseUnaryOperation(a, Math.cosh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCoshBlock.ClassName = \"FGCoshBlock\";\nRegisterClass(FlowGraphCoshBlock.ClassName, FlowGraphCoshBlock);\n/**\n * @experimental\n * Hyperbolic tan block.\n */\nexport class FlowGraphTanhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicTanh(a), FlowGraphTanhBlock.ClassName, config);\n }\n _polymorphicTanh(a) {\n return _componentWiseUnaryOperation(a, Math.tanh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTanhBlock.ClassName = \"FGTanhBlock\";\nRegisterClass(FlowGraphTanhBlock.ClassName, FlowGraphTanhBlock);\n/**\n * @experimental\n * Hyperbolic arcsin block.\n */\nexport class FlowGraphAsinhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicAsinh(a), FlowGraphAsinhBlock.ClassName, config);\n }\n _polymorphicAsinh(a) {\n return _componentWiseUnaryOperation(a, Math.asinh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAsinhBlock.ClassName = \"FGAsinhBlock\";\nRegisterClass(FlowGraphAsinhBlock.ClassName, FlowGraphAsinhBlock);\n/**\n * @experimental\n * Hyperbolic arccos block.\n */\nexport class FlowGraphAcoshBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicAcosh(a), FlowGraphAcoshBlock.ClassName, config);\n }\n _polymorphicAcosh(a) {\n return _componentWiseUnaryOperation(a, Math.acosh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAcoshBlock.ClassName = \"FGAcoshBlock\";\nRegisterClass(FlowGraphAcoshBlock.ClassName, FlowGraphAcoshBlock);\n/**\n * @experimental\n * Hyperbolic arctan block.\n */\nexport class FlowGraphAtanhBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicAtanh(a), FlowGraphAtanhBlock.ClassName, config);\n }\n _polymorphicAtanh(a) {\n return _componentWiseUnaryOperation(a, Math.atanh);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphAtanhBlock.ClassName = \"FGAtanhBlock\";\nRegisterClass(FlowGraphAtanhBlock.ClassName, FlowGraphAtanhBlock);\n/**\n * @experimental\n * Exponential block.\n */\nexport class FlowGraphExpBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicExp(a), FlowGraphExpBlock.ClassName, config);\n }\n _polymorphicExp(a) {\n return _componentWiseUnaryOperation(a, Math.exp);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphExpBlock.ClassName = \"FGExpBlock\";\nRegisterClass(FlowGraphExpBlock.ClassName, FlowGraphExpBlock);\n/**\n * @experimental\n * Logarithm block.\n */\nexport class FlowGraphLogBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicLog(a), FlowGraphLogBlock.ClassName, config);\n }\n _polymorphicLog(a) {\n return _componentWiseUnaryOperation(a, Math.log);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLogBlock.ClassName = \"FGLogBlock\";\nRegisterClass(FlowGraphLogBlock.ClassName, FlowGraphLogBlock);\n/**\n * @experimental\n * Base 2 logarithm block.\n */\nexport class FlowGraphLog2Block extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicLog2(a), FlowGraphLog2Block.ClassName, config);\n }\n _polymorphicLog2(a) {\n return _componentWiseUnaryOperation(a, Math.log2);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLog2Block.ClassName = \"FGLog2Block\";\nRegisterClass(FlowGraphLog2Block.ClassName, FlowGraphLog2Block);\n/**\n * @experimental\n * Base 10 logarithm block.\n */\nexport class FlowGraphLog10Block extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicLog10(a), FlowGraphLog10Block.ClassName, config);\n }\n _polymorphicLog10(a) {\n return _componentWiseUnaryOperation(a, Math.log10);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLog10Block.ClassName = \"FGLog10Block\";\nRegisterClass(FlowGraphLog10Block.ClassName, FlowGraphLog10Block);\n/**\n * @experimental\n * Square root block.\n */\nexport class FlowGraphSqrtBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicSqrt(a), FlowGraphSqrtBlock.ClassName, config);\n }\n _polymorphicSqrt(a) {\n return _componentWiseUnaryOperation(a, Math.sqrt);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSqrtBlock.ClassName = \"FGSqrtBlock\";\nRegisterClass(FlowGraphSqrtBlock.ClassName, FlowGraphSqrtBlock);\n/**\n * @experimental\n * Cube root block.\n */\nexport class FlowGraphCubeRootBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicCubeRoot(a), FlowGraphCubeRootBlock.ClassName, config);\n }\n _polymorphicCubeRoot(a) {\n return _componentWiseUnaryOperation(a, Math.cbrt);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCubeRootBlock.ClassName = \"FGCubeRootBlock\";\nRegisterClass(FlowGraphCubeRootBlock.ClassName, FlowGraphCubeRootBlock);\n/**\n * @experimental\n * Power block.\n */\nexport class FlowGraphPowBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, RichTypeNumber, (a, b) => this._polymorphicPow(a, b), FlowGraphPowBlock.ClassName, config);\n }\n _polymorphicPow(a, b) {\n return _componentWiseBinaryOperation(a, b, Math.pow);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphPowBlock.ClassName = \"FGPowBlock\";\nRegisterClass(FlowGraphPowBlock.ClassName, FlowGraphPowBlock);\n/**\n * @experimental\n * Vector length block.\n */\nexport class FlowGraphLengthBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeNumber, (a) => this._polymorphicLength(a), FlowGraphLengthBlock.ClassName, config);\n }\n _polymorphicLength(a) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"Vector2\":\n case \"Vector3\":\n case \"Vector4\":\n return a.length();\n default:\n throw new Error(`Cannot compute length of value ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphLengthBlock.ClassName = \"FGLengthBlock\";\nRegisterClass(FlowGraphLengthBlock.ClassName, FlowGraphLengthBlock);\n/**\n * @experimental\n * Vector normalize block.\n */\nexport class FlowGraphNormalizeBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeAny, RichTypeAny, (a) => this._polymorphicNormalize(a), FlowGraphNormalizeBlock.ClassName, config);\n }\n _polymorphicNormalize(a) {\n const aClassName = _getClassNameOf(a);\n switch (aClassName) {\n case \"Vector2\":\n case \"Vector3\":\n case \"Vector4\":\n return a.normalize();\n default:\n throw new Error(`Cannot normalize value ${a}`);\n }\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphNormalizeBlock.ClassName = \"FGNormalizeBlock\";\nRegisterClass(FlowGraphNormalizeBlock.ClassName, FlowGraphNormalizeBlock);\n/**\n * @experimental\n * Cross product block.\n */\nexport class FlowGraphCrossBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeVector3, RichTypeVector3, RichTypeVector3, (a, b) => Vector3.Cross(a, b), FlowGraphCrossBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCrossBlock.ClassName = \"FGCrossBlock\";\nRegisterClass(FlowGraphCrossBlock.ClassName, FlowGraphCrossBlock);\n/**\n * @experimental\n * 2D rotation block.\n */\nexport class FlowGraphRotate2DBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeVector2, RichTypeNumber, RichTypeVector2, (a, b) => Vector2.Transform(a, Matrix.RotationZ(b)), FlowGraphRotate2DBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRotate2DBlock.ClassName = \"FGRotate2DBlock\";\nRegisterClass(FlowGraphRotate2DBlock.ClassName, FlowGraphRotate2DBlock);\n/**\n * @experimental\n * 3D rotation block.\n */\nexport class FlowGraphRotate3DBlock extends FlowGraphTernaryOperationBlock {\n constructor(config) {\n super(RichTypeVector3, RichTypeVector3, RichTypeNumber, RichTypeVector3, (a, b, c) => Vector3.TransformCoordinates(a, Matrix.RotationAxis(b, c)), FlowGraphRotate3DBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphRotate3DBlock.ClassName = \"FGRotate3DBlock\";\nRegisterClass(FlowGraphRotate3DBlock.ClassName, FlowGraphRotate3DBlock);\n/**\n * @experimental\n * Transposes a matrix.\n */\nexport class FlowGraphTransposeBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeMatrix, (a) => Matrix.Transpose(a), FlowGraphTransposeBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphTransposeBlock.ClassName = \"FGTransposeBlock\";\nRegisterClass(FlowGraphTransposeBlock.ClassName, FlowGraphTransposeBlock);\n/**\n * @experimental\n * Gets the determinant of a matrix.\n */\nexport class FlowGraphDeterminantBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeNumber, (a) => a.determinant(), FlowGraphDeterminantBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDeterminantBlock.ClassName = \"FGDeterminantBlock\";\nRegisterClass(FlowGraphDeterminantBlock.ClassName, FlowGraphDeterminantBlock);\n/**\n * @experimental\n * Inverts a matrix.\n */\nexport class FlowGraphInvertMatrixBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeMatrix, (a) => Matrix.Invert(a), FlowGraphInvertMatrixBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphInvertMatrixBlock.ClassName = \"FGInvertMatrixBlock\";\nRegisterClass(FlowGraphInvertMatrixBlock.ClassName, FlowGraphInvertMatrixBlock);\n/**\n * @experimental\n * Multiplies two matrices.\n */\nexport class FlowGraphMatMulBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeMatrix, RichTypeMatrix, RichTypeMatrix, (a, b) => b.multiply(a), FlowGraphMatMulBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphMatMulBlock.ClassName = \"FGMatMulBlock\";\nRegisterClass(FlowGraphMatMulBlock.ClassName, FlowGraphMatMulBlock);\n/**\n * @experimental\n * Bitwise NOT operation\n */\nexport class FlowGraphBitwiseNotBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a) => new FlowGraphInteger(~a.value), FlowGraphBitwiseNotBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseNotBlock.ClassName = \"FGBitwiseNotBlock\";\nRegisterClass(FlowGraphBitwiseNotBlock.ClassName, FlowGraphBitwiseNotBlock);\n/**\n * @experimental\n * Bitwise AND operation\n */\nexport class FlowGraphBitwiseAndBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value & b.value), FlowGraphBitwiseAndBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseAndBlock.ClassName = \"FGBitwiseAndBlock\";\nRegisterClass(FlowGraphBitwiseAndBlock.ClassName, FlowGraphBitwiseAndBlock);\n/**\n * @experimental\n * Bitwise OR operation\n */\nexport class FlowGraphBitwiseOrBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value | b.value), FlowGraphBitwiseOrBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseOrBlock.ClassName = \"FGBitwiseOrBlock\";\nRegisterClass(FlowGraphBitwiseOrBlock.ClassName, FlowGraphBitwiseOrBlock);\n/**\n * @experimental\n * Bitwise XOR operation\n */\nexport class FlowGraphBitwiseXorBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value ^ b.value), FlowGraphBitwiseXorBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseXorBlock.ClassName = \"FGBitwiseXorBlock\";\nRegisterClass(FlowGraphBitwiseXorBlock.ClassName, FlowGraphBitwiseXorBlock);\n/**\n * @experimental\n * Bitwise left shift operation\n */\nexport class FlowGraphBitwiseLeftShiftBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value << b.value), FlowGraphBitwiseLeftShiftBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseLeftShiftBlock.ClassName = \"FGBitwiseLeftShiftBlock\";\nRegisterClass(FlowGraphBitwiseLeftShiftBlock.ClassName, FlowGraphBitwiseLeftShiftBlock);\n/**\n * @experimental\n * Bitwise right shift operation\n */\nexport class FlowGraphBitwiseRightShiftBlock extends FlowGraphBinaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a, b) => new FlowGraphInteger(a.value >> b.value), FlowGraphBitwiseRightShiftBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphBitwiseRightShiftBlock.ClassName = \"FGBitwiseRightShiftBlock\";\nRegisterClass(FlowGraphBitwiseRightShiftBlock.ClassName, FlowGraphBitwiseRightShiftBlock);\n/**\n * @experimental\n * Count leading zeros operation\n */\nexport class FlowGraphCountLeadingZerosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a) => new FlowGraphInteger(Math.clz32(a.value)), FlowGraphCountLeadingZerosBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCountLeadingZerosBlock.ClassName = \"FGCountLeadingZerosBlock\";\nRegisterClass(FlowGraphCountLeadingZerosBlock.ClassName, FlowGraphCountLeadingZerosBlock);\n/**\n * @experimental\n * Count trailing zeros operation\n */\nexport class FlowGraphCountTrailingZerosBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a) => new FlowGraphInteger(a.value ? 31 - Math.clz32(a.value & -a.value) : 32), FlowGraphCountTrailingZerosBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCountTrailingZerosBlock.ClassName = \"FGCountTrailingZerosBlock\";\nRegisterClass(FlowGraphCountTrailingZerosBlock.ClassName, FlowGraphCountTrailingZerosBlock);\n/**\n * Given a number (which is converted to a 32-bit integer), return the\n * number of bits set to one on that number.\n * @internal\n * @param n\n */\nfunction _countOnes(n) {\n let result = 0;\n while (n) {\n // This zeroes out all bits except for the least significant one.\n // So if the bit is set, it will be 1, otherwise it will be 0.\n result += n & 1;\n // This shifts n's bits to the right by one\n n >>= 1;\n }\n return result;\n}\n/**\n * @experimental\n * Count one bits operation\n */\nexport class FlowGraphCountOneBitsBlock extends FlowGraphUnaryOperationBlock {\n constructor(config) {\n super(RichTypeFlowGraphInteger, RichTypeFlowGraphInteger, (a) => new FlowGraphInteger(_countOnes(a.value)), FlowGraphCountOneBitsBlock.ClassName, config);\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphCountOneBitsBlock.ClassName = \"FGCountOneBitsBlock\";\nRegisterClass(FlowGraphCountOneBitsBlock.ClassName, FlowGraphCountOneBitsBlock);\n//# sourceMappingURL=flowGraphMathBlocks.js.map","import { RichTypeFlowGraphInteger } from \"../../../flowGraphRichTypes\";\nimport { FlowGraphExecutionBlockWithOutSignal } from \"../../../flowGraphExecutionBlockWithOutSignal\";\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\nimport { FlowGraphInteger } from \"../../../flowGraphInteger\";\n/**\n * A block that executes a branch a set number of times.\n * @experimental\n */\nexport class FlowGraphDoNBlock extends FlowGraphExecutionBlockWithOutSignal {\n constructor(\n /**\n * [Object] the configuration of the block\n */\n config = { startIndex: new FlowGraphInteger(0) }) {\n super(config);\n this.config = config;\n this.reset = this._registerSignalInput(\"reset\");\n this.n = this.registerDataInput(\"n\", RichTypeFlowGraphInteger);\n this.value = this.registerDataOutput(\"value\", RichTypeFlowGraphInteger);\n }\n _execute(context, callingSignal) {\n if (callingSignal === this.reset) {\n this.value.setValue(this.config.startIndex, context);\n }\n else {\n const currentCountValue = this.value.getValue(context);\n if (currentCountValue.value < this.n.getValue(context).value) {\n this.value.setValue(new FlowGraphInteger(currentCountValue.value + 1), context);\n this.out._activateSignal(context);\n }\n }\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphDoNBlock.ClassName;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphDoNBlock.ClassName = \"FGDoNBlock\";\nRegisterClass(FlowGraphDoNBlock.ClassName, FlowGraphDoNBlock);\n//# sourceMappingURL=flowGraphDoNBlock.js.map","import { FlowGraphBlock } from \"../../flowGraphBlock\";\nimport { RichTypeAny } from \"../../flowGraphRichTypes\";\nimport { RegisterClass } from \"../../../Misc/typeStore\";\n/**\n * A block that gets the value of a variable.\n * @experimental\n */\nexport class FlowGraphGetVariableBlock extends FlowGraphBlock {\n /**\n * Construct a FlowGraphGetVariableBlock.\n * @param config construction parameters\n */\n constructor(config) {\n super(config);\n this.config = config;\n // The output connection has to have the name of the variable.\n this.output = this.registerDataOutput(config.variableName, RichTypeAny);\n }\n /**\n * @internal\n */\n _updateOutputs(context) {\n const variableNameValue = this.config.variableName;\n if (context.hasVariable(variableNameValue)) {\n this.output.setValue(context.getVariable(variableNameValue), context);\n }\n }\n /**\n * Gets the class name of this block\n * @returns the class name\n */\n getClassName() {\n return FlowGraphGetVariableBlock.ClassName;\n }\n /**\n * Serializes this block\n * @param serializationObject the object to serialize to\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.config.variableName = this.config.variableName;\n }\n}\n/**\n * Class name of the block.\n */\nFlowGraphGetVariableBlock.ClassName = \"FGGetVariableBlock\";\nRegisterClass(FlowGraphGetVariableBlock.ClassName, FlowGraphGetVariableBlock);\n//# sourceMappingURL=flowGraphGetVariableBlock.js.map","import { RichTypeAny } from \"../../flowGraphRichTypes\";\nimport { FlowGraphExecutionBlockWithOutSignal } from \"../../flowGraphExecutionBlockWithOutSignal\";\nimport { RegisterClass } from \"core/Misc/typeStore\";\n/**\n * Block to set a variable.\n * @experimental\n */\nexport class FlowGraphSetVariableBlock extends FlowGraphExecutionBlockWithOutSignal {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n this.input = this.registerDataInput(config.variableName, RichTypeAny);\n }\n _execute(context) {\n const variableNameValue = this.config.variableName;\n const inputValue = this.input.getValue(context);\n context.setVariable(variableNameValue, inputValue);\n this.out._activateSignal(context);\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphSetVariableBlock.ClassName;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphSetVariableBlock.ClassName = \"FGSetVariableBlock\";\nRegisterClass(FlowGraphSetVariableBlock.ClassName, FlowGraphSetVariableBlock);\n//# sourceMappingURL=flowGraphSetVariableBlock.js.map","import { RichTypeBoolean } from \"../../../flowGraphRichTypes\";\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\nimport { FlowGraphExecutionBlockWithOutSignal } from \"../../../flowGraphExecutionBlockWithOutSignal\";\n/**\n * @experimental\n * A block that executes a branch while a condition is true.\n */\nexport class FlowGraphWhileLoopBlock extends FlowGraphExecutionBlockWithOutSignal {\n constructor(\n /**\n * the configuration of the block\n */\n config) {\n super(config);\n this.config = config;\n this.condition = this.registerDataInput(\"condition\", RichTypeBoolean);\n this.loopBody = this._registerSignalOutput(\"loopBody\");\n }\n _execute(context, _callingSignal) {\n let conditionValue = this.condition.getValue(context);\n if (this.config?.isDo && !conditionValue) {\n this.loopBody._activateSignal(context);\n }\n while (conditionValue) {\n this.loopBody._activateSignal(context);\n conditionValue = this.condition.getValue(context);\n }\n this.out._activateSignal(context);\n }\n /**\n * @returns class name of the block.\n */\n getClassName() {\n return FlowGraphWhileLoopBlock.ClassName;\n }\n /**\n * Serializes the block to a JSON object.\n * @param serializationObject the object to serialize to.\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.isDo = this.config?.isDo;\n }\n}\n/**\n * the class name of the block.\n */\nFlowGraphWhileLoopBlock.ClassName = \"FGWhileLoopBlock\";\nRegisterClass(FlowGraphWhileLoopBlock.ClassName, FlowGraphWhileLoopBlock);\n//# sourceMappingURL=flowGraphWhileLoopBlock.js.map","/* eslint-disable @typescript-eslint/naming-convention */\nimport { FlowGraphSceneReadyEventBlock } from \"core/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock\";\nimport { FlowGraphSceneTickEventBlock } from \"core/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock\";\nimport { FlowGraphConsoleLogBlock } from \"core/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock\";\nimport { FlowGraphTimerBlock } from \"core/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock\";\nimport { FlowGraphSendCustomEventBlock } from \"core/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock\";\nimport { FlowGraphReceiveCustomEventBlock } from \"core/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock\";\nimport { FlowGraphSequenceBlock } from \"core/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock\";\nimport { FlowGraphGetPropertyBlock } from \"core/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock\";\nimport { FlowGraphSetPropertyBlock } from \"core/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock\";\nimport { FlowGraphAddBlock, FlowGraphRandomBlock, FlowGraphLessThanBlock, FlowGraphMultiplyBlock, FlowGraphSubtractBlock, FlowGraphDotBlock, FlowGraphEBlock, FlowGraphPiBlock, FlowGraphInfBlock, FlowGraphNaNBlock, FlowGraphAbsBlock, FlowGraphSignBlock, FlowGraphTruncBlock, FlowGraphFloorBlock, FlowGraphCeilBlock, FlowGraphFractBlock, FlowGraphNegBlock, FlowGraphDivideBlock, FlowGraphRemainderBlock, FlowGraphMinBlock, FlowGraphMaxBlock, FlowGraphClampBlock, FlowGraphSaturateBlock, FlowGraphInterpolateBlock, FlowGraphEqBlock, FlowGraphLessThanOrEqualBlock, FlowGraphGreaterThanBlock, FlowGraphGreaterThanOrEqualBlock, FlowGraphIsNanBlock, FlowGraphIsInfBlock, FlowGraphDegToRadBlock, FlowGraphRadToDegBlock, FlowGraphSinBlock, FlowGraphCosBlock, FlowGraphTanBlock, FlowGraphAsinBlock, FlowGraphAcosBlock, FlowGraphAtanBlock, FlowGraphAtan2Block, FlowGraphSinhBlock, FlowGraphCoshBlock, FlowGraphTanhBlock, FlowGraphAsinhBlock, FlowGraphAcoshBlock, FlowGraphAtanhBlock, FlowGraphExpBlock, FlowGraphLog2Block, FlowGraphLogBlock, FlowGraphLog10Block, FlowGraphSqrtBlock, FlowGraphCubeRootBlock, FlowGraphPowBlock, FlowGraphLengthBlock, FlowGraphNormalizeBlock, FlowGraphCrossBlock, FlowGraphRotate2DBlock, FlowGraphRotate3DBlock, FlowGraphTransposeBlock, FlowGraphDeterminantBlock, FlowGraphInvertMatrixBlock, FlowGraphMatMulBlock, FlowGraphBitwiseNotBlock, FlowGraphBitwiseAndBlock, FlowGraphBitwiseOrBlock, FlowGraphBitwiseXorBlock, FlowGraphBitwiseRightShiftBlock, FlowGraphBitwiseLeftShiftBlock, FlowGraphCountLeadingZerosBlock, FlowGraphCountTrailingZerosBlock, FlowGraphCountOneBitsBlock, } from \"core/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks\";\nimport { FlowGraphDoNBlock } from \"core/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock\";\nimport { FlowGraphGetVariableBlock } from \"core/FlowGraph/Blocks/Data/flowGraphGetVariableBlock\";\nimport { FlowGraphSetVariableBlock } from \"core/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock\";\nimport { FlowGraphWhileLoopBlock } from \"core/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock\";\nexport const gltfToFlowGraphTypeMap = {\n \"lifecycle/onStart\": FlowGraphSceneReadyEventBlock.ClassName,\n \"lifecycle/onTick\": FlowGraphSceneTickEventBlock.ClassName,\n log: FlowGraphConsoleLogBlock.ClassName,\n \"flow/delay\": FlowGraphTimerBlock.ClassName,\n \"customEvent/send\": FlowGraphSendCustomEventBlock.ClassName,\n \"customEvent/receive\": FlowGraphReceiveCustomEventBlock.ClassName,\n \"flow/sequence\": FlowGraphSequenceBlock.ClassName,\n \"world/get\": FlowGraphGetPropertyBlock.ClassName,\n \"world/set\": FlowGraphSetPropertyBlock.ClassName,\n \"flow/doN\": FlowGraphDoNBlock.ClassName,\n \"variable/get\": FlowGraphGetVariableBlock.ClassName,\n \"variable/set\": FlowGraphSetVariableBlock.ClassName,\n \"flow/whileLoop\": FlowGraphWhileLoopBlock.ClassName,\n \"math/random\": FlowGraphRandomBlock.ClassName,\n \"math/e\": FlowGraphEBlock.ClassName,\n \"math/pi\": FlowGraphPiBlock.ClassName,\n \"math/inf\": FlowGraphInfBlock.ClassName,\n \"math/nan\": FlowGraphNaNBlock.ClassName,\n \"math/abs\": FlowGraphAbsBlock.ClassName,\n \"math/sign\": FlowGraphSignBlock.ClassName,\n \"math/trunc\": FlowGraphTruncBlock.ClassName,\n \"math/floor\": FlowGraphFloorBlock.ClassName,\n \"math/ceil\": FlowGraphCeilBlock.ClassName,\n \"math/fract\": FlowGraphFractBlock.ClassName,\n \"math/neg\": FlowGraphNegBlock.ClassName,\n \"math/add\": FlowGraphAddBlock.ClassName,\n \"math/sub\": FlowGraphSubtractBlock.ClassName,\n \"math/mul\": FlowGraphMultiplyBlock.ClassName,\n \"math/div\": FlowGraphDivideBlock.ClassName,\n \"math/rem\": FlowGraphRemainderBlock.ClassName,\n \"math/min\": FlowGraphMinBlock.ClassName,\n \"math/max\": FlowGraphMaxBlock.ClassName,\n \"math/clamp\": FlowGraphClampBlock.ClassName,\n \"math/saturate\": FlowGraphSaturateBlock.ClassName,\n \"math/mix\": FlowGraphInterpolateBlock.ClassName,\n \"math/eq\": FlowGraphEqBlock.ClassName,\n \"math/lt\": FlowGraphLessThanBlock.ClassName,\n \"math/le\": FlowGraphLessThanOrEqualBlock.ClassName,\n \"math/gt\": FlowGraphGreaterThanBlock.ClassName,\n \"math/ge\": FlowGraphGreaterThanOrEqualBlock.ClassName,\n \"math/isnan\": FlowGraphIsNanBlock.ClassName,\n \"math/isinf\": FlowGraphIsInfBlock.ClassName,\n \"math/rad\": FlowGraphDegToRadBlock.ClassName,\n \"math/deg\": FlowGraphRadToDegBlock.ClassName,\n \"math/sin\": FlowGraphSinBlock.ClassName,\n \"math/cos\": FlowGraphCosBlock.ClassName,\n \"math/tan\": FlowGraphTanBlock.ClassName,\n \"math/asin\": FlowGraphAsinBlock.ClassName,\n \"math/acos\": FlowGraphAcosBlock.ClassName,\n \"math/atan\": FlowGraphAtanBlock.ClassName,\n \"math/atan2\": FlowGraphAtan2Block.ClassName,\n \"math/sinh\": FlowGraphSinhBlock.ClassName,\n \"math/cosh\": FlowGraphCoshBlock.ClassName,\n \"math/tanh\": FlowGraphTanhBlock.ClassName,\n \"math/asinh\": FlowGraphAsinhBlock.ClassName,\n \"math/acosh\": FlowGraphAcoshBlock.ClassName,\n \"math/atanh\": FlowGraphAtanhBlock.ClassName,\n \"math/exp\": FlowGraphExpBlock.ClassName,\n \"math/log\": FlowGraphLogBlock.ClassName,\n \"math/log2\": FlowGraphLog2Block.ClassName,\n \"math/log10\": FlowGraphLog10Block.ClassName,\n \"math/sqrt\": FlowGraphSqrtBlock.ClassName,\n \"math/cbrt\": FlowGraphCubeRootBlock.ClassName,\n \"math/pow\": FlowGraphPowBlock.ClassName,\n \"math/length\": FlowGraphLengthBlock.ClassName,\n \"math/normalize\": FlowGraphNormalizeBlock.ClassName,\n \"math/dot\": FlowGraphDotBlock.ClassName,\n \"math/cross\": FlowGraphCrossBlock.ClassName,\n \"math/rotate2d\": FlowGraphRotate2DBlock.ClassName,\n \"math/rotate3d\": FlowGraphRotate3DBlock.ClassName,\n \"math/transpose\": FlowGraphTransposeBlock.ClassName,\n \"math/determinant\": FlowGraphDeterminantBlock.ClassName,\n \"math/inverse\": FlowGraphInvertMatrixBlock.ClassName,\n \"math/matmul\": FlowGraphMatMulBlock.ClassName,\n \"math/not\": FlowGraphBitwiseNotBlock.ClassName,\n \"math/and\": FlowGraphBitwiseAndBlock.ClassName,\n \"math/or\": FlowGraphBitwiseOrBlock.ClassName,\n \"math/xor\": FlowGraphBitwiseXorBlock.ClassName,\n \"math/asr\": FlowGraphBitwiseRightShiftBlock.ClassName,\n \"math/lsl\": FlowGraphBitwiseLeftShiftBlock.ClassName,\n \"math/clz\": FlowGraphCountLeadingZerosBlock.ClassName,\n \"math/ctz\": FlowGraphCountTrailingZerosBlock.ClassName,\n \"math/popcnt\": FlowGraphCountOneBitsBlock.ClassName,\n};\nexport const gltfTypeToBabylonType = {\n float2: \"Vector2\",\n float3: \"Vector3\",\n float4: \"Vector4\",\n float4x4: \"Matrix\",\n int: \"FlowGraphInteger\",\n};\n//# sourceMappingURL=interactivityUtils.js.map","import { RandomGUID } from \"core/Misc/guid\";\nimport { gltfToFlowGraphTypeMap, gltfTypeToBabylonType } from \"./interactivityUtils\";\nfunction convertValueWithType(configObject, definition, context) {\n if (configObject.type !== undefined) {\n // get the type on the gltf definition\n const type = definition.types && definition.types[configObject.type];\n if (!type) {\n throw new Error(`${context}: Unknown type: ${configObject.type}`);\n }\n const signature = type.signature;\n if (!signature) {\n throw new Error(`${context}: Type ${configObject.type} has no signature`);\n }\n const convertedType = gltfTypeToBabylonType[signature];\n return {\n value: configObject.value,\n className: convertedType,\n };\n }\n else {\n return configObject.value;\n }\n}\nfunction convertConfiguration(gltfBlock, definition, id) {\n const converted = {};\n const configurationList = gltfBlock.configuration ?? [];\n for (const configObject of configurationList) {\n if (configObject.id === \"customEvent\") {\n const customEvent = definition.customEvents && definition.customEvents[configObject.value];\n if (!customEvent) {\n throw new Error(`/extensions/KHR_interactivity/nodes/${id}: Unknown custom event: ${configObject.value}`);\n }\n converted.eventId = customEvent.id;\n converted.eventData = customEvent.values.map((v) => v.id);\n }\n else if (configObject.id === \"variable\") {\n const variable = definition.variables && definition.variables[configObject.value];\n if (!variable) {\n throw new Error(`/extensions/KHR_interactivity/nodes/${id}: Unknown variable: ${configObject.value}`);\n }\n converted.variableName = variable.id;\n }\n else if (configObject.id === \"path\") {\n // Convert from a GLTF path to a reference to the Babylon.js object\n const pathValue = configObject.value;\n converted.path = pathValue;\n }\n else {\n converted[configObject.id] = convertValueWithType(configObject, definition, `/extensions/KHR_interactivity/nodes/${id}`);\n }\n }\n return converted;\n}\nfunction convertBlock(id, gltfBlock, definition) {\n const className = gltfToFlowGraphTypeMap[gltfBlock.type];\n if (!className) {\n throw new Error(`/extensions/KHR_interactivity/nodes/${id}: Unknown block type: ${gltfBlock.type}`);\n }\n const uniqueId = id.toString();\n const config = convertConfiguration(gltfBlock, definition, uniqueId);\n const metadata = gltfBlock.metadata;\n const dataInputs = [];\n const dataOutputs = [];\n const signalInputs = [];\n const signalOutputs = [];\n return {\n className,\n config,\n uniqueId,\n metadata,\n dataInputs,\n dataOutputs,\n signalInputs,\n signalOutputs,\n };\n}\n/**\n * @internal\n * Converts a glTF Interactivity Extension to a serialized flow graph.\n * @param gltf the interactivity data\n * @returns a serialized flow graph\n */\nexport function convertGLTFToSerializedFlowGraph(gltf) {\n // create an empty serialized context to store the values of the connections\n const context = {\n uniqueId: RandomGUID(),\n _userVariables: {},\n _connectionValues: {},\n };\n const executionContexts = [context];\n // Blocks converted to the flow graph json format\n const flowGraphJsonBlocks = [];\n for (let i = 0; i < gltf.nodes.length; i++) {\n const gltfBlock = gltf.nodes[i];\n const flowGraphJsonBlock = convertBlock(i, gltfBlock, gltf);\n flowGraphJsonBlocks.push(flowGraphJsonBlock);\n }\n // Parse the connections\n for (let i = 0; i < gltf.nodes.length; i++) {\n const gltfBlock = gltf.nodes[i];\n // get the block that was created in the previous step\n const fgBlock = flowGraphJsonBlocks[i];\n const gltfFlows = gltfBlock.flows ?? [];\n // for each output flow of the gltf block\n for (const flow of gltfFlows) {\n const socketOutName = flow.id;\n // create an output connection for the flow graph block\n const socketOut = {\n uniqueId: RandomGUID(),\n name: socketOutName,\n _connectionType: 1 /* FlowGraphConnectionType.Output */, // Output\n connectedPointIds: [],\n };\n fgBlock.signalOutputs.push(socketOut);\n // get the input node of this flow\n const nodeInId = flow.node;\n const nodeInSocketName = flow.socket;\n // find the corresponding flow graph node\n const nodeIn = flowGraphJsonBlocks[nodeInId];\n if (!nodeIn) {\n throw new Error(`/extensions/KHR_interactivity/nodes/${i}: Could not find node with id ${nodeInId} that connects its input with with node ${i}'s output ${socketOutName}`);\n }\n // in all of the flow graph input connections, find the one with the same name as the socket\n let socketIn = nodeIn.signalInputs.find((s) => s.name === nodeInSocketName);\n // if the socket doesn't exist, create the input socket for the connection\n if (!socketIn) {\n socketIn = {\n uniqueId: RandomGUID(),\n name: nodeInSocketName,\n _connectionType: 0 /* FlowGraphConnectionType.Input */, // Input\n connectedPointIds: [],\n };\n nodeIn.signalInputs.push(socketIn);\n }\n // connect the sockets\n socketIn.connectedPointIds.push(socketOut.uniqueId);\n socketOut.connectedPointIds.push(socketIn.uniqueId);\n }\n // for each input value of the gltf block\n const gltfValues = gltfBlock.values ?? [];\n for (const value of gltfValues) {\n const socketInName = value.id;\n // create an input data connection for the flow graph block\n const socketIn = {\n uniqueId: RandomGUID(),\n name: socketInName,\n _connectionType: 0 /* FlowGraphConnectionType.Input */,\n connectedPointIds: [],\n };\n fgBlock.dataInputs.push(socketIn);\n if (value.value !== undefined) {\n // if the value is set on the socket itself, store it in the context\n const convertedValue = convertValueWithType(value, gltf, `/extensions/KHR_interactivity/nodes/${i}`);\n // convertBlockInputType(gltfBlock, value, convertedValue, `/extensions/KHR_interactivity/nodes/${i}`);\n context._connectionValues[socketIn.uniqueId] = convertedValue;\n }\n else if (value.node !== undefined && value.socket !== undefined) {\n // if the value is connected with the output data of another socket, connect the two\n const nodeOutId = value.node;\n const nodeOutSocketName = value.socket;\n // find the flow graph node that owns that output socket\n const nodeOut = flowGraphJsonBlocks[nodeOutId];\n if (!nodeOut) {\n throw new Error(`/extensions/KHR_interactivity/nodes/${i}: Could not find node with id ${nodeOutId} that connects its output with node${i}'s input ${socketInName}`);\n }\n let socketOut = nodeOut.dataOutputs.find((s) => s.name === nodeOutSocketName);\n // if the socket doesn't exist, create it\n if (!socketOut) {\n socketOut = {\n uniqueId: RandomGUID(),\n name: nodeOutSocketName,\n _connectionType: 1 /* FlowGraphConnectionType.Output */,\n connectedPointIds: [],\n };\n nodeOut.dataOutputs.push(socketOut);\n }\n // connect the sockets\n socketIn.connectedPointIds.push(socketOut.uniqueId);\n socketOut.connectedPointIds.push(socketIn.uniqueId);\n }\n else {\n throw new Error(`/extensions/KHR_interactivity/nodes/${i}: Invalid socket ${socketInName} in node ${i}`);\n }\n }\n }\n const variables = gltf.variables ?? [];\n // Parse variables\n for (let i = 0; i < variables.length; i++) {\n const variable = variables[i];\n const variableName = variable.id;\n context._userVariables[variableName] = convertValueWithType(variable, gltf, `/extensions/KHR_interactivity/variables/${i}`);\n }\n return {\n allBlocks: flowGraphJsonBlocks,\n executionContexts,\n };\n}\n//# sourceMappingURL=interactivityFunctions.js.map","import { GLTFPathToObjectConverter } from \"./gltfPathToObjectConverter\";\n/**\n * Class to convert an interactivity pointer path to a smart object\n */\nexport class InteractivityPathToObjectConverter extends GLTFPathToObjectConverter {\n constructor(gltf) {\n super(gltf, gltfTree);\n }\n}\nconst nodesTree = {\n __array__: {\n __target__: true,\n translation: {\n type: \"Vector3\",\n get: (node) => {\n const babylonObject = node._babylonTransformNode;\n return babylonObject.position;\n },\n set: (value, node) => {\n const babylonObject = node._babylonTransformNode;\n babylonObject.position = value;\n },\n getObject(node) {\n return node._babylonTransformNode;\n },\n },\n },\n};\nconst gltfTree = {\n nodes: nodesTree,\n};\n//# sourceMappingURL=interactivityPathToObjectConverter.js.map","import { FlowGraphCoordinator } from \"core/FlowGraph/flowGraphCoordinator\";\nimport { FlowGraph } from \"core/FlowGraph/flowGraph\";\nimport { convertGLTFToSerializedFlowGraph } from \"./interactivityFunctions\";\nimport { InteractivityPathToObjectConverter } from \"./interactivityPathToObjectConverter\";\nimport { registerGLTFExtension, unregisterGLTFExtension } from \"../glTFLoaderExtensionRegistry\";\nconst NAME = \"KHR_interactivity\";\n/**\n * Loader extension for KHR_interactivity\n */\nexport class KHR_interactivity {\n /**\n * @internal\n * @param _loader\n */\n constructor(_loader) {\n this._loader = _loader;\n /**\n * The name of this extension.\n */\n this.name = NAME;\n this.enabled = this._loader.isExtensionUsed(NAME);\n this._pathConverter = new InteractivityPathToObjectConverter(this._loader.gltf);\n }\n dispose() {\n this._loader = null;\n delete this._pathConverter;\n }\n onReady() {\n if (!this._loader.babylonScene || !this._pathConverter) {\n return;\n }\n const scene = this._loader.babylonScene;\n const interactivityDefinition = this._loader.gltf.extensions?.KHR_interactivity;\n const json = convertGLTFToSerializedFlowGraph(interactivityDefinition);\n const coordinator = new FlowGraphCoordinator({ scene });\n FlowGraph.Parse(json, { coordinator, pathConverter: this._pathConverter });\n coordinator.start();\n }\n}\nunregisterGLTFExtension(NAME);\nregisterGLTFExtension(NAME, true, (loader) => new KHR_interactivity(loader));\n//# sourceMappingURL=KHR_interactivity.js.map"],"names":["FlowGraphConnectionType","FlowGraphConnection","constructor","name","_connectionType","_ownerBlock","this","_connectedPoint","uniqueId","RandomGUID","connectedPointIds","connectionType","_isSingularConnection","isConnected","length","connectTo","point","Error","push","serialize","serializationObject","className","getClassName","deserialize","Parse","ownerBlock","connection","Tools","Instantiate","FlowGraphInteger","value","_toInt","n","add","other","subtract","multiply","Math","imul","divide","ClassName","equals","RegisterClass","RichType","typeName","defaultValue","RichTypeAny","undefined","RichTypeNumber","RichTypeBoolean","RichTypeVector2","Vector2","Zero","RichTypeVector3","Vector3","Vector4","RichTypeMatrix","Matrix","Identity","Color3","Black","Quaternion","RichTypeFlowGraphInteger","FlowGraphDataConnection","richType","super","setValue","context","_setConnectionValue","_getValueOrDefault","_hasConnectionValue","_getConnectionValue","getValue","_notifyExecuteNode","_updateOutputs","obj","isMeshClassName","isVectorClassName","defaultValueSerializationFunction","key","asArray","defaultValueParseFunction","scene","intermediateValue","finalValue","getMeshByName","FromArray","Color4","parseVector","FlowGraphBlock","config","dataInputs","dataOutputs","_context","registerDataInput","input","registerDataOutput","output","getDataInput","find","i","getDataOutput","_valueSerializeFunction","serializedInput","serializedOutput","parseOptions","classType","parsedConfig","valueParseFunction","pathConverter","dataInput","dataOutput","metadata","FlowGraphSignalConnection","_activateSignal","_execute","_increaseExecutionId","FlowGraphExecutionBlock","signalInputs","signalOutputs","in","_registerSignalInput","_registerSignalOutput","getSignalInput","getSignalOutput","signalInput","signalOutput","FlowGraphAsyncExecutionBlock","out","done","_startPendingTasks","_preparePendingTasks","_addPendingBlock","FlowGraphEventBlock","FlowGraphContext","params","_userVariables","_executionVariables","_connectionValues","_pendingBlocks","_executionId","onNodeExecutedObservable","Observable","_configuration","hasVariable","setVariable","getVariable","userVariables","_getUniqueIdPrefixedName","_setExecutionVariable","block","_getExecutionVariable","_hasExecutionVariable","_deleteExecutionVariable","connectionPoint","configuration","_removePendingBlock","index","indexOf","splice","_clearPendingBlocks","_cancelPendingTasks","node","notifyObservers","executionId","valueSerializationFunction","options","result","graph","createContext","_isADescendantOf","mesh1","mesh2","parent","__decorate","prototype","FlowGraphMeshPickEventBlock","_getReferencedMesh","iAccessor","convert","path","mesh","info","getObject","object","AbstractMesh","pickObserver","getScene","onPointerObservable","pointerInfo","type","PointerEventTypes","POINTERPICK","pickInfo","pickedMesh","disposeObserver","onDisposeObservable","_onDispose","remove","FlowGraphState","TimerState","FlowGraph","_eventBlocks","_executionContexts","state","_scene","_coordinator","coordinator","_sceneDisposeObserver","dispose","getContext","addEventBlock","start","contextualOrder","_getContextualOrder","order","block1","visitAllBlocks","visitor","visitList","idsAddedToVisitList","Set","pop","dataIn","has","signalOut","valueSerializeFunction","allBlocks","serializedBlock","executionContexts","serializedContext","GetDataOutConnectionByUniqueId","blocks","dataOut","GetSignalInConnectionByUniqueId","signalIn","createGraph","serializedConnection","FlowGraphCoordinator","_flowGraphs","_customEventsMap","Map","SceneCoordinators","get","removeGraph","forEach","coordinators","serializedGraph","serializedObject","flowGraphs","getCustomEventObservable","id","observable","set","notifyCustomEvent","data","FlowGraphSceneReadyEventBlock","contextObserver","onReadyObservable","FlowGraphSceneTickEventBlock","onBeforeRenderObservable","FlowGraphExecutionBlockWithOutSignal","FlowGraphConsoleLogBlock","message","messageValue","Logger","Log","AdvancedTimer","onEachCountObservable","onTimerAbortedObservable","onTimerEndedObservable","onStateChangedObservable","_observer","_breakOnNextTick","_tick","payload","now","Date","_timer","_startTime","startTime","currentTime","deltaTime","completeRate","_timeToEnd","shouldBreak","_breakCondition","_stop","_setState","_contextObservable","contextObservable","_observableParameters","observableParameters","breakCondition","timeout","onEnded","onTick","onAborted","predicate","clearObservables","clear","timeToEnd","_state","mask","insertFirst","scope","stop","newState","aborted","FlowGraphTimerBlock","currentTimeout","timers","timer","_onEnded","Warn","FlowGraphSendCustomEventBlock","eventData","dataName","eventId","eventDatas","map","port","FlowGraphReceiveCustomEventBlock","_eventObserver","FlowGraphSequenceBlock","outFlows","numberOutputFlows","pathHasTemplatesRegex","RegExp","FlowGraphPathConverterComponent","templatedInputs","match","exec","matchGroup","getAccessor","finalPath","templatedInput","valueToReplace","replace","toString","FlowGraphGetPropertyBlock","templateComponent","accessorContainer","FlowGraphSetPropertyBlock","a","accessor","cacheName","cacheExecIdName","FlowGraphCachedOperationBlock","outputRichType","cachedExecutionId","cachedValue","calculatedValue","_doOperation","FlowGraphBinaryOperationBlock","leftRichType","rightRichType","resultRichType","_operation","_className","b","FlowGraphConstantOperationBlock","FlowGraphUnaryOperationBlock","inputRichType","FlowGraphTernaryOperationBlock","t1Type","t2Type","t3Type","c","_getClassNameOf","v","_areSameVectorClass","className2","_areSameMatrixClass","_areSameIntegerClass","FlowGraphAddBlock","_polymorphicAdd","aClassName","bClassName","FlowGraphSubtractBlock","scale","FlowGraphMultiplyBlock","_polymorphicMultiply","FromValues","m","FlowGraphDivideBlock","_polymorphicDivide","FlowGraphRandomBlock","random","FlowGraphDotBlock","_polymorphicDot","Dot","FlowGraphEBlock","E","FlowGraphPiBlock","PI","FlowGraphInfBlock","Number","POSITIVE_INFINITY","FlowGraphNaNBlock","NaN","_componentWiseUnaryOperation","op","x","y","z","w","FlowGraphAbsBlock","_polymorphicAbs","abs","FlowGraphSignBlock","_polymorphicSign","sign","FlowGraphTruncBlock","_polymorphicTrunc","trunc","FlowGraphFloorBlock","_polymorphicFloor","floor","FlowGraphCeilBlock","_polymorphicCeiling","ceil","FlowGraphFractBlock","_polymorphicFract","FlowGraphNegBlock","_polymorphicNeg","_componentWiseBinaryOperation","FlowGraphRemainderBlock","_polymorphicRemainder","FlowGraphMinBlock","_polymorphicMin","min","FlowGraphMaxBlock","_polymorphicMax","max","_clamp","_componentWiseTernaryOperation","FlowGraphClampBlock","_polymorphicClamp","_saturate","FlowGraphSaturateBlock","_polymorphicSaturate","FlowGraphInterpolateBlock","_polymorphicInterpolate","_interpolate","FlowGraphEqBlock","_polymorphicEq","_comparisonOperators","FlowGraphLessThanBlock","_polymorphicLessThan","FlowGraphLessThanOrEqualBlock","_polymorphicLessThanOrEqual","FlowGraphGreaterThanBlock","_polymorphicGreaterThan","FlowGraphGreaterThanOrEqualBlock","_polymorphicGreaterThanOrEqual","FlowGraphIsNanBlock","_polymorphicIsNan","isNaN","FlowGraphIsInfBlock","_polymorphicIsInf","isFinite","FlowGraphDegToRadBlock","_polymorphicDegToRad","_degToRad","FlowGraphRadToDegBlock","_polymorphicRadToDeg","_radToDeg","FlowGraphSinBlock","_polymorphicSin","sin","FlowGraphCosBlock","_polymorphicCos","cos","FlowGraphTanBlock","_polymorphicTan","tan","FlowGraphAsinBlock","_polymorphicAsin","asin","FlowGraphAcosBlock","_polymorphicAcos","acos","FlowGraphAtanBlock","_polymorphicAtan","atan","FlowGraphAtan2Block","_polymorphicAtan2","atan2","FlowGraphSinhBlock","_polymorphicSinh","sinh","FlowGraphCoshBlock","_polymorphicCosh","cosh","FlowGraphTanhBlock","_polymorphicTanh","tanh","FlowGraphAsinhBlock","_polymorphicAsinh","asinh","FlowGraphAcoshBlock","_polymorphicAcosh","acosh","FlowGraphAtanhBlock","_polymorphicAtanh","atanh","FlowGraphExpBlock","_polymorphicExp","exp","FlowGraphLogBlock","_polymorphicLog","log","FlowGraphLog2Block","_polymorphicLog2","log2","FlowGraphLog10Block","_polymorphicLog10","log10","FlowGraphSqrtBlock","_polymorphicSqrt","sqrt","FlowGraphCubeRootBlock","_polymorphicCubeRoot","cbrt","FlowGraphPowBlock","_polymorphicPow","pow","FlowGraphLengthBlock","_polymorphicLength","FlowGraphNormalizeBlock","_polymorphicNormalize","normalize","FlowGraphCrossBlock","Cross","FlowGraphRotate2DBlock","Transform","RotationZ","FlowGraphRotate3DBlock","TransformCoordinates","RotationAxis","FlowGraphTransposeBlock","Transpose","FlowGraphDeterminantBlock","determinant","FlowGraphInvertMatrixBlock","Invert","FlowGraphMatMulBlock","FlowGraphBitwiseNotBlock","FlowGraphBitwiseAndBlock","FlowGraphBitwiseOrBlock","FlowGraphBitwiseXorBlock","FlowGraphBitwiseLeftShiftBlock","FlowGraphBitwiseRightShiftBlock","FlowGraphCountLeadingZerosBlock","clz32","FlowGraphCountTrailingZerosBlock","FlowGraphCountOneBitsBlock","_countOnes","FlowGraphDoNBlock","startIndex","reset","callingSignal","currentCountValue","FlowGraphGetVariableBlock","variableName","variableNameValue","FlowGraphSetVariableBlock","inputValue","FlowGraphWhileLoopBlock","condition","loopBody","_callingSignal","conditionValue","isDo","gltfToFlowGraphTypeMap","gltfTypeToBabylonType","float2","float3","float4","float4x4","int","convertValueWithType","configObject","definition","types","signature","convertedType","convertBlock","gltfBlock","converted","configurationList","customEvent","customEvents","values","variable","variables","pathValue","convertConfiguration","InteractivityPathToObjectConverter","GLTFPathToObjectConverter","gltf","gltfTree","nodes","__array__","__target__","translation","_babylonTransformNode","position","NAME","KHR_interactivity","_loader","enabled","isExtensionUsed","_pathConverter","onReady","babylonScene","interactivityDefinition","extensions","json","flowGraphJsonBlocks","flowGraphJsonBlock","fgBlock","gltfFlows","flows","flow","socketOutName","socketOut","nodeInId","nodeInSocketName","socket","nodeIn","socketIn","s","gltfValues","socketInName","convertedValue","nodeOutId","nodeOutSocketName","nodeOut","convertGLTFToSerializedFlowGraph","unregisterGLTFExtension","registerGLTFExtension","loader"],"mappings":"qPAMO,IAAIA,GACX,SAAWA,GACPA,EAAwBA,EAA+B,MAAI,GAAK,QAChEA,EAAwBA,EAAgC,OAAI,GAAK,QACpE,CAHD,CAGGA,IAA4BA,EAA0B,CAAA,IAKlD,MAAMC,EACT,WAAAC,CAAYC,EAAMC,EACFC,GACZC,KAAKD,YAAcA,EAEnBC,KAAKC,gBAAkB,GAIvBD,KAAKE,SAAWC,IAOhBH,KAAKI,kBAAoB,GACzBJ,KAAKH,KAAOA,EACZG,KAAKF,gBAAkBA,CAC/B,CAII,kBAAIO,GACA,OAAOL,KAAKF,eACpB,CAKI,qBAAAQ,GACI,OAAO,CACf,CAKI,WAAAC,GACI,OAAOP,KAAKC,gBAAgBO,OAAS,CAC7C,CAKI,SAAAC,CAAUC,GACN,GAAIV,KAAKF,kBAAoBY,EAAMZ,gBAC/B,MAAM,IAAIa,MAAM,qCAAqCX,KAAKK,kBAE9D,GAAKL,KAAKM,yBAA2BN,KAAKC,gBAAgBO,OAAS,GAAOE,EAAMJ,yBAA2BI,EAAMT,gBAAgBO,OAAS,EACtI,MAAM,IAAIG,MAAM,+CAEpBX,KAAKC,gBAAgBW,KAAKF,GAC1BA,EAAMT,gBAAgBW,KAAKZ,KACnC,CAKI,SAAAa,CAAUC,EAAsB,IAC5BA,EAAoBZ,SAAWF,KAAKE,SACpCY,EAAoBjB,KAAOG,KAAKH,KAChCiB,EAAoBhB,gBAAkBE,KAAKF,gBAC3CgB,EAAoBV,kBAAoB,GACxCU,EAAoBC,UAAYf,KAAKgB,eACrC,IAAK,MAAMN,KAASV,KAAKC,gBACrBa,EAAoBV,kBAAkBQ,KAAKF,EAAMR,SAE7D,CAII,YAAAc,GACI,MAAO,cACf,CAKI,WAAAC,CAAYH,GACRd,KAAKE,SAAWY,EAAoBZ,SACpCF,KAAKH,KAAOiB,EAAoBjB,KAChCG,KAAKF,gBAAkBgB,EAAoBhB,gBAC3CE,KAAKI,kBAAoBU,EAAoBV,iBACrD,CAOI,YAAOc,CAAMJ,EAAsB,CAAE,EAAEK,GACnC,MACMC,EAAa,IADNC,EAAMC,YAAYR,EAAoBC,WAChC,CAASD,EAAoBjB,KAAMiB,EAAoBhB,gBAAiBqB,GAE3F,OADAC,EAAWH,YAAYH,GAChBM,CACf,ECzGO,MAAMG,EACT,WAAA3B,CAAY4B,GACRxB,KAAKwB,MAAQxB,KAAKyB,OAAOD,EACjC,CAMI,MAAAC,CAAOC,GACH,OAAW,EAAJA,CACf,CAMI,GAAAC,CAAIC,GACA,OAAO,IAAIL,EAAiBvB,KAAKwB,MAAQI,EAAMJ,MACvD,CAMI,QAAAK,CAASD,GACL,OAAO,IAAIL,EAAiBvB,KAAKwB,MAAQI,EAAMJ,MACvD,CAMI,QAAAM,CAASF,GACL,OAAO,IAAIL,EAAiBQ,KAAKC,KAAKhC,KAAKwB,MAAOI,EAAMJ,OAChE,CAMI,MAAAS,CAAOL,GACH,OAAO,IAAIL,EAAiBvB,KAAKwB,MAAQI,EAAMJ,MACvD,CAKI,YAAAR,GACI,OAAOO,EAAiBW,SAChC,CAMI,MAAAC,CAAOP,GACH,OAAO5B,KAAKwB,QAAUI,EAAMJ,KACpC,CAMI,YAAON,CAAMJ,GACT,OAAO,IAAIS,EAAiBT,EAAoBU,MACxD,EAEAD,EAAiBW,UAAY,mBAC7BE,EAAc,mBAAoBb,GClE3B,MAAMc,EACT,WAAAzC,CAIA0C,EAIAC,GACIvC,KAAKsC,SAAWA,EAChBtC,KAAKuC,aAAeA,CAC5B,CAKI,SAAA1B,CAAUC,GACNA,EAAoBwB,SAAWtC,KAAKsC,SACpCxB,EAAoByB,aAAevC,KAAKuC,YAChD,CAMI,YAAOrB,CAAMJ,GACT,OAAO,IAAIuB,EAASvB,EAAoBwB,SAAUxB,EAAoByB,aAC9E,EAEO,MAAMC,EAAc,IAAIH,EAAS,WAAOI,GAElCC,EAAiB,IAAIL,EAAS,SAAU,GACxCM,EAAkB,IAAIN,EAAS,WAAW,GAC1CO,EAAkB,IAAIP,EAAS,UAAWQ,EAAQC,QAClDC,EAAkB,IAAIV,EAAS,UAAWW,EAAQF,QAChC,IAAIT,EAAS,UAAWY,EAAQH,QACxD,MAAMI,EAAiB,IAAIb,EAAS,SAAUc,EAAOC,YAC9B,IAAIf,EAAS,SAAUgB,EAAOC,SAE1B,IAAIjB,EAAS,aAAckB,EAAWH,YACjE,MAAMI,EAA2B,IAAInB,EAAS,mBAAoB,IAAId,EAAiB,ICvCvF,MAAMkC,UAAgC9D,EAQzC,WAAAC,CAAYC,EAAMQ,EAAgBc,EAIlCuC,GACIC,MAAM9D,EAAMQ,EAAgBc,GAC5BnB,KAAK0D,SAAWA,CACxB,CAMI,qBAAApD,GACI,OAA+B,IAAxBN,KAAKK,cACpB,CAMI,QAAAuD,CAASpC,EAAOqC,GACZA,EAAQC,oBAAoB9D,KAAMwB,EAC1C,CAKI,SAAAf,CAAUC,GACNiD,MAAMlD,UAAUC,EACxB,CACI,kBAAAqD,CAAmBF,GACf,OAAIA,EAAQG,oBAAoBhE,MACrB6D,EAAQI,oBAAoBjE,MAG5BA,KAAK0D,SAASnB,YAEjC,CAMI,QAAA2B,CAASL,GACL,OAA4B,IAAxB7D,KAAKK,gBACLwD,EAAQM,mBAAmBnE,KAAKD,aAChCC,KAAKD,YAAYqE,eAAeP,GACzB7D,KAAK+D,mBAAmBF,IAE9B7D,KAAKO,cAICP,KAAKC,gBAAgB,GAAGiE,SAASL,GAHjC7D,KAAK+D,mBAAmBF,EAK3C,CAII,YAAA7C,GACI,MAAO,kBACf,CAKI,SAAAH,CAAUC,EAAsB,IAC5B6C,MAAM9C,UAAUC,GAChBA,EAAoB4C,SAAW,CAAE,EACjC1D,KAAK0D,SAAS7C,UAAUC,EAAoB4C,SACpD,CAOI,YAAOxC,CAAMJ,EAAqBK,GAC9B,MAAMkD,EAAM1E,EAAoBuB,MAAMJ,EAAqBK,GAE3D,OADAkD,EAAIX,SAAWrB,EAASnB,MAAMJ,EAAoB4C,UAC3CW,CACf,ECjGA,SAASC,EAAgBvD,GACrB,MAAsB,SAAdA,GACU,iBAAdA,GACc,eAAdA,GACc,iBAAdA,GACc,cAAdA,GACc,iBAAdA,GACc,oBAAdA,GACc,cAAdA,CACR,CACA,SAASwD,EAAkBxD,GACvB,MAAqB,YAAdA,GAAyC,YAAdA,GAAyC,YAAdA,GAAyC,eAAdA,GAA4C,WAAdA,GAAwC,WAAdA,CACpJ,CA8BO,SAASyD,EAAkCC,EAAKjD,EAAOV,GAC1D,MAAMC,EAAYS,GAAOR,kBAAoB,GACzCsD,EAAgBvD,GAChBD,EAAoB2D,GAAO,CACvB5E,KAAM2B,EAAM3B,KACZkB,aAGCwD,EAAkBxD,GACvBD,EAAoB2D,GAAO,CACvBjD,MAAOA,EAAMkD,UACb3D,aAIJD,EAAoB2D,GAAOjD,CAEnC,CAQO,SAASmD,EAA0BF,EAAK3D,EAAqB8D,GAChE,MAAMC,EAAoB/D,EAAoB2D,GAC9C,IAAIK,EACJ,MAAM/D,EAAY8D,GAAmB9D,UAmBrC,OAjBI+D,EADAR,EAAgBvD,GACH6D,EAAMG,cAAcF,EAAkBhF,MAE9C0E,EAAkBxD,GA7D/B,SAAqBA,EAAWS,GAC5B,GAAkB,YAAdT,EACA,OAAO8B,EAAQmC,UAAUxD,GAExB,GAAkB,YAAdT,EACL,OAAOiC,EAAQgC,UAAUxD,GAExB,GAAkB,YAAdT,EACL,OAAOkC,EAAQ+B,UAAUxD,GAExB,GAAkB,eAAdT,EACL,OAAOwC,EAAWyB,UAAUxD,GAE3B,GAAkB,WAAdT,EACL,OAAO,IAAIsC,EAAO7B,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAE3C,GAAkB,WAAdT,EACL,OAAO,IAAIkE,EAAOzD,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAGtD,MAAM,IAAIb,MAAM,6BAA6BI,IAErD,CAwCqBmE,CAAYnE,EAAW8D,EAAkBrD,OAEnC,WAAdT,EACQoC,EAAO6B,UAAUH,EAAkBrD,OAE3CT,IAAcQ,EAAiBW,UACvBX,EAAiBL,MAAM2D,GAE/BA,QAAiDpC,IAA5BoC,EAAkBrD,MAC/BqD,EAAkBrD,MAGlBqD,EAEVC,CACX,CDSA1C,EAAc,mBAAoBqB,GE5F3B,MAAM0B,EAIT,WAAAvF,CAIAwF,GACIpF,KAAKoF,OAASA,EAIdpF,KAAKE,SAAWC,IAChBH,KAAKH,KAAOG,KAAKoF,QAAQvF,MAAQG,KAAKgB,eACtChB,KAAKqF,WAAa,GAClBrF,KAAKsF,YAAc,EAC3B,CAII,cAAAlB,CAAemB,GAEnB,CAOI,iBAAAC,CAAkB3F,EAAM6D,GACpB,MAAM+B,EAAQ,IAAIhC,EAAwB5D,EAAM,EAAuCG,KAAM0D,GAE7F,OADA1D,KAAKqF,WAAWzE,KAAK6E,GACdA,CACf,CAOI,kBAAAC,CAAmB7F,EAAM6D,GACrB,MAAMiC,EAAS,IAAIlC,EAAwB5D,EAAM,EAAwCG,KAAM0D,GAE/F,OADA1D,KAAKsF,YAAY1E,KAAK+E,GACfA,CACf,CAMI,YAAAC,CAAa/F,GACT,OAAOG,KAAKqF,WAAWQ,MAAMC,GAAMA,EAAEjG,OAASA,GACtD,CAMI,aAAAkG,CAAclG,GACV,OAAOG,KAAKsF,YAAYO,MAAMC,GAAMA,EAAEjG,OAASA,GACvD,CAMI,SAAAgB,CAAUC,EAAsB,GAAIkF,EAA0BxB,GAC1D1D,EAAoBZ,SAAWF,KAAKE,SACpCY,EAAoBsE,OAAS,CAAE,EAC3BpF,KAAKoF,SACLtE,EAAoBsE,OAAa,KAAIpF,KAAKoF,OAAOvF,MAErDiB,EAAoBuE,WAAa,GACjCvE,EAAoBwE,YAAc,GAClCxE,EAAoBC,UAAYf,KAAKgB,eACrC,IAAK,MAAMyE,KAASzF,KAAKqF,WAAY,CACjC,MAAMY,EAAkB,CAAE,EAC1BR,EAAM5E,UAAUoF,GAChBnF,EAAoBuE,WAAWzE,KAAKqF,EAChD,CACQ,IAAK,MAAMN,KAAU3F,KAAKsF,YAAa,CACnC,MAAMY,EAAmB,CAAE,EAC3BP,EAAO9E,UAAUqF,GACjBpF,EAAoBwE,YAAY1E,KAAKsF,EACjD,CACA,CAKI,YAAAlF,GACI,MAAO,SACf,CAOI,YAAOE,CAAMJ,EAAqBqF,GAC9B,MAAMC,EAAY/E,EAAMC,YAAYR,EAAoBC,WAClDsF,EAAe,CAAE,EACjBC,EAAqBH,EAAaG,oBAAsB3B,EAC9D,GAAI7D,EAAoBsE,OACpB,IAAK,MAAMX,KAAO3D,EAAoBsE,OAClCiB,EAAa5B,GAAO6B,EAAmB7B,EAAK3D,EAAoBsE,OAAQe,EAAavB,ODf9F,IAA4B7D,GAGV,wBAHUA,ECkBJD,EAAoBC,YDfY,uBAAdA,GAAoD,yBAAdA,GAAsD,yBAAdA,KCgBnHsF,EAAaE,cAAgBJ,EAAaI,eAE9C,MAAMlC,EAAM,IAAI+B,EAAUC,GAC1BhC,EAAInE,SAAWY,EAAoBZ,SACnC,IAAK,IAAI4F,EAAI,EAAGA,EAAIhF,EAAoBuE,WAAW7E,OAAQsF,IAAK,CAC5D,MAAMU,EAAYnC,EAAIuB,aAAa9E,EAAoBuE,WAAWS,GAAGjG,MACrE,IAAI2G,EAIA,MAAM,IAAI7F,MAAM,uCAAyCG,EAAoBuE,WAAWS,GAAGjG,KAAO,aAAeiB,EAAoBC,WAHrIyF,EAAUvF,YAAYH,EAAoBuE,WAAWS,GAKrE,CACQ,IAAK,IAAIA,EAAI,EAAGA,EAAIhF,EAAoBwE,YAAY9E,OAAQsF,IAAK,CAC7D,MAAMW,EAAapC,EAAI0B,cAAcjF,EAAoBwE,YAAYQ,GAAGjG,MACxE,IAAI4G,EAIA,MAAM,IAAI9F,MAAM,wCAA0CG,EAAoBwE,YAAYQ,GAAGjG,KAAO,aAAeiB,EAAoBC,WAHvI0F,EAAWxF,YAAYH,EAAoBwE,YAAYQ,GAKvE,CAGQ,OAFAzB,EAAIqC,SAAW5F,EAAoB4F,SACnCrC,EAAIpD,aAAeoD,EAAIpD,YAAYH,GAC5BuD,CACf,ECzIO,MAAMsC,UAAkChH,EAO3C,qBAAAW,GACI,OAA+B,IAAxBN,KAAKK,cACpB,CAII,eAAAuG,CAAgB/C,GACgB,IAAxB7D,KAAKK,gBACLwD,EAAQM,mBAAmBnE,KAAKD,aAChCC,KAAKD,YAAY8G,SAAShD,EAAS7D,MACnC6D,EAAQiD,wBAGR9G,KAAKC,gBAAgB,IAAI2G,gBAAgB/C,EAErD,EAEAzB,EAAc,4BAA6BuE,GCzBpC,MAAMI,UAAgC5B,EACzC,WAAAvF,CAAYwF,GACRzB,MAAMyB,GACNpF,KAAKgH,aAAe,GACpBhH,KAAKiH,cAAgB,GACrBjH,KAAKkH,GAAKlH,KAAKmH,qBAAqB,KAC5C,CACI,oBAAAA,CAAqBtH,GACjB,MAAM4F,EAAQ,IAAIkB,EAA0B9G,EAAM,EAAuCG,MAEzF,OADAA,KAAKgH,aAAapG,KAAK6E,GAChBA,CACf,CACI,qBAAA2B,CAAsBvH,GAClB,MAAM8F,EAAS,IAAIgB,EAA0B9G,EAAM,EAAwCG,MAE3F,OADAA,KAAKiH,cAAcrG,KAAK+E,GACjBA,CACf,CAMI,cAAA0B,CAAexH,GACX,OAAOG,KAAKgH,aAAanB,MAAMJ,GAAUA,EAAM5F,OAASA,GAChE,CAMI,eAAAyH,CAAgBzH,GACZ,OAAOG,KAAKiH,cAAcpB,MAAMF,GAAWA,EAAO9F,OAASA,GACnE,CAKI,SAAAgB,CAAUC,EAAsB,IAC5B6C,MAAM9C,UAAUC,GAChBA,EAAoBkG,aAAe,GACnClG,EAAoBmG,cAAgB,GACpC,IAAK,MAAMxB,KAASzF,KAAKgH,aAAc,CACnC,MAAMf,EAAkB,CAAE,EAC1BR,EAAM5E,UAAUoF,GAChBnF,EAAoBkG,aAAapG,KAAKqF,EAClD,CACQ,IAAK,MAAMN,KAAU3F,KAAKiH,cAAe,CACrC,MAAMf,EAAmB,CAAE,EAC3BP,EAAO9E,UAAUqF,GACjBpF,EAAoBmG,cAAcrG,KAAKsF,EACnD,CACA,CAKI,WAAAjF,CAAYH,GACR,IAAK,IAAIgF,EAAI,EAAGA,EAAIhF,EAAoBkG,aAAaxG,OAAQsF,IAAK,CAC9D,MAAMyB,EAAcvH,KAAKqH,eAAevG,EAAoBkG,aAAalB,GAAGjG,MAC5E,IAAI0H,EAIA,MAAM,IAAI5G,MAAM,yCAA2CG,EAAoBkG,aAAalB,GAAGjG,KAAO,aAAeiB,EAAoBC,WAHzIwG,EAAYtG,YAAYH,EAAoBkG,aAAalB,GAKzE,CACQ,IAAK,IAAIA,EAAI,EAAGA,EAAIhF,EAAoBmG,cAAczG,OAAQsF,IAAK,CAC/D,MAAM0B,EAAexH,KAAKsH,gBAAgBxG,EAAoBmG,cAAcnB,GAAGjG,MAC/E,IAAI2H,EAIA,MAAM,IAAI7G,MAAM,0CAA4CG,EAAoBmG,cAAcnB,GAAGjG,KAAO,aAAeiB,EAAoBC,WAH3IyG,EAAavG,YAAYH,EAAoBmG,cAAcnB,GAK3E,CACA,CAII,YAAA9E,GACI,MAAO,kBACf,EClFO,MAAMyG,UAAqCV,EAC9C,WAAAnH,CAAYwF,GACRzB,MAAMyB,GACNpF,KAAK0H,IAAM1H,KAAKoH,sBAAsB,OACtCpH,KAAK2H,KAAO3H,KAAKoH,sBAAsB,OAC/C,CAKI,kBAAAQ,CAAmB/D,GACf7D,KAAK6H,qBAAqBhE,GAC1BA,EAAQiE,iBAAiB9H,KACjC,ECbO,MAAM+H,UAA4BN,EAIrC,QAAAZ,CAAShD,GACLA,EAAQM,mBAAmBnE,MAC3BA,KAAK0H,IAAId,gBAAgB/C,EACjC,ECDO,MAAMmE,EACT,WAAApI,CAAYqI,GAIRjI,KAAKE,SAAWC,IAIhBH,KAAKkI,eAAiB,CAAE,EAIxBlI,KAAKmI,oBAAsB,CAAE,EAI7BnI,KAAKoI,kBAAoB,CAAE,EAI3BpI,KAAKqI,eAAiB,GAKtBrI,KAAKsI,aAAe,EAIpBtI,KAAKuI,yBAA2B,IAAIC,EACpCxI,KAAKyI,eAAiBR,CAC9B,CAMI,WAAAS,CAAY7I,GACR,OAAOA,KAAQG,KAAKkI,cAC5B,CAMI,WAAAS,CAAY9I,EAAM2B,GACdxB,KAAKkI,eAAerI,GAAQ2B,CACpC,CAMI,WAAAoH,CAAY/I,GACR,OAAOG,KAAKkI,eAAerI,EACnC,CAII,iBAAIgJ,GACA,OAAO7I,KAAKkI,cACpB,CACI,wBAAAY,CAAyBzE,EAAKxE,GAC1B,MAAO,GAAGwE,EAAInE,YAAYL,GAClC,CAOI,qBAAAkJ,CAAsBC,EAAOnJ,EAAM2B,GAC/BxB,KAAKmI,oBAAoBnI,KAAK8I,yBAAyBE,EAAOnJ,IAAS2B,CAC/E,CAOI,qBAAAyH,CAAsBD,EAAOnJ,EAAM0C,GAC/B,OAAIvC,KAAKkJ,sBAAsBF,EAAOnJ,GAC3BG,KAAKmI,oBAAoBnI,KAAK8I,yBAAyBE,EAAOnJ,IAG9D0C,CAEnB,CAOI,wBAAA4G,CAAyBH,EAAOnJ,UACrBG,KAAKmI,oBAAoBnI,KAAK8I,yBAAyBE,EAAOnJ,GAC7E,CAQI,qBAAAqJ,CAAsBF,EAAOnJ,GACzB,OAAOG,KAAK8I,yBAAyBE,EAAOnJ,KAASG,KAAKmI,mBAClE,CAOI,mBAAAnE,CAAoBoF,GAChB,OAAOA,EAAgBlJ,YAAYF,KAAKoI,iBAChD,CAOI,mBAAAtE,CAAoBsF,EAAiB5H,GACjCxB,KAAKoI,kBAAkBgB,EAAgBlJ,UAAYsB,CAC3D,CAOI,mBAAAyC,CAAoBmF,GAChB,OAAOpJ,KAAKoI,kBAAkBgB,EAAgBlJ,SACtD,CAOI,iBAAImJ,GACA,OAAOrJ,KAAKyI,cACpB,CAMI,gBAAAX,CAAiBkB,GACbhJ,KAAKqI,eAAezH,KAAKoI,EACjC,CAMI,mBAAAM,CAAoBN,GAChB,MAAMO,EAAQvJ,KAAKqI,eAAemB,QAAQR,IAC3B,IAAXO,GACAvJ,KAAKqI,eAAeoB,OAAOF,EAAO,EAE9C,CAKI,mBAAAG,GACI,IAAK,MAAMV,KAAShJ,KAAKqI,eACrBW,EAAMW,oBAAoB3J,MAE9BA,KAAKqI,eAAe7H,OAAS,CACrC,CAMI,kBAAA2D,CAAmByF,GACf5J,KAAKuI,yBAAyBsB,gBAAgBD,EACtD,CAII,oBAAA9C,GACI9G,KAAKsI,cACb,CAKI,eAAIwB,GACA,OAAO9J,KAAKsI,YACpB,CAMI,SAAAzH,CAAUC,EAAsB,GAAIiJ,EAA6BvF,GAC7D1D,EAAoBZ,SAAWF,KAAKE,SACpCY,EAAoBoH,eAAiB,CAAE,EACvC,IAAK,MAAMzD,KAAOzE,KAAKkI,eACnB6B,EAA2BtF,EAAKzE,KAAKkI,eAAezD,GAAM3D,EAAoBoH,gBAElFpH,EAAoBsH,kBAAoB,CAAE,EAC1C,IAAK,MAAM3D,KAAOzE,KAAKoI,kBACnB2B,EAA2BtF,EAAKzE,KAAKoI,kBAAkB3D,GAAM3D,EAAoBsH,kBAE7F,CAII,YAAApH,GACI,MAAO,WACf,CAOI,YAAOE,CAAMJ,EAAqBkJ,GAC9B,MAAMC,EAASD,EAAQE,MAAMC,gBACvB7D,EAAqB0D,EAAQ1D,oBAAsB3B,EACzDsF,EAAO/J,SAAWY,EAAoBZ,SACtC,IAAK,MAAMuE,KAAO3D,EAAoBoH,eAAgB,CAClD,MAAM1G,EAAQ8E,EAAmB7B,EAAK3D,EAAoBoH,eAAgB+B,EAAOxB,eAAe7D,OAChGqF,EAAO/B,eAAezD,GAAOjD,CACzC,CACQ,IAAK,MAAMiD,KAAO3D,EAAoBsH,kBAAmB,CACrD,MAAM5G,EAAQ8E,EAAmB7B,EAAK3D,EAAoBsH,kBAAmB6B,EAAOxB,eAAe7D,OACnGqF,EAAO7B,kBAAkB3D,GAAOjD,CAC5C,CACQ,OAAOyI,CACf,EChPO,SAASG,EAAiBC,EAAOC,GACpC,SAAUD,EAAME,QAAWF,EAAME,SAAWD,IAASF,EAAiBC,EAAME,OAAQD,GACxF,CDgPAE,EAAW,CACP3J,KACDmH,EAAiByC,UAAW,gBAAY,GElPpC,MAAMC,UAAoC3C,EAC7C,WAAAnI,CAIAwF,GACIzB,MAAMyB,GACNpF,KAAKoF,OAASA,CACtB,CACI,kBAAAuF,GACI,MAAMC,EAAY5K,KAAKoF,OAAOmB,cAAcsE,QAAQ7K,KAAKoF,OAAO0F,MAC1DC,EAAOH,EAAUI,KAAKC,UAAUL,EAAUM,QAChD,KAAKH,GAAUA,aAAgBI,GAC3B,MAAM,IAAIxK,MAAM,+CAEpB,OAAOoK,CACf,CAII,oBAAAlD,CAAqBhE,GACjB,IAAIuH,EAAevH,EAAQoF,sBAAsBjJ,KAAM,oBACvD,IAAKoL,EAAc,CACf,MAAML,EAAO/K,KAAK2K,qBAClB9G,EAAQkF,sBAAsB/I,KAAM,OAAQ+K,GAC5CK,EAAeL,EAAKM,WAAWC,oBAAoB3J,KAAK4J,IAChDA,EAAYC,OAASC,EAAkBC,aACvCH,EAAYI,UAAUC,aACrBL,EAAYI,UAAUC,aAAeb,GAAQX,EAAiBmB,EAAYI,UAAUC,WAAYb,KACjG/K,KAAK6G,SAAShD,EAClC,IAEY,MAAMgI,EAAkBd,EAAKe,oBAAoBnK,KAAI,IAAM3B,KAAK+L,aAChElI,EAAQkF,sBAAsB/I,KAAM,mBAAoBoL,GACxDvH,EAAQkF,sBAAsB/I,KAAM,sBAAuB6L,EACvE,CACA,CACI,UAAAE,CAAWlI,GACP7D,KAAK2J,oBAAoB9F,GACzBA,EAAQyF,oBAAoBtJ,KACpC,CAII,mBAAA2J,CAAoB9F,GAChB,MAAMkH,EAAOlH,EAAQoF,sBAAsBjJ,KAAM,QAC3CoL,EAAevH,EAAQoF,sBAAsBjJ,KAAM,oBACnD6L,EAAkBhI,EAAQoF,sBAAsBjJ,KAAM,uBAC5D+K,EAAKM,WAAWC,oBAAoBU,OAAOZ,GAC3CL,EAAKe,oBAAoBE,OAAOH,GAChChI,EAAQsF,yBAAyBnJ,KAAM,QACvC6D,EAAQsF,yBAAyBnJ,KAAM,oBACvC6D,EAAQsF,yBAAyBnJ,KAAM,sBAC/C,CAII,YAAAgB,GACI,OAAO0J,EAA4BxI,SAC3C,CAKI,SAAArB,CAAUC,GACN6C,MAAM9C,UAAUC,GAChBA,EAAoBsE,OAAO0F,KAAO9K,KAAKoF,OAAO0F,IACtD,ECrEO,IAAImB,ECHAC,EF6EXxB,EAA4BxI,UAAY,uBACxCE,EAAcsI,EAA4BxI,UAAWwI,GC1ErD,SAAWuB,GAIPA,EAAeA,EAAwB,QAAI,GAAK,UAIhDA,EAAeA,EAAwB,QAAI,GAAK,SACnD,CATD,CASGA,IAAmBA,EAAiB,CAAA,IAQhC,MAAME,EAKT,WAAAvM,CAAYqI,GAERjI,KAAKoM,aAAe,GACpBpM,KAAKqM,mBAAqB,GAI1BrM,KAAKsM,MAAQ,EACbtM,KAAKuM,OAAStE,EAAOrD,MACrB5E,KAAKwM,aAAevE,EAAOwE,YAC3BzM,KAAK0M,sBAAwB1M,KAAKuM,OAAOT,oBAAoBnK,KAAI,IAAM3B,KAAK2M,WACpF,CAKI,aAAAxC,GACI,MAAMtG,EAAU,IAAImE,EAAiB,CAAEpD,MAAO5E,KAAKuM,OAAQE,YAAazM,KAAKwM,eAE7E,OADAxM,KAAKqM,mBAAmBzL,KAAKiD,GACtBA,CACf,CAMI,UAAA+I,CAAWrD,GACP,OAAOvJ,KAAKqM,mBAAmB9C,EACvC,CAMI,aAAAsD,CAAc7D,GACVhJ,KAAKoM,aAAaxL,KAAKoI,EAC/B,CAII,KAAA8D,GACI,GAAmB,IAAf9M,KAAKsM,MAAT,CAGAtM,KAAKsM,MAAQ,EAC0B,IAAnCtM,KAAKqM,mBAAmB7L,QACxBR,KAAKmK,gBAET,IAAK,MAAMtG,KAAW7D,KAAKqM,mBAAoB,CAC3C,MAAMU,EAAkB/M,KAAKgN,sBAC7B,IAAK,MAAMhE,KAAS+D,EAChB/D,EAAMpB,mBAAmB/D,EAEzC,CAVA,CAWA,CACI,mBAAAmJ,GACI,MAAMC,EAAQ,GACd,IAAK,MAAMC,KAAUlN,KAAKoM,aAEtB,GAAIc,EAAOlM,iBAAmB0J,EAA4BxI,UAAW,CACjE,MAAMmI,EAAQ6C,EAAOvC,qBACrB,IAAI7E,EAAI,EACR,KAAOA,EAAImH,EAAMzM,OAAQsF,IAAK,CAC1B,MACMwE,EADS2C,EAAMnH,GACA6E,qBACrB,GAAIN,GAASC,GAASF,EAAiBC,EAAOC,GAC1C,KAExB,CACgB2C,EAAMxD,OAAO3D,EAAG,EAAGoH,EACnC,MAEgBD,EAAMrM,KAAKsM,GAGnB,OAAOD,CACf,CAII,OAAAN,GACI,GAAmB,IAAf3M,KAAKsM,MAAT,CAGAtM,KAAKsM,MAAQ,EACb,IAAK,MAAMzI,KAAW7D,KAAKqM,mBACvBxI,EAAQ6F,sBAEZ1J,KAAKqM,mBAAmB7L,OAAS,EACjCR,KAAKoM,aAAa5L,OAAS,EAC3BR,KAAKuM,OAAOT,oBAAoBE,OAAOhM,KAAK0M,uBAC5C1M,KAAK0M,sBAAwB,IARrC,CASA,CAKI,cAAAS,CAAeC,GACX,MAAMC,EAAY,GACZC,EAAsB,IAAIC,IAChC,IAAK,MAAMvE,KAAShJ,KAAKoM,aACrBiB,EAAUzM,KAAKoI,GACfsE,EAAoB3L,IAAIqH,EAAM9I,UAElC,KAAOmN,EAAU7M,OAAS,GAAG,CACzB,MAAMwI,EAAQqE,EAAUG,MACxBJ,EAAQpE,GACR,IAAK,MAAMyE,KAAUzE,EAAM3D,WACvB,IAAK,MAAMjE,KAAcqM,EAAOxN,gBACvBqN,EAAoBI,IAAItM,EAAWrB,YAAYG,YAChDmN,EAAUzM,KAAKQ,EAAWrB,aAC1BuN,EAAoB3L,IAAIP,EAAWrB,YAAYG,WAI3D,GAAI8I,aAAiBjC,EACjB,IAAK,MAAM4G,KAAa3E,EAAM/B,cAC1B,IAAK,MAAM7F,KAAcuM,EAAU1N,gBAC1BqN,EAAoBI,IAAItM,EAAWrB,YAAYG,YAChDmN,EAAUzM,KAAKQ,EAAWrB,aAC1BuN,EAAoB3L,IAAIP,EAAWrB,YAAYG,UAK3E,CACA,CAMI,SAAAW,CAAUC,EAAsB,CAAE,EAAE8M,GAChC9M,EAAoB+M,UAAY,GAChC7N,KAAKmN,gBAAgBnE,IACjB,MAAM8E,EAAkB,CAAE,EAC1B9E,EAAMnI,UAAUiN,GAChBhN,EAAoB+M,UAAUjN,KAAKkN,EAAgB,IAEvDhN,EAAoBiN,kBAAoB,GACxC,IAAK,MAAMlK,KAAW7D,KAAKqM,mBAAoB,CAC3C,MAAM2B,EAAoB,CAAE,EAC5BnK,EAAQhD,UAAUmN,EAAmBJ,GACrC9M,EAAoBiN,kBAAkBnN,KAAKoN,EACvD,CACA,CAOI,qCAAOC,CAA+BC,EAAQhO,GAC1C,IAAK,MAAM8I,KAASkF,EAChB,IAAK,MAAMC,KAAWnF,EAAM1D,YACxB,GAAI6I,EAAQjO,WAAaA,EACrB,OAAOiO,EAInB,MAAM,IAAIxN,MAAM,qDAAuDT,EAC/E,CAOI,sCAAOkO,CAAgCF,EAAQhO,GAC3C,IAAK,MAAM8I,KAASkF,EAChB,GAAIlF,aAAiBjC,EACjB,IAAK,MAAMsH,KAAYrF,EAAMhC,aACzB,GAAIqH,EAASnO,WAAaA,EACtB,OAAOmO,EAKvB,MAAM,IAAI1N,MAAM,sDAAwDT,EAChF,CAOI,YAAOgB,CAAMJ,EAAqBkJ,GAC9B,MAAME,EAAQF,EAAQyC,YAAY6B,cAC5BJ,EAAS,GACT5H,EAAqB0D,EAAQ1D,oBAAsB3B,EAEzD,IAAK,MAAMmJ,KAAmBhN,EAAoB+M,UAAW,CACzD,MAAM7E,EAAQ7D,EAAejE,MAAM4M,EAAiB,CAAElJ,MAAOoF,EAAQyC,YAAYrH,OAAOR,MAAO2B,cAAeyD,EAAQzD,cAAeD,uBACrI4H,EAAOtN,KAAKoI,GACRA,aAAiBjB,GACjBmC,EAAM2C,cAAc7D,EAEpC,CAEQ,IAAK,MAAMA,KAASkF,EAAQ,CACxB,IAAK,MAAMT,KAAUzE,EAAM3D,WACvB,IAAK,MAAMkJ,KAAwBd,EAAOrN,kBAAmB,CACzD,MAAMgB,EAAa+K,EAAU8B,+BAA+BC,EAAQK,GACpEd,EAAOhN,UAAUW,EACrC,CAEY,GAAI4H,aAAiBjC,EACjB,IAAK,MAAM4G,KAAa3E,EAAM/B,cAC1B,IAAK,MAAMsH,KAAwBZ,EAAUvN,kBAAmB,CAC5D,MAAMgB,EAAa+K,EAAUiC,gCAAgCF,EAAQK,GACrEZ,EAAUlN,UAAUW,EAC5C,CAGA,CACQ,IAAK,MAAM4M,KAAqBlN,EAAoBiN,kBAChD/F,EAAiB9G,MAAM8M,EAAmB,CAAE9D,QAAO5D,uBAEvD,OAAO4D,CACf,EElPO,MAAMsE,EACT,WAAA5O,CAIAwF,GACIpF,KAAKoF,OAASA,EACdpF,KAAKyO,YAAc,GACnBzO,KAAK0O,iBAAmB,IAAIC,IAE5B3O,KAAKoF,OAAOR,MAAMkH,oBAAoBnK,KAAI,KACtC3B,KAAK2M,SAAS,KAGG6B,EAAqBI,kBAAkBC,IAAI7O,KAAKoF,OAAOR,QAAU,IACzEhE,KAAKZ,KAC1B,CAKI,WAAAsO,GACI,MAAMpE,EAAQ,IAAIiC,EAAU,CAAEvH,MAAO5E,KAAKoF,OAAOR,MAAO6H,YAAazM,OAErE,OADAA,KAAKyO,YAAY7N,KAAKsJ,GACfA,CACf,CAKI,WAAA4E,CAAY5E,GACR,MAAMX,EAAQvJ,KAAKyO,YAAYjF,QAAQU,IACxB,IAAXX,IACAW,EAAMyC,UACN3M,KAAKyO,YAAYhF,OAAOF,EAAO,GAE3C,CAII,KAAAuD,GACI9M,KAAKyO,YAAYM,SAAS7E,GAAUA,EAAM4C,SAClD,CAII,OAAAH,GACI3M,KAAKyO,YAAYM,SAAS7E,GAAUA,EAAMyC,YAC1C3M,KAAKyO,YAAYjO,OAAS,EAE1B,MAAMwO,EAAeR,EAAqBI,kBAAkBC,IAAI7O,KAAKoF,OAAOR,QAAU,GAChF2E,EAAQyF,EAAaxF,QAAQxJ,OACpB,IAAXuJ,GACAyF,EAAavF,OAAOF,EAAO,EAEvC,CAMI,SAAA1I,CAAUC,EAAqB8M,GAC3B9M,EAAoB2N,YAAc,GAClCzO,KAAKyO,YAAYM,SAAS7E,IACtB,MAAM+E,EAAkB,CAAE,EAC1B/E,EAAMrJ,UAAUoO,EAAiBrB,GACjC9M,EAAoB2N,YAAY7N,KAAKqO,EAAgB,GAEjE,CAOI,YAAO/N,CAAMgO,EAAkBlF,GAC3B,MAAM1D,EAAqB0D,EAAQ1D,oBAAsB3B,EACnD8H,EAAc,IAAI+B,EAAqB,CAAE5J,MAAOoF,EAAQpF,QAI9D,OAHAsK,EAAiBT,aAAaM,SAASE,IACnC9C,EAAUjL,MAAM+N,EAAiB,CAAExC,cAAanG,qBAAoBC,cAAeyD,EAAQzD,eAAgB,IAExGkG,CACf,CAII,cAAI0C,GACA,OAAOnP,KAAKyO,WACpB,CAMI,wBAAAW,CAAyBC,GACrB,IAAIC,EAAatP,KAAK0O,iBAAiBG,IAAIQ,GAK3C,OAJKC,IACDA,EAAa,IAAI9G,EACjBxI,KAAK0O,iBAAiBa,IAAIF,EAAIC,IAE3BA,CACf,CAMI,iBAAAE,CAAkBH,EAAII,GAClB,MAAMH,EAAatP,KAAK0O,iBAAiBG,IAAIQ,GACzCC,GACAA,EAAWzF,gBAAgB4F,EAEvC,EAMAjB,EAAqBI,kBAAoB,IAAID,ICvHtC,MAAMe,UAAsC3H,EAI/C,oBAAAF,CAAqBhE,GACjB,IAAKA,EAAQoF,sBAAsBjJ,KAAM,sBAAuB,CAC5D,MACM2P,EADQ9L,EAAQwF,cAAczE,MACNgL,kBAAkBjO,KAAI,KAChD3B,KAAK6G,SAAShD,EAAQ,IAE1BA,EAAQkF,sBAAsB/I,KAAM,qBAAsB2P,EACtE,CACA,CAII,mBAAAhG,CAAoB9F,GAChB,MAAM8L,EAAkB9L,EAAQoF,sBAAsBjJ,KAAM,sBAC9C6D,EAAQwF,cAAczE,MAC9BgL,kBAAkB5D,OAAO2D,GAC/B9L,EAAQsF,yBAAyBnJ,KAAM,qBAC/C,CAII,YAAAgB,GACI,OAAO0O,EAA8BxN,SAC7C,EAKAwN,EAA8BxN,UAAY,yBAC1CE,EAAc,yBAA0BsN,GCjCjC,MAAMG,UAAqC9H,EAI9C,oBAAAF,CAAqBhE,GACjB,IAAKA,EAAQoF,sBAAsBjJ,KAAM,qBAAsB,CAC3D,MACM2P,EADQ9L,EAAQwF,cAAczE,MACNkL,yBAAyBnO,KAAI,KACvD3B,KAAK6G,SAAShD,EAAQ,IAE1BA,EAAQkF,sBAAsB/I,KAAM,oBAAqB2P,EACrE,CACA,CAII,mBAAAhG,CAAoB9F,GAChB,MAAM8L,EAAkB9L,EAAQoF,sBAAsBjJ,KAAM,qBAC9C6D,EAAQwF,cAAczE,MAC9BkL,yBAAyB9D,OAAO2D,GACtC9L,EAAQsF,yBAAyBnJ,KAAM,oBAC/C,CAII,YAAAgB,GACI,OAAO6O,EAA6B3N,SAC5C,EAKA2N,EAA6B3N,UAAY,wBACzCE,EAAcyN,EAA6B3N,UAAW2N,GChC/C,MAAME,UAA6ChJ,EACtD,WAAAnH,CAAYwF,GACRzB,MAAMyB,GACNpF,KAAK0H,IAAM1H,KAAKoH,sBAAsB,MAC9C,ECHO,MAAM4I,UAAiCD,EAC1C,WAAAnQ,CAAYwF,GACRzB,MAAMyB,GACNpF,KAAKiQ,QAAUjQ,KAAKwF,kBAAkB,UAAWhD,EACzD,CAII,QAAAqE,CAAShD,GACL,MAAMqM,EAAelQ,KAAKiQ,QAAQ/L,SAASL,GAC3CsM,EAAOC,IAAIF,GAEXlQ,KAAK0H,IAAId,gBAAgB/C,EACjC,CAII,YAAA7C,GACI,OAAOgP,EAAyB9N,SACxC,EAKA8N,EAAyB9N,UAAY,oBACrCE,EAAc4N,EAAyB9N,UAAW8N,GL5BlD,SAAW9D,GAIPA,EAAWA,EAAiB,KAAI,GAAK,OAIrCA,EAAWA,EAAoB,QAAI,GAAK,UAIxCA,EAAWA,EAAkB,MAAI,GAAK,OACzC,CAbD,CAaGA,IAAeA,EAAa,CAAA,IAoCxB,MAAMmE,EAKT,WAAAzQ,CAAYoK,GAIRhK,KAAKsQ,sBAAwB,IAAI9H,EAIjCxI,KAAKuQ,yBAA2B,IAAI/H,EAIpCxI,KAAKwQ,uBAAyB,IAAIhI,EAIlCxI,KAAKyQ,yBAA2B,IAAIjI,EACpCxI,KAAK0Q,UAAY,KACjB1Q,KAAK2Q,kBAAmB,EACxB3Q,KAAK4Q,MAASC,IACV,MAAMC,EAAMC,KAAKD,MACjB9Q,KAAKgR,OAASF,EAAM9Q,KAAKiR,WACzB,MAAMxB,EAAO,CACTyB,UAAWlR,KAAKiR,WAChBE,YAAaL,EACbM,UAAWpR,KAAKgR,OAChBK,aAAcrR,KAAKgR,OAAShR,KAAKsR,WACjCT,WAEEU,EAAcvR,KAAK2Q,kBAAoB3Q,KAAKwR,gBAAgB/B,GAC9D8B,GAAevR,KAAKgR,QAAUhR,KAAKsR,WACnCtR,KAAKyR,MAAMhC,EAAM8B,GAGjBvR,KAAKsQ,sBAAsBzG,gBAAgB4F,EAC3D,EAEQzP,KAAK0R,UAAU,GACf1R,KAAK2R,mBAAqB3H,EAAQ4H,kBAClC5R,KAAK6R,sBAAwB7H,EAAQ8H,sBAAwB,CAAE,EAC/D9R,KAAKwR,gBAAkBxH,EAAQ+H,gBAAc,MAAW,GACxD/R,KAAKsR,WAAatH,EAAQgI,QACtBhI,EAAQiI,SACRjS,KAAKwQ,uBAAuB7O,IAAIqI,EAAQiI,SAExCjI,EAAQkI,QACRlS,KAAKsQ,sBAAsB3O,IAAIqI,EAAQkI,QAEvClI,EAAQmI,WACRnS,KAAKuQ,yBAAyB5O,IAAIqI,EAAQmI,UAEtD,CAKI,kBAAIJ,CAAeK,GACfpS,KAAKwR,gBAAkBY,CAC/B,CAII,gBAAAC,GACIrS,KAAKsQ,sBAAsBgC,QAC3BtS,KAAKuQ,yBAAyB+B,QAC9BtS,KAAKwQ,uBAAuB8B,QAC5BtS,KAAKyQ,yBAAyB6B,OACtC,CAMI,KAAAxF,CAAMyF,EAAYvS,KAAKsR,YACnB,GAAoB,IAAhBtR,KAAKwS,OACL,MAAM,IAAI7R,MAAM,+DAEpBX,KAAKsR,WAAaiB,EAClBvS,KAAKiR,WAAaF,KAAKD,MACvB9Q,KAAKgR,OAAS,EACdhR,KAAK0Q,UAAY1Q,KAAK2R,mBAAmBhQ,IAAI3B,KAAK4Q,MAAO5Q,KAAK6R,sBAAsBY,KAAMzS,KAAK6R,sBAAsBa,YAAa1S,KAAK6R,sBAAsBc,OAC7J3S,KAAK0R,UAAU,EACvB,CAII,IAAAkB,GACwB,IAAhB5S,KAAKwS,SAGTxS,KAAK2Q,kBAAmB,EAChC,CAII,OAAAhE,GACQ3M,KAAK0Q,WACL1Q,KAAK2R,mBAAmB3F,OAAOhM,KAAK0Q,WAExC1Q,KAAKqS,kBACb,CACI,SAAAX,CAAUmB,GACN7S,KAAKwS,OAASK,EACd7S,KAAKyQ,yBAAyB5G,gBAAgB7J,KAAKwS,OAC3D,CACI,KAAAf,CAAMhC,EAAMqD,GAAU,GAClB9S,KAAK2R,mBAAmB3F,OAAOhM,KAAK0Q,WACpC1Q,KAAK0R,UAAU,GACXoB,EACA9S,KAAKuQ,yBAAyB1G,gBAAgB4F,GAG9CzP,KAAKwQ,uBAAuB3G,gBAAgB4F,EAExD,EMnKO,MAAMsD,UAA4BtL,EACrC,WAAA7H,CAAYwF,GACRzB,MAAMyB,GACNpF,KAAKgS,QAAUhS,KAAKwF,kBAAkB,UAAW9C,EACzD,CACI,oBAAAmF,CAAqBhE,GACjB,MAAMmP,EAAiBhT,KAAKgS,QAAQ9N,SAASL,GAC7C,QAAuBpB,IAAnBuQ,GAAgCA,GAAkB,EAAG,CACrD,MAAMC,EAASpP,EAAQoF,sBAAsBjJ,KAAM,kBAAoB,GACjE4E,EAAQf,EAAQwF,cAAczE,MAC9BsO,EAAQ,IAAI7C,EAAc,CAC5B2B,QAASgB,EACTpB,kBAAmBhN,EAAMkL,yBACzBmC,QAAS,IAAMjS,KAAKmT,SAASD,EAAOrP,KAExCqP,EAAMpG,QACNmG,EAAOrS,KAAKsS,GACZrP,EAAQkF,sBAAsB/I,KAAM,gBAAiBiT,EACjE,CACA,CAII,QAAApM,CAAShD,GACL7D,KAAK4H,mBAAmB/D,GACxB7D,KAAK0H,IAAId,gBAAgB/C,EACjC,CACI,QAAAsP,CAASD,EAAOrP,GACZ,MAAMoP,EAASpP,EAAQoF,sBAAsBjJ,KAAM,kBAAoB,GACjEuJ,EAAQ0J,EAAOzJ,QAAQ0J,IACd,IAAX3J,EACA0J,EAAOxJ,OAAOF,EAAO,GAGrBlI,EAAM+R,KAAK,iFAEfvP,EAAQyF,oBAAoBtJ,MAC5BA,KAAK2H,KAAKf,gBAAgB/C,EAClC,CACI,mBAAA8F,CAAoB9F,GAChB,MAAMoP,EAASpP,EAAQoF,sBAAsBjJ,KAAM,kBAAoB,GACvE,IAAK,MAAMkT,KAASD,EAChBC,EAAMvG,UAEV9I,EAAQsF,yBAAyBnJ,KAAM,gBAC/C,CAII,YAAAgB,GACI,OAAO+R,EAAoB7Q,SACnC,EAKA6Q,EAAoB7Q,UAAY,eAChCE,EAAc,eAAgB2Q,GC7DvB,MAAMM,UAAsCtD,EAC/C,WAAAnQ,CAIAwF,GACIzB,MAAMyB,GACNpF,KAAKoF,OAASA,EACd,IAAK,IAAIU,EAAI,EAAGA,EAAI9F,KAAKoF,OAAOkO,UAAU9S,OAAQsF,IAAK,CACnD,MAAMyN,EAAWvT,KAAKoF,OAAOkO,UAAUxN,GACvC9F,KAAKwF,kBAAkB+N,EAAU/Q,EAC7C,CACA,CACI,QAAAqE,CAAShD,GACL,MAAM2P,EAAUxT,KAAKoF,OAAOoO,QACtBC,EAAazT,KAAKqF,WAAWqO,KAAKC,GAASA,EAAKzP,SAASL,KAC/DA,EAAQwF,cAAcoD,YAAY+C,kBAAkBgE,EAASC,GAC7DzT,KAAK0H,IAAId,gBAAgB/C,EACjC,CAII,YAAA7C,GACI,OAAOqS,EAA8BnR,SAC7C,EAKAmR,EAA8BnR,UAAY,yBAC1CE,EAAc,yBAA0BiR,GC5BjC,MAAMO,WAAyC7L,EAClD,WAAAnI,CAIAwF,GACIzB,MAAMyB,GACNpF,KAAKoF,OAASA,EACd,IAAK,IAAIU,EAAI,EAAGA,EAAI9F,KAAKoF,OAAOkO,UAAU9S,OAAQsF,IAAK,CACnD,MAAMyN,EAAWvT,KAAKoF,OAAOkO,UAAUxN,GACvC9F,KAAK0F,mBAAmB6N,EAAU/Q,EAC9C,CACA,CACI,oBAAAqF,CAAqBhE,GACjB,MAAMyL,EAAazL,EAAQwF,cAAcoD,YAAY2C,yBAAyBpP,KAAKoF,OAAOoO,SAC1FxT,KAAK6T,eAAiBvE,EAAW3N,KAAK8R,IAClC,IAAK,IAAI3N,EAAI,EAAGA,EAAI2N,EAAWjT,OAAQsF,IACnC9F,KAAKsF,YAAYQ,GAAGlC,SAAS6P,EAAW3N,GAAIjC,GAEhD7D,KAAK6G,SAAShD,EAAQ,GAElC,CACI,mBAAA8F,CAAoB9F,GAChB,MAAMyL,EAAazL,EAAQwF,cAAcoD,YAAY2C,yBAAyBpP,KAAKoF,OAAOoO,SACtFlE,EACAA,EAAWtD,OAAOhM,KAAK6T,gBAGvBxS,EAAM+R,KAAK,kEAAkEpT,KAAKoF,OAAOoO,UAErG,CAII,YAAAxS,GACI,OAAO4S,GAAiC1R,SAChD,CAKI,SAAArB,CAAUC,GACN6C,MAAM9C,UAAUC,GAChBA,EAAoB0S,QAAUxT,KAAKoF,OAAOoO,QAC1C1S,EAAoBwS,UAAYtT,KAAKoF,OAAOkO,SACpD,EAKAM,GAAiC1R,UAAY,4BAC7CE,EAAcwR,GAAiC1R,UAAW0R,ICrDnD,MAAME,WAA+B/M,EACxC,WAAAnH,CAIAwF,GACIzB,MAAMyB,GACNpF,KAAKoF,OAASA,EACdpF,KAAK+T,SAAW,GAChB,IAAK,IAAIjO,EAAI,EAAGA,EAAI9F,KAAKoF,OAAO4O,kBAAmBlO,IAC/C9F,KAAK+T,SAASnT,KAAKZ,KAAKoH,sBAAsB,GAAGtB,KAE7D,CACI,QAAAe,CAAShD,GACL,IAAK,IAAIiC,EAAI,EAAGA,EAAI9F,KAAKoF,OAAO4O,kBAAmBlO,IAC/C9F,KAAK+T,SAASjO,GAAGc,gBAAgB/C,EAE7C,CAII,YAAA7C,GACI,OAAO8S,GAAuB5R,SACtC,EAKA4R,GAAuB5R,UAAY,kBACnCE,EAAc0R,GAAuB5R,UAAW4R,IClChD,MAAMG,GAAwB,IAAIC,OAAO,cAKlC,MAAMC,GACT,WAAAvU,CAAYkL,EAAM3J,GACdnB,KAAK8K,KAAOA,EACZ9K,KAAKmB,WAAaA,EAIlBnB,KAAKoU,gBAAkB,GACvB,IAAIC,EAAQJ,GAAsBK,KAAKxJ,GACvC,KAAOuJ,GAAO,CACV,MAAM,CAAGE,GAAcF,EACvBrU,KAAKoU,gBAAgBxT,KAAKO,EAAWqE,kBAAkB+O,EAAY/Q,IACnE6Q,EAAQJ,GAAsBK,KAAKxJ,EAC/C,CACA,CACI,WAAA0J,CAAYjO,EAAe1C,GACvB,IAAI4Q,EAAYzU,KAAK8K,KACrB,IAAK,MAAM4J,KAAkB1U,KAAKoU,gBAAiB,CAC/C,MAAMO,EAAiBD,EAAexQ,SAASL,GAASrC,MACxDiT,EAAYA,EAAUG,QAAQ,IAAIF,EAAe7U,QAAS8U,EAAeE,WACrF,CACQ,OAAOtO,EAAcsE,QAAQ4J,EACrC,ECrBO,MAAMK,WAAkC3P,EAC3C,WAAAvF,CAIAwF,GACIzB,MAAMyB,GACNpF,KAAKoF,OAASA,EACdpF,KAAKwB,MAAQxB,KAAK0F,mBAAmB,QAASlD,GAC9CxC,KAAK+U,kBAAoB,IAAIZ,GAAgC/O,EAAO0F,KAAM9K,KAClF,CACI,cAAAoE,CAAeP,GACX,MAAMmR,EAAoBhV,KAAK+U,kBAAkBP,YAAYxU,KAAKoF,OAAOmB,cAAe1C,GAClFrC,EAAQwT,EAAkBhK,KAAK6D,IAAImG,EAAkB9J,QAC3DlL,KAAKwB,MAAMoC,SAASpC,EAAOqC,EACnC,CAKI,YAAA7C,GACI,OAAO8T,GAA0B5S,SACzC,CAKI,SAAArB,CAAUC,EAAsB,IAC5B6C,MAAM9C,UAAUC,GAChBA,EAAoBsE,OAAO0F,KAAO9K,KAAKoF,OAAO0F,IACtD,EAKAgK,GAA0B5S,UAAY,qBACtCE,EAAc0S,GAA0B5S,UAAW4S,ICnC5C,MAAMG,WAAkClF,EAC3C,WAAAnQ,CAIAwF,GACIzB,MAAMyB,GACNpF,KAAKoF,OAASA,EACdpF,KAAKkV,EAAIlV,KAAKwF,kBAAkB,IAAKhD,GACrCxC,KAAK+U,kBAAoB,IAAIZ,GAAgC/O,EAAO0F,KAAM9K,KAClF,CACI,QAAA6G,CAAShD,GACL,MAAMrC,EAAQxB,KAAKkV,EAAEhR,SAASL,GACxBsR,EAAWnV,KAAK+U,kBAAkBP,YAAYxU,KAAKoF,OAAOmB,cAAe1C,GAC/EsR,EAASnK,KAAKuE,IAAI/N,EAAO2T,EAASjK,QAClClL,KAAK0H,IAAId,gBAAgB/C,EACjC,CAKI,SAAAhD,CAAUC,EAAsB,IAC5B6C,MAAM9C,UAAUC,GAChBA,EAAoBsE,OAAO0F,KAAO9K,KAAKoF,OAAO0F,IACtD,CAII,YAAA9J,GACI,OAAOiU,GAA0B/S,SACzC,EAKA+S,GAA0B/S,UAAY,qBACtCE,EAAc,qBAAsB6S,IC3CpC,MAAMG,GAAY,uBACZC,GAAkB,oBAIjB,MAAMC,WAAsCnQ,EAC/C,WAAAvF,CAAY2V,EAAgBnQ,GACxBzB,MAAMyB,GACNpF,KAAKwB,MAAQxB,KAAK0F,mBAAmB,QAAS6P,EACtD,CACI,cAAAnR,CAAeP,GACX,MAAM2R,EAAoB3R,EAAQoF,sBAAsBjJ,KAAMqV,IACxDI,EAAc5R,EAAQoF,sBAAsBjJ,KAAMoV,IACxD,QAAoB3S,IAAhBgT,GAA6BD,IAAsB3R,EAAQiG,YAC3D9J,KAAKwB,MAAMoC,SAAS6R,EAAa5R,OAEhC,CACD,MAAM6R,EAAkB1V,KAAK2V,aAAa9R,GAC1CA,EAAQkF,sBAAsB/I,KAAMoV,GAAWM,GAC/C7R,EAAQkF,sBAAsB/I,KAAMqV,GAAiBxR,EAAQiG,aAC7D9J,KAAKwB,MAAMoC,SAAS8R,EAAiB7R,EACjD,CACA,ECjBO,MAAM+R,WAAsCN,GAC/C,WAAA1V,CAAYiW,EAAcC,EAAeC,EAAgBC,EAAYC,EAAY7Q,GAC7EzB,MAAMoS,EAAgB3Q,GACtBpF,KAAKgW,WAAaA,EAClBhW,KAAKiW,WAAaA,EAClBjW,KAAKkV,EAAIlV,KAAKwF,kBAAkB,IAAKqQ,GACrC7V,KAAKkW,EAAIlW,KAAKwF,kBAAkB,IAAKsQ,EAC7C,CAMI,YAAAH,CAAa9R,GACT,OAAO7D,KAAKgW,WAAWhW,KAAKkV,EAAEhR,SAASL,GAAU7D,KAAKkW,EAAEhS,SAASL,GACzE,CAKI,YAAA7C,GACI,OAAOhB,KAAKiW,UACpB,ECvBO,MAAME,WAAwCb,GACjD,WAAA1V,CAAY8D,EAAUsS,EAAYC,EAAY7Q,GAC1CzB,MAAMD,EAAU0B,GAChBpF,KAAKgW,WAAaA,EAClBhW,KAAKiW,WAAaA,CAC1B,CAMI,YAAAN,CAAapQ,GACT,OAAOvF,KAAKgW,YACpB,CAKI,YAAAhV,GACI,OAAOhB,KAAKiW,UACpB,ECpBO,MAAMG,WAAqCd,GAC9C,WAAA1V,CAAYyW,EAAeN,EAAgBC,EAAYC,EAAY7Q,GAC/DzB,MAAMoS,EAAgB3Q,GACtBpF,KAAKgW,WAAaA,EAClBhW,KAAKiW,WAAaA,EAClBjW,KAAKkV,EAAIlV,KAAKwF,kBAAkB,IAAK6Q,EAC7C,CAMI,YAAAV,CAAa9R,GACT,OAAO7D,KAAKgW,WAAWhW,KAAKkV,EAAEhR,SAASL,GAC/C,CAKI,YAAA7C,GACI,OAAOhB,KAAKiW,UACpB,ECrBO,MAAMK,WAAuChB,GAChD,WAAA1V,CAAY2W,EAAQC,EAAQC,EAAQV,EAAgBC,EAAYC,EAAY7Q,GACxEzB,MAAMoS,EAAgB3Q,GACtBpF,KAAKgW,WAAaA,EAClBhW,KAAKiW,WAAaA,EAClBjW,KAAKkV,EAAIlV,KAAKwF,kBAAkB,IAAK+Q,GACrCvW,KAAKkW,EAAIlW,KAAKwF,kBAAkB,IAAKgR,GACrCxW,KAAK0W,EAAI1W,KAAKwF,kBAAkB,IAAKiR,EAC7C,CAMI,YAAAd,CAAa9R,GACT,OAAO7D,KAAKgW,WAAWhW,KAAKkV,EAAEhR,SAASL,GAAU7D,KAAKkW,EAAEhS,SAASL,GAAU7D,KAAK0W,EAAExS,SAASL,GACnG,CAKI,YAAA7C,GACI,OAAOhB,KAAKiW,UACpB,ECjBA,SAASU,GAAgBC,GACrB,OAAIA,EAAE5V,aACK4V,EAAE5V,eAEN,EACX,CAKA,SAAS6V,GAAoB9V,EAAW+V,GACpC,MAAsB,YAAd/V,GAA0C,YAAf+V,GAA4C,YAAd/V,GAA0C,YAAf+V,GAA4C,YAAd/V,GAA0C,YAAf+V,CACzJ,CAKA,SAASC,GAAoBhW,EAAW+V,GACpC,MAAqB,WAAd/V,GAAyC,WAAf+V,CACrC,CAKA,SAASE,GAAqBjW,EAAW+V,GACrC,MAAqB,qBAAd/V,GAAmD,qBAAf+V,CAC/C,CAKO,MAAMG,WAA0BrB,GACnC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,IAAMlW,KAAKkX,gBAAgBhC,EAAGgB,IAAIe,GAAkB/U,UAAWkD,EACxH,CACI,eAAA8R,CAAgBhC,EAAGgB,GACf,MAAMiB,EAAaR,GAAgBzB,GAC7BkC,EAAaT,GAAgBT,GACnC,OAAIW,GAAoBM,EAAYC,IAAeL,GAAoBI,EAAYC,IAAeJ,GAAqBG,EAAYC,GACxHlC,EAAEvT,IAAIuU,GAGNhB,EAAIgB,CAEvB,EAKAe,GAAkB/U,UAAY,aAC9BE,EAAc6U,GAAkB/U,UAAW+U,IAKpC,MAAMI,WAA+BzB,GACxC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,IAAMlW,KAAKkX,gBAAgBhC,EAAGgB,IAAImB,GAAuBnV,UAAWkD,EAC7H,CACI,eAAA8R,CAAgBhC,EAAGgB,GACf,MAAMiB,EAAaR,GAAgBzB,GAC7BkC,EAAaT,GAAgBT,GACnC,OAAIW,GAAoBM,EAAYC,IAAeJ,GAAqBG,EAAYC,GACzElC,EAAErT,SAASqU,GAEba,GAAoBI,EAAYC,GAC9BlC,EAAEvT,IAAIuU,EAAEoB,OAAO,IAGfpC,EAAIgB,CAEvB,EAKAmB,GAAuBnV,UAAY,aACnCE,EAAciV,GAAuBnV,UAAWmV,IAMzC,MAAME,WAA+B3B,GACxC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,IAAMlW,KAAKwX,qBAAqBtC,EAAGgB,IAAIqB,GAAuBrV,UAAWkD,EAClI,CACI,oBAAAoS,CAAqBtC,EAAGgB,GACpB,MAAMiB,EAAaR,GAAgBzB,GAC7BkC,EAAaT,GAAgBT,GACnC,OAAIW,GAAoBM,EAAYC,IAAeJ,GAAqBG,EAAYC,GACzElC,EAAEpT,SAASoU,GAEba,GAAoBI,EAAYC,GAC9BjU,EAAOsU,WAAWvC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,KAGzSxC,EAAIgB,CAEvB,EAKAqB,GAAuBrV,UAAY,kBACnCE,EAAcmV,GAAuBrV,UAAWqV,IAKzC,MAAMI,WAA6B/B,GACtC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,IAAMlW,KAAK4X,mBAAmB1C,EAAGgB,IAAIyB,GAAqBzV,UAAWkD,EAC9H,CACI,kBAAAwS,CAAmB1C,EAAGgB,GAClB,MAAMiB,EAAaR,GAAgBzB,GAC7BkC,EAAaT,GAAgBT,GACnC,OAAIW,GAAoBM,EAAYC,IAAeJ,GAAqBG,EAAYC,GACzElC,EAAEjT,OAAOiU,GAEXa,GAAoBI,EAAYC,GAC9BjU,EAAOsU,WAAWvC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,GAAKxB,EAAEwB,EAAE,GAAIxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,IAAKxC,EAAEwC,EAAE,IAAMxB,EAAEwB,EAAE,KAGzSxC,EAAIgB,CAEvB,EAKAyB,GAAqBzV,UAAY,gBACjCE,EAAcuV,GAAqBzV,UAAWyV,IAKvC,MAAME,WAA6B1B,GACtC,WAAAvW,CAAYwF,GACRzB,MAAMjB,GAAgB,IAAMX,KAAK+V,UAAUD,GAAqB3V,UAAWkD,EACnF,EAKAyS,GAAqB3V,UAAY,gBACjCE,EAAcyV,GAAqB3V,UAAW2V,IAKvC,MAAME,WAA0BnC,GACnC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaE,GAAgB,CAACwS,EAAGgB,IAAMlW,KAAKgY,gBAAgB9C,EAAGgB,IAAI6B,GAAkB7V,UAAWkD,EAC3H,CACI,eAAA4S,CAAgB9C,EAAGgB,GAEf,OADkBS,GAAgBzB,IAE9B,IAAK,UACD,OAAOrS,EAAQoV,IAAI/C,EAAGgB,GAC1B,IAAK,UACD,OAAOlT,EAAQiV,IAAI/C,EAAGgB,GAC1B,IAAK,UACD,OAAOjT,EAAQgV,IAAI/C,EAAGgB,GAC1B,QACI,MAAM,IAAIvV,MAAM,6BAA6BuU,SAASgB,KAEtE,EAKA6B,GAAkB7V,UAAY,aAC9BE,EAAc2V,GAAkB7V,UAAW6V,IAKpC,MAAMG,WAAwB/B,GACjC,WAAAvW,CAAYwF,GACRzB,MAAMjB,GAAgB,IAAMX,KAAKoW,GAAGD,GAAgBhW,UAAWkD,EACvE,EAKA8S,GAAgBhW,UAAY,WAC5BE,EAAc8V,GAAgBhW,UAAWgW,IAKlC,MAAME,WAAyBjC,GAClC,WAAAvW,CAAYwF,GACRzB,MAAMjB,GAAgB,IAAMX,KAAKsW,IAAID,GAAiBlW,UAAWkD,EACzE,EAKAgT,GAAiBlW,UAAY,YAC7BE,EAAcgW,GAAiBlW,UAAWkW,IAKnC,MAAME,WAA0BnC,GACnC,WAAAvW,CAAYwF,GACRzB,MAAMjB,GAAgB,IAAM6V,OAAOC,mBAAmBF,GAAkBpW,UAAWkD,EAC3F,EAKAkT,GAAkBpW,UAAY,aAC9BE,EAAckW,GAAkBpW,UAAWoW,IAKpC,MAAMG,WAA0BtC,GACnC,WAAAvW,CAAYwF,GACRzB,MAAMjB,GAAgB,IAAM6V,OAAOG,KAAKD,GAAkBvW,UAAWkD,EAC7E,EAOA,SAASuT,GAA6BzD,EAAG0D,GAErC,OADmBjC,GAAgBzB,IAE/B,IAAK,mBACD,OAAO,IAAI3T,EAAiBqX,EAAG1D,EAAE1T,QACrC,IAAK,UACD,OAAO,IAAIqB,EAAQ+V,EAAG1D,EAAE2D,GAAID,EAAG1D,EAAE4D,IACrC,IAAK,UACD,OAAO,IAAI9V,EAAQ4V,EAAG1D,EAAE2D,GAAID,EAAG1D,EAAE4D,GAAIF,EAAG1D,EAAE6D,IAC9C,IAAK,UACD,OAAO,IAAI9V,EAAQ2V,EAAG1D,EAAE2D,GAAID,EAAG1D,EAAE4D,GAAIF,EAAG1D,EAAE6D,GAAIH,EAAG1D,EAAE8D,IACvD,IAAK,SACD,OAAO7V,EAAOsU,WAAWmB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,MAC7N,QACI,OAAOkB,EAAG1D,GAEtB,CAlBAuD,GAAkBvW,UAAY,aAC9BE,EAAcqW,GAAkBvW,UAAWuW,IAsBpC,MAAMQ,WAA0B7C,GACnC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKkZ,gBAAgBhE,IAAI+D,GAAkB/W,UAAWkD,EACrG,CACI,eAAA8T,CAAgBhE,GACZ,OAAOyD,GAA6BzD,EAAGnT,KAAKoX,IACpD,EAKAF,GAAkB/W,UAAY,aAC9BE,EAAc6W,GAAkB/W,UAAW+W,IAKpC,MAAMG,WAA2BhD,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKqZ,iBAAiBnE,IAAIkE,GAAmBlX,UAAWkD,EACvG,CACI,gBAAAiU,CAAiBnE,GACb,OAAOyD,GAA6BzD,EAAGnT,KAAKuX,KACpD,EAKAF,GAAmBlX,UAAY,cAC/BE,EAAcgX,GAAmBlX,UAAWkX,IAKrC,MAAMG,WAA4BnD,GACrC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKwZ,kBAAkBtE,IAAIqE,GAAoBrX,UAAWkD,EACzG,CACI,iBAAAoU,CAAkBtE,GACd,OAAOyD,GAA6BzD,EAAGnT,KAAK0X,MACpD,EAKAF,GAAoBrX,UAAY,eAChCE,EAAcmX,GAAoBrX,UAAWqX,IAKtC,MAAMG,WAA4BtD,GACrC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAK2Z,kBAAkBzE,IAAIwE,GAAoBxX,UAAWkD,EACzG,CACI,iBAAAuU,CAAkBzE,GACd,OAAOyD,GAA6BzD,EAAGnT,KAAK6X,MACpD,EAKAF,GAAoBxX,UAAY,eAChCE,EAAcsX,GAAoBxX,UAAWwX,IAKtC,MAAMG,WAA2BzD,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAK8Z,oBAAoB5E,IAAI2E,GAAmB3X,UAAWkD,EAC1G,CACI,mBAAA0U,CAAoB5E,GAChB,OAAOyD,GAA6BzD,EAAGnT,KAAKgY,KACpD,EAKAF,GAAmB3X,UAAY,cAC/BE,EAAcyX,GAAmB3X,UAAW2X,IAKrC,MAAMG,WAA4B5D,GACrC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKia,kBAAkB/E,IAAI8E,GAAoB9X,UAAWkD,EACzG,CACI,iBAAA6U,CAAkB/E,GACd,OAAOyD,GAA6BzD,GAAIA,GAAMA,EAAInT,KAAK6X,MAAM1E,IACrE,EAKA8E,GAAoB9X,UAAY,eAChCE,EAAc4X,GAAoB9X,UAAW8X,IAKtC,MAAME,WAA0B9D,GAKnC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKma,gBAAgBjF,IAAIgF,GAAkBhY,UAAWkD,EACrG,CACI,eAAA+U,CAAgBjF,GACZ,OAAOyD,GAA6BzD,GAAIA,IAAOA,GACvD,EAOA,SAASkF,GAA8BlF,EAAGgB,EAAG0C,GAEzC,OADmBjC,GAAgBzB,IAE/B,IAAK,mBACD,OAAO,IAAI3T,EAAiBqX,EAAG1D,EAAE1T,MAAO0U,EAAE1U,QAC9C,IAAK,UACD,OAAO,IAAIqB,EAAQ+V,EAAG1D,EAAE2D,EAAG3C,EAAE2C,GAAID,EAAG1D,EAAE4D,EAAG5C,EAAE4C,IAC/C,IAAK,UACD,OAAO,IAAI9V,EAAQ4V,EAAG1D,EAAE2D,EAAG3C,EAAE2C,GAAID,EAAG1D,EAAE4D,EAAG5C,EAAE4C,GAAIF,EAAG1D,EAAE6D,EAAG7C,EAAE6C,IAC7D,IAAK,UACD,OAAO,IAAI9V,EAAQ2V,EAAG1D,EAAE2D,EAAG3C,EAAE2C,GAAID,EAAG1D,EAAE4D,EAAG5C,EAAE4C,GAAIF,EAAG1D,EAAE6D,EAAG7C,EAAE6C,GAAIH,EAAG1D,EAAE8D,EAAG9C,EAAE8C,IAC3E,IAAK,SACD,OAAO7V,EAAOsU,WAAWmB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,MACnW,QACI,OAAOkB,EAAG1D,EAAGgB,GAEzB,CAlBAgE,GAAkBhY,UAAY,aAC9BE,EAAc8X,GAAkBhY,UAAWgY,IAsBpC,MAAMG,WAAgCzE,GACzC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,IAAMlW,KAAKsa,sBAAsBpF,EAAGgB,IAAImE,GAAwBnY,UAAWkD,EACpI,CACI,qBAAAkV,CAAsBpF,EAAGgB,GACrB,OAAOkE,GAA8BlF,EAAGgB,GAAG,CAAChB,EAAGgB,IAAMhB,EAAIgB,GACjE,EAKAmE,GAAwBnY,UAAY,mBACpCE,EAAciY,GAAwBnY,UAAWmY,IAK1C,MAAME,WAA0B3E,GACnC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,IAAMlW,KAAKwa,gBAAgBtF,EAAGgB,IAAIqE,GAAkBrY,UAAWkD,EACxH,CACI,eAAAoV,CAAgBtF,EAAGgB,GACf,OAAOkE,GAA8BlF,EAAGgB,EAAGnU,KAAK0Y,IACxD,EAKAF,GAAkBrY,UAAY,aAC9BE,EAAcmY,GAAkBrY,UAAWqY,IAKpC,MAAMG,WAA0B9E,GACnC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,IAAMlW,KAAK2a,gBAAgBzF,EAAGgB,IAAIwE,GAAkBxY,UAAWkD,EACxH,CACI,eAAAuV,CAAgBzF,EAAGgB,GACf,OAAOkE,GAA8BlF,EAAGgB,EAAGnU,KAAK6Y,IACxD,EAOA,SAASC,GAAO3F,EAAGgB,EAAGQ,GAClB,OAAO3U,KAAK0Y,IAAI1Y,KAAK6Y,IAAI1F,EAAGnT,KAAK0Y,IAAIvE,EAAGQ,IAAK3U,KAAK6Y,IAAI1E,EAAGQ,GAC7D,CACA,SAASoE,GAA+B5F,EAAGgB,EAAGQ,EAAGkC,GAE7C,OADmBjC,GAAgBzB,IAE/B,IAAK,mBACD,OAAO,IAAI3T,EAAiBqX,EAAG1D,EAAE1T,MAAO0U,EAAE1U,MAAOkV,EAAElV,QACvD,IAAK,UACD,OAAO,IAAIqB,EAAQ+V,EAAG1D,EAAE2D,EAAG3C,EAAE2C,EAAGnC,EAAEmC,GAAID,EAAG1D,EAAE4D,EAAG5C,EAAE4C,EAAGpC,EAAEoC,IACzD,IAAK,UACD,OAAO,IAAI9V,EAAQ4V,EAAG1D,EAAE2D,EAAG3C,EAAE2C,EAAGnC,EAAEmC,GAAID,EAAG1D,EAAE4D,EAAG5C,EAAE4C,EAAGpC,EAAEoC,GAAIF,EAAG1D,EAAE6D,EAAG7C,EAAE6C,EAAGrC,EAAEqC,IAC5E,IAAK,UACD,OAAO,IAAI9V,EAAQ2V,EAAG1D,EAAE2D,EAAG3C,EAAE2C,EAAGnC,EAAEmC,GAAID,EAAG1D,EAAE4D,EAAG5C,EAAE4C,EAAGpC,EAAEoC,GAAIF,EAAG1D,EAAE6D,EAAG7C,EAAE6C,EAAGrC,EAAEqC,GAAIH,EAAG1D,EAAE8D,EAAG9C,EAAE8C,EAAGtC,EAAEsC,IAC/F,IAAK,SACD,OAAO7V,EAAOsU,WAAWmB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,IAAKhB,EAAEgB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,IAAKhB,EAAEgB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,IAAKhB,EAAEgB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,IAAKhB,EAAEgB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,GAAIxB,EAAEwB,EAAE,GAAIhB,EAAEgB,EAAE,IAAKkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,IAAKhB,EAAEgB,EAAE,KAAMkB,EAAG1D,EAAEwC,EAAE,IAAKxB,EAAEwB,EAAE,IAAKhB,EAAEgB,EAAE,MACze,QACI,OAAOkB,EAAG1D,EAAGgB,EAAGQ,GAE5B,CArBAgE,GAAkBxY,UAAY,aAC9BE,EAAcsY,GAAkBxY,UAAWwY,IAyBpC,MAAMK,WAA4BzE,GACrC,WAAA1W,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,EAAGQ,IAAM1W,KAAKgb,kBAAkB9F,EAAGgB,EAAGQ,IAAIqE,GAAoB7Y,UAAWkD,EAC/I,CACI,iBAAA4V,CAAkB9F,EAAGgB,EAAGQ,GACpB,OAAOoE,GAA+B5F,EAAGgB,EAAGQ,EAAGmE,GACvD,EAOA,SAASI,GAAU/F,GACf,OAAOnT,KAAK0Y,IAAI1Y,KAAK6Y,IAAI1F,EAAG,GAAI,EACpC,CAJA6F,GAAoB7Y,UAAY,eAChCE,EAAc2Y,GAAoB7Y,UAAW6Y,IAQtC,MAAMG,WAA+B9E,GACxC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKmb,qBAAqBjG,IAAIgG,GAAuBhZ,UAAWkD,EAC/G,CACI,oBAAA+V,CAAqBjG,GACjB,OAAOyD,GAA6BzD,EAAG+F,GAC/C,EAKAC,GAAuBhZ,UAAY,kBACnCE,EAAc8Y,GAAuBhZ,UAAWgZ,IAKzC,MAAME,WAAkC9E,GAC3C,WAAA1W,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,EAAGQ,IAAM1W,KAAKqb,wBAAwBnG,EAAGgB,EAAGQ,IAAI0E,GAA0BlZ,UAAWkD,EAC3J,CACI,YAAAkW,CAAapG,EAAGgB,EAAGQ,GACf,OAAQ,EAAIA,GAAKxB,EAAIwB,EAAIR,CACjC,CACI,uBAAAmF,CAAwBnG,EAAGgB,EAAGQ,GAC1B,OAAOoE,GAA+B5F,EAAGgB,EAAGQ,EAAG1W,KAAKsb,aAC5D,EAKAF,GAA0BlZ,UAAY,qBACtCE,EAAcgZ,GAA0BlZ,UAAWkZ,IAK5C,MAAMG,WAAyB3F,GAClC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaG,GAAiB,CAACuS,EAAGgB,IAAMlW,KAAKwb,eAAetG,EAAGgB,IAAIqF,GAAiBrZ,UAAWkD,EAC1H,CACI,cAAAoW,CAAetG,EAAGgB,GACd,MAAMiB,EAAaR,GAAgBzB,GAC7BkC,EAAaT,GAAgBT,GACnC,OAAIW,GAAoBM,EAAYC,IAAeL,GAAoBI,EAAYC,IAAeJ,GAAqBG,EAAYC,GACxHlC,EAAE/S,OAAO+T,GAGThB,IAAMgB,CAEzB,EAOA,SAASuF,GAAqBvG,EAAGgB,EAAG0C,GAChC,MAAMzB,EAAaR,GAAgBzB,GAEnC,GAAIiC,IADeR,GAAgBT,GACJ,CAE3B,GAAmB,KAAfiB,EACA,OAAOyB,EAAG1D,EAAGgB,GAEZ,GAAmB,qBAAfiB,EACL,OAAOyB,EAAG1D,EAAE1T,MAAO0U,EAAE1U,OAGrB,MAAM,IAAIb,MAAM,kBAAkBuU,SAASgB,IAEvD,CACI,MAAM,IAAIvV,MAAM,GAAGuU,SAASgB,4BAChC,CAlBAqF,GAAiBrZ,UAAY,YAC7BE,EAAcmZ,GAAiBrZ,UAAWqZ,IAsBnC,MAAMG,WAA+B9F,GACxC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaG,GAAiB,CAACuS,EAAGgB,IAAMlW,KAAK2b,qBAAqBzG,EAAGgB,IAAIwF,GAAuBxZ,UAAWkD,EACtI,CACI,oBAAAuW,CAAqBzG,EAAGgB,GACpB,OAAOuF,GAAqBvG,EAAGgB,GAAG,CAAChB,EAAGgB,IAAMhB,EAAIgB,GACxD,EAKAwF,GAAuBxZ,UAAY,kBACnCE,EAAcsZ,GAAuBxZ,UAAWwZ,IAKzC,MAAME,WAAsChG,GAC/C,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaG,GAAiB,CAACuS,EAAGgB,IAAMlW,KAAK6b,4BAA4B3G,EAAGgB,IAAI0F,GAA8B1Z,UAAWkD,EACpJ,CACI,2BAAAyW,CAA4B3G,EAAGgB,GAC3B,OAAOuF,GAAqBvG,EAAGgB,GAAG,CAAChB,EAAGgB,IAAMhB,GAAKgB,GACzD,EAKA0F,GAA8B1Z,UAAY,yBAKnC,MAAM4Z,WAAkClG,GAC3C,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaG,GAAiB,CAACuS,EAAGgB,IAAMlW,KAAK+b,wBAAwB7G,EAAGgB,IAAI4F,GAA0B5Z,UAAWkD,EAC5I,CACI,uBAAA2W,CAAwB7G,EAAGgB,GACvB,OAAOuF,GAAqBvG,EAAGgB,GAAG,CAAChB,EAAGgB,IAAMhB,EAAIgB,GACxD,EAKA4F,GAA0B5Z,UAAY,qBACtCE,EAAc0Z,GAA0B5Z,UAAW4Z,IAK5C,MAAME,WAAyCpG,GAClD,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaG,GAAiB,CAACuS,EAAGgB,IAAMlW,KAAKic,+BAA+B/G,EAAGgB,IAAI8F,GAAiC9Z,UAAWkD,EAC1J,CACI,8BAAA6W,CAA+B/G,EAAGgB,GAC9B,OAAOuF,GAAqBvG,EAAGgB,GAAG,CAAChB,EAAGgB,IAAMhB,GAAKgB,GACzD,EAKA8F,GAAiC9Z,UAAY,4BAC7CE,EAAc4Z,GAAiC9Z,UAAW8Z,IAKnD,MAAME,WAA4B9F,GACrC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaG,GAAkBuS,GAAMlV,KAAKmc,kBAAkBjH,IAAIgH,GAAoBha,UAAWkD,EAC7G,CACI,iBAAA+W,CAAkBjH,GACd,MAAMiC,EAAaR,GAAgBzB,GACnC,GAAmB,KAAfiC,EACA,OAAOiF,MAAMlH,GAEZ,GAAmB,qBAAfiC,EACL,OAAOiF,MAAMlH,EAAE1T,OAGf,MAAM,IAAIb,MAAM,qBAAqBuU,IAEjD,EAKAgH,GAAoBha,UAAY,eAChCE,EAAc8Z,GAAoBha,UAAWga,IAKtC,MAAMG,WAA4BjG,GACrC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaG,GAAkBuS,GAAMlV,KAAKsc,kBAAkBpH,IAAImH,GAAoBna,UAAWkD,EAC7G,CACI,iBAAAkX,CAAkBpH,GACd,MAAMiC,EAAaR,GAAgBzB,GACnC,GAAmB,KAAfiC,EACA,OAAQoF,SAASrH,GAEhB,GAAmB,qBAAfiC,EACL,OAAQoF,SAASrH,EAAE1T,OAGnB,MAAM,IAAIb,MAAM,uBAAuBuU,IAEnD,EAKAmH,GAAoBna,UAAY,eAKzB,MAAMsa,WAA+BpG,GACxC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKyc,qBAAqBvH,IAAIsH,GAAuBta,UAAWkD,EAC/G,CACI,SAAAsX,CAAUxH,GACN,OAAQA,EAAInT,KAAKsW,GAAM,GAC/B,CACI,oBAAAoE,CAAqBvH,GACjB,OAAOyD,GAA6BzD,EAAGlV,KAAK0c,UACpD,EAKAF,GAAuBta,UAAY,kBACnCE,EAAcoa,GAAuBta,UAAWsa,IAKzC,MAAMG,WAA+BvG,GACxC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAK4c,qBAAqB1H,IAAIyH,GAAuBza,UAAWkD,EAC/G,CACI,SAAAyX,CAAU3H,GACN,OAAY,IAAJA,EAAWnT,KAAKsW,EAChC,CACI,oBAAAuE,CAAqB1H,GACjB,OAAOyD,GAA6BzD,EAAGlV,KAAK6c,UACpD,EAKAF,GAAuBza,UAAY,kBACnCE,EAAcua,GAAuBza,UAAWya,IAKzC,MAAMG,WAA0B1G,GACnC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAK+c,gBAAgB7H,IAAI4H,GAAkB5a,UAAWkD,EACrG,CACI,eAAA2X,CAAgB7H,GACZ,OAAOyD,GAA6BzD,EAAGnT,KAAKib,IACpD,EAKAF,GAAkB5a,UAAY,aAC9BE,EAAc0a,GAAkB5a,UAAW4a,IAKpC,MAAMG,WAA0B7G,GACnC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKkd,gBAAgBhI,IAAI+H,GAAkB/a,UAAWkD,EACrG,CACI,eAAA8X,CAAgBhI,GACZ,OAAOyD,GAA6BzD,EAAGnT,KAAKob,IACpD,EAKAF,GAAkB/a,UAAY,aAC9BE,EAAc6a,GAAkB/a,UAAW+a,IAKpC,MAAMG,WAA0BhH,GACnC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKqd,gBAAgBnI,IAAIkI,GAAkBlb,UAAWkD,EACrG,CACI,eAAAiY,CAAgBnI,GACZ,OAAOyD,GAA6BzD,EAAGnT,KAAKub,IACpD,EAKAF,GAAkBlb,UAAY,aAC9BE,EAAcgb,GAAkBlb,UAAWkb,IAKpC,MAAMG,WAA2BnH,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKwd,iBAAiBtI,IAAIqI,GAAmBrb,UAAWkD,EACvG,CACI,gBAAAoY,CAAiBtI,GACb,OAAOyD,GAA6BzD,EAAGnT,KAAK0b,KACpD,EAKAF,GAAmBrb,UAAY,cAC/BE,EAAcmb,GAAmBrb,UAAWqb,IAKrC,MAAMG,WAA2BtH,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAK2d,iBAAiBzI,IAAIwI,GAAmBxb,UAAWkD,EACvG,CACI,gBAAAuY,CAAiBzI,GACb,OAAOyD,GAA6BzD,EAAGnT,KAAK6b,KACpD,EAKAF,GAAmBxb,UAAY,cAC/BE,EAAcsb,GAAmBxb,UAAWwb,IAKrC,MAAMG,WAA2BzH,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAK8d,iBAAiB5I,IAAI2I,GAAmB3b,UAAWkD,EACvG,CACI,gBAAA0Y,CAAiB5I,GACb,OAAOyD,GAA6BzD,EAAGnT,KAAKgc,KACpD,EAKAF,GAAmB3b,UAAY,cAC/BE,EAAcyb,GAAmB3b,UAAW2b,IAKrC,MAAMG,WAA4BpI,GACrC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaA,EAAaA,GAAa,CAAC0S,EAAGgB,IAAMlW,KAAKie,kBAAkB/I,EAAGgB,IAAI8H,GAAoB9b,UAAWkD,EAC5H,CACI,iBAAA6Y,CAAkB/I,EAAGgB,GACjB,OAAOkE,GAA8BlF,EAAGgB,EAAGnU,KAAKmc,MACxD,EAKAF,GAAoB9b,UAAY,eAChCE,EAAc4b,GAAoB9b,UAAW8b,IAKtC,MAAMG,WAA2B/H,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKoe,iBAAiBlJ,IAAIiJ,GAAmBjc,UAAWkD,EACvG,CACI,gBAAAgZ,CAAiBlJ,GACb,OAAOyD,GAA6BzD,EAAGnT,KAAKsc,KACpD,EAKAF,GAAmBjc,UAAY,cAC/BE,EAAc+b,GAAmBjc,UAAWic,IAKrC,MAAMG,WAA2BlI,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAKue,iBAAiBrJ,IAAIoJ,GAAmBpc,UAAWkD,EACvG,CACI,gBAAAmZ,CAAiBrJ,GACb,OAAOyD,GAA6BzD,EAAGnT,KAAKyc,KACpD,EAKAF,GAAmBpc,UAAY,cAC/BE,EAAckc,GAAmBpc,UAAWoc,IAKrC,MAAMG,WAA2BrI,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAK0e,iBAAiBxJ,IAAIuJ,GAAmBvc,UAAWkD,EACvG,CACI,gBAAAsZ,CAAiBxJ,GACb,OAAOyD,GAA6BzD,EAAGnT,KAAK4c,KACpD,EAKAF,GAAmBvc,UAAY,cAC/BE,EAAcqc,GAAmBvc,UAAWuc,IAKrC,MAAMG,WAA4BxI,GACrC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAK6e,kBAAkB3J,IAAI0J,GAAoB1c,UAAWkD,EAC5G,CACI,iBAAAyZ,CAAkB3J,GACd,OAAOyD,GAA6BzD,EAAGnT,KAAK+c,MACpD,EAKAF,GAAoB1c,UAAY,eAChCE,EAAcwc,GAAoB1c,UAAW0c,IAKtC,MAAMG,WAA4B3I,GACrC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAKgf,kBAAkB9J,IAAI6J,GAAoB7c,UAAWkD,EAC5G,CACI,iBAAA4Z,CAAkB9J,GACd,OAAOyD,GAA6BzD,EAAGnT,KAAKkd,MACpD,EAKAF,GAAoB7c,UAAY,eAChCE,EAAc2c,GAAoB7c,UAAW6c,IAKtC,MAAMG,WAA4B9I,GACrC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAKmf,kBAAkBjK,IAAIgK,GAAoBhd,UAAWkD,EAC5G,CACI,iBAAA+Z,CAAkBjK,GACd,OAAOyD,GAA6BzD,EAAGnT,KAAKqd,MACpD,EAKAF,GAAoBhd,UAAY,eAChCE,EAAc8c,GAAoBhd,UAAWgd,IAKtC,MAAMG,WAA0BjJ,GACnC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAKsf,gBAAgBpK,IAAImK,GAAkBnd,UAAWkD,EACxG,CACI,eAAAka,CAAgBpK,GACZ,OAAOyD,GAA6BzD,EAAGnT,KAAKwd,IACpD,EAKAF,GAAkBnd,UAAY,aAC9BE,EAAcid,GAAkBnd,UAAWmd,IAKpC,MAAMG,WAA0BpJ,GACnC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAKyf,gBAAgBvK,IAAIsK,GAAkBtd,UAAWkD,EACxG,CACI,eAAAqa,CAAgBvK,GACZ,OAAOyD,GAA6BzD,EAAGnT,KAAK2d,IACpD,EAKAF,GAAkBtd,UAAY,aAC9BE,EAAcod,GAAkBtd,UAAWsd,IAKpC,MAAMG,WAA2BvJ,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAK4f,iBAAiB1K,IAAIyK,GAAmBzd,UAAWkD,EAC1G,CACI,gBAAAwa,CAAiB1K,GACb,OAAOyD,GAA6BzD,EAAGnT,KAAK8d,KACpD,EAKAF,GAAmBzd,UAAY,cAC/BE,EAAcud,GAAmBzd,UAAWyd,IAKrC,MAAMG,WAA4B1J,GACrC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAK+f,kBAAkB7K,IAAI4K,GAAoB5d,UAAWkD,EAC5G,CACI,iBAAA2a,CAAkB7K,GACd,OAAOyD,GAA6BzD,EAAGnT,KAAKie,MACpD,EAKAF,GAAoB5d,UAAY,eAChCE,EAAc0d,GAAoB5d,UAAW4d,IAKtC,MAAMG,WAA2B7J,GACpC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAKkgB,iBAAiBhL,IAAI+K,GAAmB/d,UAAWkD,EAC1G,CACI,gBAAA8a,CAAiBhL,GACb,OAAOyD,GAA6BzD,EAAGnT,KAAKoe,KACpD,EAKAF,GAAmB/d,UAAY,cAC/BE,EAAc6d,GAAmB/d,UAAW+d,IAKrC,MAAMG,WAA+BhK,GACxC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAKqgB,qBAAqBnL,IAAIkL,GAAuBle,UAAWkD,EAClH,CACI,oBAAAib,CAAqBnL,GACjB,OAAOyD,GAA6BzD,EAAGnT,KAAKue,KACpD,EAKAF,GAAuBle,UAAY,kBACnCE,EAAcge,GAAuBle,UAAWke,IAKzC,MAAMG,WAA0B3K,GACnC,WAAAhW,CAAYwF,GACRzB,MAAMnB,EAAaE,EAAgBA,GAAgB,CAACwS,EAAGgB,IAAMlW,KAAKwgB,gBAAgBtL,EAAGgB,IAAIqK,GAAkBre,UAAWkD,EAC9H,CACI,eAAAob,CAAgBtL,EAAGgB,GACf,OAAOkE,GAA8BlF,EAAGgB,EAAGnU,KAAK0e,IACxD,EAKAF,GAAkBre,UAAY,aAC9BE,EAAcme,GAAkBre,UAAWqe,IAKpC,MAAMG,WAA6BtK,GACtC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaE,GAAiBwS,GAAMlV,KAAK2gB,mBAAmBzL,IAAIwL,GAAqBxe,UAAWkD,EAC9G,CACI,kBAAAub,CAAmBzL,GAEf,OADmByB,GAAgBzB,IAE/B,IAAK,UACL,IAAK,UACL,IAAK,UACD,OAAOA,EAAE1U,SACb,QACI,MAAM,IAAIG,MAAM,kCAAkCuU,KAElE,EAKAwL,GAAqBxe,UAAY,gBACjCE,EAAcse,GAAqBxe,UAAWwe,IAKvC,MAAME,WAAgCxK,GACzC,WAAAxW,CAAYwF,GACRzB,MAAMnB,EAAaA,GAAc0S,GAAMlV,KAAK6gB,sBAAsB3L,IAAI0L,GAAwB1e,UAAWkD,EACjH,CACI,qBAAAyb,CAAsB3L,GAElB,OADmByB,GAAgBzB,IAE/B,IAAK,UACL,IAAK,UACL,IAAK,UACD,OAAOA,EAAE4L,YACb,QACI,MAAM,IAAIngB,MAAM,0BAA0BuU,KAE1D,EAKA0L,GAAwB1e,UAAY,mBACpCE,EAAcwe,GAAwB1e,UAAW0e,IAK1C,MAAMG,WAA4BnL,GACrC,WAAAhW,CAAYwF,GACRzB,MAAMZ,EAAiBA,EAAiBA,GAAiB,CAACmS,EAAGgB,IAAMlT,EAAQge,MAAM9L,EAAGgB,IAAI6K,GAAoB7e,UAAWkD,EAC/H,EAKA2b,GAAoB7e,UAAY,eAChCE,EAAc2e,GAAoB7e,UAAW6e,IAKtC,MAAME,WAA+BrL,GACxC,WAAAhW,CAAYwF,GACRzB,MAAMf,EAAiBF,EAAgBE,GAAiB,CAACsS,EAAGgB,IAAMrT,EAAQqe,UAAUhM,EAAG/R,EAAOge,UAAUjL,KAAK+K,GAAuB/e,UAAWkD,EACvJ,EAKA6b,GAAuB/e,UAAY,kBACnCE,EAAc6e,GAAuB/e,UAAW+e,IAKzC,MAAMG,WAA+B9K,GACxC,WAAA1W,CAAYwF,GACRzB,MAAMZ,EAAiBA,EAAiBL,EAAgBK,GAAiB,CAACmS,EAAGgB,EAAGQ,IAAM1T,EAAQqe,qBAAqBnM,EAAG/R,EAAOme,aAAapL,EAAGQ,KAAK0K,GAAuBlf,UAAWkD,EAC5L,EAKAgc,GAAuBlf,UAAY,kBACnCE,EAAcgf,GAAuBlf,UAAWkf,IAKzC,MAAMG,WAAgCnL,GACzC,WAAAxW,CAAYwF,GACRzB,MAAMT,EAAgBA,GAAiBgS,GAAM/R,EAAOqe,UAAUtM,IAAIqM,GAAwBrf,UAAWkD,EAC7G,EAKAmc,GAAwBrf,UAAY,mBACpCE,EAAcmf,GAAwBrf,UAAWqf,IAK1C,MAAME,WAAkCrL,GAC3C,WAAAxW,CAAYwF,GACRzB,MAAMT,EAAgBR,GAAiBwS,GAAMA,EAAEwM,eAAeD,GAA0Bvf,UAAWkD,EAC3G,EAKAqc,GAA0Bvf,UAAY,qBACtCE,EAAcqf,GAA0Bvf,UAAWuf,IAK5C,MAAME,WAAmCvL,GAC5C,WAAAxW,CAAYwF,GACRzB,MAAMT,EAAgBA,GAAiBgS,GAAM/R,EAAOye,OAAO1M,IAAIyM,GAA2Bzf,UAAWkD,EAC7G,EAKAuc,GAA2Bzf,UAAY,sBACvCE,EAAcuf,GAA2Bzf,UAAWyf,IAK7C,MAAME,WAA6BjM,GACtC,WAAAhW,CAAYwF,GACRzB,MAAMT,EAAgBA,EAAgBA,GAAgB,CAACgS,EAAGgB,IAAMA,EAAEpU,SAASoT,IAAI2M,GAAqB3f,UAAWkD,EACvH,EAKAyc,GAAqB3f,UAAY,gBACjCE,EAAcyf,GAAqB3f,UAAW2f,IAKvC,MAAMC,WAAiC1L,GAC1C,WAAAxW,CAAYwF,GACRzB,MAAMH,EAA0BA,GAA2B0R,GAAM,IAAI3T,GAAkB2T,EAAE1T,QAAQsgB,GAAyB5f,UAAWkD,EAC7I,EAKA0c,GAAyB5f,UAAY,oBACrCE,EAAc0f,GAAyB5f,UAAW4f,IAK3C,MAAMC,WAAiCnM,GAC1C,WAAAhW,CAAYwF,GACRzB,MAAMH,EAA0BA,EAA0BA,GAA0B,CAAC0R,EAAGgB,IAAM,IAAI3U,EAAiB2T,EAAE1T,MAAQ0U,EAAE1U,QAAQugB,GAAyB7f,UAAWkD,EACnL,EAKA2c,GAAyB7f,UAAY,oBACrCE,EAAc2f,GAAyB7f,UAAW6f,IAK3C,MAAMC,WAAgCpM,GACzC,WAAAhW,CAAYwF,GACRzB,MAAMH,EAA0BA,EAA0BA,GAA0B,CAAC0R,EAAGgB,IAAM,IAAI3U,EAAiB2T,EAAE1T,MAAQ0U,EAAE1U,QAAQwgB,GAAwB9f,UAAWkD,EAClL,EAKA4c,GAAwB9f,UAAY,mBACpCE,EAAc4f,GAAwB9f,UAAW8f,IAK1C,MAAMC,WAAiCrM,GAC1C,WAAAhW,CAAYwF,GACRzB,MAAMH,EAA0BA,EAA0BA,GAA0B,CAAC0R,EAAGgB,IAAM,IAAI3U,EAAiB2T,EAAE1T,MAAQ0U,EAAE1U,QAAQygB,GAAyB/f,UAAWkD,EACnL,EAKA6c,GAAyB/f,UAAY,oBACrCE,EAAc6f,GAAyB/f,UAAW+f,IAK3C,MAAMC,WAAuCtM,GAChD,WAAAhW,CAAYwF,GACRzB,MAAMH,EAA0BA,EAA0BA,GAA0B,CAAC0R,EAAGgB,IAAM,IAAI3U,EAAiB2T,EAAE1T,OAAS0U,EAAE1U,QAAQ0gB,GAA+BhgB,UAAWkD,EAC1L,EAKA8c,GAA+BhgB,UAAY,0BAC3CE,EAAc8f,GAA+BhgB,UAAWggB,IAKjD,MAAMC,WAAwCvM,GACjD,WAAAhW,CAAYwF,GACRzB,MAAMH,EAA0BA,EAA0BA,GAA0B,CAAC0R,EAAGgB,IAAM,IAAI3U,EAAiB2T,EAAE1T,OAAS0U,EAAE1U,QAAQ2gB,GAAgCjgB,UAAWkD,EAC3L,EAKA+c,GAAgCjgB,UAAY,2BAC5CE,EAAc+f,GAAgCjgB,UAAWigB,IAKlD,MAAMC,WAAwChM,GACjD,WAAAxW,CAAYwF,GACRzB,MAAMH,EAA0BA,GAA2B0R,GAAM,IAAI3T,EAAiBQ,KAAKsgB,MAAMnN,EAAE1T,SAAS4gB,GAAgClgB,UAAWkD,EAC/J,EAKAgd,GAAgClgB,UAAY,2BAC5CE,EAAcggB,GAAgClgB,UAAWkgB,IAKlD,MAAME,WAAyClM,GAClD,WAAAxW,CAAYwF,GACRzB,MAAMH,EAA0BA,GAA2B0R,GAAM,IAAI3T,EAAiB2T,EAAE1T,MAAQ,GAAKO,KAAKsgB,MAAMnN,EAAE1T,OAAS0T,EAAE1T,OAAS,KAAK8gB,GAAiCpgB,UAAWkD,EAC/L,EAKAkd,GAAiCpgB,UAAY,4BAC7CE,EAAckgB,GAAiCpgB,UAAWogB,IAsBnD,MAAMC,WAAmCnM,GAC5C,WAAAxW,CAAYwF,GACRzB,MAAMH,EAA0BA,GAA2B0R,GAAM,IAAI3T,EAjB7E,SAAoBG,GAChB,IAAIuI,EAAS,EACb,KAAOvI,GAGHuI,GAAc,EAAJvI,EAEVA,IAAM,EAEV,OAAOuI,CACX,CAO8FuY,CAAWtN,EAAE1T,SAAS+gB,GAA2BrgB,UAAWkD,EAC1J,EAKAmd,GAA2BrgB,UAAY,sBACvCE,EAAcmgB,GAA2BrgB,UAAWqgB,ICn0C7C,MAAME,WAA0B1S,EACnC,WAAAnQ,CAIAwF,EAAS,CAAEsd,WAAY,IAAInhB,EAAiB,KACxCoC,MAAMyB,GACNpF,KAAKoF,OAASA,EACdpF,KAAK2iB,MAAQ3iB,KAAKmH,qBAAqB,SACvCnH,KAAK0B,EAAI1B,KAAKwF,kBAAkB,IAAKhC,GACrCxD,KAAKwB,MAAQxB,KAAK0F,mBAAmB,QAASlC,EACtD,CACI,QAAAqD,CAAShD,EAAS+e,GACd,GAAIA,IAAkB5iB,KAAK2iB,MACvB3iB,KAAKwB,MAAMoC,SAAS5D,KAAKoF,OAAOsd,WAAY7e,OAE3C,CACD,MAAMgf,EAAoB7iB,KAAKwB,MAAM0C,SAASL,GAC1Cgf,EAAkBrhB,MAAQxB,KAAK0B,EAAEwC,SAASL,GAASrC,QACnDxB,KAAKwB,MAAMoC,SAAS,IAAIrC,EAAiBshB,EAAkBrhB,MAAQ,GAAIqC,GACvE7D,KAAK0H,IAAId,gBAAgB/C,GAEzC,CACA,CAII,YAAA7C,GACI,OAAOyhB,GAAkBvgB,SACjC,EAKAugB,GAAkBvgB,UAAY,aAC9BE,EAAcqgB,GAAkBvgB,UAAWugB,ICpCpC,MAAMK,WAAkC3d,EAK3C,WAAAvF,CAAYwF,GACRzB,MAAMyB,GACNpF,KAAKoF,OAASA,EAEdpF,KAAK2F,OAAS3F,KAAK0F,mBAAmBN,EAAO2d,aAAcvgB,EACnE,CAII,cAAA4B,CAAeP,GACX,MAAMmf,EAAoBhjB,KAAKoF,OAAO2d,aAClClf,EAAQ6E,YAAYsa,IACpBhjB,KAAK2F,OAAO/B,SAASC,EAAQ+E,YAAYoa,GAAoBnf,EAEzE,CAKI,YAAA7C,GACI,OAAO8hB,GAA0B5gB,SACzC,CAKI,SAAArB,CAAUC,GACN6C,MAAM9C,UAAUC,GAChBA,EAAoBsE,OAAO2d,aAAe/iB,KAAKoF,OAAO2d,YAC9D,EAKAD,GAA0B5gB,UAAY,qBACtCE,EAAc0gB,GAA0B5gB,UAAW4gB,ICxC5C,MAAMG,WAAkClT,EAC3C,WAAAnQ,CAIAwF,GACIzB,MAAMyB,GACNpF,KAAKoF,OAASA,EACdpF,KAAKyF,MAAQzF,KAAKwF,kBAAkBJ,EAAO2d,aAAcvgB,EACjE,CACI,QAAAqE,CAAShD,GACL,MAAMmf,EAAoBhjB,KAAKoF,OAAO2d,aAChCG,EAAaljB,KAAKyF,MAAMvB,SAASL,GACvCA,EAAQ8E,YAAYqa,EAAmBE,GACvCljB,KAAK0H,IAAId,gBAAgB/C,EACjC,CAII,YAAA7C,GACI,OAAOiiB,GAA0B/gB,SACzC,EAKA+gB,GAA0B/gB,UAAY,qBACtCE,EAAc6gB,GAA0B/gB,UAAW+gB,IC3B5C,MAAME,WAAgCpT,EACzC,WAAAnQ,CAIAwF,GACIzB,MAAMyB,GACNpF,KAAKoF,OAASA,EACdpF,KAAKojB,UAAYpjB,KAAKwF,kBAAkB,YAAa7C,GACrD3C,KAAKqjB,SAAWrjB,KAAKoH,sBAAsB,WACnD,CACI,QAAAP,CAAShD,EAASyf,GACd,IAAIC,EAAiBvjB,KAAKojB,UAAUlf,SAASL,GAI7C,IAHI7D,KAAKoF,QAAQoe,OAASD,GACtBvjB,KAAKqjB,SAASzc,gBAAgB/C,GAE3B0f,GACHvjB,KAAKqjB,SAASzc,gBAAgB/C,GAC9B0f,EAAiBvjB,KAAKojB,UAAUlf,SAASL,GAE7C7D,KAAK0H,IAAId,gBAAgB/C,EACjC,CAII,YAAA7C,GACI,OAAOmiB,GAAwBjhB,SACvC,CAKI,SAAArB,CAAUC,GACN6C,MAAM9C,UAAUC,GAChBA,EAAoB0iB,KAAOxjB,KAAKoF,QAAQoe,IAChD,EAKAL,GAAwBjhB,UAAY,mBACpCE,EAAc+gB,GAAwBjhB,UAAWihB,ICjC1C,MAAMM,GAAyB,CAClC,oBAAqB/T,EAA8BxN,UACnD,mBAAoB2N,EAA6B3N,UACjDwd,IAAK1P,EAAyB9N,UAC9B,aAAc6Q,EAAoB7Q,UAClC,mBAAoBmR,EAA8BnR,UAClD,sBAAuB0R,GAAiC1R,UACxD,gBAAiB4R,GAAuB5R,UACxC,YAAa4S,GAA0B5S,UACvC,YAAa+S,GAA0B/S,UACvC,WAAYugB,GAAkBvgB,UAC9B,eAAgB4gB,GAA0B5gB,UAC1C,eAAgB+gB,GAA0B/gB,UAC1C,iBAAkBihB,GAAwBjhB,UAC1C,cAAe2V,GAAqB3V,UACpC,SAAUgW,GAAgBhW,UAC1B,UAAWkW,GAAiBlW,UAC5B,WAAYoW,GAAkBpW,UAC9B,WAAYuW,GAAkBvW,UAC9B,WAAY+W,GAAkB/W,UAC9B,YAAakX,GAAmBlX,UAChC,aAAcqX,GAAoBrX,UAClC,aAAcwX,GAAoBxX,UAClC,YAAa2X,GAAmB3X,UAChC,aAAc8X,GAAoB9X,UAClC,WAAYgY,GAAkBhY,UAC9B,WAAY+U,GAAkB/U,UAC9B,WAAYmV,GAAuBnV,UACnC,WAAYqV,GAAuBrV,UACnC,WAAYyV,GAAqBzV,UACjC,WAAYmY,GAAwBnY,UACpC,WAAYqY,GAAkBrY,UAC9B,WAAYwY,GAAkBxY,UAC9B,aAAc6Y,GAAoB7Y,UAClC,gBAAiBgZ,GAAuBhZ,UACxC,WAAYkZ,GAA0BlZ,UACtC,UAAWqZ,GAAiBrZ,UAC5B,UAAWwZ,GAAuBxZ,UAClC,UAAW0Z,GAA8B1Z,UACzC,UAAW4Z,GAA0B5Z,UACrC,UAAW8Z,GAAiC9Z,UAC5C,aAAcga,GAAoBha,UAClC,aAAcma,GAAoBna,UAClC,WAAYsa,GAAuBta,UACnC,WAAYya,GAAuBza,UACnC,WAAY4a,GAAkB5a,UAC9B,WAAY+a,GAAkB/a,UAC9B,WAAYkb,GAAkBlb,UAC9B,YAAaqb,GAAmBrb,UAChC,YAAawb,GAAmBxb,UAChC,YAAa2b,GAAmB3b,UAChC,aAAc8b,GAAoB9b,UAClC,YAAaic,GAAmBjc,UAChC,YAAaoc,GAAmBpc,UAChC,YAAauc,GAAmBvc,UAChC,aAAc0c,GAAoB1c,UAClC,aAAc6c,GAAoB7c,UAClC,aAAcgd,GAAoBhd,UAClC,WAAYmd,GAAkBnd,UAC9B,WAAYsd,GAAkBtd,UAC9B,YAAayd,GAAmBzd,UAChC,aAAc4d,GAAoB5d,UAClC,YAAa+d,GAAmB/d,UAChC,YAAake,GAAuBle,UACpC,WAAYqe,GAAkBre,UAC9B,cAAewe,GAAqBxe,UACpC,iBAAkB0e,GAAwB1e,UAC1C,WAAY6V,GAAkB7V,UAC9B,aAAc6e,GAAoB7e,UAClC,gBAAiB+e,GAAuB/e,UACxC,gBAAiBkf,GAAuBlf,UACxC,iBAAkBqf,GAAwBrf,UAC1C,mBAAoBuf,GAA0Bvf,UAC9C,eAAgByf,GAA2Bzf,UAC3C,cAAe2f,GAAqB3f,UACpC,WAAY4f,GAAyB5f,UACrC,WAAY6f,GAAyB7f,UACrC,UAAW8f,GAAwB9f,UACnC,WAAY+f,GAAyB/f,UACrC,WAAYigB,GAAgCjgB,UAC5C,WAAYggB,GAA+BhgB,UAC3C,WAAYkgB,GAAgClgB,UAC5C,WAAYogB,GAAiCpgB,UAC7C,cAAeqgB,GAA2BrgB,WAEjCwhB,GAAwB,CACjCC,OAAQ,UACRC,OAAQ,UACRC,OAAQ,UACRC,SAAU,SACVC,IAAK,oBCvGT,SAASC,GAAqBC,EAAcC,EAAYrgB,GACpD,QAA0BpB,IAAtBwhB,EAAazY,KAAoB,CAEjC,MAAMA,EAAO0Y,EAAWC,OAASD,EAAWC,MAAMF,EAAazY,MAC/D,IAAKA,EACD,MAAM,IAAI7K,MAAM,GAAGkD,oBAA0BogB,EAAazY,QAE9D,MAAM4Y,EAAY5Y,EAAK4Y,UACvB,IAAKA,EACD,MAAM,IAAIzjB,MAAM,GAAGkD,WAAiBogB,EAAazY,yBAErD,MAAM6Y,EAAgBX,GAAsBU,GAC5C,MAAO,CACH5iB,MAAOyiB,EAAaziB,MACpBT,UAAWsjB,EAEvB,CAEQ,OAAOJ,EAAaziB,KAE5B,CA+BA,SAAS8iB,GAAajV,EAAIkV,EAAWL,GACjC,MAAMnjB,EAAY0iB,GAAuBc,EAAU/Y,MACnD,IAAKzK,EACD,MAAM,IAAIJ,MAAM,uCAAuC0O,0BAA2BkV,EAAU/Y,QAEhG,MAAMtL,EAAWmP,EAAGwF,WACdzP,EApCV,SAA8Bmf,EAAWL,EAAY7U,GACjD,MAAMmV,EAAY,CAAE,EACdC,EAAoBF,EAAUlb,eAAiB,GACrD,IAAK,MAAM4a,KAAgBQ,EACvB,GAAwB,gBAApBR,EAAa5U,GAAsB,CACnC,MAAMqV,EAAcR,EAAWS,cAAgBT,EAAWS,aAAaV,EAAaziB,OACpF,IAAKkjB,EACD,MAAM,IAAI/jB,MAAM,uCAAuC0O,4BAA6B4U,EAAaziB,SAErGgjB,EAAUhR,QAAUkR,EAAYrV,GAChCmV,EAAUlR,UAAYoR,EAAYE,OAAOlR,KAAKkD,GAAMA,EAAEvH,IAClE,MACa,GAAwB,aAApB4U,EAAa5U,GAAmB,CACrC,MAAMwV,EAAWX,EAAWY,WAAaZ,EAAWY,UAAUb,EAAaziB,OAC3E,IAAKqjB,EACD,MAAM,IAAIlkB,MAAM,uCAAuC0O,wBAAyB4U,EAAaziB,SAEjGgjB,EAAUzB,aAAe8B,EAASxV,EAC9C,MACa,GAAwB,SAApB4U,EAAa5U,GAAe,CAEjC,MAAM0V,EAAYd,EAAaziB,MAC/BgjB,EAAU1Z,KAAOia,CAC7B,MAEYP,EAAUP,EAAa5U,IAAM2U,GAAqBC,EAAcC,EAAY,uCAAuC7U,KAG3H,OAAOmV,CACX,CAOmBQ,CAAqBT,EAAWL,EAAYhkB,GAM3D,MAAO,CACHa,YACAqE,SACAlF,WACAwG,SATa6d,EAAU7d,SAUvBrB,WATe,GAUfC,YATgB,GAUhB0B,aATiB,GAUjBC,cATkB,GAW1B,CCvEO,MAAMge,WAA2CC,EACpD,WAAAtlB,CAAYulB,GACRxhB,MAAMwhB,EAAMC,GACpB,EAEA,MAmBMA,GAAW,CACbC,MApBc,CACdC,UAAW,CACPC,YAAY,EACZC,YAAa,CACTha,KAAM,UACNqD,IAAMjF,GACoBA,EAAK6b,sBACNC,SAEzBnW,IAAK,CAAC/N,EAAOoI,KACaA,EAAK6b,sBACbC,SAAWlkB,CAAK,EAElCyJ,UAAUrB,GACCA,EAAK6b,0BClBtBE,GAAO,oBAIN,MAAMC,GAKT,WAAAhmB,CAAYimB,GACR7lB,KAAK6lB,QAAUA,EAIf7lB,KAAKH,KAAO8lB,GACZ3lB,KAAK8lB,QAAU9lB,KAAK6lB,QAAQE,gBAAgBJ,IAC5C3lB,KAAKgmB,eAAiB,IAAIf,GAAmCjlB,KAAK6lB,QAAQV,KAClF,CACI,OAAAxY,GACI3M,KAAK6lB,QAAU,YACR7lB,KAAKgmB,cACpB,CACI,OAAAC,GACI,IAAKjmB,KAAK6lB,QAAQK,eAAiBlmB,KAAKgmB,eACpC,OAEJ,MAAMphB,EAAQ5E,KAAK6lB,QAAQK,aACrBC,EAA0BnmB,KAAK6lB,QAAQV,KAAKiB,YAAYR,kBACxDS,EFiDP,SAA0ClB,GAE7C,MAAMthB,EAAU,CACZ3D,SAAUC,IACV+H,eAAgB,CAAE,EAClBE,kBAAmB,CAAE,GAEnB2F,EAAoB,CAAClK,GAErByiB,EAAsB,GAC5B,IAAK,IAAIxgB,EAAI,EAAGA,EAAIqf,EAAKE,MAAM7kB,OAAQsF,IAAK,CACxC,MACMygB,EAAqBjC,GAAaxe,EADtBqf,EAAKE,MAAMvf,GACyBqf,GACtDmB,EAAoB1lB,KAAK2lB,EACjC,CAEI,IAAK,IAAIzgB,EAAI,EAAGA,EAAIqf,EAAKE,MAAM7kB,OAAQsF,IAAK,CACxC,MAAMye,EAAYY,EAAKE,MAAMvf,GAEvB0gB,EAAUF,EAAoBxgB,GAC9B2gB,EAAYlC,EAAUmC,OAAS,GAErC,IAAK,MAAMC,KAAQF,EAAW,CAC1B,MAAMG,EAAgBD,EAAKtX,GAErBwX,EAAY,CACd3mB,SAAUC,IACVN,KAAM+mB,EACN9mB,gBAAiB,EACjBM,kBAAmB,IAEvBomB,EAAQvf,cAAcrG,KAAKimB,GAE3B,MAAMC,EAAWH,EAAK/c,KAChBmd,EAAmBJ,EAAKK,OAExBC,EAASX,EAAoBQ,GACnC,IAAKG,EACD,MAAM,IAAItmB,MAAM,uCAAuCmF,kCAAkCghB,4CAAmDhhB,cAAc8gB,KAG9J,IAAIM,EAAWD,EAAOjgB,aAAanB,MAAMshB,GAAMA,EAAEtnB,OAASknB,IAErDG,IACDA,EAAW,CACPhnB,SAAUC,IACVN,KAAMknB,EACNjnB,gBAAiB,EACjBM,kBAAmB,IAEvB6mB,EAAOjgB,aAAapG,KAAKsmB,IAG7BA,EAAS9mB,kBAAkBQ,KAAKimB,EAAU3mB,UAC1C2mB,EAAUzmB,kBAAkBQ,KAAKsmB,EAAShnB,SACtD,CAEQ,MAAMknB,EAAa7C,EAAUK,QAAU,GACvC,IAAK,MAAMpjB,KAAS4lB,EAAY,CAC5B,MAAMC,EAAe7lB,EAAM6N,GAErB6X,EAAW,CACbhnB,SAAUC,IACVN,KAAMwnB,EACNvnB,gBAAiB,EACjBM,kBAAmB,IAGvB,GADAomB,EAAQnhB,WAAWzE,KAAKsmB,QACJzkB,IAAhBjB,EAAMA,MAAqB,CAE3B,MAAM8lB,EAAiBtD,GAAqBxiB,EAAO2jB,EAAM,uCAAuCrf,KAEhGjC,EAAQuE,kBAAkB8e,EAAShnB,UAAYonB,CAC/D,KACiB,SAAmB7kB,IAAfjB,EAAMoI,WAAuCnH,IAAjBjB,EAAMwlB,OAyBvC,MAAM,IAAIrmB,MAAM,uCAAuCmF,qBAAqBuhB,aAAwBvhB,KAzBvC,CAE7D,MAAMyhB,EAAY/lB,EAAMoI,KAClB4d,EAAoBhmB,EAAMwlB,OAE1BS,EAAUnB,EAAoBiB,GACpC,IAAKE,EACD,MAAM,IAAI9mB,MAAM,uCAAuCmF,kCAAkCyhB,uCAA+CzhB,aAAauhB,KAEzJ,IAAIR,EAAYY,EAAQniB,YAAYO,MAAMshB,GAAMA,EAAEtnB,OAAS2nB,IAEtDX,IACDA,EAAY,CACR3mB,SAAUC,IACVN,KAAM2nB,EACN1nB,gBAAiB,EACjBM,kBAAmB,IAEvBqnB,EAAQniB,YAAY1E,KAAKimB,IAG7BK,EAAS9mB,kBAAkBQ,KAAKimB,EAAU3mB,UAC1C2mB,EAAUzmB,kBAAkBQ,KAAKsmB,EAAShnB,SAC1D,CAGA,CACA,CACA,CACI,MAAM4kB,EAAYK,EAAKL,WAAa,GAEpC,IAAK,IAAIhf,EAAI,EAAGA,EAAIgf,EAAUtkB,OAAQsF,IAAK,CACvC,MAAM+e,EAAWC,EAAUhf,GACrBid,EAAe8B,EAASxV,GAC9BxL,EAAQqE,eAAe6a,GAAgBiB,GAAqBa,EAAUM,EAAM,2CAA2Crf,IAC/H,CACI,MAAO,CACH+H,UAAWyY,EACXvY,oBAER,CEnKqB2Z,CAAiCvB,GACxC1Z,EAAc,IAAI+B,EAAqB,CAAE5J,UAC/CuH,EAAUjL,MAAMmlB,EAAM,CAAE5Z,cAAalG,cAAevG,KAAKgmB,iBACzDvZ,EAAYK,OACpB,EAEA6a,EAAwBhC,IACxBiC,EAAsBjC,IAAM,GAAOkC,GAAW,IAAIjC,GAAkBiC"}