@itwin/core-frontend 5.1.2 → 5.1.3-experimental.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (982) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/AccuDraw.js.map +1 -1
  3. package/lib/cjs/AccuSnap.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
  6. package/lib/cjs/AuxCoordSys.js.map +1 -1
  7. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  8. package/lib/cjs/BingLocation.js.map +1 -1
  9. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  11. package/lib/cjs/CatalogConnection.js.map +1 -1
  12. package/lib/cjs/CategorySelectorState.js.map +1 -1
  13. package/lib/cjs/ChangeFlags.js.map +1 -1
  14. package/lib/cjs/CheckpointConnection.js.map +1 -1
  15. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  16. package/lib/cjs/CoordSystem.js.map +1 -1
  17. package/lib/cjs/DecorationsCache.js.map +1 -1
  18. package/lib/cjs/DevTools.js.map +1 -1
  19. package/lib/cjs/DisplayStyleState.js.map +1 -1
  20. package/lib/cjs/DrawingViewState.js +5 -5
  21. package/lib/cjs/DrawingViewState.js.map +1 -1
  22. package/lib/cjs/ElementLocateManager.js.map +1 -1
  23. package/lib/cjs/EmphasizeElements.js.map +1 -1
  24. package/lib/cjs/EntityState.js.map +1 -1
  25. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  26. package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
  27. package/lib/cjs/FlashSettings.js.map +1 -1
  28. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  29. package/lib/cjs/Frustum2d.js.map +1 -1
  30. package/lib/cjs/FrustumAnimator.js.map +1 -1
  31. package/lib/cjs/FuzzySearch.js.map +1 -1
  32. package/lib/cjs/GeoServices.js.map +1 -1
  33. package/lib/cjs/GlobeAnimator.js.map +1 -1
  34. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  35. package/lib/cjs/HitDetail.js.map +1 -1
  36. package/lib/cjs/IModelApp.js.map +1 -1
  37. package/lib/cjs/IModelConnection.js +26 -26
  38. package/lib/cjs/IModelConnection.js.map +1 -1
  39. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  40. package/lib/cjs/IModeljs-css.js +133 -133
  41. package/lib/cjs/IModeljs-css.js.map +1 -1
  42. package/lib/cjs/IpcApp.js.map +1 -1
  43. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  44. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  45. package/lib/cjs/MarginPercent.js.map +1 -1
  46. package/lib/cjs/Marker.js.map +1 -1
  47. package/lib/cjs/ModelSelectorState.js.map +1 -1
  48. package/lib/cjs/ModelState.js.map +1 -1
  49. package/lib/cjs/NativeApp.js.map +1 -1
  50. package/lib/cjs/NativeAppLogger.js.map +1 -1
  51. package/lib/cjs/NoRenderApp.js.map +1 -1
  52. package/lib/cjs/NotificationManager.js.map +1 -1
  53. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  54. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  55. package/lib/cjs/RealityDataSource.js.map +1 -1
  56. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  57. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  58. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  59. package/lib/cjs/SelectionSet.js.map +1 -1
  60. package/lib/cjs/SheetViewState.js.map +1 -1
  61. package/lib/cjs/SpatialClassifiersState.js.map +1 -1
  62. package/lib/cjs/SpatialViewState.js.map +1 -1
  63. package/lib/cjs/Sprites.js.map +1 -1
  64. package/lib/cjs/StandardView.js.map +1 -1
  65. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  66. package/lib/cjs/TentativePoint.js.map +1 -1
  67. package/lib/cjs/Tiles.js.map +1 -1
  68. package/lib/cjs/TxnEntityChanges.js.map +1 -1
  69. package/lib/cjs/UserPreferences.js.map +1 -1
  70. package/lib/cjs/ViewAnimation.js.map +1 -1
  71. package/lib/cjs/ViewContext.js.map +1 -1
  72. package/lib/cjs/ViewCreator2d.js.map +1 -1
  73. package/lib/cjs/ViewCreator3d.js.map +1 -1
  74. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  75. package/lib/cjs/ViewManager.js.map +1 -1
  76. package/lib/cjs/ViewPose.js.map +1 -1
  77. package/lib/cjs/ViewState.js.map +1 -1
  78. package/lib/cjs/ViewStatus.js.map +1 -1
  79. package/lib/cjs/ViewingSpace.js.map +1 -1
  80. package/lib/cjs/Viewport.js.map +1 -1
  81. package/lib/cjs/ViewportSync.js.map +1 -1
  82. package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -1
  83. package/lib/cjs/common/ImageUtil.js.map +1 -1
  84. package/lib/cjs/common/ViewRect.js.map +1 -1
  85. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  86. package/lib/cjs/common/gltf/GltfModel.js.map +1 -1
  87. package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
  88. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  89. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
  90. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  91. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
  92. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  93. package/lib/cjs/common/internal/Symbols.js.map +1 -1
  94. package/lib/cjs/common/internal/render/AnimationNodeId.js.map +1 -1
  95. package/lib/cjs/common/internal/render/AuxChannelTable.js.map +1 -1
  96. package/lib/cjs/common/internal/render/ColorMap.js.map +1 -1
  97. package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
  98. package/lib/cjs/common/internal/render/EdgeParams.js.map +1 -1
  99. package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -1
  100. package/lib/cjs/common/internal/render/GeometryList.js.map +1 -1
  101. package/lib/cjs/common/internal/render/GeometryPrimitives.js.map +1 -1
  102. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  103. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
  104. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  105. package/lib/cjs/common/internal/render/LineCode.js.map +1 -1
  106. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  107. package/lib/cjs/common/internal/render/MeshBuilderMap.js.map +1 -1
  108. package/lib/cjs/common/internal/render/MeshParams.js.map +1 -1
  109. package/lib/cjs/common/internal/render/MeshPrimitive.js.map +1 -1
  110. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  111. package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -1
  112. package/lib/cjs/common/internal/render/PointCloudPrimitive.js.map +1 -1
  113. package/lib/cjs/common/internal/render/PointStringParams.js.map +1 -1
  114. package/lib/cjs/common/internal/render/Polyface.js.map +1 -1
  115. package/lib/cjs/common/internal/render/PolylineParams.js.map +1 -1
  116. package/lib/cjs/common/internal/render/Primitives.js.map +1 -1
  117. package/lib/cjs/common/internal/render/Strokes.js.map +1 -1
  118. package/lib/cjs/common/internal/render/SurfaceParams.js.map +1 -1
  119. package/lib/cjs/common/internal/render/VertexIndices.js.map +1 -1
  120. package/lib/cjs/common/internal/render/VertexKey.js.map +1 -1
  121. package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
  122. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  123. package/lib/cjs/common/internal/render/VertexTableSplitter.js.map +1 -1
  124. package/lib/cjs/common/render/BatchOptions.js.map +1 -1
  125. package/lib/cjs/common/render/GraphicAssembler.js.map +1 -1
  126. package/lib/cjs/common/render/GraphicDescriptionBuilder.js.map +1 -1
  127. package/lib/cjs/common/render/GraphicDescriptionContext.js.map +1 -1
  128. package/lib/cjs/common/render/GraphicPrimitive.js.map +1 -1
  129. package/lib/cjs/common/render/GraphicType.js.map +1 -1
  130. package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
  131. package/lib/cjs/common/render/MaterialParams.js.map +1 -1
  132. package/lib/cjs/common/render/RenderInstancesParams.js.map +1 -1
  133. package/lib/cjs/common/render/TextureParams.js.map +1 -1
  134. package/lib/cjs/common.js.map +1 -1
  135. package/lib/cjs/core-frontend.js.map +1 -1
  136. package/lib/cjs/extension/Extension.js.map +1 -1
  137. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  138. package/lib/cjs/extension/ExtensionHost.js.map +1 -1
  139. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  140. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  141. package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
  142. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  143. package/lib/cjs/internal/GoogleMapsDecorator.js.map +1 -1
  144. package/lib/cjs/internal/RealityDataSourceGoogle3dTilesImpl.js.map +1 -1
  145. package/lib/cjs/internal/ScriptUtils.js.map +1 -1
  146. package/lib/cjs/internal/cross-package.js.map +1 -1
  147. package/lib/cjs/internal/render/AnimationBranchState.js.map +1 -1
  148. package/lib/cjs/internal/render/FrameStatsCollector.js.map +1 -1
  149. package/lib/cjs/internal/render/GraphicBranchFrustum.js.map +1 -1
  150. package/lib/cjs/internal/render/GraphicTemplateImpl.js.map +1 -1
  151. package/lib/cjs/internal/render/MeshMapLayerGraphicParams.js.map +1 -1
  152. package/lib/cjs/internal/render/MockRender.js.map +1 -1
  153. package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
  154. package/lib/cjs/internal/render/QueryVisibileFeatures.js.map +1 -1
  155. package/lib/cjs/internal/render/RenderAreaPattern.js.map +1 -1
  156. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -1
  157. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  158. package/lib/cjs/internal/render/RenderMaterialSource.js.map +1 -1
  159. package/lib/cjs/internal/render/RenderPlan.js.map +1 -1
  160. package/lib/cjs/internal/render/RenderPlanarClassifier.js.map +1 -1
  161. package/lib/cjs/internal/render/RenderSkyBoxParams.js.map +1 -1
  162. package/lib/cjs/internal/render/RenderSystemDebugControl.js.map +1 -1
  163. package/lib/cjs/internal/render/RenderTargetDebugControl.js.map +1 -1
  164. package/lib/cjs/internal/render/RenderTerrain.js.map +1 -1
  165. package/lib/cjs/internal/render/RenderTextureDrape.js.map +1 -1
  166. package/lib/cjs/internal/render/SceneVolumeClassifier.js.map +1 -1
  167. package/lib/cjs/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  168. package/lib/cjs/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  169. package/lib/cjs/internal/render/webgl/AttributeBuffers.js.map +1 -1
  170. package/lib/cjs/internal/render/webgl/AttributeMap.js.map +1 -1
  171. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js +1 -1
  172. package/lib/cjs/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  173. package/lib/cjs/internal/render/webgl/BatchState.js.map +1 -1
  174. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  175. package/lib/cjs/internal/render/webgl/BranchStack.js.map +1 -1
  176. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  177. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  178. package/lib/cjs/internal/render/webgl/CachedGeometry.js.map +1 -1
  179. package/lib/cjs/internal/render/webgl/ClipStack.js.map +1 -1
  180. package/lib/cjs/internal/render/webgl/ClipVolume.js.map +1 -1
  181. package/lib/cjs/internal/render/webgl/ClippingProgram.js.map +1 -1
  182. package/lib/cjs/internal/render/webgl/ColorInfo.js.map +1 -1
  183. package/lib/cjs/internal/render/webgl/ContourUniforms.js.map +1 -1
  184. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  185. package/lib/cjs/internal/render/webgl/Diagnostics.js.map +1 -1
  186. package/lib/cjs/internal/render/webgl/Disposable.js.map +1 -1
  187. package/lib/cjs/internal/render/webgl/DrawCommand.js.map +1 -1
  188. package/lib/cjs/internal/render/webgl/EDL.js.map +1 -1
  189. package/lib/cjs/internal/render/webgl/EdgeGeometry.js.map +1 -1
  190. package/lib/cjs/internal/render/webgl/EdgeSettings.js.map +1 -1
  191. package/lib/cjs/internal/render/webgl/FeatureOverrides.js.map +1 -1
  192. package/lib/cjs/internal/render/webgl/FloatRGBA.js.map +1 -1
  193. package/lib/cjs/internal/render/webgl/FrameBuffer.js.map +1 -1
  194. package/lib/cjs/internal/render/webgl/FrustumUniforms.js.map +1 -1
  195. package/lib/cjs/internal/render/webgl/GL.js.map +1 -1
  196. package/lib/cjs/internal/render/webgl/GLTimer.js.map +1 -1
  197. package/lib/cjs/internal/render/webgl/Graphic.js.map +1 -1
  198. package/lib/cjs/internal/render/webgl/HiliteUniforms.js.map +1 -1
  199. package/lib/cjs/internal/render/webgl/IModelFrameLifecycle.js.map +1 -1
  200. package/lib/cjs/internal/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  201. package/lib/cjs/internal/render/webgl/InstancedGeometry.js.map +1 -1
  202. package/lib/cjs/internal/render/webgl/Layer.js.map +1 -1
  203. package/lib/cjs/internal/render/webgl/LayerCommands.js.map +1 -1
  204. package/lib/cjs/internal/render/webgl/LightingUniforms.js.map +1 -1
  205. package/lib/cjs/internal/render/webgl/LineCode.js.map +1 -1
  206. package/lib/cjs/internal/render/webgl/MapLayerParams.js.map +1 -1
  207. package/lib/cjs/internal/render/webgl/Material.js.map +1 -1
  208. package/lib/cjs/internal/render/webgl/Matrix.js.map +1 -1
  209. package/lib/cjs/internal/render/webgl/Mesh.js.map +1 -1
  210. package/lib/cjs/internal/render/webgl/MeshData.js.map +1 -1
  211. package/lib/cjs/internal/render/webgl/MeshGeometry.js.map +1 -1
  212. package/lib/cjs/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  213. package/lib/cjs/internal/render/webgl/PlanarClassifier.js +1 -1
  214. package/lib/cjs/internal/render/webgl/PlanarClassifier.js.map +1 -1
  215. package/lib/cjs/internal/render/webgl/PlanarGrid.js.map +1 -1
  216. package/lib/cjs/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  217. package/lib/cjs/internal/render/webgl/PointCloud.js.map +1 -1
  218. package/lib/cjs/internal/render/webgl/PointString.js.map +1 -1
  219. package/lib/cjs/internal/render/webgl/Polyline.js.map +1 -1
  220. package/lib/cjs/internal/render/webgl/Primitive.js.map +1 -1
  221. package/lib/cjs/internal/render/webgl/RealityMesh.js.map +1 -1
  222. package/lib/cjs/internal/render/webgl/RealityModelUniforms.js.map +1 -1
  223. package/lib/cjs/internal/render/webgl/RenderBuffer.js.map +1 -1
  224. package/lib/cjs/internal/render/webgl/RenderCommands.js.map +1 -1
  225. package/lib/cjs/internal/render/webgl/RenderFlags.js.map +1 -1
  226. package/lib/cjs/internal/render/webgl/RenderState.js.map +1 -1
  227. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  228. package/lib/cjs/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  229. package/lib/cjs/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  230. package/lib/cjs/internal/render/webgl/ShaderBuilder.js.map +1 -1
  231. package/lib/cjs/internal/render/webgl/ShaderProgram.js.map +1 -1
  232. package/lib/cjs/internal/render/webgl/ShadowUniforms.js.map +1 -1
  233. package/lib/cjs/internal/render/webgl/SolarShadowMap.js.map +1 -1
  234. package/lib/cjs/internal/render/webgl/StyleUniforms.js.map +1 -1
  235. package/lib/cjs/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  236. package/lib/cjs/internal/render/webgl/Sync.js.map +1 -1
  237. package/lib/cjs/internal/render/webgl/System.js.map +1 -1
  238. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  239. package/lib/cjs/internal/render/webgl/TargetGraphics.js.map +1 -1
  240. package/lib/cjs/internal/render/webgl/TargetUniforms.js.map +1 -1
  241. package/lib/cjs/internal/render/webgl/Technique.js.map +1 -1
  242. package/lib/cjs/internal/render/webgl/TechniqueFlags.js.map +1 -1
  243. package/lib/cjs/internal/render/webgl/TechniqueId.js.map +1 -1
  244. package/lib/cjs/internal/render/webgl/Texture.js.map +1 -1
  245. package/lib/cjs/internal/render/webgl/TextureDrape.js.map +1 -1
  246. package/lib/cjs/internal/render/webgl/ThematicSensors.js.map +1 -1
  247. package/lib/cjs/internal/render/webgl/ThematicUniforms.js.map +1 -1
  248. package/lib/cjs/internal/render/webgl/UniformHandle.js.map +1 -1
  249. package/lib/cjs/internal/render/webgl/VertexLUT.js.map +1 -1
  250. package/lib/cjs/internal/render/webgl/ViewRectUniforms.js.map +1 -1
  251. package/lib/cjs/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  252. package/lib/cjs/internal/render/webgl/glsl/AmbientOcclusion.js +154 -154
  253. package/lib/cjs/internal/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  254. package/lib/cjs/internal/render/webgl/glsl/Animation.js +83 -83
  255. package/lib/cjs/internal/render/webgl/glsl/Animation.js.map +1 -1
  256. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js +266 -266
  257. package/lib/cjs/internal/render/webgl/glsl/Atmosphere.js.map +1 -1
  258. package/lib/cjs/internal/render/webgl/glsl/Blur.js +37 -37
  259. package/lib/cjs/internal/render/webgl/glsl/Blur.js.map +1 -1
  260. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js +5 -5
  261. package/lib/cjs/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  262. package/lib/cjs/internal/render/webgl/glsl/ClearTranslucent.js +3 -3
  263. package/lib/cjs/internal/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  264. package/lib/cjs/internal/render/webgl/glsl/Clipping.js +96 -96
  265. package/lib/cjs/internal/render/webgl/glsl/Clipping.js.map +1 -1
  266. package/lib/cjs/internal/render/webgl/glsl/Color.js +12 -12
  267. package/lib/cjs/internal/render/webgl/glsl/Color.js.map +1 -1
  268. package/lib/cjs/internal/render/webgl/glsl/Combine3Textures.js +7 -7
  269. package/lib/cjs/internal/render/webgl/glsl/Combine3Textures.js.map +1 -1
  270. package/lib/cjs/internal/render/webgl/glsl/CombineTextures.js +5 -5
  271. package/lib/cjs/internal/render/webgl/glsl/CombineTextures.js.map +1 -1
  272. package/lib/cjs/internal/render/webgl/glsl/Common.js +16 -16
  273. package/lib/cjs/internal/render/webgl/glsl/Common.js.map +1 -1
  274. package/lib/cjs/internal/render/webgl/glsl/Composite.js +71 -71
  275. package/lib/cjs/internal/render/webgl/glsl/Composite.js.map +1 -1
  276. package/lib/cjs/internal/render/webgl/glsl/Contours.js +101 -101
  277. package/lib/cjs/internal/render/webgl/glsl/Contours.js.map +1 -1
  278. package/lib/cjs/internal/render/webgl/glsl/CopyColor.js +6 -6
  279. package/lib/cjs/internal/render/webgl/glsl/CopyColor.js.map +1 -1
  280. package/lib/cjs/internal/render/webgl/glsl/CopyPickBuffers.js +3 -3
  281. package/lib/cjs/internal/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  282. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js +4 -4
  283. package/lib/cjs/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  284. package/lib/cjs/internal/render/webgl/glsl/Decode.js +65 -65
  285. package/lib/cjs/internal/render/webgl/glsl/Decode.js.map +1 -1
  286. package/lib/cjs/internal/render/webgl/glsl/EDL.js +103 -103
  287. package/lib/cjs/internal/render/webgl/glsl/EDL.js.map +1 -1
  288. package/lib/cjs/internal/render/webgl/glsl/EVSMFromDepth.js +25 -25
  289. package/lib/cjs/internal/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  290. package/lib/cjs/internal/render/webgl/glsl/Edge.js +146 -146
  291. package/lib/cjs/internal/render/webgl/glsl/Edge.js.map +1 -1
  292. package/lib/cjs/internal/render/webgl/glsl/FeatureSymbology.js +238 -238
  293. package/lib/cjs/internal/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  294. package/lib/cjs/internal/render/webgl/glsl/Fragment.js +43 -43
  295. package/lib/cjs/internal/render/webgl/glsl/Fragment.js.map +1 -1
  296. package/lib/cjs/internal/render/webgl/glsl/Instancing.js +21 -21
  297. package/lib/cjs/internal/render/webgl/glsl/Instancing.js.map +1 -1
  298. package/lib/cjs/internal/render/webgl/glsl/Lighting.js +92 -92
  299. package/lib/cjs/internal/render/webgl/glsl/Lighting.js.map +1 -1
  300. package/lib/cjs/internal/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  301. package/lib/cjs/internal/render/webgl/glsl/LookupTable.js +19 -19
  302. package/lib/cjs/internal/render/webgl/glsl/LookupTable.js.map +1 -1
  303. package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.js +87 -87
  304. package/lib/cjs/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -1
  305. package/lib/cjs/internal/render/webgl/glsl/Monochrome.js +13 -13
  306. package/lib/cjs/internal/render/webgl/glsl/Monochrome.js.map +1 -1
  307. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js +188 -188
  308. package/lib/cjs/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  309. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js +22 -22
  310. package/lib/cjs/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  311. package/lib/cjs/internal/render/webgl/glsl/PointCloud.js +28 -28
  312. package/lib/cjs/internal/render/webgl/glsl/PointCloud.js.map +1 -1
  313. package/lib/cjs/internal/render/webgl/glsl/PointString.js +9 -9
  314. package/lib/cjs/internal/render/webgl/glsl/PointString.js.map +1 -1
  315. package/lib/cjs/internal/render/webgl/glsl/Polyline.js +213 -213
  316. package/lib/cjs/internal/render/webgl/glsl/Polyline.js.map +1 -1
  317. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js +25 -25
  318. package/lib/cjs/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  319. package/lib/cjs/internal/render/webgl/glsl/RenderPass.js.map +1 -1
  320. package/lib/cjs/internal/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  321. package/lib/cjs/internal/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  322. package/lib/cjs/internal/render/webgl/glsl/SkyBox.js.map +1 -1
  323. package/lib/cjs/internal/render/webgl/glsl/SkySphere.js +49 -49
  324. package/lib/cjs/internal/render/webgl/glsl/SkySphere.js.map +1 -1
  325. package/lib/cjs/internal/render/webgl/glsl/SolarShadowMapping.js +51 -51
  326. package/lib/cjs/internal/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  327. package/lib/cjs/internal/render/webgl/glsl/Surface.js +235 -235
  328. package/lib/cjs/internal/render/webgl/glsl/Surface.js.map +1 -1
  329. package/lib/cjs/internal/render/webgl/glsl/Thematic.js +136 -136
  330. package/lib/cjs/internal/render/webgl/glsl/Thematic.js.map +1 -1
  331. package/lib/cjs/internal/render/webgl/glsl/Translucency.js +19 -19
  332. package/lib/cjs/internal/render/webgl/glsl/Translucency.js.map +1 -1
  333. package/lib/cjs/internal/render/webgl/glsl/Vertex.js +73 -73
  334. package/lib/cjs/internal/render/webgl/glsl/Vertex.js.map +1 -1
  335. package/lib/cjs/internal/render/webgl/glsl/Viewport.js +38 -38
  336. package/lib/cjs/internal/render/webgl/glsl/Viewport.js.map +1 -1
  337. package/lib/cjs/internal/render/webgl/glsl/ViewportQuad.js.map +1 -1
  338. package/lib/cjs/internal/render/webgl/glsl/Wiremesh.js +10 -10
  339. package/lib/cjs/internal/render/webgl/glsl/Wiremesh.js.map +1 -1
  340. package/lib/cjs/internal/tile/B3dmReader.js.map +1 -1
  341. package/lib/cjs/internal/tile/BatchedTileIdMap.js.map +1 -1
  342. package/lib/cjs/internal/tile/CesiumAssetProvider.js.map +1 -1
  343. package/lib/cjs/internal/tile/ClassifierTileTree.js.map +1 -1
  344. package/lib/cjs/internal/tile/ContextShareProvider.js.map +1 -1
  345. package/lib/cjs/internal/tile/DynamicIModelTile.js.map +1 -1
  346. package/lib/cjs/internal/tile/FetchCloudStorage.js.map +1 -1
  347. package/lib/cjs/internal/tile/GraphicsCollector.js.map +1 -1
  348. package/lib/cjs/internal/tile/I3dmReader.js.map +1 -1
  349. package/lib/cjs/internal/tile/IModelTile.js.map +1 -1
  350. package/lib/cjs/internal/tile/IModelTileRequestChannels.js.map +1 -1
  351. package/lib/cjs/internal/tile/IModelTileTree.js.map +1 -1
  352. package/lib/cjs/internal/tile/ImdlDecoder.js.map +1 -1
  353. package/lib/cjs/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  354. package/lib/cjs/internal/tile/ImdlParser.js.map +1 -1
  355. package/lib/cjs/internal/tile/LRUTileList.js.map +1 -1
  356. package/lib/cjs/internal/tile/LayerTileTreeHandler.js.map +1 -1
  357. package/lib/cjs/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  358. package/lib/cjs/internal/tile/MeshoptCompression.js.map +1 -1
  359. package/lib/cjs/internal/tile/OPCFormatInterpreter.js.map +1 -1
  360. package/lib/cjs/internal/tile/OrbitGtTileTree.js.map +1 -1
  361. package/lib/cjs/internal/tile/PntsReader.js.map +1 -1
  362. package/lib/cjs/internal/tile/PrimaryTileTree.js.map +1 -1
  363. package/lib/cjs/internal/tile/RealityModelTileTree.js.map +1 -1
  364. package/lib/cjs/internal/tile/RealityTileDrawArgs.js.map +1 -1
  365. package/lib/cjs/internal/tile/RealityTileLoader.js.map +1 -1
  366. package/lib/cjs/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  367. package/lib/cjs/internal/tile/TileUserSet.js.map +1 -1
  368. package/lib/cjs/internal/tile/ViewFlagOverrides.js.map +1 -1
  369. package/lib/cjs/internal/tile/map/ArcGISTileMap.js.map +1 -1
  370. package/lib/cjs/internal/tile/map/ArcGisUtilities.js.map +1 -1
  371. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  372. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  373. package/lib/cjs/internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -1
  374. package/lib/cjs/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  375. package/lib/cjs/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  376. package/lib/cjs/internal/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
  377. package/lib/cjs/internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js.map +1 -1
  378. package/lib/cjs/internal/tile/map/ImageryProviders/FeatureGeometryRenderer.js.map +1 -1
  379. package/lib/cjs/internal/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  380. package/lib/cjs/internal/tile/map/ImageryProviders/FeatureSymbologyRenderer.js.map +1 -1
  381. package/lib/cjs/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  382. package/lib/cjs/internal/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  383. package/lib/cjs/internal/tile/map/ImageryProviders/WebMercator.js.map +1 -1
  384. package/lib/cjs/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  385. package/lib/cjs/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  386. package/lib/cjs/internal/tile/map/MapTileAvailability.js.map +1 -1
  387. package/lib/cjs/internal/tile/map/MapTileLoader.js.map +1 -1
  388. package/lib/cjs/internal/tile/map/UrlUtils.js.map +1 -1
  389. package/lib/cjs/internal/tile/map/WmsCapabilities.js.map +1 -1
  390. package/lib/cjs/internal/tile/map/WmsUtilities.js.map +1 -1
  391. package/lib/cjs/internal/tile/map/WmtsCapabilities.js.map +1 -1
  392. package/lib/cjs/internal/webgl.js.map +1 -1
  393. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  394. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  395. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  396. package/lib/cjs/public/scripts/checkbrowser.js +24 -24
  397. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  398. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  399. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  400. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  401. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  402. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
  403. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  404. package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -1
  405. package/lib/cjs/render/CreateTextureArgs.js.map +1 -1
  406. package/lib/cjs/render/Decorations.js.map +1 -1
  407. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  408. package/lib/cjs/render/FrameStats.js.map +1 -1
  409. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  410. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  411. package/lib/cjs/render/GraphicTemplate.js.map +1 -1
  412. package/lib/cjs/render/MeshArgs.js.map +1 -1
  413. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  414. package/lib/cjs/render/Pixel.js.map +1 -1
  415. package/lib/cjs/render/PolylineArgs.js.map +1 -1
  416. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  417. package/lib/cjs/render/RenderClipVolume.js.map +1 -1
  418. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  419. package/lib/cjs/render/RenderMemory.js.map +1 -1
  420. package/lib/cjs/render/RenderSystem.js.map +1 -1
  421. package/lib/cjs/render/RenderTarget.js.map +1 -1
  422. package/lib/cjs/render/Scene.js.map +1 -1
  423. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  424. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  425. package/lib/cjs/request/Request.js.map +1 -1
  426. package/lib/cjs/request/utils.js.map +1 -1
  427. package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
  428. package/lib/cjs/tile/GltfReader.js.map +1 -1
  429. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  430. package/lib/cjs/tile/RealityTile.js.map +1 -1
  431. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  432. package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -1
  433. package/lib/cjs/tile/Tile.js.map +1 -1
  434. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  435. package/lib/cjs/tile/TileContent.js.map +1 -1
  436. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  437. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
  438. package/lib/cjs/tile/TileParams.js.map +1 -1
  439. package/lib/cjs/tile/TileRequest.js.map +1 -1
  440. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  441. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  442. package/lib/cjs/tile/TileStorage.js.map +1 -1
  443. package/lib/cjs/tile/TileTree.js.map +1 -1
  444. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  445. package/lib/cjs/tile/TileTreeParams.js.map +1 -1
  446. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  447. package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
  448. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  449. package/lib/cjs/tile/TileUser.js.map +1 -1
  450. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  451. package/lib/cjs/tile/internal.js.map +1 -1
  452. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  453. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  454. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  455. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  456. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  457. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  458. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  459. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  460. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  461. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  462. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  463. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  464. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  465. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  466. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  467. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  468. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  469. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  470. package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
  471. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  472. package/lib/cjs/tools/AccuDrawViewportUI.js.map +1 -1
  473. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  474. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  475. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  476. package/lib/cjs/tools/EventController.js.map +1 -1
  477. package/lib/cjs/tools/IdleTool.js.map +1 -1
  478. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  479. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  480. package/lib/cjs/tools/SelectTool.js.map +1 -1
  481. package/lib/cjs/tools/Tool.js.map +1 -1
  482. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  483. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  484. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  485. package/lib/cjs/tools/ViewTool.js.map +1 -1
  486. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -1
  487. package/lib/cjs/workers/ImdlParser/webpack.config.js +42 -42
  488. package/lib/cjs/workers/RegisterWorker.js.map +1 -1
  489. package/lib/esm/AccuDraw.js.map +1 -1
  490. package/lib/esm/AccuSnap.js.map +1 -1
  491. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  492. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
  493. package/lib/esm/AuxCoordSys.js.map +1 -1
  494. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  495. package/lib/esm/BingLocation.js.map +1 -1
  496. package/lib/esm/BriefcaseConnection.js.map +1 -1
  497. package/lib/esm/BriefcaseTxns.js.map +1 -1
  498. package/lib/esm/CatalogConnection.js.map +1 -1
  499. package/lib/esm/CategorySelectorState.js.map +1 -1
  500. package/lib/esm/ChangeFlags.js.map +1 -1
  501. package/lib/esm/CheckpointConnection.js.map +1 -1
  502. package/lib/esm/ContextRealityModelState.js.map +1 -1
  503. package/lib/esm/CoordSystem.js.map +1 -1
  504. package/lib/esm/DecorationsCache.js.map +1 -1
  505. package/lib/esm/DevTools.js.map +1 -1
  506. package/lib/esm/DisplayStyleState.js.map +1 -1
  507. package/lib/esm/DrawingViewState.js +5 -5
  508. package/lib/esm/DrawingViewState.js.map +1 -1
  509. package/lib/esm/ElementLocateManager.js.map +1 -1
  510. package/lib/esm/EmphasizeElements.js.map +1 -1
  511. package/lib/esm/EntityState.js.map +1 -1
  512. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  513. package/lib/esm/FeatureOverrideProvider.js.map +1 -1
  514. package/lib/esm/FlashSettings.js.map +1 -1
  515. package/lib/esm/FrontendHubAccess.js.map +1 -1
  516. package/lib/esm/Frustum2d.js.map +1 -1
  517. package/lib/esm/FrustumAnimator.js.map +1 -1
  518. package/lib/esm/FuzzySearch.js.map +1 -1
  519. package/lib/esm/GeoServices.js.map +1 -1
  520. package/lib/esm/GlobeAnimator.js.map +1 -1
  521. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  522. package/lib/esm/HitDetail.js.map +1 -1
  523. package/lib/esm/IModelApp.js.map +1 -1
  524. package/lib/esm/IModelConnection.js +26 -26
  525. package/lib/esm/IModelConnection.js.map +1 -1
  526. package/lib/esm/IModelRoutingContext.js.map +1 -1
  527. package/lib/esm/IModeljs-css.js +133 -133
  528. package/lib/esm/IModeljs-css.js.map +1 -1
  529. package/lib/esm/IpcApp.js.map +1 -1
  530. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  531. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  532. package/lib/esm/MarginPercent.js.map +1 -1
  533. package/lib/esm/Marker.js.map +1 -1
  534. package/lib/esm/ModelSelectorState.js.map +1 -1
  535. package/lib/esm/ModelState.js.map +1 -1
  536. package/lib/esm/NativeApp.js.map +1 -1
  537. package/lib/esm/NativeAppLogger.js.map +1 -1
  538. package/lib/esm/NoRenderApp.js.map +1 -1
  539. package/lib/esm/NotificationManager.js.map +1 -1
  540. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  541. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  542. package/lib/esm/RealityDataSource.js.map +1 -1
  543. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  544. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  545. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  546. package/lib/esm/SelectionSet.js.map +1 -1
  547. package/lib/esm/SheetViewState.js.map +1 -1
  548. package/lib/esm/SpatialClassifiersState.js.map +1 -1
  549. package/lib/esm/SpatialViewState.js.map +1 -1
  550. package/lib/esm/Sprites.js.map +1 -1
  551. package/lib/esm/StandardView.js.map +1 -1
  552. package/lib/esm/SubCategoriesCache.js.map +1 -1
  553. package/lib/esm/TentativePoint.js.map +1 -1
  554. package/lib/esm/Tiles.js.map +1 -1
  555. package/lib/esm/TxnEntityChanges.js.map +1 -1
  556. package/lib/esm/UserPreferences.js.map +1 -1
  557. package/lib/esm/ViewAnimation.js.map +1 -1
  558. package/lib/esm/ViewContext.js.map +1 -1
  559. package/lib/esm/ViewCreator2d.js.map +1 -1
  560. package/lib/esm/ViewCreator3d.js.map +1 -1
  561. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  562. package/lib/esm/ViewManager.js.map +1 -1
  563. package/lib/esm/ViewPose.js.map +1 -1
  564. package/lib/esm/ViewState.js.map +1 -1
  565. package/lib/esm/ViewStatus.js.map +1 -1
  566. package/lib/esm/ViewingSpace.js.map +1 -1
  567. package/lib/esm/Viewport.js.map +1 -1
  568. package/lib/esm/ViewportSync.js.map +1 -1
  569. package/lib/esm/common/FrontendLoggerCategory.js.map +1 -1
  570. package/lib/esm/common/ImageUtil.js.map +1 -1
  571. package/lib/esm/common/ViewRect.js.map +1 -1
  572. package/lib/esm/common/WorkerProxy.js.map +1 -1
  573. package/lib/esm/common/gltf/GltfModel.js.map +1 -1
  574. package/lib/esm/common/gltf/GltfParser.js.map +1 -1
  575. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  576. package/lib/esm/common/imdl/CompactEdges.js.map +1 -1
  577. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  578. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
  579. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  580. package/lib/esm/common/internal/Symbols.js.map +1 -1
  581. package/lib/esm/common/internal/render/AnimationNodeId.js.map +1 -1
  582. package/lib/esm/common/internal/render/AuxChannelTable.js.map +1 -1
  583. package/lib/esm/common/internal/render/ColorMap.js.map +1 -1
  584. package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
  585. package/lib/esm/common/internal/render/EdgeParams.js.map +1 -1
  586. package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -1
  587. package/lib/esm/common/internal/render/GeometryList.js.map +1 -1
  588. package/lib/esm/common/internal/render/GeometryPrimitives.js.map +1 -1
  589. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  590. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
  591. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -1
  592. package/lib/esm/common/internal/render/LineCode.js.map +1 -1
  593. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  594. package/lib/esm/common/internal/render/MeshBuilderMap.js.map +1 -1
  595. package/lib/esm/common/internal/render/MeshParams.js.map +1 -1
  596. package/lib/esm/common/internal/render/MeshPrimitive.js.map +1 -1
  597. package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
  598. package/lib/esm/common/internal/render/OvrFlags.js.map +1 -1
  599. package/lib/esm/common/internal/render/PointCloudPrimitive.js.map +1 -1
  600. package/lib/esm/common/internal/render/PointStringParams.js.map +1 -1
  601. package/lib/esm/common/internal/render/Polyface.js.map +1 -1
  602. package/lib/esm/common/internal/render/PolylineParams.js.map +1 -1
  603. package/lib/esm/common/internal/render/Primitives.js.map +1 -1
  604. package/lib/esm/common/internal/render/Strokes.js.map +1 -1
  605. package/lib/esm/common/internal/render/SurfaceParams.js.map +1 -1
  606. package/lib/esm/common/internal/render/VertexIndices.js.map +1 -1
  607. package/lib/esm/common/internal/render/VertexKey.js.map +1 -1
  608. package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
  609. package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -1
  610. package/lib/esm/common/internal/render/VertexTableSplitter.js.map +1 -1
  611. package/lib/esm/common/render/BatchOptions.js.map +1 -1
  612. package/lib/esm/common/render/GraphicAssembler.js.map +1 -1
  613. package/lib/esm/common/render/GraphicDescriptionBuilder.js.map +1 -1
  614. package/lib/esm/common/render/GraphicDescriptionContext.js.map +1 -1
  615. package/lib/esm/common/render/GraphicPrimitive.js.map +1 -1
  616. package/lib/esm/common/render/GraphicType.js.map +1 -1
  617. package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
  618. package/lib/esm/common/render/MaterialParams.js.map +1 -1
  619. package/lib/esm/common/render/RenderInstancesParams.js.map +1 -1
  620. package/lib/esm/common/render/TextureParams.js.map +1 -1
  621. package/lib/esm/common.js.map +1 -1
  622. package/lib/esm/core-frontend.js.map +1 -1
  623. package/lib/esm/extension/Extension.js.map +1 -1
  624. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  625. package/lib/esm/extension/ExtensionHost.js.map +1 -1
  626. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  627. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  628. package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
  629. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  630. package/lib/esm/internal/GoogleMapsDecorator.js.map +1 -1
  631. package/lib/esm/internal/RealityDataSourceGoogle3dTilesImpl.js.map +1 -1
  632. package/lib/esm/internal/ScriptUtils.js.map +1 -1
  633. package/lib/esm/internal/cross-package.js.map +1 -1
  634. package/lib/esm/internal/render/AnimationBranchState.js.map +1 -1
  635. package/lib/esm/internal/render/FrameStatsCollector.js.map +1 -1
  636. package/lib/esm/internal/render/GraphicBranchFrustum.js.map +1 -1
  637. package/lib/esm/internal/render/GraphicTemplateImpl.js.map +1 -1
  638. package/lib/esm/internal/render/MeshMapLayerGraphicParams.js.map +1 -1
  639. package/lib/esm/internal/render/MockRender.js.map +1 -1
  640. package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
  641. package/lib/esm/internal/render/QueryVisibileFeatures.js.map +1 -1
  642. package/lib/esm/internal/render/RenderAreaPattern.js.map +1 -1
  643. package/lib/esm/internal/render/RenderGeometry.js.map +1 -1
  644. package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  645. package/lib/esm/internal/render/RenderMaterialSource.js.map +1 -1
  646. package/lib/esm/internal/render/RenderPlan.js.map +1 -1
  647. package/lib/esm/internal/render/RenderPlanarClassifier.js.map +1 -1
  648. package/lib/esm/internal/render/RenderSkyBoxParams.js.map +1 -1
  649. package/lib/esm/internal/render/RenderSystemDebugControl.js.map +1 -1
  650. package/lib/esm/internal/render/RenderTargetDebugControl.js.map +1 -1
  651. package/lib/esm/internal/render/RenderTerrain.js.map +1 -1
  652. package/lib/esm/internal/render/RenderTextureDrape.js.map +1 -1
  653. package/lib/esm/internal/render/SceneVolumeClassifier.js.map +1 -1
  654. package/lib/esm/internal/render/UpsampleRealityMeshParams.js.map +1 -1
  655. package/lib/esm/internal/render/webgl/AtmosphereUniforms.js.map +1 -1
  656. package/lib/esm/internal/render/webgl/AttributeBuffers.js.map +1 -1
  657. package/lib/esm/internal/render/webgl/AttributeMap.js.map +1 -1
  658. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js +1 -1
  659. package/lib/esm/internal/render/webgl/BackgroundMapDrape.js.map +1 -1
  660. package/lib/esm/internal/render/webgl/BatchState.js.map +1 -1
  661. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  662. package/lib/esm/internal/render/webgl/BranchStack.js.map +1 -1
  663. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  664. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  665. package/lib/esm/internal/render/webgl/CachedGeometry.js.map +1 -1
  666. package/lib/esm/internal/render/webgl/ClipStack.js.map +1 -1
  667. package/lib/esm/internal/render/webgl/ClipVolume.js.map +1 -1
  668. package/lib/esm/internal/render/webgl/ClippingProgram.js.map +1 -1
  669. package/lib/esm/internal/render/webgl/ColorInfo.js.map +1 -1
  670. package/lib/esm/internal/render/webgl/ContourUniforms.js.map +1 -1
  671. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  672. package/lib/esm/internal/render/webgl/Diagnostics.js.map +1 -1
  673. package/lib/esm/internal/render/webgl/Disposable.js.map +1 -1
  674. package/lib/esm/internal/render/webgl/DrawCommand.js.map +1 -1
  675. package/lib/esm/internal/render/webgl/EDL.js.map +1 -1
  676. package/lib/esm/internal/render/webgl/EdgeGeometry.js.map +1 -1
  677. package/lib/esm/internal/render/webgl/EdgeSettings.js.map +1 -1
  678. package/lib/esm/internal/render/webgl/FeatureOverrides.js.map +1 -1
  679. package/lib/esm/internal/render/webgl/FloatRGBA.js.map +1 -1
  680. package/lib/esm/internal/render/webgl/FrameBuffer.js.map +1 -1
  681. package/lib/esm/internal/render/webgl/FrustumUniforms.js.map +1 -1
  682. package/lib/esm/internal/render/webgl/GL.js.map +1 -1
  683. package/lib/esm/internal/render/webgl/GLTimer.js.map +1 -1
  684. package/lib/esm/internal/render/webgl/Graphic.js.map +1 -1
  685. package/lib/esm/internal/render/webgl/HiliteUniforms.js.map +1 -1
  686. package/lib/esm/internal/render/webgl/IModelFrameLifecycle.js.map +1 -1
  687. package/lib/esm/internal/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  688. package/lib/esm/internal/render/webgl/InstancedGeometry.js.map +1 -1
  689. package/lib/esm/internal/render/webgl/Layer.js.map +1 -1
  690. package/lib/esm/internal/render/webgl/LayerCommands.js.map +1 -1
  691. package/lib/esm/internal/render/webgl/LightingUniforms.js.map +1 -1
  692. package/lib/esm/internal/render/webgl/LineCode.js.map +1 -1
  693. package/lib/esm/internal/render/webgl/MapLayerParams.js.map +1 -1
  694. package/lib/esm/internal/render/webgl/Material.js.map +1 -1
  695. package/lib/esm/internal/render/webgl/Matrix.js.map +1 -1
  696. package/lib/esm/internal/render/webgl/Mesh.js.map +1 -1
  697. package/lib/esm/internal/render/webgl/MeshData.js.map +1 -1
  698. package/lib/esm/internal/render/webgl/MeshGeometry.js.map +1 -1
  699. package/lib/esm/internal/render/webgl/PerformanceMetrics.js.map +1 -1
  700. package/lib/esm/internal/render/webgl/PlanarClassifier.js +1 -1
  701. package/lib/esm/internal/render/webgl/PlanarClassifier.js.map +1 -1
  702. package/lib/esm/internal/render/webgl/PlanarGrid.js.map +1 -1
  703. package/lib/esm/internal/render/webgl/PlanarTextureProjection.js.map +1 -1
  704. package/lib/esm/internal/render/webgl/PointCloud.js.map +1 -1
  705. package/lib/esm/internal/render/webgl/PointString.js.map +1 -1
  706. package/lib/esm/internal/render/webgl/Polyline.js.map +1 -1
  707. package/lib/esm/internal/render/webgl/Primitive.js.map +1 -1
  708. package/lib/esm/internal/render/webgl/RealityMesh.js.map +1 -1
  709. package/lib/esm/internal/render/webgl/RealityModelUniforms.js.map +1 -1
  710. package/lib/esm/internal/render/webgl/RenderBuffer.js.map +1 -1
  711. package/lib/esm/internal/render/webgl/RenderCommands.js.map +1 -1
  712. package/lib/esm/internal/render/webgl/RenderFlags.js.map +1 -1
  713. package/lib/esm/internal/render/webgl/RenderState.js.map +1 -1
  714. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  715. package/lib/esm/internal/render/webgl/ScratchDrawParams.js.map +1 -1
  716. package/lib/esm/internal/render/webgl/ScreenSpaceEffect.js.map +1 -1
  717. package/lib/esm/internal/render/webgl/ShaderBuilder.js.map +1 -1
  718. package/lib/esm/internal/render/webgl/ShaderProgram.js.map +1 -1
  719. package/lib/esm/internal/render/webgl/ShadowUniforms.js.map +1 -1
  720. package/lib/esm/internal/render/webgl/SolarShadowMap.js.map +1 -1
  721. package/lib/esm/internal/render/webgl/StyleUniforms.js.map +1 -1
  722. package/lib/esm/internal/render/webgl/SurfaceGeometry.js.map +1 -1
  723. package/lib/esm/internal/render/webgl/Sync.js.map +1 -1
  724. package/lib/esm/internal/render/webgl/System.js.map +1 -1
  725. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  726. package/lib/esm/internal/render/webgl/TargetGraphics.js.map +1 -1
  727. package/lib/esm/internal/render/webgl/TargetUniforms.js.map +1 -1
  728. package/lib/esm/internal/render/webgl/Technique.js.map +1 -1
  729. package/lib/esm/internal/render/webgl/TechniqueFlags.js.map +1 -1
  730. package/lib/esm/internal/render/webgl/TechniqueId.js.map +1 -1
  731. package/lib/esm/internal/render/webgl/Texture.js.map +1 -1
  732. package/lib/esm/internal/render/webgl/TextureDrape.js.map +1 -1
  733. package/lib/esm/internal/render/webgl/ThematicSensors.js.map +1 -1
  734. package/lib/esm/internal/render/webgl/ThematicUniforms.js.map +1 -1
  735. package/lib/esm/internal/render/webgl/UniformHandle.js.map +1 -1
  736. package/lib/esm/internal/render/webgl/VertexLUT.js.map +1 -1
  737. package/lib/esm/internal/render/webgl/ViewRectUniforms.js.map +1 -1
  738. package/lib/esm/internal/render/webgl/VisibleTileFeatures.js.map +1 -1
  739. package/lib/esm/internal/render/webgl/glsl/AmbientOcclusion.js +154 -154
  740. package/lib/esm/internal/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  741. package/lib/esm/internal/render/webgl/glsl/Animation.js +83 -83
  742. package/lib/esm/internal/render/webgl/glsl/Animation.js.map +1 -1
  743. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js +266 -266
  744. package/lib/esm/internal/render/webgl/glsl/Atmosphere.js.map +1 -1
  745. package/lib/esm/internal/render/webgl/glsl/Blur.js +37 -37
  746. package/lib/esm/internal/render/webgl/glsl/Blur.js.map +1 -1
  747. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js +5 -5
  748. package/lib/esm/internal/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  749. package/lib/esm/internal/render/webgl/glsl/ClearTranslucent.js +3 -3
  750. package/lib/esm/internal/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  751. package/lib/esm/internal/render/webgl/glsl/Clipping.js +96 -96
  752. package/lib/esm/internal/render/webgl/glsl/Clipping.js.map +1 -1
  753. package/lib/esm/internal/render/webgl/glsl/Color.js +12 -12
  754. package/lib/esm/internal/render/webgl/glsl/Color.js.map +1 -1
  755. package/lib/esm/internal/render/webgl/glsl/Combine3Textures.js +7 -7
  756. package/lib/esm/internal/render/webgl/glsl/Combine3Textures.js.map +1 -1
  757. package/lib/esm/internal/render/webgl/glsl/CombineTextures.js +5 -5
  758. package/lib/esm/internal/render/webgl/glsl/CombineTextures.js.map +1 -1
  759. package/lib/esm/internal/render/webgl/glsl/Common.js +16 -16
  760. package/lib/esm/internal/render/webgl/glsl/Common.js.map +1 -1
  761. package/lib/esm/internal/render/webgl/glsl/Composite.js +71 -71
  762. package/lib/esm/internal/render/webgl/glsl/Composite.js.map +1 -1
  763. package/lib/esm/internal/render/webgl/glsl/Contours.js +101 -101
  764. package/lib/esm/internal/render/webgl/glsl/Contours.js.map +1 -1
  765. package/lib/esm/internal/render/webgl/glsl/CopyColor.js +6 -6
  766. package/lib/esm/internal/render/webgl/glsl/CopyColor.js.map +1 -1
  767. package/lib/esm/internal/render/webgl/glsl/CopyPickBuffers.js +3 -3
  768. package/lib/esm/internal/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  769. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js +4 -4
  770. package/lib/esm/internal/render/webgl/glsl/CopyStencil.js.map +1 -1
  771. package/lib/esm/internal/render/webgl/glsl/Decode.js +65 -65
  772. package/lib/esm/internal/render/webgl/glsl/Decode.js.map +1 -1
  773. package/lib/esm/internal/render/webgl/glsl/EDL.js +103 -103
  774. package/lib/esm/internal/render/webgl/glsl/EDL.js.map +1 -1
  775. package/lib/esm/internal/render/webgl/glsl/EVSMFromDepth.js +25 -25
  776. package/lib/esm/internal/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  777. package/lib/esm/internal/render/webgl/glsl/Edge.js +146 -146
  778. package/lib/esm/internal/render/webgl/glsl/Edge.js.map +1 -1
  779. package/lib/esm/internal/render/webgl/glsl/FeatureSymbology.js +238 -238
  780. package/lib/esm/internal/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  781. package/lib/esm/internal/render/webgl/glsl/Fragment.js +43 -43
  782. package/lib/esm/internal/render/webgl/glsl/Fragment.js.map +1 -1
  783. package/lib/esm/internal/render/webgl/glsl/Instancing.js +21 -21
  784. package/lib/esm/internal/render/webgl/glsl/Instancing.js.map +1 -1
  785. package/lib/esm/internal/render/webgl/glsl/Lighting.js +92 -92
  786. package/lib/esm/internal/render/webgl/glsl/Lighting.js.map +1 -1
  787. package/lib/esm/internal/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  788. package/lib/esm/internal/render/webgl/glsl/LookupTable.js +19 -19
  789. package/lib/esm/internal/render/webgl/glsl/LookupTable.js.map +1 -1
  790. package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.js +87 -87
  791. package/lib/esm/internal/render/webgl/glsl/MaplayerDraping.js.map +1 -1
  792. package/lib/esm/internal/render/webgl/glsl/Monochrome.js +13 -13
  793. package/lib/esm/internal/render/webgl/glsl/Monochrome.js.map +1 -1
  794. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js +188 -188
  795. package/lib/esm/internal/render/webgl/glsl/PlanarClassification.js.map +1 -1
  796. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js +22 -22
  797. package/lib/esm/internal/render/webgl/glsl/PlanarGrid.js.map +1 -1
  798. package/lib/esm/internal/render/webgl/glsl/PointCloud.js +28 -28
  799. package/lib/esm/internal/render/webgl/glsl/PointCloud.js.map +1 -1
  800. package/lib/esm/internal/render/webgl/glsl/PointString.js +9 -9
  801. package/lib/esm/internal/render/webgl/glsl/PointString.js.map +1 -1
  802. package/lib/esm/internal/render/webgl/glsl/Polyline.js +213 -213
  803. package/lib/esm/internal/render/webgl/glsl/Polyline.js.map +1 -1
  804. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js +25 -25
  805. package/lib/esm/internal/render/webgl/glsl/RealityMesh.js.map +1 -1
  806. package/lib/esm/internal/render/webgl/glsl/RenderPass.js.map +1 -1
  807. package/lib/esm/internal/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  808. package/lib/esm/internal/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  809. package/lib/esm/internal/render/webgl/glsl/SkyBox.js.map +1 -1
  810. package/lib/esm/internal/render/webgl/glsl/SkySphere.js +49 -49
  811. package/lib/esm/internal/render/webgl/glsl/SkySphere.js.map +1 -1
  812. package/lib/esm/internal/render/webgl/glsl/SolarShadowMapping.js +51 -51
  813. package/lib/esm/internal/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  814. package/lib/esm/internal/render/webgl/glsl/Surface.js +235 -235
  815. package/lib/esm/internal/render/webgl/glsl/Surface.js.map +1 -1
  816. package/lib/esm/internal/render/webgl/glsl/Thematic.js +136 -136
  817. package/lib/esm/internal/render/webgl/glsl/Thematic.js.map +1 -1
  818. package/lib/esm/internal/render/webgl/glsl/Translucency.js +19 -19
  819. package/lib/esm/internal/render/webgl/glsl/Translucency.js.map +1 -1
  820. package/lib/esm/internal/render/webgl/glsl/Vertex.js +73 -73
  821. package/lib/esm/internal/render/webgl/glsl/Vertex.js.map +1 -1
  822. package/lib/esm/internal/render/webgl/glsl/Viewport.js +38 -38
  823. package/lib/esm/internal/render/webgl/glsl/Viewport.js.map +1 -1
  824. package/lib/esm/internal/render/webgl/glsl/ViewportQuad.js.map +1 -1
  825. package/lib/esm/internal/render/webgl/glsl/Wiremesh.js +10 -10
  826. package/lib/esm/internal/render/webgl/glsl/Wiremesh.js.map +1 -1
  827. package/lib/esm/internal/tile/B3dmReader.js.map +1 -1
  828. package/lib/esm/internal/tile/BatchedTileIdMap.js.map +1 -1
  829. package/lib/esm/internal/tile/CesiumAssetProvider.js.map +1 -1
  830. package/lib/esm/internal/tile/ClassifierTileTree.js.map +1 -1
  831. package/lib/esm/internal/tile/ContextShareProvider.js.map +1 -1
  832. package/lib/esm/internal/tile/DynamicIModelTile.js.map +1 -1
  833. package/lib/esm/internal/tile/FetchCloudStorage.js.map +1 -1
  834. package/lib/esm/internal/tile/GraphicsCollector.js.map +1 -1
  835. package/lib/esm/internal/tile/I3dmReader.js.map +1 -1
  836. package/lib/esm/internal/tile/IModelTile.js.map +1 -1
  837. package/lib/esm/internal/tile/IModelTileRequestChannels.js.map +1 -1
  838. package/lib/esm/internal/tile/IModelTileTree.js.map +1 -1
  839. package/lib/esm/internal/tile/ImdlDecoder.js.map +1 -1
  840. package/lib/esm/internal/tile/ImdlGraphicsCreator.js.map +1 -1
  841. package/lib/esm/internal/tile/ImdlParser.js.map +1 -1
  842. package/lib/esm/internal/tile/LRUTileList.js.map +1 -1
  843. package/lib/esm/internal/tile/LayerTileTreeHandler.js.map +1 -1
  844. package/lib/esm/internal/tile/LayerTileTreeReferenceHandler.js.map +1 -1
  845. package/lib/esm/internal/tile/MeshoptCompression.js.map +1 -1
  846. package/lib/esm/internal/tile/OPCFormatInterpreter.js.map +1 -1
  847. package/lib/esm/internal/tile/OrbitGtTileTree.js.map +1 -1
  848. package/lib/esm/internal/tile/PntsReader.js.map +1 -1
  849. package/lib/esm/internal/tile/PrimaryTileTree.js.map +1 -1
  850. package/lib/esm/internal/tile/RealityModelTileTree.js.map +1 -1
  851. package/lib/esm/internal/tile/RealityTileDrawArgs.js.map +1 -1
  852. package/lib/esm/internal/tile/RealityTileLoader.js.map +1 -1
  853. package/lib/esm/internal/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  854. package/lib/esm/internal/tile/TileUserSet.js.map +1 -1
  855. package/lib/esm/internal/tile/ViewFlagOverrides.js.map +1 -1
  856. package/lib/esm/internal/tile/map/ArcGISTileMap.js.map +1 -1
  857. package/lib/esm/internal/tile/map/ArcGisUtilities.js.map +1 -1
  858. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  859. package/lib/esm/internal/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  860. package/lib/esm/internal/tile/map/ImageryProviders/ArcGisGeometryReaderJSON.js.map +1 -1
  861. package/lib/esm/internal/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  862. package/lib/esm/internal/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  863. package/lib/esm/internal/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
  864. package/lib/esm/internal/tile/map/ImageryProviders/FeatureAttributeDrivenSymbology.js.map +1 -1
  865. package/lib/esm/internal/tile/map/ImageryProviders/FeatureGeometryRenderer.js.map +1 -1
  866. package/lib/esm/internal/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  867. package/lib/esm/internal/tile/map/ImageryProviders/FeatureSymbologyRenderer.js.map +1 -1
  868. package/lib/esm/internal/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  869. package/lib/esm/internal/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  870. package/lib/esm/internal/tile/map/ImageryProviders/WebMercator.js.map +1 -1
  871. package/lib/esm/internal/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  872. package/lib/esm/internal/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  873. package/lib/esm/internal/tile/map/MapTileAvailability.js.map +1 -1
  874. package/lib/esm/internal/tile/map/MapTileLoader.js.map +1 -1
  875. package/lib/esm/internal/tile/map/UrlUtils.js.map +1 -1
  876. package/lib/esm/internal/tile/map/WmsCapabilities.js.map +1 -1
  877. package/lib/esm/internal/tile/map/WmsUtilities.js.map +1 -1
  878. package/lib/esm/internal/tile/map/WmtsCapabilities.js.map +1 -1
  879. package/lib/esm/internal/webgl.js.map +1 -1
  880. package/lib/esm/properties/AngleDescription.js.map +1 -1
  881. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  882. package/lib/esm/properties/LengthDescription.js.map +1 -1
  883. package/lib/esm/public/scripts/checkbrowser.js +24 -24
  884. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  885. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  886. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  887. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  888. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  889. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
  890. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  891. package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -1
  892. package/lib/esm/render/CreateTextureArgs.js.map +1 -1
  893. package/lib/esm/render/Decorations.js.map +1 -1
  894. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  895. package/lib/esm/render/FrameStats.js.map +1 -1
  896. package/lib/esm/render/GraphicBranch.js.map +1 -1
  897. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  898. package/lib/esm/render/GraphicTemplate.js.map +1 -1
  899. package/lib/esm/render/MeshArgs.js.map +1 -1
  900. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  901. package/lib/esm/render/Pixel.js.map +1 -1
  902. package/lib/esm/render/PolylineArgs.js.map +1 -1
  903. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  904. package/lib/esm/render/RenderClipVolume.js.map +1 -1
  905. package/lib/esm/render/RenderGraphic.js.map +1 -1
  906. package/lib/esm/render/RenderMemory.js.map +1 -1
  907. package/lib/esm/render/RenderSystem.js.map +1 -1
  908. package/lib/esm/render/RenderTarget.js.map +1 -1
  909. package/lib/esm/render/Scene.js.map +1 -1
  910. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  911. package/lib/esm/render/VisibleFeature.js.map +1 -1
  912. package/lib/esm/request/Request.js.map +1 -1
  913. package/lib/esm/request/utils.js.map +1 -1
  914. package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
  915. package/lib/esm/tile/GltfReader.js.map +1 -1
  916. package/lib/esm/tile/ImdlReader.js.map +1 -1
  917. package/lib/esm/tile/RealityTile.js.map +1 -1
  918. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  919. package/lib/esm/tile/RenderGraphicTileTree.js.map +1 -1
  920. package/lib/esm/tile/Tile.js.map +1 -1
  921. package/lib/esm/tile/TileAdmin.js.map +1 -1
  922. package/lib/esm/tile/TileContent.js.map +1 -1
  923. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  924. package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
  925. package/lib/esm/tile/TileParams.js.map +1 -1
  926. package/lib/esm/tile/TileRequest.js.map +1 -1
  927. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  928. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  929. package/lib/esm/tile/TileStorage.js.map +1 -1
  930. package/lib/esm/tile/TileTree.js.map +1 -1
  931. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  932. package/lib/esm/tile/TileTreeParams.js.map +1 -1
  933. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  934. package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
  935. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  936. package/lib/esm/tile/TileUser.js.map +1 -1
  937. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  938. package/lib/esm/tile/internal.js.map +1 -1
  939. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  940. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  941. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  942. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  943. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  944. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  945. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  946. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  947. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  948. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  949. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  950. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  951. package/lib/esm/tile/map/MapTile.js.map +1 -1
  952. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  953. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  954. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  955. package/lib/esm/tile/map/QuadId.js.map +1 -1
  956. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  957. package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
  958. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  959. package/lib/esm/tools/AccuDrawViewportUI.js.map +1 -1
  960. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  961. package/lib/esm/tools/EditManipulator.js.map +1 -1
  962. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  963. package/lib/esm/tools/EventController.js.map +1 -1
  964. package/lib/esm/tools/IdleTool.js.map +1 -1
  965. package/lib/esm/tools/MeasureTool.js.map +1 -1
  966. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  967. package/lib/esm/tools/SelectTool.js.map +1 -1
  968. package/lib/esm/tools/Tool.js.map +1 -1
  969. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  970. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  971. package/lib/esm/tools/ToolSettings.js.map +1 -1
  972. package/lib/esm/tools/ViewTool.js.map +1 -1
  973. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -1
  974. package/lib/esm/workers/ImdlParser/webpack.config.js +42 -42
  975. package/lib/esm/workers/RegisterWorker.js.map +1 -1
  976. package/lib/public/assets/MapLayerSources.json +25 -25
  977. package/lib/public/images/cesium-ion.svg +92 -92
  978. package/lib/public/images/imodeljs-icon.svg +2 -2
  979. package/lib/public/locales/en/CoreTools.json +508 -508
  980. package/lib/public/locales/en/iModelJs.json +176 -176
  981. package/lib/public/scripts/checkbrowser.js +24 -24
  982. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"ViewTool.js","sourceRoot":"","sources":["../../../src/tools/ViewTool.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { BeDuration, BeTimePoint } from \"@itwin/core-bentley\";\nimport {\n Angle, AngleSweep, Arc3d, AxisOrder, ClipUtilities, Constant, CurveLocationDetail, Geometry, LineString3d, Matrix3d, Plane3dByOriginAndUnitNormal,\n Point2d, Point3d, Range2d, Range3d, Ray3d, Transform, Vector2d, Vector3d, XAndY, YawPitchRollAngles,\n} from \"@itwin/core-geometry\";\nimport { Cartographic, ColorDef, Frustum, LinePixels, NpcCenter } from \"@itwin/core-common\";\nimport {\n DialogItem, DialogProperty, DialogPropertySyncItem, PropertyDescriptionHelper,\n} from \"@itwin/appui-abstract\";\nimport { AccuDraw, AccuDrawHintBuilder } from \"../AccuDraw\";\nimport { BingLocationProvider } from \"../BingLocation\";\nimport { CoordSystem } from \"../CoordSystem\";\nimport { IModelApp } from \"../IModelApp\";\nimport { LengthDescription } from \"../properties/LengthDescription\";\nimport { Pixel } from \"../render/Pixel\";\nimport { StandardViewId } from \"../StandardView\";\nimport { Animator, MarginOptions, OnViewExtentsError, ViewChangeOptions } from \"../ViewAnimation\";\nimport { DecorateContext } from \"../ViewContext\";\nimport {\n eyeToCartographicOnGlobeFromGcs, GlobalLocation, queryTerrainElevationOffset, rangeToCartographicArea, viewGlobalLocation,\n ViewGlobalLocationConstants,\n} from \"../ViewGlobalLocation\";\nimport { DepthPointSource, ScreenViewport, Viewport } from \"../Viewport\";\nimport { ViewPose } from \"../ViewPose\";\nimport { ViewRect } from \"../common/ViewRect\";\nimport { ViewState3d } from \"../ViewState\";\nimport { ViewStatus } from \"../ViewStatus\";\nimport { EditManipulator } from \"./EditManipulator\";\nimport { PrimitiveTool } from \"./PrimitiveTool\";\nimport {\n BeButton, BeButtonEvent, BeModifierKeys, BeTouchEvent, BeWheelEvent, CoordSource, CoreTools, EventHandled, InputSource, InteractiveTool,\n} from \"./Tool\";\nimport { ToolAssistance, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection } from \"./ToolAssistance\";\nimport { ToolSettings } from \"./ToolSettings\";\nimport { GraphicType } from \"../common/render/GraphicType\";\n\n// cspell:ignore wasd, arrowright, arrowleft, pagedown, pageup, arrowup, arrowdown\n/* eslint-disable no-restricted-syntax */\n\n/** @internal */\nconst enum ViewHandleWeight {\n Thin = 1,\n Normal = 2,\n Bold = 3,\n VeryBold = 4,\n FatDot = 8,\n}\n\n/** @internal */\nexport enum ViewHandleType {\n None = 0,\n Rotate = 1,\n TargetCenter = 1 << 1,\n Pan = 1 << 2,\n Scroll = 1 << 3,\n Zoom = 1 << 4,\n Walk = 1 << 5,\n Fly = 1 << 6,\n Look = 1 << 7,\n LookAndMove = 1 << 8,\n}\n\n/** @internal */\nconst enum ViewManipPriority {\n Low = 1,\n Normal = 10,\n Medium = 100,\n High = 1000,\n}\n\nconst enum NavigateMode { Pan = 0, Look = 1, Travel = 2 }\n\n/* eslint-enable no-restricted-syntax */\n\n// dampen an inertia vector according to tool settings\nconst inertialDampen = (pt: Vector3d) => {\n pt.scaleInPlace(Geometry.clamp(ToolSettings.viewingInertia.damping, .75, .999));\n};\n\n/** An InteractiveTool that manipulates a view.\n * @public\n * @extensions\n */\nexport abstract class ViewTool extends InteractiveTool {\n public static translate(val: string) { return CoreTools.translate(`View.${val}`); }\n\n public inDynamicUpdate = false;\n public beginDynamicUpdate() { this.inDynamicUpdate = true; }\n public endDynamicUpdate() { this.inDynamicUpdate = false; }\n public override async run(..._args: any[]): Promise<boolean> {\n const toolAdmin = IModelApp.toolAdmin;\n if (undefined !== this.viewport && this.viewport === toolAdmin.markupView) {\n IModelApp.notifications.outputPromptByKey(\"iModelJs:Viewing.NotDuringMarkup\");\n return false;\n }\n\n if (!await toolAdmin.onInstallTool(this))\n return false;\n\n await toolAdmin.startViewTool(this);\n await toolAdmin.onPostInstallTool(this);\n return true;\n }\n\n public constructor(public viewport?: ScreenViewport) {\n super();\n }\n public override async onResetButtonUp(_ev: BeButtonEvent) {\n await this.exitTool();\n return EventHandled.Yes;\n }\n\n /** Do not override. */\n public async exitTool() { return IModelApp.toolAdmin.exitViewTool(); }\n public static showPrompt(prompt: string) {\n IModelApp.notifications.outputPrompt(ViewTool.translate(prompt));\n }\n}\n\n/** @internal */\nexport abstract class ViewingToolHandle {\n protected readonly _lastPtNpc = new Point3d();\n protected _depthPoint?: Point3d;\n\n constructor(public viewTool: ViewManip) {\n this._depthPoint = undefined;\n }\n public onReinitialize(): void { }\n public onCleanup(): void { }\n public focusOut(): void { }\n public motion(_ev: BeButtonEvent): boolean { return false; }\n public checkOneShot(): boolean { return true; }\n public getHandleCursor(): string { return \"default\"; }\n public abstract doManipulation(ev: BeButtonEvent, inDynamics: boolean): boolean;\n public abstract firstPoint(ev: BeButtonEvent): boolean;\n public abstract testHandleForHit(ptScreen: Point3d, out: { distance: number, priority: ViewManipPriority }): boolean;\n public abstract get handleType(): ViewHandleType;\n public focusIn(): void { IModelApp.toolAdmin.setCursor(this.getHandleCursor()); }\n public drawHandle(_context: DecorateContext, _hasFocus: boolean): void { }\n public onWheel(_ev: BeWheelEvent): boolean { return false; }\n public onTouchStart(_ev: BeTouchEvent): boolean { return false; }\n public onTouchEnd(_ev: BeTouchEvent): boolean { return false; }\n public async onTouchComplete(_ev: BeTouchEvent): Promise<boolean> { return false; }\n public async onTouchCancel(_ev: BeTouchEvent): Promise<boolean> { return false; }\n public onTouchMove(_ev: BeTouchEvent): boolean { return false; }\n public onTouchMoveStart(_ev: BeTouchEvent, _startEv: BeTouchEvent): boolean { return false; }\n public onTouchTap(_ev: BeTouchEvent): boolean { return false; }\n public onKeyTransition(_wentDown: boolean, _keyEvent: KeyboardEvent): boolean { return false; }\n public onModifierKeyTransition(_wentDown: boolean, _modifier: BeModifierKeys, _event: KeyboardEvent): boolean { return false; }\n public needDepthPoint(_ev: BeButtonEvent, _isPreview: boolean): boolean { return false; }\n public adjustDepthPoint(isValid: boolean, _vp: Viewport, _plane: Plane3dByOriginAndUnitNormal, source: DepthPointSource): boolean {\n switch (source) {\n case DepthPointSource.Geometry:\n case DepthPointSource.Model:\n case DepthPointSource.BackgroundMap:\n case DepthPointSource.GroundPlane:\n case DepthPointSource.Grid:\n case DepthPointSource.Map:\n return isValid; // Sources with visible geometry/graphics are considered valid by default...\n default:\n return false; // Sources without visible geometry/graphics are NOT considered valid by default...\n }\n }\n protected pickDepthPoint(ev: BeButtonEvent) {\n this._depthPoint = this.viewTool.pickDepthPoint(ev);\n }\n // if we have a valid depth point, set the focus distance to\n protected changeFocusFromDepthPoint() {\n if (undefined === this._depthPoint)\n return;\n\n const view = this.viewTool.viewport?.view;\n if (undefined === view)\n return;\n\n if (view.is3d() && view.isCameraOn)\n view.changeFocusFromPoint(this._depthPoint); // set the focus distance to the depth point\n }\n}\n\n/** @internal */\nexport class ViewHandleArray {\n public handles: ViewingToolHandle[] = [];\n public focus = -1;\n public focusDrag = false;\n public hitHandleIndex = 0;\n constructor(public viewTool: ViewManip) { }\n\n public empty() {\n this.focus = -1;\n this.focusDrag = false;\n this.hitHandleIndex = -1; // setting to -1 will result in onReinitialize getting called before testHit which sets the hit index\n this.handles.length = 0;\n }\n\n public get count(): number { return this.handles.length; }\n public get hitHandle(): ViewingToolHandle | undefined { return this.getByIndex(this.hitHandleIndex); }\n public get focusHandle(): ViewingToolHandle | undefined { return this.getByIndex(this.focus); }\n public add(handle: ViewingToolHandle): void { this.handles.push(handle); }\n public getByIndex(index: number): ViewingToolHandle | undefined { return (index >= 0 && index < this.count) ? this.handles[index] : undefined; }\n public focusHitHandle(): void { this.setFocus(this.hitHandleIndex); }\n\n public testHit(ptScreen: Point3d, forced = ViewHandleType.None): boolean {\n this.hitHandleIndex = -1;\n const data = { distance: 0.0, priority: ViewManipPriority.Normal };\n let minDistance = 0.0;\n let minDistValid = false;\n let highestPriority = ViewManipPriority.Low;\n let nearestHitHandle: ViewingToolHandle | undefined;\n\n for (let i = 0; i < this.count; i++) {\n data.priority = ViewManipPriority.Normal;\n const handle = this.handles[i];\n\n if (forced) {\n if (handle.handleType === forced) {\n this.hitHandleIndex = i;\n return true;\n }\n } else if (handle.testHandleForHit(ptScreen, data)) {\n if (data.priority >= highestPriority) {\n if (data.priority > highestPriority)\n minDistValid = false;\n\n highestPriority = data.priority;\n\n if (!minDistValid || (data.distance < minDistance)) {\n minDistValid = true;\n minDistance = data.distance;\n nearestHitHandle = handle;\n this.hitHandleIndex = i;\n }\n }\n }\n }\n return undefined !== nearestHitHandle;\n }\n\n public drawHandles(context: DecorateContext): void {\n if (0 === this.count)\n return;\n\n // all handle objects must draw themselves\n for (let i = 0; i < this.count; ++i) {\n if (i !== this.hitHandleIndex) {\n const handle = this.handles[i];\n handle.drawHandle(context, this.focus === i);\n }\n }\n\n // draw the hit handle last\n if (-1 !== this.hitHandleIndex) {\n const handle = this.handles[this.hitHandleIndex];\n handle.drawHandle(context, this.focus === this.hitHandleIndex);\n }\n }\n\n public setFocus(index: number): void {\n if (this.focus === index && (this.focusDrag === this.viewTool.inHandleModify))\n return;\n\n let focusHandle: ViewingToolHandle | undefined;\n if (this.focus >= 0) {\n focusHandle = this.getByIndex(this.focus);\n if (focusHandle)\n focusHandle.focusOut();\n }\n\n if (index >= 0) {\n focusHandle = this.getByIndex(index);\n if (focusHandle)\n focusHandle.focusIn();\n }\n\n this.focus = index;\n this.focusDrag = this.viewTool.inHandleModify;\n\n const vp = this.viewTool.viewport;\n if (undefined !== vp)\n vp.invalidateDecorations();\n }\n\n public onReinitialize(): void { this.handles.forEach((handle) => handle.onReinitialize()); }\n public onCleanup(): void { this.handles.forEach((handle) => handle.onCleanup()); }\n public motion(ev: BeButtonEvent): void { this.handles.forEach((handle) => handle.motion(ev)); }\n public onWheel(ev: BeWheelEvent): boolean {\n let preventDefault = false;\n this.handles.forEach((handle) => {\n if (handle.onWheel(ev))\n preventDefault = true;\n });\n return preventDefault;\n }\n\n /** determine whether a handle of a specific type exists */\n public hasHandle(handleType: ViewHandleType): boolean { return this.handles.some((handle) => handle.handleType === handleType); }\n}\n\n/** Base class for tools that manipulate the frustum of a Viewport.\n * @public\n * @extensions\n */\nexport abstract class ViewManip extends ViewTool {\n /** @internal */\n public viewHandles: ViewHandleArray;\n public frustumValid = false; // unused\n public readonly targetCenterWorld = new Point3d();\n public inHandleModify = false;\n public isDragging = false;\n public targetCenterValid = false;\n public targetCenterLocked = false;\n public nPts = 0;\n /** @internal */\n public forcedHandle = ViewHandleType.None;\n /** @internal */\n protected _depthPreview?: { testPoint: Point3d, pickRadius: number, plane: Plane3dByOriginAndUnitNormal, source: DepthPointSource, isDefaultDepth: boolean, sourceId?: string };\n /** @internal */\n protected _startPose?: ViewPose;\n\n constructor(viewport: ScreenViewport | undefined, public handleMask: number, public oneShot: boolean, public isDraggingRequired: boolean = false) {\n super(viewport);\n this.viewHandles = new ViewHandleArray(this);\n this.changeViewport(viewport);\n }\n\n public override decorate(context: DecorateContext): void {\n this.viewHandles.drawHandles(context);\n this.previewDepthPoint(context);\n }\n\n /** @internal */\n public previewDepthPoint(context: DecorateContext): void {\n if (undefined === this._depthPreview)\n return;\n\n const cursorVp = IModelApp.toolAdmin.cursorView;\n if (cursorVp !== context.viewport)\n return;\n\n let origin = this._depthPreview.plane.getOriginRef();\n let normal = this._depthPreview.plane.getNormalRef();\n\n if (this._depthPreview.isDefaultDepth) {\n origin = cursorVp.worldToView(origin);\n origin.z = 0.0;\n cursorVp.viewToWorld(origin, origin); // Avoid getting clipped out in z...\n normal = context.viewport.view.getZVector(); // Always draw circle for invalid depth point oriented to view...\n }\n\n const pixelSize = context.viewport.getPixelSizeAtPoint(origin);\n const skew = context.viewport.view.getAspectRatioSkew();\n const radius = this._depthPreview.pickRadius * pixelSize;\n const rMatrix = Matrix3d.createRigidHeadsUp(normal);\n const ellipse = Arc3d.createScaledXYColumns(origin, rMatrix, radius, radius / skew, AngleSweep.create360());\n const colorBase = (this._depthPreview.isDefaultDepth ? ColorDef.red : (DepthPointSource.Geometry === this._depthPreview.source ? ColorDef.green : context.viewport.hilite.color));\n const colorLine = EditManipulator.HandleUtils.adjustForBackgroundColor(colorBase, cursorVp).withTransparency(50);\n const colorFill = colorLine.withTransparency(200);\n\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\n builder.setSymbology(colorLine, colorFill, 1, this._depthPreview.isDefaultDepth ? LinePixels.Code2 : LinePixels.Solid);\n builder.addArc(ellipse, true, true);\n builder.addArc(ellipse, false, false);\n context.addDecorationFromBuilder(builder);\n\n ViewTargetCenter.drawCross(context, origin, this._depthPreview.pickRadius * 0.5, false);\n }\n\n /** @internal */\n public getDepthPointGeometryId(): string | undefined {\n if (undefined === this._depthPreview)\n return undefined;\n return (DepthPointSource.Geometry === this._depthPreview.source ? this._depthPreview.sourceId : undefined);\n }\n\n /** @internal */\n public clearDepthPoint(): boolean {\n if (undefined === this._depthPreview)\n return false;\n this._depthPreview = undefined;\n return true;\n }\n\n /** @internal */\n public pickDepthPoint(ev: BeButtonEvent, isPreview: boolean = false): Point3d | undefined {\n if (!isPreview && ev.viewport && undefined !== this.getDepthPointGeometryId())\n ev.viewport.flashedId = undefined;\n\n this.clearDepthPoint();\n if (isPreview && this.inDynamicUpdate)\n return undefined;\n\n const vp = ev.viewport;\n if (undefined === vp || undefined === this.viewHandles.hitHandle || !this.viewHandles.hitHandle.needDepthPoint(ev, isPreview))\n return undefined;\n\n const pickRadiusPixels = vp.pixelsFromInches(ToolSettings.viewToolPickRadiusInches);\n const result = vp.pickDepthPoint(ev.rawPoint, pickRadiusPixels);\n let isValidDepth = false;\n\n switch (result.source) {\n case DepthPointSource.Geometry:\n case DepthPointSource.Model:\n case DepthPointSource.Map:\n isValidDepth = true;\n break;\n case DepthPointSource.BackgroundMap:\n case DepthPointSource.GroundPlane:\n case DepthPointSource.Grid:\n case DepthPointSource.ACS:\n case DepthPointSource.TargetPoint:\n const npcPt = vp.worldToNpc(result.plane.getOriginRef());\n isValidDepth = !(npcPt.z < 0.0 || npcPt.z > 1.0);\n break;\n }\n\n // Allow handle to reject depth depending on source and to set a default depth point when invalid...\n isValidDepth = this.viewHandles.hitHandle.adjustDepthPoint(isValidDepth, vp, result.plane, result.source);\n\n if (isPreview)\n this._depthPreview = { testPoint: ev.rawPoint, pickRadius: pickRadiusPixels, plane: result.plane, source: result.source, isDefaultDepth: !isValidDepth, sourceId: result.sourceId };\n\n return (isValidDepth || isPreview ? result.plane.getOriginRef() : undefined);\n }\n\n /** In addition to the onReinitialize calls after a tool installs or restarts, it is also\n * called from the mouseover event to cancel a drag operation if the up event occurred outside the view.\n * When operating in one shot mode and also requiring dragging, the tool should exit and not restart in ths situation.\n * A tool must opt in to allowing [[ViewTool.exitTool]] to be called from [[ViewManip.onReinitialize]] by\n * overriding this method to return true.\n */\n protected get isExitAllowedOnReinitialize(): boolean { return false; }\n\n public override async onReinitialize() {\n const shouldExit = (this.oneShot && this.isDraggingRequired && this.isDragging && 0 !== this.nPts);\n\n if (undefined !== this.viewport) {\n this.viewport.synchWithView(); // make sure we store any changes in view undo buffer.\n this.viewHandles.setFocus(-1);\n }\n\n this.nPts = 0;\n this.inHandleModify = false;\n this.inDynamicUpdate = false;\n this._startPose = undefined;\n\n this.viewHandles.onReinitialize();\n\n if (shouldExit && this.isExitAllowedOnReinitialize)\n return this.exitTool();\n\n this.provideInitialToolAssistance();\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n // Tool was started in \"drag required\" mode, don't advance tool state and wait to see if we get the start drag event.\n if ((0 === this.nPts && this.isDraggingRequired && !this.isDragging) || undefined === ev.viewport)\n return EventHandled.No;\n\n switch (this.nPts) {\n case 0:\n this.changeViewport(ev.viewport);\n if (this.processFirstPoint(ev))\n this.nPts = 1;\n break;\n case 1:\n this.nPts = 2;\n break;\n }\n\n if (this.nPts > 1) {\n this.inDynamicUpdate = false;\n if (this.processPoint(ev, false) && this.oneShot)\n await this.exitTool();\n else\n await this.onReinitialize();\n }\n\n return EventHandled.Yes;\n }\n\n public override async onDataButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n if (this.nPts <= 1 && this.isDraggingRequired && !this.isDragging && this.oneShot)\n await this.exitTool();\n\n return EventHandled.No;\n }\n\n public override async onMouseWheel(inputEv: BeWheelEvent): Promise<EventHandled> {\n const ev = inputEv.clone();\n if (this.viewHandles.onWheel(ev)) // notify handles that wheel has rolled.\n return EventHandled.Yes;\n\n await IModelApp.toolAdmin.processWheelEvent(ev, false);\n return EventHandled.Yes;\n }\n\n /** @internal */\n public async startHandleDrag(ev: BeButtonEvent, forcedHandle?: ViewHandleType): Promise<EventHandled> {\n if (this.inHandleModify)\n return EventHandled.No; // If already changing the view reject the request...\n\n if (undefined !== forcedHandle) {\n if (!this.viewHandles.hasHandle(forcedHandle))\n return EventHandled.No; // If requested handle isn't present reject the request...\n this.forcedHandle = forcedHandle;\n }\n\n this.receivedDownEvent = true; // Request up events even though we may not have gotten the down event...\n this.isDragging = true;\n\n if (0 === this.nPts)\n await this.onDataButtonDown(ev);\n\n return EventHandled.Yes;\n }\n\n public override async onMouseStartDrag(ev: BeButtonEvent): Promise<EventHandled> {\n if (BeButton.Data !== ev.button)\n return EventHandled.No;\n return this.startHandleDrag(ev);\n }\n\n public override async onMouseEndDrag(ev: BeButtonEvent): Promise<EventHandled> {\n // NOTE: To support startHandleDrag being called by IdleTool for middle button drag, check inHandleModify and not the button type...\n if (!this.inHandleModify)\n return EventHandled.No;\n this.isDragging = false;\n return (0 === this.nPts) ? EventHandled.Yes : this.onDataButtonDown(ev);\n }\n\n public override async onMouseMotion(ev: BeButtonEvent) {\n if (0 === this.nPts && this.viewHandles.testHit(ev.viewPoint))\n this.viewHandles.focusHitHandle();\n\n if (0 !== this.nPts)\n this.processPoint(ev, true);\n\n this.viewHandles.motion(ev);\n\n const prevSourceId = this.getDepthPointGeometryId();\n const showDepthChanged = (undefined !== this.pickDepthPoint(ev, true) || this.clearDepthPoint());\n if (ev.viewport && (showDepthChanged || prevSourceId)) {\n const currSourceId = this.getDepthPointGeometryId();\n if (currSourceId !== prevSourceId)\n ev.viewport.flashedId = currSourceId;\n\n ev.viewport.invalidateDecorations();\n }\n }\n\n public override async onTouchStart(ev: BeTouchEvent): Promise<void> {\n if (0 === this.nPts && this.viewHandles.testHit(ev.viewPoint))\n this.viewHandles.focusHitHandle();\n const focusHandle = this.viewHandles.focusHandle;\n if (undefined !== focusHandle)\n focusHandle.onTouchStart(ev);\n }\n\n public override async onTouchEnd(ev: BeTouchEvent): Promise<void> {\n const focusHandle = this.viewHandles.focusHandle;\n if (undefined !== focusHandle)\n focusHandle.onTouchEnd(ev);\n }\n\n public override async onTouchComplete(ev: BeTouchEvent): Promise<void> {\n const focusHandle = this.viewHandles.focusHandle;\n if (undefined !== focusHandle && await focusHandle.onTouchComplete(ev))\n return;\n if (this.inHandleModify)\n return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev);\n }\n\n public override async onTouchCancel(ev: BeTouchEvent): Promise<void> {\n const focusHandle = this.viewHandles.focusHandle;\n if (undefined !== focusHandle && await focusHandle.onTouchCancel(ev))\n return;\n if (this.inHandleModify)\n return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev, BeButton.Reset);\n }\n\n public override async onTouchMove(ev: BeTouchEvent): Promise<void> {\n const focusHandle = this.viewHandles.focusHandle;\n if (undefined !== focusHandle && focusHandle.onTouchMove(ev))\n return;\n if (this.inHandleModify)\n return IModelApp.toolAdmin.convertTouchMoveToMotion(ev);\n }\n\n public override async onTouchMoveStart(ev: BeTouchEvent, startEv: BeTouchEvent): Promise<EventHandled> {\n const focusHandle = this.viewHandles.focusHandle;\n if (undefined !== focusHandle && focusHandle.onTouchMoveStart(ev, startEv))\n return EventHandled.Yes;\n if (!this.inHandleModify && startEv.isSingleTouch)\n await IModelApp.toolAdmin.convertTouchMoveStartToButtonDownAndMotion(startEv, ev);\n return this.inHandleModify ? EventHandled.Yes : EventHandled.No;\n }\n\n public override async onTouchTap(ev: BeTouchEvent): Promise<EventHandled> {\n const focusHandle = this.viewHandles.focusHandle;\n if (undefined !== focusHandle && focusHandle.onTouchTap(ev))\n return EventHandled.Yes;\n return ev.isSingleTap ? EventHandled.Yes : EventHandled.No; // Prevent IdleTool from converting single tap into data button down/up...\n }\n\n public override async onKeyTransition(wentDown: boolean, keyEvent: KeyboardEvent): Promise<EventHandled> {\n const focusHandle = this.viewHandles.focusHandle;\n return (undefined !== focusHandle && focusHandle.onKeyTransition(wentDown, keyEvent) ? EventHandled.Yes : EventHandled.No);\n }\n\n public override async onModifierKeyTransition(wentDown: boolean, modifier: BeModifierKeys, event: KeyboardEvent): Promise<EventHandled> {\n const focusHandle = this.viewHandles.focusHandle;\n return (undefined !== focusHandle && focusHandle.onModifierKeyTransition(wentDown, modifier, event) ? EventHandled.Yes : EventHandled.No);\n }\n\n public override async onPostInstall() {\n await super.onPostInstall();\n await this.onReinitialize(); // Call onReinitialize now that tool is installed.\n }\n\n public provideToolAssistance(mainInstrKey: string, additionalInstr?: ToolAssistanceInstruction[]): void {\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, ViewTool.translate(mainInstrKey));\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n const touchInstructions: ToolAssistanceInstruction[] = [];\n\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Exit\");\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchDrag, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n\n if (undefined !== additionalInstr) {\n for (const instr of additionalInstr) {\n if (ToolAssistanceInputMethod.Touch === instr.inputMethod)\n touchInstructions.push(instr);\n else\n mouseInstructions.push(instr);\n }\n }\n\n const sections: ToolAssistanceSection[] = [];\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n /** Called from [[ViewManip.onReinitialize]] to allow tools to establish the tool assistance for the first point. */\n protected provideInitialToolAssistance(): void { }\n\n public override async onCleanup() {\n let restorePrevious = false;\n\n if (this.inDynamicUpdate) {\n this.endDynamicUpdate();\n restorePrevious = true;\n }\n\n const vp = this.viewport;\n if (undefined !== vp) {\n if (restorePrevious && this._startPose) {\n vp.view.applyPose(this._startPose);\n vp.animateFrustumChange();\n } else {\n vp.synchWithView();\n }\n\n vp.invalidateDecorations();\n }\n this.viewHandles.onCleanup();\n this.viewHandles.empty();\n }\n\n /**\n * Set the center of rotation for rotate handle.\n * @param pt the new target point in world coordinates\n * @param lockTarget consider the target point locked for this tool instance\n * @param saveTarget save this target point for use between tool instances\n */\n public setTargetCenterWorld(pt: Point3d, lockTarget: boolean, saveTarget: boolean) {\n this.targetCenterWorld.setFrom(pt);\n this.targetCenterValid = true;\n this.targetCenterLocked = lockTarget;\n\n if (!this.viewport)\n return;\n\n if (!this.viewport.view.allow3dManipulations())\n this.targetCenterWorld.z = 0.0;\n\n this.viewport.viewCmdTargetCenter = (saveTarget ? pt : undefined);\n }\n\n public updateTargetCenter(): void {\n const vp = this.viewport;\n if (!vp)\n return;\n\n if (this.targetCenterValid) {\n if (this.inHandleModify)\n return;\n if (IModelApp.tentativePoint.isActive) {\n let tentPt = IModelApp.tentativePoint.getPoint();\n if (!IModelApp.tentativePoint.isSnapped) {\n if (undefined === this._depthPreview && this.targetCenterLocked) {\n const ev = new BeButtonEvent();\n IModelApp.toolAdmin.fillEventFromCursorLocation(ev);\n this.targetCenterLocked = false; // Depth preview won't be active (or requested) if target is currently locked...\n this.pickDepthPoint(ev, true);\n }\n if (undefined !== this._depthPreview && !this._depthPreview.isDefaultDepth)\n tentPt = this._depthPreview.plane.getOriginRef(); // Prefer valid depth preview point to unsnapped tentative location...\n }\n this.setTargetCenterWorld(tentPt, true, false);\n IModelApp.tentativePoint.clear(true); // Clear tentative, there won't be a datapoint to accept...\n }\n return;\n }\n\n if (IModelApp.tentativePoint.isActive)\n return this.setTargetCenterWorld(IModelApp.tentativePoint.getPoint(), true, false);\n\n if (vp.viewCmdTargetCenter && this.isPointVisible(vp.viewCmdTargetCenter))\n return this.setTargetCenterWorld(vp.viewCmdTargetCenter, true, true);\n\n return this.setTargetCenterWorld(ViewManip.getDefaultTargetPointWorld(vp), false, false);\n }\n\n public processFirstPoint(ev: BeButtonEvent) {\n const forcedHandle = this.forcedHandle;\n this.forcedHandle = ViewHandleType.None;\n\n if (this.viewHandles.testHit(ev.viewPoint, forcedHandle)) {\n this.inHandleModify = true;\n this.viewHandles.focusHitHandle();\n const handle = this.viewHandles.hitHandle;\n if (undefined !== handle && !handle.firstPoint(ev))\n return false;\n }\n this._startPose = this.viewport ? this.viewport.view.savePose() : undefined;\n return true;\n }\n\n public processPoint(ev: BeButtonEvent, inDynamics: boolean) {\n const hitHandle = this.viewHandles.hitHandle;\n if (undefined === hitHandle)\n return true;\n\n const doUpdate = hitHandle.doManipulation(ev, inDynamics);\n return inDynamics || (doUpdate && hitHandle.checkOneShot());\n }\n\n public lensAngleMatches(angle: Angle, tolerance: number): boolean {\n const cameraView = this.viewport?.view;\n if (undefined === cameraView)\n return false;\n return !cameraView.is3d() ? false : Math.abs(cameraView.calcLensAngle().radians - angle.radians) < tolerance;\n }\n\n public get isZUp() {\n const view = this.viewport?.view;\n if (undefined === view)\n return true;\n\n const viewX = view.getXVector();\n const viewY = view.getXVector();\n const zVec = Vector3d.unitZ();\n return (Math.abs(zVec.dotProduct(viewY)) > 0.99 && Math.abs(zVec.dotProduct(viewX)) < 0.01);\n }\n\n public static getFocusPlaneNpc(vp: Viewport): number {\n const pt = vp.worldToNpc(vp.view.getTargetPoint());\n return (pt.z < 0.0 || pt.z > 1.0) ? 0.5 : pt.z;\n }\n\n public static getDefaultTargetPointWorld(vp: Viewport): Point3d {\n if (!vp.view.allow3dManipulations())\n return vp.npcToWorld(NpcCenter);\n\n const targetPoint = vp.view.getTargetPoint();\n const targetPointNpc = vp.worldToNpc(targetPoint);\n\n if (targetPointNpc.z < 0.0 || targetPointNpc.z > 1.0) {\n targetPointNpc.z = 0.5;\n vp.npcToWorld(targetPointNpc, targetPoint);\n }\n\n return targetPoint;\n }\n\n /** Determine whether the supplied point is visible in this Viewport. */\n public isPointVisible(testPt: Point3d): boolean {\n const vp = this.viewport;\n if (!vp)\n return false;\n\n return vp.isPointVisibleXY(testPt);\n }\n\n /** @internal */\n public static computeFitRange(viewport: ScreenViewport): Range3d {\n const range = viewport.computeViewRange();\n const clip = (viewport.viewFlags.clipVolume ? viewport.view.getViewClip() : undefined);\n if (undefined !== clip) {\n const clipRange = ClipUtilities.rangeOfClipperIntersectionWithRange(clip, range);\n if (!clipRange.isNull)\n range.setFrom(clipRange);\n }\n return range;\n }\n\n public static fitView(viewport: ScreenViewport, animateFrustumChange: boolean, options?: ViewChangeOptions & MarginOptions) {\n const range = this.computeFitRange(viewport);\n const aspect = viewport.viewRect.aspect;\n viewport.view.lookAtVolume(range, aspect, options);\n viewport.synchWithView({ animateFrustumChange });\n viewport.viewCmdTargetCenter = undefined;\n }\n\n /** @internal */\n public static fitViewWithGlobeAnimation(viewport: ScreenViewport, animateFrustumChange: boolean, options?: ViewChangeOptions & MarginOptions) {\n const range = this.computeFitRange(viewport);\n\n if (viewport.view.isSpatialView() && animateFrustumChange && (viewport.viewingGlobe || !viewport.view.getIsViewingProject())) {\n const cartographicCenter = viewport.view.rootToCartographic(range.center);\n if (undefined !== cartographicCenter) {\n const cartographicArea = rangeToCartographicArea(viewport.view, range);\n (async () => {\n await viewport.animateFlyoverToGlobalLocation({ center: cartographicCenter, area: cartographicArea }); // NOTE: Turns on camera...which is why we checked that it was already on...\n viewport.viewCmdTargetCenter = undefined;\n })().catch(() => { });\n return;\n }\n }\n\n const aspect = viewport.viewRect.aspect;\n viewport.view.lookAtVolume(range, aspect, options);\n viewport.synchWithView({ animateFrustumChange });\n viewport.viewCmdTargetCenter = undefined;\n }\n\n public static async zoomToAlwaysDrawnExclusive(viewport: ScreenViewport, options?: ViewChangeOptions & MarginOptions): Promise<boolean> {\n if (!viewport.isAlwaysDrawnExclusive || undefined === viewport.alwaysDrawn || 0 === viewport.alwaysDrawn.size)\n return false;\n await viewport.zoomToElements(viewport.alwaysDrawn, options);\n return true;\n }\n\n public setCameraLensAngle(lensAngle: Angle, retainEyePoint: boolean): ViewStatus {\n const vp = this.viewport;\n if (!vp)\n return ViewStatus.InvalidViewport;\n\n const view = vp.view;\n if (!view.is3d() || !view.allow3dManipulations())\n return ViewStatus.InvalidViewport;\n\n const result = (retainEyePoint && view.isCameraOn) ?\n view.lookAt({ eyePoint: view.getEyePoint(), targetPoint: view.getTargetPoint(), upVector: view.getYVector(), lensAngle }) :\n vp.turnCameraOn(lensAngle);\n\n if (result !== ViewStatus.Success)\n return result;\n\n vp.setupFromView();\n return ViewStatus.Success;\n }\n\n public enforceZUp(pivotPoint: Point3d) {\n const vp = this.viewport;\n if (!vp || this.isZUp)\n return false;\n\n const viewY = vp.view.getYVector();\n const rotMatrix = Matrix3d.createRotationVectorToVector(viewY, Vector3d.unitZ());\n if (!rotMatrix)\n return false;\n\n const transform = Transform.createFixedPointAndMatrix(pivotPoint, rotMatrix);\n const frust = vp.getWorldFrustum();\n frust.multiply(transform);\n vp.setupViewFromFrustum(frust);\n return true;\n }\n\n public changeViewport(vp?: ScreenViewport): void {\n if (vp === this.viewport && 0 !== this.viewHandles.count) // If viewport isn't really changing do nothing...\n return;\n\n if (this.viewport)\n this.viewport.invalidateDecorations(); // Remove decorations from current viewport...\n\n this.viewport = vp;\n this.targetCenterValid = false;\n if (this.handleMask & (ViewHandleType.Rotate | ViewHandleType.TargetCenter))\n this.updateTargetCenter();\n\n this.viewHandles.empty();\n if (this.handleMask & ViewHandleType.Rotate)\n this.viewHandles.add(new ViewRotate(this));\n\n if (this.handleMask & ViewHandleType.TargetCenter)\n this.viewHandles.add(new ViewTargetCenter(this));\n\n if (this.handleMask & ViewHandleType.Pan)\n this.viewHandles.add(new ViewPan(this));\n\n if (this.handleMask & ViewHandleType.Scroll)\n this.viewHandles.add(new ViewScroll(this));\n\n if (this.handleMask & ViewHandleType.Zoom)\n this.viewHandles.add(new ViewZoom(this));\n\n if (this.handleMask & ViewHandleType.Walk)\n this.viewHandles.add(new ViewWalk(this));\n\n if (this.handleMask & ViewHandleType.Fly)\n this.viewHandles.add(new ViewFly(this));\n\n if (this.handleMask & ViewHandleType.Look)\n this.viewHandles.add(new ViewLook(this));\n\n if (this.handleMask & ViewHandleType.LookAndMove)\n this.viewHandles.add(new ViewLookAndMove(this));\n }\n}\n\n/** ViewingToolHandle for modifying the view's target point for operations like rotate */\nclass ViewTargetCenter extends ViewingToolHandle {\n public get handleType() { return ViewHandleType.TargetCenter; }\n public override checkOneShot(): boolean { return false; } // Don't exit tool after moving target in single-shot mode...\n public firstPoint(ev: BeButtonEvent) {\n if (undefined === ev.viewport)\n return false;\n ev.viewport.viewCmdTargetCenter = undefined; // Clear current saved target, must accept a new location with ctrl...\n return true;\n }\n\n public testHandleForHit(ptScreen: Point3d, out: { distance: number, priority: ViewManipPriority }): boolean {\n if (this.viewTool.isDraggingRequired)\n return false; // Target center handle is not movable in this mode, but it's still nice to display the point we're rotating about...\n\n const vp = this.viewTool.viewport;\n if (undefined === vp)\n return false;\n\n const targetPt = vp.worldToView(this.viewTool.targetCenterWorld);\n const distance = targetPt.distanceXY(ptScreen);\n const locateThreshold = vp.pixelsFromInches(0.15);\n\n if (distance > locateThreshold)\n return false;\n\n out.distance = distance;\n out.priority = ViewManipPriority.High;\n return true;\n }\n\n /** @internal */\n public static drawCross(context: DecorateContext, worldPoint: Point3d, sizePixels: number, hasFocus: boolean): void {\n const crossSize = Math.floor(sizePixels) + 0.5;\n const outlineSize = crossSize + 1;\n const position = context.viewport.worldToView(worldPoint);\n position.x = Math.floor(position.x) + 0.5;\n position.y = Math.floor(position.y) + 0.5;\n const drawDecoration = (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.strokeStyle = \"rgba(0,0,0,.5)\";\n ctx.lineWidth = hasFocus ? 5 : 3;\n ctx.moveTo(-outlineSize, 0);\n ctx.lineTo(outlineSize, 0);\n ctx.moveTo(0, -outlineSize);\n ctx.lineTo(0, outlineSize);\n ctx.stroke();\n\n ctx.beginPath();\n ctx.strokeStyle = \"white\";\n ctx.lineWidth = hasFocus ? 3 : 1;\n ctx.shadowColor = \"black\";\n ctx.shadowBlur = hasFocus ? 7 : 5;\n ctx.moveTo(-crossSize, 0);\n ctx.lineTo(crossSize, 0);\n ctx.moveTo(0, -crossSize);\n ctx.lineTo(0, crossSize);\n ctx.stroke();\n };\n context.addCanvasDecoration({ position, drawDecoration });\n }\n\n public override drawHandle(context: DecorateContext, hasFocus: boolean): void {\n if (context.viewport !== this.viewTool.viewport)\n return;\n\n if (!this.viewTool.targetCenterLocked && !this.viewTool.inHandleModify)\n return; // Don't display default target center, will be updated to use pick point on element...\n\n if (hasFocus && this.viewTool.inHandleModify)\n return; // Cross display handled by preview depth point...\n\n let sizeInches = 0.2;\n if (!hasFocus && this.viewTool.inHandleModify) {\n const hitHandle = this.viewTool.viewHandles.hitHandle;\n if (undefined !== hitHandle && ViewHandleType.Rotate !== hitHandle.handleType)\n return; // Only display when modifying another handle if that handle is rotate (not pan)...\n sizeInches = 0.1; // Display small target when dragging...\n }\n\n const crossSize = context.viewport.pixelsFromInches(sizeInches);\n ViewTargetCenter.drawCross(context, this.viewTool.targetCenterWorld, crossSize, hasFocus);\n }\n\n public doManipulation(ev: BeButtonEvent, inDynamics: boolean) {\n if (inDynamics || ev.viewport !== this.viewTool.viewport)\n return false;\n\n this.pickDepthPoint(ev);\n this.viewTool.setTargetCenterWorld(undefined !== this._depthPoint ? this._depthPoint : ev.point, true, ev.isControlKey); // Lock target for just this tool instance, only save if control is down...\n\n return false; // false means don't do screen update\n }\n\n /** @internal */\n public override needDepthPoint(_ev: BeButtonEvent, _isPreview: boolean): boolean {\n const focusHandle = this.viewTool.inHandleModify ? this.viewTool.viewHandles.focusHandle : undefined;\n return (undefined !== focusHandle && ViewHandleType.TargetCenter === focusHandle.handleType);\n }\n}\n\n/** A ViewingToolHandle with inertia.\n * If the handle is used with *throwing action* (mouse is moving when button goes up or via a touch with movement).\n * it continues to move briefly causing the operation to continue.\n */\nabstract class HandleWithInertia extends ViewingToolHandle implements Animator {\n protected _duration!: BeDuration;\n protected _end!: BeTimePoint;\n protected _inertiaVec?: Vector3d;\n\n public doManipulation(ev: BeButtonEvent, inDynamics: boolean): boolean {\n if (ToolSettings.viewingInertia.enabled && !inDynamics && undefined !== this._inertiaVec)\n return this.beginAnimation();\n\n const vp = ev.viewport;\n if (undefined === vp)\n return false;\n\n const thisPtNpc = vp.worldToNpc(ev.point);\n thisPtNpc.z = this._lastPtNpc.z;\n\n this._inertiaVec = undefined;\n if (this._lastPtNpc.isAlmostEqual(thisPtNpc, 1.0e-10))\n return true;\n\n this._inertiaVec = this._lastPtNpc.vectorTo(thisPtNpc);\n return this.perform(thisPtNpc);\n }\n\n /** Set this handle to become the Viewport's animator */\n protected beginAnimation() {\n this._duration = ToolSettings.viewingInertia.duration;\n if (this._duration.isTowardsFuture) { // ensure duration is towards future. Otherwise, don't start animation\n this._end = BeTimePoint.fromNow(this._duration);\n const vp = this.viewTool.viewport;\n if (undefined !== vp)\n vp.setAnimator(this);\n }\n return true;\n }\n\n /** Move this handle during the inertia duration */\n public animate(): boolean {\n if (undefined === this._inertiaVec)\n return true; // handle was removed\n\n // get the fraction of the inertia duration that remains. The decay is a combination of the number of iterations (see damping below)\n // and time. That way the handle slows down even if the framerate is lower.\n const remaining = ((this._end.milliseconds - BeTimePoint.now().milliseconds) / this._duration.milliseconds);\n const pt = this._lastPtNpc.plusScaled(this._inertiaVec, remaining);\n\n // if we're not moving any more, or if the duration has elapsed, we're done\n if (remaining <= 0 || (this._lastPtNpc.minus(pt).magnitudeSquared() < .000001)) {\n const vp = this.viewTool.viewport;\n if (undefined === vp)\n return false;\n\n vp.saveViewUndo();\n return true; // remove this as the animator\n }\n this.perform(pt); // perform the viewing operation\n inertialDampen(this._inertiaVec);\n return false;\n }\n\n public interrupt() { }\n protected abstract perform(thisPtNpc: Point3d): boolean;\n}\n\n/** ViewingToolHandle for performing the \"pan view\" operation */\nclass ViewPan extends HandleWithInertia {\n public get handleType() { return ViewHandleType.Pan; }\n public override getHandleCursor() { return this.viewTool.inHandleModify ? IModelApp.viewManager.grabbingCursor : IModelApp.viewManager.grabCursor; }\n\n public firstPoint(ev: BeButtonEvent) {\n this._inertiaVec = undefined;\n\n const tool = this.viewTool;\n const vp = tool.viewport;\n\n if (undefined === vp)\n return false;\n\n vp.worldToNpc(ev.point, this._lastPtNpc);\n\n // if the camera is on, we need to find the element under the starting point to get the z\n if (this.needDepthPoint(ev, false)) {\n this.pickDepthPoint(ev);\n if (undefined !== this._depthPoint)\n vp.worldToNpc(this._depthPoint, this._lastPtNpc);\n else\n this._lastPtNpc.z = ViewManip.getFocusPlaneNpc(vp);\n }\n\n tool.beginDynamicUpdate();\n tool.provideToolAssistance(\"Pan.Prompts.NextPoint\");\n return true;\n }\n\n public testHandleForHit(_ptScreen: Point3d, out: { distance: number, priority: ViewManipPriority }): boolean {\n out.distance = 0.0;\n out.priority = ViewManipPriority.Low;\n return true;\n }\n\n /** perform the view pan operation */\n protected perform(thisPtNpc: Point3d) {\n const tool = this.viewTool;\n const vp = tool.viewport;\n\n if (undefined === vp)\n return false;\n\n const view = vp.view;\n const lastWorld = vp.npcToWorld(this._lastPtNpc);\n const thisWorld = vp.npcToWorld(thisPtNpc);\n const dist = thisWorld.vectorTo(lastWorld);\n if (view.is3d()) {\n if (ViewStatus.Success !== (vp.viewingGlobe ? view.moveCameraGlobal(lastWorld, thisWorld) : view.moveCameraWorld(dist)))\n return false;\n\n this.changeFocusFromDepthPoint(); // if we have a valid depth point, set it focus distance from it\n } else {\n view.setOrigin(view.getOrigin().plus(dist));\n }\n\n vp.setupFromView();\n this._lastPtNpc.setFrom(thisPtNpc);\n return true;\n }\n\n /** @internal */\n public override needDepthPoint(ev: BeButtonEvent, _isPreview: boolean): boolean {\n const vp = ev.viewport;\n if (undefined === vp)\n return false;\n return vp.isCameraOn && CoordSource.User === ev.coordsFrom;\n }\n}\n\n/** ViewingToolHandle for performing the \"rotate view\" operation */\nclass ViewRotate extends HandleWithInertia {\n private readonly _frustum = new Frustum();\n private readonly _activeFrustum = new Frustum();\n private readonly _anchorPtNpc = new Point3d();\n public get handleType() { return ViewHandleType.Rotate; }\n public override getHandleCursor() { return IModelApp.viewManager.rotateCursor; }\n\n public testHandleForHit(_ptScreen: Point3d, out: { distance: number, priority: ViewManipPriority }): boolean {\n out.distance = 0.0;\n out.priority = ViewManipPriority.Medium; // Always prefer over pan handle which is only force enabled by IdleTool middle button action...\n return true;\n }\n\n public firstPoint(ev: BeButtonEvent) {\n this._inertiaVec = undefined;\n\n const tool = this.viewTool;\n const vp = ev.viewport;\n if (undefined === vp)\n return false;\n\n this.pickDepthPoint(ev);\n if (undefined !== this._depthPoint)\n tool.setTargetCenterWorld(this._depthPoint, false, false);\n\n vp.worldToNpc(ev.rawPoint, this._anchorPtNpc);\n this._lastPtNpc.setFrom(this._anchorPtNpc);\n\n vp.getFrustum(CoordSystem.World, false, this._activeFrustum);\n this._frustum.setFrom(this._activeFrustum);\n\n tool.beginDynamicUpdate();\n this.viewTool.provideToolAssistance(\"Rotate.Prompts.NextPoint\");\n return true;\n }\n\n public perform(ptNpc: Point3d): boolean {\n const tool = this.viewTool;\n const vp = tool.viewport;\n\n if (undefined === vp)\n return false;\n\n if (this._anchorPtNpc.isAlmostEqual(ptNpc, 1.0e-2)) // too close to anchor pt\n ptNpc.setFrom(this._anchorPtNpc);\n\n const currentFrustum = vp.getFrustum(CoordSystem.World, false);\n const frustumChange = !currentFrustum.equals(this._activeFrustum);\n if (frustumChange)\n this._frustum.setFrom(currentFrustum);\n else {\n if (!vp.setupViewFromFrustum(this._frustum))\n return false;\n }\n\n const currPt = vp.npcToView(ptNpc);\n if (frustumChange)\n this._anchorPtNpc.setFrom(ptNpc);\n\n const view = vp.view;\n let angle: Angle;\n let worldAxis: Vector3d;\n const worldPt = tool.targetCenterWorld;\n if (!view.allow3dManipulations()) {\n const centerPt = vp.worldToView(worldPt);\n const firstPt = vp.npcToView(this._anchorPtNpc);\n const vector0 = Vector2d.createStartEnd(centerPt, firstPt);\n const vector1 = Vector2d.createStartEnd(centerPt, currPt);\n angle = vector0.angleTo(vector1);\n worldAxis = Vector3d.unitZ();\n } else {\n const viewRect = vp.viewRect;\n\n vp.npcToView(ptNpc, currPt);\n const firstPt = vp.npcToView(this._anchorPtNpc);\n\n const xDelta = (currPt.x - firstPt.x);\n const yDelta = (currPt.y - firstPt.y);\n\n // Movement in screen x == rotation about drawing Z (preserve up) or rotation about screen Y...\n const xAxis = ToolSettings.preserveWorldUp && !vp.viewingGlobe ? (undefined !== this._depthPoint ? vp.view.getUpVector(this._depthPoint) : Vector3d.unitZ()) : vp.rotation.getRow(1);\n\n // Movement in screen y == rotation about screen X...\n const yAxis = vp.rotation.getRow(0);\n\n const xRMatrix = (xDelta ? Matrix3d.createRotationAroundVector(xAxis, Angle.createRadians(Math.PI / (viewRect.width / xDelta))) : undefined) ?? Matrix3d.identity;\n const yRMatrix = (yDelta ? Matrix3d.createRotationAroundVector(yAxis, Angle.createRadians(Math.PI / (viewRect.height / yDelta))) : undefined) ?? Matrix3d.identity;\n const worldRMatrix = yRMatrix.multiplyMatrixMatrix(xRMatrix);\n const result = worldRMatrix.getAxisAndAngleOfRotation();\n angle = Angle.createRadians(-result.angle.radians);\n worldAxis = result.axis;\n }\n\n const worldMatrix = Matrix3d.createRotationAroundVector(worldAxis, angle);\n if (undefined !== worldMatrix) {\n const worldTransform = Transform.createFixedPointAndMatrix(worldPt, worldMatrix);\n const frustum = this._frustum.transformBy(worldTransform);\n view.setupFromFrustum(frustum);\n if (view.is3d())\n view.alignToGlobe(view.getCenter());\n this.changeFocusFromDepthPoint(); // if we have a valid depth point, set it focus distance from it\n vp.setupFromView();\n }\n\n vp.getWorldFrustum(this._activeFrustum);\n this._lastPtNpc.setFrom(ptNpc);\n\n return true;\n }\n\n public override onWheel(ev: BeWheelEvent): boolean {\n // When rotate is active, the mouse wheel should zoom about the target center when it's displayed...\n const tool = this.viewTool;\n if (tool.targetCenterLocked || tool.inHandleModify) {\n ev.point = tool.targetCenterWorld;\n ev.coordsFrom = CoordSource.Precision; // WheelEventProcessor.doZoom checks this to decide whether to use raw or adjusted point...\n }\n return false;\n }\n\n /** @internal */\n public override needDepthPoint(ev: BeButtonEvent, _isPreview: boolean): boolean {\n const vp = ev.viewport;\n if (undefined === vp)\n return false;\n return (!this.viewTool.targetCenterLocked && vp.view.allow3dManipulations());\n }\n\n /** @internal */\n public override adjustDepthPoint(isValid: boolean, vp: Viewport, plane: Plane3dByOriginAndUnitNormal, source: DepthPointSource): boolean {\n if (vp.viewingGlobe && vp.iModel.ecefLocation && this.viewTool.isPointVisible(vp.iModel.ecefLocation.earthCenter)) {\n plane.getOriginRef().setFrom(vp.iModel.ecefLocation.earthCenter);\n plane.getNormalRef().setFrom(vp.view.getZVector());\n return true;\n }\n if (super.adjustDepthPoint(isValid, vp, plane, source))\n return true;\n\n plane.getOriginRef().setFrom(this.viewTool.targetCenterWorld);\n return false;\n }\n}\n\n/** ViewingToolHandle for performing the \"look view\" operation */\nclass ViewLook extends ViewingToolHandle {\n private _eyePoint = new Point3d();\n private _firstPtView = new Point3d();\n private _rotation = new Matrix3d();\n private _frustum = new Frustum();\n public get handleType() { return ViewHandleType.Look; }\n public override getHandleCursor(): string { return IModelApp.viewManager.lookCursor; }\n\n public testHandleForHit(_ptScreen: Point3d, out: { distance: number, priority: ViewManipPriority }): boolean {\n out.distance = 0.0;\n out.priority = ViewManipPriority.Medium; // Always prefer over pan handle which is only force enabled by IdleTool middle button action...\n return true;\n }\n\n public firstPoint(ev: BeButtonEvent) {\n const tool = this.viewTool;\n const vp = ev.viewport;\n if (undefined === vp)\n return true;\n\n const view = vp.view;\n if (!view || !view.is3d() || !view.allow3dManipulations())\n return false;\n\n this._firstPtView.setFrom(ev.viewPoint);\n this._eyePoint.setFrom(view.getEyePoint());\n this._rotation.setFrom(vp.rotation);\n\n vp.getWorldFrustum(this._frustum);\n tool.beginDynamicUpdate();\n this.viewTool.provideToolAssistance(\"Look.Prompts.NextPoint\");\n return true;\n }\n\n public override onWheel(_ev: BeWheelEvent): boolean {\n const tool = this.viewTool;\n if (!tool.inHandleModify)\n return false;\n tool.nPts = 0; // start over\n tool.inHandleModify = false;\n tool.inDynamicUpdate = false;\n tool.viewHandles.setFocus(-1);\n return false;\n }\n\n public doManipulation(ev: BeButtonEvent, _inDynamics: boolean): boolean {\n const tool = this.viewTool;\n const viewport = tool.viewport;\n if (undefined === viewport)\n return false;\n\n if (ev.viewport !== viewport)\n return false;\n\n const worldTransform = this.getLookTransform(viewport, this._firstPtView, ev.viewPoint);\n const frustum = this._frustum.transformBy(worldTransform);\n viewport.setupViewFromFrustum(frustum);\n\n return true;\n }\n\n private getLookTransform(vp: Viewport, firstPt: Point3d, currPt: Point3d): Transform {\n const viewRect = vp.viewRect;\n const xExtent = viewRect.width;\n const yExtent = viewRect.height;\n const xDelta = (currPt.x - firstPt.x);\n const yDelta = (currPt.y - firstPt.y);\n const xAngle = -(xDelta / xExtent) * Math.PI;\n const yAngle = -(yDelta / yExtent) * Math.PI;\n\n const inverseRotation = this._rotation.inverse();\n const horizontalRotation = Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createRadians(xAngle));\n const verticalRotation = Matrix3d.createRotationAroundVector(Vector3d.unitX(), Angle.createRadians(yAngle));\n\n if (undefined === inverseRotation || undefined === horizontalRotation || undefined === verticalRotation)\n return Transform.createIdentity();\n\n verticalRotation.multiplyMatrixMatrix(this._rotation, verticalRotation);\n inverseRotation.multiplyMatrixMatrix(verticalRotation, verticalRotation);\n\n const newRotation = horizontalRotation.multiplyMatrixMatrix(verticalRotation);\n const transform = Transform.createFixedPointAndMatrix(this._eyePoint, newRotation);\n return transform;\n }\n}\n\n/** handle for tools that animate a frustum change based on the position of the cursor relative to an anchor point. */\nabstract class AnimatedHandle extends ViewingToolHandle {\n protected readonly _anchorPtView = new Point3d();\n protected readonly _lastPtView = new Point3d();\n protected _lastMotionTime = 0;\n protected _deadZone = 36;\n\n public testHandleForHit(_ptScreen: Point3d, out: { distance: number, priority: ViewManipPriority }): boolean {\n out.distance = 0.0;\n out.priority = ViewManipPriority.Medium;\n return true;\n }\n\n protected getElapsedTime(): number {\n const prev = this._lastMotionTime;\n this._lastMotionTime = Date.now();\n return Geometry.clamp(this._lastMotionTime - prev, 0, 1000) / 1000;\n }\n // called on mouse motion\n public doManipulation(ev: BeButtonEvent): boolean {\n this._lastPtView.setFrom(ev.viewPoint);\n return true;\n }\n\n // called when animation is interrupted\n public interrupt(): void { }\n public animate(): boolean {\n // Don't continue animation when mouse is outside view, and don't jump if it returns...\n if (undefined !== IModelApp.toolAdmin.cursorView)\n return true;\n this.getElapsedTime();\n return false;\n }\n\n public firstPoint(ev: BeButtonEvent): boolean {\n const vp = ev.viewport;\n const tool = this.viewTool;\n tool.inDynamicUpdate = true;\n if (vp && this.needDepthPoint(ev, false)) {\n this.pickDepthPoint(ev);\n if (undefined !== this._depthPoint) {\n vp.worldToView(this._depthPoint, this._anchorPtView);\n } else {\n vp.worldToNpc(ev.point, this._anchorPtView);\n this._anchorPtView.z = ViewManip.getFocusPlaneNpc(vp);\n vp.npcToView(this._anchorPtView, this._anchorPtView);\n }\n } else {\n this._anchorPtView.setFrom(ev.viewPoint);\n }\n this._lastPtView.setFrom(this._anchorPtView);\n this._lastMotionTime = Date.now();\n if (undefined !== tool.viewport)\n tool.viewport.setAnimator(this);\n return true;\n }\n\n protected getDirection(): Vector3d | undefined {\n const dir = this._anchorPtView.vectorTo(this._lastPtView);\n dir.z = 0;\n return dir.magnitudeSquared() < this._deadZone ? undefined : dir; // dead zone around starting point\n }\n\n protected getInputVector(): Vector3d | undefined {\n const vp = this.viewTool.viewport;\n if (undefined === vp)\n return undefined;\n const dir = this.getDirection();\n if (undefined === dir)\n return undefined;\n const viewRect = vp.viewRect;\n return new Vector3d(dir.x * (2.0 / viewRect.width), dir.y * (2.0 / viewRect.height));\n }\n\n public override onReinitialize(): void {\n const tool = this.viewTool;\n tool.inDynamicUpdate = false;\n const vp = tool.viewport;\n if (undefined !== vp)\n vp.setAnimator();\n }\n\n // called when wheel rolls, reset tool\n public override onWheel(_ev: BeWheelEvent): boolean {\n const tool = this.viewTool;\n tool.nPts = 0; // start over\n tool.inDynamicUpdate = false; // not active\n return false;\n }\n}\n\n/** ViewingToolHandle for performing the \"scroll view\" operation */\nclass ViewScroll extends AnimatedHandle {\n public get handleType() { return ViewHandleType.Scroll; }\n public override getHandleCursor(): string { return \"move\"; }\n\n public override drawHandle(context: DecorateContext, _hasFocus: boolean): void {\n if (context.viewport !== this.viewTool.viewport || !this.viewTool.inDynamicUpdate)\n return;\n\n const radius = Math.floor(context.viewport.pixelsFromInches(0.1)) + 0.5;\n const position = this._anchorPtView.clone();\n const position2 = this._lastPtView.clone();\n const offset = position2.minus(position);\n const drawDecoration = (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.strokeStyle = \"rgba(0,255,0,.3)\";\n ctx.setLineDash([10, 4]);\n ctx.lineWidth = 3;\n ctx.moveTo(0, 0);\n ctx.lineTo(offset.x, offset.y);\n ctx.stroke();\n ctx.beginPath();\n ctx.setLineDash([]);\n ctx.strokeStyle = \"rgba(0,0,0,.5)\";\n ctx.lineWidth = 1;\n ctx.fillStyle = \"rgba(255,255,255,.5)\";\n ctx.arc(0, 0, radius, 0, 2 * Math.PI);\n ctx.fill();\n ctx.stroke();\n\n let vec = Vector2d.createStartEnd(position, position2);\n if (undefined === vec)\n vec = Vector2d.unitX();\n else\n vec.normalize(vec);\n\n const slashPts = [new Point2d(), new Point2d()];\n slashPts[0].plusScaled(vec, radius, slashPts[0]);\n slashPts[1].plusScaled(vec, -radius, slashPts[1]);\n\n ctx.beginPath();\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = 2;\n ctx.moveTo(slashPts[0].x, slashPts[0].y);\n ctx.lineTo(slashPts[1].x, slashPts[1].y);\n ctx.stroke();\n };\n context.addCanvasDecoration({ position, drawDecoration }, true);\n }\n\n public override firstPoint(ev: BeButtonEvent) {\n super.firstPoint(ev);\n this.viewTool.provideToolAssistance(\"Scroll.Prompts.NextPoint\");\n return true;\n }\n\n public override animate(): boolean {\n if (!super.animate())\n return false;\n\n const dist = this.getDirection();\n if (undefined === dist)\n return false;\n\n dist.scaleInPlace(ToolSettings.scrollSpeed * this.getElapsedTime());\n const tool = this.viewTool;\n const viewport = tool.viewport;\n if (undefined === viewport)\n return false;\n\n if (viewport.isCameraOn) {\n const points: Point3d[] = new Array<Point3d>(2);\n points[0] = this._anchorPtView.clone();\n points[1] = points[0].plus(dist);\n\n viewport.viewToNpcArray(points);\n points[1].z = points[0].z;\n viewport.npcToWorldArray(points);\n\n const offset = points[1].minus(points[0]);\n const offsetTransform = Transform.createTranslation(offset);\n const frustum = viewport.getWorldFrustum();\n frustum.transformBy(offsetTransform, frustum);\n viewport.setupViewFromFrustum(frustum);\n } else {\n viewport.scroll(dist, { noSaveInUndo: true });\n }\n\n return false;\n }\n\n /** @internal */\n public override needDepthPoint(ev: BeButtonEvent, _isPreview: boolean): boolean {\n const vp = ev.viewport;\n if (undefined === vp)\n return false;\n return vp.isCameraOn && CoordSource.User === ev.coordsFrom;\n }\n}\n\n/** ViewingToolHandle for performing the \"zoom view\" operation */\nclass ViewZoom extends ViewingToolHandle {\n protected readonly _anchorPtNpc = new Point3d();\n protected readonly _anchorPtView = new Point3d();\n protected readonly _anchorPtWorld = new Point3d();\n protected readonly _lastPtView = new Point3d();\n protected readonly _startEyePoint = new Point3d();\n protected _startFrust?: Frustum;\n protected _lastZoomRatio = 1.0;\n public get handleType() { return ViewHandleType.Zoom; }\n public override getHandleCursor() { return IModelApp.viewManager.zoomCursor; }\n\n public testHandleForHit(_ptScreen: Point3d, out: { distance: number, priority: ViewManipPriority }): boolean {\n out.distance = 0.0;\n out.priority = ViewManipPriority.Medium; // Always prefer over pan handle which is only force enabled by IdleTool middle button action...\n return true;\n }\n\n public override drawHandle(context: DecorateContext, hasFocus: boolean): void {\n if (!hasFocus || context.viewport !== this.viewTool.viewport || !this.viewTool.inDynamicUpdate)\n return;\n\n const radius = Math.floor(context.viewport.pixelsFromInches(0.15)) + 0.5;\n const crossRadius = radius * 0.6;\n const position = this._anchorPtView.clone();\n position.x = Math.floor(position.x) + 0.5;\n position.y = Math.floor(position.y) + 0.5;\n const drawDecoration = (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.strokeStyle = \"rgba(0,0,0,.5)\";\n ctx.lineWidth = 1;\n ctx.fillStyle = \"rgba(255,255,255,.5)\";\n ctx.arc(0, 0, radius, 0, 2 * Math.PI);\n ctx.fill();\n ctx.stroke();\n ctx.beginPath();\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = 2;\n ctx.moveTo(-crossRadius, 0);\n ctx.lineTo(crossRadius, 0);\n if (this._lastZoomRatio < 1.0) {\n ctx.moveTo(0, -crossRadius);\n ctx.lineTo(0, crossRadius);\n }\n ctx.stroke();\n };\n context.addCanvasDecoration({ position, drawDecoration }, true);\n }\n\n public firstPoint(ev: BeButtonEvent) {\n const vp = ev.viewport;\n if (undefined === vp)\n return false;\n this.viewTool.inDynamicUpdate = true;\n if (this.needDepthPoint(ev, false)) {\n this.pickDepthPoint(ev);\n if (undefined !== this._depthPoint) {\n vp.worldToView(this._depthPoint, this._anchorPtView);\n } else {\n vp.worldToNpc(ev.point, this._anchorPtView);\n this._anchorPtView.z = ViewManip.getFocusPlaneNpc(vp);\n vp.npcToView(this._anchorPtView, this._anchorPtView);\n }\n } else {\n this._anchorPtView.setFrom(ev.viewPoint);\n }\n this._lastPtView.setFrom(this._anchorPtView);\n\n vp.viewToNpc(this._anchorPtView, this._anchorPtNpc);\n vp.viewToWorld(this._anchorPtView, this._anchorPtWorld);\n this._startFrust = vp.getWorldFrustum();\n\n if (vp.view.is3d() && vp.view.isCameraOn)\n this._startEyePoint.setFrom(vp.view.getEyePoint());\n\n this.viewTool.provideToolAssistance(\"Zoom.Prompts.NextPoint\");\n return true;\n }\n\n public override onWheel(_ev: BeWheelEvent): boolean {\n const tool = this.viewTool;\n if (!tool.inHandleModify)\n return false;\n tool.nPts = 0; // start over\n tool.inHandleModify = false;\n tool.inDynamicUpdate = false;\n tool.viewHandles.setFocus(-1);\n return false;\n }\n\n protected getDirection(): Vector3d | undefined {\n const dir = this._anchorPtView.vectorTo(this._lastPtView);\n dir.z = 0;\n return dir.magnitudeSquared() < 36 ? undefined : dir; // dead zone around starting point\n }\n\n public doManipulation(ev: BeButtonEvent): boolean {\n this._lastPtView.setFrom(ev.viewPoint);\n\n if (undefined === this._startFrust || undefined === this.getDirection()) // on anchor point?\n return false;\n\n const viewport = this.viewTool.viewport;\n if (undefined === viewport)\n return false;\n\n const view = viewport.view;\n const thisPtNpc = viewport.viewToNpc(this._lastPtView);\n const dist = this._anchorPtNpc.minus(thisPtNpc);\n dist.z = 0.0;\n dist.x = 0.0;\n let zoomRatio = 1.0 + (dist.magnitude() * ToolSettings.zoomSpeed);\n if (dist.y > 0)\n zoomRatio = 1.0 / zoomRatio;\n this._lastZoomRatio = zoomRatio;\n\n const frustum = this._startFrust.clone();\n const transform = Transform.createFixedPointAndMatrix(this._anchorPtWorld, Matrix3d.createScale(zoomRatio, zoomRatio, view.is3d() ? zoomRatio : 1.0));\n\n if (view.is3d() && view.isCameraOn) {\n const oldEyePoint = this._startEyePoint;\n const newEyePoint = transform.multiplyPoint3d(oldEyePoint);\n const cameraOffset = Vector3d.createStartEnd(oldEyePoint, newEyePoint);\n Transform.createTranslation(cameraOffset, transform);\n }\n\n frustum.transformBy(transform, frustum);\n if (ViewStatus.Success !== view.setupFromFrustum(frustum))\n return false;\n\n if (view.is3d() && view.isCameraOn)\n this.changeFocusFromDepthPoint(); // if we have a valid depth point, set it focus distance from it\n\n return ViewStatus.Success === viewport.setupFromView();\n }\n\n /** @internal */\n public override needDepthPoint(ev: BeButtonEvent, _isPreview: boolean): boolean {\n const vp = ev.viewport;\n if (undefined === vp)\n return false;\n return vp.isCameraOn && CoordSource.User === ev.coordsFrom;\n }\n}\n\n/** @internal */\nclass NavigateMotion {\n private _seconds = 0;\n public readonly transform = Transform.createIdentity();\n constructor(public viewport: Viewport) { }\n\n public init(seconds: number) {\n this._seconds = seconds;\n this.transform.setIdentity();\n }\n\n public getViewUp(result?: Vector3d) { return this.viewport.rotation.getRow(1, result); }\n\n public getViewDirection(result?: Vector3d): Vector3d {\n const forward = this.viewport.rotation.getRow(2, result);\n forward.scale(-1, forward); // positive z is out of the screen, but we want direction into the screen\n return forward;\n }\n\n public takeElevator(height: number): void {\n const up = Point3d.create(0, 0, height * this._seconds);\n Transform.createTranslation(up, this.transform);\n }\n\n public modifyPitchAngleToPreventInversion(pitchAngle: number): number {\n const angleLimit = Angle.degreesToRadians(85);\n const angleTolerance = Angle.degreesToRadians(0.01);\n\n if (0.0 === pitchAngle)\n return 0.0;\n\n const viewUp = this.getViewUp();\n const viewDir = this.getViewDirection();\n const worldUp = Vector3d.unitZ();\n\n let viewAngle = worldUp.angleTo(viewUp).radians;\n if (viewDir.z < 0)\n viewAngle *= -1;\n\n let newAngle = pitchAngle + viewAngle;\n if (Math.abs(newAngle) < angleLimit)\n return pitchAngle; // not close to the limit\n if ((pitchAngle > 0) !== (viewAngle > 0) && (Math.abs(pitchAngle) < Math.PI / 2))\n return pitchAngle; // tilting away from the limit\n if (Math.abs(viewAngle) >= (angleLimit - angleTolerance))\n return 0.0; // at the limit already\n\n const difference = Math.abs(newAngle) - angleLimit;\n newAngle = (pitchAngle > 0) ? pitchAngle - difference : pitchAngle + difference;\n return newAngle; // almost at the limit, but still can go a little bit closer\n }\n\n public generateMouseLookTransform(accumulator: Vector3d, movement: XAndY, result?: Transform): Transform {\n const vp = this.viewport;\n const view = vp.view;\n if (!view.is3d() || !vp.isCameraOn)\n return Transform.createIdentity();\n const viewRect = this.viewport.viewRect;\n const xExtent = viewRect.width;\n const yExtent = viewRect.height;\n accumulator.z += this._seconds; // accumulate time delta since start...\n const snappiness = 10.0; // larger values are more responsive...\n const fraction = Geometry.clamp(snappiness * accumulator.z, 0.0, 1.0);\n accumulator.x = Geometry.interpolate(accumulator.x, fraction, movement.x);\n accumulator.y = Geometry.interpolate(accumulator.y, fraction, movement.y);\n const xAngle = -(accumulator.x / xExtent) * Math.PI * 2.0;\n const yAngle = -(accumulator.y / yExtent) * Math.PI;\n const viewRot = vp.rotation;\n const invViewRot = viewRot.inverse();\n if (undefined === invViewRot)\n return Transform.createIdentity();\n const pitchAngle = Angle.createRadians(this.modifyPitchAngleToPreventInversion(yAngle));\n const pitchMatrix = Matrix3d.createRotationAroundVector(Vector3d.unitX(), pitchAngle);\n if (undefined === pitchMatrix)\n return Transform.createIdentity();\n const pitchTimesView = pitchMatrix.multiplyMatrixMatrix(viewRot);\n const inverseViewTimesPitchTimesView = invViewRot.multiplyMatrixMatrix(pitchTimesView);\n const yawMatrix = Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createRadians(xAngle));\n if (undefined === yawMatrix)\n return Transform.createIdentity();\n const yawTimesInverseViewTimesPitchTimesView = yawMatrix.multiplyMatrixMatrix(inverseViewTimesPitchTimesView);\n return Transform.createFixedPointAndMatrix(view.getEyePoint(), yawTimesInverseViewTimesPitchTimesView, result);\n }\n\n public generateRotationTransform(yawRate: number, pitchRate: number, result?: Transform): Transform {\n const vp = this.viewport;\n const view = vp.view;\n if (!view.is3d() || !vp.isCameraOn)\n return Transform.createIdentity();\n const viewRot = vp.rotation;\n const invViewRot = viewRot.inverse();\n if (undefined === invViewRot)\n return Transform.createIdentity();\n const pitchAngle = Angle.createRadians(this.modifyPitchAngleToPreventInversion(pitchRate * this._seconds));\n const pitchMatrix = Matrix3d.createRotationAroundVector(Vector3d.unitX(), pitchAngle);\n if (undefined === pitchMatrix)\n return Transform.createIdentity();\n const pitchTimesView = pitchMatrix.multiplyMatrixMatrix(viewRot);\n const inverseViewTimesPitchTimesView = invViewRot.multiplyMatrixMatrix(pitchTimesView);\n const yawMatrix = Matrix3d.createRotationAroundVector(Vector3d.unitZ(), Angle.createRadians(yawRate * this._seconds));\n if (undefined === yawMatrix)\n return Transform.createIdentity();\n const yawTimesInverseViewTimesPitchTimesView = yawMatrix.multiplyMatrixMatrix(inverseViewTimesPitchTimesView);\n return Transform.createFixedPointAndMatrix(view.getEyePoint(), yawTimesInverseViewTimesPitchTimesView, result);\n }\n\n public generateTranslationTransform(velocity: Vector3d, isConstrainedToXY: boolean, result?: Transform) {\n const points: Point3d[] = new Array<Point3d>(3);\n points[0] = new Point3d(0, 0, 0);\n points[1] = new Point3d(1, 0, 0);\n points[2] = new Point3d(0, 1, 0);\n if (this.viewport.isCameraOn) {\n this.viewport.viewToNpcArray(points);\n points[0].z = points[1].z = points[2].z = ViewManip.getFocusPlaneNpc(this.viewport); // use the focal plane for z coordinates\n this.viewport.npcToViewArray(points);\n }\n this.viewport.viewToWorldArray(points);\n const xDir = Vector3d.createStartEnd(points[0], points[1]);\n xDir.normalizeInPlace();\n const yDir = Vector3d.createStartEnd(points[0], points[2]);\n yDir.normalizeInPlace();\n\n const zDir = this.getViewDirection();\n\n if (isConstrainedToXY) {\n const up = Vector3d.unitZ();\n const cross = up.crossProduct(zDir);\n cross.crossProduct(up, zDir);\n zDir.normalizeInPlace();\n }\n\n xDir.scale(velocity.x * this._seconds, xDir);\n yDir.scale(velocity.y * this._seconds, yDir);\n zDir.scale(velocity.z * this._seconds, zDir);\n\n xDir.plus(yDir, xDir).plus(zDir, xDir);\n return Transform.createTranslation(xDir, result);\n }\n\n public moveAndMouseLook(accumulator: Vector3d, linearVelocity: Vector3d, movement: XAndY, isConstrainedToXY: boolean): boolean {\n const rotateTrans = this.generateMouseLookTransform(accumulator, movement);\n const dollyTrans = this.generateTranslationTransform(linearVelocity, isConstrainedToXY);\n this.transform.setMultiplyTransformTransform(rotateTrans, dollyTrans);\n return (accumulator.x >= movement.x && accumulator.y >= movement.y);\n }\n\n public moveAndLook(linearVelocity: Vector3d, angularVelocityX: number, angularVelocityY: number, isConstrainedToXY: boolean): void {\n const rotateTrans = this.generateRotationTransform(angularVelocityX, angularVelocityY);\n const dollyTrans = this.generateTranslationTransform(linearVelocity, isConstrainedToXY);\n this.transform.setMultiplyTransformTransform(rotateTrans, dollyTrans);\n }\n\n public pan(horizontalVelocity: number, verticalVelocity: number): void {\n const travel = new Vector3d(horizontalVelocity, verticalVelocity, 0);\n this.moveAndLook(travel, 0, 0, false);\n }\n\n public travel(yawRate: number, pitchRate: number, forwardVelocity: number, isConstrainedToXY: boolean): void {\n const travel = new Vector3d(0, 0, forwardVelocity);\n this.moveAndLook(travel, yawRate, pitchRate, isConstrainedToXY);\n }\n\n public look(yawRate: number, pitchRate: number): void { this.generateRotationTransform(yawRate, pitchRate, this.transform); }\n\n /** reset pitch of view to zero */\n public resetToLevel(): void {\n const view = this.viewport.view;\n if (!view.is3d() || !view.isCameraOn)\n return;\n const angles = YawPitchRollAngles.createFromMatrix3d(this.viewport.rotation);\n if (undefined === angles)\n return;\n angles.pitch.setRadians(0); // reset pitch to zero\n Transform.createFixedPointAndMatrix(view.getEyePoint(), angles.toMatrix3d(), this.transform);\n }\n}\n\n/** ViewingToolHandle for performing the Walk and Fly operations */\nabstract class ViewNavigate extends AnimatedHandle {\n private _initialized = false;\n protected abstract getNavigateMotion(seconds: number): NavigateMotion | undefined;\n\n public override getHandleCursor() { return IModelApp.viewManager.walkCursor; }\n public getMaxLinearVelocity() { return ToolSettings.walkVelocity; }\n public getMaxAngularVelocity() { return Math.PI / 4; }\n\n public getNavigateMode(): NavigateMode {\n const state = IModelApp.toolAdmin.currentInputState;\n return (state.isShiftDown || (false === this.viewTool.viewport?.isCameraOn)) ? NavigateMode.Pan :\n state.isControlDown ? NavigateMode.Look : NavigateMode.Travel;\n }\n\n // called in animation loop\n public override animate(): boolean {\n if (!super.animate())\n return false;\n\n const motion = this.getNavigateMotion(this.getElapsedTime());\n\n if (undefined !== motion) {\n const vp = this.viewTool.viewport;\n if (undefined === vp)\n return false;\n const frust = vp.getWorldFrustum();\n frust.multiply(motion.transform);\n vp.setupViewFromFrustum(frust);\n }\n return false;\n }\n\n public override onReinitialize(): void {\n super.onReinitialize();\n if (this._initialized)\n return;\n this._initialized = true;\n\n const tool = this.viewTool;\n const vp = tool.viewport;\n if (undefined === vp)\n return;\n\n const view = vp.view;\n if (!view.allow3dManipulations())\n return;\n\n const walkAngle = ToolSettings.walkCameraAngle;\n if (!tool.lensAngleMatches(walkAngle, Angle.degreesToRadians(15.)) || !tool.isZUp) {\n // This turns on the camera if its not already on. It also assures the camera is centered. Obviously this is required if\n // the camera is not on or the lens angle is not what we want. We also want to do it if Z will be\n // adjusted because EnforceZUp swivels the camera around what GetTargetPoint returns. If the FocusDistance is not set to something\n // reasonable the target point may be far beyond anything relevant.\n tool.setCameraLensAngle(walkAngle, tool.lensAngleMatches(walkAngle, Angle.degreesToRadians(45.)));\n }\n\n if (ToolSettings.walkEnforceZUp)\n tool.enforceZUp(view.getTargetPoint());\n\n vp.animateFrustumChange();\n }\n\n public override drawHandle(context: DecorateContext, hasFocus: boolean): void {\n if (!hasFocus || context.viewport !== this.viewTool.viewport || !this.viewTool.inDynamicUpdate)\n return;\n const position = this._anchorPtView.clone();\n position.x = Math.floor(position.x) + 0.5;\n position.y = Math.floor(position.y) + 0.5;\n const drawDecoration = (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.strokeStyle = \"black\";\n ctx.fillStyle = \"rgba(255,255,255,.3)\";\n ctx.lineWidth = 1;\n ctx.arc(0, 0, 5, 0, 2 * Math.PI);\n ctx.stroke();\n ctx.fill();\n };\n context.addCanvasDecoration({ position, drawDecoration });\n }\n}\n\n/** ViewingToolHandle for looking around and moving through a model using mouse+wasd or on-screen control sticks for touch */\nclass ViewLookAndMove extends ViewNavigate {\n private _navigateMotion: NavigateMotion;\n private _lastCollision = 0;\n private _lastReadPt = new Point3d();\n private _lastReference?: Plane3dByOriginAndUnitNormal;\n private _lastContour?: LineString3d;\n private _currentContour?: LineString3d;\n protected readonly _positionInput = new Vector3d();\n protected readonly _accumulator = new Vector3d();\n protected _lastMovement?: XAndY;\n protected _touchStartL?: BeTouchEvent;\n protected _touchStartR?: BeTouchEvent;\n protected _touchLast?: BeTouchEvent;\n protected _touchElevate = false;\n protected _touchLook = false;\n protected _touchSpeedUp = false;\n protected _havePointerLock = false;\n protected _pointerLockChangeListener?: EventListener;\n protected _pointerLockClickEngagementListener?: EventListener;\n protected _pointerLockKeyEngagementListener?: EventListener;\n\n constructor(viewManip: ViewManip) {\n super(viewManip);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._navigateMotion = new NavigateMotion(this.viewTool.viewport!);\n }\n\n public get handleType(): ViewHandleType { return ViewHandleType.LookAndMove; }\n public override getHandleCursor(): string { return IModelApp.viewManager.lookCursor; }\n\n public override testHandleForHit(_ptScreen: Point3d, out: { distance: number, priority: ViewManipPriority }): boolean {\n out.distance = 0.0;\n out.priority = ViewManipPriority.Medium; // Always prefer over pan handle which is only force enabled by IdleTool middle button action...\n return true;\n }\n\n public override onReinitialize(): void {\n super.onReinitialize();\n this._touchStartL = this._touchStartR = this._touchLast = undefined;\n this._touchElevate = this._touchSpeedUp = this._touchLook = false;\n if (this.viewTool.viewHandles.testHit(Point3d.createZero(), ViewHandleType.LookAndMove))\n this.viewTool.viewHandles.focusHitHandle(); // Ensure key events go to this handle by default w/o requiring motion...\n this.onCleanup();\n this.requestPointerLock(true);\n }\n\n public override onCleanup(): void {\n super.onCleanup();\n this.releasePointerLock();\n }\n\n private async pointerLockChangeEvent(): Promise<void> {\n const vp = this.viewTool.viewport;\n if (undefined !== vp && document.pointerLockElement === vp.canvas) {\n vp.npcToView(NpcCenter, this._anchorPtView); // Display indicator in the middle of the view for pointer lock...\n this._lastPtView.setFrom(this._anchorPtView);\n this._havePointerLock = true;\n vp.invalidateDecorations();\n } else {\n // If ESC is used to disable pointer lock, exit the tool instead of continuing in drag mode...\n if (this._havePointerLock && this.viewTool.inDynamicUpdate)\n await this.viewTool.exitTool();\n else\n this._havePointerLock = false;\n }\n }\n\n private requestPointerLock(enable: boolean): void {\n if (!enable) {\n if (undefined !== this._pointerLockClickEngagementListener) {\n document.removeEventListener(\"click\", this._pointerLockClickEngagementListener, false);\n this._pointerLockClickEngagementListener = undefined;\n }\n if (undefined !== this._pointerLockKeyEngagementListener) {\n document.removeEventListener(\"keydown\", this._pointerLockKeyEngagementListener, false);\n this._pointerLockKeyEngagementListener = undefined;\n }\n return;\n }\n\n if (!ToolSettings.walkRequestPointerLock)\n return;\n\n const vp = this.viewTool.viewport;\n if (undefined === vp)\n return;\n\n // NOTE: Chrome appears to be the only browser that doesn't require pointer lock to be requested from an engagement event like click.\n // Currently pointer lock is requested for \"click\" and not \"mousedown\" since we don't want pointer lock for drag operation.\n if (undefined === this._pointerLockChangeListener) {\n this._pointerLockChangeListener = async () => this.pointerLockChangeEvent();\n document.addEventListener(\"pointerlockchange\", this._pointerLockChangeListener, false);\n }\n\n if (undefined === this._pointerLockClickEngagementListener) {\n this._pointerLockClickEngagementListener = () => {\n if (1 === this.viewTool.nPts && undefined !== IModelApp.toolAdmin.cursorView)\n void vp.canvas.requestPointerLock();\n };\n document.addEventListener(\"click\", this._pointerLockClickEngagementListener, false);\n }\n\n if (undefined === this._pointerLockKeyEngagementListener) {\n this._pointerLockKeyEngagementListener = (ev: Event) => {\n if (0 === this.viewTool.nPts && undefined !== IModelApp.toolAdmin.cursorView && this.isNavigationKey(ev as KeyboardEvent))\n void vp.canvas.requestPointerLock();\n };\n document.addEventListener(\"keydown\", this._pointerLockKeyEngagementListener, false);\n }\n }\n\n private releasePointerLock(): void {\n this._havePointerLock = false;\n this.requestPointerLock(false);\n if (undefined !== this._pointerLockChangeListener) {\n document.removeEventListener(\"pointerlockchange\", this._pointerLockChangeListener, false);\n this._pointerLockChangeListener = undefined;\n }\n if (null !== document.pointerLockElement && undefined !== document.exitPointerLock)\n document.exitPointerLock();\n }\n\n public override firstPoint(ev: BeButtonEvent): boolean {\n this.viewTool.provideToolAssistance(\"LookAndMove.Prompts.NextPoint\");\n if (!super.firstPoint(ev))\n return false;\n\n const vp = this.viewTool.viewport;\n if (undefined === vp || !vp.isCameraOn)\n return true;\n\n if (InputSource.Mouse === ev.inputSource) {\n this._deadZone = Math.pow(vp.pixelsFromInches(0.5), 2); // Only used if pointer lock isn't supported...\n } else {\n this._touchLook = true;\n vp.npcToView(NpcCenter, this._anchorPtView); // Display indicator in the middle of the view for touch look...\n }\n return true;\n }\n\n public override doManipulation(ev: BeButtonEvent): boolean {\n if (InputSource.Mouse === ev.inputSource)\n this._lastMovement = this._havePointerLock ? ev.movement : undefined;\n else\n this._lastMovement = this._lastPtView.vectorTo(ev.viewPoint).scale(2.0); // ev.movement isn't available for button event created from touch event...\n this._accumulator.setZero();\n\n return super.doManipulation(ev);\n }\n\n public override getMaxLinearVelocity() {\n const maxLinearVelocity = super.getMaxLinearVelocity();\n if (0 === ToolSettings.walkVelocityChange)\n return (this._touchSpeedUp ? maxLinearVelocity * 2.0 : maxLinearVelocity);\n\n const speedFactor = Geometry.clamp(ToolSettings.walkVelocityChange + (ToolSettings.walkVelocityChange > 0 ? 1 : -1), -10, 10);\n const speedMultiplier = (speedFactor >= 0 ? speedFactor : 1 / Math.abs(speedFactor));\n\n return maxLinearVelocity * speedMultiplier;\n }\n\n protected getMaxAngularVelocityX() { return 2 * this.getMaxAngularVelocity(); } // Allow turning to be faster than looking up/down...\n protected getMaxAngularVelocityY() { return this.getMaxAngularVelocity(); }\n\n protected getLinearVelocity(): Vector3d {\n const positionInput = Vector3d.create();\n const position = this.getTouchStartPosition(this._touchStartL);\n\n if (undefined !== position) {\n const vp = this.viewTool.viewport;\n const outerRadius = vp ? this.getTouchControlRadius(vp) : 1;\n const offset = this.getTouchOffset(this._touchStartL, outerRadius);\n const inputL = new Vector3d(offset.x * (1.0 / outerRadius), offset.y * (1.0 / outerRadius));\n positionInput.x = inputL.x * this.getMaxLinearVelocity();\n if (this._touchElevate)\n positionInput.y = inputL.y * this.getMaxLinearVelocity();\n else\n positionInput.z = inputL.y * -this.getMaxLinearVelocity();\n return positionInput;\n }\n\n this._positionInput.scale(this.getMaxLinearVelocity(), positionInput);\n return positionInput;\n }\n\n protected getAngularVelocity(): Vector3d {\n const angularInput = Vector3d.create();\n const position = this.getTouchStartPosition(this._touchStartR);\n\n if (undefined !== position) {\n const vp = this.viewTool.viewport;\n const outerRadius = vp ? this.getTouchControlRadius(vp) : 1;\n const offset = this.getTouchOffset(this._touchStartR, outerRadius);\n const inputA = new Vector3d(offset.x * (1.0 / outerRadius), offset.y * (1.0 / outerRadius));\n angularInput.x = inputA.x * -this.getMaxAngularVelocityX();\n angularInput.y = inputA.y * -this.getMaxAngularVelocityY();\n return angularInput;\n }\n\n if (this._havePointerLock || this._touchLook)\n return angularInput;\n\n const input = this.getInputVector();\n if (undefined !== input) {\n angularInput.x = input.x * -this.getMaxAngularVelocityX();\n angularInput.y = input.y * -this.getMaxAngularVelocityY();\n }\n return angularInput;\n }\n\n protected getHorizAndVertVelocity(): Vector3d | undefined {\n const input = this.getInputVector();\n if (undefined === input)\n return undefined;\n input.scale(this.getMaxLinearVelocity(), input);\n return input;\n }\n\n private computeCollisionData(vp: Viewport, eyePt: Point3d): void {\n const contourLine = LineString3d.create();\n const viewPt = vp.npcToView(NpcCenter);\n const pts: Point2d[] = [];\n pts[0] = new Point2d(Math.floor(viewPt.x + 0.5), vp.viewRect.top);\n pts[1] = new Point2d(pts[0].x + 1, vp.viewRect.bottom);\n const range = Range2d.createArray(pts);\n\n let detectStepUp = false;\n const rect = new ViewRect();\n rect.initFromRange(range);\n vp.readPixels(rect, Pixel.Selector.GeometryAndDistance, (pixels) => {\n if (undefined === pixels)\n return;\n\n const sRange = Range2d.createNull();\n sRange.extendPoint(Point2d.create(vp.cssPixelsToDevicePixels(range.low.x), vp.cssPixelsToDevicePixels(range.low.y)));\n sRange.extendPoint(Point2d.create(vp.cssPixelsToDevicePixels(range.high.x), vp.cssPixelsToDevicePixels(range.high.y)));\n\n const testPoint = Point2d.create(sRange.low.x);\n for (testPoint.y = sRange.high.y; testPoint.y >= sRange.low.y; --testPoint.y) {\n const pixel = pixels.getPixel(testPoint.x, testPoint.y);\n if (pixel.distanceFraction < 0)\n continue; // No geometry at location...\n\n const hitPointWorld = vp.getPixelDataWorldPoint({ pixels, x: testPoint.x, y: testPoint.y, preserveModelDisplayTransforms: true });\n if (undefined === hitPointWorld)\n continue;\n\n if (0 === contourLine.numPoints()) {\n if (undefined === this._lastReference) {\n const refPt = (ToolSettings.walkDetectFloor ? eyePt.plusScaled(Vector3d.unitZ(), -ToolSettings.walkEyeHeight) : hitPointWorld);\n this._lastReference = Plane3dByOriginAndUnitNormal.create(refPt, Vector3d.unitZ());\n detectStepUp = ToolSettings.walkDetectFloor;\n } else if (undefined !== this._lastContour && this._lastContour.numPoints() > 1) {\n let fractLo, fractHi;\n const forwardDir = Vector3d.unitZ().crossProduct(vp.view.getXVector());\n const yPlaneHi = Plane3dByOriginAndUnitNormal.create(hitPointWorld, forwardDir);\n\n if (undefined !== yPlaneHi) {\n yPlaneHi.getNormalRef().scaleInPlace(-1);\n yPlaneHi.getOriginRef().addScaledInPlace(yPlaneHi.getNormalRef(), Constant.oneCentimeter * 5);\n\n const resultHi: CurveLocationDetail[] = [];\n this._lastContour.appendPlaneIntersectionPoints(yPlaneHi, resultHi);\n\n for (const intersectionHi of resultHi) {\n if ((undefined === fractHi || intersectionHi.fraction < fractHi) && intersectionHi.point.distance(hitPointWorld) < ToolSettings.walkEyeHeight)\n fractHi = intersectionHi.fraction;\n }\n\n if (undefined !== fractHi) {\n const yPlaneLo = yPlaneHi.clone();\n yPlaneLo.getOriginRef().addScaledInPlace(yPlaneLo.getNormalRef(), ToolSettings.walkEyeHeight * 2);\n\n const resultLo: CurveLocationDetail[] = [];\n this._lastContour.appendPlaneIntersectionPoints(yPlaneLo, resultLo);\n\n for (const intersectionLo of resultLo) {\n if (undefined === fractLo || intersectionLo.fraction < fractLo)\n fractLo = intersectionLo.fraction;\n }\n\n if (undefined === fractLo && yPlaneHi.altitude(this._lastContour.startPoint()) > 0)\n fractLo = 0; // Include from start if last path was shorter than requested section...\n }\n }\n\n if (undefined !== fractLo && undefined !== fractHi && fractHi > fractLo) {\n // Keep section of last contour to account for loosing sight of what is underfoot while moving forward...\n const partialCurve = this._lastContour.clonePartialCurve(fractLo, fractHi);\n if (undefined !== partialCurve && partialCurve instanceof LineString3d)\n contourLine.addPoints(partialCurve.packedPoints);\n } else {\n // Moved too far from last contour...\n detectStepUp = true;\n }\n }\n } else if (contourLine.numPoints() > 1) {\n const startPt = contourLine.packedPoints.getPoint3dAtUncheckedPointIndex(contourLine.numPoints() - 2);\n const testPt = contourLine.packedPoints.getPoint3dAtUncheckedPointIndex(contourLine.numPoints() - 1);\n\n const fraction = testPt.fractionOfProjectionToLine(startPt, hitPointWorld, 0.0);\n const closePoint = startPt.interpolate(fraction, hitPointWorld);\n\n if (closePoint.isAlmostEqual(testPt, 1.0e-5)) {\n // Colinear point, extent segment...\n contourLine.packedPoints.setAtCheckedPointIndex(contourLine.numPoints() - 1, hitPointWorld);\n continue;\n }\n }\n\n contourLine.addPoint(hitPointWorld);\n }\n }, true);\n\n // Use single point to denote \"no geometry found\" until movement is detected...\n if (0 === contourLine.numPoints()) {\n contourLine.addPoint(this._lastReadPt);\n } else if (detectStepUp && undefined !== this._lastReference) {\n const start = contourLine.startPoint();\n const forwardDir = Vector3d.unitZ().crossProduct(vp.view.getXVector());\n const stepPlane = Plane3dByOriginAndUnitNormal.create(start.plusScaled(forwardDir, ToolSettings.walkStepHeight), forwardDir);\n\n const resultStep: CurveLocationDetail[] = [];\n if (undefined !== stepPlane)\n contourLine.appendPlaneIntersectionPoints(stepPlane, resultStep);\n\n let stepPt;\n for (const step of resultStep) {\n if (undefined === stepPt || step.point.z > stepPt.z)\n stepPt = step.point;\n }\n\n if (undefined !== stepPt) {\n const xyDist = start.distanceXY(stepPt);\n const zDist = stepPt.z - start.z;\n const slope = (0.0 === xyDist ? Math.PI : Math.atan(zDist / xyDist));\n\n if (slope > Angle.createDegrees(10.0).radians && slope < Angle.createDegrees(50.0).radians) {\n const slopeRay = Ray3d.create(start, Vector3d.createStartEnd(stepPt, start));\n const slopePt = Point3d.create();\n\n if (undefined !== slopeRay.intersectionWithPlane(this._lastReference, slopePt)) {\n contourLine.reverseInPlace();\n contourLine.addPoint(slopePt);\n contourLine.reverseInPlace();\n }\n }\n }\n }\n\n this._currentContour = contourLine;\n if (ToolSettings.walkDetectFloor)\n this._lastContour = this._currentContour;\n }\n\n private checkForCollision(vp: Viewport, motion: NavigateMotion, positionInput: Vector3d): number {\n if (!ToolSettings.walkCollisions)\n return 0;\n\n const view = vp.view;\n if (!view.is3d() || !view.isCameraOn)\n return 0;\n\n if (undefined !== this._currentContour) {\n const pixelSize = vp.pixelsFromInches(0.75);\n const viewPt = vp.npcToView(NpcCenter);\n const readPt = vp.worldToView(this._lastReadPt);\n if (viewPt.distanceXY(readPt) > pixelSize)\n this._currentContour = undefined;\n if (0.0 !== positionInput.y)\n this._lastReference = undefined; // Choose a new reference plane after elevation change...\n }\n\n const eyePt = view.getEyePoint();\n\n if (undefined === this._currentContour && positionInput.z > 0.0) {\n vp.viewToNpc(vp.npcToView(NpcCenter), this._lastReadPt);\n this._lastReadPt.z = ViewManip.getFocusPlaneNpc(vp);\n vp.npcToWorld(this._lastReadPt, this._lastReadPt);\n\n this.computeCollisionData(vp, eyePt);\n }\n\n if (undefined === this._currentContour || this._currentContour.numPoints() < 2 || positionInput.z <= 0.0)\n return 0;\n\n const newEyePt = motion.transform.multiplyPoint3d(eyePt);\n const planeY = Plane3dByOriginAndUnitNormal.create(eyePt, vp.view.getYVector());\n const resultY: CurveLocationDetail[] = [];\n const nIntersectY = planeY ? this._currentContour.appendPlaneIntersectionPoints(planeY, resultY) : 0;\n const padDist = Constant.oneMeter * 0.5; // stop well before point directly underfoot to avoid clipping through walls...\n\n if (0 !== nIntersectY) {\n let resultVec;\n for (const intersection of resultY) {\n const resultNpc = vp.worldToNpc(intersection.point);\n if (resultNpc.z >= 1 || resultNpc.z <= 0)\n continue;\n\n const hitVec = Vector3d.createStartEnd(newEyePt, intersection.point);\n if (undefined === resultVec)\n resultVec = hitVec;\n else if (hitVec.magnitude() < resultVec.magnitude())\n resultVec.setFrom(hitVec);\n }\n\n if (undefined !== resultVec) {\n const eyeVec = Vector3d.createStartEnd(eyePt, newEyePt);\n if (eyeVec.dotProduct(resultVec) <= 0.0 || resultVec.magnitude() < padDist)\n return 1; // Stay put, high barrier...\n }\n }\n\n if (!ToolSettings.walkDetectFloor || undefined === this._lastReference)\n return 0;\n\n const forwardDir = Vector3d.unitZ().crossProduct(vp.view.getXVector());\n const planeZ = Plane3dByOriginAndUnitNormal.create(newEyePt, forwardDir);\n const resultZ: CurveLocationDetail[] = [];\n const nIntersectZ = planeZ ? this._currentContour.appendPlaneIntersectionPoints(planeZ, resultZ) : 0;\n\n if (0 !== nIntersectZ) {\n const heightPt = Point3d.create();\n const maintainHeight = Vector3d.create();\n\n for (const intersection of resultZ) {\n if (intersection.point.z > newEyePt.z)\n continue; // Ignore overhead point...\n\n const refPt = this._lastReference.projectPointToPlane(intersection.point);\n const offset = Vector3d.createStartEnd(refPt, intersection.point);\n\n if (offset.magnitude() > maintainHeight.magnitude()) {\n heightPt.setFrom(intersection.point);\n maintainHeight.setFrom(offset);\n }\n }\n\n if (maintainHeight.magnitude() >= ToolSettings.walkStepHeight && maintainHeight.dotProduct(this._lastReference.getNormalRef()) > 0)\n return 2; // Stay put, low barrier...\n\n const moveTransform = Transform.createTranslation(maintainHeight);\n motion.transform.multiplyTransformTransform(moveTransform, motion.transform);\n this._lastReference.getOriginRef().setFrom(heightPt);\n }\n return 0;\n }\n\n protected getNavigateMotion(elapsedTime: number): NavigateMotion | undefined {\n const vp = this.viewTool.viewport;\n if (undefined === vp)\n return;\n\n const motion = this._navigateMotion;\n motion.init(elapsedTime);\n\n if (!vp.isCameraOn) {\n const input = this.getHorizAndVertVelocity();\n if (undefined === input)\n return;\n motion.pan(input.x, input.y);\n return motion;\n }\n\n const positionInput = this.getLinearVelocity();\n const angularInput = this.getAngularVelocity();\n\n if (0.0 === angularInput.magnitude() && 0.0 === positionInput.magnitude() && undefined === this._lastMovement)\n return;\n\n this.requestPointerLock(false); // Ignore engagement events after modification starts (either from mouse or keys)...\n const current = IModelApp.toolAdmin.currentInputState;\n if (!this._havePointerLock && InputSource.Mouse === current.inputSource && !current.isDragging(BeButton.Data))\n current.onStartDrag(BeButton.Data); // Treat data down -> navigate key -> data up the same as a drag...\n\n if (undefined !== this._lastMovement) {\n if (motion.moveAndMouseLook(this._accumulator, positionInput, this._lastMovement, true))\n this._lastMovement = undefined;\n } else {\n motion.moveAndLook(positionInput, angularInput.x, angularInput.y, true);\n }\n\n const prevCollision = this._lastCollision;\n this._lastCollision = this.checkForCollision(vp, motion, positionInput);\n if (this._lastCollision !== prevCollision)\n vp.invalidateDecorations();\n\n return this._lastCollision ? undefined : motion;\n }\n\n protected enableDynamicUpdate(vp: ScreenViewport): void {\n const tool = this.viewTool;\n if (tool.inDynamicUpdate)\n return;\n\n tool.changeViewport(vp);\n if (undefined !== tool.viewport)\n tool.viewport.setAnimator(this);\n tool.inDynamicUpdate = true;\n tool.inHandleModify = true;\n\n vp.npcToView(NpcCenter, this._anchorPtView);\n this._lastPtView.setFrom(this._anchorPtView); // Display indicator in the middle of the view...\n }\n\n private toggleCollisions(): void {\n ToolSettings.walkCollisions = !ToolSettings.walkCollisions;\n this._lastCollision = 0;\n this._lastReference = this._lastContour = this._currentContour = undefined;\n if (this.viewTool.viewport)\n this.viewTool.viewport.invalidateDecorations();\n }\n\n private toggleDetectFloor(): void {\n ToolSettings.walkDetectFloor = !ToolSettings.walkDetectFloor;\n if (ToolSettings.walkDetectFloor && !ToolSettings.walkCollisions)\n return this.toggleCollisions();\n this._lastReference = this._lastContour = this._currentContour = undefined;\n if (this.viewTool.viewport)\n this.viewTool.viewport.invalidateDecorations();\n }\n\n private changeWalkVelocity(increase?: boolean): void {\n if (undefined === increase)\n ToolSettings.walkVelocityChange = 0;\n else\n ToolSettings.walkVelocityChange = Geometry.clamp(ToolSettings.walkVelocityChange + (increase ? 1 : -1), -9, 9);\n if (this.viewTool.viewport)\n this.viewTool.viewport.invalidateDecorations();\n }\n\n public override onWheel(ev: BeWheelEvent): boolean {\n const tool = this.viewTool;\n if (!tool.inHandleModify || undefined === tool.viewport)\n return super.onWheel(ev);\n const focusHandle = tool.viewHandles.focusHandle;\n if (undefined === focusHandle || ViewHandleType.LookAndMove !== focusHandle.handleType)\n return super.onWheel(ev);\n this.changeWalkVelocity(ev.wheelDelta > 0);\n tool.viewport.setAnimator(this); // animator was cleared by wheel event...\n return true;\n }\n\n private isNavigationKey(keyEvent: KeyboardEvent): boolean {\n if (keyEvent.repeat || keyEvent.ctrlKey || keyEvent.altKey)\n return false;\n\n switch (keyEvent.key.toLowerCase()) {\n case \"arrowright\":\n case \"d\":\n case \"arrowleft\":\n case \"a\":\n case \"arrowup\":\n case \"w\":\n case \"arrowdown\":\n case \"s\":\n case \"pagedown\":\n case \"q\":\n case \"pageup\":\n case \"e\":\n return true;\n default:\n return false;\n }\n }\n\n private enableKeyStart(): boolean {\n const vp = this.viewTool.viewport;\n if (0 !== this.viewTool.nPts || undefined === vp)\n return false;\n\n const pt = vp.view.getTargetPoint();\n const ev = new BeButtonEvent({ point: pt, rawPoint: pt, viewPoint: vp.worldToView(pt), viewport: vp, inputSource: InputSource.Mouse, isDown: true });\n this.viewTool.changeViewport(ev.viewport);\n if (!this.viewTool.processFirstPoint(ev))\n return false;\n\n this.viewTool.nPts = 1;\n return true;\n }\n\n public override onKeyTransition(wentDown: boolean, keyEvent: KeyboardEvent): boolean {\n if (!this.viewTool.inDynamicUpdate) {\n this._positionInput.setZero(); // clear input from a previous dynamic update...\n if (!wentDown || !this.isNavigationKey(keyEvent) || !this.enableKeyStart())\n return false;\n }\n\n if (keyEvent.ctrlKey || keyEvent.altKey)\n return false;\n\n switch (keyEvent.key.toLowerCase()) {\n case \"arrowright\":\n case \"d\":\n this._positionInput.x = Geometry.clamp(this._positionInput.x + (wentDown ? 1.0 : -1.0), -1.0, 1.0);\n return true;\n case \"arrowleft\":\n case \"a\":\n this._positionInput.x = Geometry.clamp(this._positionInput.x + (wentDown ? -1.0 : 1.0), -1.0, 1.0);\n return true;\n case \"arrowup\":\n case \"w\":\n this._positionInput.z = Geometry.clamp(this._positionInput.z + (wentDown ? 1.0 : -1.0), -1.0, 1.0);\n return true;\n case \"arrowdown\":\n case \"s\":\n this._positionInput.z = Geometry.clamp(this._positionInput.z + (wentDown ? -1.0 : 1.0), -1.0, 1.0);\n return true;\n case \"pagedown\":\n case \"q\":\n this._positionInput.y = Geometry.clamp(this._positionInput.y + (wentDown ? 1.0 : -1.0), -1.0, 1.0);\n return true;\n case \"pageup\":\n case \"e\":\n this._positionInput.y = Geometry.clamp(this._positionInput.y + (wentDown ? -1.0 : 1.0), -1.0, 1.0);\n return true;\n case \"c\":\n if (wentDown)\n this.toggleCollisions();\n return true;\n case \"z\":\n if (wentDown)\n this.toggleDetectFloor();\n return true;\n case \"+\":\n if (wentDown)\n this.changeWalkVelocity(true);\n return true;\n case \"-\":\n if (wentDown)\n this.changeWalkVelocity(false);\n return true;\n case \"=\":\n if (wentDown)\n this.changeWalkVelocity();\n return true;\n default:\n return false;\n }\n }\n\n protected getTouchControlRadius(vp: Viewport): number {\n const viewRect = vp.viewRect;\n const radius = Math.floor(Math.min(viewRect.width, viewRect.height) / 15.0) + 0.5;\n const minRadius = vp.pixelsFromInches(0.1);\n const maxRadius = vp.pixelsFromInches(1.0);\n return Geometry.clamp(radius, minRadius, maxRadius);\n }\n\n protected getTouchZoneLowerLeft(vp: Viewport): ViewRect {\n const viewRect = vp.viewRect;\n const rectLL = viewRect.clone();\n rectLL.top += viewRect.height * 0.6;\n rectLL.right -= viewRect.width * 0.6;\n rectLL.insetByPercent(0.05);\n return rectLL;\n }\n\n protected getTouchZoneLowerRight(vp: Viewport): ViewRect {\n const viewRect = vp.viewRect;\n const rectLR = viewRect.clone();\n rectLR.top += viewRect.height * 0.6;\n rectLR.left += viewRect.width * 0.6;\n rectLR.insetByPercent(0.05);\n return rectLR;\n }\n\n protected getTouchStartPosition(touchStart: BeTouchEvent | undefined): Point2d | undefined {\n if (undefined === touchStart || undefined === touchStart.viewport)\n return undefined;\n return BeTouchEvent.getTouchPosition(touchStart.touchEvent.changedTouches[0], touchStart.viewport);\n }\n\n protected getTouchOffset(touchStart: BeTouchEvent | undefined, radius: number): Vector2d {\n const offset = Vector2d.create();\n if (undefined === this._touchLast)\n return offset;\n\n const position = this.getTouchStartPosition(touchStart);\n if (undefined === position)\n return offset;\n\n if (undefined === touchStart?.viewport)\n return offset;\n\n const lastTouch = BeTouchEvent.findTouchById(this._touchLast.touchEvent.targetTouches, touchStart.touchEvent.changedTouches[0].identifier);\n if (undefined === lastTouch)\n return offset;\n\n const minOffsetRadius = Math.floor(radius * 0.1) + 0.5;\n const maxOffsetRadius = Math.floor(radius * 1.2) + 0.5;\n const lastPos = BeTouchEvent.getTouchPosition(lastTouch, touchStart.viewport);\n const lastVec = Vector2d.createStartEnd(position, lastPos);\n\n if (lastVec.magnitude() > maxOffsetRadius)\n lastVec.scaleToLength(maxOffsetRadius, lastVec);\n if (lastVec.magnitude() > minOffsetRadius)\n offset.plus(lastVec, offset);\n\n return offset;\n }\n\n public override onTouchStart(ev: BeTouchEvent): boolean {\n if (undefined === ev.viewport || !ev.viewport.isCameraOn || 1 !== ev.touchEvent.changedTouches.length)\n return (undefined === this._touchStartL && undefined !== this._touchStartR ? false : true);\n\n const startPos = this.getTouchStartPosition(ev);\n if (undefined === startPos)\n return false;\n\n const rectLL = this.getTouchZoneLowerLeft(ev.viewport);\n const rectLR = this.getTouchZoneLowerRight(ev.viewport);\n\n if (undefined === this._touchStartL && rectLL.containsPoint(startPos)) {\n this._touchStartL = this._touchLast = ev;\n ev.viewport.invalidateDecorations();\n return true;\n }\n\n if (undefined === this._touchStartR && rectLR.containsPoint(startPos)) {\n this._touchStartR = this._touchLast = ev;\n ev.viewport.invalidateDecorations();\n return true;\n }\n\n return false;\n }\n\n public override onTouchEnd(ev: BeTouchEvent): boolean {\n let changed = false;\n\n if (undefined !== this._touchStartL && undefined !== BeTouchEvent.findTouchById(ev.touchEvent.changedTouches, this._touchStartL.touchEvent.changedTouches[0].identifier)) {\n this._touchStartL = undefined;\n changed = true;\n }\n\n if (undefined !== this._touchStartR && undefined !== BeTouchEvent.findTouchById(ev.touchEvent.changedTouches, this._touchStartR.touchEvent.changedTouches[0].identifier)) {\n this._touchStartR = undefined;\n changed = true;\n }\n\n if (changed && undefined !== ev.viewport)\n ev.viewport.invalidateDecorations();\n\n return changed;\n }\n\n public override async onTouchComplete(_ev: BeTouchEvent): Promise<boolean> {\n if (!this.viewTool.inDynamicUpdate || undefined === this._touchLast)\n return false;\n await this.viewTool.onReinitialize();\n return true;\n }\n\n public override async onTouchCancel(ev: BeTouchEvent): Promise<boolean> {\n return this.onTouchComplete(ev);\n }\n\n public override onTouchMove(ev: BeTouchEvent): boolean {\n if (undefined === ev.viewport || !this.viewTool.inDynamicUpdate || (undefined === this._touchStartL && undefined === this._touchStartR))\n return false;\n\n let changed = false;\n\n if (undefined !== this._touchStartL && undefined !== BeTouchEvent.findTouchById(ev.touchEvent.changedTouches, this._touchStartL.touchEvent.changedTouches[0].identifier))\n changed = true;\n\n if (undefined !== this._touchStartR && undefined !== BeTouchEvent.findTouchById(ev.touchEvent.changedTouches, this._touchStartR.touchEvent.changedTouches[0].identifier))\n changed = true;\n\n if (changed) {\n this._touchLast = ev;\n ev.viewport.invalidateDecorations();\n }\n\n return true;\n }\n\n public override onTouchMoveStart(ev: BeTouchEvent, _startEv: BeTouchEvent): boolean {\n if (undefined === ev.viewport)\n return false;\n\n if (undefined === this._touchStartL && undefined === this._touchStartR)\n return false;\n\n this.enableDynamicUpdate(ev.viewport);\n return true;\n }\n\n public override onTouchTap(ev: BeTouchEvent): boolean {\n if (undefined === ev.viewport || this.viewTool.inDynamicUpdate || !ev.isSingleTap)\n return false;\n\n const rectLL = this.getTouchZoneLowerLeft(ev.viewport);\n if (rectLL.containsPoint(ev.viewPoint))\n this._touchElevate = !this._touchElevate; // Toggle elevate mode for left control until next touch complete...\n\n const rectLR = this.getTouchZoneLowerRight(ev.viewport);\n if (rectLR.containsPoint(ev.viewPoint))\n this._touchSpeedUp = !this._touchSpeedUp; // Toggle speed increase for left control until next touch complete...\n\n return false;\n }\n\n public override drawHandle(context: DecorateContext, hasFocus: boolean): void {\n super.drawHandle(context, hasFocus);\n if (!hasFocus || context.viewport !== this.viewTool.viewport)\n return;\n\n if (ToolSettings.walkCollisions && this.viewTool.inDynamicUpdate) {\n const position = this._anchorPtView.clone();\n position.x = Math.floor(position.x) + 0.5;\n position.y = Math.floor(position.y) + 0.5;\n\n const drawCollisionArrows = (ctx: CanvasRenderingContext2D) => {\n const arrowSize = 20;\n const addArrow = (angle: number) => {\n const end = arrowSize;\n const start = end / 2;\n const mid = start / 2;\n ctx.rotate(angle);\n ctx.beginPath();\n ctx.moveTo(start, 0);\n ctx.lineTo(end, 0);\n ctx.moveTo(start, 0);\n ctx.lineTo(start + mid, mid);\n ctx.moveTo(start, 0);\n ctx.lineTo(start + mid, -mid);\n ctx.stroke();\n ctx.rotate(-angle);\n };\n\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = 5;\n ctx.lineCap = \"round\";\n addArrow(0);\n addArrow(Math.PI);\n\n ctx.strokeStyle = (1 === this._lastCollision ? \"red\" : \"white\");\n ctx.lineWidth = 1;\n addArrow(0);\n addArrow(Math.PI);\n\n if (ToolSettings.walkDetectFloor) {\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = 5;\n addArrow(-Math.PI / 2);\n ctx.strokeStyle = (2 === this._lastCollision ? \"red\" : \"white\");\n ctx.lineWidth = 1;\n addArrow(-Math.PI / 2);\n }\n };\n context.addCanvasDecoration({ position, drawDecoration: drawCollisionArrows });\n }\n\n if ((0 !== ToolSettings.walkVelocityChange || this._touchSpeedUp) && this.viewTool.inDynamicUpdate) {\n const arrowSize = 12;\n const speedUp = (ToolSettings.walkVelocityChange > 0 || this._touchSpeedUp ? true : false);\n const position = this._anchorPtView.clone();\n position.x = Math.floor(position.x) + 0.5;\n position.y = Math.floor(position.y + (arrowSize / 3)) + 0.5;\n\n const drawSpeedChange = (ctx: CanvasRenderingContext2D) => {\n const addArrows = () => {\n const end = arrowSize;\n const start = end / 2;\n const midY = (end + start) / 2;\n const midX = (arrowSize / 4) * (speedUp ? 1 : -1);\n ctx.beginPath();\n ctx.moveTo(0, start);\n ctx.lineTo(midX, midY);\n ctx.lineTo(0, end);\n ctx.stroke();\n ctx.beginPath();\n ctx.moveTo(-midX, start);\n ctx.lineTo(0, midY);\n ctx.lineTo(-midX, end);\n ctx.stroke();\n };\n\n ctx.strokeStyle = \"black\";\n ctx.lineWidth = 3;\n ctx.lineCap = \"round\";\n addArrows();\n\n ctx.strokeStyle = \"white\";\n ctx.lineWidth = 1;\n addArrows();\n };\n context.addCanvasDecoration({ position, drawDecoration: drawSpeedChange });\n }\n\n const positionL = this.getTouchStartPosition(this._touchStartL);\n const positionR = this.getTouchStartPosition(this._touchStartR);\n\n if (undefined === positionL && undefined === positionR)\n return;\n\n const outerRadius = this.getTouchControlRadius(context.viewport);\n const innerRadius = Math.floor(outerRadius * 0.65) + 0.5;\n const offsetL = this.getTouchOffset(this._touchStartL, outerRadius);\n const offsetR = this.getTouchOffset(this._touchStartR, outerRadius);\n\n const drawDecoration = (ctx: CanvasRenderingContext2D, isLeft: boolean) => {\n ctx.beginPath();\n ctx.strokeStyle = \"black\";\n ctx.fillStyle = \"rgba(150,150,150,0.4)\";\n ctx.lineWidth = 2;\n ctx.arc(0, 0, outerRadius, 0, 2 * Math.PI);\n ctx.stroke();\n ctx.fill();\n\n ctx.shadowColor = \"black\";\n ctx.shadowBlur = 10;\n ctx.shadowOffsetX = 5;\n ctx.shadowOffsetY = 5;\n\n ctx.beginPath();\n ctx.strokeStyle = \"rgba(0,0,0,0.4)\";\n ctx.lineWidth = innerRadius;\n ctx.lineCap = \"round\";\n ctx.moveTo(0, 0);\n ctx.lineTo(isLeft ? offsetL.x : offsetR.x, isLeft ? offsetL.y : offsetR.y);\n ctx.stroke();\n\n ctx.beginPath();\n ctx.strokeStyle = \"black\";\n ctx.fillStyle = \"rgba(200,200,200,0.8\";\n ctx.lineWidth = 1;\n ctx.arc(isLeft ? offsetL.x : offsetR.x, isLeft ? offsetL.y : offsetR.y, innerRadius, 0, 2 * Math.PI);\n ctx.stroke();\n ctx.fill();\n };\n\n const drawDecorationL = (ctx: CanvasRenderingContext2D) => drawDecoration(ctx, true);\n const drawDecorationR = (ctx: CanvasRenderingContext2D) => drawDecoration(ctx, false);\n\n if (undefined !== positionL)\n context.addCanvasDecoration({ position: positionL, drawDecoration: drawDecorationL });\n\n if (undefined !== positionR)\n context.addCanvasDecoration({ position: positionR, drawDecoration: drawDecorationR });\n }\n}\n\n/** ViewingToolHandle for performing the \"walk view\" operation */\nclass ViewWalk extends ViewNavigate {\n private _navigateMotion: NavigateMotion;\n\n constructor(viewManip: ViewManip) {\n super(viewManip);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._navigateMotion = new NavigateMotion(this.viewTool.viewport!);\n }\n public get handleType(): ViewHandleType { return ViewHandleType.Walk; }\n public override firstPoint(ev: BeButtonEvent): boolean {\n this.viewTool.provideToolAssistance(\"Walk.Prompts.NextPoint\");\n return super.firstPoint(ev);\n }\n\n protected getNavigateMotion(elapsedTime: number): NavigateMotion | undefined {\n const input = this.getInputVector();\n if (undefined === input)\n return undefined;\n\n const motion = this._navigateMotion;\n motion.init(elapsedTime);\n\n switch (this.getNavigateMode()) {\n case NavigateMode.Pan:\n input.scale(this.getMaxLinearVelocity(), input);\n motion.pan(input.x, input.y);\n break;\n case NavigateMode.Look:\n input.scale(-this.getMaxAngularVelocity(), input);\n motion.look(input.x, input.y);\n break;\n case NavigateMode.Travel:\n motion.travel(-input.x * this.getMaxAngularVelocity(), 0, -input.y * this.getMaxLinearVelocity(), true);\n break;\n }\n\n return motion;\n }\n}\n\n/** ViewingToolHandle for performing the \"fly view\" operation */\nclass ViewFly extends ViewNavigate {\n private _navigateMotion: NavigateMotion;\n\n constructor(viewManip: ViewManip) {\n super(viewManip);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._navigateMotion = new NavigateMotion(this.viewTool.viewport!);\n }\n public get handleType(): ViewHandleType { return ViewHandleType.Fly; }\n public override firstPoint(ev: BeButtonEvent): boolean {\n this.viewTool.provideToolAssistance(\"Fly.Prompts.NextPoint\");\n return super.firstPoint(ev);\n }\n\n protected getNavigateMotion(elapsedTime: number): NavigateMotion | undefined {\n const input = this.getInputVector();\n if (undefined === input)\n return undefined;\n\n const motion = this._navigateMotion;\n motion.init(elapsedTime);\n\n switch (this.getNavigateMode()) {\n case NavigateMode.Pan:\n input.scale(this.getMaxLinearVelocity(), input);\n motion.pan(input.x, input.y);\n break;\n case NavigateMode.Look:\n input.scale(-this.getMaxAngularVelocity(), input);\n motion.look(input.x, input.y);\n break;\n case NavigateMode.Travel:\n input.scale(-this.getMaxAngularVelocity() * 2.0, input);\n motion.travel(input.x, input.y, this.getMaxLinearVelocity(), false);\n break;\n }\n\n return motion;\n }\n}\n\n/** The tool that performs a Pan view operation\n * @public\n */\nexport class PanViewTool extends ViewManip {\n public static override toolId = \"View.Pan\";\n public static override iconSpec = \"icon-hand-2\";\n constructor(vp: ScreenViewport | undefined, oneShot = false, isDraggingRequired = false) {\n super(vp, ViewHandleType.Pan, oneShot, isDraggingRequired);\n }\n protected override get isExitAllowedOnReinitialize(): boolean { return true; }\n protected override provideInitialToolAssistance(): void { this.provideToolAssistance(\"Pan.Prompts.FirstPoint\"); }\n}\n\n/** A tool that performs a Rotate view operation\n * @public\n */\nexport class RotateViewTool extends ViewManip {\n public static override toolId = \"View.Rotate\";\n public static override iconSpec = \"icon-gyroscope\";\n constructor(vp: ScreenViewport, oneShot = false, isDraggingRequired = false) {\n super(vp, ViewHandleType.Rotate | ViewHandleType.Pan | ViewHandleType.TargetCenter, oneShot, isDraggingRequired);\n }\n protected override get isExitAllowedOnReinitialize(): boolean { return true; }\n protected override provideInitialToolAssistance(): void { this.provideToolAssistance(\"Rotate.Prompts.FirstPoint\"); }\n}\n\n/** A tool that performs the look operation\n * @public\n */\nexport class LookViewTool extends ViewManip {\n public static override toolId = \"View.Look\";\n public static override iconSpec = \"icon-view-navigation\";\n constructor(vp: ScreenViewport, oneShot = false, isDraggingRequired = false) {\n super(vp, ViewHandleType.Look | ViewHandleType.Pan, oneShot, isDraggingRequired);\n }\n protected override get isExitAllowedOnReinitialize(): boolean { return true; }\n protected override provideInitialToolAssistance(): void { this.provideToolAssistance(\"Look.Prompts.FirstPoint\"); }\n}\n\n/** A tool that performs the scroll operation\n * @public\n */\nexport class ScrollViewTool extends ViewManip {\n public static override toolId = \"View.Scroll\";\n public static override iconSpec = \"icon-move\";\n constructor(vp: ScreenViewport, oneShot = false, isDraggingRequired = false) {\n super(vp, ViewHandleType.Scroll, oneShot, isDraggingRequired);\n }\n protected override get isExitAllowedOnReinitialize(): boolean { return true; }\n protected override provideInitialToolAssistance(): void { this.provideToolAssistance(\"Scroll.Prompts.FirstPoint\"); }\n}\n\n/** A tool that performs the zoom operation\n * @public\n */\nexport class ZoomViewTool extends ViewManip {\n public static override toolId = \"View.Zoom\";\n public static override iconSpec = \"icon-zoom\";\n constructor(vp: ScreenViewport, oneShot = false, isDraggingRequired = false) {\n super(vp, ViewHandleType.Zoom | ViewHandleType.Pan, oneShot, isDraggingRequired);\n }\n protected override get isExitAllowedOnReinitialize(): boolean { return true; }\n protected override provideInitialToolAssistance(): void { this.provideToolAssistance(\"Zoom.Prompts.FirstPoint\"); }\n}\n\n/** A tool that performs the walk operation using mouse+keyboard or touch controls.\n * Keyboard and mouse controls are similar to those used by many video games:\n * - Mouse motion: look around.\n * - W, A, S, D (or arrow keys): move forward, left, right, or backward respectively.\n * - E, Q (or PgUp, PgDn): move up and down respectively.\n * - +, - (or scroll wheel): increase or decrease velocity.\n * @public\n */\nexport class LookAndMoveTool extends ViewManip {\n public static override toolId = \"View.LookAndMove\";\n public static override iconSpec = \"icon-walk\";\n constructor(vp: ScreenViewport, oneShot = false, isDraggingRequired = false) {\n const viewport = (undefined === vp ? IModelApp.viewManager.selectedView : vp); // Need vp to enable camera/check lens in onReinitialize...\n super(viewport, ViewHandleType.LookAndMove | ViewHandleType.Pan, oneShot, isDraggingRequired);\n }\n\n protected override get isExitAllowedOnReinitialize(): boolean { return true; }\n protected override provideInitialToolAssistance(): void { this.provideToolAssistance(\"LookAndMove.Prompts.FirstPoint\"); }\n\n public override provideToolAssistance(mainInstrKey: string): void {\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, ViewTool.translate(mainInstrKey));\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n const touchInstructions: ToolAssistanceInstruction[] = [];\n\n const acceptMsg = this.inDynamicUpdate ? CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\") : ViewTool.translate(\"LookAndMove.Inputs.AcceptLookPoint\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Exit\");\n\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n\n mouseInstructions.push(ToolAssistance.createKeyboardInstruction(ToolAssistance.createKeyboardInfo([\"W\"], [\"A\", \"S\", \"D\"]), ViewTool.translate(\"LookAndMove.Inputs.WalkKeys\"), false));\n mouseInstructions.push(ToolAssistance.createKeyboardInstruction(ToolAssistance.arrowKeyboardInfo, ViewTool.translate(\"LookAndMove.Inputs.WalkKeys\"), false));\n mouseInstructions.push(ToolAssistance.createKeyboardInstruction(ToolAssistance.createKeyboardInfo([\"Q\", \"E\"]), ViewTool.translate(\"LookAndMove.Inputs.ElevateKeys\"), false));\n mouseInstructions.push(ToolAssistance.createKeyboardInstruction(ToolAssistance.createKeyboardInfo([\"\\u21de\", \"\\u21df\"]), ViewTool.translate(\"LookAndMove.Inputs.ElevateKeys\"), false));\n mouseInstructions.push(ToolAssistance.createKeyboardInstruction(ToolAssistance.createKeyboardInfo([\"C\", \"Z\"]), ViewTool.translate(\"LookAndMove.Inputs.CollideKeys\"), false));\n mouseInstructions.push(ToolAssistance.createKeyboardInstruction(ToolAssistance.createKeyboardInfo([\"+\", \"-\"]), ViewTool.translate(\"LookAndMove.Inputs.VelocityChange\"), false));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.MouseWheel, ViewTool.translate(\"LookAndMove.Inputs.VelocityChange\"), false, ToolAssistanceInputMethod.Mouse));\n\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TouchCursorDrag, ViewTool.translate(\"LookAndMove.Inputs.TouchZoneLL\"), false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TouchCursorDrag, ViewTool.translate(\"LookAndMove.Inputs.TouchZoneLR\"), false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, ViewTool.translate(\"LookAndMove.Inputs.TouchTapLL\"), false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, ViewTool.translate(\"LookAndMove.Inputs.TouchTapLR\"), false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchDrag, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n\n const sections: ToolAssistanceSection[] = [];\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n}\n\n/** A tool that performs the walk operation\n * @public\n */\nexport class WalkViewTool extends ViewManip {\n public static override toolId = \"View.Walk\";\n public static override iconSpec = \"icon-walk\";\n constructor(vp: ScreenViewport, oneShot = false, isDraggingRequired = false) {\n const viewport = (undefined === vp ? IModelApp.viewManager.selectedView : vp); // Need vp to enable camera/check lens in onReinitialize...\n super(viewport, ViewHandleType.Walk | ViewHandleType.Pan, oneShot, isDraggingRequired);\n }\n\n protected override get isExitAllowedOnReinitialize(): boolean { return true; }\n protected override provideInitialToolAssistance(): void { this.provideToolAssistance(\"Walk.Prompts.FirstPoint\"); }\n\n public override provideToolAssistance(mainInstrKey: string): void {\n const walkInstructions: ToolAssistanceInstruction[] = [];\n walkInstructions.push(ToolAssistance.createModifierKeyInstruction(ToolAssistance.shiftKey, ToolAssistanceImage.LeftClickDrag, ViewTool.translate(\"Pan.flyover\"), false, ToolAssistanceInputMethod.Mouse));\n walkInstructions.push(ToolAssistance.createModifierKeyInstruction(ToolAssistance.ctrlKey, ToolAssistanceImage.LeftClickDrag, ViewTool.translate(\"Look.flyover\"), false, ToolAssistanceInputMethod.Mouse));\n super.provideToolAssistance(mainInstrKey, walkInstructions);\n }\n}\n\n/** A tool that performs the fly operation\n * @public\n */\nexport class FlyViewTool extends ViewManip {\n public static override toolId = \"View.Fly\";\n public static override iconSpec = \"icon-airplane\";\n constructor(vp: ScreenViewport, oneShot = false, isDraggingRequired = false) {\n super(vp, ViewHandleType.Fly | ViewHandleType.Pan, oneShot, isDraggingRequired);\n }\n\n protected override get isExitAllowedOnReinitialize(): boolean { return true; }\n protected override provideInitialToolAssistance(): void { this.provideToolAssistance(\"Fly.Prompts.FirstPoint\"); }\n\n public override provideToolAssistance(mainInstrKey: string): void {\n const flyInstructions: ToolAssistanceInstruction[] = [];\n flyInstructions.push(ToolAssistance.createModifierKeyInstruction(ToolAssistance.shiftKey, ToolAssistanceImage.LeftClickDrag, ViewTool.translate(\"Pan.flyover\"), false, ToolAssistanceInputMethod.Mouse));\n flyInstructions.push(ToolAssistance.createModifierKeyInstruction(ToolAssistance.ctrlKey, ToolAssistanceImage.LeftClickDrag, ViewTool.translate(\"Look.flyover\"), false, ToolAssistanceInputMethod.Mouse));\n super.provideToolAssistance(mainInstrKey, flyInstructions);\n }\n}\n\n/** A tool that performs a fit view\n * @public\n */\nexport class FitViewTool extends ViewTool {\n public static override toolId = \"View.Fit\";\n public static override iconSpec = \"icon-fit-to-view\";\n public oneShot: boolean;\n public doAnimate: boolean;\n public isolatedOnly: boolean;\n constructor(viewport: ScreenViewport, oneShot: boolean, doAnimate = true, isolatedOnly = true) {\n super(viewport);\n this.viewport = viewport;\n this.oneShot = oneShot;\n this.doAnimate = doAnimate;\n this.isolatedOnly = isolatedOnly;\n }\n\n public provideToolAssistance(): void {\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, ViewTool.translate(\"Fit.Prompts.FirstPoint\"));\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n const touchInstructions: ToolAssistanceInstruction[] = [];\n\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.Accept\");\n const rejectMsg = CoreTools.translate(\"ElementSet.Inputs.Exit\");\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n\n const sections: ToolAssistanceSection[] = [];\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (ev.viewport)\n return await this.doFit(ev.viewport, this.oneShot, this.doAnimate, this.isolatedOnly) ? EventHandled.Yes : EventHandled.No;\n\n return EventHandled.No;\n }\n\n public override async onPostInstall() {\n await super.onPostInstall();\n if (undefined === this.viewport || !this.oneShot)\n this.provideToolAssistance();\n\n if (this.viewport)\n await this.doFit(this.viewport, this.oneShot, this.doAnimate, this.isolatedOnly);\n }\n\n public async doFit(viewport: ScreenViewport, oneShot: boolean, doAnimate = true, isolatedOnly = true): Promise<boolean> {\n if (!isolatedOnly || !await ViewManip.zoomToAlwaysDrawnExclusive(viewport, { animateFrustumChange: doAnimate }))\n ViewManip.fitViewWithGlobeAnimation(viewport, doAnimate);\n if (oneShot)\n await this.exitTool();\n return oneShot;\n }\n}\n\n/** A tool that views a location on the background map from a satellite's perspective; the viewed location is derived from the position of the current camera's eye above the background map. Operates on the selected view.\n * @public\n */\nexport class ViewGlobeSatelliteTool extends ViewTool {\n public static override toolId = \"View.GlobeSatellite\";\n // public static iconSpec = \"icon-view-globe-satellite\"; // ###TODO: need icon for this\n public oneShot: boolean;\n public doAnimate: boolean;\n constructor(viewport: ScreenViewport, oneShot = true, doAnimate = true) {\n super(viewport);\n this.viewport = viewport;\n this.oneShot = oneShot;\n this.doAnimate = doAnimate;\n }\n\n /** @internal */\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (ev.viewport)\n return (await this._beginSatelliteView(ev.viewport, this.oneShot, this.doAnimate)) ? EventHandled.Yes : EventHandled.No;\n\n return EventHandled.No;\n }\n\n /** @internal */\n public override async onPostInstall() {\n await super.onPostInstall();\n const viewport = undefined === this.viewport ? IModelApp.viewManager.selectedView : this.viewport;\n if (viewport) {\n (async () => {\n await this._beginSatelliteView(viewport, this.oneShot, this.doAnimate);\n })().catch(() => { });\n }\n }\n\n private async _beginSatelliteView(viewport: ScreenViewport, oneShot: boolean, doAnimate = true): Promise<boolean> {\n const carto = await eyeToCartographicOnGlobeFromGcs(viewport);\n if (carto !== undefined) {\n try {\n let elevationOffset = 0;\n const elevation = await queryTerrainElevationOffset(viewport, carto);\n if (elevation !== undefined)\n elevationOffset = elevation;\n return await this._doSatelliteView(viewport, oneShot, doAnimate, elevationOffset);\n } catch {\n }\n }\n return true;\n }\n\n private async _doSatelliteView(viewport: ScreenViewport, oneShot: boolean, doAnimate = true, elevationOffset = 0): Promise<boolean> {\n viewGlobalLocation(viewport, doAnimate, ViewGlobalLocationConstants.satelliteHeightAboveEarthInMeters + elevationOffset);\n if (oneShot)\n await this.exitTool();\n return oneShot;\n }\n}\n\n/** A tool that views a location on the background map from a bird's eye perspective; the viewed location is derived from the position of the current camera's eye above the background map. Operates on the selected view.\n * @public\n */\nexport class ViewGlobeBirdTool extends ViewTool {\n public static override toolId = \"View.GlobeBird\";\n // public static iconSpec = \"icon-view-globe-bird\"; // ###TODO: need icon for this\n public oneShot: boolean;\n public doAnimate: boolean;\n constructor(viewport: ScreenViewport, oneShot = true, doAnimate = true) {\n super(viewport);\n this.viewport = viewport;\n this.oneShot = oneShot;\n this.doAnimate = doAnimate;\n }\n\n /** @internal */\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (ev.viewport)\n return (await this._beginDoBirdView(ev.viewport, this.oneShot, this.doAnimate)) ? EventHandled.Yes : EventHandled.No;\n\n return EventHandled.No;\n }\n\n /** @internal */\n public override async onPostInstall() {\n await super.onPostInstall();\n const viewport = undefined === this.viewport ? IModelApp.viewManager.selectedView : this.viewport;\n if (viewport)\n await this._beginDoBirdView(viewport, this.oneShot, this.doAnimate);\n }\n\n private async _beginDoBirdView(viewport: ScreenViewport, oneShot: boolean, doAnimate = true): Promise<boolean> {\n const carto = await eyeToCartographicOnGlobeFromGcs(viewport);\n if (carto !== undefined) {\n try {\n let elevationOffset = 0;\n const elevation = await queryTerrainElevationOffset(viewport, carto);\n if (elevation !== undefined)\n elevationOffset = elevation;\n return await this._doBirdView(viewport, oneShot, doAnimate, elevationOffset);\n } catch {\n }\n }\n return true;\n }\n\n private async _doBirdView(viewport: ScreenViewport, oneShot: boolean, doAnimate = true, elevationOffset = 0): Promise<boolean> {\n viewGlobalLocation(viewport, doAnimate, ViewGlobalLocationConstants.birdHeightAboveEarthInMeters + elevationOffset, ViewGlobalLocationConstants.birdPitchAngleRadians);\n if (oneShot)\n await this.exitTool();\n return oneShot;\n }\n}\n\n/** A tool that views a location on the background map corresponding to a specified string.\n * This will either look down at the location using a bird's eye height, or, if a range is available, the entire range corresponding to the location will be viewed.\n * Operates on the selected view.\n * @public\n */\nexport class ViewGlobeLocationTool extends ViewTool {\n private _globalLocation?: GlobalLocation;\n\n public static override toolId = \"View.GlobeLocation\";\n // public static iconSpec = \"icon-view-globe-location\"; // ###TODO: need icon for this\n public oneShot: boolean;\n public doAnimate: boolean;\n constructor(viewport: ScreenViewport, oneShot = true, doAnimate = true) {\n super(viewport);\n this.viewport = viewport;\n this.oneShot = oneShot;\n this.doAnimate = doAnimate;\n }\n\n public static override get minArgs() { return 1; }\n public static override get maxArgs() { return undefined; }\n\n /** This runs the tool based on the provided location arguments.\n * arguments: latitude longitude | string\n * If specified, the latitude and longitude arguments are numbers specified in degrees.\n * If specified, the string argument contains a location name. Examples of location name include named geographic areas like \"Seattle, WA\" or \"Alaska\", a specific address like \"1600 Pennsylvania Avenue NW, Washington, DC 20500\", or a place name like \"Philadelphia Museum of Art\".\n **/\n public override async parseAndRun(...args: string[]): Promise<boolean> {\n if (2 === args.length) { // try to parse latitude and longitude\n const latitude = parseFloat(args[0]);\n const longitude = parseFloat(args[1]);\n if (!Number.isNaN(latitude) || !Number.isNaN(longitude)) {\n const center = Cartographic.fromDegrees({ longitude, latitude });\n this._globalLocation = { center };\n }\n }\n\n if (this._globalLocation === undefined) {\n const locationString = args.join(\" \");\n const bingLocationProvider = new BingLocationProvider();\n try {\n this._globalLocation = await bingLocationProvider.getLocation(locationString);\n if (this._globalLocation !== undefined) {\n const viewport = undefined === this.viewport ? IModelApp.viewManager.selectedView : this.viewport;\n if (viewport !== undefined) {\n const elevationOffset = await queryTerrainElevationOffset(viewport, this._globalLocation.center);\n if (elevationOffset !== undefined)\n this._globalLocation.center.height = elevationOffset;\n }\n }\n } catch {\n }\n }\n\n if (this._globalLocation !== undefined)\n return this.run();\n return true;\n }\n\n /** @internal */\n public override async onPostInstall() {\n await super.onPostInstall();\n await this._doLocationView();\n }\n\n private async _doLocationView(): Promise<boolean> {\n const viewport = undefined === this.viewport ? IModelApp.viewManager.selectedView : this.viewport;\n if (viewport) {\n if (undefined !== this._globalLocation)\n await viewport.animateFlyoverToGlobalLocation(this._globalLocation);\n }\n if (this.oneShot)\n await this.exitTool();\n return this.oneShot;\n }\n}\n\n/** A tool that views the current iModel on the background map so that the extent of the project is visible. Operates on the selected view.\n * @public\n */\nexport class ViewGlobeIModelTool extends ViewTool {\n public static override toolId = \"View.GlobeIModel\";\n // public static iconSpec = \"icon-view-globe-imodel\"; // ###TODO: need icon for this\n public oneShot: boolean;\n public doAnimate: boolean;\n constructor(viewport: ScreenViewport, oneShot = true, doAnimate = true) {\n super(viewport);\n this.viewport = viewport;\n this.oneShot = oneShot;\n this.doAnimate = doAnimate;\n }\n\n /** @internal */\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (ev.viewport)\n return await this._doIModelView() ? EventHandled.Yes : EventHandled.No;\n\n return EventHandled.No;\n }\n\n /** @internal */\n public override async onPostInstall() {\n await super.onPostInstall();\n await this._doIModelView();\n }\n\n private async _doIModelView(): Promise<boolean> {\n const viewport = undefined === this.viewport ? IModelApp.viewManager.selectedView : this.viewport;\n if (viewport && (viewport.view instanceof ViewState3d)) {\n const extents = viewport.view.iModel.projectExtents;\n const center = viewport.view.iModel.projectExtents.center;\n const view3d = viewport.view;\n const cartographicCenter = view3d.rootToCartographic(center);\n if (cartographicCenter !== undefined) {\n const cartographicArea = rangeToCartographicArea(view3d, extents);\n (async () => {\n await viewport.animateFlyoverToGlobalLocation({ center: cartographicCenter, area: cartographicArea });\n })().catch(() => { });\n }\n }\n if (this.oneShot)\n await this.exitTool();\n return this.oneShot;\n }\n}\n\n/** A tool that rotates the view to one of the standard views.\n * @public\n */\nexport class StandardViewTool extends ViewTool {\n public static override toolId = \"View.Standard\";\n public static override iconSpec = \"icon-cube-faces-top\";\n constructor(viewport: ScreenViewport, private _standardViewId: StandardViewId) { super(viewport); }\n\n public override async onPostInstall() {\n await super.onPostInstall();\n if (this.viewport) {\n const vp = this.viewport;\n const id = vp.view.allow3dManipulations() ? this._standardViewId : StandardViewId.Top;\n const rMatrix = AccuDraw.getStandardRotation(id, vp, vp.isContextRotationRequired);\n const inverse = rMatrix.inverse();\n if (undefined !== inverse) {\n const targetMatrix = inverse.multiplyMatrixMatrix(vp.rotation);\n const rotateTransform = Transform.createFixedPointAndMatrix(ViewManip.getDefaultTargetPointWorld(vp), targetMatrix);\n const newFrustum = vp.getFrustum();\n newFrustum.multiply(rotateTransform);\n vp.view.setupFromFrustum(newFrustum);\n vp.synchWithView({ animateFrustumChange: true });\n }\n }\n return this.exitTool();\n }\n}\n\n/** A tool that performs a Window-area view operation\n * @public\n */\nexport class WindowAreaTool extends ViewTool {\n public static override toolId = \"View.WindowArea\";\n public static override iconSpec = \"icon-window-area\";\n private _haveFirstPoint: boolean = false;\n private _firstPtWorld: Point3d = Point3d.create();\n private _secondPtWorld: Point3d = Point3d.create();\n private _lastPtView?: Point3d;\n private _corners = [new Point3d(), new Point3d()];\n private _shapePts = [new Point3d(), new Point3d(), new Point3d(), new Point3d(), new Point3d()];\n private _fillColor = ColorDef.from(0, 0, 255, 200);\n\n public override async onPostInstall() {\n await super.onPostInstall();\n this.provideToolAssistance();\n }\n\n public override async onReinitialize() {\n this._haveFirstPoint = false;\n this._firstPtWorld.setZero();\n this._secondPtWorld.setZero();\n this.provideToolAssistance();\n }\n\n public override async onResetButtonUp(ev: BeButtonEvent): Promise<EventHandled> {\n if (this._haveFirstPoint) {\n await this.onReinitialize();\n return EventHandled.Yes;\n }\n\n return super.onResetButtonUp(ev);\n }\n\n public provideToolAssistance(): void {\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, ViewTool.translate(this._haveFirstPoint ? \"WindowArea.Prompts.NextPoint\" : \"WindowArea.Prompts.FirstPoint\"));\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n const touchInstructions: ToolAssistanceInstruction[] = [];\n\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\n const restartMsg = CoreTools.translate(\"ElementSet.Inputs.Restart\");\n const exitMsg = CoreTools.translate(\"ElementSet.Inputs.Exit\");\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchDrag, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, exitMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, this._haveFirstPoint ? restartMsg : exitMsg, false, ToolAssistanceInputMethod.Mouse));\n\n const sections: ToolAssistanceSection[] = [];\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport)\n return EventHandled.Yes;\n\n if (undefined === this.viewport) {\n this.viewport = ev.viewport;\n } else if (!ev.viewport.view.hasSameCoordinates(this.viewport.view)) {\n if (this._haveFirstPoint)\n return EventHandled.Yes;\n this.viewport = ev.viewport;\n this._lastPtView = ev.viewPoint;\n IModelApp.viewManager.invalidateDecorationsAllViews();\n return EventHandled.Yes;\n }\n\n if (this._haveFirstPoint) {\n this._secondPtWorld.setFrom(ev.point);\n this.doManipulation(ev, false);\n await this.onReinitialize();\n this.viewport.invalidateDecorations();\n } else {\n this._firstPtWorld.setFrom(ev.point);\n this._secondPtWorld.setFrom(this._firstPtWorld);\n this._haveFirstPoint = true;\n this._lastPtView = ev.viewPoint;\n this.provideToolAssistance();\n }\n\n return EventHandled.Yes;\n }\n\n public override async onMouseMotion(ev: BeButtonEvent) { this.doManipulation(ev, true); }\n public override async onTouchTap(ev: BeTouchEvent): Promise<EventHandled> { return ev.isSingleTap ? EventHandled.Yes : EventHandled.No; } // Prevent IdleTool from converting single tap into data button down/up...\n public override async onTouchMoveStart(ev: BeTouchEvent, startEv: BeTouchEvent): Promise<EventHandled> {\n if (!this._haveFirstPoint && startEv.isSingleTouch)\n await IModelApp.toolAdmin.convertTouchMoveStartToButtonDownAndMotion(startEv, ev);\n\n return this._haveFirstPoint ? EventHandled.Yes : EventHandled.No;\n }\n\n public override async onTouchMove(ev: BeTouchEvent): Promise<void> {\n if (this._haveFirstPoint)\n return IModelApp.toolAdmin.convertTouchMoveToMotion(ev);\n }\n\n public override async onTouchComplete(ev: BeTouchEvent): Promise<void> {\n if (this._haveFirstPoint)\n return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev);\n }\n\n public override async onTouchCancel(ev: BeTouchEvent): Promise<void> {\n if (this._haveFirstPoint)\n return IModelApp.toolAdmin.convertTouchEndToButtonUp(ev, BeButton.Reset);\n }\n\n private computeWindowCorners(): Point3d[] | undefined {\n const vp = this.viewport;\n if (undefined === vp)\n return undefined;\n\n const corners = this._corners;\n corners[0].setFrom(this._firstPtWorld);\n corners[1].setFrom(this._secondPtWorld);\n vp.worldToViewArray(corners);\n\n const delta = corners[1].minus(corners[0]);\n if (delta.magnitudeXY() < vp.pixelsFromInches(ToolSettings.startDragDistanceInches))\n return undefined;\n\n const currentDelta = vp.viewDelta;\n if (currentDelta.x === 0 || delta.x === 0)\n return undefined;\n\n const skew = vp.view.getAspectRatioSkew();\n const viewAspect = skew * currentDelta.y / currentDelta.x;\n const aspectRatio = Math.abs(delta.y / delta.x);\n\n let halfDeltaX;\n let halfDeltaY;\n if (aspectRatio < viewAspect) {\n halfDeltaX = Math.abs(delta.x) / 2.0;\n halfDeltaY = halfDeltaX * viewAspect;\n } else {\n halfDeltaY = Math.abs(delta.y) / 2.0;\n halfDeltaX = halfDeltaY / viewAspect;\n }\n\n const center = corners[0].plusScaled(delta, 0.5);\n corners[0].x = center.x - halfDeltaX;\n corners[0].y = center.y - halfDeltaY;\n corners[1].x = center.x + halfDeltaX;\n corners[1].y = center.y + halfDeltaY;\n return corners;\n }\n\n public override decorate(context: DecorateContext): void {\n if (undefined === this.viewport || !context.viewport.view.hasSameCoordinates(this.viewport.view))\n return;\n const vp = this.viewport;\n const color = vp.getContrastToBackgroundColor();\n if (this._haveFirstPoint) {\n const corners = this.computeWindowCorners();\n if (undefined === corners)\n return;\n\n this._shapePts[0].x = this._shapePts[3].x = corners[0].x;\n this._shapePts[1].x = this._shapePts[2].x = corners[1].x;\n this._shapePts[0].y = this._shapePts[1].y = corners[0].y;\n this._shapePts[2].y = this._shapePts[3].y = corners[1].y;\n this._shapePts[0].z = this._shapePts[1].z = this._shapePts[2].z = this._shapePts[3].z = corners[0].z;\n this._shapePts[4].setFrom(this._shapePts[0]);\n vp.viewToWorldArray(this._shapePts);\n\n const builder = context.createGraphicBuilder(GraphicType.WorldOverlay);\n\n builder.setBlankingFill(this._fillColor);\n builder.addShape(this._shapePts);\n\n builder.setSymbology(color, color, ViewHandleWeight.Thin);\n builder.addLineString(this._shapePts);\n\n builder.setSymbology(color, color, ViewHandleWeight.FatDot);\n builder.addPointString([this._firstPtWorld]);\n\n context.addDecorationFromBuilder(builder);\n return;\n }\n\n if (undefined === this._lastPtView || context.viewport !== IModelApp.toolAdmin.cursorView)\n return; // Full screen cross-hair only displays in cursor view...\n\n const cursorPt = this._lastPtView.clone();\n cursorPt.x = Math.floor(cursorPt.x) + 0.5;\n cursorPt.y = Math.floor(cursorPt.y) + 0.5;\n const viewRect = vp.viewRect;\n\n const drawDecoration = (ctx: CanvasRenderingContext2D) => {\n ctx.beginPath();\n ctx.strokeStyle = (ColorDef.black === color ? \"black\" : \"white\");\n ctx.lineWidth = 1;\n ctx.moveTo(viewRect.left, cursorPt.y);\n ctx.lineTo(viewRect.right, cursorPt.y);\n ctx.moveTo(cursorPt.x, viewRect.top);\n ctx.lineTo(cursorPt.x, viewRect.bottom);\n ctx.stroke();\n };\n context.addCanvasDecoration({ drawDecoration });\n }\n\n private doManipulation(ev: BeButtonEvent, inDynamics: boolean): void {\n this._secondPtWorld.setFrom(ev.point);\n if (inDynamics) {\n if (undefined !== this.viewport && undefined !== ev.viewport && !ev.viewport.view.hasSameCoordinates(this.viewport.view)) {\n this._lastPtView = undefined;\n return;\n }\n this._lastPtView = ev.viewPoint;\n IModelApp.viewManager.invalidateDecorationsAllViews();\n return;\n }\n\n const corners = this.computeWindowCorners();\n if (undefined === corners)\n return;\n\n const vp = this.viewport;\n if (undefined === vp)\n return;\n\n const view = vp.view;\n vp.viewToWorldArray(corners);\n\n const opts: OnViewExtentsError = {\n onExtentsError: (stat) => view.outputStatusMessage(stat),\n };\n\n let delta: Vector3d;\n let globalAlignment;\n if (view.is3d() && view.isCameraOn) {\n const windowArray: Point3d[] = [corners[0].clone(), corners[1].clone()];\n vp.worldToViewArray(windowArray);\n\n const windowRange = new ViewRect(windowArray[0].x, windowArray[0].y, windowArray[1].x, windowArray[1].y);\n\n let npcZValues = vp.determineVisibleDepthRange(windowRange);\n if (undefined === npcZValues)\n npcZValues = { minimum: 0, maximum: ViewManip.getFocusPlaneNpc(vp) };\n\n const lensAngle = view.getLensAngle();\n\n vp.worldToNpcArray(corners);\n corners[0].z = corners[1].z = npcZValues.maximum;\n\n vp.npcToWorldArray(corners); // Put corners back in world at correct depth\n const viewPts: Point3d[] = [corners[0].clone(), corners[1].clone()];\n vp.rotation.multiplyVectorArrayInPlace(viewPts); // rotate to view orientation to get extents\n\n const range = Range3d.createArray(viewPts);\n delta = Vector3d.createStartEnd(range.low, range.high);\n\n const focusDist = delta.x / (2.0 * Math.tan(lensAngle.radians / 2));\n\n const newTarget = corners[0].interpolate(.5, corners[1]);\n const newEye = newTarget.plusScaled(view.getZVector(), focusDist);\n\n if (ViewStatus.Success !== view.lookAt({ eyePoint: newEye, targetPoint: newTarget, upVector: view.getYVector(), lensAngle, opts }))\n return;\n globalAlignment = { target: newTarget };\n } else {\n const rot = vp.rotation;\n rot.multiplyVectorArrayInPlace(corners);\n\n const range = Range3d.createArray(corners);\n delta = Vector3d.createStartEnd(range.low, range.high);\n // get the view extents\n delta.z = view.getExtents().z;\n\n const originVec = rot.multiplyTransposeXYZ(range.low.x, range.low.y, range.low.z);\n\n // make sure its not too big or too small\n const stat = view.adjustViewDelta(delta, originVec, rot, vp.viewRect.aspect, opts);\n if (stat !== ViewStatus.Success)\n return;\n\n view.setExtents(delta);\n view.setOrigin(originVec);\n if (view.is3d())\n globalAlignment = { target: range.center };\n }\n\n vp.synchWithView({ animateFrustumChange: true, globalAlignment });\n }\n}\n\n/** @internal */\nexport class DefaultViewTouchTool extends ViewManip implements Animator {\n public static override toolId = \"\"; // touch tools installed by IdleTool are never registered\n private readonly _lastPtView = new Point3d();\n private readonly _startPtWorld = new Point3d();\n private readonly _startPtView = new Point3d();\n private readonly _frustum = new Frustum();\n private _startDirection!: Vector2d;\n private _startDistance = 0.0;\n private _startTouchCount = 0;\n private _inertiaVec?: Vector3d;\n private _singleTouch = false;\n private _duration!: BeDuration;\n private _end!: BeTimePoint;\n private _rotate2dDisabled = false;\n private _rotate2dThreshold?: Angle;\n private _only2dManipulations = false;\n\n /** Move this handle during the inertia duration */\n public animate(): boolean {\n if (undefined === this._inertiaVec)\n return true; // handle was removed\n\n // get the fraction of the inertia duration that remains. The decay is a combination of the number of iterations (see damping below)\n // and time. That way the handle slows down even if the framerate is lower.\n const remaining = ((this._end.milliseconds - BeTimePoint.now().milliseconds) / this._duration.milliseconds);\n const pt = this._lastPtView.plusScaled(this._inertiaVec, remaining);\n const vec = this._lastPtView.minus(pt);\n\n // if we're not moving any more, or if the duration has elapsed, we're done\n if (remaining <= 0 || (vec.magnitudeSquared() < .000001)) {\n const vp = this.viewport;\n if (undefined === vp)\n return false;\n vp.saveViewUndo();\n return true; // remove this as the animator\n }\n\n this._lastPtView.setFrom(pt);\n this.perform();\n inertialDampen(this._inertiaVec);\n return false;\n }\n\n public interrupt() { }\n\n constructor(startEv: BeTouchEvent, ev: BeTouchEvent, only2dManipulations = false) {\n super(startEv.viewport, 0, true, false);\n this._only2dManipulations = only2dManipulations;\n this.onStart(ev);\n }\n\n public onStart(ev: BeTouchEvent): void {\n const vp = this.viewport;\n if (undefined === vp)\n return;\n\n vp.getWorldFrustum(this._frustum);\n\n const visiblePoint = vp.pickNearestVisibleGeometry(ev.rawPoint);\n if (undefined !== visiblePoint) {\n this._startPtWorld.setFrom(visiblePoint);\n vp.worldToView(this._startPtWorld, this._startPtView);\n } else {\n this._startPtView.setFrom(ev.viewPoint);\n this._startPtView.z = vp.worldToView(ViewManip.getDefaultTargetPointWorld(vp)).z;\n vp.viewToWorld(this._startPtView, this._startPtWorld);\n }\n this._rotate2dDisabled = false;\n this._rotate2dThreshold = undefined;\n this._lastPtView.setFrom(this._startPtView);\n this._startTouchCount = ev.touchCount;\n this._startDirection = (2 <= ev.touchCount ? Vector2d.createStartEnd(BeTouchEvent.getTouchPosition(ev.touchEvent.targetTouches[0], vp), BeTouchEvent.getTouchPosition(ev.touchEvent.targetTouches[1], vp)) : Vector2d.createZero());\n this._startDistance = (2 === ev.touchCount ? this._startDirection.magnitude() : 0.0);\n }\n\n private computeZoomRatio(ev?: BeTouchEvent): number {\n if (undefined === ev || 0.0 === this._startDistance)\n return 1.0;\n\n const vp = this.viewport;\n if (undefined === vp)\n return 1.0;\n\n const distance = (2 === ev.touchCount ? BeTouchEvent.getTouchPosition(ev.touchEvent.targetTouches[0], vp).distance(BeTouchEvent.getTouchPosition(ev.touchEvent.targetTouches[1], vp)) : 0.0);\n const threshold = vp.pixelsFromInches(ToolSettings.touchZoomChangeThresholdInches);\n\n if (0.0 === distance || Math.abs(this._startDistance - distance) < threshold)\n return 1.0;\n\n // Remove inertia if the viewing operation includes zoom, only use it for pan and rotate.\n this._inertiaVec = undefined;\n const adjustedDist = (distance > this._startDistance ? (distance - threshold) : (distance + threshold)); // Avoid sudden jump in zoom scale by subtracting zoom threshold distance...\n return Geometry.clamp(this._startDistance / adjustedDist, .1, 10);\n }\n\n private computeRotation(ev?: BeTouchEvent): Angle {\n if (undefined === ev || ev.touchCount < 2 || this._rotate2dDisabled)\n return Angle.createDegrees(0.0);\n\n const vp = this.viewport;\n if (undefined === vp)\n return Angle.createDegrees(0.0);\n\n const direction = Vector2d.createStartEnd(BeTouchEvent.getTouchPosition(ev.touchEvent.targetTouches[0], vp), BeTouchEvent.getTouchPosition(ev.touchEvent.targetTouches[1], vp));\n const rotation = this._startDirection.angleTo(direction);\n\n if (undefined === this._rotate2dThreshold) {\n if (Math.abs(rotation.radians) < Angle.createDegrees(5.0).radians)\n return Angle.createDegrees(0.0); // Check against threshold until sufficient rotation is detected...\n\n const angularDistance = Math.abs(direction.magnitude() / 2.0 * Math.sin(Math.abs(rotation.radians)));\n const zoomDistance = Math.abs(direction.magnitude() - this._startDirection.magnitude());\n const panDistance = this._startPtView.distanceXY(this._lastPtView);\n\n // NOTE: The * 0.75 below is because it's easy to confuse an attempted rotate for an attempted pan or zoom, and this tries to balance that without having a false positive in the opposite direction.\n if (angularDistance < (zoomDistance * 0.75) || angularDistance < (panDistance * 0.75)) {\n this._rotate2dDisabled = true; // Restrict subsequent view changes to pan and zoom only...\n return Angle.createDegrees(0.0);\n }\n\n this._rotate2dThreshold = Angle.createRadians(-rotation.radians);\n }\n\n return Angle.createRadians(rotation.radians + this._rotate2dThreshold.radians); // Avoid jump when starting rotation...\n }\n\n private handle2dPan() {\n const screenDist = Point2d.create(this._startPtView.x - this._lastPtView.x, this._startPtView.y - this._lastPtView.y);\n if (undefined !== this.viewport)\n this.viewport.scroll(screenDist, { noSaveInUndo: true });\n }\n\n private handle2dRotateZoom(ev?: BeTouchEvent): void {\n const vp = this.viewport;\n if (undefined === vp)\n return;\n\n const rotation = this.computeRotation(ev);\n const zoomRatio = this.computeZoomRatio(ev);\n const targetWorld = vp.viewToWorld(this._lastPtView);\n const translateTransform = Transform.createTranslation(this._startPtWorld.minus(targetWorld));\n const rotationTransform = Transform.createFixedPointAndMatrix(targetWorld, Matrix3d.createRotationAroundVector(vp.view.getZVector(), rotation) ?? Matrix3d.identity);\n const scaleTransform = Transform.createScaleAboutPoint(this._startPtWorld, zoomRatio);\n const transform = translateTransform.multiplyTransformTransform(rotationTransform);\n\n scaleTransform.multiplyTransformTransform(transform, transform);\n const frustum = this._frustum.transformBy(transform);\n vp.setupViewFromFrustum(frustum);\n }\n\n private handle3dRotate(): void {\n const vp = this.viewport;\n if (undefined === vp)\n return;\n\n const viewRect = vp.viewRect;\n const xExtent = viewRect.width;\n const yExtent = viewRect.height;\n const xDelta = this._lastPtView.x - this._startPtView.x;\n const yDelta = this._lastPtView.y - this._startPtView.y;\n\n const xAxis = ToolSettings.preserveWorldUp ? Vector3d.unitZ() : vp.rotation.getRow(1);\n const yAxis = vp.rotation.getRow(0);\n const xRMatrix = (xDelta ? Matrix3d.createRotationAroundVector(xAxis, Angle.createRadians(Math.PI / (xExtent / xDelta))) : undefined) ?? Matrix3d.identity;\n const yRMatrix = (yDelta ? Matrix3d.createRotationAroundVector(yAxis, Angle.createRadians(Math.PI / (yExtent / yDelta))) : undefined) ?? Matrix3d.identity;\n const worldRMatrix = yRMatrix.multiplyMatrixMatrix(xRMatrix);\n\n const result = worldRMatrix.getAxisAndAngleOfRotation();\n const radians = Angle.createRadians(-result.angle.radians);\n const worldAxis = result.axis;\n\n const rotationMatrix = Matrix3d.createRotationAroundVector(worldAxis, radians);\n if (undefined === rotationMatrix)\n return;\n\n const worldTransform = Transform.createFixedPointAndMatrix(this._startPtWorld, rotationMatrix);\n const frustum = this._frustum.transformBy(worldTransform);\n vp.setupViewFromFrustum(frustum);\n }\n\n private handle3dPanZoom(ev?: BeTouchEvent): void {\n const vp = this.viewport;\n if (undefined === vp)\n return;\n\n const zoomRatio = this.computeZoomRatio(ev);\n\n if (vp.isCameraOn) {\n const targetWorld = vp.viewToWorld(this._lastPtView);\n const preTrans = Transform.createTranslationXYZ(-targetWorld.x, -targetWorld.y, -targetWorld.z);\n const postTrans = Transform.createTranslation(this._startPtWorld);\n\n preTrans.origin.scaleInPlace(zoomRatio);\n preTrans.matrix.scale(zoomRatio, preTrans.matrix);\n const cameraTransform = postTrans.multiplyTransformTransform(preTrans);\n\n const view = vp.view as ViewState3d;\n const oldEyePoint = view.getEyePoint();\n const newEyePoint = cameraTransform.multiplyPoint3d(oldEyePoint);\n const cameraOffset = newEyePoint.minus(oldEyePoint);\n const cameraOffsetTransform = Transform.createTranslation(cameraOffset);\n\n const frustum = this._frustum.transformBy(cameraOffsetTransform);\n vp.setupViewFromFrustum(frustum);\n return;\n }\n\n const targetNpc = vp.viewToNpc(this._lastPtView);\n const transform = Transform.createFixedPointAndMatrix(targetNpc, Matrix3d.createScale(zoomRatio, zoomRatio, 1.0));\n const viewCenter = Point3d.create(.5, .5, .5);\n const startPtNpc = vp.viewToNpc(this._startPtView);\n const shift = startPtNpc.minus(targetNpc);\n shift.z = 0.0;\n const offset = Transform.createTranslation(shift);\n\n offset.multiplyTransformTransform(transform, transform);\n transform.multiplyPoint3d(viewCenter, viewCenter);\n vp.npcToWorld(viewCenter, viewCenter);\n vp.zoom(viewCenter, zoomRatio, { noSaveInUndo: true });\n }\n\n private handleEvent(ev: BeTouchEvent): void {\n if (undefined === this.viewport)\n return;\n\n if (this._startTouchCount !== ev.touchCount) {\n this.onStart(ev);\n return;\n }\n\n this._inertiaVec = undefined;\n const thisPt = ev.viewPoint;\n const smallDistance = 2.0;\n const samePoint = this._lastPtView.isAlmostEqualXY(thisPt, smallDistance);\n if (1 === ev.touchCount && samePoint)\n return; // Don't early return if multi-touch, center doesn't have to move for zoom...\n\n if (this._startPtView.isAlmostEqualXY(thisPt, smallDistance)) {\n this._lastPtView.setFrom(this._startPtView);\n } else {\n if (!samePoint) {\n this._inertiaVec = this._lastPtView.vectorTo(thisPt);\n this._inertiaVec.z = 0;\n }\n this._singleTouch = ev.isSingleTouch;\n this._lastPtView.setFrom(thisPt);\n this._lastPtView.z = this._startPtView.z;\n }\n this.perform(ev);\n }\n\n private perform(ev?: BeTouchEvent) {\n const vp = this.viewport;\n if (undefined === vp)\n return;\n\n vp.setupViewFromFrustum(this._frustum);\n\n const singleTouch = this._singleTouch;\n return (!this._only2dManipulations && vp.view.allow3dManipulations()) ?\n singleTouch ? this.handle3dRotate() : this.handle3dPanZoom(ev) :\n singleTouch ? this.handle2dPan() : this.handle2dRotateZoom(ev);\n }\n\n public override async onDataButtonDown(_ev: BeButtonEvent) { return EventHandled.Yes; }\n public override async onDataButtonUp(_ev: BeButtonEvent) { return EventHandled.Yes; }\n public override async onTouchStart(ev: BeTouchEvent): Promise<void> {\n if (undefined !== this.viewport)\n this.onStart(ev);\n }\n public override async onTouchMove(ev: BeTouchEvent): Promise<void> {\n this.handleEvent(ev);\n }\n public override async onTouchCancel(_ev: BeTouchEvent): Promise<void> { return this.exitTool(); }\n public override async onTouchComplete(_ev: BeTouchEvent): Promise<void> {\n // if we were moving when the touch ended, add inertia to the viewing operation\n if (this._inertiaVec) {\n this._duration = ToolSettings.viewingInertia.duration;\n if (this._duration.isTowardsFuture) { // ensure duration is towards future. Otherwise, don't start animation\n this._end = BeTimePoint.fromNow(this._duration);\n if (undefined !== this.viewport)\n this.viewport.setAnimator(this);\n }\n }\n\n return this.exitTool();\n }\n}\n\n/** A tool that performs view undo operation. An application could also just call Viewport.doUndo directly, creating a ViewTool isn't required.\n * @public\n */\nexport class ViewUndoTool extends ViewTool {\n public static override toolId = \"View.Undo\";\n public static override iconSpec = \"icon-window-backward\";\n\n public override async onPostInstall() {\n if (this.viewport)\n this.viewport.doUndo(ScreenViewport.animation.time.normal);\n return this.exitTool();\n }\n}\n\n/** A tool that performs view redo operation. An application could also just call Viewport.doRedo directly, creating a ViewTool isn't required.\n * @public\n */\nexport class ViewRedoTool extends ViewTool {\n public static override toolId = \"View.Redo\";\n public static override iconSpec = \"icon-window-forward\";\n\n public override async onPostInstall() {\n if (this.viewport)\n this.viewport.doRedo(ScreenViewport.animation.time.normal);\n return this.exitTool();\n }\n}\n\n/** A tool that toggles the camera on/off in a spatial view\n * @public\n */\nexport class ViewToggleCameraTool extends ViewTool {\n public static override toolId = \"View.ToggleCamera\";\n public static override iconSpec = \"icon-camera\";\n\n public override async onInstall(): Promise<boolean> { return (undefined !== this.viewport && this.viewport.view.allow3dManipulations()); }\n\n public override async onPostInstall() {\n if (this.viewport) {\n const vp = this.viewport;\n if (vp.isCameraOn)\n (vp.view as ViewState3d).turnCameraOff();\n else\n vp.turnCameraOn();\n\n vp.synchWithView();\n }\n return this.exitTool();\n }\n}\n\n/** A tool that sets the view camera by two points. This is a PrimitiveTool and not a ViewTool to allow the view to be panned, zoomed, and rotated while defining the points.\n * To show tool settings for specifying camera and target heights above the snap point, make sure formatting and parsing data are cached before the tool starts\n * by calling QuantityFormatter.onInitialized at app startup.\n * @public\n */\nexport class SetupCameraTool extends PrimitiveTool {\n public static override toolId = \"View.SetupCamera\";\n public static override iconSpec = \"icon-camera-location\";\n public viewport?: ScreenViewport;\n protected _haveEyePt: boolean = false;\n protected _eyePtWorld: Point3d = Point3d.create();\n protected _targetPtWorld: Point3d = Point3d.create();\n\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.allow3dManipulations()); }\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; }\n public override requireWriteableTarget(): boolean { return false; }\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n\n public override async onUnsuspend() { this.provideToolAssistance(); }\n protected setupAndPromptForNextAction(): void {\n IModelApp.accuSnap.enableSnap(true);\n this.provideToolAssistance();\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n if (this._haveEyePt)\n await this.onReinitialize();\n else\n await this.exitTool();\n\n return EventHandled.Yes;\n }\n\n protected provideToolAssistance(): void {\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, ViewTool.translate(this._haveEyePt ? \"SetupCamera.Prompts.NextPoint\" : \"SetupCamera.Prompts.FirstPoint\"));\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n const touchInstructions: ToolAssistanceInstruction[] = [];\n\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\n const rejectMsg = CoreTools.translate(this._haveEyePt ? \"ElementSet.Inputs.Restart\" : \"ElementSet.Inputs.Exit\");\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n\n const sections: ToolAssistanceSection[] = [];\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n public async onRestartTool(): Promise<void> {\n const tool = new SetupCameraTool();\n if (!await tool.run())\n return this.exitTool();\n }\n\n protected getAdjustedEyePoint() { return this.useCameraHeight ? this._eyePtWorld.plusScaled(Vector3d.unitZ(), this.cameraHeight) : this._eyePtWorld; }\n protected getAdjustedTargetPoint() { return this.useTargetHeight ? this._targetPtWorld.plusScaled(Vector3d.unitZ(), this.targetHeight) : this._targetPtWorld; }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport) {\n return EventHandled.Yes;\n } else if (undefined === this.viewport) {\n if (!ev.viewport.view.allow3dManipulations())\n return EventHandled.Yes;\n this.viewport = ev.viewport;\n } else if (this.viewport.view.iModel !== ev.viewport.view.iModel) {\n if (this._haveEyePt)\n return EventHandled.Yes;\n this.viewport = ev.viewport;\n return EventHandled.Yes;\n }\n\n if (this._haveEyePt) {\n this._targetPtWorld.setFrom(ev.point);\n this.doManipulation();\n await this.onReinitialize();\n } else {\n this._eyePtWorld.setFrom(ev.point);\n this._targetPtWorld.setFrom(this._eyePtWorld);\n this._haveEyePt = true;\n this.setupAndPromptForNextAction();\n }\n\n return EventHandled.Yes;\n }\n\n public override async onMouseMotion(ev: BeButtonEvent) {\n if (!this._haveEyePt)\n return;\n this._targetPtWorld.setFrom(ev.point);\n IModelApp.viewManager.invalidateDecorationsAllViews();\n }\n\n public static drawCameraFrustum(context: DecorateContext, vp: ScreenViewport, eyePtWorld: Point3d, targetPtWorld: Point3d, eyeSnapPtWorld?: Point3d, targetSnapPtWorld?: Point3d) {\n if (!vp.view.is3d() || vp.view.iModel !== context.viewport.view.iModel)\n return;\n\n const zVec = Vector3d.createStartEnd(eyePtWorld, targetPtWorld);\n const focusDist = zVec.normalizeWithLength(zVec).mag;\n if (focusDist <= Constant.oneMillimeter) // eye and target are too close together\n return;\n\n const xVec = new Vector3d();\n const yVec = Vector3d.unitZ();\n if (yVec.crossProduct(zVec).normalizeWithLength(xVec).mag < Geometry.smallMetricDistance)\n return;\n if (zVec.crossProduct(xVec).normalizeWithLength(yVec).mag < Geometry.smallMetricDistance)\n return;\n\n const lensAngle = ToolSettings.walkCameraAngle;\n const extentX = Math.tan(lensAngle.radians / 2.0) * focusDist;\n const extentY = extentX * (vp.view.extents.y / vp.view.extents.x);\n\n const pt1 = targetPtWorld.plusScaled(xVec, -extentX);\n pt1.plusScaled(yVec, extentY, pt1);\n const pt2 = targetPtWorld.plusScaled(xVec, extentX);\n pt2.plusScaled(yVec, extentY, pt2);\n const pt3 = targetPtWorld.plusScaled(xVec, extentX);\n pt3.plusScaled(yVec, -extentY, pt3);\n const pt4 = targetPtWorld.plusScaled(xVec, -extentX);\n pt4.plusScaled(yVec, -extentY, pt4);\n\n const color = EditManipulator.HandleUtils.adjustForBackgroundColor(ColorDef.black, vp);\n const builderHid = context.createGraphicBuilder(GraphicType.WorldOverlay);\n\n builderHid.setSymbology(color, color, ViewHandleWeight.Bold);\n builderHid.addLineString([eyePtWorld, targetPtWorld]);\n\n builderHid.setSymbology(color, color, ViewHandleWeight.Thin, LinePixels.Code2);\n builderHid.addLineString([eyePtWorld, pt1]);\n builderHid.addLineString([eyePtWorld, pt2]);\n builderHid.addLineString([eyePtWorld, pt3]);\n builderHid.addLineString([eyePtWorld, pt4]);\n builderHid.addLineString([pt1, pt2, pt3, pt4, pt1]);\n\n if (eyeSnapPtWorld)\n builderHid.addLineString([eyeSnapPtWorld, eyePtWorld]);\n if (targetSnapPtWorld)\n builderHid.addLineString([targetSnapPtWorld, targetPtWorld]);\n\n builderHid.setSymbology(color, color, ViewHandleWeight.FatDot);\n builderHid.addPointString([eyePtWorld, targetPtWorld]);\n\n if (eyeSnapPtWorld)\n builderHid.addPointString([eyeSnapPtWorld]);\n if (targetSnapPtWorld)\n builderHid.addPointString([targetSnapPtWorld]);\n\n context.addDecorationFromBuilder(builderHid);\n\n const backColor = ColorDef.from(0, 0, 255, 200);\n const sideColor = context.viewport.hilite.color.withAlpha(25);\n const builderVis = context.createGraphicBuilder(GraphicType.WorldDecoration);\n\n builderVis.setSymbology(color, color, ViewHandleWeight.Normal);\n builderVis.addLineString([eyePtWorld, pt1]);\n builderVis.addLineString([eyePtWorld, pt2]);\n builderVis.addLineString([eyePtWorld, pt3]);\n builderVis.addLineString([eyePtWorld, pt4]);\n builderVis.addLineString([pt1, pt2, pt3, pt4, pt1]);\n\n builderVis.setSymbology(color, backColor, ViewHandleWeight.Thin);\n builderVis.addShape([pt1, pt2, pt3, pt4]);\n\n builderVis.setSymbology(color, sideColor, ViewHandleWeight.Thin);\n builderVis.addShape([eyePtWorld, pt1, pt2]);\n builderVis.addShape([eyePtWorld, pt2, pt3]);\n builderVis.addShape([eyePtWorld, pt3, pt4]);\n builderVis.addShape([eyePtWorld, pt4, pt1]);\n\n context.addDecorationFromBuilder(builderVis);\n }\n\n public override decorate(context: DecorateContext): void {\n if (!this._haveEyePt || undefined === this.viewport)\n return;\n SetupCameraTool.drawCameraFrustum(context, this.viewport, this.getAdjustedEyePoint(), this.getAdjustedTargetPoint(), this.useCameraHeight ? this._eyePtWorld : undefined, this.useTargetHeight ? this._targetPtWorld : undefined);\n }\n\n public override decorateSuspended(context: DecorateContext): void { this.decorate(context); }\n\n private doManipulation(): void {\n const vp = this.viewport;\n if (undefined === vp)\n return;\n\n const view = vp.view;\n if (!view.is3d() || !view.allow3dManipulations())\n return;\n\n const eyePoint = this.getAdjustedEyePoint();\n const targetPoint = this.getAdjustedTargetPoint();\n const lensAngle = ToolSettings.walkCameraAngle;\n if (ViewStatus.Success !== view.lookAt({ eyePoint, targetPoint, upVector: Vector3d.unitZ(), lensAngle }))\n return;\n\n vp.synchWithView({ animateFrustumChange: true });\n }\n\n private _useCameraHeightProperty: DialogProperty<boolean> | undefined;\n public get useCameraHeightProperty() {\n if (!this._useCameraHeightProperty)\n this._useCameraHeightProperty = new DialogProperty<boolean>(\n PropertyDescriptionHelper.buildLockPropertyDescription(\"useCameraHeight\"), false, undefined, false);\n return this._useCameraHeightProperty;\n }\n public get useCameraHeight(): boolean { return this.useCameraHeightProperty.value; }\n public set useCameraHeight(option: boolean) { this.useCameraHeightProperty.value = option; }\n\n private _cameraHeightProperty: DialogProperty<number> | undefined;\n public get cameraHeightProperty() {\n if (!this._cameraHeightProperty)\n this._cameraHeightProperty = new DialogProperty<number>(new LengthDescription(\"cameraHeight\", ViewTool.translate(\"SetupCamera.Labels.CameraHeight\")), 0.0);\n return this._cameraHeightProperty;\n }\n public get cameraHeight(): number { return this.cameraHeightProperty.value; }\n public set cameraHeight(value: number) { this.cameraHeightProperty.value = value; }\n\n private _useTargetHeightProperty: DialogProperty<boolean> | undefined;\n public get useTargetHeightProperty() {\n if (!this._useTargetHeightProperty)\n this._useTargetHeightProperty = new DialogProperty<boolean>(\n PropertyDescriptionHelper.buildLockPropertyDescription(\"useTargetHeight\"), false, undefined, false);\n return this._useTargetHeightProperty;\n }\n public get useTargetHeight(): boolean { return this.useTargetHeightProperty.value; }\n public set useTargetHeight(value: boolean) { this.useTargetHeightProperty.value = value; }\n\n private _targetHeightProperty: DialogProperty<number> | undefined;\n public get targetHeightProperty() {\n if (!this._targetHeightProperty)\n this._targetHeightProperty = new DialogProperty<number>(new LengthDescription(\"targetHeight\", ViewTool.translate(\"SetupCamera.Labels.TargetHeight\")), 0.0);\n return this._targetHeightProperty;\n }\n public get targetHeight(): number { return this.targetHeightProperty.value; }\n public set targetHeight(value: number) { this.targetHeightProperty.value = value; }\n\n protected override getToolSettingLockProperty(property: DialogProperty<any>): DialogProperty<boolean> | undefined {\n if (property === this.cameraHeightProperty)\n return this.useCameraHeightProperty;\n else if (property === this.targetHeightProperty)\n return this.useTargetHeightProperty;\n return undefined;\n }\n\n public override async applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean> {\n return this.changeToolSettingPropertyValue(updatedValue);\n }\n\n public override supplyToolSettingsProperties(): DialogItem[] | undefined {\n this.initializeToolSettingPropertyValues([this.useCameraHeightProperty, this.useTargetHeightProperty, this.cameraHeightProperty, this.targetHeightProperty]);\n\n const cameraHeightLock = this.useCameraHeightProperty.toDialogItem({ rowPriority: 1, columnIndex: 0 });\n const targetHeightLock = this.useTargetHeightProperty.toDialogItem({ rowPriority: 2, columnIndex: 0 });\n\n const toolSettings = new Array<DialogItem>();\n toolSettings.push(this.cameraHeightProperty.toDialogItem({ rowPriority: 1, columnIndex: 1 }, cameraHeightLock));\n toolSettings.push(this.targetHeightProperty.toDialogItem({ rowPriority: 2, columnIndex: 1 }, targetHeightLock));\n return toolSettings;\n }\n}\n\n/** A tool that sets a walk tool starting position by a floor point and look direction. This is a PrimitiveTool and not a ViewTool to allow the view to be panned, zoomed, and rotated while defining the points.\n * @public\n */\nexport class SetupWalkCameraTool extends PrimitiveTool {\n public static override toolId = \"View.SetupWalkCamera\";\n public static override iconSpec = \"icon-camera-location\";\n public viewport?: ScreenViewport;\n protected _haveEyePt: boolean = false;\n protected _eyePtWorld: Point3d = Point3d.create();\n protected _targetPtWorld: Point3d = Point3d.create();\n\n public override isCompatibleViewport(vp: Viewport | undefined, isSelectedViewChange: boolean): boolean { return (super.isCompatibleViewport(vp, isSelectedViewChange) && undefined !== vp && vp.view.allow3dManipulations()); }\n public override isValidLocation(_ev: BeButtonEvent, _isButtonEvent: boolean): boolean { return true; }\n public override requireWriteableTarget(): boolean { return false; }\n public override async onPostInstall() {\n await super.onPostInstall();\n this.setupAndPromptForNextAction();\n }\n\n public override async onUnsuspend() { this.provideToolAssistance(); }\n protected setupAndPromptForNextAction(): void {\n IModelApp.accuSnap.enableSnap(true);\n this.provideToolAssistance();\n }\n\n public override async onResetButtonUp(_ev: BeButtonEvent): Promise<EventHandled> {\n if (this._haveEyePt)\n await this.onReinitialize();\n else\n await this.exitTool();\n\n return EventHandled.Yes;\n }\n\n protected provideToolAssistance(): void {\n const mainInstruction = ToolAssistance.createInstruction(this.iconSpec, ViewTool.translate(this._haveEyePt ? \"SetupWalkCamera.Prompts.NextPoint\" : \"SetupWalkCamera.Prompts.FirstPoint\"));\n const mouseInstructions: ToolAssistanceInstruction[] = [];\n const touchInstructions: ToolAssistanceInstruction[] = [];\n\n const acceptMsg = CoreTools.translate(\"ElementSet.Inputs.AcceptPoint\");\n const rejectMsg = CoreTools.translate(this._haveEyePt ? \"ElementSet.Inputs.Restart\" : \"ElementSet.Inputs.Exit\");\n if (!ToolAssistance.createTouchCursorInstructions(touchInstructions))\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.OneTouchTap, acceptMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.LeftClick, acceptMsg, false, ToolAssistanceInputMethod.Mouse));\n touchInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.TwoTouchTap, rejectMsg, false, ToolAssistanceInputMethod.Touch));\n mouseInstructions.push(ToolAssistance.createInstruction(ToolAssistanceImage.RightClick, rejectMsg, false, ToolAssistanceInputMethod.Mouse));\n\n const sections: ToolAssistanceSection[] = [];\n sections.push(ToolAssistance.createSection(mouseInstructions, ToolAssistance.inputsLabel));\n sections.push(ToolAssistance.createSection(touchInstructions, ToolAssistance.inputsLabel));\n\n const instructions = ToolAssistance.createInstructions(mainInstruction, sections);\n IModelApp.notifications.setToolAssistance(instructions);\n }\n\n public async onRestartTool(): Promise<void> {\n const tool = new SetupWalkCameraTool();\n if (!await tool.run())\n return this.exitTool();\n }\n\n protected getAdjustedEyePoint() { return this._eyePtWorld.plusScaled(Vector3d.unitZ(), ToolSettings.walkEyeHeight); }\n protected getAdjustedTargetPoint() { return Point3d.create(this._targetPtWorld.x, this._targetPtWorld.y, this.getAdjustedEyePoint().z); }\n\n public override async onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled> {\n if (undefined === ev.viewport) {\n return EventHandled.Yes;\n } else if (undefined === this.viewport) {\n if (!ev.viewport.view.allow3dManipulations())\n return EventHandled.Yes;\n this.viewport = ev.viewport;\n } else if (this.viewport.view.iModel !== ev.viewport.view.iModel) {\n if (this._haveEyePt)\n return EventHandled.Yes;\n this.viewport = ev.viewport;\n return EventHandled.Yes;\n }\n\n if (this._haveEyePt) {\n this._targetPtWorld.setFrom(ev.point);\n this.doManipulation();\n await this.onReinitialize();\n } else {\n this._eyePtWorld.setFrom(ev.point);\n this._targetPtWorld.setFrom(this._eyePtWorld);\n this._haveEyePt = true;\n this.setupAndPromptForNextAction();\n }\n\n return EventHandled.Yes;\n }\n\n public override async onMouseMotion(ev: BeButtonEvent) {\n if (!this._haveEyePt)\n return;\n this._targetPtWorld.setFrom(ev.point);\n IModelApp.viewManager.invalidateDecorationsAllViews();\n }\n\n private static getFigurePoints(): Point3d[] {\n const figurePts: Point3d[] = [];\n figurePts.push(Point3d.create(1.064, -0.014));\n figurePts.push(Point3d.create(1.051, 0.039));\n figurePts.push(Point3d.create(1.008, 0.058));\n figurePts.push(Point3d.create(0.962, 0.048));\n figurePts.push(Point3d.create(0.920, 0.026));\n figurePts.push(Point3d.create(0.898, 0.026));\n figurePts.push(Point3d.create(0.853, 0.094));\n figurePts.push(Point3d.create(0.741, 0.120));\n figurePts.push(Point3d.create(0.652, 0.091));\n figurePts.push(Point3d.create(0.514, 0.107));\n figurePts.push(Point3d.create(0.304, 0.108));\n figurePts.push(Point3d.create(0.040, 0.135));\n figurePts.push(Point3d.create(-0.023, 0.133));\n figurePts.push(Point3d.create(-0.031, 0.088));\n figurePts.push(Point3d.create(0.041, 0.068));\n figurePts.push(Point3d.create(0.299, 0.035));\n figurePts.push(Point3d.create(0.447, -0.015));\n figurePts.push(Point3d.create(0.267, -0.042));\n figurePts.push(Point3d.create(0.019, -0.036));\n figurePts.push(Point3d.create(-0.027, -0.146));\n figurePts.push(Point3d.create(-0.005, -0.179));\n figurePts.push(Point3d.create(0.056, -0.108));\n figurePts.push(Point3d.create(0.270, -0.122));\n figurePts.push(Point3d.create(0.483, -0.120));\n figurePts.push(Point3d.create(0.649, -0.145));\n figurePts.push(Point3d.create(0.715, -0.186));\n figurePts.push(Point3d.create(0.865, -0.135));\n figurePts.push(Point3d.create(0.905, -0.039));\n figurePts.push(Point3d.create(0.948, -0.035));\n figurePts.push(Point3d.create(0.979, -0.051));\n figurePts.push(Point3d.create(1.037, -0.046));\n figurePts.push(figurePts[0].clone());\n return figurePts;\n }\n\n private static getFigureTransform(vp: Viewport, base: Point3d, direction: Vector3d, scale: number): Transform | undefined {\n const boresite = AccuDrawHintBuilder.getBoresite(base, vp);\n if (Math.abs(direction.dotProduct(boresite.direction)) >= 0.9999)\n return undefined;\n\n const matrix = Matrix3d.createRigidFromColumns(direction, boresite.direction, AxisOrder.XZY);\n if (undefined === matrix)\n return undefined;\n\n matrix.scaleColumnsInPlace(scale, scale, scale);\n return Transform.createRefs(base.clone(), matrix);\n }\n\n public static drawFigure(context: DecorateContext, vp: Viewport, groundPt: Point3d, eyeHeight: number): void {\n if (!vp.view.is3d() || vp.view.iModel !== context.viewport.view.iModel)\n return;\n\n const transform = this.getFigureTransform(context.viewport, groundPt, Vector3d.unitZ(), eyeHeight);\n if (undefined === transform)\n return;\n\n const figurePts = this.getFigurePoints();\n const color = EditManipulator.HandleUtils.adjustForBackgroundColor(ColorDef.black, vp);\n const fill = ColorDef.from(255, 245, 225, 100);\n\n const builderShadow = context.createGraphicBuilder(GraphicType.WorldOverlay);\n builderShadow.setSymbology(color, ColorDef.black.withAlpha(30), ViewHandleWeight.Thin);\n builderShadow.addArc(Arc3d.createXY(groundPt, eyeHeight * 0.22), true, true);\n context.addDecorationFromBuilder(builderShadow);\n\n const builderHid = context.createGraphicBuilder(GraphicType.WorldDecoration, transform);\n builderHid.setSymbology(color, fill, ViewHandleWeight.Thin);\n builderHid.addShape(figurePts); // Copies points...\n context.addDecorationFromBuilder(builderHid);\n\n const builderVis = context.createGraphicBuilder(GraphicType.WorldOverlay, transform);\n builderVis.setSymbology(color, color, ViewHandleWeight.Normal);\n builderVis.addLineString(figurePts); // Owns points...\n context.addDecorationFromBuilder(builderVis);\n }\n\n public override decorate(context: DecorateContext): void {\n if (!this._haveEyePt || undefined === this.viewport)\n return;\n SetupWalkCameraTool.drawFigure(context, this.viewport, this._eyePtWorld, ToolSettings.walkEyeHeight);\n SetupCameraTool.drawCameraFrustum(context, this.viewport, this.getAdjustedEyePoint(), this.getAdjustedTargetPoint(), this._eyePtWorld, this._targetPtWorld);\n }\n\n public override decorateSuspended(context: DecorateContext): void { this.decorate(context); }\n\n private doManipulation(): void {\n const vp = this.viewport;\n if (undefined === vp)\n return;\n\n const view = vp.view;\n if (!view.is3d() || !view.allow3dManipulations())\n return;\n\n const eyePoint = this.getAdjustedEyePoint();\n const targetPoint = this.getAdjustedTargetPoint();\n const lensAngle = ToolSettings.walkCameraAngle;\n if (ViewStatus.Success !== view.lookAt({ eyePoint, targetPoint, upVector: Vector3d.unitZ(), lensAngle }))\n return;\n\n vp.synchWithView({ animateFrustumChange: true });\n }\n}\n"]}
1
+ {"version":3,"file":"ViewTool.js","sourceRoot":"","sources":["../../../src/tools/ViewTool.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA8D;AAC9D,wDAG8B;AAC9B,oDAA4F;AAC5F,0DAE+B;AAC/B,0CAA4D;AAC5D,kDAAuD;AACvD,gDAA6C;AAC7C,4CAAyC;AACzC,uEAAoE;AACpE,2CAAwC;AACxC,kDAAiD;AAGjD,8DAG+B;AAC/B,0CAAyE;AAEzE,iDAA8C;AAC9C,4CAA2C;AAC3C,8CAA2C;AAC3C,uDAAoD;AACpD,mDAAgD;AAChD,iCAEgB;AAChB,qDAAoJ;AACpJ,iDAA8C;AAC9C,8DAA2D;AAc3D,gBAAgB;AAChB,IAAY,cAWX;AAXD,WAAY,cAAc;IACxB,mDAAQ,CAAA;IACR,uDAAU,CAAA;IACV,mEAAqB,CAAA;IACrB,iDAAY,CAAA;IACZ,uDAAe,CAAA;IACf,oDAAa,CAAA;IACb,oDAAa,CAAA;IACb,kDAAY,CAAA;IACZ,qDAAa,CAAA;IACb,mEAAoB,CAAA;AACtB,CAAC,EAXW,cAAc,8BAAd,cAAc,QAWzB;AAYD,wCAAwC;AAExC,sDAAsD;AACtD,MAAM,cAAc,GAAG,CAAC,EAAY,EAAE,EAAE;IACtC,EAAE,CAAC,YAAY,CAAC,wBAAQ,CAAC,KAAK,CAAC,2BAAY,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAClF,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAsB,QAAS,SAAQ,sBAAe;IAqB1B;IApBnB,MAAM,CAAC,SAAS,CAAC,GAAW,IAAI,OAAO,gBAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5E,eAAe,GAAG,KAAK,CAAC;IACxB,kBAAkB,KAAK,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;IACrD,gBAAgB,KAAK,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC;IAC3C,KAAK,CAAC,GAAG,CAAC,GAAG,KAAY;QACvC,MAAM,SAAS,GAAG,qBAAS,CAAC,SAAS,CAAC;QACtC,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;YAC1E,qBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,CAAC;YAC9E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;YACtC,OAAO,KAAK,CAAC;QAEf,MAAM,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAA0B,QAAyB;QACjD,KAAK,EAAE,CAAC;QADgB,aAAQ,GAAR,QAAQ,CAAiB;IAEnD,CAAC;IACe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,mBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,uBAAuB;IAChB,KAAK,CAAC,QAAQ,KAAK,OAAO,qBAAS,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,UAAU,CAAC,MAAc;QACrC,qBAAS,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;CACF;AAlCD,4BAkCC;AAED,gBAAgB;AAChB,MAAsB,iBAAiB;IAIlB;IAHA,UAAU,GAAG,IAAI,uBAAO,EAAE,CAAC;IACpC,WAAW,CAAW;IAEhC,YAAmB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;QACpC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC/B,CAAC;IACM,cAAc,KAAW,CAAC;IAC1B,SAAS,KAAW,CAAC;IACrB,QAAQ,KAAW,CAAC;IACpB,MAAM,CAAC,GAAkB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IACrD,YAAY,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IACxC,eAAe,KAAa,OAAO,SAAS,CAAC,CAAC,CAAC;IAK/C,OAAO,KAAW,qBAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,UAAU,CAAC,QAAyB,EAAE,SAAkB,IAAU,CAAC;IACnE,OAAO,CAAC,GAAiB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IACrD,YAAY,CAAC,GAAiB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IAC1D,UAAU,CAAC,GAAiB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,eAAe,CAAC,GAAiB,IAAsB,OAAO,KAAK,CAAC,CAAC,CAAC;IAC5E,KAAK,CAAC,aAAa,CAAC,GAAiB,IAAsB,OAAO,KAAK,CAAC,CAAC,CAAC;IAC1E,WAAW,CAAC,GAAiB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IACzD,gBAAgB,CAAC,GAAiB,EAAE,QAAsB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IACtF,UAAU,CAAC,GAAiB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IACxD,eAAe,CAAC,SAAkB,EAAE,SAAwB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IACxF,uBAAuB,CAAC,SAAkB,EAAE,SAAyB,EAAE,MAAqB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IACxH,cAAc,CAAC,GAAkB,EAAE,UAAmB,IAAa,OAAO,KAAK,CAAC,CAAC,CAAC;IAClF,gBAAgB,CAAC,OAAgB,EAAE,GAAa,EAAE,MAAoC,EAAE,MAAwB;QACrH,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,2BAAgB,CAAC,QAAQ,CAAC;YAC/B,KAAK,2BAAgB,CAAC,KAAK,CAAC;YAC5B,KAAK,2BAAgB,CAAC,aAAa,CAAC;YACpC,KAAK,2BAAgB,CAAC,WAAW,CAAC;YAClC,KAAK,2BAAgB,CAAC,IAAI,CAAC;YAC3B,KAAK,2BAAgB,CAAC,GAAG;gBACvB,OAAO,OAAO,CAAC,CAAC,4EAA4E;YAC9F;gBACE,OAAO,KAAK,CAAC,CAAC,mFAAmF;QACrG,CAAC;IACH,CAAC;IACS,cAAc,CAAC,EAAiB;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,4DAA4D;IAClD,yBAAyB;QACjC,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;YAChC,OAAO;QAET,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;QAC1C,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO;QAET,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU;YAChC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,4CAA4C;IAC7F,CAAC;CACF;AA1DD,8CA0DC;AAED,gBAAgB;AAChB,MAAa,eAAe;IAKP;IAJZ,OAAO,GAAwB,EAAE,CAAC;IAClC,KAAK,GAAG,CAAC,CAAC,CAAC;IACX,SAAS,GAAG,KAAK,CAAC;IAClB,cAAc,GAAG,CAAC,CAAC;IAC1B,YAAmB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAI,CAAC;IAEpC,KAAK;QACV,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,qGAAqG;QAC/H,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAW,KAAK,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,IAAW,SAAS,KAAoC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACtG,IAAW,WAAW,KAAoC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,GAAG,CAAC,MAAyB,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAa,IAAmC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACzI,cAAc,KAAW,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAE9D,OAAO,CAAC,QAAiB,EAAE,MAAM,GAAG,cAAc,CAAC,IAAI;QAC5D,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,mCAA0B,EAAE,CAAC;QACnE,IAAI,WAAW,GAAG,GAAG,CAAC;QACtB,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,eAAe,gCAAwB,CAAC;QAC5C,IAAI,gBAA+C,CAAC;QAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,oCAA2B,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;oBACjC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;oBACxB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;iBAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnD,IAAI,IAAI,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;oBACrC,IAAI,IAAI,CAAC,QAAQ,GAAG,eAAe;wBACjC,YAAY,GAAG,KAAK,CAAC;oBAEvB,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAEhC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC;wBACnD,YAAY,GAAG,IAAI,CAAC;wBACpB,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;wBAC5B,gBAAgB,GAAG,MAAM,CAAC;wBAC1B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,KAAK,gBAAgB,CAAC;IACxC,CAAC;IAEM,WAAW,CAAC,OAAwB;QACzC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;YAClB,OAAO;QAET,0CAA0C;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEM,QAAQ,CAAC,KAAa;QAC3B,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC3E,OAAO;QAET,IAAI,WAA0C,CAAC;QAC/C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACpB,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,WAAW;gBACb,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,WAAW;gBACb,WAAW,CAAC,OAAO,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;QAE9C,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,SAAS,KAAK,EAAE;YAClB,EAAE,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEM,cAAc,KAAW,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IACrF,SAAS,KAAW,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,EAAiB,IAAU,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,EAAgB;QAC7B,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9B,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpB,cAAc,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,2DAA2D;IACpD,SAAS,CAAC,UAA0B,IAAa,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;CAClI;AAnHD,0CAmHC;AAED;;;GAGG;AACH,MAAsB,SAAU,SAAQ,QAAQ;IAiBW;IAA2B;IAAyB;IAhB7G,gBAAgB;IACT,WAAW,CAAkB;IAC7B,YAAY,GAAG,KAAK,CAAC,CAAC,SAAS;IACtB,iBAAiB,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC3C,cAAc,GAAG,KAAK,CAAC;IACvB,UAAU,GAAG,KAAK,CAAC;IACnB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,kBAAkB,GAAG,KAAK,CAAC;IAC3B,IAAI,GAAG,CAAC,CAAC;IAChB,gBAAgB;IACT,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC;IAC1C,gBAAgB;IACN,aAAa,CAAyJ;IAChL,gBAAgB;IACN,UAAU,CAAY;IAEhC,YAAY,QAAoC,EAAS,UAAkB,EAAS,OAAgB,EAAS,qBAA8B,KAAK;QAC9I,KAAK,CAAC,QAAQ,CAAC,CAAC;QADuC,eAAU,GAAV,UAAU,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAS;QAAS,uBAAkB,GAAlB,kBAAkB,CAAiB;QAE9I,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,gBAAgB;IACT,iBAAiB,CAAC,OAAwB;QAC/C,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa;YAClC,OAAO;QAET,MAAM,QAAQ,GAAG,qBAAS,CAAC,SAAS,CAAC,UAAU,CAAC;QAChD,IAAI,QAAQ,KAAK,OAAO,CAAC,QAAQ;YAC/B,OAAO;QAET,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACrD,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAErD,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;YACtC,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC;YACf,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,oCAAoC;YAC1E,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,iEAAiE;QAChH,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,SAAS,CAAC;QACzD,MAAM,OAAO,GAAG,wBAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,qBAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,0BAAU,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5G,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,sBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,2BAAgB,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClL,MAAM,SAAS,GAAG,iCAAe,CAAC,WAAW,CAAC,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACjH,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,yBAAW,CAAC,YAAY,CAAC,CAAC;QACvE,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,wBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAU,CAAC,KAAK,CAAC,CAAC;QACvH,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAE1C,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1F,CAAC;IAED,gBAAgB;IACT,uBAAuB;QAC5B,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa;YAClC,OAAO,SAAS,CAAC;QACnB,OAAO,CAAC,2BAAgB,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7G,CAAC;IAED,gBAAgB;IACT,eAAe;QACpB,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa;YAClC,OAAO,KAAK,CAAC;QACf,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IACT,cAAc,CAAC,EAAiB,EAAE,YAAqB,KAAK;QACjE,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,uBAAuB,EAAE;YAC3E,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAEpC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,SAAS,IAAI,IAAI,CAAC,eAAe;YACnC,OAAO,SAAS,CAAC;QAEnB,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC;YAC3H,OAAO,SAAS,CAAC;QAEnB,MAAM,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,CAAC,2BAAY,CAAC,wBAAwB,CAAC,CAAC;QACpF,MAAM,MAAM,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAChE,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,2BAAgB,CAAC,QAAQ,CAAC;YAC/B,KAAK,2BAAgB,CAAC,KAAK,CAAC;YAC5B,KAAK,2BAAgB,CAAC,GAAG;gBACvB,YAAY,GAAG,IAAI,CAAC;gBACpB,MAAM;YACR,KAAK,2BAAgB,CAAC,aAAa,CAAC;YACpC,KAAK,2BAAgB,CAAC,WAAW,CAAC;YAClC,KAAK,2BAAgB,CAAC,IAAI,CAAC;YAC3B,KAAK,2BAAgB,CAAC,GAAG,CAAC;YAC1B,KAAK,2BAAgB,CAAC,WAAW;gBAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;gBACzD,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACjD,MAAM;QACV,CAAC;QAED,oGAAoG;QACpG,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAE1G,IAAI,SAAS;YACX,IAAI,CAAC,aAAa,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QAEtL,OAAO,CAAC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;OAKG;IACH,IAAc,2BAA2B,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAEtD,KAAK,CAAC,cAAc;QAClC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnG,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,sDAAsD;YACrF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAElC,IAAI,UAAU,IAAI,IAAI,CAAC,2BAA2B;YAChD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEzB,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,qHAAqH;QACrH,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC/F,OAAO,mBAAY,CAAC,EAAE,CAAC;QAEzB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,CAAC;gBACJ,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBAChB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACd,MAAM;QACV,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO;gBAC9C,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;;gBAEtB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAChC,CAAC;QAED,OAAO,mBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEe,KAAK,CAAC,cAAc,CAAC,GAAkB;QACrD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO;YAC/E,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAExB,OAAO,mBAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,YAAY,CAAC,OAAqB;QACtD,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,wCAAwC;YACxE,OAAO,mBAAY,CAAC,GAAG,CAAC;QAE1B,MAAM,qBAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,mBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,gBAAgB;IACT,KAAK,CAAC,eAAe,CAAC,EAAiB,EAAE,YAA6B;QAC3E,IAAI,IAAI,CAAC,cAAc;YACrB,OAAO,mBAAY,CAAC,EAAE,CAAC,CAAC,qDAAqD;QAE/E,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC;gBAC3C,OAAO,mBAAY,CAAC,EAAE,CAAC,CAAC,0DAA0D;YACpF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,yEAAyE;QACxG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;YACjB,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAElC,OAAO,mBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,eAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,MAAM;YAC7B,OAAO,mBAAY,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAEe,KAAK,CAAC,cAAc,CAAC,EAAiB;QACpD,oIAAoI;QACpI,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,OAAO,mBAAY,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAiB;QACnD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC;YAC3D,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;YACjB,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE5B,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACpD,MAAM,gBAAgB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACjG,IAAI,EAAE,CAAC,QAAQ,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAC,EAAE,CAAC;YACtD,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACpD,IAAI,YAAY,KAAK,YAAY;gBAC/B,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC;YAEvC,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAEe,KAAK,CAAC,YAAY,CAAC,EAAgB;QACjD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC;YAC3D,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,IAAI,SAAS,KAAK,WAAW;YAC3B,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAEe,KAAK,CAAC,UAAU,CAAC,EAAgB;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,IAAI,SAAS,KAAK,WAAW;YAC3B,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,EAAgB;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,IAAI,SAAS,KAAK,WAAW,IAAI,MAAM,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;YACpE,OAAO;QACT,IAAI,IAAI,CAAC,cAAc;YACrB,OAAO,qBAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAgB;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,IAAI,SAAS,KAAK,WAAW,IAAI,MAAM,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;YAClE,OAAO;QACT,IAAI,IAAI,CAAC,cAAc;YACrB,OAAO,qBAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAAE,EAAE,eAAQ,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,EAAgB;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,IAAI,SAAS,KAAK,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1D,OAAO;QACT,IAAI,IAAI,CAAC,cAAc;YACrB,OAAO,qBAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,EAAgB,EAAE,OAAqB;QAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,IAAI,SAAS,KAAK,WAAW,IAAI,WAAW,CAAC,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC;YACxE,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,aAAa;YAC/C,MAAM,qBAAS,CAAC,SAAS,CAAC,0CAA0C,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC;IAClE,CAAC;IAEe,KAAK,CAAC,UAAU,CAAC,EAAgB;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,IAAI,SAAS,KAAK,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YACzD,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC,CAAC,0EAA0E;IACxI,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,QAAiB,EAAE,QAAuB;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC,CAAC;IAC7H,CAAC;IAEe,KAAK,CAAC,uBAAuB,CAAC,QAAiB,EAAE,QAAwB,EAAE,KAAoB;QAC7G,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI,WAAW,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC,CAAC;IAC5I,CAAC;IAEe,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,kDAAkD;IACjF,CAAC;IAEM,qBAAqB,CAAC,YAAoB,EAAE,eAA6C;QAC9F,MAAM,eAAe,GAAG,+BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1G,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAChE,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5I,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;YAClC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;gBACpC,IAAI,0CAAyB,CAAC,KAAK,KAAK,KAAK,CAAC,WAAW;oBACvD,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;oBAE9B,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,+BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,qBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,oHAAoH;IAC1G,4BAA4B,KAAW,CAAC;IAElC,KAAK,CAAC,SAAS;QAC7B,IAAI,eAAe,GAAG,KAAK,CAAC;QAE5B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;YACrB,IAAI,eAAe,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnC,EAAE,CAAC,oBAAoB,EAAE,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,aAAa,EAAE,CAAC;YACrB,CAAC;YAED,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,oBAAoB,CAAC,EAAW,EAAE,UAAmB,EAAE,UAAmB;QAC/E,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAChB,OAAO;QAET,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC5C,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,GAAG,CAAC;QAEjC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;IAEM,kBAAkB;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,CAAC,EAAE;YACL,OAAO;QAET,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,cAAc;gBACrB,OAAO;YACT,IAAI,qBAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,MAAM,GAAG,qBAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;gBACjD,IAAI,CAAC,qBAAS,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;oBACxC,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBAChE,MAAM,EAAE,GAAG,IAAI,oBAAa,EAAE,CAAC;wBAC/B,qBAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;wBACpD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC,gFAAgF;wBACjH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAChC,CAAC;oBACD,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc;wBACxE,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,sEAAsE;gBAC5H,CAAC;gBACD,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC/C,qBAAS,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,2DAA2D;YACnG,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,qBAAS,CAAC,cAAc,CAAC,QAAQ;YACnC,OAAO,IAAI,CAAC,oBAAoB,CAAC,qBAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAErF,IAAI,EAAE,CAAC,mBAAmB,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,mBAAmB,CAAC;YACvE,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEvE,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3F,CAAC;IAEM,iBAAiB,CAAC,EAAiB;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC;QAExC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;YAC1C,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChD,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,YAAY,CAAC,EAAiB,EAAE,UAAmB;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAC7C,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO,IAAI,CAAC;QAEd,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC1D,OAAO,UAAU,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;IAEM,gBAAgB,CAAC,KAAY,EAAE,SAAiB;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;QACvC,IAAI,SAAS,KAAK,UAAU;YAC1B,OAAO,KAAK,CAAC;QACf,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/G,CAAC;IAED,IAAW,KAAK;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;QACjC,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO,IAAI,CAAC;QAEd,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,wBAAQ,CAAC,KAAK,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9F,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,EAAY;QACzC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,EAAY;QACnD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE;YACjC,OAAO,EAAE,CAAC,UAAU,CAAC,uBAAS,CAAC,CAAC;QAElC,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAElD,IAAI,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YACrD,cAAc,CAAC,CAAC,GAAG,GAAG,CAAC;YACvB,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,wEAAwE;IACjE,cAAc,CAAC,MAAe;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,CAAC,EAAE;YACL,OAAO,KAAK,CAAC;QAEf,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,eAAe,CAAC,QAAwB;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACvF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,6BAAa,CAAC,mCAAmC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjF,IAAI,CAAC,SAAS,CAAC,MAAM;gBACnB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,QAAwB,EAAE,oBAA6B,EAAE,OAA2C;QACxH,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACjD,QAAQ,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAC3C,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,yBAAyB,CAAC,QAAwB,EAAE,oBAA6B,EAAE,OAA2C;QAC1I,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,oBAAoB,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC;YAC7H,MAAM,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1E,IAAI,SAAS,KAAK,kBAAkB,EAAE,CAAC;gBACrC,MAAM,gBAAgB,GAAG,IAAA,4CAAuB,EAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvE,CAAC,KAAK,IAAI,EAAE;oBACV,MAAM,QAAQ,CAAC,8BAA8B,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,4EAA4E;oBACnL,QAAQ,CAAC,mBAAmB,GAAG,SAAS,CAAC;gBAC3C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBACtB,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACjD,QAAQ,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,QAAwB,EAAE,OAA2C;QAClH,IAAI,CAAC,QAAQ,CAAC,sBAAsB,IAAI,SAAS,KAAK,QAAQ,CAAC,WAAW,IAAI,CAAC,KAAK,QAAQ,CAAC,WAAW,CAAC,IAAI;YAC3G,OAAO,KAAK,CAAC;QACf,MAAM,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,kBAAkB,CAAC,SAAgB,EAAE,cAAuB;QACjE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,CAAC,EAAE;YACL,OAAO,uBAAU,CAAC,eAAe,CAAC;QAEpC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9C,OAAO,uBAAU,CAAC,eAAe,CAAC;QAEpC,MAAM,MAAM,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAC3H,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,MAAM,KAAK,uBAAU,CAAC,OAAO;YAC/B,OAAO,MAAM,CAAC;QAEhB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,uBAAU,CAAC,OAAO,CAAC;IAC5B,CAAC;IAEM,UAAU,CAAC,UAAmB;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC;QAEf,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,wBAAQ,CAAC,4BAA4B,CAAC,KAAK,EAAE,wBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS;YACZ,OAAO,KAAK,CAAC;QAEf,MAAM,SAAS,GAAG,yBAAS,CAAC,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;QACnC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1B,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,cAAc,CAAC,EAAmB;QACvC,IAAI,EAAE,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,kDAAkD;YAC1G,OAAO;QAET,IAAI,IAAI,CAAC,QAAQ;YACf,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC,8CAA8C;QAEvF,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC;YACzE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE5B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,MAAM;YACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,YAAY;YAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,GAAG;YACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,MAAM;YACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI;YACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI;YACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,GAAG;YACtC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI;YACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,WAAW;YAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;CACF;AAhnBD,8BAgnBC;AAED,yFAAyF;AACzF,MAAM,gBAAiB,SAAQ,iBAAiB;IAC9C,IAAW,UAAU,KAAK,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/C,YAAY,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,6DAA6D;IAChH,UAAU,CAAC,EAAiB;QACjC,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO,KAAK,CAAC;QACf,EAAE,CAAC,QAAQ,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC,sEAAsE;QACnH,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,gBAAgB,CAAC,QAAiB,EAAE,GAAsD;QAC/F,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB;YAClC,OAAO,KAAK,CAAC,CAAC,qHAAqH;QAErI,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QAEf,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,QAAQ,GAAG,eAAe;YAC5B,OAAO,KAAK,CAAC;QAEf,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxB,GAAG,CAAC,QAAQ,oCAAyB,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,SAAS,CAAC,OAAwB,EAAE,UAAmB,EAAE,UAAkB,EAAE,QAAiB;QAC1G,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QAC/C,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC1D,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1C,MAAM,cAAc,GAAG,CAAC,GAA6B,EAAE,EAAE;YACvD,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC;YACnC,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAC3B,GAAG,CAAC,MAAM,EAAE,CAAC;YAEb,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC1B,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACzB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACzB,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,CAAC,CAAC;QACF,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEe,UAAU,CAAC,OAAwB,EAAE,QAAiB;QACpE,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAC7C,OAAO;QAET,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc;YACpE,OAAO,CAAC,uFAAuF;QAEjG,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc;YAC1C,OAAO,CAAC,kDAAkD;QAE5D,IAAI,UAAU,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC;YACtD,IAAI,SAAS,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,KAAK,SAAS,CAAC,UAAU;gBAC3E,OAAO,CAAC,mFAAmF;YAC7F,UAAU,GAAG,GAAG,CAAC,CAAC,wCAAwC;QAC5D,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAChE,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5F,CAAC;IAEM,cAAc,CAAC,EAAiB,EAAE,UAAmB;QAC1D,IAAI,UAAU,IAAI,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ;YACtD,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,2EAA2E;QAEpM,OAAO,KAAK,CAAC,CAAC,qCAAqC;IACrD,CAAC;IAED,gBAAgB;IACA,cAAc,CAAC,GAAkB,EAAE,UAAmB;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACrG,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI,cAAc,CAAC,YAAY,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC;IAC/F,CAAC;CACF;AAED;;;GAGG;AACH,MAAe,iBAAkB,SAAQ,iBAAiB;IAC9C,SAAS,CAAc;IACvB,IAAI,CAAe;IACnB,WAAW,CAAY;IAE1B,cAAc,CAAC,EAAiB,EAAE,UAAmB;QAC1D,IAAI,2BAAY,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;YACtF,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;QAE/B,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QAEf,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1C,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEhC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC;YACnD,OAAO,IAAI,CAAC;QAEd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,wDAAwD;IAC9C,cAAc;QACtB,IAAI,CAAC,SAAS,GAAG,2BAAY,CAAC,cAAc,CAAC,QAAQ,CAAC;QACtD,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,sEAAsE;YAC1G,IAAI,CAAC,IAAI,GAAG,0BAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClC,IAAI,SAAS,KAAK,EAAE;gBAClB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mDAAmD;IAC5C,OAAO;QACZ,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;YAChC,OAAO,IAAI,CAAC,CAAC,qBAAqB;QAEpC,oIAAoI;QACpI,2EAA2E;QAC3E,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,0BAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC5G,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEnE,2EAA2E;QAC3E,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,gBAAgB,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YAC/E,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClC,IAAI,SAAS,KAAK,EAAE;gBAClB,OAAO,KAAK,CAAC;YAEf,EAAE,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,CAAC,8BAA8B;QAC7C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC;QAClD,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,SAAS,KAAK,CAAC;CAEvB;AAED,gEAAgE;AAChE,MAAM,OAAQ,SAAQ,iBAAiB;IACrC,IAAW,UAAU,KAAK,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,eAAe,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAE7I,UAAU,CAAC,EAAiB;QACjC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QAEf,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzC,yFAAyF;QACzF,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;gBAChC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;gBAEjD,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,gBAAgB,CAAC,SAAkB,EAAE,GAAsD;QAChG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;QACnB,GAAG,CAAC,QAAQ,gCAAwB,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qCAAqC;IAC3B,OAAO,CAAC,SAAkB;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QAEf,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAChB,IAAI,uBAAU,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACrH,OAAO,KAAK,CAAC;YAEf,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,gEAAgE;QACpG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IACA,cAAc,CAAC,EAAiB,EAAE,UAAmB;QACnE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QACf,OAAO,EAAE,CAAC,UAAU,IAAI,kBAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC;IAC7D,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,UAAW,SAAQ,iBAAiB;IACvB,QAAQ,GAAG,IAAI,qBAAO,EAAE,CAAC;IACzB,cAAc,GAAG,IAAI,qBAAO,EAAE,CAAC;IAC/B,YAAY,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC9C,IAAW,UAAU,KAAK,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,eAAe,KAAK,OAAO,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzE,gBAAgB,CAAC,SAAkB,EAAE,GAAsD;QAChG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;QACnB,GAAG,CAAC,QAAQ,qCAA2B,CAAC,CAAC,gGAAgG;QACzI,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,UAAU,CAAC,EAAiB;QACjC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;YAChC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAE5D,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3C,EAAE,CAAC,UAAU,CAAC,yBAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,OAAO,CAAC,KAAc;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QAEf,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,yBAAyB;YAC3E,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEnC,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,yBAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClE,IAAI,aAAa;YACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;aACnC,CAAC;YACJ,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACzC,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,aAAa;YACf,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,KAAY,CAAC;QACjB,IAAI,SAAmB,CAAC;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,wBAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,wBAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC1D,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACjC,SAAS,GAAG,wBAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;YAE7B,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEtC,gGAAgG;YAChG,MAAM,KAAK,GAAG,2BAAY,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,wBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAErL,qDAAqD;YACrD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAEpC,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAQ,CAAC,0BAA0B,CAAC,KAAK,EAAE,qBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,wBAAQ,CAAC,QAAQ,CAAC;YAClK,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAQ,CAAC,0BAA0B,CAAC,KAAK,EAAE,qBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,wBAAQ,CAAC,QAAQ,CAAC;YACnK,MAAM,YAAY,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,yBAAyB,EAAE,CAAC;YACxD,KAAK,GAAG,qBAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnD,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1B,CAAC;QAED,MAAM,WAAW,GAAG,wBAAQ,CAAC,0BAA0B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1E,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,MAAM,cAAc,GAAG,yBAAS,CAAC,yBAAyB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACjF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC1D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,gEAAgE;YAClG,EAAE,CAAC,aAAa,EAAE,CAAC;QACrB,CAAC;QAED,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,OAAO,CAAC,EAAgB;QACtC,oGAAoG;QACpG,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACnD,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAClC,EAAE,CAAC,UAAU,GAAG,kBAAW,CAAC,SAAS,CAAC,CAAC,2FAA2F;QACpI,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;IACA,cAAc,CAAC,EAAiB,EAAE,UAAmB;QACnE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,gBAAgB;IACA,gBAAgB,CAAC,OAAgB,EAAE,EAAY,EAAE,KAAmC,EAAE,MAAwB;QAC5H,IAAI,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YAClH,KAAK,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACjE,KAAK,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC;YACpD,OAAO,IAAI,CAAC;QAEd,KAAK,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,QAAS,SAAQ,iBAAiB;IAC9B,SAAS,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC1B,YAAY,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC7B,SAAS,GAAG,IAAI,wBAAQ,EAAE,CAAC;IAC3B,QAAQ,GAAG,IAAI,qBAAO,EAAE,CAAC;IACjC,IAAW,UAAU,KAAK,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,eAAe,KAAa,OAAO,qBAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAE/E,gBAAgB,CAAC,SAAkB,EAAE,GAAsD;QAChG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;QACnB,GAAG,CAAC,QAAQ,qCAA2B,CAAC,CAAC,gGAAgG;QACzI,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,UAAU,CAAC,EAAiB;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,IAAI,CAAC;QAEd,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YACvD,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAEpC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,OAAO,CAAC,GAAiB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,OAAO,KAAK,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa;QAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,cAAc,CAAC,EAAiB,EAAE,WAAoB;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,SAAS,KAAK,QAAQ;YACxB,OAAO,KAAK,CAAC;QAEf,IAAI,EAAE,CAAC,QAAQ,KAAK,QAAQ;YAC1B,OAAO,KAAK,CAAC;QAEf,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC1D,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEvC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,gBAAgB,CAAC,EAAY,EAAE,OAAgB,EAAE,MAAe;QACtE,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;QAChC,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAE7C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,kBAAkB,GAAG,wBAAQ,CAAC,0BAA0B,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,qBAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9G,MAAM,gBAAgB,GAAG,wBAAQ,CAAC,0BAA0B,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,qBAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAE5G,IAAI,SAAS,KAAK,eAAe,IAAI,SAAS,KAAK,kBAAkB,IAAI,SAAS,KAAK,gBAAgB;YACrG,OAAO,yBAAS,CAAC,cAAc,EAAE,CAAC;QAEpC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACxE,eAAe,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAEzE,MAAM,WAAW,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAC9E,MAAM,SAAS,GAAG,yBAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,sHAAsH;AACtH,MAAe,cAAe,SAAQ,iBAAiB;IAClC,aAAa,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC9B,WAAW,GAAG,IAAI,uBAAO,EAAE,CAAC;IACrC,eAAe,GAAG,CAAC,CAAC;IACpB,SAAS,GAAG,EAAE,CAAC;IAElB,gBAAgB,CAAC,SAAkB,EAAE,GAAsD;QAChG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;QACnB,GAAG,CAAC,QAAQ,qCAA2B,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAES,cAAc;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,OAAO,wBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IACrE,CAAC;IACD,yBAAyB;IAClB,cAAc,CAAC,EAAiB;QACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IAChC,SAAS,KAAW,CAAC;IACrB,OAAO;QACZ,uFAAuF;QACvF,IAAI,SAAS,KAAK,qBAAS,CAAC,SAAS,CAAC,UAAU;YAC9C,OAAO,IAAI,CAAC;QACd,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,UAAU,CAAC,EAAiB;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC5C,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBACtD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAES,YAAY;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,GAAG,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,kCAAkC;IACtG,CAAC;IAES,cAAc;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,SAAS,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,SAAS,KAAK,GAAG;YACnB,OAAO,SAAS,CAAC;QACnB,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC7B,OAAO,IAAI,wBAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,CAAC;IAEe,cAAc;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,EAAE,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,sCAAsC;IACtB,OAAO,CAAC,GAAiB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,aAAa;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,UAAW,SAAQ,cAAc;IACrC,IAAW,UAAU,KAAK,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,eAAe,KAAa,OAAO,MAAM,CAAC,CAAC,CAAC;IAE5C,UAAU,CAAC,OAAwB,EAAE,SAAkB;QACrE,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC/E,OAAO;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,CAAC,GAA6B,EAAE,EAAE;YACvD,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,kBAAkB,CAAC;YACrC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACpB,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC;YACnC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,SAAS,GAAG,sBAAsB,CAAC;YACvC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,EAAE,CAAC;YAEb,IAAI,GAAG,GAAG,wBAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACvD,IAAI,SAAS,KAAK,GAAG;gBACnB,GAAG,GAAG,wBAAQ,CAAC,KAAK,EAAE,CAAC;;gBAEvB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAErB,MAAM,QAAQ,GAAG,CAAC,IAAI,uBAAO,EAAE,EAAE,IAAI,uBAAO,EAAE,CAAC,CAAC;YAChD,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAElD,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,CAAC,CAAC;QACF,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAEe,UAAU,CAAC,EAAiB;QAC1C,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,OAAO;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,OAAO,KAAK,CAAC;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,IAAI,SAAS,KAAK,IAAI;YACpB,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,YAAY,CAAC,2BAAY,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,SAAS,KAAK,QAAQ;YACxB,OAAO,KAAK,CAAC;QAEf,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,MAAM,GAAc,IAAI,KAAK,CAAU,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,eAAe,GAAG,yBAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC3C,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC9C,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;IACA,cAAc,CAAC,EAAiB,EAAE,UAAmB;QACnE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QACf,OAAO,EAAE,CAAC,UAAU,IAAI,kBAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC;IAC7D,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,QAAS,SAAQ,iBAAiB;IACnB,YAAY,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC7B,aAAa,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC9B,cAAc,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC/B,WAAW,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC5B,cAAc,GAAG,IAAI,uBAAO,EAAE,CAAC;IACxC,WAAW,CAAW;IACtB,cAAc,GAAG,GAAG,CAAC;IAC/B,IAAW,UAAU,KAAK,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,eAAe,KAAK,OAAO,qBAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAEvE,gBAAgB,CAAC,SAAkB,EAAE,GAAsD;QAChG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;QACnB,GAAG,CAAC,QAAQ,qCAA2B,CAAC,CAAC,gGAAgG;QACzI,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,UAAU,CAAC,OAAwB,EAAE,QAAiB;QACpE,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC5F,OAAO;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACzE,MAAM,WAAW,GAAG,MAAM,GAAG,GAAG,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC5C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1C,MAAM,cAAc,GAAG,CAAC,GAA6B,EAAE,EAAE;YACvD,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC;YACnC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,SAAS,GAAG,sBAAsB,CAAC;YACvC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC;gBAC9B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;gBAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAC7B,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,CAAC,CAAC;QACF,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAEM,UAAU,CAAC,EAAiB;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC5C,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;gBACtD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE7C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;QAExC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU;YACtC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,OAAO,CAAC,GAAiB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,OAAO,KAAK,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa;QAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAES,YAAY;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,GAAG,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,kCAAkC;IAC1F,CAAC;IAEM,cAAc,CAAC,EAAiB;QACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAEvC,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE,mBAAmB;YAC1F,OAAO,KAAK,CAAC;QAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxC,IAAI,SAAS,KAAK,QAAQ;YACxB,OAAO,KAAK,CAAC;QAEf,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACb,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACb,IAAI,SAAS,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,2BAAY,CAAC,SAAS,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;YACZ,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,yBAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAc,EAAE,wBAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtJ,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;YACxC,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,wBAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACvE,yBAAS,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,uBAAU,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACvD,OAAO,KAAK,CAAC;QAEf,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU;YAChC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,gEAAgE;QAEpG,OAAO,uBAAU,CAAC,OAAO,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;IACzD,CAAC;IAED,gBAAgB;IACA,cAAc,CAAC,EAAiB,EAAE,UAAmB;QACnE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;QACvB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,KAAK,CAAC;QACf,OAAO,EAAE,CAAC,UAAU,IAAI,kBAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC;IAC7D,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,cAAc;IAGC;IAFX,QAAQ,GAAG,CAAC,CAAC;IACL,SAAS,GAAG,yBAAS,CAAC,cAAc,EAAE,CAAC;IACvD,YAAmB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAAI,CAAC;IAEnC,IAAI,CAAC,OAAe;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAEM,SAAS,CAAC,MAAiB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEjF,gBAAgB,CAAC,MAAiB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,yEAAyE;QACrG,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,YAAY,CAAC,MAAc;QAChC,MAAM,EAAE,GAAG,uBAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,yBAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAEM,kCAAkC,CAAC,UAAkB;QAC1D,MAAM,UAAU,GAAG,qBAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,cAAc,GAAG,qBAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,GAAG,KAAK,UAAU;YACpB,OAAO,GAAG,CAAC;QAEb,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,wBAAQ,CAAC,KAAK,EAAE,CAAC;QAEjC,IAAI,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;QAChD,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC;YACf,SAAS,IAAI,CAAC,CAAC,CAAC;QAElB,IAAI,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,UAAU;YACjC,OAAO,UAAU,CAAC,CAAC,yBAAyB;QAC9C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9E,OAAO,UAAU,CAAC,CAAC,8BAA8B;QACnD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;YACtD,OAAO,GAAG,CAAC,CAAC,uBAAuB;QAErC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;QACnD,QAAQ,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC;QAChF,OAAO,QAAQ,CAAC,CAAC,4DAA4D;IAC/E,CAAC;IAEM,0BAA0B,CAAC,WAAqB,EAAE,QAAe,EAAE,MAAkB;QAC1F,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU;YAChC,OAAO,yBAAS,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;QAChC,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,uCAAuC;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,uCAAuC;QAChE,MAAM,QAAQ,GAAG,wBAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACtE,WAAW,CAAC,CAAC,GAAG,wBAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1E,WAAW,CAAC,CAAC,GAAG,wBAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;QAC1D,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,SAAS,KAAK,UAAU;YAC1B,OAAO,yBAAS,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,qBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC,CAAC;QACxF,MAAM,WAAW,GAAG,wBAAQ,CAAC,0BAA0B,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;QACtF,IAAI,SAAS,KAAK,WAAW;YAC3B,OAAO,yBAAS,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,WAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,8BAA8B,GAAG,UAAU,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,wBAAQ,CAAC,0BAA0B,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,qBAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QACrG,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO,yBAAS,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,sCAAsC,GAAG,SAAS,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;QAC9G,OAAO,yBAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,sCAAsC,EAAE,MAAM,CAAC,CAAC;IACjH,CAAC;IAEM,yBAAyB,CAAC,OAAe,EAAE,SAAiB,EAAE,MAAkB;QACrF,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU;YAChC,OAAO,yBAAS,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,SAAS,KAAK,UAAU;YAC1B,OAAO,yBAAS,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,qBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,kCAAkC,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3G,MAAM,WAAW,GAAG,wBAAQ,CAAC,0BAA0B,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;QACtF,IAAI,SAAS,KAAK,WAAW;YAC3B,OAAO,yBAAS,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,WAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,8BAA8B,GAAG,UAAU,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,wBAAQ,CAAC,0BAA0B,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,qBAAK,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtH,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO,yBAAS,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,sCAAsC,GAAG,SAAS,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,CAAC;QAC9G,OAAO,yBAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,sCAAsC,EAAE,MAAM,CAAC,CAAC;IACjH,CAAC;IAEM,4BAA4B,CAAC,QAAkB,EAAE,iBAA0B,EAAE,MAAkB;QACpG,MAAM,MAAM,GAAc,IAAI,KAAK,CAAU,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,uBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,uBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,uBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,wCAAwC;YAC7H,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,wBAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,wBAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAErC,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,wBAAQ,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACpC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,yBAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAEM,gBAAgB,CAAC,WAAqB,EAAE,cAAwB,EAAE,QAAe,EAAE,iBAA0B;QAClH,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QACxF,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACtE,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAEM,WAAW,CAAC,cAAwB,EAAE,gBAAwB,EAAE,gBAAwB,EAAE,iBAA0B;QACzH,MAAM,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QACvF,MAAM,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QACxF,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;IAEM,GAAG,CAAC,kBAA0B,EAAE,gBAAwB;QAC7D,MAAM,MAAM,GAAG,IAAI,wBAAQ,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,OAAe,EAAE,SAAiB,EAAE,eAAuB,EAAE,iBAA0B;QACnG,MAAM,MAAM,GAAG,IAAI,wBAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAClE,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,SAAiB,IAAU,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAE7H,kCAAkC;IAC3B,YAAY;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YAClC,OAAO;QACT,MAAM,MAAM,GAAG,kCAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7E,IAAI,SAAS,KAAK,MAAM;YACtB,OAAO;QACT,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;QAClD,yBAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/F,CAAC;CACF;AAED,mEAAmE;AACnE,MAAe,YAAa,SAAQ,cAAc;IACxC,YAAY,GAAG,KAAK,CAAC;IAGb,eAAe,KAAK,OAAO,qBAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,oBAAoB,KAAK,OAAO,2BAAY,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5D,qBAAqB,KAAK,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAE/C,eAAe;QACpB,MAAM,KAAK,GAAG,qBAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,0BAAkB,CAAC;YAC/F,KAAK,CAAC,aAAa,CAAC,CAAC,2BAAmB,CAAC,4BAAoB,CAAC;IAClE,CAAC;IAED,2BAA2B;IACX,OAAO;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,OAAO,KAAK,CAAC;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAE7D,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClC,IAAI,SAAS,KAAK,EAAE;gBAClB,OAAO,KAAK,CAAC;YACf,MAAM,KAAK,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC;YACnC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,cAAc;QAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,YAAY;YACnB,OAAO;QACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,OAAO;QAET,MAAM,SAAS,GAAG,2BAAY,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,qBAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClF,yHAAyH;YACzH,kGAAkG;YAClG,mIAAmI;YACnI,oEAAoE;YACpE,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,qBAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,2BAAY,CAAC,cAAc;YAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAEzC,EAAE,CAAC,oBAAoB,EAAE,CAAC;IAC5B,CAAC;IAEe,UAAU,CAAC,OAAwB,EAAE,QAAiB;QACpE,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC5F,OAAO;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC5C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1C,MAAM,cAAc,GAAG,CAAC,GAA6B,EAAE,EAAE;YACvD,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,SAAS,GAAG,sBAAsB,CAAC;YACvC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACjC,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,CAAC;QACF,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,6HAA6H;AAC7H,MAAM,eAAgB,SAAQ,YAAY;IAChC,eAAe,CAAiB;IAChC,cAAc,GAAG,CAAC,CAAC;IACnB,WAAW,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC5B,cAAc,CAAgC;IAC9C,YAAY,CAAgB;IAC5B,eAAe,CAAgB;IACpB,cAAc,GAAG,IAAI,wBAAQ,EAAE,CAAC;IAChC,YAAY,GAAG,IAAI,wBAAQ,EAAE,CAAC;IACvC,aAAa,CAAS;IACtB,YAAY,CAAgB;IAC5B,YAAY,CAAgB;IAC5B,UAAU,CAAgB;IAC1B,aAAa,GAAG,KAAK,CAAC;IACtB,UAAU,GAAG,KAAK,CAAC;IACnB,aAAa,GAAG,KAAK,CAAC;IACtB,gBAAgB,GAAG,KAAK,CAAC;IACzB,0BAA0B,CAAiB;IAC3C,mCAAmC,CAAiB;IACpD,iCAAiC,CAAiB;IAE5D,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,oEAAoE;QACpE,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAS,CAAC,CAAC;IACrE,CAAC;IAED,IAAW,UAAU,KAAqB,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9D,eAAe,KAAa,OAAO,qBAAS,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAEtE,gBAAgB,CAAC,SAAkB,EAAE,GAAsD;QACzG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;QACnB,GAAG,CAAC,QAAQ,qCAA2B,CAAC,CAAC,gGAAgG;QACzI,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,cAAc;QAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QACpE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAClE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,uBAAO,CAAC,UAAU,EAAE,EAAE,cAAc,CAAC,WAAW,CAAC;YACrF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,yEAAyE;QACvH,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEe,SAAS;QACvB,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,SAAS,KAAK,EAAE,IAAI,QAAQ,CAAC,kBAAkB,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;YAClE,EAAE,CAAC,SAAS,CAAC,uBAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,kEAAkE;YAC/G,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,8FAA8F;YAC9F,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe;gBACxD,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;;gBAE/B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,MAAe;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,SAAS,KAAK,IAAI,CAAC,mCAAmC,EAAE,CAAC;gBAC3D,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;gBACvF,IAAI,CAAC,mCAAmC,GAAG,SAAS,CAAC;YACvD,CAAC;YACD,IAAI,SAAS,KAAK,IAAI,CAAC,iCAAiC,EAAE,CAAC;gBACzD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;gBACvF,IAAI,CAAC,iCAAiC,GAAG,SAAS,CAAC;YACrD,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,2BAAY,CAAC,sBAAsB;YACtC,OAAO;QAET,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,qIAAqI;QACrI,iIAAiI;QACjI,IAAI,SAAS,KAAK,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClD,IAAI,CAAC,0BAA0B,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5E,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,mCAAmC,EAAE,CAAC;YAC3D,IAAI,CAAC,mCAAmC,GAAG,GAAG,EAAE;gBAC9C,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,SAAS,KAAK,qBAAS,CAAC,SAAS,CAAC,UAAU;oBAC1E,KAAK,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACxC,CAAC,CAAC;YACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,iCAAiC,EAAE,CAAC;YACzD,IAAI,CAAC,iCAAiC,GAAG,CAAC,EAAS,EAAE,EAAE;gBACrD,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,SAAS,KAAK,qBAAS,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,EAAmB,CAAC;oBACvH,KAAK,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACxC,CAAC,CAAC;YACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,SAAS,KAAK,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClD,QAAQ,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAC1F,IAAI,CAAC,0BAA0B,GAAG,SAAS,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,KAAK,QAAQ,CAAC,kBAAkB,IAAI,SAAS,KAAK,QAAQ,CAAC,eAAe;YAChF,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAEe,UAAU,CAAC,EAAiB;QAC1C,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,+BAA+B,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QAEf,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,SAAS,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,UAAU;YACpC,OAAO,IAAI,CAAC;QAEd,IAAI,kBAAW,CAAC,KAAK,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,+CAA+C;QACzG,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,EAAE,CAAC,SAAS,CAAC,uBAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,gEAAgE;QAC/G,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,cAAc,CAAC,EAAiB;QAC9C,IAAI,kBAAW,CAAC,KAAK,KAAK,EAAE,CAAC,WAAW;YACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;;YAErE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,2EAA2E;QACtJ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAE5B,OAAO,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAEe,oBAAoB;QAClC,MAAM,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK,2BAAY,CAAC,kBAAkB;YACvC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAE5E,MAAM,WAAW,GAAG,wBAAQ,CAAC,KAAK,CAAC,2BAAY,CAAC,kBAAkB,GAAG,CAAC,2BAAY,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9H,MAAM,eAAe,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAErF,OAAO,iBAAiB,GAAG,eAAe,CAAC;IAC7C,CAAC;IAES,sBAAsB,KAAK,OAAO,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,qDAAqD;IAC3H,sBAAsB,KAAK,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAEjE,iBAAiB;QACzB,MAAM,aAAa,GAAG,wBAAQ,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE/D,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClC,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,IAAI,wBAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;YAC5F,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACzD,IAAI,IAAI,CAAC,aAAa;gBACpB,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;;gBAEzD,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5D,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,aAAa,CAAC,CAAC;QACtE,OAAO,aAAa,CAAC;IACvB,CAAC;IAES,kBAAkB;QAC1B,MAAM,YAAY,GAAG,wBAAQ,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE/D,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClC,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,IAAI,wBAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;YAC5F,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC3D,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC3D,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU;YAC1C,OAAO,YAAY,CAAC;QAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC1D,YAAY,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAES,uBAAuB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,SAAS,CAAC;QACnB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,oBAAoB,CAAC,EAAY,EAAE,KAAc;QACvD,MAAM,WAAW,GAAG,4BAAY,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,uBAAS,CAAC,CAAC;QACvC,MAAM,GAAG,GAAc,EAAE,CAAC;QAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,uBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,uBAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,uBAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEvC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1B,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,aAAK,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,EAAE;YACjE,IAAI,SAAS,KAAK,MAAM;gBACtB,OAAO;YAET,MAAM,MAAM,GAAG,uBAAO,CAAC,UAAU,EAAE,CAAC;YACpC,MAAM,CAAC,WAAW,CAAC,uBAAO,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrH,MAAM,CAAC,WAAW,CAAC,uBAAO,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvH,MAAM,SAAS,GAAG,uBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/C,KAAK,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;gBACxD,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC;oBAC5B,SAAS,CAAC,6BAA6B;gBAEzC,MAAM,aAAa,GAAG,EAAE,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClI,IAAI,SAAS,KAAK,aAAa;oBAC7B,SAAS;gBAEX,IAAI,CAAC,KAAK,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;oBAClC,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;wBACtC,MAAM,KAAK,GAAG,CAAC,2BAAY,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,2BAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;wBAC/H,IAAI,CAAC,cAAc,GAAG,4CAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,wBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;wBACnF,YAAY,GAAG,2BAAY,CAAC,eAAe,CAAC;oBAC9C,CAAC;yBAAM,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;wBAChF,IAAI,OAAO,EAAE,OAAO,CAAC;wBACrB,MAAM,UAAU,GAAG,wBAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;wBACvE,MAAM,QAAQ,GAAG,4CAA4B,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;wBAEhF,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;4BAC3B,QAAQ,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;4BACzC,QAAQ,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,wBAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;4BAE9F,MAAM,QAAQ,GAA0B,EAAE,CAAC;4BAC3C,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;4BAEpE,KAAK,MAAM,cAAc,IAAI,QAAQ,EAAE,CAAC;gCACtC,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,2BAAY,CAAC,aAAa;oCAC3I,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC;4BACtC,CAAC;4BAED,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gCAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gCAClC,QAAQ,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,2BAAY,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;gCAElG,MAAM,QAAQ,GAA0B,EAAE,CAAC;gCAC3C,IAAI,CAAC,YAAY,CAAC,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gCAEpE,KAAK,MAAM,cAAc,IAAI,QAAQ,EAAE,CAAC;oCACtC,IAAI,SAAS,KAAK,OAAO,IAAI,cAAc,CAAC,QAAQ,GAAG,OAAO;wCAC5D,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC;gCACtC,CAAC;gCAED,IAAI,SAAS,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;oCAChF,OAAO,GAAG,CAAC,CAAC,CAAC,wEAAwE;4BACzF,CAAC;wBACH,CAAC;wBAED,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;4BACxE,yGAAyG;4BACzG,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;4BAC3E,IAAI,SAAS,KAAK,YAAY,IAAI,YAAY,YAAY,4BAAY;gCACpE,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;wBACrD,CAAC;6BAAM,CAAC;4BACN,qCAAqC;4BACrC,YAAY,GAAG,IAAI,CAAC;wBACtB,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;oBACvC,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,CAAC,+BAA+B,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;oBACtG,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,+BAA+B,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;oBAErG,MAAM,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;oBAChF,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;oBAEhE,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;wBAC7C,oCAAoC;wBACpC,WAAW,CAAC,YAAY,CAAC,sBAAsB,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;wBAC5F,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,+EAA+E;QAC/E,IAAI,CAAC,KAAK,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;YAClC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,YAAY,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,wBAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG,4CAA4B,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,2BAAY,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;YAE7H,MAAM,UAAU,GAA0B,EAAE,CAAC;YAC7C,IAAI,SAAS,KAAK,SAAS;gBACzB,WAAW,CAAC,6BAA6B,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEnE,IAAI,MAAM,CAAC;YACX,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;oBACjD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,CAAC;YAED,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;gBAErE,IAAI,KAAK,GAAG,qBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,GAAG,qBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC3F,MAAM,QAAQ,GAAG,qBAAK,CAAC,MAAM,CAAC,KAAK,EAAE,wBAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC7E,MAAM,OAAO,GAAG,uBAAO,CAAC,MAAM,EAAE,CAAC;oBAEjC,IAAI,SAAS,KAAK,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC;wBAC/E,WAAW,CAAC,cAAc,EAAE,CAAC;wBAC7B,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBAC9B,WAAW,CAAC,cAAc,EAAE,CAAC;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;QACnC,IAAI,2BAAY,CAAC,eAAe;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;IAC7C,CAAC;IAEO,iBAAiB,CAAC,EAAY,EAAE,MAAsB,EAAE,aAAuB;QACrF,IAAI,CAAC,2BAAY,CAAC,cAAc;YAC9B,OAAO,CAAC,CAAC;QAEX,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YAClC,OAAO,CAAC,CAAC;QAEX,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,uBAAS,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,SAAS;gBACvC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACnC,IAAI,GAAG,KAAK,aAAa,CAAC,CAAC;gBACzB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,yDAAyD;QAC9F,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEjC,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YAChE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,uBAAS,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACpD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAElD,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,IAAI,GAAG;YACtG,OAAO,CAAC,CAAC;QAEX,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,4CAA4B,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAChF,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,OAAO,GAAG,wBAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,+EAA+E;QAExH,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YACtB,IAAI,SAAS,CAAC;YACd,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpD,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC;oBACtC,SAAS;gBAEX,MAAM,MAAM,GAAG,wBAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBACrE,IAAI,SAAS,KAAK,SAAS;oBACzB,SAAS,GAAG,MAAM,CAAC;qBAChB,IAAI,MAAM,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE;oBACjD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;YAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,wBAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACxD,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,GAAG,OAAO;oBACxE,OAAO,CAAC,CAAC,CAAC,4BAA4B;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,2BAAY,CAAC,eAAe,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc;YACpE,OAAO,CAAC,CAAC;QAEX,MAAM,UAAU,GAAG,wBAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,4CAA4B,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACzE,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErG,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,uBAAO,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,wBAAQ,CAAC,MAAM,EAAE,CAAC;YAEzC,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;gBACnC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;oBACnC,SAAS,CAAC,2BAA2B;gBAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC1E,MAAM,MAAM,GAAG,wBAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAElE,IAAI,MAAM,CAAC,SAAS,EAAE,GAAG,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC;oBACpD,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACrC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,IAAI,cAAc,CAAC,SAAS,EAAE,IAAI,2BAAY,CAAC,cAAc,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC;gBAChI,OAAO,CAAC,CAAC,CAAC,2BAA2B;YAEvC,MAAM,aAAa,GAAG,yBAAS,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAClE,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7E,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAES,iBAAiB,CAAC,WAAmB;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzB,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC7C,IAAI,SAAS,KAAK,KAAK;gBACrB,OAAO;YACT,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE/C,IAAI,GAAG,KAAK,YAAY,CAAC,SAAS,EAAE,IAAI,GAAG,KAAK,aAAa,CAAC,SAAS,EAAE,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa;YAC3G,OAAO;QAET,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,oFAAoF;QACpH,MAAM,OAAO,GAAG,qBAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,kBAAW,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAQ,CAAC,IAAI,CAAC;YAC3G,OAAO,CAAC,WAAW,CAAC,eAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,mEAAmE;QAEzG,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;gBACrF,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa;YACvC,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAE7B,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAClD,CAAC;IAES,mBAAmB,CAAC,EAAkB;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,IAAI,CAAC,eAAe;YACtB,OAAO;QAET,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,EAAE,CAAC,SAAS,CAAC,uBAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,iDAAiD;IACjG,CAAC;IAEO,gBAAgB;QACtB,2BAAY,CAAC,cAAc,GAAG,CAAC,2BAAY,CAAC,cAAc,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAC3E,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;YACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IACnD,CAAC;IAEO,iBAAiB;QACvB,2BAAY,CAAC,eAAe,GAAG,CAAC,2BAAY,CAAC,eAAe,CAAC;QAC7D,IAAI,2BAAY,CAAC,eAAe,IAAI,CAAC,2BAAY,CAAC,cAAc;YAC9D,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAC3E,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;YACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IACnD,CAAC;IAEO,kBAAkB,CAAC,QAAkB;QAC3C,IAAI,SAAS,KAAK,QAAQ;YACxB,2BAAY,CAAC,kBAAkB,GAAG,CAAC,CAAC;;YAEpC,2BAAY,CAAC,kBAAkB,GAAG,wBAAQ,CAAC,KAAK,CAAC,2BAAY,CAAC,kBAAkB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjH,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;YACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IACnD,CAAC;IAEe,OAAO,CAAC,EAAgB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YACrD,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,IAAI,SAAS,KAAK,WAAW,IAAI,cAAc,CAAC,WAAW,KAAK,WAAW,CAAC,UAAU;YACpF,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,yCAAyC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,QAAuB;QAC7C,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM;YACxD,OAAO,KAAK,CAAC;QAEf,QAAQ,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,KAAK,YAAY,CAAC;YAClB,KAAK,GAAG,CAAC;YACT,KAAK,WAAW,CAAC;YACjB,KAAK,GAAG,CAAC;YACT,KAAK,SAAS,CAAC;YACf,KAAK,GAAG,CAAC;YACT,KAAK,WAAW,CAAC;YACjB,KAAK,GAAG,CAAC;YACT,KAAK,UAAU,CAAC;YAChB,KAAK,GAAG,CAAC;YACT,KAAK,QAAQ,CAAC;YACd,KAAK,GAAG;gBACN,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,SAAS,KAAK,EAAE;YAC9C,OAAO,KAAK,CAAC;QAEf,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,oBAAa,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,kBAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACrJ,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,eAAe,CAAC,QAAiB,EAAE,QAAuB;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,gDAAgD;YAC/E,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxE,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM;YACrC,OAAO,KAAK,CAAC;QAEf,QAAQ,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,KAAK,YAAY,CAAC;YAClB,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,wBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,wBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;YACd,KAAK,SAAS,CAAC;YACf,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,wBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,wBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;YACd,KAAK,UAAU,CAAC;YAChB,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,wBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;YACd,KAAK,QAAQ,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,wBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,QAAQ;oBACV,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,QAAQ;oBACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,QAAQ;oBACV,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,QAAQ;oBACV,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,KAAK,GAAG;gBACN,IAAI,QAAQ;oBACV,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAES,qBAAqB,CAAC,EAAY;QAC1C,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QAClF,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,wBAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,CAAC;IAES,qBAAqB,CAAC,EAAY;QAC1C,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;QACpC,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,sBAAsB,CAAC,EAAY;QAC3C,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;QACpC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,qBAAqB,CAAC,UAAoC;QAClE,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,UAAU,CAAC,QAAQ;YAC/D,OAAO,SAAS,CAAC;QACnB,OAAO,mBAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACrG,CAAC;IAES,cAAc,CAAC,UAAoC,EAAE,MAAc;QAC3E,MAAM,MAAM,GAAG,wBAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU;YAC/B,OAAO,MAAM,CAAC;QAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,SAAS,KAAK,QAAQ;YACxB,OAAO,MAAM,CAAC;QAEhB,IAAI,SAAS,KAAK,UAAU,EAAE,QAAQ;YACpC,OAAO,MAAM,CAAC;QAEhB,MAAM,SAAS,GAAG,mBAAY,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC3I,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO,MAAM,CAAC;QAEhB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACvD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACvD,MAAM,OAAO,GAAG,mBAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,wBAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE3D,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,eAAe;YACvC,OAAO,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,eAAe;YACvC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAE/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEe,YAAY,CAAC,EAAgB;QAC3C,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM;YACnG,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE7F,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,SAAS,KAAK,QAAQ;YACxB,OAAO,KAAK,CAAC;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAExD,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACzC,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACzC,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,UAAU,CAAC,EAAgB;QACzC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,mBAAY,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACzK,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,mBAAY,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACzK,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,OAAO,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YACtC,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAEtC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,GAAiB;QACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU;YACjE,OAAO,KAAK,CAAC;QACf,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAgB;QAClD,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAEe,WAAW,CAAC,EAAgB;QAC1C,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC;YACrI,OAAO,KAAK,CAAC;QAEf,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,mBAAY,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACtK,OAAO,GAAG,IAAI,CAAC;QAEjB,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,mBAAY,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACtK,OAAO,GAAG,IAAI,CAAC;QAEjB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,EAAE,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,gBAAgB,CAAC,EAAgB,EAAE,QAAsB;QACvE,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO,KAAK,CAAC;QAEf,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY;YACpE,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAEe,UAAU,CAAC,EAAgB;QACzC,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,WAAW;YAC/E,OAAO,KAAK,CAAC;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC;YACpC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,oEAAoE;QAEhH,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC;YACpC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,sEAAsE;QAElH,OAAO,KAAK,CAAC;IACf,CAAC;IAEe,UAAU,CAAC,OAAwB,EAAE,QAAiB;QACpE,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAC1D,OAAO;QAET,IAAI,2BAAY,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC5C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAC1C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAE1C,MAAM,mBAAmB,GAAG,CAAC,GAA6B,EAAE,EAAE;gBAC5D,MAAM,SAAS,GAAG,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;oBACjC,MAAM,GAAG,GAAG,SAAS,CAAC;oBACtB,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;oBACtB,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;oBACtB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClB,GAAG,CAAC,SAAS,EAAE,CAAC;oBAChB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACnB,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACrB,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC7B,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACrB,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC9B,GAAG,CAAC,MAAM,EAAE,CAAC;oBACb,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC,CAAC;gBAEF,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;gBAC1B,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;gBAClB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;gBACtB,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAElB,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAChE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;gBAClB,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAElB,IAAI,2BAAY,CAAC,eAAe,EAAE,CAAC;oBACjC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;oBAC1B,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;oBAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACvB,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBAChE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;oBAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC;YACF,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC,CAAC,KAAK,2BAAY,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YACnG,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,CAAC,2BAAY,CAAC,kBAAkB,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3F,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC5C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAC1C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAE5D,MAAM,eAAe,GAAG,CAAC,GAA6B,EAAE,EAAE;gBACxD,MAAM,SAAS,GAAG,GAAG,EAAE;oBACrB,MAAM,GAAG,GAAG,SAAS,CAAC;oBACtB,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;oBACtB,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,GAAG,CAAC,SAAS,EAAE,CAAC;oBAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACrB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACvB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,MAAM,EAAE,CAAC;oBACb,GAAG,CAAC,SAAS,EAAE,CAAC;oBAChB,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;oBACzB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACpB,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACvB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,CAAC,CAAC;gBAEF,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;gBAC1B,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;gBAClB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;gBACtB,SAAS,EAAE,CAAC;gBAEZ,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;gBAC1B,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;gBAClB,SAAS,EAAE,CAAC;YACd,CAAC,CAAC;YACF,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEhE,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;YACpD,OAAO;QAET,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAEpE,MAAM,cAAc,GAAG,CAAC,GAA6B,EAAE,MAAe,EAAE,EAAE;YACxE,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,SAAS,GAAG,uBAAuB,CAAC;YACxC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,EAAE,CAAC;YAEX,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;YACpB,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;YACtB,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;YAEtB,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,iBAAiB,CAAC;YACpC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC;YAC5B,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;YACtB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3E,GAAG,CAAC,MAAM,EAAE,CAAC;YAEb,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC1B,GAAG,CAAC,SAAS,GAAG,sBAAsB,CAAC;YACvC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YACrG,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,CAAC,GAA6B,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrF,MAAM,eAAe,GAAG,CAAC,GAA6B,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEtF,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;QAExF,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;IAC1F,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,QAAS,SAAQ,YAAY;IACzB,eAAe,CAAiB;IAExC,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,oEAAoE;QACpE,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAS,CAAC,CAAC;IACrE,CAAC;IACD,IAAW,UAAU,KAAqB,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,UAAU,CAAC,EAAiB;QAC1C,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAES,iBAAiB,CAAC,WAAmB;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzB,QAAQ,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC/B;gBACE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,CAAC,CAAC;gBAChD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM;YACR;gBACE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM;YACR;gBACE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;gBACxG,MAAM;QACV,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,gEAAgE;AAChE,MAAM,OAAQ,SAAQ,YAAY;IACxB,eAAe,CAAiB;IAExC,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,oEAAoE;QACpE,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAS,CAAC,CAAC;IACrE,CAAC;IACD,IAAW,UAAU,KAAqB,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,UAAU,CAAC,EAAiB;QAC1C,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAES,iBAAiB,CAAC,WAAmB;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzB,QAAQ,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC/B;gBACE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,CAAC,CAAC;gBAChD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM;YACR;gBACE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,KAAK,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM;YACR;gBACE,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;gBACxD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,CAAC,CAAC;gBACpE,MAAM;QACV,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;GAEG;AACH,MAAa,WAAY,SAAQ,SAAS;IACjC,MAAM,CAAU,MAAM,GAAG,UAAU,CAAC;IACpC,MAAM,CAAU,QAAQ,GAAG,aAAa,CAAC;IAChD,YAAY,EAA8B,EAAE,OAAO,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK;QACrF,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC7D,CAAC;IACD,IAAuB,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,4BAA4B,KAAW,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;;AAPnH,kCAQC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,SAAS;IACpC,MAAM,CAAU,MAAM,GAAG,aAAa,CAAC;IACvC,MAAM,CAAU,QAAQ,GAAG,gBAAgB,CAAC;IACnD,YAAY,EAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK;QACzE,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,GAAG,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACnH,CAAC;IACD,IAAuB,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,4BAA4B,KAAW,IAAI,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;;AAPtH,wCAQC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,SAAS;IAClC,MAAM,CAAU,MAAM,GAAG,WAAW,CAAC;IACrC,MAAM,CAAU,QAAQ,GAAG,sBAAsB,CAAC;IACzD,YAAY,EAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK;QACzE,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACnF,CAAC;IACD,IAAuB,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,4BAA4B,KAAW,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;;AAPpH,oCAQC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,SAAS;IACpC,MAAM,CAAU,MAAM,GAAG,aAAa,CAAC;IACvC,MAAM,CAAU,QAAQ,GAAG,WAAW,CAAC;IAC9C,YAAY,EAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK;QACzE,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAChE,CAAC;IACD,IAAuB,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,4BAA4B,KAAW,IAAI,CAAC,qBAAqB,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;;AAPtH,wCAQC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,SAAS;IAClC,MAAM,CAAU,MAAM,GAAG,WAAW,CAAC;IACrC,MAAM,CAAU,QAAQ,GAAG,WAAW,CAAC;IAC9C,YAAY,EAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK;QACzE,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACnF,CAAC;IACD,IAAuB,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,4BAA4B,KAAW,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;;AAPpH,oCAQC;AAED;;;;;;;GAOG;AACH,MAAa,eAAgB,SAAQ,SAAS;IACrC,MAAM,CAAU,MAAM,GAAG,kBAAkB,CAAC;IAC5C,MAAM,CAAU,QAAQ,GAAG,WAAW,CAAC;IAC9C,YAAY,EAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK;QACzE,MAAM,QAAQ,GAAG,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2DAA2D;QAC1I,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAChG,CAAC;IAED,IAAuB,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,4BAA4B,KAAW,IAAI,CAAC,qBAAqB,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC;IAEzG,qBAAqB,CAAC,YAAoB;QACxD,MAAM,eAAe,GAAG,+BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1G,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAS,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QACzJ,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAEhE,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,yBAAyB,CAAC,+BAAc,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACtL,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,yBAAyB,CAAC,+BAAc,CAAC,iBAAiB,EAAE,QAAQ,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7J,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,yBAAyB,CAAC,+BAAc,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,gCAAgC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7K,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,yBAAyB,CAAC,+BAAc,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,gCAAgC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACvL,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,yBAAyB,CAAC,+BAAc,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,gCAAgC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7K,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,yBAAyB,CAAC,+BAAc,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,mCAAmC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAChL,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,mCAAmC,CAAC,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE1L,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,CAAC,gCAAgC,CAAC,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5L,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,SAAS,CAAC,gCAAgC,CAAC,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5L,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,+BAA+B,CAAC,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QACvL,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,+BAA+B,CAAC,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QACvL,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7I,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,+BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,qBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;;AA3CH,0CA4CC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,SAAS;IAClC,MAAM,CAAU,MAAM,GAAG,WAAW,CAAC;IACrC,MAAM,CAAU,QAAQ,GAAG,WAAW,CAAC;IAC9C,YAAY,EAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK;QACzE,MAAM,QAAQ,GAAG,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2DAA2D;QAC1I,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACzF,CAAC;IAED,IAAuB,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,4BAA4B,KAAW,IAAI,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;IAElG,qBAAqB,CAAC,YAAoB;QACxD,MAAM,gBAAgB,GAAgC,EAAE,CAAC;QACzD,gBAAgB,CAAC,IAAI,CAAC,+BAAc,CAAC,4BAA4B,CAAC,+BAAc,CAAC,QAAQ,EAAE,oCAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1M,gBAAgB,CAAC,IAAI,CAAC,+BAAc,CAAC,4BAA4B,CAAC,+BAAc,CAAC,OAAO,EAAE,oCAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1M,KAAK,CAAC,qBAAqB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC9D,CAAC;;AAhBH,oCAiBC;AAED;;GAEG;AACH,MAAa,WAAY,SAAQ,SAAS;IACjC,MAAM,CAAU,MAAM,GAAG,UAAU,CAAC;IACpC,MAAM,CAAU,QAAQ,GAAG,eAAe,CAAC;IAClD,YAAY,EAAkB,EAAE,OAAO,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK;QACzE,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAClF,CAAC;IAED,IAAuB,2BAA2B,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAC3D,4BAA4B,KAAW,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAEjG,qBAAqB,CAAC,YAAoB;QACxD,MAAM,eAAe,GAAgC,EAAE,CAAC;QACxD,eAAe,CAAC,IAAI,CAAC,+BAAc,CAAC,4BAA4B,CAAC,+BAAc,CAAC,QAAQ,EAAE,oCAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QACzM,eAAe,CAAC,IAAI,CAAC,+BAAc,CAAC,4BAA4B,CAAC,+BAAc,CAAC,OAAO,EAAE,oCAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QACzM,KAAK,CAAC,qBAAqB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAC7D,CAAC;;AAfH,kCAgBC;AAED;;GAEG;AACH,MAAa,WAAY,SAAQ,QAAQ;IAChC,MAAM,CAAU,MAAM,GAAG,UAAU,CAAC;IACpC,MAAM,CAAU,QAAQ,GAAG,kBAAkB,CAAC;IAC9C,OAAO,CAAU;IACjB,SAAS,CAAU;IACnB,YAAY,CAAU;IAC7B,YAAY,QAAwB,EAAE,OAAgB,EAAE,SAAS,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI;QAC3F,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEM,qBAAqB;QAC1B,MAAM,eAAe,GAAG,+BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACtH,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAChE,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5I,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,+BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,qBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,EAAE,CAAC,QAAQ;YACb,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC;QAE7H,OAAO,mBAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO;YAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,QAAQ;YACf,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACrF,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,QAAwB,EAAE,OAAgB,EAAE,SAAS,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI;QAClG,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,SAAS,CAAC,0BAA0B,CAAC,QAAQ,EAAE,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC;YAC7G,SAAS,CAAC,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,OAAO;YACT,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;;AAxDH,kCAyDC;AAED;;GAEG;AACH,MAAa,sBAAuB,SAAQ,QAAQ;IAC3C,MAAM,CAAU,MAAM,GAAG,qBAAqB,CAAC;IACtD,uFAAuF;IAChF,OAAO,CAAU;IACjB,SAAS,CAAU;IAC1B,YAAY,QAAwB,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI;QACpE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,EAAE,CAAC,QAAQ;YACb,OAAO,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC;QAE1H,OAAO,mBAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClG,IAAI,QAAQ,EAAE,CAAC;YACb,CAAC,KAAK,IAAI,EAAE;gBACV,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACzE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,QAAwB,EAAE,OAAgB,EAAE,SAAS,GAAG,IAAI;QAC5F,MAAM,KAAK,GAAG,MAAM,IAAA,oDAA+B,EAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,IAAI,eAAe,GAAG,CAAC,CAAC;gBACxB,MAAM,SAAS,GAAG,MAAM,IAAA,gDAA2B,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACrE,IAAI,SAAS,KAAK,SAAS;oBACzB,eAAe,GAAG,SAAS,CAAC;gBAC9B,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YACpF,CAAC;YAAC,MAAM,CAAC;YACT,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,QAAwB,EAAE,OAAgB,EAAE,SAAS,GAAG,IAAI,EAAE,eAAe,GAAG,CAAC;QAC9G,IAAA,uCAAkB,EAAC,QAAQ,EAAE,SAAS,EAAE,gDAA2B,CAAC,iCAAiC,GAAG,eAAe,CAAC,CAAC;QACzH,IAAI,OAAO;YACT,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;;AAnDH,wDAoDC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,QAAQ;IACtC,MAAM,CAAU,MAAM,GAAG,gBAAgB,CAAC;IACjD,kFAAkF;IAC3E,OAAO,CAAU;IACjB,SAAS,CAAU;IAC1B,YAAY,QAAwB,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI;QACpE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,EAAE,CAAC,QAAQ;YACb,OAAO,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC;QAEvH,OAAO,mBAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClG,IAAI,QAAQ;YACV,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,QAAwB,EAAE,OAAgB,EAAE,SAAS,GAAG,IAAI;QACzF,MAAM,KAAK,GAAG,MAAM,IAAA,oDAA+B,EAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,IAAI,eAAe,GAAG,CAAC,CAAC;gBACxB,MAAM,SAAS,GAAG,MAAM,IAAA,gDAA2B,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACrE,IAAI,SAAS,KAAK,SAAS;oBACzB,eAAe,GAAG,SAAS,CAAC;gBAC9B,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YAC/E,CAAC;YAAC,MAAM,CAAC;YACT,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,QAAwB,EAAE,OAAgB,EAAE,SAAS,GAAG,IAAI,EAAE,eAAe,GAAG,CAAC;QACzG,IAAA,uCAAkB,EAAC,QAAQ,EAAE,SAAS,EAAE,gDAA2B,CAAC,4BAA4B,GAAG,eAAe,EAAE,gDAA2B,CAAC,qBAAqB,CAAC,CAAC;QACvK,IAAI,OAAO;YACT,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;;AAhDH,8CAiDC;AAED;;;;GAIG;AACH,MAAa,qBAAsB,SAAQ,QAAQ;IACzC,eAAe,CAAkB;IAElC,MAAM,CAAU,MAAM,GAAG,oBAAoB,CAAC;IACrD,sFAAsF;IAC/E,OAAO,CAAU;IACjB,SAAS,CAAU;IAC1B,YAAY,QAAwB,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI;QACpE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,MAAM,KAAc,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAc,OAAO,KAAK,OAAO,SAAS,CAAC,CAAC,CAAC;IAE1D;;;;QAII;IACY,KAAK,CAAC,WAAW,CAAC,GAAG,IAAc;QACjD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,sCAAsC;YAC7D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxD,MAAM,MAAM,GAAG,0BAAY,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,eAAe,GAAG,EAAE,MAAM,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACvC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,oBAAoB,GAAG,IAAI,mCAAoB,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,IAAI,CAAC,eAAe,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC9E,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;oBACvC,MAAM,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAClG,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAC3B,MAAM,eAAe,GAAG,MAAM,IAAA,gDAA2B,EAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBACjG,IAAI,eAAe,KAAK,SAAS;4BAC/B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YACT,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YACpC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClG,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,SAAS,KAAK,IAAI,CAAC,eAAe;gBACpC,MAAM,QAAQ,CAAC,8BAA8B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,IAAI,CAAC,OAAO;YACd,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AArEH,sDAsEC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,QAAQ;IACxC,MAAM,CAAU,MAAM,GAAG,kBAAkB,CAAC;IACnD,oFAAoF;IAC7E,OAAO,CAAU;IACjB,SAAS,CAAU;IAC1B,YAAY,QAAwB,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI;QACpE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,EAAE,CAAC,QAAQ;YACb,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC;QAEzE,OAAO,mBAAY,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,gBAAgB;IACA,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClG,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,uBAAW,CAAC,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;YAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC7B,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC7D,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,gBAAgB,GAAG,IAAA,4CAAuB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAClE,CAAC,KAAK,IAAI,EAAE;oBACV,MAAM,QAAQ,CAAC,8BAA8B,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACxG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,OAAO;YACd,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;;AA3CH,kDA4CC;AAED;;GAEG;AACH,MAAa,gBAAiB,SAAQ,QAAQ;IAGE;IAFvC,MAAM,CAAU,MAAM,GAAG,eAAe,CAAC;IACzC,MAAM,CAAU,QAAQ,GAAG,qBAAqB,CAAC;IACxD,YAAY,QAAwB,EAAU,eAA+B;QAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAAnD,oBAAe,GAAf,eAAe,CAAgB;IAAqB,CAAC;IAEnF,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YACzB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,6BAAc,CAAC,GAAG,CAAC;YACtF,MAAM,OAAO,GAAG,mBAAQ,CAAC,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC;YACnF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gBAC1B,MAAM,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;gBAC/D,MAAM,eAAe,GAAG,yBAAS,CAAC,yBAAyB,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;gBACpH,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;gBACnC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACrC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBACrC,EAAE,CAAC,aAAa,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;;AAtBH,4CAuBC;AAED;;GAEG;AACH,MAAa,cAAe,SAAQ,QAAQ;IACnC,MAAM,CAAU,MAAM,GAAG,iBAAiB,CAAC;IAC3C,MAAM,CAAU,QAAQ,GAAG,kBAAkB,CAAC;IAC7C,eAAe,GAAY,KAAK,CAAC;IACjC,aAAa,GAAY,uBAAO,CAAC,MAAM,EAAE,CAAC;IAC1C,cAAc,GAAY,uBAAO,CAAC,MAAM,EAAE,CAAC;IAC3C,WAAW,CAAW;IACtB,QAAQ,GAAG,CAAC,IAAI,uBAAO,EAAE,EAAE,IAAI,uBAAO,EAAE,CAAC,CAAC;IAC1C,SAAS,GAAG,CAAC,IAAI,uBAAO,EAAE,EAAE,IAAI,uBAAO,EAAE,EAAE,IAAI,uBAAO,EAAE,EAAE,IAAI,uBAAO,EAAE,EAAE,IAAI,uBAAO,EAAE,CAAC,CAAC;IACxF,UAAU,GAAG,sBAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEnC,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEe,KAAK,CAAC,cAAc;QAClC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,EAAiB;QACrD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,CAAC;QAED,OAAO,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAEM,qBAAqB;QAC1B,MAAM,eAAe,GAAG,+BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACrL,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,gBAAS,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,gBAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAC9D,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9K,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,+BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,qBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ;YAC3B,OAAO,mBAAY,CAAC,GAAG,CAAC;QAE1B,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC9B,CAAC;aAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,IAAI,IAAI,CAAC,eAAe;gBACtB,OAAO,mBAAY,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC;YAChC,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;YACtD,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC/B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC;QAED,OAAO,mBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAiB,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,KAAK,CAAC,UAAU,CAAC,EAAgB,IAA2B,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0EAA0E;IACpM,KAAK,CAAC,gBAAgB,CAAC,EAAgB,EAAE,OAAqB;QAC5E,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC,aAAa;YAChD,MAAM,qBAAS,CAAC,SAAS,CAAC,0CAA0C,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEpF,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAY,CAAC,EAAE,CAAC;IACnE,CAAC;IAEe,KAAK,CAAC,WAAW,CAAC,EAAgB;QAChD,IAAI,IAAI,CAAC,eAAe;YACtB,OAAO,qBAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,EAAgB;QACpD,IAAI,IAAI,CAAC,eAAe;YACtB,OAAO,qBAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAgB;QAClD,IAAI,IAAI,CAAC,eAAe;YACtB,OAAO,qBAAS,CAAC,SAAS,CAAC,yBAAyB,CAAC,EAAE,EAAE,eAAQ,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC;IAEO,oBAAoB;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,SAAS,CAAC;QAEnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxC,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,2BAAY,CAAC,uBAAuB,CAAC;YACjF,OAAO,SAAS,CAAC;QAEnB,MAAM,YAAY,GAAG,EAAE,CAAC,SAAS,CAAC;QAClC,IAAI,YAAY,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC;YACvC,OAAO,SAAS,CAAC;QAEnB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEhD,IAAI,UAAU,CAAC;QACf,IAAI,UAAU,CAAC;QACf,IAAI,WAAW,GAAG,UAAU,EAAE,CAAC;YAC7B,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACrC,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACrC,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;QACvC,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC;QACrC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC;QACrC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC;QACrC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9F,OAAO;QACT,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,MAAM,KAAK,GAAG,EAAE,CAAC,4BAA4B,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5C,IAAI,SAAS,KAAK,OAAO;gBACvB,OAAO;YAET,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEpC,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,yBAAW,CAAC,YAAY,CAAC,CAAC;YAEvE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEjC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,gCAAwB,CAAC;YAC1D,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,kCAA0B,CAAC;YAC5D,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAE7C,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,KAAK,qBAAS,CAAC,SAAS,CAAC,UAAU;YACvF,OAAO,CAAC,yDAAyD;QAEnE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC1C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1C,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1C,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAE7B,MAAM,cAAc,GAAG,CAAC,GAA6B,EAAE,EAAE;YACvD,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,WAAW,GAAG,CAAC,sBAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxC,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,CAAC,CAAC;QACF,OAAO,CAAC,mBAAmB,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAClD,CAAC;IAEO,cAAc,CAAC,EAAiB,EAAE,UAAmB;QAC3D,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzH,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC;YAChC,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5C,IAAI,SAAS,KAAK,OAAO;YACvB,OAAO;QAET,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE7B,MAAM,IAAI,GAAuB;YAC/B,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;SACzD,CAAC;QAEF,IAAI,KAAe,CAAC;QACpB,IAAI,eAAe,CAAC;QACpB,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,WAAW,GAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACxE,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAEjC,MAAM,WAAW,GAAG,IAAI,mBAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzG,IAAI,UAAU,GAAG,EAAE,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;YAC5D,IAAI,SAAS,KAAK,UAAU;gBAC1B,UAAU,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;YAEvE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEtC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC;YAEjD,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAE,6CAA6C;YAC3E,MAAM,OAAO,GAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACpE,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAE,4CAA4C;YAE9F,MAAM,KAAK,GAAG,uBAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3C,KAAK,GAAG,wBAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAEvD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YAEpE,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC;YAElE,IAAI,uBAAU,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gBAChI,OAAO;YACT,eAAe,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC;YACxB,GAAG,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;YAExC,MAAM,KAAK,GAAG,uBAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3C,KAAK,GAAG,wBAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,uBAAuB;YACvB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAE9B,MAAM,SAAS,GAAG,GAAG,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAElF,yCAAyC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnF,IAAI,IAAI,KAAK,uBAAU,CAAC,OAAO;gBAC7B,OAAO;YAET,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,eAAe,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/C,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IACpE,CAAC;;AA5RH,wCA6RC;AAED,gBAAgB;AAChB,MAAa,oBAAqB,SAAQ,SAAS;IAC1C,MAAM,CAAU,MAAM,GAAG,EAAE,CAAC,CAAC,yDAAyD;IAC5E,WAAW,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC5B,aAAa,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC9B,YAAY,GAAG,IAAI,uBAAO,EAAE,CAAC;IAC7B,QAAQ,GAAG,IAAI,qBAAO,EAAE,CAAC;IAClC,eAAe,CAAY;IAC3B,cAAc,GAAG,GAAG,CAAC;IACrB,gBAAgB,GAAG,CAAC,CAAC;IACrB,WAAW,CAAY;IACvB,YAAY,GAAG,KAAK,CAAC;IACrB,SAAS,CAAc;IACvB,IAAI,CAAe;IACnB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,kBAAkB,CAAS;IAC3B,oBAAoB,GAAG,KAAK,CAAC;IAErC,mDAAmD;IAC5C,OAAO;QACZ,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW;YAChC,OAAO,IAAI,CAAC,CAAC,qBAAqB;QAEpC,oIAAoI;QACpI,2EAA2E;QAC3E,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,0BAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC5G,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEvC,2EAA2E;QAC3E,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YACzD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YACzB,IAAI,SAAS,KAAK,EAAE;gBAClB,OAAO,KAAK,CAAC;YACf,EAAE,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,CAAC,8BAA8B;QAC7C,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,SAAS,KAAK,CAAC;IAEtB,YAAY,OAAqB,EAAE,EAAgB,EAAE,mBAAmB,GAAG,KAAK;QAC9E,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAEM,OAAO,CAAC,EAAgB;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElC,MAAM,YAAY,GAAG,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACzC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,wBAAQ,CAAC,cAAc,CAAC,mBAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,mBAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACpO,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC;IAEO,gBAAgB,CAAC,EAAiB;QACxC,IAAI,SAAS,KAAK,EAAE,IAAI,GAAG,KAAK,IAAI,CAAC,cAAc;YACjD,OAAO,GAAG,CAAC;QAEb,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,GAAG,CAAC;QAEb,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7L,MAAM,SAAS,GAAG,EAAE,CAAC,gBAAgB,CAAC,2BAAY,CAAC,8BAA8B,CAAC,CAAC;QAEnF,IAAI,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,GAAG,SAAS;YAC1E,OAAO,GAAG,CAAC;QAEb,yFAAyF;QACzF,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,MAAM,YAAY,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,4EAA4E;QACrL,OAAO,wBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,eAAe,CAAC,EAAiB;QACvC,IAAI,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB;YACjE,OAAO,qBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAElC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO,qBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAElC,MAAM,SAAS,GAAG,wBAAQ,CAAC,cAAc,CAAC,mBAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,mBAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChL,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzD,IAAI,SAAS,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,qBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO;gBAC/D,OAAO,qBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,mEAAmE;YAEtG,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrG,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;YACxF,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEnE,qMAAqM;YACrM,IAAI,eAAe,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,eAAe,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC;gBACtF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,2DAA2D;gBAC1F,OAAO,qBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,kBAAkB,GAAG,qBAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,qBAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC;IACzH,CAAC;IAEO,WAAW;QACjB,MAAM,UAAU,GAAG,uBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACtH,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEO,kBAAkB,CAAC,EAAiB;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,kBAAkB,GAAG,yBAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC9F,MAAM,iBAAiB,GAAG,yBAAS,CAAC,yBAAyB,CAAC,WAAW,EAAE,wBAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,IAAI,wBAAQ,CAAC,QAAQ,CAAC,CAAC;QACrK,MAAM,cAAc,GAAG,yBAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,kBAAkB,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;QAEnF,cAAc,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrD,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEO,cAAc;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAExD,MAAM,KAAK,GAAG,2BAAY,CAAC,eAAe,CAAC,CAAC,CAAC,wBAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAQ,CAAC,0BAA0B,CAAC,KAAK,EAAE,qBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,wBAAQ,CAAC,QAAQ,CAAC;QAC3J,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAQ,CAAC,0BAA0B,CAAC,KAAK,EAAE,qBAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,wBAAQ,CAAC,QAAQ,CAAC;QAC3J,MAAM,YAAY,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,YAAY,CAAC,yBAAyB,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,qBAAK,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;QAE9B,MAAM,cAAc,GAAG,wBAAQ,CAAC,0BAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/E,IAAI,SAAS,KAAK,cAAc;YAC9B,OAAO;QAET,MAAM,cAAc,GAAG,yBAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QAC/F,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC1D,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEO,eAAe,CAAC,EAAiB;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAE5C,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,yBAAS,CAAC,oBAAoB,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAChG,MAAM,SAAS,GAAG,yBAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAElE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,eAAe,GAAG,SAAS,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAEvE,MAAM,IAAI,GAAG,EAAE,CAAC,IAAmB,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,eAAe,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,qBAAqB,GAAG,yBAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAExE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;YACjE,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,yBAAS,CAAC,yBAAyB,CAAC,SAAS,EAAE,wBAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAClH,MAAM,UAAU,GAAG,uBAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1C,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QACd,MAAM,MAAM,GAAG,yBAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACxD,SAAS,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAClD,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACtC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAEO,WAAW,CAAC,EAAgB;QAClC,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,OAAO;QAET,IAAI,IAAI,CAAC,gBAAgB,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC;QAC5B,MAAM,aAAa,GAAG,GAAG,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC1E,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,IAAI,SAAS;YAClC,OAAO,CAAC,6EAA6E;QAEvF,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrD,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,aAAa,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAEO,OAAO,CAAC,EAAiB;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;YACrE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAEe,KAAK,CAAC,gBAAgB,CAAC,GAAkB,IAAI,OAAO,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,KAAK,CAAC,cAAc,CAAC,GAAkB,IAAI,OAAO,mBAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,YAAY,CAAC,EAAgB;QACjD,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YAC7B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IACe,KAAK,CAAC,WAAW,CAAC,EAAgB;QAChD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IACe,KAAK,CAAC,aAAa,CAAC,GAAiB,IAAmB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACjF,KAAK,CAAC,eAAe,CAAC,GAAiB;QACrD,+EAA+E;QAC/E,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,2BAAY,CAAC,cAAc,CAAC,QAAQ,CAAC;YACtD,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,sEAAsE;gBAC1G,IAAI,CAAC,IAAI,GAAG,0BAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChD,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;oBAC7B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;;AA9RH,oDA+RC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,QAAQ;IACjC,MAAM,CAAU,MAAM,GAAG,WAAW,CAAC;IACrC,MAAM,CAAU,QAAQ,GAAG,sBAAsB,CAAC;IAEzC,KAAK,CAAC,aAAa;QACjC,IAAI,IAAI,CAAC,QAAQ;YACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;;AARH,oCASC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,QAAQ;IACjC,MAAM,CAAU,MAAM,GAAG,WAAW,CAAC;IACrC,MAAM,CAAU,QAAQ,GAAG,qBAAqB,CAAC;IAExC,KAAK,CAAC,aAAa;QACjC,IAAI,IAAI,CAAC,QAAQ;YACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;;AARH,oCASC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,QAAQ;IACzC,MAAM,CAAU,MAAM,GAAG,mBAAmB,CAAC;IAC7C,MAAM,CAAU,QAAQ,GAAG,aAAa,CAAC;IAEhC,KAAK,CAAC,SAAS,KAAuB,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1H,KAAK,CAAC,aAAa;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,CAAC,UAAU;gBACd,EAAE,CAAC,IAAoB,CAAC,aAAa,EAAE,CAAC;;gBAEzC,EAAE,CAAC,YAAY,EAAE,CAAC;YAEpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;;AAjBH,oDAkBC;AAED;;;;GAIG;AACH,MAAa,eAAgB,SAAQ,6BAAa;IACzC,MAAM,CAAU,MAAM,GAAG,kBAAkB,CAAC;IAC5C,MAAM,CAAU,QAAQ,GAAG,sBAAsB,CAAC;IAClD,QAAQ,CAAkB;IACvB,UAAU,GAAY,KAAK,CAAC;IAC5B,WAAW,GAAY,uBAAO,CAAC,MAAM,EAAE,CAAC;IACxC,cAAc,GAAY,uBAAO,CAAC,MAAM,EAAE,CAAC;IAErC,oBAAoB,CAAC,EAAwB,EAAE,oBAA6B,IAAa,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,EAAE,oBAAoB,CAAC,IAAI,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/M,eAAe,CAAC,GAAkB,EAAE,cAAuB,IAAa,OAAO,IAAI,CAAC,CAAC,CAAC;IACtF,sBAAsB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACnD,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEe,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAC3D,2BAA2B;QACnC,qBAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,IAAI,IAAI,CAAC,UAAU;YACjB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;YAE5B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAExB,OAAO,mBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAES,qBAAqB;QAC7B,MAAM,eAAe,GAAG,+BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAClL,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;QAChH,IAAI,CAAC,+BAAc,CAAC,6BAA6B,CAAC,iBAAiB,CAAC;YAClE,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5I,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,+BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,qBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAES,mBAAmB,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5I,sBAAsB,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAE/I,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,CAAC;aAAM,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC1C,OAAO,mBAAY,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjE,IAAI,IAAI,CAAC,UAAU;gBACjB,OAAO,mBAAY,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;YAC5B,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,mBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAiB;QACnD,IAAI,CAAC,IAAI,CAAC,UAAU;YAClB,OAAO;QACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACtC,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;IACxD,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,OAAwB,EAAE,EAAkB,EAAE,UAAmB,EAAE,aAAsB,EAAE,cAAwB,EAAE,iBAA2B;QAC9K,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;YACpE,OAAO;QAET,MAAM,IAAI,GAAG,wBAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACrD,IAAI,SAAS,IAAI,wBAAQ,CAAC,aAAa,EAAE,wCAAwC;YAC/E,OAAO;QAET,MAAM,IAAI,GAAG,IAAI,wBAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,wBAAQ,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,wBAAQ,CAAC,mBAAmB;YACtF,OAAO;QACT,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,wBAAQ,CAAC,mBAAmB;YACtF,OAAO;QAET,MAAM,SAAS,GAAG,2BAAY,CAAC,eAAe,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC;QAC9D,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAElE,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;QACrD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;QACrD,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,iCAAe,CAAC,WAAW,CAAC,wBAAwB,CAAC,sBAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvF,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,yBAAW,CAAC,YAAY,CAAC,CAAC;QAE1E,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,gCAAwB,CAAC;QAC7D,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;QAEtD,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,iCAAyB,wBAAU,CAAC,KAAK,CAAC,CAAC;QAC/E,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAEpD,IAAI,cAAc;YAChB,UAAU,CAAC,aAAa,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;QACzD,IAAI,iBAAiB;YACnB,UAAU,CAAC,aAAa,CAAC,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;QAE/D,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,kCAA0B,CAAC;QAC/D,UAAU,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;QAEvD,IAAI,cAAc;YAChB,UAAU,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9C,IAAI,iBAAiB;YACnB,UAAU,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAEjD,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,SAAS,GAAG,sBAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,yBAAW,CAAC,eAAe,CAAC,CAAC;QAE7E,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,kCAA0B,CAAC;QAC/D,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAEpD,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,gCAAwB,CAAC;QACjE,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAE1C,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,gCAAwB,CAAC;QACjE,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAE5C,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YACjD,OAAO;QACT,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpO,CAAC;IAEe,iBAAiB,CAAC,OAAwB,IAAU,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAErF,cAAc;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9C,OAAO;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,2BAAY,CAAC,eAAe,CAAC;QAC/C,IAAI,uBAAU,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,wBAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC;YACtG,OAAO;QAET,EAAE,CAAC,aAAa,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAEO,wBAAwB,CAAsC;IACtE,IAAW,uBAAuB;QAChC,IAAI,CAAC,IAAI,CAAC,wBAAwB;YAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,+BAAc,CAChD,0CAAyB,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxG,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IACD,IAAW,eAAe,KAAc,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,IAAW,eAAe,CAAC,MAAe,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAEpF,qBAAqB,CAAqC;IAClE,IAAW,oBAAoB;QAC7B,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,+BAAc,CAAS,IAAI,qCAAiB,CAAC,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7J,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IACD,IAAW,YAAY,KAAa,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,IAAW,YAAY,CAAC,KAAa,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAE3E,wBAAwB,CAAsC;IACtE,IAAW,uBAAuB;QAChC,IAAI,CAAC,IAAI,CAAC,wBAAwB;YAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,+BAAc,CAChD,0CAAyB,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACxG,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IACD,IAAW,eAAe,KAAc,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,IAAW,eAAe,CAAC,KAAc,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAElF,qBAAqB,CAAqC;IAClE,IAAW,oBAAoB;QAC7B,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,+BAAc,CAAS,IAAI,qCAAiB,CAAC,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7J,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IACD,IAAW,YAAY,KAAa,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,IAAW,YAAY,CAAC,KAAa,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAEhE,0BAA0B,CAAC,QAA6B;QACzE,IAAI,QAAQ,KAAK,IAAI,CAAC,oBAAoB;YACxC,OAAO,IAAI,CAAC,uBAAuB,CAAC;aACjC,IAAI,QAAQ,KAAK,IAAI,CAAC,oBAAoB;YAC7C,OAAO,IAAI,CAAC,uBAAuB,CAAC;QACtC,OAAO,SAAS,CAAC;IACnB,CAAC;IAEe,KAAK,CAAC,8BAA8B,CAAC,YAAoC;QACvF,OAAO,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAEe,4BAA4B;QAC1C,IAAI,CAAC,mCAAmC,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAE7J,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QACvG,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvG,MAAM,YAAY,GAAG,IAAI,KAAK,EAAc,CAAC;QAC7C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAChH,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAChH,OAAO,YAAY,CAAC;IACtB,CAAC;;AAtQH,0CAuQC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,6BAAa;IAC7C,MAAM,CAAU,MAAM,GAAG,sBAAsB,CAAC;IAChD,MAAM,CAAU,QAAQ,GAAG,sBAAsB,CAAC;IAClD,QAAQ,CAAkB;IACvB,UAAU,GAAY,KAAK,CAAC;IAC5B,WAAW,GAAY,uBAAO,CAAC,MAAM,EAAE,CAAC;IACxC,cAAc,GAAY,uBAAO,CAAC,MAAM,EAAE,CAAC;IAErC,oBAAoB,CAAC,EAAwB,EAAE,oBAA6B,IAAa,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,EAAE,oBAAoB,CAAC,IAAI,SAAS,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/M,eAAe,CAAC,GAAkB,EAAE,cAAuB,IAAa,OAAO,IAAI,CAAC,CAAC,CAAC;IACtF,sBAAsB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IACnD,KAAK,CAAC,aAAa;QACjC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEe,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IAC3D,2BAA2B;QACnC,qBAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEe,KAAK,CAAC,eAAe,CAAC,GAAkB;QACtD,IAAI,IAAI,CAAC,UAAU;YACjB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;;YAE5B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAExB,OAAO,mBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAES,qBAAqB;QAC7B,MAAM,eAAe,GAAG,+BAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC1L,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAC1D,MAAM,iBAAiB,GAAgC,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,gBAAS,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;QAChH,IAAI,CAAC,+BAAc,CAAC,6BAA6B,CAAC,iBAAiB,CAAC;YAClE,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,iBAAiB,CAAC,IAAI,CAAC,+BAAc,CAAC,iBAAiB,CAAC,oCAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,0CAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5I,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3F,QAAQ,CAAC,IAAI,CAAC,+BAAc,CAAC,aAAa,CAAC,iBAAiB,EAAE,+BAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3F,MAAM,YAAY,GAAG,+BAAc,CAAC,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAClF,qBAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,IAAI,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE;YACnB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAES,mBAAmB,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,wBAAQ,CAAC,KAAK,EAAE,EAAE,2BAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3G,sBAAsB,KAAK,OAAO,uBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzH,KAAK,CAAC,gBAAgB,CAAC,EAAiB;QACtD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,CAAC;aAAM,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC1C,OAAO,mBAAY,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC9B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjE,IAAI,IAAI,CAAC,UAAU;gBACjB,OAAO,mBAAY,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;YAC5B,OAAO,mBAAY,CAAC,GAAG,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,mBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC;IAEe,KAAK,CAAC,aAAa,CAAC,EAAiB;QACnD,IAAI,CAAC,IAAI,CAAC,UAAU;YAClB,OAAO;QACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACtC,qBAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,eAAe;QAC5B,MAAM,SAAS,GAAc,EAAE,CAAC;QAChC,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,uBAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACrC,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,EAAY,EAAE,IAAa,EAAE,SAAmB,EAAE,KAAa;QAC/F,MAAM,QAAQ,GAAG,8BAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM;YAC9D,OAAO,SAAS,CAAC;QAEnB,MAAM,MAAM,GAAG,wBAAQ,CAAC,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,yBAAS,CAAC,GAAG,CAAC,CAAC;QAC7F,IAAI,SAAS,KAAK,MAAM;YACtB,OAAO,SAAS,CAAC;QAEnB,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,yBAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,OAAwB,EAAE,EAAY,EAAE,QAAiB,EAAE,SAAiB;QACnG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;YACpE,OAAO;QAET,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,wBAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QACnG,IAAI,SAAS,KAAK,SAAS;YACzB,OAAO;QAET,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,iCAAe,CAAC,WAAW,CAAC,wBAAwB,CAAC,sBAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,sBAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,yBAAW,CAAC,YAAY,CAAC,CAAC;QAC7E,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,sBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,gCAAwB,CAAC;QACvF,aAAa,CAAC,MAAM,CAAC,qBAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7E,OAAO,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,yBAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACxF,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,gCAAwB,CAAC;QAC5D,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB;QACnD,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,yBAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACrF,UAAU,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,kCAA0B,CAAC;QAC/D,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB;QACtD,OAAO,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAEe,QAAQ,CAAC,OAAwB;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ;YACjD,OAAO;QACT,mBAAmB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,2BAAY,CAAC,aAAa,CAAC,CAAC;QACrG,eAAe,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9J,CAAC;IAEe,iBAAiB,CAAC,OAAwB,IAAU,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAErF,cAAc;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,SAAS,KAAK,EAAE;YAClB,OAAO;QAET,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9C,OAAO;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,2BAAY,CAAC,eAAe,CAAC;QAC/C,IAAI,uBAAU,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,wBAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC;YACtG,OAAO;QAET,EAAE,CAAC,aAAa,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;;AAvMH,kDAwMC"}