ngx-bimplus-components 0.0.148 → 0.0.149-28792-3

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 (174) hide show
  1. package/assets/images/default/Attachment_18_gray.svg +1 -0
  2. package/assets/images/default/Attachment_18_maincolor.svg +3 -0
  3. package/assets/images/default/Attachmentlink_18_gray.svg +7 -0
  4. package/assets/images/default/Attachmentlink_18_maincolor.svg +7 -0
  5. package/assets/images/default/Comments_18_gray.svg +1 -0
  6. package/assets/images/default/Comments_18_maincolor.svg +4 -0
  7. package/assets/images/default/Links_18_gray.svg +1 -0
  8. package/assets/images/default/Links_18_maincolor.svg +4 -0
  9. package/assets/images/default/ic_models.svg +3 -0
  10. package/assets/images/default/ic_models_maincolor.svg +3 -0
  11. package/assets/images/default/icn_grid_attachments.png +0 -0
  12. package/assets/images/default/icn_grid_hyperlinks.png +0 -0
  13. package/assets/languages/strings_cs.json +24 -72
  14. package/assets/languages/strings_de.json +4 -15
  15. package/assets/languages/strings_en.json +5 -5
  16. package/assets/languages/strings_es.json +6 -54
  17. package/assets/languages/strings_fr.json +6 -50
  18. package/assets/languages/strings_it.json +2 -50
  19. package/assets/languages/strings_nl.json +796 -796
  20. package/assets/languages/strings_ro.json +7 -55
  21. package/assets/languages/strings_ru.json +45 -93
  22. package/assets/languages/strings_tr.json +2 -50
  23. package/assets/languages/strings_us.json +8 -44
  24. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.component.mjs +69 -0
  25. package/esm2022/lib/components/bimplus-attachments/bimplus-attachments.interface.mjs +34 -0
  26. package/esm2022/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.mjs +82 -0
  27. package/esm2022/lib/components/bimplus-attachments/services/bimplus-attachments.service.mjs +49 -0
  28. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +20 -7
  29. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +5 -2
  30. package/esm2022/lib/components/bimplus-comment/bimplus-comment.component.mjs +68 -0
  31. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +7 -7
  32. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.interface.mjs +1 -1
  33. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.service.mjs +4 -4
  34. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +5 -5
  35. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.interface.mjs +1 -1
  36. package/esm2022/lib/components/bimplus-contact/bimplus-contact.component.mjs +5 -5
  37. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.component.mjs +3 -3
  38. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.interface.mjs +1 -1
  39. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +5 -5
  40. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
  41. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.mjs +5 -5
  42. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.interface.mjs +1 -1
  43. package/esm2022/lib/components/bimplus-floating-bar-body/bimplus-floating-bar-body.component.mjs +5 -5
  44. package/esm2022/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.mjs +5 -5
  45. package/esm2022/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.mjs +3 -3
  46. package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +4 -4
  47. package/esm2022/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.mjs +3 -3
  48. package/esm2022/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.mjs +4 -4
  49. package/esm2022/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.mjs +3 -3
  50. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.mjs +4 -4
  51. package/esm2022/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service.mjs +3 -3
  52. package/esm2022/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.mjs +58 -0
  53. package/esm2022/lib/components/bimplus-language-menu/bimplus-language-menu.component.mjs +3 -3
  54. package/esm2022/lib/components/bimplus-localized-widget/bimplus-localized-widget.component.mjs +5 -5
  55. package/esm2022/lib/components/bimplus-main-menu/bimplus-main-menu.component.mjs +3 -3
  56. package/esm2022/lib/components/bimplus-navbar/bimplus-navbar.component.mjs +3 -3
  57. package/esm2022/lib/components/bimplus-notify/bimplus-notify.component.mjs +5 -5
  58. package/esm2022/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.mjs +242 -0
  59. package/esm2022/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.mjs +2 -0
  60. package/esm2022/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.mjs +5 -5
  61. package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +5 -5
  62. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +5 -5
  63. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.mjs +1 -1
  64. package/esm2022/lib/components/bimplus-object-navigator/filter-criterium/filter-criterium.component.mjs +3 -3
  65. package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +5 -5
  66. package/esm2022/lib/components/bimplus-object-structure/bimplus-object-structure.component.mjs +5 -5
  67. package/esm2022/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.mjs +73 -0
  68. package/esm2022/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.mjs +75 -0
  69. package/esm2022/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.mjs +3 -3
  70. package/esm2022/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.mjs +10 -7
  71. package/esm2022/lib/components/bimplus-panel-toolbar/bimplus-panel-toolbar.component.mjs +5 -5
  72. package/esm2022/lib/components/bimplus-project-menu/bimplus-project-menu.component.mjs +3 -3
  73. package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +5 -5
  74. package/esm2022/lib/components/bimplus-sidenav/bimplus-sidenav.component.mjs +3 -3
  75. package/esm2022/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.mjs +3 -3
  76. package/esm2022/lib/components/bimplus-storage-info/bimplus-storage-info.component.mjs +3 -3
  77. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.mjs +38 -0
  78. package/esm2022/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.mjs +10 -0
  79. package/esm2022/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.mjs +89 -0
  80. package/esm2022/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.mjs +33 -0
  81. package/esm2022/lib/components/bimplus-text-message/bimplus-text-message.component.mjs +3 -3
  82. package/esm2022/lib/components/bimplus-textarea/autoResizeTextarea.directive.mjs +83 -0
  83. package/esm2022/lib/components/bimplus-textarea/bimplus-textarea.component.mjs +122 -0
  84. package/esm2022/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.mjs +3 -3
  85. package/esm2022/lib/components/bimplus-tool-hub/svgGenerator.mjs +1 -1
  86. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.mjs +3 -3
  87. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.mjs +3 -3
  88. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.mjs +5 -5
  89. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.interface.mjs +1 -1
  90. package/esm2022/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.mjs +5 -5
  91. package/esm2022/lib/components/bimplus-user-menu/bimplus-user-menu.component.mjs +3 -3
  92. package/esm2022/lib/components/bimplus-zoom/bimplus-zoom.component.mjs +5 -5
  93. package/esm2022/lib/components/expansion-panel/expansion-panel.component.mjs +3 -3
  94. package/esm2022/lib/components/expansion-panel-header/expansion-panel-header.component.mjs +3 -3
  95. package/esm2022/lib/components/expansion-panel-header-actions/expansion-panel-header-actions.component.mjs +3 -3
  96. package/esm2022/lib/components/links-to-documents/links-to-documents.component.interface.mjs +2 -0
  97. package/esm2022/lib/components/links-to-documents/links-to-documents.component.mjs +337 -0
  98. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +3 -3
  99. package/esm2022/lib/components/object-hyperlinks/object-hyperlinks.component.mjs +141 -0
  100. package/esm2022/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.mjs +36 -0
  101. package/esm2022/lib/components/object-properties/object-properties.component.mjs +261 -0
  102. package/esm2022/lib/components/object-properties/object-properties.interface.mjs +2 -0
  103. package/esm2022/lib/components/object-properties-group/object-properties-group.component.mjs +40 -0
  104. package/esm2022/lib/components/object-properties-group/object-property-value/object-property-value.component.mjs +55 -0
  105. package/esm2022/lib/components/object-properties-header/object-properties-header.component.mjs +21 -6
  106. package/esm2022/lib/components/object-properties-header/object-properties-header.interface.mjs +1 -1
  107. package/esm2022/lib/components/project-models/project-models.component.mjs +3 -3
  108. package/esm2022/lib/components/project-models/project-models.interface.mjs +1 -1
  109. package/esm2022/lib/components/resizable-panel/resizable-panel.component.mjs +5 -5
  110. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +4 -4
  111. package/esm2022/lib/directives/component-draggable/componentsDraggable.directive.mjs +3 -3
  112. package/esm2022/lib/directives/draggable.directive.mjs +3 -3
  113. package/esm2022/lib/directives/resizable.directive.mjs +4 -4
  114. package/esm2022/lib/directives/x-draggable.directive.mjs +3 -3
  115. package/esm2022/lib/interfaces/bimplus-opacity-properties.interface.mjs +1 -1
  116. package/esm2022/lib/interfaces/bimplus-visibility-properties.interface.mjs +1 -1
  117. package/esm2022/lib/ngx-bimplus-components.component.mjs +3 -3
  118. package/esm2022/lib/ngx-bimplus-components.service.mjs +3 -3
  119. package/esm2022/lib/pipes/bit-converter.pipe.mjs +46 -0
  120. package/esm2022/lib/pipes/get-attribute-value.pipe.mjs +110 -0
  121. package/esm2022/lib/pipes/pxsuffix.pipe.mjs +3 -3
  122. package/esm2022/lib/pipes/round.pipe.mjs +20 -0
  123. package/esm2022/lib/services/cursors.service.mjs +3 -3
  124. package/esm2022/lib/services/language-strings.service.mjs +3 -3
  125. package/esm2022/lib/services/layout-manager.service.mjs +3 -3
  126. package/esm2022/lib/services/local-storage.service.mjs +4 -4
  127. package/esm2022/lib/services/resize-observer.service.mjs +4 -4
  128. package/esm2022/lib/types/types.mjs +1 -1
  129. package/esm2022/lib/utils/filterString.mjs +1 -1
  130. package/esm2022/lib/utils/filterStructureFetcher.mjs +1 -1
  131. package/esm2022/lib/utils/objectProperties.mjs +9 -0
  132. package/esm2022/lib/utils/utils.mjs +1 -1
  133. package/esm2022/public-api.mjs +17 -1
  134. package/fesm2022/ngx-bimplus-components.mjs +2317 -249
  135. package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
  136. package/lib/components/bimplus-attachments/bimplus-attachments.component.d.ts +25 -0
  137. package/lib/components/bimplus-attachments/bimplus-attachments.interface.d.ts +19 -0
  138. package/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.d.ts +26 -0
  139. package/lib/components/bimplus-attachments/services/bimplus-attachments.service.d.ts +12 -0
  140. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.d.ts +9 -3
  141. package/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.d.ts +5 -0
  142. package/lib/components/bimplus-comment/bimplus-comment.component.d.ts +34 -0
  143. package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +1 -1
  144. package/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.d.ts +17 -0
  145. package/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.d.ts +51 -0
  146. package/lib/components/bimplus-object-comments-list/bimplusObjectCommentsI.d.ts +11 -0
  147. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.d.ts +7 -7
  148. package/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.interface.d.ts +3 -3
  149. package/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.d.ts +28 -0
  150. package/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.d.ts +23 -0
  151. package/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.d.ts +3 -0
  152. package/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.d.ts +1 -1
  153. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.d.ts +16 -0
  154. package/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.d.ts +18 -0
  155. package/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.d.ts +36 -0
  156. package/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.d.ts +15 -0
  157. package/lib/components/bimplus-textarea/autoResizeTextarea.directive.d.ts +24 -0
  158. package/lib/components/bimplus-textarea/bimplus-textarea.component.d.ts +42 -0
  159. package/lib/components/links-to-documents/links-to-documents.component.d.ts +55 -0
  160. package/lib/components/links-to-documents/links-to-documents.component.interface.d.ts +11 -0
  161. package/lib/components/object-hyperlinks/object-hyperlinks.component.d.ts +32 -0
  162. package/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.d.ts +15 -0
  163. package/lib/components/object-properties/object-properties.component.d.ts +45 -0
  164. package/lib/components/object-properties/object-properties.interface.d.ts +21 -0
  165. package/lib/components/object-properties-group/object-properties-group.component.d.ts +11 -0
  166. package/lib/components/object-properties-group/object-property-value/object-property-value.component.d.ts +14 -0
  167. package/lib/components/object-properties-header/object-properties-header.component.d.ts +5 -3
  168. package/lib/components/object-properties-header/object-properties-header.interface.d.ts +1 -0
  169. package/lib/pipes/bit-converter.pipe.d.ts +17 -0
  170. package/lib/pipes/get-attribute-value.pipe.d.ts +23 -0
  171. package/lib/pipes/round.pipe.d.ts +7 -0
  172. package/lib/utils/objectProperties.d.ts +2 -0
  173. package/package.json +12 -5
  174. package/public-api.d.ts +16 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-bimplus-components.mjs","sources":["../../../projects/ngx-bimplus-components/src/lib/ngx-bimplus-components.service.ts","../../../projects/ngx-bimplus-components/src/lib/ngx-bimplus-components.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-localized-widget/bimplus-localized-widget.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/loading-spinner/loading-spinner.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/loading-spinner/loading-spinner.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.html","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel/expansion-panel.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel/expansion-panel.component.html","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel-header/expansion-panel-header.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel-header/expansion-panel-header.component.html","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel-header-actions/expansion-panel-header-actions.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel-header-actions/expansion-panel-header-actions.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-text-message/bimplus-text-message.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-text-message/bimplus-text-message.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer/bimplus-connection-designer.service.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.html","../../../projects/ngx-bimplus-components/src/lib/utils/utils.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-contact/bimplus-contact.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-contact/bimplus-contact.component.html","../../../projects/ngx-bimplus-components/src/lib/directives/draggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/services/resize-observer.service.ts","../../../projects/ngx-bimplus-components/src/lib/services/local-storage.service.ts","../../../projects/ngx-bimplus-components/src/lib/services/layout-manager.service.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.html","../../../projects/ngx-bimplus-components/src/lib/directives/resizable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-body/bimplus-floating-bar-body.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-body/bimplus-floating-bar-body.component.html","../../../projects/ngx-bimplus-components/src/lib/components/project-models/project-models.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/project-models/project-models.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-panel-toolbar/bimplus-panel-toolbar.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-panel-toolbar/bimplus-panel-toolbar.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/logo-state.enum.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/bimplus-navbar.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/bimplus-navbar.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-notify/bimplus-notify.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-notify/bimplus-notify.component.html","../../../projects/ngx-bimplus-components/src/lib/pipes/pxsuffix.pipe.ts","../../../projects/ngx-bimplus-components/src/lib/directives/x-draggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav/bimplus-sidenav.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav/bimplus-sidenav.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/svgGenerator.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-zoom/bimplus-zoom.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-zoom/bimplus-zoom.component.html","../../../projects/ngx-bimplus-components/src/lib/directives/click-outside/click-outside.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-context-menu/bimplus-context-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-context-menu/bimplus-context-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/bimplus-object-navigator.interface.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/filter-criterium/filter-criterium.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/filter-criterium/filter-criterium.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-structure/bimplus-object-structure.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-structure/bimplus-object-structure.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-structure/bimplus-object-structure.interface.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.interface.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.html","../../../projects/ngx-bimplus-components/src/lib/utils/filterString.ts","../../../projects/ngx-bimplus-components/src/lib/utils/filterStructureFetcher.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/services/language-strings.service.ts","../../../projects/ngx-bimplus-components/src/lib/services/cursors.service.ts","../../../projects/ngx-bimplus-components/src/lib/directives/component-draggable/componentsDraggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.html","../../../projects/ngx-bimplus-components/src/lib/components/resizable-panel/resizable-panel.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/resizable-panel/resizable-panel.component.html","../../../projects/ngx-bimplus-components/src/lib/components/object-properties-header/object-properties-header.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/object-properties-header/object-properties-header.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.html","../../../projects/ngx-bimplus-components/src/public-api.ts","../../../projects/ngx-bimplus-components/src/ngx-bimplus-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxBimplusComponentsService {\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-ngx-bimplus-components',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n ngx-bimplus-components works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class NgxBimplusComponentsComponent {\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, signal, WritableSignal } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { LocalizedStrings } from './../../types/types'\r\n\r\n@Component({\r\n selector: 'lib-bimplus-localized-widget',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n template: `\r\n <p>\r\n localized widget works!\r\n </p>\r\n `,\r\n styles: [\r\n ],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLocalizedWidgetComponent {\r\n constructor(public translateService: TranslateService) {\r\n }\r\n\r\n _selectedLanguage: WritableSignal<string> = signal('en');\r\n get selectedLanguage(): string {\r\n return this._selectedLanguage();\r\n }\r\n @Input() set selectedLanguage(value: string) {\r\n this._selectedLanguage.set(value);\r\n this.translateService.use(value);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, this._localizedStrings);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n _localizedStrings: WritableSignal<LocalizedStrings> = signal({} as LocalizedStrings);\r\n get localizedStrings(): LocalizedStrings {\r\n return this._localizedStrings();\r\n }\r\n @Input() set localizedStrings(value: LocalizedStrings) {\r\n this._localizedStrings.set(value);\r\n this.translateService.use(this.selectedLanguage);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, value);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n","import { Component, Input, booleanAttribute, computed, signal } from '@angular/core';\r\n\r\ntype SpinnerTexts = string[] | null | undefined;\r\ntype SpinnerText = string | null | undefined;\r\n\r\n@Component({\r\n selector: 'lib-loading-spinner',\r\n standalone: true,\r\n templateUrl: './loading-spinner.component.html',\r\n styleUrl: './loading-spinner.component.less'\r\n})\r\nexport class LoadingSpinnerComponent {\r\n @Input({ transform: booleanAttribute }) spinnerSpinActive: boolean = false;\r\n @Input({ transform: booleanAttribute }) spinnerHoverEnabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) spinnerDisabled: boolean = false;\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'spinnerText' }) set spinnerTextValue(value: SpinnerText) {\r\n this.spinnerText.set(value);\r\n }\r\n protected readonly spinnerText = signal<SpinnerText>(undefined);\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'spinnerTexts' }) set spinnerTextsValue(value: SpinnerTexts) {\r\n this.spinnerTexts.set(value);\r\n }\r\n protected readonly spinnerTexts = signal<SpinnerTexts>(undefined);\r\n\r\n protected readonly isSpinnerTextsArray = computed(() => {\r\n const spinnerTexts = this.spinnerTexts();\r\n return !!(spinnerTexts && typeof spinnerTexts === 'object' && Array.isArray(spinnerTexts) && Boolean(spinnerTexts.length))\r\n });\r\n}\r\n","<div class=\"loading-spinner\">\r\n <div class=\"spinner-conatiner\">\r\n <div\r\n class=\"spinner-icon\"\r\n [class.spinner-spin-active]=\"spinnerSpinActive\"\r\n [class.spinner-disabled]=\"spinnerDisabled\"\r\n [class.hover-enabled]=\"spinnerHoverEnabled && !spinnerDisabled\"\r\n ></div>\r\n @if (spinnerText(); as spinnerText) {\r\n <div class=\"spinner-text\" data-test=\"spinner-text\">\r\n {{ spinnerText }}\r\n </div>\r\n }\r\n @if (isSpinnerTextsArray()) {\r\n <div class=\"spinner-texts\" data-test=\"spinner-texts\">\r\n @for (_spinnerText of spinnerTexts(); track _spinnerText) {\r\n <div class=\"spinner-text\">\r\n {{ _spinnerText }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>","import { Component, Input, signal, ViewEncapsulation } from '@angular/core';\r\nimport { LoadingSpinnerComponent } from '../loading-spinner/loading-spinner.component';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-sidenav-drawer-content',\r\n standalone: true,\r\n imports: [\r\n LoadingSpinnerComponent\r\n ],\r\n templateUrl: './bimplus-sidenav-drawer-content.component.html',\r\n styleUrl: './bimplus-sidenav-drawer-content.component.less',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class BimplusSidenavDrawerContentComponent {\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'header' }) set headerValue(value: string) {\r\n this.header.set(value);\r\n }\r\n protected readonly header = signal<string>('');\r\n\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'isLoading' }) set isLoadingValue(value: boolean) {\r\n this.isLoading.set(value);\r\n }\r\n protected readonly isLoading = signal<boolean>(false);\r\n\r\n @Input() loadingSpinnerText: string = \"\"\r\n}\r\n","<div class=\"sidenav-drawer-content-layout\">\r\n @if (header(); as header) { \r\n <div class = \"sidenav-drawer-header\">\r\n <div class = \"sidenav-drawer-header-title\">\r\n <span>{{header}}</span>\r\n </div>\r\n </div>\r\n }\r\n \r\n <div class=\"sidenav-drawer-content-offset\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if(isLoading()){\r\n <div class=\"sidenav-drawer-loading-overlay\">\r\n <lib-loading-spinner\r\n [spinnerHoverEnabled]=\"false\"\r\n [spinnerSpinActive]=\"true\"\r\n [spinnerDisabled]=\"false\"\r\n [spinnerText]=\"loadingSpinnerText\"\r\n >\r\n </lib-loading-spinner>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, ViewEncapsulation, EventEmitter, Output, Input, signal } from '@angular/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\";\r\nimport { BimplusButtonRowItem, BimplusButtonClickEvent } from \"./bimplus-buttons-row.interface\";\r\nimport { NgFor } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-buttons-row',\r\n standalone: true,\r\n imports: [NgFor],\r\n templateUrl: './bimplus-buttons-row.component.html',\r\n styleUrl: './bimplus-buttons-row.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusButtonsRowComponent extends BimplusLocalizedWidgetComponent {\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'items' }) set itemsValue(value: Array<BimplusButtonRowItem>) {\r\n this.items.set(value);\r\n }\r\n protected readonly items = signal<BimplusButtonRowItem[]>([]);\r\n\r\n @Output() buttonClicked = new EventEmitter<BimplusButtonClickEvent>();\r\n \r\n protected _buttonClicked(item: BimplusButtonRowItem) {\r\n if(item.disabled) {\r\n return;\r\n }\r\n this.buttonClicked.emit({ id: item.id });\r\n }\r\n}\r\n","<div class=\"button-row\">\r\n <ng-container *ngFor=\"let item of items(); let last=last; let first=first;\">\r\n <button\r\n [class.last]=\"last\"\r\n [class.first]=\"first\"\r\n [class.primary-button]=\"item.buttonStyle===undefined || item.buttonStyle==='primary'\"\r\n [class.secondary-button]=\"item.buttonStyle==='secondary'\"\r\n [class.text-button]=\"item.buttonType===undefined || item.buttonType==='text'\"\r\n [class.icon-button]=\"item.buttonType==='icon'\"\r\n [class.combined-button]=\"item.buttonType==='combined'\"\r\n [class.disabled]=\"item.disabled===true\"\r\n (click)=\"_buttonClicked(item)\"\r\n title={{item.tooltip}}\r\n data-test=\"button\"\r\n >\r\n {{ item.title }}\r\n </button>\r\n </ng-container>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, signal } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-expansion-panel',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './expansion-panel.component.html',\r\n styleUrl: './expansion-panel.component.less'\r\n})\r\nexport class ExpansionPanelComponent {\r\n // #region public fields\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'expanded' }) set expandedValue(value: boolean) {\r\n this.expanded.set(value);\r\n }\r\n protected readonly expanded = signal<boolean>(true);\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n toggleExpand(){\r\n this.expanded.update(value => !value);\r\n }\r\n // #endregion public methods\r\n}\r\n","<div class=\"expansion-panel\">\r\n <div class=\"expansion-panel-header-row\">\r\n <div \r\n class=\"expansion-panel-expander-icon\" \r\n data-test=\"expansion-panel\"\r\n [ngClass]=\"expanded() ? 'open' : 'closed'\" \r\n (click)=\"toggleExpand()\"\r\n (keypress)=\"toggleExpand()\"\r\n ></div>\r\n <div class=\"expansion-panel-header-content\">\r\n <ng-content select=\"lib-expansion-panel-header\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"expansion-panel-content-container\" [ngClass]=\"expanded() ? '' : 'collapsed'\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n","import { Component, HostBinding, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-expansion-panel-header',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './expansion-panel-header.component.html',\r\n styleUrl: './expansion-panel-header.component.less',\r\n encapsulation : ViewEncapsulation.None\r\n})\r\nexport class ExpansionPanelHeaderComponent {\r\n @HostBinding('class.expansion-panel-header-container') centerMenuButtonClass: boolean = true;\r\n}\r\n"," <div class=\"expansion-panel-header-title\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div>\r\n <ng-content select=\"lib-expansion-panel-header-actions\"></ng-content>\r\n </div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-expansion-panel-header-actions',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './expansion-panel-header-actions.component.html',\r\n styleUrl: './expansion-panel-header-actions.component.less'\r\n})\r\nexport class ExpansionPanelHeaderActionsComponent {\r\n\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, Input, signal } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-text-message',\r\n standalone: true,\r\n templateUrl: './bimplus-text-message.component.html',\r\n styleUrl: './bimplus-text-message.component.less'\r\n})\r\nexport class BimplusTextMessageComponent {\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'message' }) set messageValue(value: string) {\r\n this.message.set(value);\r\n }\r\n protected readonly message = signal<string | undefined>(undefined);\r\n\r\n}\r\n","@if(message(); as message) {\r\n <div class=\"message\">\r\n {{ message }}\r\n </div>\r\n}","import {\r\n Component\r\n , ViewEncapsulation\r\n , ElementRef\r\n , AfterViewInit\r\n , AfterViewChecked\r\n} from '@angular/core';\r\n\r\nimport SimpleBar from 'simplebar';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-scrollable-container',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './bimplus-scrollable-container.component.html',\r\n styleUrl: './bimplus-scrollable-container.component.less',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class BimplusScrollableContainerComponent implements AfterViewInit, AfterViewChecked {\r\n _simpleBar!: SimpleBar;\r\n _element: HTMLElement;\r\n protected _scrollableContainerClassName: string = '.scrollable-container';\r\n\r\n constructor(private elementRef: ElementRef){\r\n this._element = this.elementRef.nativeElement;\r\n }\r\n\r\n private _initializationSimpleScrollBar(): void {\r\n // init simple bar scrollbar\r\n const scrollableContainer: HTMLElement | null = this._element?.querySelector(this._scrollableContainerClassName);\r\n if (!scrollableContainer) {\r\n return;\r\n }\r\n this._simpleBar = new SimpleBar(scrollableContainer);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._initializationSimpleScrollBar();\r\n }\r\n\r\n private _recalculateScrollbar(): void {\r\n if(!this._element) {\r\n return;\r\n }\r\n const _element = this._element;\r\n const barElem = _element?.querySelector(this._scrollableContainerClassName);\r\n if (!barElem){\r\n return;\r\n }\r\n\r\n if (!this._simpleBar) {\r\n return;\r\n }\r\n\r\n this._simpleBar.recalculate();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this._recalculateScrollbar();\r\n }\r\n}\r\n","<div class=\"scrollable-container\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\nexport class BimplusConnectionDesignerService {\r\n private _activeStep: number = 0;\r\n\r\n activeStepChange$: Subject<number> = new Subject<number>();\r\n\r\n set activeStep(activeStep: number) {\r\n this._activeStep = activeStep;\r\n this.activeStepChange$.next(this._activeStep);\r\n }\r\n\r\n get activeStep(): number {\r\n return this._activeStep;\r\n }\r\n\r\n constructor() { }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation, OnInit, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"../bimplus-localized-widget/bimplus-localized-widget.component\";\r\nimport { BimplusButtonsRowComponent } from \"../bimplus-buttons-row/bimplus-buttons-row.component\";\r\nimport { BimplusButtonRowItem, BimplusButtonClickEvent } from \"../bimplus-buttons-row/bimplus-buttons-row.interface\";\r\nimport { ConnexisResultsRoot, ConnexisResultList, ConnexisResult } from './bimplus-connection-designer-results.interface';\r\nimport { ExpansionPanelComponent } from '../expansion-panel/expansion-panel.component';\r\nimport { ExpansionPanelHeaderComponent } from '../expansion-panel-header/expansion-panel-header.component';\r\nimport { ExpansionPanelHeaderActionsComponent } from '../expansion-panel-header-actions/expansion-panel-header-actions.component';\r\nimport { BimplusConnectionDesignerService } from \"../bimplus-connection-designer/bimplus-connection-designer.service\";\r\nimport { BimplusTextMessageComponent } from \"../bimplus-text-message/bimplus-text-message.component\";\r\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component'\r\n\r\n@Component({\r\n selector: 'lib-bimplus-connection-designer-results',\r\n standalone: true,\r\n imports: [\r\n TranslateModule\r\n , CommonModule\r\n , BimplusButtonsRowComponent\r\n , ExpansionPanelComponent\r\n , ExpansionPanelHeaderComponent\r\n , ExpansionPanelHeaderActionsComponent\r\n , BimplusTextMessageComponent\r\n , BimplusScrollableContainerComponent\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-connection-designer-results.component.html',\r\n styleUrl: './bimplus-connection-designer-results.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusConnectionDesignerResultsComponent extends BimplusLocalizedWidgetComponent\r\n implements OnInit, OnChanges {\r\n\r\n buttonRowItems: Array<BimplusButtonRowItem> = [];\r\n\r\n @Input() errorMessage: string = \"\";\r\n\r\n constructor(\r\n translateService: TranslateService\r\n , protected connectionDesignerService: BimplusConnectionDesignerService\r\n ) {\r\n super(translateService)\r\n }\r\n\r\n ngOnInit(): void {\r\n this.buttonRowItems = [\r\n {\r\n id: \"done\"\r\n , title: this.translateService.instant('_Done')\r\n , tooltip: this.translateService.instant('_Done')\r\n , disabled: false\r\n , buttonStyle: 'primary'\r\n }\r\n ];\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const changedResults = changes['results']?.currentValue as ConnexisResultsRoot | null;\r\n if (changedResults === null) {\r\n this.connectionDesignerService.activeStep = 0;\r\n }\r\n }\r\n\r\n @Output() doneClicked = new EventEmitter<void>();\r\n\r\n buttonClicked($event: BimplusButtonClickEvent) {\r\n if ($event.id === \"done\") {\r\n this.connectionDesignerService.activeStep = 0;\r\n this.doneClicked.emit();\r\n }\r\n }\r\n\r\n // #region Results\r\n @Input() resultTreeRootTitle: string = \"\"; // Tooltip root node of tree\r\n @Input() resultTreeRootName: string = \"\"; // Visible root node name of tree\r\n @Input() expandedTreeRoot: boolean = false; // Root tree is expanded\r\n @Input() expandedResultTrees: boolean = false; // failed and passed sub-tree expanded\r\n @Input() results: ConnexisResultsRoot | null = null; // Root for all result lists (failed, passed)\r\n @Output() toggleVisibilityResultsRoot = new EventEmitter<ConnexisResultsRoot>(); // root node\r\n @Output() toggleVisibilityResultList = new EventEmitter<ConnexisResultList>(); // sub-nodes\r\n @Output() toggleVisibilityResult = new EventEmitter<ConnexisResult>(); // children nodes\r\n @Output() clickedResultsRoot = new EventEmitter<ConnexisResultsRoot>(); // root node\r\n @Output() clickedResultList = new EventEmitter<ConnexisResultList>(); // sub-nodes\r\n @Output() clickedResult = new EventEmitter<ConnexisResult>(); // children nodes\r\n @Output() doubleClickedResultsRoot = new EventEmitter<ConnexisResultsRoot>(); // root node\r\n @Output() doubleClickedResultList = new EventEmitter<ConnexisResultList>(); // sub-nodes\r\n @Output() doubleClickedResult = new EventEmitter<ConnexisResult>(); // children nodes\r\n @Output() mouseEnteredResult = new EventEmitter<ConnexisResult>(); // children nodes\r\n @Output() mouseLeftResult = new EventEmitter<ConnexisResult>(); // children nodes\r\n\r\n totalResults(): number {\r\n let totalCount = 0;\r\n if (!this.results) return totalCount;\r\n for (const resultList of this.results.resultList) {\r\n totalCount += resultList.results.length;\r\n }\r\n return totalCount\r\n }\r\n private statusMessage(result: ConnexisResult): string {\r\n let message = \"\\n\";\r\n message += result.isValid ? \"PASSED : \" : \"FAILED : \";\r\n message += \"Unity Ratio \" + result.unityRatio;\r\n return message;\r\n }\r\n private infoMessage(result: ConnexisResult): string {\r\n if (!result.message) {\r\n return \"\";\r\n }\r\n\r\n let message = \"\\n\";\r\n message += \"Message: \";\r\n message += result.message;\r\n return message;\r\n }\r\n\r\n getTitle(result: ConnexisResult): string {\r\n return `${result.name}${this.statusMessage(result)}${this.infoMessage(result)}`;\r\n }\r\n // #endregion\r\n}\r\n","<div class=\"connection-designer-content-result\">\r\n <div class=\"title\">\r\n {{ \"_Connection_Designer_results_title\" | translate }}\r\n </div>\r\n <div class=\"description\">\r\n {{ \"_Connection_Designer_results_description\" | translate }}\r\n </div>\r\n\r\n @if(results !== null){\r\n <lib-bimplus-scrollable-container>\r\n <div class=\"scrollable-content-container\">\r\n <lib-expansion-panel\r\n class=\"project-navigator-model-panel\"\r\n [expanded]=\"expandedTreeRoot\"\r\n >\r\n <lib-expansion-panel-header\r\n [title]=\"resultTreeRootTitle ? resultTreeRootTitle : results.name + ' (' + totalResults() + ')'\"\r\n (click)=\"clickedResultsRoot.emit(results)\"\r\n (keypress)=\"clickedResultsRoot.emit(results)\"\r\n (dblclick)=\"doubleClickedResultsRoot.emit(results)\"\r\n >\r\n <span class=\"project-navigator-root-node\">\r\n {{ results.name }} ({{ totalResults() }})\r\n </span>\r\n \r\n <lib-expansion-panel-header-actions>\r\n <!-- toggle buttons should be removed for now see ALBP-24057 -->\r\n <!-- <div\r\n [attr.data-test]=\"'toggle_visibility_results'\"\r\n class=\"ui-icon-checkbox-slider project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n visible: results.isVisible,\r\n invisible: !results.isVisible,\r\n semivisible: results.isSemiVisible\r\n }\"\r\n [title]=\"'_Toggle visibility' | translate\"\r\n (click)=\"toggleVisibilityResultsRoot.emit(results)\"\r\n ></div> -->\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n \r\n <!-- Show all result lists as expansion panels -->\r\n <!-- lib-bimplus-flat-tree can't be used for that at the moment -->\r\n <div *ngFor=\"let resultList of results?.resultList\">\r\n <lib-expansion-panel\r\n class=\"project-navigator-model-panel\"\r\n [expanded]=\"expandedResultTrees\"\r\n >\r\n <lib-expansion-panel-header>\r\n <span\r\n class=\"project-navigator-model-node\"\r\n [ngClass]=\"{\r\n visible: resultList.isVisible\r\n }\"\r\n [style.color]=\"resultList.colorHexCode\"\r\n [title]=\"resultList.name + ' (' + resultList.results.length + ')'\"\r\n (click)=\"clickedResultList.emit(resultList)\"\r\n (keypress)=\"clickedResultList.emit(resultList)\"\r\n (dblclick)=\"doubleClickedResultList.emit(resultList)\"\r\n >\r\n {{ resultList.name }} ({{ resultList.results.length }})\r\n </span>\r\n \r\n <lib-expansion-panel-header-actions>\r\n <!-- toggle buttons should be removed for now see ALBP-24057 -->\r\n <!-- <div\r\n [attr.data-test]=\"'toggle_visibility_resultlist_' + resultList.id\"\r\n class=\"ui-icon-checkbox-slider project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n visible: resultList.isVisible,\r\n invisible: !resultList.isVisible,\r\n semivisible: resultList.isSemiVisible\r\n }\"\r\n [title]=\"'_Toggle visibility' | translate\"\r\n (click)=\"toggleVisibilityResultList.emit(resultList)\"\r\n ></div> -->\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n \r\n <!-- Content of panel -->\r\n <div\r\n class=\"project-navigator-layer-node\"\r\n *ngFor=\"let result of resultList.results\"\r\n >\r\n <div\r\n class=\"project-navigator-layer-node-name\"\r\n [class.selected-node]=\"result.isSelected\"\r\n [attr.data-test]=\"'result' + result.id\"\r\n [ngClass]=\"{\r\n visible: result.isVisible\r\n }\"\r\n [title]=\"getTitle(result)\"\r\n (click)=\"clickedResult.emit(result)\"\r\n (keypress)=\"clickedResult.emit(result)\" \r\n (dblclick)=\"doubleClickedResult.emit(result)\"\r\n (mouseenter)=\"mouseEnteredResult.emit(result)\"\r\n (mouseleave)=\"mouseLeftResult.emit(result)\"\r\n >\r\n {{ result.name }}\r\n </div>\r\n \r\n <!-- toggle buttons should be removed for now see ALBP-24057 -->\r\n <!-- <div\r\n [attr.data-test]=\"'toggle_visibility_result_' + result.id\"\r\n class=\"ui-icon-checkbox-slider project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n visible: result.isVisible,\r\n invisible: !result.isVisible\r\n }\"\r\n [title]=\"'_Toggle visibility' | translate\"\r\n (click)=\"toggleVisibilityResult.emit(result)\"\r\n ></div> -->\r\n </div>\r\n </lib-expansion-panel>\r\n </div>\r\n </lib-expansion-panel>\r\n </div>\r\n </lib-bimplus-scrollable-container>\r\n\r\n } @else {\r\n <lib-bimplus-text-message\r\n class=\"error-message\"\r\n *ngIf=\"errorMessage\"\r\n [message]=\"errorMessage\"\r\n >\r\n </lib-bimplus-text-message>\r\n }\r\n\r\n <lib-bimplus-buttons-row\r\n [items]=\"buttonRowItems\"\r\n (buttonClicked)=\"buttonClicked($event)\"\r\n >\r\n </lib-bimplus-buttons-row>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusConnectionDesignerService } from \"./bimplus-connection-designer.service\"\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { BimplusSidenavDrawerContentComponent } from '../bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component';\r\nimport { BimplusConnectionDesignerResultsComponent } from '../bimplus-connection-designer-results/bimplus-connection-designer-results.component';\r\nimport { BimplusButtonsRowComponent } from \"../bimplus-buttons-row/bimplus-buttons-row.component\";\r\nimport { BimplusButtonRowItem, BimplusButtonClickEvent } from \"../bimplus-buttons-row/bimplus-buttons-row.interface\";\r\nimport { DesignCode } from './bimplus-connection-designer.interface';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-connection-designer',\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n , FormsModule\r\n , NgSelectModule\r\n , TranslateModule\r\n , BimplusSidenavDrawerContentComponent\r\n , BimplusConnectionDesignerResultsComponent\r\n , BimplusButtonsRowComponent\r\n , BimplusSidenavDrawerContentComponent\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-connection-designer.component.html',\r\n styleUrl: './bimplus-connection-designer.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusConnectionDesignerComponent extends BimplusLocalizedWidgetComponent implements OnInit {\r\n buttonRowItems: Array<BimplusButtonRowItem> = [];\r\n config: Array<BimplusButtonRowItem> = [];\r\n constructor(\r\n translateService: TranslateService\r\n , protected connectionDesignerService: BimplusConnectionDesignerService\r\n ) {\r\n super(translateService);\r\n connectionDesignerService.activeStepChange$.subscribe((step) => {\r\n if (step === 0) {\r\n this.resetDesignCode();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.config.push({\r\n id: \"next\"\r\n , title: this.translateService.instant('_Next')\r\n , tooltip: this.translateService.instant('_Next')\r\n , disabled: true\r\n , buttonStyle: 'primary'\r\n });\r\n this.buttonRowItems = this.config;\r\n }\r\n\r\n // #region Design codes\r\n\r\n chooseCode: string = \"_Choose_a_design_code\"; // Message for drop down list\r\n\r\n // Design method codes defined in SDS2 (see WebSdk Connexis service for possible values)\r\n @Input() designCodes: Array<DesignCode> = [\r\n { id: \"0\", name: \"EN 1993-1-8 (Eurocode 3)\", code: \"EURO05\", codeNumber: 9 },\r\n { id: \"1\", name: \"AISC 360-22 (16th Ed.): LRFD\", code: \"LRFD16\", codeNumber: 19 },\r\n { id: \"2\", name: \"AISC 360-22 (16th Ed.): ASD\", code: \"ASD16\", codeNumber: 18 },\r\n { id: \"3\", name: \"CSA S16:19 (CISC 12th Ed.)\", code: \"CSA12\", codeNumber: 17 },\r\n ];\r\n @Input() currentDesignCode: DesignCode | null = null;\r\n\r\n @Output() designCodeChanged = new EventEmitter<DesignCode | null>();\r\n\r\n set activeDesignCode(value: DesignCode | null) {\r\n this.currentDesignCode = value;\r\n this.designCodeChanged.emit(this.currentDesignCode);\r\n }\r\n\r\n get activeDesignCode(): DesignCode | null {\r\n return this.currentDesignCode;\r\n }\r\n\r\n private _updateButtonState(butonId: string, disabled: boolean) {\r\n const _button = this.config.find(btn => btn.id === butonId);\r\n if (!_button) {\r\n return;\r\n }\r\n _button.disabled = disabled;\r\n }\r\n\r\n private _calculationCanBeStarted: boolean = true;\r\n @Input()\r\n set calculationCanBeStarted(value: boolean) {\r\n this._calculationCanBeStarted = value;\r\n this._updateButtonState(\"next\", !value);\r\n }\r\n get calculationCanBeStarted() {\r\n return this._calculationCanBeStarted;\r\n }\r\n\r\n @Output() startCalculationClicked = new EventEmitter<void>();\r\n\r\n buttonClicked($event: BimplusButtonClickEvent) {\r\n if ($event.id === \"next\") {\r\n this.connectionDesignerService.activeStep = 1;\r\n if (this._calculationCanBeStarted) {\r\n this.startCalculationClicked.emit();\r\n }\r\n }\r\n }\r\n\r\n resetDesignCode() {\r\n this.activeDesignCode = null;\r\n }\r\n // #endregion\r\n}\r\n","<lib-bimplus-sidenav-drawer-content\r\n [header]=\"'_Connection_designer' | translate\"\r\n>\r\n <div class=\"connection-designer-content\">\r\n @if(connectionDesignerService.activeStep === 0) {\r\n <div class=\"cross-button\">\r\n <div class=\"cross\"\r\n (click)=\"resetDesignCode()\"\r\n (keypress)=\"resetDesignCode()\"\r\n >\r\n </div>\r\n </div>\r\n <div class=\"title\">\r\n {{ \"_Select_the_code\" | translate }}\r\n </div>\r\n <div class=\"description\">\r\n {{ \"_Activate_all_objects_to_make_a_connection\" | translate }}\r\n </div>\r\n <div class=\"note\">\r\n {{ \"_Activate_all_objects_note\" | translate }}\r\n </div>\r\n\r\n @if(designCodes.length > 0){\r\n <div class=\"design-codes\">\r\n <ng-select\r\n class=\"design-codes-dropdown\"\r\n [(ngModel)]=\"activeDesignCode\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [placeholder]=\"chooseCode | translate\"\r\n >\r\n <ng-option *ngFor=\"let code of designCodes\" [value]=\"code\">{{\r\n code.name\r\n }}</ng-option>\r\n </ng-select>\r\n </div>\r\n } @else {\r\n <div class=\"no-design-codes\">\r\n {{ \"_No_design_codes_defined\" | translate }}\r\n </div>\r\n }\r\n\r\n <lib-bimplus-buttons-row\r\n [items]=\"buttonRowItems\"\r\n (buttonClicked)=\"buttonClicked($event)\"\r\n ></lib-bimplus-buttons-row>\r\n\r\n } @else {\r\n <ng-content select=\"lib-bimplus-connection-designer-results\"></ng-content>\r\n }\r\n </div>\r\n</lib-bimplus-sidenav-drawer-content>\r\n","// Define the type of the window.BimPlus object\r\nexport interface BimPlusObject {\r\n [key: string]: (dataDetail: { detail: unknown }) => void;\r\n}\r\nexport interface Source {\r\n [key: string]: { emit: (arg0: unknown) => void; };\r\n}\r\n\r\n\r\n/**--------------------------------------------------------------------------\r\n* fire event from component in two ways : \r\n - fire custom event from component in standard recommended way via. this.eventName.emit function\r\n \r\n - call window.BimPlus.eventName function directly on window object (eventName is name\r\n of the event we want to fire e.g. bimplusNavbarClicked so it will be window.BimPlus.bimplusNavbarClicked).\r\n Function must be defined in app. where we are using our components.\r\n This was implemented because MS Edge browser has problems with custom events and in some \r\n situations(e.g. after file download) it stops handling custom events.\r\n Disadvantage is that we can have only one event handler which is shared between the multiple components.\r\n--------------------------------------------------------------------------*/\r\nexport function fireEvent(source: unknown, eventName: string, data: unknown = null){\r\n if ( !eventName ) {\r\n console.error(\"ERROR: Missing event name in fireEvent function in Bimplus components!\");\r\n return;\r\n }\r\n // Check if eventName exists on window.BimPlus and if it's a function\r\n const bimPlus = ('BimPlus' in window) && typeof window.BimPlus === 'object' && (window.BimPlus as BimPlusObject);\r\n if (bimPlus && typeof bimPlus[eventName] === 'function') {\r\n bimPlus[eventName]({detail: data});\r\n }\r\n\r\n const _source = (source as Source);\r\n if (eventName in _source) {\r\n _source[eventName].emit(data);\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-contact',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-contact.component.html',\r\n styleUrl: './bimplus-contact.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusContactComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n @Output() bimplusContactClicked = new EventEmitter<string>();\r\n\r\n _contactClicked(){\r\n fireEvent(this, \"bimplusContactClicked\", \"contact\");\r\n }\r\n}\r\n","<a href=\"https://www.allplan.com/consulting-sale\" \r\n class=\"bimplus-contact-link\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n (click)=\"_contactClicked()\"\r\n [title]=\"'_BimplusContactTitle' | translate\"\r\n>\r\n <div class=\"bimplus-contact\"></div>\r\n</a>","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { fireEvent } from '../utils/utils';\r\n\r\n@Directive({\r\n selector: '[libDraggable]',\r\n standalone: true\r\n})\r\nexport class DraggableDirective {\r\n\r\n oldX = 0;\r\n oldY = 0;\r\n isDragging = false;\r\n wasDragging = false;\r\n isMouseDown = false;\r\n\r\n @Output()\r\n dragging = new EventEmitter<[number,number]>();\r\n\r\n @Output()\r\n dragEnd = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n clicked = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this.isDragging && !this.isMouseDown) {\r\n return;\r\n }\r\n\r\n const deltaX = (event.clientX - this.oldX);\r\n const deltaY = (event.clientY - this.oldY);\r\n\r\n if(!this.isDragging){\r\n if(Math.abs(deltaX) > 2 || Math.abs(deltaY) > 2){\r\n this.isDragging = true;\r\n this.wasDragging = true;\r\n }else{\r\n return;\r\n }\r\n }\r\n fireEvent(this, \"dragging\", [deltaX,deltaY]);\r\n\r\n this.oldX = event.clientX;\r\n this.oldY = event.clientY;\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n onMouseUp() {\r\n if(this.isDragging || this.isMouseDown){\r\n fireEvent(this, \"dragEnd\", ['$event']);\r\n }\r\n this.isDragging = false;\r\n this.isMouseDown = false; \r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n this.isMouseDown = true;\r\n this.wasDragging = false;\r\n this.oldX = event.clientX;\r\n this.oldY = event.clientY; \r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onMouseClick(event: MouseEvent) {\r\n if(!this.wasDragging){\r\n fireEvent(this, \"clicked\", event);\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResizeObserverService {\r\n\r\n private rectSize$: BehaviorSubject<DOMRect |undefined > = new BehaviorSubject<DOMRect|undefined>(undefined);\r\n private internalRectSize :DOMRect = new DOMRect(1,1,1,1);\r\n // Observable that components can subscribe to\r\n public parentAppRect$: Observable<DOMRect | undefined> = this.rectSize$.asObservable();\r\n\r\n constructor() { }\r\n\r\n public setSize(newValue: DOMRect): void {\r\n this.rectSize$.next(newValue); \r\n this.internalRectSize = newValue; \r\n }\r\n\r\n public getParentAppRect ():DOMRect{\r\n if( this.internalRectSize.width<=1 || this.internalRectSize?.height<=1 ) { // not set up with real data yet\r\n const parentView:HTMLElement|null = document.querySelector('.mainView');\r\n if(!parentView){\r\n return this.internalRectSize;\r\n }\r\n return parentView.getBoundingClientRect();\r\n }\r\n return this.internalRectSize;\r\n } \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocalStorageService {\r\n\r\n private storageSubject = new BehaviorSubject<{ key: string, value: unknown } | null>(null);\r\n\r\n constructor() { }\r\n\r\n // Set a string value in localStorage\r\n setItem(key: string, value: string): void {\r\n try {\r\n localStorage.setItem(key, value);\r\n this.storageSubject.next({ key, value });\r\n } catch (e) {\r\n console.error('Error saving to localStorage', e);\r\n }\r\n }\r\n\r\n // Get a string value from localStorage\r\n getItem(key: string): string | null {\r\n try {\r\n return localStorage.getItem(key);\r\n } catch (e) {\r\n console.error('Error reading from localStorage', e);\r\n return null;\r\n }\r\n }\r\n\r\n // Remove an item from localStorage\r\n removeItem(key: string): void {\r\n try {\r\n localStorage.removeItem(key);\r\n this.storageSubject.next({ key, value: null });\r\n } catch (e) {\r\n console.error('Error removing from localStorage', e);\r\n }\r\n }\r\n\r\n // Clear all items in localStorage\r\n clear(): void {\r\n try {\r\n localStorage.clear();\r\n this.storageSubject.next(null);\r\n } catch (e) {\r\n console.error('Error clearing localStorage', e);\r\n }\r\n }\r\n\r\n // Set an object in localStorage\r\n setObject(key: string, value: unknown): void {\r\n this.setItem(key, JSON.stringify(value));\r\n }\r\n\r\n // Get an object from localStorage\r\n getObject(key: string): unknown {\r\n const value = this.getItem(key);\r\n return value ? JSON.parse(value) : null;\r\n }\r\n\r\n // Watch for changes in localStorage\r\n watchStorage(): Observable<{ key: string, value: unknown } | null> {\r\n return this.storageSubject.asObservable();\r\n }\r\n}\r\n","import { ElementRef,Injectable } from '@angular/core';\r\nimport { ResizeObserverService } from './resize-observer.service';\r\nimport { LocalStorageService } from './local-storage.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\n//import { ItemsList } from '@ng-select/ng-select/lib/items-list';\r\n//import { NotFoundError } from 'rxjs';\r\n\r\n\r\nexport interface LayoutManagerItem {\r\n element:ElementRef;\r\n id: string;\r\n selector?:string;\r\n isCollapsed:boolean;\r\n rememberPosition?:boolean\r\n left?: number;\r\n top?:number;\r\n width?:number;\r\n height?:number;\r\n}\r\n\r\nexport interface LayoutManagerConfigItem {\r\n id: string;\r\n isCollapsed:boolean; \r\n left?: number;\r\n top?:number; \r\n width?:number;\r\n height?:number;\r\n}\r\n\r\n\r\ninterface LayoutManagerConfig {\r\n [key:string]: LayoutManagerConfigItem\r\n}\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LayoutManagerService {\r\n\r\n registeredItems$: BehaviorSubject<LayoutManagerItem[]> = new BehaviorSubject<LayoutManagerItem[]>([])\r\n constructor(private resizeObserverService:ResizeObserverService,\r\n private localStorageService :LocalStorageService \r\n ) { }\r\n private registeredItems:LayoutManagerItem[] = [];\r\n \r\n get RegisteredItems(): LayoutManagerItem[] {\r\n return this.registeredItems;\r\n }\r\n CONFIG:string = 'layoutManagerConfig';\r\n\r\n \r\n/**--------------------------------------------------------------------------\r\n * register object. object must have unique id or elementId\r\n --------------------------------------------------------------------------*/\r\n registerObject(obj:ElementRef, id:string, selector:string | undefined, rememberPosition:boolean,left:number = 100, top:number = 100,width:number = 0, height:number = 0) {\r\n let foundIndex = -1;\r\n if(this.registeredItems.some((item,index) => {\r\n const retval = item.id === id;\r\n if(retval){\r\n foundIndex = index;\r\n }\r\n return retval;\r\n })){\r\n if(foundIndex >= 0){\r\n this.registeredItems.splice(foundIndex,1);\r\n } \r\n }\r\n const newItem: LayoutManagerItem = { \r\n element:obj,\r\n id:id,\r\n selector:selector,\r\n rememberPosition:!!rememberPosition,\r\n left:left,\r\n top:top,\r\n width:width,\r\n height:height,\r\n isCollapsed: false \r\n };\r\n\r\n this.registeredItems.push(newItem);\r\n this.registeredItems$.next(this.registeredItems);\r\n this._initObject(newItem);\r\n }\r\n \r\n _initObject(obj:LayoutManagerItem){\r\n this._adjustObjectByConfig(obj);\r\n this._adjustObjectByWindowSize(obj);\r\n \r\n }\r\n /**--------------------------------------------------------------------------\r\n * get object configuration\r\n * return {left, top, width, heigth}\r\n --------------------------------------------------------------------------*/\r\n _getObjectConfig(obj:LayoutManagerItem):LayoutManagerConfigItem|null {\r\n if(!obj){\r\n return null;\r\n }\r\n const configValue = this.localStorageService.getItem(this.CONFIG);\r\n const config = configValue ? JSON.parse(configValue) : {};\r\n const objId = obj.id ;\r\n let configObj = config[objId];\r\n if(!configObj) {\r\n configObj = {id:objId,left:obj.left,top:obj.top,width:obj.width,height:obj.height}; \r\n }\r\n return configObj;\r\n }\r\n\r\n _adjustObjectByConfig(obj:LayoutManagerItem){\r\n const config:LayoutManagerConfigItem|null = this._getObjectConfig(obj);\r\n if(!config){\r\n return; \r\n }\r\n const parentElement = this._getDomParentElement(obj);\r\n const internalElement = this._getDomInternalElement(obj,'');\r\n if(!parentElement || !internalElement){\r\n return;\r\n }\r\n parentElement.style.left = (config.left) + 'px';\r\n parentElement.style.top = (config.top) + 'px';\r\n if(config.width && config.width > 0){\r\n internalElement.style.width = config.width + 'px';\r\n }\r\n if(config.height && config.height > 0){\r\n internalElement.style.height = config.height + 'px';\r\n }\r\n \r\n this.checkPosition(obj.id,\"\",undefined,0,0,true); \r\n }\r\n\r\n _adjustObjectByWindowSize(obj:LayoutManagerItem){\r\n this.checkPosition(obj.id,\"\",undefined,0,0,true); \r\n }\r\n \r\n /**--------------------------------------------------------------------------\r\n * returns object registered in the layout manager \r\n --------------------------------------------------------------------------*/\r\n getItem(id: string ):LayoutManagerItem|null { \r\n let foundItem:LayoutManagerItem|null = null;\r\n this.registeredItems.forEach(item =>{\r\n if(item.id === id){\r\n foundItem = item;\r\n }\r\n });\r\n return foundItem;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * set object configuration\r\n --------------------------------------------------------------------------*/\r\n _setObjectConfig(obj:LayoutManagerItem, left:number,top:number,width:number,height:number) {\r\n const objId = obj?.id ;\r\n if (!objId) {\r\n return;\r\n }\r\n let config = this.localStorageService.getObject(this.CONFIG) as LayoutManagerConfig;\r\n //let config = configValue && JSON.parse(configValue) as LayoutManagerConfig;\r\n if (!config) {\r\n config = {};\r\n }\r\n if(obj?.isCollapsed){ // do not overtake collapsed size\r\n if (!config[objId]) { \r\n config[objId] = obj;\r\n }\r\n config[objId].left = left;\r\n config[objId].top = top;\r\n //config[objId].width = width;\r\n //config[objId].height = height ;\r\n this.localStorageService.setObject(this.CONFIG, config);\r\n return;\r\n }\r\n\r\n const newItem :LayoutManagerConfigItem = {\r\n id: objId,\r\n isCollapsed: false,\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height\r\n };\r\n config[objId] = newItem;\r\n this.localStorageService.setObject(this.CONFIG,config);\r\n }\r\n \r\n getDomParentElement(id:string ):HTMLElement|null {\r\n const item:LayoutManagerItem|null = this.getItem(id);\r\n if(item){\r\n return this._getDomParentElement(item);\r\n }\r\n return null;\r\n }\r\n\r\n _getDomParentElement(item:LayoutManagerItem ):HTMLElement|null {\r\n let element:HTMLElement;\r\n if(item.element?.nativeElement?.shadowRoot){\r\n element = item.element?.nativeElement?.shadowRoot.querySelector(item.selector);\r\n } else {\r\n element = item.element?.nativeElement; \r\n }\r\n if(!element){\r\n console.error('_getDomParentElement: missing element');\r\n return null;\r\n }\r\n return element; \r\n }\r\n\r\n _getDomInternalElement(item:LayoutManagerItem,selector:string | undefined ):HTMLElement|null {\r\n const element:HTMLElement = item.element?.nativeElement?.shadowRoot || item.element?.nativeElement; \r\n if(!element){\r\n console.error('_getDomInternalElement: missing element');\r\n return null;\r\n }\r\n const mySelector =selector && selector?.length > 0 ?selector:item.selector; \r\n const retval: HTMLElement|null= mySelector?element.querySelector(mySelector):element;\r\n if(!retval){\r\n console.error(`_getDomInternalElement: selection of element ${element} failed with selector ${mySelector}`);\r\n }\r\n return retval;\r\n }\r\n\r\n\r\n _getElementRect(item:LayoutManagerItem,selector:string | undefined ,parentRectangle:DOMRect |undefined ):DOMRect | null{\r\n const selectedObj : HTMLElement|null = this._getDomInternalElement(item,selector);\r\n if(!selectedObj){\r\n console.error('_getElementRect: missing selected object');\r\n return null;\r\n }\r\n\r\n const parentRect:DOMRect = parentRectangle || this.resizeObserverService.getParentAppRect();\r\n if( !parentRect || parentRect?.width<=1 || parentRect?.height<=1 ) {\r\n console.log('_getElementRect: missing parent rect');\r\n }\r\n const elementRect:DOMRect|null = selectedObj.getBoundingClientRect();\r\n if(!elementRect){\r\n console.error('_getElementRect: missing bounding rect');\r\n }\r\n return elementRect;\r\n }\r\n\r\n // checks whether element or element with additional selection of subelement is placed within the give rectangle\r\n // if not then calculates the offset to be moved to fit in\r\n checkPosition(id:string,selector:string,parentRectangle:DOMRect|undefined ,deltaX:number,deltaY:number,forceCheck:boolean = false){\r\n if(!id){\r\n return {deltaX:0,deltaY:0};\r\n }\r\n const e1 = this.getItem(id);\r\n if(!e1){\r\n return {deltaX:0,deltaY:0};\r\n }\r\n const parentRect:DOMRect = parentRectangle || this.resizeObserverService.getParentAppRect();\r\n const elementRect:DOMRect | null = this._getElementRect(e1,selector,parentRect);\r\n if(!elementRect){\r\n console.error('checkPosition: missing elementRect');\r\n return {deltaX:0,deltaY:0};\r\n }\r\n \r\n if(!elementRect?.width || !elementRect?.height){\r\n console.error('checkPosition:element rect empty ');\r\n return {deltaX:0,deltaY:0};\r\n } \r\n \r\n let checkAll = true;\r\n if(parentRect?.width < 2 || parentRect?.height < 2){ // empty parent rect , (after init before first usefull info) nothing to check \r\n checkAll = false; \r\n } \r\n if(checkAll){\r\n let checkBoundaries = true;\r\n if(this._isInsideRect(elementRect, parentRect) === false && !forceCheck) {\r\n checkBoundaries = false;\r\n }\r\n \r\n // copy of real element rectangle to perform calculation over before set to the real element\r\n const elementDOMRect = DOMRect.fromRect(elementRect);\r\n\r\n //set the element rectangle by deltas\r\n this._translateRectangle(elementDOMRect, deltaX, deltaY);\r\n\r\n if(checkBoundaries) {\r\n if(this._isInsideRect(elementDOMRect, parentRect) === false) {\r\n const newElementPos = this.getAlignedPosition(elementDOMRect, parentRect);\r\n deltaX = newElementPos.x - elementRect.x;\r\n deltaY = newElementPos.y - elementRect.y;\r\n this._translateRectangle(elementDOMRect, deltaX, deltaY);\r\n }\r\n } else {\r\n if (this._isInsideLeftTopRect(parentRect, elementDOMRect) === false) {\r\n const newElementPos = this._getAlignedLeftTopPosition(elementDOMRect, parentRect);\r\n deltaX = newElementPos.x - elementRect.x;\r\n deltaY = newElementPos.y - elementRect.y;\r\n this._translateRectangle(elementDOMRect, deltaX, deltaY);\r\n }\r\n }\r\n }\r\n\r\n const selectedElement = this._getDomParentElement(e1);\r\n if(!selectedElement){\r\n return;\r\n }\r\n const computedStyle = window.getComputedStyle(selectedElement);\r\n const top = parseInt(computedStyle.top, 10);\r\n const left = parseInt(computedStyle.left, 10);\r\n selectedElement.style.top = (top + deltaY) + 'px';\r\n selectedElement.style.left = (left + deltaX) + 'px';\r\n return {deltaX,deltaY};\r\n }\r\n /**--------------------------------------------------------------------------\r\n * find if rectangle 1 is inside rectangle 2\r\n --------------------------------------------------------------------------*/\r\n _isInsideRect(r1:DOMRect, r2:DOMRect) {\r\n if(!r1 || !r2) {\r\n return false;\r\n }\r\n return r2.left <= r1.left && r2.top <= r1.top && r2.right >= r1.right && r2.bottom >= r1.bottom;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * find if rectangles do not overlap the left and top sides\r\n --------------------------------------------------------------------------*/\r\n _isInsideLeftTopRect(r1:DOMRect, r2:DOMRect) {\r\n if(!r1 || !r2) {\r\n return false;\r\n }\r\n const r1Inside = r2.left <= r1.left && r2.top <= r1.top;\r\n const r2Inside = r1.left <= r2.left && r1.top <= r2.top;\r\n return r1Inside || r2Inside;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * get position of r1 aligned with the r2 sides\r\n --------------------------------------------------------------------------*/\r\n getAlignedPosition(r1:DOMRect, r2:DOMRect) {\r\n if(!r1 || !r2) {\r\n return {x:0,y:0};\r\n }\r\n const to = { x: r1.x, y: r1.y };\r\n //align left or right sides. preferably left\r\n if(r1.left < r2.left) {\r\n to.x = r2.x;\r\n } else if(r1.right > r2.right) {\r\n to.x = r2.right - r1.width;\r\n }\r\n //align top or bottom. preferably top\r\n if(r1.top < r2.top) {\r\n to.y = r2.y;\r\n } else if(r1.bottom > r2.bottom) {\r\n to.y = r2.bottom - r1.height;\r\n }\r\n return to;\r\n }\r\n \r\n /**--------------------------------------------------------------------------\r\n * get position of r1 aligned with the r2 left, top sides\r\n --------------------------------------------------------------------------*/\r\n _getAlignedLeftTopPosition(r1:DOMRect, r2:DOMRect) {\r\n if(!r1 || !r2) {\r\n return {x:0,y:0};\r\n }\r\n\r\n const to = { x: r1.x, y: r1.y };\r\n //align left\r\n if(r1.left < r2.left) {\r\n to.x = r2.x;\r\n }\r\n //align top\r\n if(r1.top < r2.top) {\r\n to.y = r2.y;\r\n }\r\n return to;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * translate rectangle by x, y\r\n --------------------------------------------------------------------------*/\r\n _translateRectangle(rect:DOMRect, translateX:number, translateY:number) {\r\n if(!rect) {\r\n return;\r\n }\r\n rect.x += translateX;\r\n rect.y += translateY;\r\n return rect;\r\n }\r\n \r\n updateCollapsed(value:boolean, id:string = ''):void{ \r\n const foundItem = this.getItem(id);\r\n if(!foundItem){\r\n return;\r\n }\r\n foundItem.isCollapsed = value;\r\n this.registeredItems$.next(this.registeredItems);\r\n setTimeout(()=>{ \r\n this.checkPosition(foundItem.id,\"\",undefined,0,0,true); \r\n });\r\n } \r\n\r\n\r\n handleDragEnd(id:string){//},left:number,top:number){\r\n this.finalizeObjectChanges(id);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * finalize object changes (position). object must be registered in the layout manager\r\n * object: object to finalize \r\n --------------------------------------------------------------------------*/\r\n finalizeObjectChanges(id:string):void {\r\n const item:LayoutManagerItem|null = this.getItem(id);\r\n if(!item){\r\n return;\r\n }\r\n const element = this._getDomParentElement(item);\r\n if(!element){\r\n return;\r\n }\r\n const computedStyle = window.getComputedStyle(element); \r\n const top = parseInt(computedStyle.top, 10);\r\n const left = parseInt(computedStyle.left, 10);\r\n \r\n const elementRect = this._getElementRect(item,undefined,undefined);\r\n this._setObjectConfig(item,left,top,\r\n elementRect && elementRect.width > 0 ? elementRect.width:0 ,\r\n elementRect && elementRect.height > 0 ? elementRect.height:0);\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { DraggableDirective } from '../../directives/draggable.directive';\r\nimport { LayoutManagerService } from '../../services/layout-manager.service';\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-dragger',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DraggableDirective,\r\n ],\r\n templateUrl: './bimplus-floating-bar-dragger.component.html',\r\n styleUrl: './bimplus-floating-bar-dragger.component.less',\r\n})\r\nexport class BimplusFloatingBarDraggerComponent {\r\n constructor ( private layoutManagerService: LayoutManagerService){\r\n }\r\n // Define isCollapsed as a boolean property\r\n @Input() isCollapsed: boolean = false;\r\n @Input() parentId:string = '';\r\n \r\n // Define icon as a string property with a default value\r\n draggerIcon: string = 'ui-icon-drag';\r\n \r\n \r\n onDragEnd(){\r\n this.layoutManagerService.handleDragEnd(this.parentId);\r\n }\r\n \r\n dragBaseElement(event: [number, number]): void {\r\n const deltaX1 = event[0];\r\n const deltaY1 = event[1]; \r\n this.layoutManagerService.checkPosition(this.parentId,\"\",undefined,deltaX1,deltaY1) \r\n }\r\n}\r\n","<div\r\n class=\"floating-panel__dragger dragger\"\r\n [ngClass] = \"isCollapsed ? 'collapsed' : ''\"\r\n [className]=\"draggerIcon\"\r\n libDraggable \r\n (dragEnd)=\"onDragEnd()\"\r\n (dragging)=\"dragBaseElement($event)\"\r\n>\r\n</div>\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, signal } from '@angular/core';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { FloatingBarItem } from '../bimplus-floating-bar/bimplus-floating-bar.interface';\r\nimport { DraggableDirective } from '../../directives/draggable.directive';\r\nimport { LayoutManagerService, LayoutManagerItem } from '../../services/layout-manager.service';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-header-content',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DraggableDirective,\r\n TranslateModule,\r\n ],\r\n providers: [\r\n TranslateService\r\n ],\r\n templateUrl: './bimplus-floating-bar-header-content.component.html',\r\n styleUrl: './bimplus-floating-bar-header-content.component.less',\r\n})\r\nexport class BimplusFloatingBarHeaderContentComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService,private layoutManagerService:LayoutManagerService) {\r\n super(translateService)\r\n \r\n this.layoutManagerService.registeredItems$.subscribe((items: LayoutManagerItem[]) => {\r\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.parentId); \r\n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \r\n }) \r\n }\r\n\r\n @Input() isCollapsed: boolean = false;\r\n @Input() parentId:string = '';\r\n @Output() actionClicked = new EventEmitter<string>();\r\n\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'items' }) set itemsValue(value: Array<FloatingBarItem>) {\r\n this.items.set(value);\r\n }\r\n protected readonly items = signal<FloatingBarItem[]>([]);\r\n\r\n findItemById(id: string): FloatingBarItem | undefined {\r\n return this.items().find(x => x.buttonId === id);\r\n }\r\n\r\n onItemClicked(action: string) {\r\n const item = this.findItemById(action);\r\n if (!item || item?.disabled) {\r\n return;\r\n }\r\n this.actionClicked.emit(action);\r\n }\r\n onDragEnd(){\r\n this.layoutManagerService.handleDragEnd(this.parentId);\r\n }\r\n \r\n dragBaseElement(event: [number, number]): void {\r\n const deltaX1 = event[0];\r\n const deltaY1 = event[1]; \r\n this.layoutManagerService.checkPosition(this.parentId,\"\",undefined,deltaX1,deltaY1) \r\n }\r\n}\r\n","<div\r\n class=\"floating-panel__header-content dragger\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n libDraggable \r\n (dragEnd)=\"onDragEnd()\"\r\n (dragging)=\"dragBaseElement($event)\"\r\n>\r\n <div class=\"menu-content\">\r\n <div *ngFor=\"let item of items()\">\r\n <div\r\n [attr.data-test]=\"'floating_bar_item_' + item.buttonId\"\r\n class=\"fp-block-item fp-block-icon-item\"\r\n [ngClass]=\"{\r\n active: item.active\r\n }\"\r\n [className]=\"item.iconClass\"\r\n [title]=\"item.title | translate\"\r\n (click)=\"onItemClicked(item.buttonId)\"\r\n (keypress)=\"onItemClicked(item.buttonId)\" \r\n ></div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, HostBinding, OnInit } from '@angular/core';\r\nimport { DraggableDirective } from '../../directives/draggable.directive'\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { LayoutManagerItem, LayoutManagerService } from '../../services/layout-manager.service';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-header-logo',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DraggableDirective,\r\n TranslateModule,\r\n ],\r\n providers: [\r\n TranslateService\r\n ],\r\n templateUrl: './bimplus-floating-bar-header-logo.component.html',\r\n styleUrl: './bimplus-floating-bar-header-logo.component.less',\r\n})\r\nexport class BimplusFloatingBarHeaderLogoComponent extends BimplusLocalizedWidgetComponent implements OnInit\r\n{\r\n constructor(translateService: TranslateService,\r\n private layoutManagerService: LayoutManagerService\r\n ) { \r\n super(translateService)\r\n\r\n }\r\n\r\n @Input() icon: string = \"\";\r\n @HostBinding('class.isCollapsed')\r\n @Input() isCollapsed: boolean = false;\r\n @Input() parentId: string = '';\r\n\r\n @Input() title: string = \"\";\r\n\r\n ngOnInit(){\r\n this.layoutManagerService.registeredItems$.subscribe((items: LayoutManagerItem[]) => {\r\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.parentId); \r\n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \r\n })\r\n }\r\n\r\n onLogoClicked(){\r\n this.layoutManagerService.updateCollapsed(!this.isCollapsed,this.parentId)\r\n }\r\n \r\n onDragEnd(){\r\n this.layoutManagerService.handleDragEnd(this.parentId);\r\n }\r\n \r\n dragBaseElement(event: [number, number]): void {\r\n const deltaX1 = event[0];\r\n const deltaY1 = event[1]; \r\n this.layoutManagerService.checkPosition(this.parentId,\"\",undefined,deltaX1,deltaY1) \r\n }\r\n}\r\n","<div\r\n class=\"floating-panel__header-logo\"\r\n [ngClass]=\"isCollapsed ? 'collapsed' : ''\"\r\n [className]=\"icon\"\r\n [title]=\"title | translate\"\r\n libDraggable\r\n (clicked)=\"onLogoClicked()\" \r\n (dragEnd)=\"onDragEnd()\"\r\n (dragging)=\"dragBaseElement($event)\"\r\n></div>\r\n","//import { Directive, ElementRef , HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { Directive, ElementRef , Output, EventEmitter , OnInit, OnDestroy} from '@angular/core';\r\nimport { LayoutManagerService } from '../services/layout-manager.service';\r\nimport { ResizeObserverService } from '../services/resize-observer.service';\r\nimport { fireEvent } from '../utils/utils';\r\n\r\ninterface ResizerItem {\r\n 'className' : string ,\r\n 'resizeStrategy' : string \r\n}\r\n\r\ninterface ResizableElement extends HTMLElement{\r\n resizeStrategy?: string;\r\n}\r\n\r\n@Directive({\r\n selector: '[libResizable]',\r\n standalone: true\r\n})\r\n\r\nexport class ResizableDirective implements OnDestroy, OnInit{\r\n resizeContactPointX = 0;\r\n resizeContactPointY = 0;\r\n resizableElements:ResizableElement[] = [];\r\n resizeEnabled = true;\r\n resizeStarted = false;\r\n resizeStart : (event: MouseEvent | TouchEvent) => void;\r\n resizeInProgress: (event: MouseEvent | TouchEvent) => void; \r\n boundResizeStart: (event: MouseEvent | TouchEvent) => void;\r\n boundResizeInProgress: (event: MouseEvent | TouchEvent) => void;\r\n boundResizeEnd: (event: MouseEvent | TouchEvent) => void;\r\n \r\n _element:HTMLElement; \r\n actResizeStrategy = \"se\";\r\n \r\n\r\n @Output()\r\n resizedEnd = new EventEmitter<MouseEvent>();\r\n\r\n\r\n // list of resizers, resizers are specified by class name\r\n resizersList:ResizerItem[] = [ \r\n { className : \"resizer-nw\" , resizeStrategy : \"nw\" },\r\n { className : \"resizer-n\" , resizeStrategy: \"n\" },\r\n { className : \"resizer-ne\" , resizeStrategy: \"ne\" },\r\n { className : \"resizer-e\" , resizeStrategy: \"e\" },\r\n { className : \"resizer-se\" , resizeStrategy: \"se\" },\r\n { className : \"resizer-s\" , resizeStrategy: \"s\" },\r\n { className : \"resizer-sw\" , resizeStrategy: \"sw\" },\r\n { className : \"resizer-w\" , resizeStrategy: \"w\" }\r\n ];\r\n \r\n constructor(private elementRef: ElementRef,\r\n private layoutManagerService: LayoutManagerService,\r\n private resizeObserverService:ResizeObserverService) { \r\n \r\n this._element = elementRef.nativeElement;\r\n this.layoutManagerService = layoutManagerService;\r\n \r\n this.resizeStart = (event:MouseEvent|TouchEvent) => {\r\n //get mouse/finger X Y positions\r\n event.stopPropagation();\r\n if(this.resizeStarted){\r\n return;\r\n }\r\n this.resizeStarted = true;\r\n const touchList = (event as TouchEvent).targetTouches? (event as TouchEvent).targetTouches: [];\r\n const clientX = event.type === 'touchstart' ? touchList[0]?.clientX : (event as MouseEvent).clientX;\r\n const clientY = event.type === 'touchstart' ? touchList[0]?.clientY : (event as MouseEvent).clientY;\r\n this.resizeContactPointX = clientX;\r\n this.resizeContactPointY = clientY;\r\n this.openDocumentListenersResize(); \r\n this.setupResizeStrategy(event);\r\n }\r\n \r\n /**--------------------------------------------------------------------------\r\n * calcuates and sets the new position\r\n --------------------------------------------------------------------------*/\r\n this.resizeInProgress = (event:MouseEvent|TouchEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n //get mouse/finger X Y positions\r\n const touchList = (event as TouchEvent).targetTouches ? (event as TouchEvent).targetTouches: [];\r\n const clientX = event.type === 'touchmove' ? touchList[0]?.clientX : (event as MouseEvent).clientX;\r\n const clientY = event.type === 'touchmove' ? touchList[0]?.clientY : (event as MouseEvent).clientY;\r\n //const clientX = (event as MouseEvent).clientX;\r\n //const clientY = (event as MouseEvent).clientY;\r\n\r\n const moved = this.resizeFromTo(this._element,this.resizeContactPointX, this.resizeContactPointY,clientX,clientY, this.actResizeStrategy);\r\n if(moved) {\r\n this.resizeContactPointX = clientX;\r\n this.resizeContactPointY = clientY;\r\n }\r\n }\r\n this.boundResizeStart = this.resizeStart.bind(this);\r\n this.boundResizeInProgress = this.resizeInProgress.bind(this);\r\n this.boundResizeEnd = this.resizeEnd.bind(this);\r\n this.resizeInProgress.bind(this);\r\n this.setResizers(this._element); \r\n }\r\n ngOnInit(): void {\r\n this.boundResizeStart = this.resizeStart.bind(this);\r\n this.boundResizeInProgress = this.resizeInProgress.bind(this);\r\n this.boundResizeEnd = this.resizeEnd.bind(this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeAllListenersResize(); \r\n }\r\n\r\n resizeEnd(){ \r\n //this.closeDocumentListenersResize();\r\n if(!this.resizeStarted){\r\n return;\r\n } \r\n this.resizeStarted = false;\r\n this.closeAllListenersResize(); \r\n this.openElementListenersResize();\r\n fireEvent(this, \"resizedEnd\", ['$event']); \r\n }\r\n \r\n\r\n _getViewRect() {\r\n const view = document.getElementById('#containerView'); // we should get here the parent object selector as input parameter\r\n if(view){\r\n return view.getBoundingClientRect();\r\n }\r\n return new DOMRect(0,0,0,0);\r\n }\r\n\r\n/**--------------------------------------------------------------------------\r\n * find if rectangle 1 is inside rectangle 2\r\n --------------------------------------------------------------------------*/\r\n isInsideRect(rect1:DOMRect, rect2:DOMRect) {\r\n if(!rect1 || !rect2) {\r\n return false;\r\n }\r\n const rect1Inside:boolean = rect2.left <= rect1.left\r\n && rect2.top <= rect1.top \r\n && rect2.right >= rect1.right \r\n && rect2.bottom >= rect1.bottom;\r\n\r\n return rect1Inside;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * resize rectangle by x, y\r\n --------------------------------------------------------------------------*/\r\n _resizeRectangle(rect:DOMRect, resizeX:number, resizeY:number, resizeStrategy:string) {\r\n if(!rect) {\r\n return;\r\n }\r\n\r\n if(['nw','w', 'sw'].includes(resizeStrategy)) {\r\n rect.x += resizeX;\r\n resizeX = resizeX * -1;\r\n }\r\n\r\n if(['nw','n', 'ne'].includes(resizeStrategy)) {\r\n rect.y += resizeY;\r\n resizeY = resizeY * -1;\r\n }\r\n\r\n if(typeof(resizeX) === 'number' && !['n','s'].includes(resizeStrategy)) {\r\n rect.width += resizeX;\r\n }\r\n\r\n if(typeof(resizeY) === 'number' && !['w','e'].includes(resizeStrategy)) {\r\n rect.height += resizeY;\r\n }\r\n\r\n return rect;\r\n }\r\n\r\n _maxHeightReset(obj:HTMLElement, elementRect:DOMRect) { \r\n this.resizeFromTo(obj, elementRect.right, elementRect.bottom, elementRect.left,elementRect.top, \"se\");\r\n }\r\n\r\n /*--------------------------------------------------------------------\r\n * resize object from {x,y} to {x,y} based on resize strategy\r\n --------------------------------------------------------------------------*/\r\n resizeFromTo (obj:HTMLElement, fromX:number, fromY:number, toX:number,toY:number, resizeStrategy:string){\r\n const posXDelta = toX - fromX;\r\n const posYDelta = toY - fromY;\r\n const element = obj ?? this._element;\r\n const elementRect = element.getBoundingClientRect();\r\n //const viewRect = this._getViewRect();\r\n const viewRect = this.resizeObserverService.getParentAppRect();\r\n \r\n let checkBoundaries = true;\r\n\r\n resizeStrategy = resizeStrategy || \"se\";\r\n\r\n //if the object is outside the view rect because it's bigger, do not check boundaries,\r\n //allow moving outside the view rect\r\n if(this.isInsideRect(elementRect, viewRect) === false) {\r\n checkBoundaries = false; \r\n }\r\n\r\n this._resizeRectangle(elementRect, posXDelta, posYDelta, resizeStrategy);\r\n\r\n if (checkBoundaries && this.isInsideRect(elementRect, viewRect) === false) {\r\n return false;\r\n }\r\n \r\n const computedStyle = window.getComputedStyle(element);\r\n let top = parseInt(computedStyle.top, 10);\r\n let left = parseInt(computedStyle.left, 10);\r\n let width = parseInt(computedStyle.width, 10);\r\n let height = parseInt(computedStyle.height, 10);\r\n \r\n if(['nw','w', 'sw'].includes(resizeStrategy)) {\r\n left = left + posXDelta; \r\n }\r\n\r\n if(['nw','n', 'ne'].includes(resizeStrategy)) {\r\n top = top + posYDelta; \r\n }\r\n\r\n if(!['n','s'].includes(resizeStrategy)) {\r\n width = elementRect.width;\r\n }\r\n \r\n if( viewRect.height < elementRect.height ){\r\n this._maxHeightReset(element, elementRect);\r\n }\r\n else if(!['w','e'].includes(resizeStrategy)) {\r\n height = elementRect.height;\r\n }\r\n\r\n \r\n element.style.top = top + 'px';\r\n element.style.left = left + 'px';\r\n element.style.width = width + 'px';\r\n element.style.height = height + 'px';\r\n\r\n return true;\r\n }\r\n/**--------------------------------------------------------------------------\r\n * resize start at the layout managaer\r\n * open document listeners\r\n --------------------------------------------------------------------------*/\r\n \r\n /**--------------------------------------------------------------------------\r\n * set the elements used for resizing\r\n --------------------------------------------------------------------------*/\r\n setResizers(element:HTMLElement) {\r\n const setResizableElements = () => {\r\n let resizableElements:ResizableElement[] = [];\r\n // get dom elements of all resizers\r\n this.resizersList.forEach( item => {\r\n const resizeElems = element.getElementsByClassName(item.className);\r\n if( resizeElems?.length ) {\r\n // set resize strategy in each element so we know in which direction to resize\r\n const decoratedResizeElems: ResizableElement[] = Array.from(resizeElems).map( elem => {\r\n const resizableElem = elem as ResizableElement;\r\n resizableElem.resizeStrategy = item.resizeStrategy;\r\n return resizableElem;\r\n });\r\n\r\n // add it to list of all resizers\r\n resizableElements = [...resizableElements, ...decoratedResizeElems];\r\n }\r\n });\r\n\r\n this.resizableElements = [...resizableElements];\r\n this.openElementListenersResize();\r\n }\r\n setTimeout(()=>{\r\n setResizableElements();\r\n });\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * open mousedown, touchstart listeners on all elements allowed for resizing\r\n --------------------------------------------------------------------------*/\r\n openElementListenersResize() {\r\n this.resizableElements.forEach(element => {\r\n element.addEventListener('mousedown', this.boundResizeStart);\r\n element.addEventListener('touchstart', this.boundResizeStart);\r\n });\r\n }\r\n /**--------------------------------------------------------------------------\r\n * open mouseup, touchend and mousemove, touchmove on document\r\n --------------------------------------------------------------------------*/\r\n openDocumentListenersResize() {\r\n document.addEventListener('mouseup', this.boundResizeEnd);\r\n document.addEventListener('touchend', this.boundResizeEnd);\r\n document.addEventListener('mousemove', this.boundResizeInProgress);\r\n document.addEventListener('touchmove', this.boundResizeInProgress); \r\n }\r\n \r\n /**--------------------------------------------------------------------------\r\n * close mouseup, touchend and mousemove, touchmove on document\r\n --------------------------------------------------------------------------*/\r\n closeDocumentListenersResize() {\r\n document.removeEventListener('mousemove', this.boundResizeInProgress);\r\n document.removeEventListener('touchmove', this.boundResizeInProgress);\r\n document.removeEventListener('mouseup', this.boundResizeEnd);\r\n document.removeEventListener('touchend', this.boundResizeEnd);\r\n }\r\n\r\n/**--------------------------------------------------------------------------\r\n * close mousedown, touchstart listeners on all elements allowed for resizing\r\n --------------------------------------------------------------------------*/\r\n closeElementListenersResize() {\r\n this.resizableElements.forEach(element => {\r\n element.removeEventListener('mousedown', this.boundResizeStart);\r\n element.removeEventListener('touchstart', this.boundResizeStart);\r\n element.removeEventListener('mousemove', this.boundResizeInProgress);\r\n element.removeEventListener('touchmove', this.boundResizeInProgress); \r\n element.removeEventListener('mouseup', this.boundResizeEnd);\r\n element.removeEventListener('touchend', this.boundResizeEnd);\r\n });\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close all listeners\r\n --------------------------------------------------------------------------*/\r\n closeAllListenersResize() {\r\n this.closeElementListenersResize();\r\n this.closeDocumentListenersResize();\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * setup actual resize strategy\r\n --------------------------------------------------------------------------*/\r\n setupResizeStrategy(event: MouseEvent | TouchEvent) {\r\n if( !event ) {\r\n return;\r\n }\r\n\r\n // find on which element resize started so we know in which direction to resize\r\n let resizeStrategy:string = \"se\";\r\n const resizeSourceElem = event?.target;\r\n\r\n if( resizeSourceElem ) {\r\n const foundElem = this.resizableElements.find( item => item === resizeSourceElem );\r\n if (foundElem?.resizeStrategy) {\r\n resizeStrategy = foundElem?.resizeStrategy;\r\n }\r\n }\r\n\r\n this.actResizeStrategy = resizeStrategy;\r\n }\r\n}\r\n","//import { Component, HostBinding, Input,Output,EventEmitter, ElementRef, AfterViewChecked,ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core';\r\n//import { Component, Input,Output,EventEmitter, ElementRef, AfterViewChecked,ChangeDetectorRef, OnInit, OnDestroy, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Component, Input, ElementRef, AfterViewChecked,ChangeDetectorRef, OnInit, OnDestroy,AfterViewInit} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { BimplusFloatingBarDraggerComponent } from '../bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component';\r\nimport { BimplusFloatingBarHeaderContentComponent } from '../bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component';\r\nimport { BimplusFloatingBarHeaderLogoComponent } from '../bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component';\r\nimport { DraggableDirective } from '../../directives/draggable.directive'\r\nimport { ResizableDirective } from '../../directives/resizable.directive'\r\nimport { LayoutManagerItem, LayoutManagerService } from '../../services/layout-manager.service';\r\nimport { ResizeObserverService } from '../../services/resize-observer.service';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DraggableDirective,\r\n ResizableDirective,\r\n BimplusFloatingBarDraggerComponent,\r\n BimplusFloatingBarHeaderContentComponent,\r\n BimplusFloatingBarHeaderLogoComponent,\r\n ],\r\n\r\n\r\n templateUrl: './bimplus-floating-bar.component.html',\r\n styleUrl: './bimplus-floating-bar.component.less',\r\n //changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class BimplusFloatingBarComponent extends BimplusLocalizedWidgetComponent implements OnInit, OnDestroy, AfterViewChecked,AfterViewInit\r\n{\r\n constructor(translateService: TranslateService,\r\n private layoutManagerService: LayoutManagerService,\r\n private element: ElementRef,\r\n private cdr: ChangeDetectorRef,\r\n private resizeObserverService:ResizeObserverService\r\n ) { \r\n super(translateService);\r\n }\r\n\r\n @Input() noBody: boolean = false;\r\n \r\n @Input() isFocused: boolean = false;\r\n\r\n @Input() resizeEnabled: boolean = false;\r\n @Input() autoCollapse: boolean = false;\r\n @Input() focusSelector: string = '';\r\n @Input() isVisible = false; \r\n @Input() id: string = '';\r\n \r\n private subscription: Subscription | null = null; // Initialize to null\r\n private hasViewChecked: boolean = false;\r\n \r\n //@Input() isCollapsed: boolean = false;\r\n isCollapsed: boolean = false;\r\n\r\n get canNotResize(): boolean {\r\n return !(this.resizeEnabled && !this.isCollapsed);\r\n }\r\n\r\n ngOnInit():void{\r\n \r\n this.layoutManagerService.registeredItems$.subscribe((items: LayoutManagerItem[]) => {\r\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.id); \r\n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \r\n }) \r\n \r\n }\r\n ngOnDestroy(): void {\r\n // Unsubscribe to avoid memory leaks\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n ngAfterViewInit(){\r\n // if the component wants to be registered in layout manager system\r\n // Subscribe to the observable\r\n this.subscription = this.resizeObserverService.parentAppRect$.subscribe(value => {\r\n this.handleParentAppRectSizeChange(value);\r\n });\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (!this.hasViewChecked && !this.isCollapsed) {\r\n this.hasViewChecked = true; // Set the flag to prevent repeated execution\r\n //this.cdr.detectChanges(); // Trigger change detection \r\n setTimeout(()=>{\r\n this.layoutManagerService.checkPosition(this.id,\"\",undefined,0,0,true);\r\n });\r\n }\r\n }\r\n\r\n handleParentAppRectSizeChange(parentRect:DOMRect | undefined):void{ \r\n this.layoutManagerService.checkPosition(this.id,'.floating-panel.visible',parentRect,0,0,true); \r\n }\r\n \r\n onResizedEnd(){\r\n this.layoutManagerService.finalizeObjectChanges(this.id);\r\n }\r\n\r\n onDragEnd(){\r\n this.layoutManagerService.handleDragEnd(this.id);\r\n }\r\n}\r\n\r\n","<div\r\n class=\"floating-panel\"\r\n [class.visible]=\"isVisible\"\r\n [class.no-body]=\"noBody\"\r\n [class.is-focused]=\"isFocused\"\r\n [class.collapsed]=\"isCollapsed\" \r\n libResizable\r\n (resizedEnd)=\"onResizedEnd()\"\r\n (dragEnd)=\"onDragEnd()\"\r\n>\r\n <ng-content select=\".floating-bar-header-logo\"></ng-content>\r\n <ng-content select=\".floating-bar-header-content\"></ng-content>\r\n <ng-content select=\".floating-bar-dragger\"></ng-content>\r\n <ng-content select=\".floating-bar-body\"></ng-content>\r\n <div \r\n class=\"resizer-ne floating-panel__resizerNE\"\r\n [class.resize-disabled]=\"canNotResize\">\r\n</div>\r\n<div \r\n class=\"resizer-e floating-panel__resizerE\"\r\n [class.resize-disabled]=\"canNotResize\">\r\n</div>\r\n<div \r\n class=\"resizer-se floating-panel__resizerSE\"\r\n [class.resize-disabled]=\"canNotResize\">\r\n</div>\r\n<div \r\n class=\"resizer-s floating-panel__resizerS\"\r\n [class.resize-disabled]=\"canNotResize\">\r\n</div>\r\n</div>\r\n\r\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation,ElementRef, AfterViewInit, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { BimplusFloatingBarComponent } from '../bimplus-floating-bar/bimplus-floating-bar.component';\r\nimport { BimplusFloatingBarDraggerComponent } from '../bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component';\r\nimport { BimplusFloatingBarHeaderContentComponent } from '../bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component';\r\nimport { BimplusFloatingBarHeaderLogoComponent } from '../bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component';\r\nimport { FloatingBarItem } from '../bimplus-floating-bar/bimplus-floating-bar.interface';\r\nimport { LayoutManagerService } from '../../services/layout-manager.service';\r\n\r\nconst DEFAULT_POSITION_LEFT = 355;\r\nconst DEFAULT_POSITION_TOP = 355;\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-hide-objects',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n BimplusFloatingBarComponent,\r\n BimplusFloatingBarDraggerComponent,\r\n BimplusFloatingBarHeaderContentComponent,\r\n BimplusFloatingBarHeaderLogoComponent,\r\n TranslateModule,\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-floating-bar-hide-objects.component.html',\r\n styleUrl: './bimplus-floating-bar-hide-objects.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusFloatingBarHideObjectsComponent extends BimplusLocalizedWidgetComponent implements AfterViewInit {\r\n \r\n @Output() actionClicked = new EventEmitter<string>();\r\n @Input() noBody: boolean = true; \r\n @Input() isFocused: boolean = true;\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n // Items for the header content sub component\r\n @Input({ alias: 'items' }) set itemsValue(value: FloatingBarItem[]) {\r\n this.items.set(value)\r\n }\r\n readonly items = signal<FloatingBarItem[]>([]);\r\n\r\n protected layoutManagerService: LayoutManagerService;\r\n\r\n componentId = 'hide-menu-fp-id'\r\n icon = 'ui-icon-hide-menu';\r\n title: string = \"\"; // no tooltip info on Logo icon\r\n focusSelectorId: string = 'hide-menu-id';\r\n\r\n constructor(\r\n translateService: TranslateService,\r\n layoutManagerService: LayoutManagerService,\r\n private readonly element: ElementRef\r\n ){ \r\n super(translateService);\r\n this.layoutManagerService = layoutManagerService;\r\n }\r\n \r\n ngAfterViewInit() {\r\n // Subscribe to the observable\r\n this.layoutManagerService.registerObject(this.element,this.componentId,'.floating-panel.visible',true,DEFAULT_POSITION_LEFT,DEFAULT_POSITION_TOP); \r\n } \r\n}\r\n","<lib-bimplus-floating-bar\r\n id=\"hide-menu-fp-id\"\r\n [id] = \"componentId\"\r\n class=\"hide-menu\"\r\n [noBody]=\"noBody\"\r\n [isFocused]=\"isFocused\"\r\n [resizeEnabled]=\"false\"\r\n [focusSelector]=\"focusSelectorId\"\r\n [isVisible]=\"true\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\" \r\n>\r\n <lib-bimplus-floating-bar-header-logo\r\n class=\"floating-bar-header-logo\"\r\n [parentId] = \"componentId\"\r\n [icon]=\"icon\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n >\r\n </lib-bimplus-floating-bar-header-logo>\r\n\r\n <lib-bimplus-floating-bar-header-content\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [parentId] = \"componentId\"\r\n class=\"floating-bar-header-content\"\r\n [items]=\"items()\" \r\n (actionClicked)=\"actionClicked.emit($event)\"\r\n >\r\n </lib-bimplus-floating-bar-header-content>\r\n\r\n <lib-bimplus-floating-bar-dragger\r\n class=\"floating-bar-dragger\" \r\n [parentId] = \"componentId\"\r\n >\r\n </lib-bimplus-floating-bar-dragger>\r\n</lib-bimplus-floating-bar>\r\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation ,ElementRef, AfterViewChecked, ChangeDetectorRef, AfterViewInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { BimplusFloatingBarComponent } from '../bimplus-floating-bar/bimplus-floating-bar.component';\r\nimport { BimplusFloatingBarDraggerComponent } from '../bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component';\r\nimport { BimplusFloatingBarHeaderContentComponent } from '../bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component';\r\nimport { BimplusFloatingBarHeaderLogoComponent } from '../bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component';\r\nimport { FloatingBarItem } from '../bimplus-floating-bar/bimplus-floating-bar.interface';\r\nimport { LayoutManagerService} from '../../services/layout-manager.service';\r\n\r\nconst DEFAULT_POSITION_LEFT =355;\r\nconst DEFAULT_POSITION_TOP = 320;\r\n\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-isolation-objects',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n BimplusFloatingBarComponent,\r\n BimplusFloatingBarDraggerComponent,\r\n BimplusFloatingBarHeaderContentComponent,\r\n BimplusFloatingBarHeaderLogoComponent,\r\n TranslateModule,\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-floating-bar-isolation-objects.component.html',\r\n styleUrl: './bimplus-floating-bar-isolation-objects.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusFloatingBarIsolationObjectsComponent extends BimplusLocalizedWidgetComponent implements AfterViewInit, AfterViewChecked{\r\n constructor(translateService: TranslateService, \r\n private layoutManagerService: LayoutManagerService,\r\n private element: ElementRef,\r\n private cdr: ChangeDetectorRef){ \r\n super(translateService); \r\n \r\n }\r\n private hasViewChecked: boolean = false;\r\n\r\n \r\n @Output() actionClicked = new EventEmitter<string>();\r\n\r\n @Input() noBody: boolean = true;\r\n @Input() isFocused: boolean = true;\r\n\r\n // Items for the header content sub component\r\n @Input() items: Array<FloatingBarItem> = [];\r\n\r\n icon = 'ui-icon-isolation-menu';\r\n title: string = \"\"; // no tooltip info on Logo icon\r\n focusSelectorId: string = 'isolation-menu-id';\r\n componentId = 'isolation-menu-fp-id';\r\n \r\n ngAfterViewInit(){\r\n this.layoutManagerService.registerObject(this.element,this.componentId,'.floating-panel.visible',true,DEFAULT_POSITION_LEFT,DEFAULT_POSITION_TOP,); \r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (!this.hasViewChecked) {\r\n this.hasViewChecked = true; // Set the flag to prevent repeated execution\r\n this.cdr.detectChanges(); // Trigger change detection \r\n setTimeout(()=>{\r\n this.layoutManagerService.checkPosition(this.componentId,'.floating-panel.visible',undefined,0,0,true); \r\n });\r\n }\r\n }\r\n}\r\n","<lib-bimplus-floating-bar\r\n id=\"isolation-menu-fp-id\"\r\n [id] = \"componentId\"\r\n class=\"isolation-menu\"\r\n [noBody]=\"noBody\"\r\n [isFocused]=\"isFocused\"\r\n [resizeEnabled]=\"false\"\r\n [focusSelector]=\"focusSelectorId\"\r\n [isVisible]=\"true\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n>\r\n <lib-bimplus-floating-bar-header-logo\r\n class=\"floating-bar-header-logo\"\r\n [parentId] = \"componentId\"\r\n [icon]=\"icon\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n >\r\n </lib-bimplus-floating-bar-header-logo>\r\n\r\n <lib-bimplus-floating-bar-header-content\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [parentId] = \"componentId\" \r\n class=\"floating-bar-header-content\"\r\n [items]=\"items\"\r\n (actionClicked)=\"actionClicked.emit($event)\"\r\n >\r\n </lib-bimplus-floating-bar-header-content>\r\n\r\n <lib-bimplus-floating-bar-dragger\r\n class=\"floating-bar-dragger\"\r\n [parentId] = \"componentId\"\r\n >\r\n </lib-bimplus-floating-bar-dragger>\r\n</lib-bimplus-floating-bar>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input,OnInit } from '@angular/core';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { LayoutManagerItem, LayoutManagerService } from '../../services/layout-manager.service';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-body',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n ],\r\n templateUrl: './bimplus-floating-bar-body.component.html',\r\n styleUrl: './bimplus-floating-bar-body.component.less'\r\n})\r\nexport class BimplusFloatingBarBodyComponent extends BimplusLocalizedWidgetComponent implements OnInit{\r\n constructor(translateService: TranslateService,\r\n private layoutManagerService: LayoutManagerService\r\n ) {\r\n super(translateService)\r\n }\r\n\r\n @Input() isCollapsed: boolean = false;\r\n @Input() parentId: string = '';\r\n \r\n ngOnInit(){\r\n this.layoutManagerService.registeredItems$.subscribe((items: LayoutManagerItem[]) => {\r\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.parentId); \r\n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \r\n })\r\n }\r\n}\r\n\r\n\r\n","<div\r\n libDraggable\r\n class=\"floating-panel__body\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, signal } from '@angular/core';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { ProjectNavigatorModel, ProjectNavigatorLayer } from './project-models.interface';\r\nimport { ExpansionPanelComponent } from '../expansion-panel/expansion-panel.component';\r\nimport { ExpansionPanelHeaderComponent } from '../expansion-panel-header/expansion-panel-header.component';\r\nimport { ExpansionPanelHeaderActionsComponent } from '../expansion-panel-header-actions/expansion-panel-header-actions.component';\r\n\r\n@Component({\r\n selector: 'lib-project-models',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ExpansionPanelComponent,\r\n ExpansionPanelHeaderComponent,\r\n ExpansionPanelHeaderActionsComponent,\r\n TranslateModule,\r\n ],\r\n templateUrl: './project-models.component.html',\r\n styleUrl: './project-models.component.less'\r\n})\r\nexport class ProjectModelsComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService) {\r\n super(translateService)\r\n }\r\n\r\n @Input() modelTreeRootTitle: string = \"_Divisions\";\r\n @Input() modelTreeRootName: string = \"_Divisions\";\r\n\r\n @Input() expandedModelTree: boolean = false;\r\n\r\n // List of models\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'models' }) set modelsValue(value: ProjectNavigatorModel[]) {\r\n this.models.set(value);\r\n }\r\n protected readonly models = signal<ProjectNavigatorModel[]>([]);\r\n\r\n @Output() clickedModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() clickedLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n\r\n @Output() toggleOpacityOfModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() toggleOpacityOfLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n\r\n @Output() toggleVisibilityOfModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() toggleVisibilityOfLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n}\r\n","<lib-expansion-panel\r\n class=\"project-navigator-model-panel\"\r\n [expanded]=\"expandedModelTree\"\r\n>\r\n <lib-expansion-panel-header [title]=\"modelTreeRootTitle\">\r\n <span class=\"project-navigator-root-node\">{{\r\n modelTreeRootName | translate\r\n }}</span>\r\n <lib-expansion-panel-header-actions>\r\n <!-- no action buttons for root -->\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <!-- Show all models also as expansion panels -->\r\n <!-- lib-bimplus-flat-tree can't be used for that at the moment -->\r\n @for(model of models(); track model) {\r\n <lib-expansion-panel\r\n class=\"project-navigator-model-panel\"\r\n [expanded]=\"model.isExpanded\"\r\n >\r\n <lib-expansion-panel-header>\r\n <span\r\n class=\"project-navigator-model-node\"\r\n [ngClass]=\"{\r\n visible: model.isVisible\r\n }\"\r\n [title]=\"model.name + ' (Rev: ' + model.currentRevision + ')'\"\r\n (click)=\"clickedModel.emit(model)\"\r\n (keypress)=\"clickedModel.emit(model)\"\r\n >\r\n {{ model.name }}\r\n </span>\r\n\r\n <lib-expansion-panel-header-actions>\r\n <div\r\n [attr.data-test]=\"'toggle_opacity_model_' + model.id\"\r\n class=\"ui-icon-transparency project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n opaque: model.isOpaque,\r\n transparent: !model.isOpaque,\r\n semiopaque: model.isSemiOpaque,\r\n }\"\r\n [title]=\"'_Toggle opacity' | translate\"\r\n (click)=\"toggleOpacityOfModel.emit(model)\"\r\n (keypress)=\"toggleOpacityOfModel.emit(model)\"\r\n ></div>\r\n\r\n <div\r\n [attr.data-test]=\"'toggle_visibility_model_' + model.id\"\r\n class=\"ui-icon-visibility project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n visible: model.isVisible,\r\n invisible: !model.isVisible,\r\n semivisible: model.isSemiVisible\r\n }\"\r\n [title]=\"'_Toggle visibility' | translate\"\r\n (click)=\"toggleVisibilityOfModel.emit(model)\"\r\n (keypress)=\"toggleVisibilityOfModel.emit(model)\"\r\n ></div>\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <!-- Content of panel -->\r\n <div\r\n class=\"project-navigator-layer-node\"\r\n *ngFor=\"let layer of model.layers\"\r\n >\r\n <div\r\n class=\"project-navigator-layer-node-name\"\r\n [attr.data-test]=\"'floating_bar_layer' + layer.id\"\r\n [ngClass]=\"{\r\n visible: layer.isVisible\r\n }\"\r\n [title]=\"layer.name | translate\"\r\n (click)=\"clickedLayer.emit(layer)\"\r\n (keypress)=\"clickedLayer.emit(layer)\"\r\n >\r\n {{ layer.name | translate }}\r\n </div>\r\n\r\n <div\r\n [attr.data-test]=\"'toggle_opacity_layer_' + layer.id\"\r\n class=\"ui-icon-transparency project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n opaque: layer.isOpaque,\r\n transparent: !layer.isOpaque\r\n }\"\r\n [title]=\"'_Toggle opacity' | translate\"\r\n (click)=\"toggleOpacityOfLayer.emit(layer)\"\r\n (keypress)=\"toggleOpacityOfLayer.emit(layer)\"\r\n ></div>\r\n\r\n <div\r\n [attr.data-test]=\"'toggle_visibility_layer_' + layer.id\"\r\n class=\"ui-icon-visibility project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n visible: layer.isVisible,\r\n invisible: !layer.isVisible\r\n }\"\r\n [title]=\"'_Toggle visibility' | translate\"\r\n (click)=\"toggleVisibilityOfLayer.emit(layer)\"\r\n (keypress)=\"toggleVisibilityOfLayer.emit(layer)\"\r\n ></div>\r\n </div>\r\n </lib-expansion-panel>\r\n }\r\n</lib-expansion-panel>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-panel-toolbar',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-panel-toolbar.component.html',\r\n styleUrl: './bimplus-panel-toolbar.component.less'\r\n})\r\nexport class BimplusPanelToolbarComponent {\r\n @Input() isPanelToolbarVisible: boolean = false;\r\n}\r\n","<div class=\"panel-toolbar\"\r\n [ngClass]=\"!isPanelToolbarVisible ? 'hidden' : ''\"\r\n>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation, ElementRef,AfterViewChecked,AfterViewInit, ChangeDetectorRef, inject, DestroyRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { BimplusFloatingBarComponent } from '../bimplus-floating-bar/bimplus-floating-bar.component';\r\nimport { BimplusFloatingBarDraggerComponent } from '../bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component';\r\nimport { BimplusFloatingBarHeaderContentComponent } from '../bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component';\r\nimport { BimplusFloatingBarHeaderLogoComponent } from '../bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component';\r\nimport { BimplusFloatingBarBodyComponent } from '../bimplus-floating-bar-body/bimplus-floating-bar-body.component';\r\nimport { FloatingBarItem } from '../bimplus-floating-bar/bimplus-floating-bar.interface';\r\nimport { ProjectNavigatorModel, ProjectNavigatorLayer, ProjectNavigatorProject } from '../project-models/project-models.interface';\r\nimport { ProjectModelsComponent } from '../project-models/project-models.component';\r\nimport { BimplusPanelToolbarComponent } from '../bimplus-panel-toolbar/bimplus-panel-toolbar.component';\r\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component'\r\nimport { LayoutManagerItem, LayoutManagerService } from '../../services/layout-manager.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n\r\nconst DEFAULT_POSITION_LEFT = 355;\r\nconst DEFAULT_POSITION_TOP =20;\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-project-navigator',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n BimplusFloatingBarComponent,\r\n BimplusFloatingBarDraggerComponent,\r\n BimplusFloatingBarHeaderContentComponent,\r\n BimplusFloatingBarHeaderLogoComponent,\r\n BimplusFloatingBarBodyComponent,\r\n BimplusPanelToolbarComponent,\r\n ProjectModelsComponent,\r\n TranslateModule,\r\n BimplusScrollableContainerComponent\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-floating-bar-project-navigator.component.html',\r\n styleUrl: './bimplus-floating-bar-project-navigator.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusFloatingBarProjectNavigatorComponent extends BimplusLocalizedWidgetComponent implements AfterViewInit, AfterViewChecked {\r\n constructor(translateService: TranslateService,\r\n private readonly layoutManagerService: LayoutManagerService,\r\n private readonly element: ElementRef,\r\n private readonly cdr: ChangeDetectorRef) \r\n {\r\n super(translateService);\r\n }\r\n private hasViewChecked: boolean = false;\r\n \r\n\r\n // General bar handling\r\n @Input() noBody: boolean = false; // Project navigator has a body\r\n @Input() isCollapsed: boolean = false;\r\n @Input() noModelsMessage: string | undefined = undefined;\r\n @Input() isLoading: boolean = false;\r\n @Input() loadingDataMessage: string | undefined = undefined;\r\n \r\n icon = 'ui-icon-project-navigator';\r\n title: string = '_Project_navigator';\r\n componentId = 'project-navigator-fp-id';\r\n // Header content (like IFC export button)\r\n @Input() items: Array<FloatingBarItem> = [];\r\n\r\n @Output() actionClicked = new EventEmitter<string>();\r\n\r\n // Body content\r\n @Input() isPanelToolbarVisible: boolean = false;\r\n @Input() expandedModelTree: boolean = false;\r\n @Input() project: ProjectNavigatorProject = { id: \"\", name: \"\", teamSlug: \"\", models: [] };\r\n @Output() clickedModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() clickedLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n @Output() toggleOpacityOfModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() toggleOpacityOfLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n @Output() toggleVisibilityOfModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() toggleVisibilityOfLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n @Output() logoClicked = new EventEmitter<MouseEvent>(); \r\n destroyRef = inject(DestroyRef)\r\n\r\n ngAfterViewInit(){\r\n this.layoutManagerService.registerObject(this.element,this.componentId,'.floating-panel.visible',true,DEFAULT_POSITION_LEFT,DEFAULT_POSITION_TOP);\r\n \r\n this.layoutManagerService.registeredItems$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({next:(items: LayoutManagerItem[]) => {\r\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.componentId); \r\n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \r\n },complete: () => console.log('completed')});\r\n }\r\n // #region General bar handling \r\n\r\n ngAfterViewChecked() {\r\n //if (!this.hasViewChecked && !this.isCollapsed) {\r\n if (!this.hasViewChecked) { \r\n this.hasViewChecked = true; // Set the flag to prevent repeated execution\r\n this.cdr.detectChanges(); // Trigger change detection \r\n setTimeout(()=>{\r\n this.layoutManagerService.checkPosition(this.componentId,'.floating-panel.visible',undefined,0,0,true);\r\n });\r\n }\r\n }\r\n // #endregion\r\n}\r\n","<lib-bimplus-floating-bar\r\n id=\"project-navigator-fp-id\"\r\n [id] = \"componentId\"\r\n class=\"project-navigator-fp floating-panel\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [noBody]=\"noBody\" \r\n [resizeEnabled]=\"true\"\r\n [isVisible]=\"true\" \r\n>\r\n <lib-bimplus-floating-bar-header-logo\r\n class=\"floating-bar-header-logo\"\r\n [parentId] = \"componentId\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [icon]=\"icon\"\r\n [title]=\"title\" \r\n >\r\n </lib-bimplus-floating-bar-header-logo>\r\n\r\n <lib-bimplus-floating-bar-header-content\r\n class=\"floating-bar-header-content\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [items]=\"items\"\r\n (actionClicked)=\"actionClicked.emit($event)\" \r\n [parentId] = \"componentId\"\r\n >\r\n </lib-bimplus-floating-bar-header-content>\r\n\r\n <lib-bimplus-floating-bar-dragger\r\n class=\"floating-bar-dragger\"\r\n [parentId] = \"componentId\"\r\n >\r\n </lib-bimplus-floating-bar-dragger>\r\n\r\n <lib-bimplus-floating-bar-body\r\n class=\"floating-bar-body\"\r\n [parentId] = \"componentId\"\r\n >\r\n <lib-bimplus-panel-toolbar\r\n [isPanelToolbarVisible]=\"isPanelToolbarVisible\"\r\n ></lib-bimplus-panel-toolbar>\r\n\r\n @if(isLoading && loadingDataMessage){\r\n <span class=\"inline-message\" [innerHtml]=\"loadingDataMessage | translate\"></span>\r\n }\r\n @else{ \r\n @if(project.models.length === 0 && noModelsMessage){\r\n <span class=\"inline-message\" [innerHtml]=\"noModelsMessage | translate\"></span>\r\n }@else{\r\n <lib-bimplus-scrollable-container>\r\n <lib-project-models\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [models]=\"project.models\"\r\n [modelTreeRootTitle]=\"project.name + ' - ' + project.teamSlug\"\r\n [expandedModelTree]=\"expandedModelTree\"\r\n (clickedModel)=\"clickedModel.emit($event)\"\r\n (clickedLayer)=\"clickedLayer.emit($event)\"\r\n (toggleOpacityOfModel)=\"toggleOpacityOfModel.emit($event)\"\r\n (toggleOpacityOfLayer)=\"toggleOpacityOfLayer.emit($event)\"\r\n (toggleVisibilityOfModel)=\"toggleVisibilityOfModel.emit($event)\"\r\n (toggleVisibilityOfLayer)=\"toggleVisibilityOfLayer.emit($event)\"\r\n >\r\n </lib-project-models>\r\n </lib-bimplus-scrollable-container>\r\n }\r\n }\r\n </lib-bimplus-floating-bar-body>\r\n</lib-bimplus-floating-bar>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-language-menu',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-language-menu.component.html',\r\n styleUrl: './bimplus-language-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLanguageMenuComponent {\r\n\r\n _languagesList = [\r\n { symbol: \"cs\", text: \"Čeština\"},\r\n { symbol: \"de\", text: \"Deutsch\"},\r\n { symbol: \"en\", text: \"English (UK)\"},\r\n { symbol: \"us\", text: \"English (US)\"},\r\n { symbol: \"es\", text: \"Español\"},\r\n { symbol: \"fr\", text: \"Français\"},\r\n { symbol: \"it\", text: \"Italiano\"},\r\n { symbol: \"ru\", text: \"Русский\"},\r\n { symbol: \"ro\", text: \"Romana\"},\r\n { symbol: \"tr\", text: \"Türkçe\"}\r\n ];\r\n\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Input({ transform: booleanAttribute }) expandUp : boolean = false;\r\n _menuOpened : boolean = false;\r\n\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n _switchLanguage( language: string ){\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div \r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\" \r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n</div>\r\n<div data-test=\"language-menu-dropdown\"\r\n class=\"dropdown\" \r\n [ngClass]=\"_menuOpened ? 'open' : ''\" [ngClass]=\"isTouch ? 'is-touch' : ''\" \r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <div class=\"dropdown-toggle\" >\r\n <div class='main-icon icon-languages'></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n\r\n <ul class= \"bimcomp-dropdown-menu\" [ngClass]=\"{'open':_menuOpened, 'expand-up':expandUp }\">\r\n <li [attr.data-test]=\"'langmenu_item_' + languageItem.text\" \r\n class=\"bimcomp-dropdown-menu-item\" \r\n [ngClass]=\"selectedLanguage === languageItem.symbol ? 'selected' : ''\" \r\n (click)=\"_switchLanguage(languageItem.symbol)\"\r\n (keypress)=\"_switchLanguage(languageItem.symbol)\"\r\n *ngFor=\"let languageItem of _languagesList\"\r\n >\r\n <span>{{languageItem.text}}</span>\r\n </li>\r\n </ul>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, booleanAttribute } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { MenuListType } from '../../types/types';\r\n\r\nexport interface BimplusProjectMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-project-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-project-menu.component.html',\r\n styleUrl: './bimplus-project-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n\r\n})\r\nexport class BimplusProjectMenuComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService) {\r\n super(translateService)\r\n }\r\n\r\n\r\n @Input() projectName: string = \"\";\r\n @Input() projectImageUrl: string = \"\";\r\n @Input() projectExplorerUrl: string = \"\";\r\n @Input() projectActiveItem: string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute }) projectmembersVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible: boolean = true;\r\n\r\n @Input({ transform: booleanAttribute }) isCollapsed: boolean = false;\r\n @Input({ transform: booleanAttribute }) isMiniMode: boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch: boolean = false;\r\n @Input({ transform: booleanAttribute }) hideMenuIcons: boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons: boolean = false;\r\n @Input() menuItemsOrder : string[] = [];\r\n\r\n get prjImgUrl() {\r\n return this.projectImageUrl ? this.projectImageUrl : \"./assets/images/default/bimplus_Components_Project_Pic_Default.png\";\r\n }\r\n get backgroundValue() {\r\n return `linear-gradient(rgba(245, 245, 245, 0.8),rgba(245, 245, 245, 0.5) 25%, 75%, rgba(245, 245, 245, 0.8)), url(${this.projectImageUrl ? this.projectImageUrl : './assets/images/default/bimplus_Components_Project_Pic_Default.png'})`;\r\n }\r\n\r\n get prjImageOverlayStyle() {\r\n return { 'background': `${this.backgroundValue}` };\r\n }\r\n\r\n get prjImageStyle() {\r\n return { 'background': `url(${this.prjImgUrl})` };\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n * and also it serves as info topic id\r\n --------------------------------------------------------------------------*/\r\n _menuPrjList: MenuListType[] = [\r\n { action: \"projectmembers\", id: \"portalBimUsers\", type: \"\", class: \"bim-pm-icon-users\", textId: \"_Project_members_tooltip\", textIdDisabled: \"_Insufficient rights title\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"models\", id: \"portalBimModels\", type: \"\", class: \"bim-pm-icon-models\", textId: \"_Models_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"documents\", id: \"portalBimDocuments\", type: \"\", class: \"bim-pm-icon-documents\", textId: \"_Documents_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"projectsettings\", id: \"portalBimProjectSettings\", type: \"\", class: \"bim-pm-icon-project-settings\", textId: \"_Project_settings_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"processes\", id: \"portalBimProcesses\", type: \"\", class: \"bim-pm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" }\r\n ];\r\n\r\n get menuItems() : MenuListType[] {\r\n return this._menuPrjList.sort((a, b) => this.menuItemsOrder.indexOf(a.id) - this.menuItemsOrder.indexOf(b.id));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuListType): boolean {\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n\r\n return !((this as unknown as BimplusProjectMenuComponentAttribute)[key]);\r\n }\r\n return false;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item: MenuListType): boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Disabled`;\r\n return !!(this as unknown as BimplusProjectMenuComponentAttribute)[key];\r\n }\r\n return false;\r\n }\r\n\r\n\r\n _projectMenuItemClicked(action: string, param: string) {\r\n console.log(action, param);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n* item clicked\r\n--------------------------------------------------------------------------*/\r\n _menuItemClicked(item: MenuListType, type: string, event: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n console.log(item, type, event);\r\n\r\n\r\n if (type != \"info\") {\r\n if (this._isDisabled(item)) {\r\n return;\r\n }\r\n }\r\n const action = item.action;\r\n fireEvent(this, \"bimplusProjectMenuClicked\", { action, type });\r\n }\r\n\r\n _menuItemIgnoreAction(event: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n _getPrjItemClassAttributes(item: MenuListType, isTouch: boolean) {\r\n const retval: string = `${this._isDisabled(item) ? 'disabled' : ''} ${isTouch ? '' : 'hover-show-info'}`;\r\n return retval;\r\n }\r\n\r\n _getPrjIconClassAttributes(item: MenuListType) {\r\n const retval: string = `${item.class} ${item.action === this.projectActiveItem ? 'active' : ''} ${this._isDisabled(item) ? 'disabled' : ''}`;\r\n return retval;\r\n }\r\n}\r\n","<ng-template #prjList>\r\n@for(item of menuItems; track item.id){\r\n @if (!_isHidden(item)){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\"\r\n (click)=\"_menuItemClicked(item, 'normal',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'normal',$event)\"\r\n >\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'info',$event)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<ng-template #prjListThumbnail>\r\n@for(item of menuItems; track item.id){\r\n @if (!_isHidden(item) && (isCollapsed || item.action !== 'processes' )){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\"\r\n (click)=\"_menuItemClicked(item, 'normal',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'normal',$event)\"\r\n >\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'info',$event)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<div class=\"bim-pm-prj-container\"\r\n [ngClass]=\"{ collapsed: isCollapsed, 'mini-mode': isMiniMode, 'is-touch': isTouch }\"\r\n >\r\n @if (isMiniMode && !isCollapsed) {\r\n <div class=\"bim-pm-prj-details-mini\">\r\n <div class=\"bim-pm-prj-image-bkg-mini\"\r\n [ngStyle]=\"prjImageOverlayStyle\">\r\n <div class=\"bim-pm-prj-image-thumbnail\" [ngStyle]=\"prjImageStyle\"></div>\r\n </div>\r\n <div class=\"bim-pm-prj-name-mini\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass]=\"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"prjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n <a href={{projectExplorerUrl}} class=\"bim-pm-prj-details\"\r\n [ngStyle]=\"prjImageOverlayStyle\"\r\n (dblclick)=\"_projectMenuItemClicked('prjimagedblclick','normal')\"\r\n (click)=\"_projectMenuItemClicked('prjimageclick','normal')\"\r\n [title]=\"'_ModelThumbnailTooltip' | translate\">\r\n\r\n <div class=\"bim-pm-prj-image\" [ngStyle]=\"prjImageStyle\">\r\n <div class=\"bim-pm-prj-items-overlay\" [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\">\r\n </div>\r\n <div\r\n class=\"bim-pm-prj-items-list\"\r\n [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\"\r\n >\r\n @if (!hideMenuIcons && !showHorizontalMenuIcons){\r\n <ng-container *ngTemplateOutlet=\"prjListThumbnail\">\r\n </ng-container>\r\n }\r\n </div>\r\n <div class=\"bim-pm-prj-name\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass] = \"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"prjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {BimplusProjectMenuComponent} from './../bimplus-project-menu/bimplus-project-menu.component';\r\nimport {MenuListType} from '../../types/types';\r\n\r\nconst MenuListTypeId = {\r\n PORTAL_TEAM_MANAGEMENT_BTN: 'portalTeamManagementBtn',\r\n PORTAL_PROPERTY_MANAGER_BTN: 'portalPropertyManagerBtn',\r\n PORTAL_BIM_USERS: 'portalBimUsers',\r\n PORTAL_BIM_MODELS: 'portalBimModels',\r\n PORTAL_BIM_DOCUMENTS: 'portalBimDocuments',\r\n PORTAL_BIM_PROJECT_SETTINGS: 'portalBimProjectSettings',\r\n PORTAL_BIM_PROCESSES: 'portalBimProcesses',\r\n DIVIDER_PROJECT_MANAGEMENT: 'dividerprojectmanagement',\r\n PORTAL_BIM_VIEWER_BTN: 'portalBimViewerBtn',\r\n PORTAL_CLOUD_VIEWER_BTN: 'portalCloudViewerBtn',\r\n PORTAL_CONNEXIS_BTN: 'portalConnexisBtn',\r\n PORTAL_BIM_AUTOCONVERTER_BTN: 'portalBimAutoconverterBtn',\r\n DIVIDERAPPS: 'dividerapps',\r\n PORTAL_ADD_INS_BTN: 'portalAddInsBtn',\r\n PORTAL_SHOP_BTN: 'portalShopBtn',\r\n PORTAL_GET_YOUR_TEAM_BTN: 'portalGetYourTeamBtn'\r\n} as const;\r\n\r\nexport interface BimplusMainMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-main-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule,BimplusProjectMenuComponent],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-main-menu.component.html',\r\n styleUrl: './bimplus-main-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusMainMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges {\r\n constructor(translateService: TranslateService ){\r\n super(translateService)\r\n }\r\n\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isIpadApp : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input({ transform: booleanAttribute }) hideProjectMenuIcons : boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons : boolean = false;\r\n @Input() projectName : string = \"\";\r\n @Input() projectImageUrl : string = \"\";\r\n @Input() projectExplorerUrl : string = \"\";\r\n @Input() projectActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled : boolean = false;\r\n @Input() footerActiveItem : string = \"\";\r\n @Input() menuActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) isCollapsed : boolean = false;\r\n @Input({ transform: booleanAttribute }) showOverlay : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) autoconverterSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) connexisSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) bimexplorerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) autoconverterDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) connexisDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) shopDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) addinsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimplusProjectMenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectmembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimexplorerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) autoconverterVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) connexisVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) teammembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) propertymanagerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) shopVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) addinsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerprojectmanagementVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerappsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) getYourTeamVisible : boolean = false;\r\n @Input() appsWithInfo : string[] = [];\r\n @Input() appsOrder : string[] = [];\r\n @Input() menuItemsOrder : string[] = [];\r\n\r\n @Output() bimplusMainMenuClicked = new EventEmitter<{ action: string, type: string }>();\r\n @Output() bimplusMainMenuOverlayClicked = new EventEmitter<void>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue);\r\n }\r\n }\r\n\r\n get apps(): MenuListType[] {\r\n let appsList = this.appsList.sort((a, b) => this.appsOrder.indexOf(a.id) - this.appsOrder.indexOf(b.id));\r\n\r\n // if connexisVisible remove PORTAL_CONNEXIS_BTN.\r\n if (!this.connexisVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_CONNEXIS_BTN);\r\n }\r\n\r\n // if teammembersDisabled remove PORTAL_TEAM_MANAGEMENT_BTN.\r\n if (this.teammembersDisabled) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN);\r\n }\r\n\r\n // if propertymanagerDisabled remove PORTAL_PROPERTY_MANAGER_BTN.\r\n if (this.propertymanagerDisabled) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN);\r\n }\r\n\r\n // if isTouch remove property manager btn. & approvals btn.\r\n if(this.isTouch) {\r\n appsList = appsList.filter(({ id }) => \r\n id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN && \r\n id !== MenuListTypeId.PORTAL_BIM_PROCESSES\r\n );\r\n }\r\n\r\n if (!this.getYourTeamVisible) {\r\n return appsList;\r\n }\r\n\r\n // if there is no team then show only \"Get Your Team\" button\r\n return appsList.filter(({ id }) => \r\n id !== MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN && \r\n id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN\r\n );\r\n }\r\n\r\n get footerList(): MenuListType[] {\r\n let footerList = this._menuFooterList.filter(item => this._isSubscribed(item) && !this._isHidden(item));\r\n\r\n // in case that \"Get Your Team\" is not visible and teammembers are disabled then remove divider first, or is not isTouch mode\r\n if (this.teammembersDisabled || !this.isTouch) {\r\n footerList = footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n // if team is assigned then remove \"Get Your Team\" button\r\n if (!this.getYourTeamVisible) {\r\n return footerList.filter(({ id }) => id !== MenuListTypeId.PORTAL_GET_YOUR_TEAM_BTN);\r\n }\r\n\r\n // remove divider if there is no \"Get Your Team\" button\r\n return footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed\r\n --------------------------------------------------------------------------*/\r\n _isSubscribed(item:MenuListType):boolean {\r\n\r\n if (item.checkSubscription) {\r\n const key = `${item.action}Subscribed`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return true;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is clickable\r\n --------------------------------------------------------------------------*/\r\n _isClickable(item:MenuListType):boolean {\r\n\r\n if (item.clickPolicy === \"noProjectNoSubscription\") {\r\n return this.projectName !== \"\";\r\n }\r\n return true;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item:MenuListType):boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n return !((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return false;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is disabled\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item:MenuListType) {\r\n const key = `${item.action}Disabled`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n\r\n _getContextData(item: MenuListType, active: boolean, disabled: boolean, clickable: boolean, selected: boolean) {\r\n return {\r\n item: item,\r\n active: active,\r\n disabled: disabled,\r\n clickable: clickable,\r\n selected: selected,\r\n showInfoIcon: this.appsWithInfo.includes(item.id)\r\n };\r\n }\r\n\r\n _openPrjBtn:MenuListType = { action:\"openProject\", id:\"portalSelectProjectBtn\",type:\"\", class: \"bim-mm-icon-folder\", textId: \"_Portal_Menu_Open_Project\", textIdDisabled: \"_Portal_Menu_Open_Project\",disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"};\r\n\r\n contextData = {item:\"haha\",active:true,disabled:true,clickable:true,selected:true};\r\n\r\n\r\n appsList: MenuListType[] = [\r\n { action:\"projectmembers\", id: MenuListTypeId.PORTAL_BIM_USERS, type:\"\", class: \"bim-mm-icon-users\", textId: \"_projectStatisticsMembers\", textIdDisabled: \"_projectStatisticsMembers\", disabledTitle:\"_Insufficient rights title\",checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"models\", id: MenuListTypeId.PORTAL_BIM_MODELS, type:\"\",class: \"bim-mm-icon-models\", textId: \"_Divisions\", textIdDisabled: \"_Divisions\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"documents\", id: MenuListTypeId.PORTAL_BIM_DOCUMENTS, type:\"\",class: \"bim-mm-icon-documents\", textId: \"_Files\", textIdDisabled: \"_Files\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"projectsettings\", id: MenuListTypeId.PORTAL_BIM_PROJECT_SETTINGS, type:\"\",class: \"bim-mm-icon-project-settings\", textId: \"_Settings\", textIdDisabled: \"_Settings\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"processes\", id: MenuListTypeId.PORTAL_BIM_PROCESSES, type:\"\",class: \"bim-mm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"_Approvals\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"\",id: MenuListTypeId.DIVIDER_PROJECT_MANAGEMENT, type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"bimexplorer\", id: MenuListTypeId.PORTAL_BIM_VIEWER_BTN, type:\"\",class: \"bim-mm-icon-bim-explorer\", textId: \"_Portal_Menu_BIM_Explorer\", textIdDisabled: \"_Portal_Menu_BIM_Explorer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"cloudviewer\", id: MenuListTypeId.PORTAL_CLOUD_VIEWER_BTN, type:\"\",class: \"bim-mm-icon-cloud-viewer\", textId: \"_Model_Viewer\", textIdDisabled: \"_Model_Viewer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"connexis\", id: MenuListTypeId.PORTAL_CONNEXIS_BTN, type:\"\",class: \"bim-mm-icon-connexis\", textId: \"_Connexis\", textIdDisabled: \"_Connexis\", disabledTitle:'',checkSubscription: false, devOrStageOnly : false, clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"autoconverter\", id: MenuListTypeId.PORTAL_BIM_AUTOCONVERTER_BTN, type:\"\",class: \"bim-mm-icon-autoconverter\", textId: \"_Autoconverter\", textIdDisabled: \"_Autoconverter\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false, clickPolicy: \"noProjectNoSubscription\"},\r\n\r\n { action:\"\",id: MenuListTypeId.DIVIDERAPPS, type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"teammembers\", id: MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN, type:\"\", class: \"bim-mm-icon-team-members\", textId: \"_Portal_Menu_Team_Members\", textIdDisabled: \"_Portal_Menu_Team_Members\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"propertymanager\", id: MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN, type:\"\",class: \"bim-mm-icon-property-manager\", textId: \"_Portal_Menu_Properties\", textIdDisabled: \"_Portal_Menu_Properties\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n ];\r\n\r\n _menuFooterList: MenuListType[] = [\r\n { action:\"\",id: MenuListTypeId.DIVIDERAPPS, type:\"divider\", class: \"bim-mm-app-item-divider\",checkSubscription: false,devOrStageOnly : false } as MenuListType,\r\n { action:\"addins\", id: MenuListTypeId.PORTAL_ADD_INS_BTN, type:\"\", class: \"bim-mm-icon-add-ins\", textId: \"_AddIns\", textIdDisabled: \"_AddIns\", disabledTitle:'', checkSubscription: false, devOrStageOnly : false, clickPolicy: \"\"},\r\n { \r\n action:\"getYourTeam\", \r\n id: MenuListTypeId.PORTAL_GET_YOUR_TEAM_BTN,\r\n class: \"bim-mm-icon-get-your-team\", \r\n textId: \"_Get_Your_Team\", \r\n textIdDisabled: \"_Get_Your_Team\",\r\n } as MenuListType,\r\n { action:\"shop\", id: MenuListTypeId.PORTAL_SHOP_BTN, type:\"\",class: \"bim-mm-icon-shop\", textId: \"_Get_More\", textIdDisabled: \"_Get_More\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"}\r\n ];\r\n\r\n _overlayClicked(){\r\n fireEvent(this, \"bimplusMainMenuOverlayClicked\");\r\n }\r\n\r\n _mainMenuItemClicked(item: MenuListType,type:string,event: Event | undefined ){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n if(type != \"info\") {\r\n if (this._isDisabled(item)){\r\n return;\r\n }\r\n }\r\n\r\n const action = item.action;\r\n fireEvent(this,\"bimplusMainMenuClicked\", {action,type:type } );\r\n }\r\n}\r\n","<ng-template #appItemContent let-contextData>\r\n @if (contextData.item.type === 'divider') {\r\n <div class=\"bim-mm-app-item\" [class]=\"contextData.item.class\" [id]=\"contextData.item.id\"></div>\r\n } @else {\r\n <div class=\"bim-mm-app-item\" [id]=\"contextData.item.id\"\r\n [ngClass]=\"isTouch?'':'hover-show-info '+(contextData.active?'active ':' ') +(contextData.disabled?'disabled ':' ')+(contextData.clickable?' ':'not-clickable ')+(contextData.selected?'selected ':' ')\"\r\n [title] =\"((contextData.disabled) ? (contextData.item.disabledTitle | translate) : '' )\"\r\n >\r\n <div class=\"bim-mm-app-item-details\"\r\n [ngClass] = \" contextData.clickable ? '' : 'not-clickable' \"\r\n (click)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\"\r\n (keypress)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\">\r\n <div class=\"bim-mm-icon\"\r\n [ngClass]=\"contextData.item.class + (contextData.active?' active':'') + (contextData.disabled?' disabled ':'')\">\r\n </div>\r\n <span>{{(contextData.isDisabled && (contextData.item.textIdDisabled !==\"\") ? contextData.item.textIdDisabled : contextData.item.textId) | translate}}</span>\r\n </div>\r\n @if(contextData.showInfoIcon){\r\n <div class=\"bim-mm-app-item-info bim-mm-icon bim-mm-icon-info\"\r\n (click)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\"\r\n (keypress)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\">\r\n </div>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n<div \r\n class=\"bim-mm-wrapper\" \r\n [ngClass]=\"showOverlay ? 'bim-mm-overlay' : ''\" \r\n (click)=\"_overlayClicked()\"\r\n (keypress)=\"_overlayClicked()\"\r\n >\r\n <div class= \"bim-mm-container\">\r\n @if(!_isHidden(_openPrjBtn)){\r\n <ng-container\r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(_openPrjBtn,projectActiveItem === 'projectlist',_isDisabled(_openPrjBtn),true,projectActiveItem === 'projectlist') }\"\r\n ></ng-container>\r\n }\r\n\r\n @if(bimplusProjectMenuVisible){\r\n <lib-bimplus-project-menu\r\n projectName = {{projectName}}\r\n projectImageUrl = {{projectImageUrl}}\r\n projectExplorerUrl = {{projectExplorerUrl}}\r\n projectActiveItem = {{projectActiveItem}}\r\n projectmembersDisabled = {{projectmembersDisabled}}\r\n modelsDisabled = {{modelsDisabled}}\r\n documentsDisabled = {{documentsDisabled}}\r\n projectsettingsDisabled = {{projectsettingsDisabled}}\r\n processesDisabled = {{processesDisabled}}\r\n projectmembersVisible = {{projectmembersVisible}}\r\n modelsVisible = {{modelsVisible}}\r\n documentsVisible = {{documentsVisible}}\r\n projectsettingsVisible = {{projectsettingsVisible}}\r\n processesVisible = {{processesVisible}}\r\n isCollapsed = {{isCollapsed}}\r\n isMiniMode = {{isTouch}}\r\n isTouch = {{isTouch}}\r\n hideMenuIcons = {{hideProjectMenuIcons}}\r\n showHorizontalMenuIcons = {{showHorizontalMenuIcons}}\r\n [menuItemsOrder]=\"menuItemsOrder\"\r\n ></lib-bimplus-project-menu>\r\n }\r\n <div [ngClass]=\"apps.length || footerList.length ? 'bim-mm-apps-container' : ''\">\r\n <div class=\"bim-mm-apps-list\">\r\n <div *ngFor=\"let appItem of apps\">\r\n <ng-container\r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(appItem,!_isSubscribed(appItem),_isDisabled(appItem),_isClickable(appItem),menuActiveItem === appItem.action)}\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"bim-mm-footer-container\">\r\n <div *ngFor=\"let footerItem of footerList\">\r\n <ng-container\r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(footerItem,footerActiveItem === footerItem.action,_isDisabled(footerItem),true,false)}\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","export enum LogoState {\r\n BimplusViewer = 'bimplusViewer', // Bimplus logo\r\n ModelViewerBlack = 'modelViewerBlack', // Model viewer black logo\r\n ModelViewer = 'modelViewer', // Cloud viewer logo\r\n ConnexisViewer = 'connexisViewer', // Connexis viewer logo\r\n ConnexisViewerBlack = 'connexisViewerBlack' // Connexis viewer logo (black)\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, signal, computed } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { LogoState } from './logo-state.enum';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-navbar',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './bimplus-navbar.component.html',\r\n styleUrl: './bimplus-navbar.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusNavbarComponent {\r\n @Input() projectInfo : string = \"\";\r\n @Input() teamInfo : string = \"\";\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input() teamInfoOffset : string = \"\";\r\n @Input({ transform: booleanAttribute }) isNavbarMenuVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarInfoVisible : boolean = false;\r\n // Private signal for logoState\r\n private _logoState = signal<LogoState>(LogoState.BimplusViewer);\r\n // Input setter to update the private signal when logoState is set externally\r\n @Input() set logoState(newState: LogoState) {\r\n this._logoState.set(newState);\r\n }\r\n // Getter for logoState to access the current value\r\n get logoState(): LogoState {\r\n return this._logoState();\r\n }\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'isModelViewerActive', transform: booleanAttribute }) set isModelViewerActiveValue(value: boolean) {\r\n this.isModelViewerActive.set(value);\r\n }\r\n protected readonly isModelViewerActive = signal<boolean>(false);\r\n // @Input({ transform: booleanAttribute }) isConnexisViewerActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMessageVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuEnabled : boolean = true;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDashboardTooltipEnabled: boolean = true;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Output() bimplusNavbarClicked = new EventEmitter<string>();\r\n\r\n // Make the enum available in the template\r\n public LogoState = LogoState;\r\n\r\n protected readonly logoStateSignal = computed<LogoState>(() => {\r\n if (this.isModelViewerActive()) {\r\n return LogoState.ModelViewerBlack;\r\n }\r\n\r\n return this._logoState();\r\n });\r\n\r\n _menuClicked() {\r\n if ( this.isNavbarMenuEnabled ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"menu\");\r\n }\r\n }\r\n\r\n _logoClicked() {\r\n if (this.logoStateSignal() === LogoState.BimplusViewer) {\r\n // Fire only an event for BimplusViewer\r\n fireEvent(this, \"bimplusNavbarClicked\", \"logo\");\r\n }\r\n }\r\n\r\n _projectInfoClicked() {\r\n if ( this.isDev ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"project\");\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"bimplus-navbar\"\r\n [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n>\r\n <div class=\"bimplus-navbar-logo-container\">\r\n <div\r\n class=\"bimplus-logo\"\r\n [ngClass]=\"{\r\n 'model-viewer': logoStateSignal() === LogoState.ModelViewer,\r\n 'model-viewer-black': logoStateSignal() === LogoState.ModelViewerBlack,\r\n 'connexis-viewer': logoStateSignal() === LogoState.ConnexisViewer,\r\n 'connexis-viewer-black': logoStateSignal() === LogoState.ConnexisViewerBlack,\r\n 'burger-menu-not-visible': !isNavbarMenuVisible\r\n }\"\r\n (click)=\"_logoClicked()\"\r\n (keypress)=\"_logoClicked()\"\r\n [title]=\"(isDashboardTooltipEnabled ? '_dashboard_tooltip' : '') | translate\"\r\n ></div>\r\n\r\n <div\r\n class=\"bimplus-navbar-menu icon\"\r\n [ngClass]=\"{'active':isNavbarMenuActive, 'hidden': !isNavbarMenuVisible, 'disabled': !isNavbarMenuEnabled}\"\r\n (click)=\"_menuClicked()\"\r\n (keypress)=\"_menuClicked()\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-container\">\r\n <div\r\n class=\"bimplus-navbar-info\"\r\n [ngClass]=\"{'hidden': !isNavbarInfoVisible}\"\r\n [style.margin-left]=\"teamInfoOffset\"\r\n >\r\n <span class=\"team\">{{teamInfo}}</span>\r\n <span *ngIf=\"projectInfo && !isTouch\">&nbsp;&nbsp; -&nbsp;&nbsp;</span>\r\n <span\r\n class=\"project\"\r\n [ngClass]=\"isDev ? 'clickable' : ''\"\r\n (click)=\"_projectInfoClicked()\"\r\n (keypress)=\"_projectInfoClicked()\"\r\n >\r\n {{projectInfo}}\r\n </span>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-slot\">\r\n <slot></slot>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ViewEncapsulation,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n booleanAttribute,\r\n OnChanges,\r\n SimpleChanges,\r\n OnInit,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component';\r\n\r\nconst BIMPLUS_NOTIFY_MESSAGES = \"bimplus-notify-messages\";\r\ninterface MessageModel {\r\n 'id': string | undefined,\r\n 'type': string | undefined,\r\n 'title': string | undefined,\r\n 'text': string | undefined,\r\n 'link': string | undefined,\r\n 'linkText': string | string[] | undefined,\r\n 'links': string[] | undefined,\r\n 'actionId': number | undefined,\r\n 'capitalizedTitle': string | boolean | undefined\r\n}\r\n@Component({\r\n selector: 'lib-bimplus-notify',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n BimplusScrollableContainerComponent\r\n ],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-notify.component.html',\r\n styleUrl: './bimplus-notify.component.less',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class BimplusNotifyComponent extends BimplusLocalizedWidgetComponent implements OnChanges, OnInit{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n // Expose Array constructor as a property\r\n Array = Array;\r\n \r\n @HostBinding('class.new-messages')\r\n get newMessages() {\r\n return this._alertActive;\r\n }\r\n\r\n @HostBinding('class.bim-notify')\r\n get bimNotify() {\r\n return true; // Or you can use a condition here if needed\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of messages\r\n --------------------------------------------------------------------------*/\r\n _messagesList: MessageModel[] = [];\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messagePreviewTime : number = 3000; // in ms\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) showMessagePreview : boolean = true;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesLimit : number = 3;\r\n\r\n /**--------------------------------------------------------------------------\r\n * offset of preview messages from main icon\r\n --------------------------------------------------------------------------*/\r\n @Input() previewMessagesOffsetY : string = '2.7em';\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() messages : string = '';\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['messages']) {\r\n const newValue = changes['messages'].currentValue;\r\n this.updateMessages(newValue);\r\n }\r\n }\r\n\r\n updateMessages(newValue: string /*, oldValue: string*/) {\r\n const isOk = newValue && typeof newValue === 'string';\r\n if (!isOk) {\r\n this._messagesList = [];\r\n this._previewMessagesList = [];\r\n this._alertActive = false;\r\n return;\r\n }\r\n\r\n const msgData = JSON.parse(newValue);\r\n this._messagesList = msgData.messages;\r\n\r\n // filter new messages into the list for preview\r\n let newMessagesList = this._messagesList.filter( (msg) => this._oldMessagesList.findIndex( (oldMsg) => oldMsg.id === msg.id ) < 0 );\r\n newMessagesList = newMessagesList.filter( (item) => this._messageNotReadYet(item)); // filtering out allready read messages (stored in localstorage)\r\n\r\n // setup preview for new messages\r\n newMessagesList.reverse().forEach( (newMsg) => {\r\n if ( this._previewMessagesList.findIndex( (item) => newMsg.id === item.id ) < 0){\r\n this._previewMessagesList.unshift(newMsg);\r\n\r\n if( this.messagePreviewTime > 0 ) {\r\n setTimeout(() => {\r\n this._closePreviewMessage(newMsg.id, false);\r\n }, this.messagePreviewTime);\r\n }\r\n }\r\n })\r\n\r\n // limit preview messages count\r\n this._previewMessagesList.length = this._previewMessagesList.length > this.previewMessagesLimit ? this.previewMessagesLimit : this._previewMessagesList.length;\r\n\r\n // set old state and alert\r\n this._oldMessagesList = this._messagesList;\r\n this._alertActive = this._messagesList.length != 0;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened: boolean = false;\r\n _alertActive: boolean = false;\r\n _oldMessagesList: MessageModel[] = [];\r\n // list of messages for preview\r\n _previewMessagesList: MessageModel[] = [];\r\n\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteMessage = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Delete all item event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyDeleteAllMessages = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Message action event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusNotifyMessageAction = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * initial component load\r\n --------------------------------------------------------------------------*/\r\n ngOnInit(): void {\r\n this.updateMessages(this.messages);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close single message\r\n --------------------------------------------------------------------------*/\r\n _closeMessage( item: MessageModel, preview: boolean, event: Event | undefined ){\r\n if (preview) {\r\n return this._closePreviewMessage(item.id);\r\n }\r\n\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n fireEvent(this, \"bimplusNotifyDeleteMessage\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close preview message\r\n --------------------------------------------------------------------------*/\r\n _closePreviewMessage( msgId: string | undefined, closedByUser = true ){\r\n if (!msgId) {\r\n return;\r\n }\r\n\r\n this._previewMessagesList = this._previewMessagesList.filter( (msg) => msg.id !== msgId );\r\n this.storeMessagesAsRead([msgId]);\r\n if ( closedByUser && this._previewMessagesList.length === 0 ){\r\n this._alertActive = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * close all messages\r\n --------------------------------------------------------------------------*/\r\n _deleteAllMessages(){\r\n fireEvent(this, \"bimplusNotifyDeleteAllMessages\");\r\n this.clearAllLocalStorageMessages();\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * message clicked\r\n --------------------------------------------------------------------------*/\r\n _messageAction( item: MessageModel, index: number ){\r\n item.actionId = index;\r\n fireEvent(this, \"bimplusNotifyMessageAction\", JSON.stringify(item));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n this._alertActive = false;\r\n this._previewMessagesList = [];\r\n }\r\n\r\n _messageNotReadYet(message: MessageModel){\r\n if(!message?.id){\r\n return true;\r\n }\r\n const messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n if(!messageListString){\r\n return true;\r\n }\r\n return !messageListString.includes(message.id);\r\n }\r\n\r\n storeMessagesAsRead(messageList: string[]){\r\n if(!messageList || messageList.length <1){\r\n return;\r\n }\r\n let messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\r\n if(!messageListString){\r\n messageListString = \"\";\r\n }\r\n messageList.forEach((item: string)=>{\r\n if(!messageListString?.includes(item)){\r\n messageListString+=(item+\";\");\r\n }\r\n })\r\n window.localStorage.setItem(BIMPLUS_NOTIFY_MESSAGES,messageListString);\r\n }\r\n\r\n clearAllLocalStorageMessages(){\r\n window.localStorage.removeItem(BIMPLUS_NOTIFY_MESSAGES);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * get item link title\r\n --------------------------------------------------------------------------*/\r\n _getItemLinkTitle( item: MessageModel, index: number ){\r\n let itemLinksTitles: (string | undefined)[] = [];\r\n if ( item.linkText && (item.links || item.link)) {\r\n itemLinksTitles = Array.isArray(item.links) ? item.links : [item.link];\r\n }\r\n return itemLinksTitles[index] ?? '';\r\n }\r\n}\r\n","<div\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n [title]=\"'_BimplusNotifyTitle' | translate\"\r\n>\r\n <div class=\"dropdown-toggle\" >\r\n <div\r\n class=\"main-icon\"\r\n [ngClass]=\"'icon-notify' + (this._alertActive ? '-alert notify' : '')\"\r\n ></div>\r\n </div>\r\n\r\n <div\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"notify-tick\"></div>\r\n <div class=\"messages-title\">\r\n <div class=\"messages-count\">\r\n ({{this._messagesList.length}})\r\n </div>\r\n <div\r\n class=\"messages-delete-all\"\r\n (click)=\"_deleteAllMessages()\"\r\n (keypress)=\"_deleteAllMessages()\"\r\n >\r\n {{\"_Notify_Mark_All\" | translate}}\r\n </div>\r\n </div>\r\n <div class=\"messages-container\">\r\n @if (_messagesList.length) {\r\n <lib-bimplus-scrollable-container>\r\n <div\r\n *ngFor=\"let item of _messagesList\"\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, false, $event)\"\r\n (keypress)=\"_closeMessage(item, false, $event)\"\r\n ></div>\r\n </div>\r\n \r\n <div class=\"message-item-body-text\">{{item.text}}</div>\r\n @if (item.linkText) {\r\n <div\r\n *ngFor=\"let link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); let i = index\"\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n (keypress)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n }\r\n </div>\r\n </lib-bimplus-scrollable-container>\r\n } @else {\r\n <div class=\"message-item-empty\">\r\n <div class=\"message-item-empty-icon\"></div>\r\n <div class=\"message-item-empty-text\">{{\"_Notify_No_Messages\" | translate}}</div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n\r\n<div\r\n class=\"bimcomp-messages-preview\"\r\n [ngClass]=\"(showMessagePreview && !_menuOpened && _previewMessagesList.length > 0) ? 'visible' : ''\"\r\n [style.top]=\"previewMessagesOffsetY\"\r\n>\r\n <div class=\"messages-container-preview\">\r\n <div\r\n *ngFor=\"let item of _previewMessagesList\"\r\n class=\"message-item\"\r\n >\r\n <div class=\"message-item-title\">\r\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\r\n <div\r\n class=\"message-item-title-text\"\r\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\r\n >\r\n {{item.title}}\r\n </div>\r\n <div\r\n class=\"message-item-icon-close\"\r\n (click)=\"_closeMessage(item, true, $event)\"\r\n (keypress)=\"_closeMessage(item, true, $event)\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"message-item-body-text\">\r\n {{item.text}}\r\n </div>\r\n @if (item.linkText) {\r\n <div\r\n *ngFor=\"let link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); let i = index\"\r\n class=\"message-item-link\"\r\n [title]=\"_getItemLinkTitle(item, i)\"\r\n (click)=\"_messageAction(item, i)\"\r\n (keypress)=\"_messageAction(item, i)\"\r\n >{{link}}</div>\r\n }\r\n </div>\r\n </div>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'pxsuffix',\r\n standalone: true\r\n})\r\nexport class PxsuffixPipe implements PipeTransform {\r\n\r\n transform(input: number): string{ //string type\r\n return input + 'px';\r\n } \r\n\r\n}\r\n","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { fireEvent } from '../utils/utils';\r\n\r\n@Directive({\r\n selector: '[xDraggable]',\r\n standalone: true\r\n})\r\nexport class XDraggableDirective {\r\n\r\n oldX = 0;\r\n isDragging = false;\r\n wasDragging = false;\r\n isMouseDown = false;\r\n\r\n @Output()\r\n dragging = new EventEmitter<number>();\r\n\r\n @Output()\r\n clicked = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this.isDragging && !this.isMouseDown) {\r\n return;\r\n }\r\n\r\n const deltaX = (event.clientX - this.oldX);\r\n\r\n if(!this.isDragging){\r\n if(Math.abs(deltaX) > 2){\r\n this.isDragging = true;\r\n this.wasDragging = true;\r\n }else{\r\n return;\r\n }\r\n }\r\n\r\n fireEvent(this, \"dragging\", deltaX);\r\n\r\n this.oldX = event.clientX;\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n onMouseUp() {\r\n this.isDragging = false;\r\n this.isMouseDown = false;\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n this.isMouseDown = true;\r\n this.wasDragging = false;\r\n this.oldX = event.clientX;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onMouseClick(event: MouseEvent) {\r\n if(!this.wasDragging){\r\n fireEvent(this, \"clicked\", event);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewEncapsulation, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PxsuffixPipe } from '../../pipes/pxsuffix.pipe';\r\nimport { XDraggableDirective } from '../../directives/x-draggable.directive'\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface SidenavItem{\r\n id : string;\r\n icon? : string;\r\n iconActive? : string;\r\n iconDisabled? : string;\r\n text : string;\r\n disabled? : boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-sidenav',\r\n standalone: true,\r\n imports: [CommonModule, PxsuffixPipe, XDraggableDirective, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-sidenav.component.html',\r\n styleUrl: './bimplus-sidenav.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class BimplusSidenavComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService);\r\n }\r\n\r\n// #region public fields\r\n readonly activeItem = signal<string>('');\r\n readonly drawerWidth = signal<number>(300);\r\n readonly drawerExpanded = signal(true);\r\n\r\n @Output() activeItemChanged = new EventEmitter<string>();\r\n @Output() actionClicked = new EventEmitter<string>();\r\n @Output() footerClicked = new EventEmitter<string>();\r\n\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'items' }) set itemsValue(value: Array<SidenavItem>) {\r\n this.items.set(value);\r\n if(value.length){\r\n this._activateItem(value[0].id);\r\n }\r\n }\r\n protected readonly items = signal<SidenavItem[]>([]);\r\n\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'actionItems' }) set actionItemsValue(value: Array<SidenavItem>) {\r\n this.actionItems.set(value);\r\n }\r\n protected readonly actionItems = signal<SidenavItem[]>([]);\r\n\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'footerItem' }) set footerItemValue(value: SidenavItem | null) {\r\n this.footerItem.set(value);\r\n }\r\n protected readonly footerItem = signal<SidenavItem | null>(null);\r\n// #endregion public fields\r\n\r\n// #region public methods\r\n _activateItem(item : string){\r\n this.activeItem.set(item);\r\n const foundItem = this.items().find(x => x.id == item);\r\n if(!foundItem){\r\n return;\r\n }\r\n\r\n if(!this.drawerExpanded()){\r\n this._toggleDrawer();\r\n }\r\n fireEvent(this, \"activeItemChanged\", item);\r\n }\r\n\r\n _clickAction(item : string){\r\n fireEvent(this, \"actionClicked\", item);\r\n }\r\n\r\n _clickFooter(item : string){\r\n fireEvent(this, \"footerClicked\", item);\r\n }\r\n\r\n _toggleDrawer(){\r\n this.drawerExpanded.update(value => !value);\r\n }\r\n\r\n _onResizeWidth(event : number): void {\r\n const deltaX = event;\r\n this.drawerWidth.update(value => (value + deltaX));\r\n }\r\n // #endregion public methods\r\n}\r\n","\r\n<div class=\"sidenav\">\r\n @for (sideNavItem of items(); track sideNavItem) {\r\n <div class=\"sidenav-row\">\r\n @if (sideNavItem.disabled) {\r\n <div\r\n [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\"\r\n class=\"sidenav-item\"\r\n [style.background]=\"' no-repeat center center url(' + sideNavItem.iconDisabled + ')'\"\r\n [title]=\"sideNavItem.text | translate\"\r\n (keypress)=\"_toggleDrawer()\"\r\n >\r\n </div>\r\n } @else {\r\n @if (activeItem() === sideNavItem.id) {\r\n <div\r\n [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\"\r\n class=\"sidenav-item\"\r\n [style.background]=\"' no-repeat center center url(' + sideNavItem.iconActive + ')'\"\r\n (click)=\"_toggleDrawer()\"\r\n (keypress)=\"_toggleDrawer()\"\r\n [title]=\"sideNavItem.text | translate\"\r\n >\r\n </div>\r\n } @else {\r\n <div\r\n [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\" class=\"sidenav-item\"\r\n [style.background]=\"' no-repeat center center url(' + sideNavItem.icon + ')'\"\r\n (click)=\"_activateItem(sideNavItem.id)\"\r\n (keypress)=\"_activateItem(sideNavItem.id)\"\r\n [title]=\"sideNavItem.text | translate\"\r\n >\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (actionItems().length) {\r\n <div class=\"sidenav-separator\"></div>\r\n @for(actionItem of actionItems(); track actionItem) {\r\n <div class=\"sidenav-row\">\r\n <div\r\n [attr.data-test]=\"'sidenav_action_item_' + actionItem.id\"\r\n class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + actionItem.icon + ')'\"\r\n (click)=\"_clickAction(actionItem.id)\"\r\n (keypress)=\"_clickAction(actionItem.id)\"\r\n [title]=\"actionItem.text | translate\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n }\r\n @if (footerItem(); as footerItem) {\r\n <div class=\"sidenav-row-footer\">\r\n <div\r\n [attr.data-test]=\"'sidenav_footer_item_' + footerItem.id\"\r\n class=\"sidenav-item\"\r\n [style.background]=\"' no-repeat center center url(' + footerItem.icon + ')'\"\r\n (click)=\"_clickFooter(footerItem.id)\"\r\n (keypress)=\"_clickFooter(footerItem.id)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div\r\n class=\"sidenav-drawer\"\r\n [style.width]=\"drawerWidth() | pxsuffix\"\r\n [ngClass]=\"drawerExpanded() ? '' : 'hidden'\"\r\n>\r\n <slot></slot>\r\n @if (drawerExpanded()) { \r\n <div xDraggable\r\n class=\"sidenav-resize-border-right\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n >\r\n </div>\r\n <div xDraggable\r\n data-test=\"sidenav-resize-handle\"\r\n class=\"sidenav-resize-handle-left\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n (clicked)=\"_toggleDrawer()\"\r\n >\r\n </div>\r\n }\r\n</div>\r\n@if (!drawerExpanded()) { \r\n <div\r\n data-test=\"sidenav-resize-handle\"\r\n class =\"sidenav-resize-handle-left collapsed\"\r\n (click)=\"_toggleDrawer()\"\r\n (keypress)=\"_toggleDrawer()\"\r\n >\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, signal } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-storage-info',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-storage-info.component.html',\r\n styleUrl: './bimplus-storage-info.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusStorageInfoComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'usedStorage' }) set usedStorageValue(value: number) {\r\n this.usedStorage.set(value);\r\n }\r\n protected readonly usedStorage = signal<number>(0);\r\n\r\n\r\n @Output() bimplusStorageInfoClicked = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * clicked storage info container\r\n --------------------------------------------------------------------------*/\r\n _infoClicked( action: string ){\r\n fireEvent(this, \"bimplusStorageInfoClicked\", action);\r\n }\r\n}\r\n","<div\r\n class=\"storage-info\"\r\n (click)=\"_infoClicked('storageInfo')\"\r\n (keypress)=\"_infoClicked('storageInfo')\"\r\n>\r\n <span class=\"progress-title\">\r\n {{\"_Common_Data_Environment_Quota\" | translate}}\r\n <span class=\"progress-text\" data-test=\"used-storage\">\r\n {{usedStorage()}}%\r\n </span>\r\n </span>\r\n <div class=\"storage-info-bar-container\">\r\n <div \r\n class=\"storage-info-bar\"\r\n [ngClass]=\"{\r\n 'red': usedStorage() >= 90,\r\n 'yellow': usedStorage() >= 80 && usedStorage() < 90,\r\n 'green': usedStorage() < 80\r\n }\"\r\n [style.width]=\"usedStorage() + '%'\"\r\n [style.max-width]=\"usedStorage() + '%'\"\r\n ></div>\r\n </div>\r\n</div>","import { ToolHubVisualSettings, ToolHubItemUnits } from './bimplus-tool-hub.interface';\r\n\r\nconst RAD_DEG : number = Math.PI / 180.0;\r\nconst PI2 : number = 2 * Math.PI;\r\n\r\n\r\nexport class SVGGenerator {\r\n\r\n // Constants for drawing arc\r\n /**\r\n * @param {Array.<Number>} center\r\n * @param {Number} R\r\n * @param {Number} angle\r\n * @return {Array.<Number>}\r\n */\r\n static pointOnArc(center: [number,number], R: number, angle: number) : [number, number] {\r\n const radians = (angle - 90) * RAD_DEG;\r\n\r\n return [center[0] + R * Math.cos(radians), center[1] + R * Math.sin(radians)];\r\n }\r\n\r\n /**\r\n * Generates arc path\r\n *\r\n * @param {Array.<Number>} center\r\n * @param {Number} radius\r\n * @param {Number} start\r\n * @param {Number} end\r\n * @param {Number} width\r\n * @param {Number} corner Corner radius\r\n * @param {Number} canvasWidth - Divisor to have svg with range 0 to 1\r\n *\r\n * @return {String|Array.<Number|String>}\r\n */\r\n static arc(center: [number,number], radius: number, start: number, end: number, width: number, corner: number, canvasWidth: number) : string {\r\n\r\n const innerR = radius - width;\r\n const circumference = Math.abs(end - start);\r\n corner = Math.min(width / 2, corner);\r\n\r\n if (360 * (corner / (Math.PI * (radius - width))) > Math.abs(start - end)) {\r\n corner = circumference / 360 * innerR * Math.PI;\r\n }\r\n\r\n // inner and outer radiuses\r\n const innerR2 = innerR + corner;\r\n const outerRadius = radius - corner;\r\n\r\n // butts corner points\r\n const oStart = this.pointOnArc(center, outerRadius, start);\r\n const oEnd = this.pointOnArc(center, outerRadius, end);\r\n\r\n const iStart = this.pointOnArc(center, innerR2, start);\r\n const iEnd = this.pointOnArc(center, innerR2, end);\r\n\r\n const iSection = 360 * (corner / (PI2 * innerR));\r\n const oSection = 360 * (corner / (PI2 * radius));\r\n\r\n // arcs endpoints\r\n const iArcStart = this.pointOnArc(center, innerR, start + iSection);\r\n const iArcEnd = this.pointOnArc(center, innerR, end - iSection);\r\n\r\n const oArcStart = this.pointOnArc(center, radius, start + oSection);\r\n const oArcEnd = this.pointOnArc(center, radius, end - oSection);\r\n\r\n const arcSweep1 = circumference > 180 + 2 * oSection ? 1 : 0;\r\n const arcSweep2 = circumference > 180 + 2 * iSection ? 1 : 0;\r\n\r\n const points : Array<string> = new Array<string>(\r\n // begin path\r\n \"M\", (oStart[0] / canvasWidth).toString(), (oStart[1] / canvasWidth).toString(),\r\n // outer start corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (oArcStart[0] / canvasWidth).toString(), (oArcStart[1] / canvasWidth).toString(),\r\n // outer main arc\r\n \"A\", (radius / canvasWidth).toString(), (radius / canvasWidth).toString(), \"0\", (arcSweep1 / canvasWidth).toString(), \"1\", (oArcEnd[0] / canvasWidth).toString(), (oArcEnd[1] / canvasWidth).toString(),\r\n // outer end corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (oEnd[0] / canvasWidth).toString(), (oEnd[1] / canvasWidth).toString(),\r\n // end butt\r\n \"L\", (iEnd[0] / canvasWidth).toString(), (iEnd[1] / canvasWidth).toString(),\r\n // inner end corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (iArcEnd[0] / canvasWidth).toString(), (iArcEnd[1] / canvasWidth).toString(),\r\n // inner arc\r\n \"A\", (innerR / canvasWidth).toString(), (innerR / canvasWidth).toString(), \"0\", (arcSweep2 / canvasWidth).toString(), \"0\", (iArcStart[0] / canvasWidth).toString(), (iArcStart[1] / canvasWidth).toString(),\r\n // inner start corner\r\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (iStart[0] / canvasWidth).toString(), (iStart[1] / canvasWidth).toString(), \"Z\" // end path*/\r\n );\r\n\r\n return points.join(' ');\r\n }\r\n\r\n /*\r\n * svg units - when \"objectBoundingBox\" is applied, coordinates are relative,\r\n * use coordinates as ratio (in range 0-1),\r\n * f.e. (1,1) is botom right corner of element\r\n */\r\n static drawMenuItemSvg(svgRadius: number, svgRadiusInner: number, buttonsLength: number, isEMEmbedded: boolean): ToolHubItemUnits {\r\n \r\n const radius = isEMEmbedded ? (svgRadius - 5) * 10 : svgRadius * 10;\r\n const radiusInner = isEMEmbedded ? (svgRadiusInner - 3) * 10 : svgRadiusInner * 10;\r\n const width = radius * 2;\r\n // coordinates of points describing one item on menu\r\n const angle = 360 / ((buttonsLength > 0) ? buttonsLength : 1);\r\n const halfAngleRadians = (angle * Math.PI) / 360;\r\n const leftX = radius - Math.sin(halfAngleRadians) * radius;\r\n const leftY = radius - Math.cos(halfAngleRadians) * radius;\r\n const rightX = radius + Math.sin(halfAngleRadians) * radius;\r\n const rightY = radius - Math.cos(halfAngleRadians) * radius;\r\n \r\n \r\n return {\r\n radius: radius / width,\r\n radiusInner: radiusInner / width,\r\n width: 1,\r\n thick: (radius - radiusInner) / width,\r\n innerEdgeRight: (radius + radiusInner) / width,\r\n leftX: leftX / width,\r\n leftY: leftY / width,\r\n rightX: rightX / width,\r\n rightY: rightY / width\r\n };\r\n }\r\n\r\n \r\n static generateAnnularSector(settings : ToolHubVisualSettings): string{\r\n const multiplier = 12;\r\n return SVGGenerator.arc(\r\n [settings.subMenuCenter[0] * multiplier, settings.subMenuCenter[1] * multiplier],\r\n settings.subMenuRadius * multiplier,\r\n settings.subMenuStartAngle,\r\n settings.subMenuEndAngle,\r\n settings.subMenuWidth,\r\n 7,\r\n 425\r\n );\r\n }\r\n\r\n static generateAnnularSectorBorder(settings : ToolHubVisualSettings): string{\r\n const multiplier = 12;\r\n return SVGGenerator.arc(\r\n [settings.subMenuCenter[0] * multiplier, settings.subMenuCenter[1] * multiplier],\r\n (settings.subMenuRadius * multiplier) + 1,\r\n settings.subMenuStartAngle - 0.5,\r\n settings.subMenuEndAngle + 0.5,\r\n settings.subMenuWidth + 2,\r\n 7,\r\n 425\r\n );\r\n }\r\n\r\n static generateDeadZoneAnnularSector(settings : ToolHubVisualSettings): string{\r\n const multiplier = 12;\r\n return SVGGenerator.arc(\r\n [settings.deadZoneCenter[0] * multiplier, settings.deadZoneCenter[1] * multiplier],\r\n (settings.deadZoneRadius) * multiplier,\r\n settings.deadZoneStartAngle,\r\n settings.deadZoneEndAngle,\r\n settings.deadZoneWidth,\r\n 7,\r\n 700);\r\n }\r\n\r\n static getSVGViewBox(units : ToolHubItemUnits):string{\r\n return `0 0 ${units.width} ${units.width}`;\r\n }\r\n\r\n static getSVGCenterMenuPath(units : ToolHubItemUnits):string{\r\n return `M 0 ${units.radius} A ${units.radius} ${units.radius} 0 0 1 ${units.width} ${units.radius} L ${units.width} ${units.radius} A ${units.radius} ${units.radius} 0 0 1 0 ${units.radius} L ${units.thick} ${units.radius} A ${units.radiusInner} ${units.radiusInner} 0 0 0 ${units.innerEdgeRight} ${units.radius} L ${units.innerEdgeRight} ${units.radius} A ${units.radiusInner} ${units.radiusInner} 0 0 0 ${units.thick} ${units.radius} Z`;\r\n }\r\n\r\n static getSVGCenterMenuItemPath(units : ToolHubItemUnits):string{\r\n return `M ${units.radius} ${units.radius} L ${units.leftX} ${units.leftY} A ${units.radius} ${units.radius} 0 0 1 ${units.rightX} ${units.rightY} L ${units.rightX} ${units.rightY} L ${units.radius} ${units.radius} Z`;\r\n }\r\n\r\n static getSVGCenterSubMenuItemPath(subMenuUnits : ToolHubItemUnits):string{\r\n return `M ${subMenuUnits.radius} ${subMenuUnits.radius} L ${subMenuUnits.leftX} ${subMenuUnits.leftY} A ${subMenuUnits.radius} ${subMenuUnits.radius} 0 0 1 ${subMenuUnits.rightX} ${subMenuUnits.rightY} L ${subMenuUnits.rightX} ${subMenuUnits.rightY} L ${subMenuUnits.radius} ${subMenuUnits.radius} Z`;\r\n }\r\n\r\n}\r\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolHubItem } from '../bimplus-tool-hub.interface';\r\n@Component({\r\n selector: 'lib-tool-hub-item',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './tool-hub-item.component.html',\r\n styleUrl: '../bimplus-tool-hub.component.less',\r\n})\r\nexport class ToolHubItemComponent {\r\n @Input()\r\n item : ToolHubItem | null = null;\r\n \r\n @HostBinding('class.active')\r\n @Input() \r\n active : boolean = false;\r\n \r\n @HostBinding('class.enabled')\r\n @Input() \r\n isEnabled : boolean = true;\r\n \r\n @HostBinding('class.centermenu-button') centerMenuButtonClass: boolean = true;\r\n}\r\n"," <div *ngIf=\"item\" class=\"centermenu-button-icon dragger\" [ngClass]=\"{\r\n 'disabled' : !isEnabled,\r\n 'enabled' : isEnabled,\r\n 'active' : active\r\n }\" [className]=\"item.iconClass\">\r\n \r\n <span class=\"centermenu-button-text\">{{item.text}}</span>\r\n</div>","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolHubSubItem } from '../bimplus-tool-hub.interface';\r\n@Component({\r\n selector: 'lib-tool-hub-sub-item',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './tool-hub-sub-item.component.html',\r\n styleUrl: '../bimplus-tool-hub.component.less',\r\n})\r\nexport class ToolHubSubItemComponent {\r\n @Input() item : ToolHubSubItem | null = null;\r\n \r\n @HostBinding('class.active')\r\n @Input() \r\n active : boolean = false;\r\n \r\n @HostBinding('class.enabled')\r\n @Input() \r\n isEnabled : boolean = true;\r\n\r\n @HostBinding('class.centermenu-button') centerMenuButtonClass: boolean = true;\r\n @HostBinding('class.center-sub-menu-button') centerSubMenuButtonClass: boolean = true;\r\n}\r\n","<div\r\n *ngIf=\"item\"\r\n class=\"center-sub-menu-button-icon\"\r\n [ngClass]=\"{\r\n disabled: !isEnabled,\r\n enabled: isEnabled,\r\n active: active\r\n }\"\r\n [className]=\"item.iconClass\"\r\n>\r\n <span class=\"centermenu-button-text\">{{ item.text }}</span>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation, booleanAttribute, ElementRef, OnInit, AfterViewInit } from '@angular/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SVGGenerator } from './svgGenerator';\r\nimport { ToolHubItemComponent } from './tool-hub-item/tool-hub-item.component';\r\nimport { ToolHubSubItemComponent } from './tool-hub-sub-item/tool-hub-sub-item.component';\r\nimport { DraggableDirective } from '../../directives/draggable.directive'\r\nimport { ToolHubItem, ToolHubSubItem, ToolHubVisualSettings, ToolHubItemUnits, ToolHubItemStates } from './bimplus-tool-hub.interface';\r\nimport { LayoutManagerService } from '../../services/layout-manager.service';\r\nimport { ResizeObserverService } from '../../services/resize-observer.service';\r\n//import { fireEvent } from '../../utils/utils';\r\n\r\nfunction createDefaultVisualSettings(): ToolHubVisualSettings {\r\n const settings: ToolHubVisualSettings = {\r\n subMenuStartAngle: 50,\r\n subMenuEndAngle: 130,\r\n svgRadiusInner: 5.75,\r\n svgRadius: 10.25,\r\n subMenuCenter: [17.25, 17.5],\r\n subMenuRadius: 15.5,\r\n subMenuWidth: 52,\r\n deadZoneCenter: [17, 18],\r\n deadZoneWidth: 140,\r\n deadZoneRadius: 22,\r\n deadZoneStartAngle: 45,\r\n deadZoneEndAngle: 135\r\n }\r\n return settings;\r\n}\r\n\r\n// Use when implementing embedded mode\r\n// function createEmbeddedSettings() : ToolHubVisualSettings{\r\n// const settings : ToolHubVisualSettings = {\r\n// subMenuStartAngle : 50,\r\n// subMenuEndAngle : 130,\r\n// svgRadiusInner : 4,\r\n// svgRadius : 7.25,\r\n// subMenuCenter : [17.25, 17.3],\r\n// subMenuRadius : 16.2,\r\n// subMenuWidth : 62,\r\n// deadZoneCenter : [16.5, 16],\r\n// deadZoneWidth : 120,\r\n// deadZoneRadius : 18,\r\n// deadZoneStartAngle : 35,\r\n// deadZoneEndAngle : 145\r\n// }\r\n// return settings;\r\n// }\r\n\r\nfunction createDefaultItems(): Array<ToolHubItem> {\r\n const items: Array<ToolHubItem> = [\r\n //--- create task ---------------------------------------------------\r\n {\r\n buttonId: 'cmButCreateTask',\r\n iconClass: 'ui-icon-create-task',\r\n text: '_Create_issue_center_menu_tooltip',\r\n tooltip: '_Create_issue_center_menu_tooltip',\r\n tooltipDisabled: '_Create_issue_center_menu_tooltip',\r\n },\r\n\r\n //--- quantity takeoff ---------------------------------------------------\r\n {\r\n buttonId: 'cmButQuantityTakeOff',\r\n iconClass: 'ui-icon-quantity-take-off',\r\n text: '_Quantity_take_Off_center_menu_tooltip',\r\n tooltip: '_Quantity_take_Off_center_menu_tooltip',\r\n tooltipDisabled: '_Quantity_take_Off_center_menu_tooltip',\r\n },\r\n\r\n //--- markup ---------------------------------------------------\r\n {\r\n buttonId: 'cmButMarkup',\r\n iconClass: 'ui-icon-markup',\r\n text: '_Markups_center_menu_tooltip',\r\n tooltip: '_Markups_center_menu_tooltip',\r\n tooltipDisabled: '_Markups_center_menu_tooltip',\r\n },\r\n\r\n //--- section ---------------------------------------------------\r\n {\r\n buttonId: 'cmButSection',\r\n iconClass: 'ui-icon-section',\r\n text: '_Sectioning_center_menu_tooltip',\r\n tooltip: '_Sectioning_center_menu_tooltip',\r\n tooltipDisabled: '_Sectioning_center_menu_tooltip',\r\n },\r\n\r\n //--- hide ---------------------------------------------------\r\n {\r\n buttonId: 'cmButObjTranspMenu',\r\n iconClass: 'ui-icon-obj-transp',\r\n text: '_Hide_objects_center_menu_tooltip',\r\n tooltip: '_Hide_objects_center_menu_tooltip',\r\n tooltipDisabled: '_Hide_objects_center_menu_tooltip',\r\n },\r\n\r\n //--- isolate ---------------------------------------------------\r\n {\r\n buttonId: 'cmButObjSel',\r\n iconClass: 'ui-icon-obj-select',\r\n text: '_Isolate_objects_center_menu_tooltip',\r\n tooltip: '_Isolate_objects_center_menu_tooltip',\r\n tooltipDisabled: '_Isolate_objects_center_menu_tooltip',\r\n },\r\n\r\n //--- navigation map ---------------------------------------------------\r\n {\r\n buttonId: 'cmButNavigationMap',\r\n iconClass: 'ui-icon-navigation-map',\r\n text: '_Navigation_nap_center_menu_tooltip',\r\n tooltip: '_Navigation_nap_center_menu_tooltip',\r\n tooltipDisabled: '_Navigation_nap_center_menu_tooltip',\r\n },\r\n\r\n //--- fullscreen ----------------------------------------------\r\n {\r\n buttonId: 'cmButFullScreen',\r\n iconClass: 'ui-icon-fullscreen',\r\n text: '_Fullscreen_node_center_menu_tooltip',\r\n tooltip: '_Fullscreen_node_center_menu_tooltip',\r\n tooltipDisabled: '_Fullscreen_node_center_menu_tooltip',\r\n },\r\n //--- project navigator ---------------------------------------\r\n {\r\n buttonId: 'cmButProjectNavigator',\r\n iconClass: 'ui-icon-project-navigator',\r\n text: '_Project_navigator_center_menu_tooltip',\r\n tooltip: '_Project_navigator_center_menu_tooltip',\r\n tooltipDisabled: '_Project_navigator_center_menu_tooltip',\r\n },\r\n\r\n //--- reset ---------------------------------------------------\r\n {\r\n iconClass: 'ui-icon-obj-reset',\r\n buttonId: 'cmButResetObj',\r\n text: '_Reset_viewport_center_menu_tooltip',\r\n tooltip: '_Reset_viewport_center_menu_tooltip',\r\n tooltipDisabled: '_Reset_viewport_center_menu_tooltip',\r\n },\r\n //--- view ---------------------------------------------------\r\n {\r\n buttonId: 'cmButResetVp',\r\n iconClass: 'ui-icon-reset-vp',\r\n text: '_Select_view_center_menu_tooltip',\r\n tooltip: '_Select_view_center_menu_tooltip',\r\n tooltipDisabled: '_Select_view_center_menu_tooltip',\r\n subMenuId: 'cmb-view-submenu',\r\n subItems: [\r\n {\r\n buttonId: 'cmButFrontView',\r\n iconClass: 'ui-icon-front-view',\r\n text: '_Front_view_center_menu_tooltip',\r\n tooltip: '_Front_view_center_menu_tooltip',\r\n tooltipDisabled: '_Front_view_center_menu_tooltip',\r\n actionClick: 'centerMenuFrontViewClick',\r\n },\r\n\r\n //--- Top View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButTopView',\r\n iconClass: 'ui-icon-top-view',\r\n text: '_Top_view_center_menu_tooltip',\r\n tooltip: '_Top_view_center_menu_tooltip',\r\n tooltipDisabled: '_Top_view_center_menu_tooltip',\r\n actionClick: 'centerMenuTopViewClick',\r\n },\r\n //--- Side View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButSideView',\r\n iconClass: 'ui-icon-side-view',\r\n text: '_Side_view_center_menu_tooltip',\r\n tooltip: '_Side_view_center_menu_tooltip',\r\n tooltipDisabled: '_Side_view_center_menu_tooltip',\r\n actionClick: 'centerMenuSideViewClick',\r\n },\r\n //--- Perspective View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButPerspectiveView',\r\n iconClass: 'ui-icon-perspective-view',\r\n text: '_Perspective_view_center_menu_tooltip',\r\n tooltip: '_Perspective_view_center_menu_tooltip',\r\n tooltipDisabled: '_Perspective_view_center_menu_tooltip',\r\n actionClick: 'centerMenuPerspectiveViewClick',\r\n }\r\n ]\r\n }\r\n ]\r\n\r\n // Set all tool hub items states to inactive and disabled. Host App must define states\r\n items.forEach(item => { item.active = false; item.disabled = true })\r\n\r\n return items;\r\n}\r\n\r\nconst DEFAULT_POSITION_LEFT = 350;\r\nconst DEFAULT_POSITION_TOP = 670;\r\n@Component({\r\n selector: 'lib-bimplus-tool-hub',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n CommonModule,\r\n ToolHubItemComponent,\r\n ToolHubSubItemComponent,\r\n DraggableDirective\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-tool-hub.component.html',\r\n styleUrl: './bimplus-tool-hub.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusToolHubComponent extends BimplusLocalizedWidgetComponent implements OnInit,AfterViewInit {\r\n constructor(translateService: TranslateService,\r\n private layoutManagerService: LayoutManagerService,\r\n private resizeObserverService:ResizeObserverService,\r\n private element: ElementRef) {\r\n super(translateService);\r\n \r\n this.items = createDefaultItems();\r\n this._visualSettings = createDefaultVisualSettings();\r\n this._units = this.calculateCurrentMenuItemUnits();\r\n this._subMenuUnits = this.calculateCurrentSubMenuItemUnits();\r\n this._annularSector = SVGGenerator.generateAnnularSector(this._visualSettings);\r\n this._annularSectorBorder = SVGGenerator.generateAnnularSectorBorder(this._visualSettings);\r\n this._deadZoneAnnularSector = SVGGenerator.generateDeadZoneAnnularSector(this._visualSettings);\r\n\r\n }\r\n\r\n // #region public fields\r\n \r\n get itemStates(): Array<ToolHubItemStates> {\r\n return this._itemStates;\r\n }\r\n @Input() set itemStates(value: Array<ToolHubItemStates>) {\r\n this._itemStates = value;\r\n this.setItemStates(this._itemStates);\r\n }\r\n\r\n setItemStates(itemStates: Array<ToolHubItemStates>) {\r\n for (const itemState of itemStates) {\r\n const item = this._items.find(item => item.buttonId === itemState.buttonId);\r\n if (item) {\r\n if (itemState.active != undefined) {\r\n item.active = itemState.active;\r\n }\r\n if (itemState.disabled !== undefined) {\r\n item.disabled = itemState.disabled;\r\n }\r\n }\r\n }\r\n\r\n this._updateActivationState();\r\n }\r\n\r\n\r\n get items(): Array<ToolHubItem> {\r\n return this._items;\r\n }\r\n @Input() set items(value: Array<ToolHubItem>) {\r\n this._items = value;\r\n\r\n const buttonsLength = (this._items?.length) > 0 ? this._items.length : 1;\r\n const rootStyle = document?.documentElement?.style;\r\n if (rootStyle) {\r\n const menuItems = rootStyle.getPropertyValue(\"--menu-items\");\r\n if (parseInt(menuItems) !== buttonsLength) {\r\n rootStyle.setProperty(\"--menu-items\", buttonsLength.toString());\r\n }\r\n }\r\n\r\n // Transfer disabled states, which can defined by host app\r\n this.setItemStates(this._itemStates);\r\n }\r\n\r\n get activeSubItems(): Array<ToolHubSubItem> | null {\r\n return this._activeSubItems;\r\n }\r\n\r\n get isCollapsed(): boolean {\r\n return this._isCollapsed;\r\n }\r\n @Input({ transform: booleanAttribute })\r\n set isCollapsed(value: boolean) {\r\n this._isCollapsed = value;\r\n }\r\n\r\n get units(): ToolHubItemUnits {\r\n return this._units;\r\n }\r\n\r\n get subMenuUnits(): ToolHubItemUnits {\r\n return this._subMenuUnits;\r\n }\r\n\r\n get annularSector(): string {\r\n return this._annularSector;\r\n }\r\n\r\n get annularSectorBorder(): string {\r\n return this._annularSectorBorder;\r\n }\r\n\r\n get deadZoneAnnularSector(): string {\r\n return this._deadZoneAnnularSector;\r\n }\r\n\r\n @Input({ transform: booleanAttribute }) isEmbedded: boolean = false;\r\n @Input({ transform: booleanAttribute }) isFocused: boolean = false;\r\n @Input({ transform: booleanAttribute }) isActive: boolean = true;\r\n @Output() itemClicked = new EventEmitter<string>();\r\n @Output() subItemClicked = new EventEmitter<string>();\r\n \r\n // Define event handler for reusing draggable also from resize parent \r\n //@Output() resizedragging = new EventEmitter<[number,number]>();\r\n\r\n private componentId = 'center-menu-fp-id';\r\n private subscription: Subscription | null = null; // Initialize to null\r\n\r\n ngOnInit():void{ \r\n this.layoutManagerService.registerObject(this.element,this.componentId,'#center-menu-fp-id',true,DEFAULT_POSITION_LEFT,DEFAULT_POSITION_TOP);\r\n this.layoutManagerService.registeredItems$.subscribe(items => {\r\n const layoutManagerItem = items.find(item => item.id === this.componentId);\r\n this.isCollapsed = Boolean(layoutManagerItem?.isCollapsed); \r\n });\r\n \r\n }\r\n \r\n ngAfterViewInit():void{\r\n // if the component wants to be registered in layout manager system\r\n // Subscribe to the observable\r\n this.subscription = this.resizeObserverService.parentAppRect$.subscribe(value => {\r\n this.handleParentAppRectSizeChange(value);\r\n });\r\n }\r\n \r\n // #endregion public fields\r\n \r\n // #region public methods\r\n public getSVGViewBox(): string {\r\n return SVGGenerator.getSVGViewBox(this._units);\r\n }\r\n\r\n public getSVGCenterMenuPath(): string {\r\n return SVGGenerator.getSVGCenterMenuPath(this._units);\r\n }\r\n\r\n public getSVGCenterMenuItemPath(): string {\r\n return SVGGenerator.getSVGCenterMenuItemPath(this._units);\r\n }\r\n\r\n public getSVGCenterSubMenuItemPath(): string {\r\n return SVGGenerator.getSVGCenterSubMenuItemPath(this._subMenuUnits);\r\n }\r\n\r\n public toggleMenu() {\r\n this.layoutManagerService.updateCollapsed(!this.isCollapsed,this.componentId);\r\n setTimeout(()=>{\r\n this.layoutManagerService.checkPosition('center-menu-fp-id',this.getSelector(),undefined,0,0,true); \r\n })\r\n }\r\n\r\n findToolHubItemById(id: string): ToolHubItem | undefined {\r\n return this._items.find(x => x.buttonId === id);\r\n }\r\n\r\n clickToolHubItem(action: string) {\r\n const item = this.findToolHubItemById(action);\r\n if (!item || item?.disabled) {\r\n return;\r\n }\r\n\r\n this.itemClicked.emit(action);\r\n }\r\n\r\n clickToolHubSubItem(action: string) {\r\n if (!this._activeSubItems) {\r\n return;\r\n }\r\n\r\n const item = this._activeSubItems.find(x => x.buttonId === action);\r\n if (!item) {\r\n return;\r\n }\r\n\r\n this.subItemClicked.emit(action);\r\n this.closeActiveSubItemsView();\r\n }\r\n\r\n toggleToolHubItemActive(buttonId: string) {\r\n const item = this.findToolHubItemById(buttonId);\r\n if (!item || item.disabled) {\r\n return;\r\n }\r\n\r\n item.active = !item.active;\r\n\r\n this._updateActivationState();\r\n }\r\n\r\n toggleSubItemsView(buttonId: string) {\r\n const item = this.findToolHubItemById(buttonId);\r\n if (!item || item.disabled || !item.subItems) {\r\n return;\r\n }\r\n\r\n item.active = !item.active;\r\n if (item.active) {\r\n this._activeSubItemsView = item;\r\n this._activeSubItems = item.subItems;\r\n } else {\r\n this._activeSubItemsView = null;\r\n this._activeSubItems = null;\r\n }\r\n }\r\n\r\n closeActiveSubItemsView() {\r\n if (this._activeSubItemsView) {\r\n this._activeSubItemsView.active = false;\r\n this._activeSubItemsView = null;\r\n }\r\n this._activeSubItems = null;\r\n }\r\n\r\n setHoveredState(element: string, hovered: boolean) {\r\n const index = this._hoveredElements.indexOf(element);\r\n const storedCountHoverd = this._hoveredElements.length;\r\n\r\n if (index >= 0 && !hovered) {\r\n this._hoveredElements.splice(index, 1);\r\n }\r\n\r\n if (index < 0 && hovered) {\r\n this._hoveredElements.push(element);\r\n }\r\n\r\n if (storedCountHoverd > 0 && this._hoveredElements.length === 0) {\r\n\r\n // If hovered elements count reaches zero, check again a bit delayed. If nothing hovered at that time, close submenu\r\n setInterval(() => {\r\n if (this._hoveredElements.length === 0) {\r\n this.closeActiveSubItemsView();\r\n }\r\n }, 1000);\r\n }\r\n }\r\n\r\n private getSelector():string{\r\n return this.isCollapsed ? '#center-menu-controller':'.center-menu-fp';\r\n }\r\n\r\n dragElement(event: [number, number]): void {\r\n const deltaX1 = event[0];\r\n const deltaY1 = event[1]; \r\n this.layoutManagerService.checkPosition('center-menu-fp-id',this.getSelector(),undefined,deltaX1,deltaY1) \r\n }\r\n\r\n onDragEnd(){\r\n this.layoutManagerService.handleDragEnd('center-menu-fp-id');\r\n }\r\n\r\n // #endregion public methods\r\n\r\n // #region private fields\r\n private _isCollapsed: boolean = false;\r\n private _itemStates: Array<ToolHubItemStates> = Array<ToolHubItemStates>();\r\n private _items: Array<ToolHubItem> = Array<ToolHubItem>();\r\n private _activeSubItemsView: ToolHubItem | null = null;\r\n private _activeSubItems: Array<ToolHubSubItem> | null = null;\r\n private _visualSettings: ToolHubVisualSettings;\r\n private _units: ToolHubItemUnits;\r\n private _subMenuUnits: ToolHubItemUnits;\r\n private _annularSector: string;\r\n private _annularSectorBorder: string;\r\n private _deadZoneAnnularSector: string;\r\n private _hoveredElements: Array<string> = Array<string>();\r\n // #endregion private fields\r\n\r\n // #region private methods\r\n private calculateCurrentMenuItemUnits(): ToolHubItemUnits {\r\n return SVGGenerator.drawMenuItemSvg(this._visualSettings.svgRadius, this._visualSettings.svgRadiusInner, this._items.length, this.isEmbedded);\r\n }\r\n\r\n private calculateCurrentSubMenuItemUnits(): ToolHubItemUnits {\r\n return SVGGenerator.drawMenuItemSvg(this._visualSettings.svgRadius, this._visualSettings.svgRadiusInner, 20, this.isEmbedded);\r\n }\r\n\r\n private handleParentAppRectSizeChange(parentRect:DOMRect | undefined):void{\r\n this.layoutManagerService.checkPosition(this.componentId,this.getSelector(),parentRect,0,0,true); \r\n }\r\n\r\n private _oneOrMoreItemsActive(){\r\n for(const item of this.items){\r\n if(item.active === true)\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _updateActivationState(){\r\n if(this._oneOrMoreItemsActive()){\r\n this.isActive = true;\r\n }else{\r\n this.isActive = false;\r\n }\r\n }\r\n // #region private methods\r\n}\r\n","<div class=\"center-menu\">\r\n <div\r\n class=\"center-menu-fp\"\r\n id=\"center-menu-fp-id\"\r\n [ngClass]=\"activeSubItems ? 'submenu-active' : ''\"\r\n >\r\n <div\r\n libDraggable\r\n id=\"center-menu-controller\"\r\n class=\"center-menu-controller dragger\"\r\n data-test=\"toolhub_controller\"\r\n [ngClass]=\"{\r\n opened: !isCollapsed,\r\n active: isActive\r\n }\"\r\n [title]=\"\r\n isCollapsed\r\n ? ('_Show_toolhub_tooltip' | translate)\r\n : ('_Minimize_toolhub_tooltip' | translate) \r\n \"\r\n (clicked)=\"toggleMenu()\"\r\n (dragging)=\"dragElement($event)\"\r\n (dragEnd) =\"onDragEnd()\"\r\n ></div>\r\n <div\r\n class=\"center-menu-circle-border-inner\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n ></div>\r\n <div\r\n class=\"center-menu-circle-border-outer\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('menuCircleBorderOuter', false)\"\r\n (mouseenter)=\"setHoveredState('menuCircleBorderOuter', true)\"\r\n ></div>\r\n <div\r\n libDraggable\r\n class=\"center-menu-circle\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('menuCircle', false)\"\r\n (mouseenter)=\"setHoveredState('menuCircle', true)\"\r\n (dragging)=\"dragElement($event)\"\r\n >\r\n <lib-tool-hub-item\r\n libDraggable\r\n *ngFor=\"let item of items\"\r\n [attr.data-test]=\"'toolhub_item_' + item.buttonId\"\r\n [title]=\"item.tooltip | translate\"\r\n [item]=\"item\"\r\n [active]=\"!!item.active\"\r\n [isEnabled]=\"!item.disabled\"\r\n (clicked)=\"clickToolHubItem(item.buttonId)\"\r\n ></lib-tool-hub-item>\r\n\r\n <svg\r\n class=\"centermenu-button-svg\"\r\n [attr.viewBox]=\"getSVGViewBox()\"\r\n fill=\"none\"\r\n >\r\n <clipPath id=\"svgCenterMenu\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterMenuPath()\" fill=\"white\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuItem\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterMenuItemPath()\" fill=\"white\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterSubMenuItem\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterSubMenuItemPath()\" fill=\"white\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuSubMenu\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"annularSector\" fill=\"none\" />\r\n </clipPath>\r\n <clipPath\r\n id=\"svgCenterMenuSubMenuBorder\"\r\n clipPathUnits=\"objectBoundingBox\"\r\n >\r\n <path [attr.d]=\"annularSectorBorder\" fill=\"none\" />\r\n </clipPath>\r\n <clipPath\r\n id=\"svgCenterMenuSubMenuDeadZone\"\r\n clipPathUnits=\"objectBoundingBox\"\r\n >\r\n <path [attr.d]=\"deadZoneAnnularSector\" fill=\"none\" />\r\n </clipPath>\r\n </svg>\r\n </div>\r\n\r\n @if (activeSubItems) {\r\n <div\r\n class=\"center-menu-sub-menu-border\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('submenuBorder', false)\"\r\n (mouseenter)=\"setHoveredState('submenuBorder', true)\"\r\n ></div>\r\n <div\r\n class=\"center-menu-sub-menu\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('submenu', false)\"\r\n (mouseenter)=\"setHoveredState('submenu', true)\"\r\n >\r\n <lib-tool-hub-sub-item\r\n *ngFor=\"let item of activeSubItems\"\r\n [attr.data-test]=\"'toolhub_subitem_' + item.buttonId\"\r\n [title]=\"item.tooltip | translate\"\r\n [item]=\"item\"\r\n (click)=\"clickToolHubSubItem(item.buttonId)\"\r\n (keypress)=\"clickToolHubSubItem(item.buttonId)\"\r\n ></lib-tool-hub-sub-item>\r\n </div>\r\n <div\r\n class=\"center-menu-sub-menu-dead-zone\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('deadZone', false)\"\r\n (mouseenter)=\"setHoveredState('deadZone', true)\"\r\n ></div>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute,OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface MenuItem {\r\n id: string,\r\n action: string,\r\n class: string,\r\n textId: string,\r\n type: string,\r\n checkState: string,\r\n url: string,\r\n _url?: () => string; // Function that takes no arguments and returns a string\r\n textClass: string,\r\n queryParams: string\r\n}\r\nexport interface MenuItemEventData {\r\n index: number,\r\n action: string\r\n}\r\nexport interface LangItem {\r\n symbol: string,\r\n text: string,\r\n lCode: string | undefined\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-user-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-user-menu.component.html',\r\n styleUrl: './bimplus-user-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusUserMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n\r\n _languagesList: LangItem[] = [\r\n { symbol: \"cs\", text: \"Čeština\", lCode: \"3\" },\r\n { symbol: \"de\", text: \"Deutsch\", lCode: \"1\" },\r\n { symbol: \"en\", text: \"English (UK)\", lCode: \"0\" },\r\n { symbol: \"us\", text: \"English (US)\", lCode: undefined },\r\n { symbol: \"es\", text: \"Español\", lCode: \"18\" },\r\n { symbol: \"fr\", text: \"Français\", lCode: \"4\" },\r\n { symbol: \"it\", text: \"Italiano\", lCode: \"2\" },\r\n { symbol: \"ru\", text: \"Русский\", lCode: \"14\" },\r\n { symbol: \"ro\", text: \"Romana\", lCode: undefined },\r\n { symbol: \"tr\", text: \"Türkçe\", lCode: undefined }\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n _languagesMenuOpened = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) accountSettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) removeConnectedAppsVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) userGuideVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) supportVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) forumVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) submenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) clearCacheVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerLoggedInVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) logoutVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) allowRcaItem : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() buttonTitle : string = '';\r\n @Input() userName : string = 'Unknown user';\r\n @Input() userPhotoUrl : string = '';\r\n @Input() userGuideLinkUrl : string = 'https://doc.allplan.com/display/BIMPLUSMANUAL/Bimplus+Benutzerhandbuch';\r\n @Input() supportLinkUrl : string = 'https://connect2.allplan.com/services/support';\r\n @Input() forumLinkUrl : string = 'https://connect.allplan.com/de/forum/themen/bim-benutzer-forum.ct';\r\n /**--------------------------------------------------------------------------\r\n * Component events\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusUserMenuClicked = new EventEmitter<MenuItemEventData>();\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue);\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList: MenuItem[] = [\r\n { id:\"accountSettingsPage\", action:\"accountSettings\", class: \"icon-account-settings\", textId: \"_Edit_profile\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\", url: \"\",},\r\n { id:\"removeConnectedApps\", action:\"removeConnectedApps\", checkState: \"allowRcaItem\", class: \"icon-rca\", textClass: \"text-capitalized\", textId: \"_Remove_connected_apps\", type: \"\", url: \"\", queryParams: \"\"},\r\n { id:\"userGuideLink\", action:\"userGuide\", class: \"icon-user-guide\", textId: \"_UserGuide\", get url() { return this._url?.() ?? ''; }, _url: () => this.userGuideLinkUrl, type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"supportLink\", action:\"support\", class: \"icon-support\", textId: \"_Support\", get url() { return this._url?.() ?? ''; }, _url: () => this.supportLinkUrl, queryParams: \"no_cache=1\", type: \"\", checkState: \"\", textClass: \"\"},\r\n { id:\"forumLink\", action:\"forum\", class: \"icon-forum\", textId: \"_Forum\", get url() { return this._url?.() ?? ''; }, _url: () => this.forumLinkUrl, type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"languagesSubmenu\", action:\"submenu\", class: \"icon-languages\", textId: \"_Languages\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"clearCache\", action:\"clearCache\", class: \"icon-clear-cache\", textId: \"_Clear cache\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"dividerLoggedIn\", type: \"divider\", action: \"\", class: \"\", textId: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"logout\", action:\"logout\", class: \"icon-log-out\", textId: \"_Logout\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"}\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( item: MenuItem, index : number ){\r\n if (!item || item.type === 'divider') {\r\n return;\r\n }\r\n\r\n\r\n if (item.action === 'submenu') {\r\n this._toggleLanguagesSubmenuOpened();\r\n }\r\n else {\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusUserMenuClicked\", { index, action: item.action ? item.action : '' });\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * language submenu item clicked\r\n --------------------------------------------------------------------------*/\r\n _switchLanguage( language: string ){\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n if(!this._menuOpened) {\r\n this._languagesMenuOpened = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle language submenu open\r\n --------------------------------------------------------------------------*/\r\n _toggleLanguagesSubmenuOpened(){\r\n if(!this._menuOpened) {\r\n return;\r\n }\r\n this._languagesMenuOpened = !this._languagesMenuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if item is visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuItem) {\r\n\r\n if (item) {\r\n return !this[(`${item.action ? item.action : item.id}Visible` as keyof BimplusUserMenuComponent)];\r\n }\r\n\r\n return false;\r\n }\r\n\r\n //--- add lang code and additional query params to supported urls\r\n _buildUrl(item: MenuItem | undefined) {\r\n let itemUrl = item?.url;\r\n const actualLang = this._languagesList.find(lang=> lang.symbol === this.selectedLanguage);\r\n const langCode = actualLang?.lCode;\r\n const supportsLangCode = itemUrl?.endsWith?.('.ct') && langCode;\r\n if (item?.queryParams || supportsLangCode) {\r\n itemUrl = itemUrl + '?';\r\n if (supportsLangCode) {\r\n itemUrl = itemUrl + 'L=' + langCode;\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + '&';\r\n }\r\n }\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + item.queryParams;\r\n }\r\n }\r\n return itemUrl;\r\n }\r\n\r\n _getMenuItems() {\r\n const menuItemsListFiltered = this.isEmbedded ? this._menuItemsList.slice(0,-3) : this._menuItemsList;\r\n return menuItemsListFiltered.map( (item) => {\r\n\r\n if (this._isHidden(item) || (item.checkState && !this[(item.checkState as keyof BimplusUserMenuComponent)])) {\r\n return;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n _getLangId(lang: LangItem | undefined) {\r\n return \"portalLanguage\" + lang?.symbol.charAt(0).toUpperCase() + lang?.symbol.slice(1);\r\n }\r\n}\r\n","<div\r\n [attr.key]=\"'bimcompOverlay'\"\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n<div\r\n [attr.key]=\"'userMenu'\"\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n>\r\n <div\r\n class=\"dropdown-toggle\"\r\n [title]=\"buttonTitle ? buttonTitle : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <img\r\n class=\"user-photo\"\r\n src=\"{{ userPhotoUrl ? userPhotoUrl : '' }}\"\r\n alt=\"{{ buttonTitle ? buttonTitle : '' }}\"\r\n />\r\n <div class=\"user-name\">\r\n @if (!isTouch) {\r\n {{ userName }}\r\n }\r\n </div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul class=\"bimcomp-dropdown-menu\" [ngClass]=\"_menuOpened ? 'open' : ''\">\r\n <ng-container *ngFor=\"let item of _getMenuItems(); let i = index\">\r\n <li\r\n *ngIf=\"item\"\r\n [attr.key]=\"item.id\"\r\n [attr.role]=\"item.type === 'divider' ? 'separator' : ''\"\r\n [ngClass]=\"{\r\n divider: item.type === 'divider',\r\n languageMenuItem: item.action === 'submenu',\r\n 'submenu-hidden':\r\n (!item.url || item.url.slice(0, 2) === '#/') &&\r\n item.action !== 'submenu'\r\n }\"\r\n (click)=\"_menuItemClicked(item, i)\"\r\n (keypress)=\"_menuItemClicked(item, i)\"\r\n >\r\n @if (item.action === 'submenu') {\r\n <div class=\"submenu arrow\"></div>\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n <div\r\n class=\"languagesSubmenu\"\r\n [ngClass]=\"_languagesMenuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"languageSubmenuItems\">\r\n <div\r\n *ngFor=\"let lang of _languagesList\"\r\n [attr.key]=\"_getLangId(lang)\"\r\n id=\"{{ _getLangId(lang) }}\"\r\n class=\"languageSubmenuItem\"\r\n [ngClass]=\"\r\n lang.symbol === this.selectedLanguage ? 'selected' : ''\r\n \"\r\n (click)=\"_switchLanguage(lang.symbol)\"\r\n (keypress)=\"_switchLanguage(lang.symbol)\"\r\n >\r\n {{ lang.text }}\r\n </div>\r\n </div>\r\n </div>\r\n } @else if (!item.url || item.url.slice(0,2) === \"#/\") {\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n } @else if (!item.type || item.type !== \"divider\") {\r\n <a\r\n href=\"{{ _buildUrl(item) }}\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n class=\"submenu-hidden\"\r\n >\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n </a>\r\n }\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-zoom',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-zoom.component.html',\r\n styleUrl: './bimplus-zoom.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusZoomComponent{\r\n /**--------------------------------------------------------------------------\r\n * List of available zoom\r\n --------------------------------------------------------------------------*/\r\n _zoomList = [\r\n { symbol: \"100\", text: \"100%\"},\r\n { symbol: \"105\", text: \"105%\"},\r\n { symbol: \"110\", text: \"110%\"},\r\n { symbol: \"115\", text: \"115%\"},\r\n { symbol: \"120\", text: \"120%\"},\r\n { symbol: \"125\", text: \"125%\"},\r\n { symbol: \"130\", text: \"130%\"},\r\n { symbol: \"135\", text: \"135%\"},\r\n { symbol: \"140\", text: \"140%\"},\r\n { symbol: \"145\", text: \"145%\"},\r\n { symbol: \"150\", text: \"150%\"}\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() selectedZoom : string = '125';\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selected event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusZoomSelected = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selection\r\n --------------------------------------------------------------------------*/\r\n _switchZoom( zoom: string ){\r\n fireEvent(this, \"bimplusZoomSelected\", zoom);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * setup dynamic classes for zoom item\r\n --------------------------------------------------------------------------*/\r\n _getZoomClassObject( symbol: string ){\r\n return {\r\n 'selected': this.selectedZoom === symbol,\r\n ['bimzoom-' + symbol]: true\r\n };\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n<div \r\n class=\"dropdown\"\r\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n>\r\n <div class=\"dropdown-toggle\">\r\n <div class=\"main-icon icon-zoom\"></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul\r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n >\r\n <li\r\n *ngFor=\"let zoom of _zoomList\"\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"_getZoomClassObject(zoom.symbol)\"\r\n (click)=\"_switchZoom(zoom.symbol)\"\r\n (keypress)=\"_switchZoom(zoom.symbol)\"\r\n >\r\n <span>{{zoom.text}}</span>\r\n </li>\r\n </ul>\r\n</div>\r\n","import { Directive, ElementRef, Output, EventEmitter, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libClickOutside]',\r\n standalone: true\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() public clickOutside = new EventEmitter<void>();\r\n\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(targetElement: HTMLElement) {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import { \r\n Component\r\n , Input\r\n , Output\r\n , booleanAttribute\r\n , ViewEncapsulation\r\n , ElementRef\r\n , EventEmitter\r\n , signal\r\n} from '@angular/core';\r\nimport { NgFor, NgIf, NgStyle} from '@angular/common';\r\nimport { BimplusContextMenuItem, BimplusContextMenuPosition } from './bimplus-context-menu.interface';\r\nimport { ClickOutsideDirective } from '../../directives/click-outside/click-outside.directive';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-context-menu',\r\n standalone: true,\r\n imports: [NgFor, NgIf, NgStyle, ClickOutsideDirective],\r\n templateUrl: './bimplus-context-menu.component.html',\r\n styleUrl: './bimplus-context-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusContextMenuComponent {\r\n @Output() triggerSelected = new EventEmitter();\r\n @Input({ transform: booleanAttribute }) showIcons: boolean = true;\r\n @Input() triggerTitle : string = \"\";\r\n\r\n protected readonly _showDropdown = signal<boolean>(false);\r\n protected _data?: object = undefined;;\r\n protected readonly _position = signal<BimplusContextMenuPosition>({\r\n posX: -2000,\r\n posY: -2000\r\n })\r\n private readonly _element: HTMLElement;\r\n private _interval: number | undefined;\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'items' }) set itemsValue(value: Array<BimplusContextMenuItem> | null | undefined) {\r\n if(!value) {\r\n return;\r\n }\r\n\r\n this.items.set(value);\r\n }\r\n protected readonly items = signal<BimplusContextMenuItem[]>([]);\r\n\r\n constructor(private readonly el: ElementRef) {\r\n this._element = this.el.nativeElement.shadowRoot;\r\n }\r\n\r\n get data(): undefined | object {\r\n return this._data;\r\n }\r\n @Input() set data(data: object) {\r\n this._data = data;\r\n }\r\n\r\n protected _clickOutside() {\r\n this._stopTriggerPositionTracking();\r\n this._showDropdown.set(false);\r\n }\r\n\r\n protected _actionClick(item: BimplusContextMenuItem) {\r\n this._showDropdown.set(false);\r\n\r\n if(typeof item.disabled === 'function') {\r\n if(item.disabled?.(this._data)) {\r\n return;\r\n }\r\n item.action?.(this._data);\r\n return;\r\n }\r\n\r\n if(item.disabled) {\r\n return;\r\n }\r\n item.action?.(this._data);\r\n }\r\n\r\n protected _disabled(item: BimplusContextMenuItem): boolean {\r\n if(!item.disabled) {\r\n return false;\r\n }\r\n if(typeof item.disabled === 'function') {\r\n return item.disabled?.(this._data);\r\n }\r\n return item.disabled;\r\n }\r\n\r\n protected _calculateContextMenuPosition() {\r\n const _triggerElament = this._element.querySelector(\".context-menu-trigger\");\r\n if(!_triggerElament) {\r\n return;\r\n }\r\n\r\n const { right: posX, top: posY } = _triggerElament.getBoundingClientRect();\r\n this._position.set({ posX, posY });\r\n }\r\n\r\n protected _stopTriggerPositionTracking(): void {\r\n if(!this._interval){\r\n return;\r\n }\r\n\r\n clearInterval(this._interval);\r\n this._interval = undefined;\r\n }\r\n\r\n protected _startTriggerPositionTracking(): void {\r\n if(this._interval){\r\n return;\r\n }\r\n this._interval = setInterval(() => {\r\n this._calculateContextMenuPosition();\r\n }, 50) as unknown as number;\r\n }\r\n\r\n protected _toggleDropdown(event: Event) {\r\n this._showDropdown.update(value => !value);\r\n this._calculateContextMenuPosition();\r\n this._startTriggerPositionTracking();\r\n fireEvent(this, \"triggerSelected\");\r\n event.stopPropagation();\r\n }\r\n}\r\n","<div class=\"basic-context-menu\" libClickOutside (clickOutside)=\"_clickOutside()\">\r\n <div class=\"context-menu-trigger\" \r\n (click)=\"_toggleDropdown($event)\"\r\n (keypress)=\"_toggleDropdown($event)\"\r\n title=\"{{triggerTitle}}\"\r\n data-test=\"context-menu\"\r\n >\r\n @if (_showDropdown()) {\r\n <ul\r\n class=\"basic-context-menu__list\"\r\n data-test=\"basic-context-menu__list\"\r\n [ngStyle]=\"{\r\n 'top.px': _position().posY\r\n , 'left.px': _position().posX\r\n }\"\r\n >\r\n @for(item of items(); track item) {\r\n @if (item.id !== 'separator') {\r\n <li \r\n class=\"basic-context-menu__item\"\r\n data-test=\"basic-context-menu__item\"\r\n [class.basic-context-menu__item--disabled]=\"_disabled(item)\"\r\n (click)=\"_actionClick(item)\"\r\n (keypress)=\"_actionClick(item)\"\r\n >\r\n @if (showIcons) {\r\n <div class=\"basic-context-menu__item__icon\" data-test=\"basic-context-menu__item__icon\" [style.background-image]=\"'url(' + item.icon + ')'\">\r\n </div>\r\n }\r\n <div class=\"basic-context-menu__item__label\" data-test=\"basic-context-menu__item__label\" title=\"{{item.tooltip ? item.tooltip : item.title}}\">\r\n {{item.title}}\r\n </div>\r\n </li>\r\n } @else {\r\n <div class=\"basic-context-menu__item__separator\" data-test=\"basic-context-menu__item__separator\"></div>\r\n }\r\n }\r\n </ul>\r\n }\r\n</div>\r\n","import { ElementRef, Component, OnInit, Input, OnChanges, SimpleChange, booleanAttribute, Output, EventEmitter, TemplateRef, signal } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';\r\nimport { SelectionModel} from '@angular/cdk/collections';\r\nimport { CdkTreeModule, FlatTreeControl } from '@angular/cdk/tree';\r\nimport { CommonModule } from '@angular/common';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { TreeNode, FlatNode, FlatTreeContextMenus } from './bimplus-flat-tree.interface';\r\nimport { BimplusContextMenuComponent } from '../bimplus-context-menu/bimplus-context-menu.component';\r\n\r\ninterface BimplusFlatTreeComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-flat-tree',\r\n standalone: true,\r\n imports: [MatTreeModule\r\n , MatButtonModule\r\n , MatIconModule\r\n , CdkTreeModule\r\n , BimplusContextMenuComponent\r\n , CommonModule\r\n ],\r\n templateUrl: './bimplus-flat-tree.component.html',\r\n styleUrl: './bimplus-flat-tree.component.less'\r\n})\r\n\r\nexport class BimplusFlatTreeComponent implements OnInit, OnChanges{\r\n @Input() treeDataStringified: string | null = null;\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'treeTitle' }) set treeTitleValue(value: string) {\r\n this.treeTitle.set(value);\r\n }\r\n protected readonly treeTitle = signal<string | undefined>(undefined);\r\n @Input() paddingIndent : string = \"2.8rem\"\r\n @Input({ transform: booleanAttribute }) multiSelect: boolean = false;\r\n @Input({ transform: booleanAttribute }) oneLevelMultiSelect: boolean = false;\r\n @Input({ transform: booleanAttribute }) showFoldersIcons: boolean = false;\r\n @Input({ transform: booleanAttribute }) showObjectsIcons: boolean = false;\r\n @Input({ transform: booleanAttribute }) enableSelect: boolean = true;\r\n @Input({ transform: booleanAttribute }) enableParentHighlighting: boolean = true;\r\n @Input({ transform: booleanAttribute }) enableDragAndDrop: boolean = false;\r\n @Input() dataTestPrefix : string = \"\";\r\n @Input() contextMenus: FlatTreeContextMenus | null | undefined = null;\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n get treeData() : Array<TreeNode>{\r\n return this._dataSource.data;\r\n }\r\n\r\n @Input() set treeData(data: Array<TreeNode>) {\r\n this.treeDataStringified = null;\r\n this._dataSource.data = data;\r\n }\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'customNodeTemplate' }) set customNodeTemplateValue(value: TemplateRef<unknown> | null) {\r\n this.customNodeTemplate.set(value);\r\n }\r\n protected readonly customNodeTemplate = signal<TemplateRef<unknown> | null>(null);\r\n\r\n @Output() selectedNodes = new EventEmitter<FlatNode[]>();\r\n\r\n private _selectionList: SelectionModel<FlatNode> | undefined = undefined;\r\n\r\n\r\n ngOnInit(): void {\r\n const element = this.el.nativeElement;\r\n if (element) {\r\n (element as unknown as BimplusFlatTreeComponentAttribute)['get_node'] = this.get_node.bind(this);\r\n (element as unknown as BimplusFlatTreeComponentAttribute)['select_node'] = this.select_node.bind(this);\r\n }\r\n\r\n this._selectionList = new SelectionModel<FlatNode>(this.multiSelect || this.oneLevelMultiSelect);\r\n if(this.treeDataStringified){\r\n this._setNewData(this.treeDataStringified)\r\n }\r\n }\r\n\r\n public expandTree(){\r\n this._treeControl.expandAll();\r\n }\r\n\r\n private _getNode(id: string, nodes: Array<TreeNode>): TreeNode | null {\r\n for(const node of nodes) {\r\n if(node.id === id) {\r\n return node;\r\n }\r\n if(node.children) {\r\n const _node: TreeNode | null = this._getNode(id, node.children);\r\n if(_node) {\r\n return _node;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public get_node(id: { id: string } | string, getDOMElement: boolean = false): TreeNode | Element | null {\r\n if(typeof id === 'string') {\r\n return this._getNode(id, this._dataSource.data);\r\n }\r\n if(getDOMElement) {\r\n const _element: Element = this.el.nativeElement.querySelector(`[node-id='${id.id}']`);\r\n return _element;\r\n }\r\n return this._getNode(id.id, this._dataSource.data);\r\n }\r\n\r\n public select_node(id: string, skipEvent: boolean = false) {\r\n const node = this._treeControl.dataNodes.find(n => n.id === id);\r\n if(!node) {\r\n return;\r\n }\r\n\r\n if(!this._selectionList) {\r\n return;\r\n }\r\n\r\n if(this.oneLevelMultiSelect && this._selectionList.selected.length > 0) {\r\n if(this._selectionList.selected[0].parent !== node.parent) {\r\n this._selectionList.clear();\r\n }\r\n }\r\n\r\n if(this._selectionList.isSelected(node)) {\r\n return;\r\n }\r\n\r\n this._selectionList.select(node);\r\n if(!this.multiSelect && !this.oneLevelMultiSelect && !skipEvent) {\r\n fireEvent(this, \"selectedNodes\", this._selectionList.selected );\r\n return;\r\n }\r\n\r\n if(!this.oneLevelMultiSelect) {\r\n this._toggleDescendantsNodes(node);\r\n }\r\n\r\n if(this.enableParentHighlighting) {\r\n this._updateParentSelections(node);\r\n }\r\n\r\n if(!skipEvent){\r\n fireEvent(this, \"selectedNodes\", this._selectionList.selected );\r\n }\r\n\r\n }\r\n\r\n public reset_selection(){\r\n this._selectionList?.clear();\r\n }\r\n\r\n public expand_node(id : string){\r\n const node = this._treeControl.dataNodes.find(n => n.id === id);\r\n if(!node) {\r\n return;\r\n }\r\n\r\n this._treeControl.expand(node);\r\n }\r\n\r\n public is_expanded(id : string){\r\n const node = this._treeControl.dataNodes.find(n => n.id === id);\r\n if(!node) {\r\n return false;\r\n }\r\n\r\n return this._treeControl.isExpanded(node);\r\n }\r\n\r\n public is_selected(id : string){\r\n if(!this._selectionList)\r\n return;\r\n\r\n const node = this._treeControl.dataNodes.find(n => n.id === id);\r\n if(!node) {\r\n return false;\r\n }\r\n\r\n return this._selectionList?.isSelected(node);\r\n }\r\n\r\n private _setNewData(treeDataStringified: string): void {\r\n const _tree_data = JSON.parse(treeDataStringified);\r\n this._dataSource.data = _tree_data ?? [];\r\n }\r\n\r\n private _changedTreeData(change: SimpleChange) {\r\n this._setNewData(change.currentValue)\r\n }\r\n\r\n ngOnChanges(changes: { [propKey: string]: SimpleChange }): void {\r\n if(changes['multiSelect'] || changes['oneLevelMultiSelect']) {\r\n this._selectionList = new SelectionModel<FlatNode>(this.multiSelect || this.oneLevelMultiSelect);\r\n }\r\n if(changes['treeDataStringified']) {\r\n this._changedTreeData(changes['treeDataStringified'])\r\n }\r\n }\r\n\r\n private _transformer = (node: TreeNode, level: number): FlatNode => {\r\n return {\r\n expandable: node.children !== undefined,\r\n children_count: node.children?.length,\r\n name: node.name,\r\n id: node.id,\r\n level: level,\r\n parent: node.parent,\r\n nodeType: node.nodeType\r\n };\r\n };\r\n\r\n protected _treeControl = new FlatTreeControl<FlatNode>(\r\n node => node.level,\r\n node => node.expandable,\r\n );\r\n\r\n protected _treeFlattener = new MatTreeFlattener(\r\n this._transformer,\r\n node => node.level,\r\n node => node.expandable,\r\n node => node.children\r\n );\r\n\r\n protected _dataSource = new MatTreeFlatDataSource(this._treeControl, this._treeFlattener);\r\n protected _isExpendable = (_: number, node: FlatNode) => node.expandable;\r\n protected _isCustomNodeType(node: FlatNode): boolean{\r\n return node.nodeType != undefined && node.nodeType != \"\";\r\n }\r\n\r\n protected _hasChildren(node: FlatNode): boolean {\r\n if(!node.expandable) {\r\n return false;\r\n }\r\n if(node.children_count === undefined) {\r\n return false\r\n }\r\n return node.children_count > 0\r\n }\r\n\r\n protected _descendantsAllSelected(node: FlatNode): boolean {\r\n if(!this._selectionList) {\r\n return false;\r\n }\r\n\r\n const _selectionList: SelectionModel<FlatNode> = this._selectionList;\r\n\r\n const _descendants = this._treeControl.getDescendants(node);\r\n if(_descendants.length === 0) {\r\n return true;\r\n }\r\n const _descAllSelected = _descendants.length > 0 && _descendants.every((child) => {\r\n return _selectionList.isSelected(child);\r\n });\r\n return _descAllSelected;\r\n }\r\n\r\n protected _descendantsPartiallySelected(node: FlatNode): boolean {\r\n if(!this._selectionList) {\r\n return false;\r\n }\r\n const _selectionList: SelectionModel<FlatNode> = this._selectionList;\r\n\r\n const _descendants = this._treeControl.getDescendants(node);\r\n const _result = _descendants.some((child) => {\r\n return _selectionList.isSelected(child)\r\n });\r\n return _result && !this._descendantsAllSelected(node);\r\n }\r\n\r\n private _toggleDescendantsNodes(node: FlatNode) {\r\n if(!this._selectionList) {\r\n return;\r\n }\r\n\r\n const _isNodeSelected = this._selectionList.isSelected(node);\r\n if(_isNodeSelected) {\r\n this._selectionList.select(...this._treeControl.getDescendants(node));\r\n }\r\n else {\r\n this._selectionList.deselect(...this._treeControl.getDescendants(node));\r\n }\r\n }\r\n\r\n private _updateParentSelections(node: FlatNode) {\r\n if(!this._selectionList) {\r\n return;\r\n }\r\n\r\n let _parentId = node.parent;\r\n let _parentNode = this._treeControl.dataNodes.find(n => n.id === _parentId)\r\n while(_parentNode) {\r\n if(this._descendantsAllSelected(_parentNode)) {\r\n this._selectionList.select(_parentNode);\r\n }\r\n else{\r\n this._selectionList.deselect(_parentNode);\r\n }\r\n _parentId = _parentNode.parent;\r\n _parentNode = this._treeControl.dataNodes.find(n => n.id === _parentId);\r\n }\r\n }\r\n\r\n protected _toggleNode(event: Event, node: FlatNode) {\r\n if(!node) {\r\n return;\r\n }\r\n\r\n if(!this.enableSelect) {\r\n return;\r\n }\r\n\r\n if(!this._selectionList) {\r\n return;\r\n }\r\n\r\n // Check if event is a MouseEvent before accessing ctrlKey\r\n const isMouseEvent = event != null && event instanceof MouseEvent;\r\n if (isMouseEvent && !event?.ctrlKey) {\r\n this._selectionList.clear();\r\n }\r\n\r\n if(this.oneLevelMultiSelect && this._selectionList.selected.length > 0) {\r\n if(this._selectionList.selected[0].parent !== node.parent) {\r\n this._selectionList.clear();\r\n }\r\n }\r\n\r\n this._selectionList.toggle(node);\r\n if(!this.multiSelect && !this.oneLevelMultiSelect) {\r\n fireEvent(this, \"selectedNodes\", this._selectionList.selected );\r\n return;\r\n }\r\n\r\n if(!this.oneLevelMultiSelect) {\r\n this._toggleDescendantsNodes(node);\r\n }\r\n \r\n if(this.enableParentHighlighting) {\r\n this._updateParentSelections(node);\r\n }\r\n \r\n fireEvent(this, \"selectedNodes\", this._selectionList.selected );\r\n }\r\n\r\n protected _isSelected(node: FlatNode): boolean{\r\n if(!this._selectionList) {\r\n return false;\r\n }\r\n return this._selectionList?.isSelected(node);\r\n }\r\n}\r\n","<div class=\"tree-container\">\r\n @if (treeTitle(); as treeTitle) {\r\n <div class=\"tree-title\">{{treeTitle}}</div>\r\n }\r\n <cdk-tree [dataSource]=\"_dataSource\" [treeControl]=\"_treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <cdk-tree-node\r\n [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"object-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon object-icon\" *ngIf=\"showObjectsIcons\">\r\n </div>\r\n <span\r\n class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.objectContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.objectContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <cdk-tree-node [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node;when: _isExpendable\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"folder-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\"\r\n >\r\n <div\r\n class=\"icon expand-collapse-icon\"\r\n [class.expand-more-icon]=\"_hasChildren(node) && !_treeControl.isExpanded(node)\"\r\n [class.collapse-icon]=\"_hasChildren(node) && _treeControl.isExpanded(node)\"\r\n >\r\n </div>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon folder-icon\" *ngIf=\"showFoldersIcons\">\r\n </div>\r\n <span class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [class.selected-all-descendants-nodes]=\"_descendantsAllSelected(node) && _isSelected(node) && enableParentHighlighting\"\r\n [class.selected-partially-descendants-nodes]=\"_descendantsPartiallySelected(node) && enableParentHighlighting\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div class=\"node-label\">\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.folderContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.folderContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n </cdk-tree>\r\n</div>\r\n","\r\nexport interface FilterType{\r\n id: string,\r\n name: string\r\n}\r\n\r\nexport interface FilterCriterium{\r\n name : string,\r\n value? : string,\r\n id? : string,\r\n subString : string,\r\n}\r\n\r\nexport enum FilterCriteriaSelectionMode{\r\n None,\r\n SelectObjectProperties,\r\n SelectAttributes\r\n} \r\n\r\nexport const MaxFilterCriteria = 5;","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport { FilterCriterium } from '../bimplus-object-navigator.interface';\r\n\r\n@Component({\r\n selector: 'app-filter-criterium',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './filter-criterium.component.html',\r\n styleUrl: './filter-criterium.component.less'\r\n})\r\nexport class FilterCriteriumComponent {\r\n \r\n // #region public fields\r\n @Input()\r\n criterium : FilterCriterium = { name : \"\", subString:\"\"}\r\n\r\n @HostBinding('style.margin-left.em') @Input() indent: number = 0;\r\n\r\n @Output() deleteCriterium = new EventEmitter<void>();\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n clickedDelete(){\r\n this.deleteCriterium.emit();\r\n }\r\n // #endregion public methods\r\n}\r\n","<div class=\"filter-criterium-row\">\r\n @if(criterium.value){\r\n <span class=\"filter-criterium-item\">{{criterium.name}} &nbsp;&#40;{{criterium.value}}&#41;</span>\r\n }@else{\r\n <span class=\"filter-criterium-item\">{{criterium.name}}</span>\r\n }\r\n <div \r\n class=\"filter-criterium-icon-delete\"\r\n (click)=\"clickedDelete()\"\r\n (keypress)=\"clickedDelete()\"\r\n >\r\n </div>\r\n</div>","import { Component, computed, EventEmitter, Input, Output, signal, ViewChild } from '@angular/core';\r\nimport { BimplusFlatTreeComponent } from '../bimplus-flat-tree/bimplus-flat-tree.component';\r\nimport { FlatNode, TreeNode } from '../bimplus-flat-tree/bimplus-flat-tree.interface';\r\nimport { ObjectStructureNode } from './bimplus-object-structure.interface';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-object-structure',\r\n standalone: true,\r\n imports: [BimplusFlatTreeComponent],\r\n templateUrl: './bimplus-object-structure.component.html',\r\n styleUrl: './bimplus-object-structure.component.less'\r\n})\r\nexport class BimplusObjectStructureComponent{\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'objectStructure' })\r\n set objectStructureValue(node : ObjectStructureNode){\r\n this._objectStructure.set(node);\r\n }\r\n\r\n private readonly _objectStructure = signal<ObjectStructureNode>({\r\n id : \"\",\r\n name : \"\",\r\n parent: \"\"\r\n });\r\n\r\n @ViewChild(BimplusFlatTreeComponent) treeComponent: BimplusFlatTreeComponent | null = null;\r\n \r\n private _convertObjectStructureNodeToTreeNode(node : ObjectStructureNode) : TreeNode{\r\n\r\n const treeNode : TreeNode = {\r\n name: node.name,\r\n id: node.id,\r\n parent: node.parent \r\n };\r\n\r\n if(node.children){\r\n treeNode.children = [];\r\n for(const child of node.children){\r\n const childTreeNode = this._convertObjectStructureNodeToTreeNode(child);\r\n treeNode.children.push(childTreeNode);\r\n }\r\n }\r\n\r\n return treeNode;\r\n }\r\n\r\n readonly treeData = computed<TreeNode[]>(() => {\r\n const objectStructure = this._objectStructure();\r\n if(!objectStructure){\r\n return [];\r\n }\r\n\r\n const root = this._convertObjectStructureNodeToTreeNode(objectStructure);\r\n if(!root){\r\n return [];\r\n }\r\n\r\n return [root];\r\n })\r\n\r\n\r\n private _findNode(id:string, node : ObjectStructureNode) : ObjectStructureNode | null{\r\n if(node.id == id){\r\n return node;\r\n }\r\n\r\n if(node.children){\r\n for(const child of node.children){\r\n const res = this._findNode(id, child);\r\n if(res){\r\n return res;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n handleSelectedNodes(nodes : FlatNode[]){\r\n if(nodes.length === 1){\r\n const selectedNode = this._findNode(nodes[0].id, this._objectStructure());\r\n if(selectedNode){\r\n this.nodeSelected.emit(selectedNode);\r\n }\r\n } \r\n }\r\n\r\n expandTree(){\r\n this.treeComponent?.expandTree();\r\n }\r\n\r\n @Output() nodeSelected = new EventEmitter<ObjectStructureNode>();\r\n}\r\n","<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes)=\"handleSelectedNodes($event)\"\r\n dataTestPrefix=\"object-structure-tree-\"\r\n></lib-bimplus-flat-tree>\r\n","import { Component, computed, EventEmitter, Input, Output, signal, ViewChild } from '@angular/core';\r\nimport { BimplusFlatTreeComponent } from '../bimplus-flat-tree/bimplus-flat-tree.component';\r\nimport { ComplexPropertiesNode } from './bimplus-object-complex-properties.interface';\r\nimport { FlatNode, TreeNode } from '../bimplus-flat-tree/bimplus-flat-tree.interface';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-object-complex-properties',\r\n standalone: true,\r\n imports: [BimplusFlatTreeComponent],\r\n templateUrl: './bimplus-object-complex-properties.component.html',\r\n styleUrl: './bimplus-object-complex-properties.component.less'\r\n})\r\nexport class BimplusObjectComplexPropertiesComponent {\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'complexProperties' })\r\n set complexPropertiesValue(node : ComplexPropertiesNode) {\r\n this._complexProperties.set(node);\r\n }\r\n\r\n private readonly _complexProperties = signal<ComplexPropertiesNode>({\r\n id: \"\",\r\n name: \"\",\r\n parent: \"\"\r\n });\r\n\r\n @ViewChild(BimplusFlatTreeComponent) treeComponent: BimplusFlatTreeComponent | null = null;\r\n\r\n readonly treeData = computed<TreeNode[]>(() => {\r\n const complexProperties = this._complexProperties();\r\n if(!complexProperties) {\r\n return [];\r\n }\r\n\r\n const root = this._convertObjectStructureNodeToTreeNode(complexProperties);\r\n if(!root) {\r\n return [];\r\n }\r\n\r\n return [root];\r\n })\r\n\r\n private _convertObjectStructureNodeToTreeNode(node : ComplexPropertiesNode) : TreeNode{\r\n\r\n const treeNode : TreeNode = {\r\n name: node.name,\r\n id: node.id,\r\n parent: node.parent \r\n };\r\n\r\n if(node.children){\r\n treeNode.children = [];\r\n for(const child of node.children){\r\n const childTreeNode = this._convertObjectStructureNodeToTreeNode(child);\r\n treeNode.children.push(childTreeNode);\r\n }\r\n }\r\n\r\n return treeNode;\r\n }\r\n\r\n\r\n private _findNode(id:string, node : ComplexPropertiesNode) : ComplexPropertiesNode | null{\r\n if(node.id == id){\r\n return node;\r\n }\r\n\r\n if(node.children){\r\n for(const child of node.children){\r\n const res = this._findNode(id, child);\r\n if(res){\r\n return res;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n handleSelectedNodes(nodes : FlatNode[]){\r\n if(nodes.length === 1){\r\n const selectedNode = this._findNode(nodes[0].id, this._complexProperties());\r\n if(selectedNode){\r\n this.nodeSelected.emit(selectedNode);\r\n }\r\n } \r\n }\r\n\r\n expandTree(){\r\n this.treeComponent?.expandTree();\r\n }\r\n\r\n @Output() nodeSelected = new EventEmitter<ComplexPropertiesNode>();\r\n}\r\n","<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes)=\"handleSelectedNodes($event)\"\r\n dataTestPrefix=\"object-complex-properties-tree-\"\r\n></lib-bimplus-flat-tree>\r\n","import * as WebSdk from 'bimplus-websdk';\r\n\r\nexport interface ObjectStructureNode{\r\n id: string;\r\n children? : ObjectStructureNode[];\r\n name: string;\r\n parent: string;\r\n}\r\n\r\nexport class ObjectStructureNodeBuilder{\r\n static createFromResponse(response : WebSdk.ObjectTopologyResponse) : ObjectStructureNode{\r\n const node : ObjectStructureNode = {\r\n id : response.id,\r\n name : response.name ? `${response.type}(${response.name})` : response.type,\r\n parent : response.parent\r\n }\r\n\r\n if(response.children){\r\n node.children = [];\r\n for(const child of response.children){\r\n node.children.push(ObjectStructureNodeBuilder.createFromResponse(child as WebSdk.ObjectTopologyResponse));\r\n }\r\n }\r\n\r\n return node;\r\n }\r\n}","import * as WebSdk from 'bimplus-websdk';\r\n\r\nexport interface ComplexPropertiesNode{\r\n id: string;\r\n children? : ComplexPropertiesNode[];\r\n name: string;\r\n parent: string;\r\n}\r\n\r\nexport class ComplexPropertiesNodeBuilder{\r\n static createFromResponse(response : WebSdk.ObjectComplexPropertyTopologyResponse) : ComplexPropertiesNode{\r\n const node : ComplexPropertiesNode = {\r\n id : response.id,\r\n name : response.type ? response.type : response.name,\r\n parent : response.parent\r\n }\r\n\r\n if(response.children){\r\n node.children = [];\r\n for(const child of response.children){\r\n node.children.push(ComplexPropertiesNodeBuilder.createFromResponse(child as WebSdk.ObjectComplexPropertyTopologyResponse));\r\n }\r\n }\r\n\r\n return node;\r\n }\r\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as WebSdk from 'bimplus-websdk';\r\nimport { BehaviorSubject, from } from 'rxjs';\r\nimport { BimplusLocalizedWidgetComponent } from '../../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { ExpansionPanelComponent } from '../../expansion-panel/expansion-panel.component';\r\nimport { ExpansionPanelHeaderComponent } from '../../expansion-panel-header/expansion-panel-header.component';\r\nimport { FilterCriterium, MaxFilterCriteria } from '../bimplus-object-navigator.interface';\r\nimport { BimplusObjectStructureComponent } from '../../bimplus-object-structure/bimplus-object-structure.component';\r\nimport { BimplusObjectComplexPropertiesComponent } from '../../bimplus-object-complex-properties/bimplus-object-complex-properties.component';\r\nimport { ObjectStructureNode, ObjectStructureNodeBuilder } from '../../bimplus-object-structure/bimplus-object-structure.interface';\r\nimport { ComplexPropertiesNode, ComplexPropertiesNodeBuilder } from '../../bimplus-object-complex-properties/bimplus-object-complex-properties.interface';\r\nimport { ObjectAttribute, ObjectAttributeGroup } from './criteria-select-object-properties.interface';\r\n\r\n@Component({\r\n selector: 'lib-criteria-select-object-properties',\r\n standalone: true,\r\n imports: [ ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent],\r\n templateUrl: './criteria-select-object-properties.component.html',\r\n styleUrl: './criteria-select-object-properties.component.less'\r\n})\r\nexport class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWidgetComponent implements OnInit {\r\n\r\n constructor(translateService: TranslateService){\r\n super(translateService) \r\n }\r\n \r\n ngOnInit() {\r\n this._currentPropertiesObjectId$.subscribe({\r\n next: (id) => {\r\n if(id){\r\n this._createObjectProperties(id, this.revision)\r\n }\r\n }\r\n });\r\n\r\n this._currentObjectId$.subscribe({\r\n next: (id) => {\r\n this._currentPropertiesObjectId$.next(id);\r\n this._createComplexPropertiestructure(id, this.revision);\r\n }\r\n });\r\n\r\n }\r\n\r\n @Input()\r\n api : WebSdk.Api | null = null;\r\n\r\n @Input()\r\n set rootObjectId(id : string){\r\n this._currentObjectId$.next(id);\r\n this._createObjectStructure(id, this.revision);\r\n \r\n this._rootObjectId = id;\r\n }\r\n\r\n get rootObjectId() : string{\r\n return this._rootObjectId;\r\n }\r\n\r\n @Input()\r\n revision : number | undefined = undefined;\r\n \r\n private _currentObjectId$ = new BehaviorSubject<string> (\"\");\r\n\r\n private _currentPropertiesObjectId$ = new BehaviorSubject<string> (\"\");\r\n\r\n objectAttributeGroups : ObjectAttributeGroup[] = [];\r\n\r\n MaxFilterCriteria = MaxFilterCriteria; // For exposure to template\r\n\r\n private _rootObjectId : string = \"\";\r\n\r\n @Input()\r\n set filterCriteria(criteria : FilterCriterium[]){\r\n this._filterCriteria = criteria;\r\n this._syncAttributeStatesFromCriteria();\r\n }\r\n\r\n @Output() filterCriteriaChange = new EventEmitter<FilterCriterium[]>();\r\n\r\n get filterCriteria(){\r\n return this._filterCriteria;\r\n }\r\n\r\n private _filterCriteria : FilterCriterium[] = [];\r\n\r\n private _objectStructure : ObjectStructureNode | null = null;\r\n\r\n get objectStructure(): ObjectStructureNode | null{\r\n return this._objectStructure\r\n }\r\n\r\n private _complexProperties : ComplexPropertiesNode | null = null;\r\n\r\n get complexProperties() : ComplexPropertiesNode | null{\r\n return this._complexProperties;\r\n }\r\n\r\n toggleAttribute(attrib : ObjectAttribute){\r\n attrib.checked = !attrib.checked;\r\n if(attrib.checked === false){\r\n attrib.valueChecked = false;\r\n }\r\n\r\n this.handleFilterCriteriumAttributeStateChange(attrib);\r\n }\r\n\r\n toggleAttributeValue(attrib : ObjectAttribute){\r\n attrib.valueChecked = !attrib.valueChecked;\r\n attrib.checked = attrib.valueChecked;\r\n\r\n this.handleFilterCriteriumAttributeStateChange(attrib);\r\n }\r\n\r\n handleFilterCriteriumAttributeStateChange(attrib : ObjectAttribute){\r\n \r\n const index = this.filterCriteria.findIndex(x=>x.id === attrib.id);\r\n if(index>=0){\r\n if(attrib.checked === false || attrib.valueChecked === false){\r\n this.filterCriteria.splice(index, 1);\r\n this.filterCriteriaChange.emit(this.filterCriteria);\r\n }\r\n }\r\n else if(this.filterCriteria.length < MaxFilterCriteria){\r\n\r\n let substring = `[I][${attrib.id}].Value`;\r\n\r\n if(attrib.valueChecked){\r\n substring += `[F][0]=${attrib.value}`;\r\n }\r\n\r\n this.filterCriteria.push({\r\n name : attrib.name,\r\n value : attrib.valueChecked ? attrib.value : undefined,\r\n id : attrib.id,\r\n subString : substring\r\n });\r\n\r\n this.filterCriteriaChange.emit(this.filterCriteria);\r\n }\r\n }\r\n\r\n handleObjectStructureNodeSelected(node : ObjectStructureNode){\r\n this._currentObjectId$.next(node.id);\r\n }\r\n\r\n handleComplexPropertyNodeSelected(node : ComplexPropertiesNode){\r\n this._currentPropertiesObjectId$.next(node.id);\r\n }\r\n\r\n private _createObjectProperties(objectId : string, revision : number | undefined){\r\n this._loadObjectProperties(objectId, revision)?.subscribe({\r\n \r\n // properties response is badly structured, nearly impossible to create class structure from it. Therefore using shortcut\r\n // any for json response\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n next: (propertiesData : any) => {\r\n this.objectAttributeGroups = this._createAttributeGroupsFromResponse(propertiesData);\r\n this._syncAttributeStatesFromCriteria();\r\n },\r\n error: () =>{\r\n this.objectAttributeGroups = [];\r\n }\r\n }\r\n )\r\n\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _createAttributeGroupsFromResponse(propertiesData : any){\r\n\r\n const groups : Array<ObjectAttributeGroup> = [];\r\n let localizedAttribGroups = null;\r\n if(propertiesData.localizedAttributeGroups){\r\n localizedAttribGroups = propertiesData.localizedAttributeGroups;\r\n }\r\n\r\n if (!propertiesData.attributes){\r\n return groups;\r\n }\r\n\r\n const attribGroups = propertiesData.attributes;\r\n for(const [groupName, attribsObject] of Object.entries(attribGroups)){\r\n \r\n const newGroup : ObjectAttributeGroup = {\r\n name : groupName,\r\n expanded : false,\r\n attributes : []\r\n };\r\n \r\n if(localizedAttribGroups?.[groupName]){\r\n newGroup.name = localizedAttribGroups[groupName]; \r\n }\r\n\r\n if(!attribsObject){\r\n continue;\r\n }\r\n\r\n for(const attrib of Object.values(attribsObject)){\r\n\r\n const newAttrib : ObjectAttribute = {\r\n id : attrib.id,\r\n name : attrib.name,\r\n description : attrib.description,\r\n value : attrib.value,\r\n checked: false,\r\n valueChecked : false,\r\n group : attrib.group\r\n }\r\n\r\n newGroup.attributes.push(newAttrib);\r\n }\r\n\r\n groups.push(newGroup);\r\n }\r\n \r\n return groups;\r\n }\r\n\r\n private _syncAttributeStatesFromCriteria(){\r\n this.objectAttributeGroups.forEach(group=>{\r\n group.attributes.forEach(attrib=>{\r\n const criteria = this._filterCriteria.find(x=>x.id == attrib.id)\r\n if(criteria){\r\n attrib.checked = true;\r\n attrib.valueChecked = criteria.value !== undefined;\r\n }else{\r\n attrib.checked = false;\r\n attrib.valueChecked = false;\r\n }\r\n })\r\n })\r\n }\r\n\r\n private _loadObjectProperties(objectId : string, revision : number | undefined){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n return from(this.api.objects.get(objectId, revision, \"8\", undefined, false, undefined ));\r\n }\r\n\r\n private _loadObjectStructure(objectId : string, revision : number | undefined){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n return from(this.api.objects.getTopology(objectId, revision, false, false, undefined));\r\n }\r\n\r\n private _loadObjectComplexPropertiesStructure(objectId : string, revision : number | undefined){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n return from(this.api.objects.getComplexPropertiesTopology(objectId, revision));\r\n }\r\n\r\n private _createComplexPropertiestructure(objectId : string, revision : number | undefined){\r\n this._loadObjectComplexPropertiesStructure(objectId, revision)?.subscribe({\r\n next :(structureData)=>{\r\n if(structureData){\r\n const complexProps = ComplexPropertiesNodeBuilder.createFromResponse(structureData);\r\n if(complexProps?.children?.length){\r\n this._complexProperties = complexProps;\r\n }else{\r\n this._complexProperties = null;\r\n }\r\n } \r\n }\r\n })\r\n }\r\n\r\n private _createObjectStructure(objectId : string, revision : number | undefined){\r\n this._loadObjectStructure(objectId, revision)?.subscribe({\r\n next :(structureData)=>{\r\n if(structureData){\r\n this._objectStructure = ObjectStructureNodeBuilder.createFromResponse(structureData);\r\n } \r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n}\r\n","<!-- Object structure-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object structure\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure> \r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object multiproperties tree\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties> \r\n </lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object properties\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\"> {{attribGroup.name}}</span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.name}}</div>\r\n </div>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n @if(attrib.value){\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.value}}</div>\r\n }@else {\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">...</div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel> \r\n }\r\n </lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->","import { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { BimplusFlatTreeComponent } from '../../bimplus-flat-tree/bimplus-flat-tree.component';\r\nimport { FlatNode, TreeNode } from '../../bimplus-flat-tree/bimplus-flat-tree.interface';\r\nimport * as WebSdk from 'bimplus-websdk';\r\n\r\ntype TreeNodesLookup = Record<string, TreeNode>;\r\ntype TreeNodeObjectCounts = Record<string, number>;\r\n\r\n@Component({\r\n selector: 'lib-object-filter-result',\r\n standalone: true,\r\n imports: [BimplusFlatTreeComponent],\r\n templateUrl: './object-filter-result.component.html',\r\n styleUrl: './object-filter-result.component.less'\r\n})\r\nexport class ObjectFilterResultComponent implements AfterViewInit {\r\n\r\n // #region public fields\r\n @ViewChild(BimplusFlatTreeComponent) treeComponent: BimplusFlatTreeComponent | null = null;\r\n \r\n @Input()\r\n set filterResult(res : WebSdk.ObjectFilterStructureResponse | null){\r\n this._filterResult = res;\r\n this._updateTreeData();\r\n }\r\n\r\n @Input()\r\n set selectedObjects(selectedObjects: string[]){\r\n this._selectedObjects = selectedObjects;\r\n this._syncSelectedObjects();\r\n }\r\n\r\n get treeData(){\r\n return this._treeData;\r\n }\r\n\r\n @Output() nodeSelectionChanged = new EventEmitter<string[]>();\r\n @Output() nodeDoubleClicked = new EventEmitter<string>();\r\n @Output() nodeMouseEntered = new EventEmitter<string>();\r\n @Output() nodeMouseLeft = new EventEmitter<string>();\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n ngAfterViewInit(): void {\r\n if(this._treeData && this._treeData.length>0){\r\n this._expandToObjectLevel(this._treeData[0]);\r\n }\r\n }\r\n\r\n handleSelectedNodes(nodes : FlatNode[]){\r\n this.nodeSelectionChanged.emit(nodes.map(x=>x.id));\r\n }\r\n\r\n\r\n getNodeObjectCounter(id: string){\r\n return this._treeNodeObjectCounts[id];\r\n }\r\n\r\n dblClickedObjectNode(node: TreeNode){\r\n this.nodeDoubleClicked.emit(node.id);\r\n }\r\n\r\n mouseEnterObjectNode(node: TreeNode){\r\n this.nodeMouseEntered.emit(node.id);\r\n }\r\n\r\n mouseLeaveObjectNode(node: TreeNode){\r\n this.nodeMouseLeft.emit(node.id);\r\n }\r\n\r\n expandToObjectLevel(){\r\n if(this.treeData.length === 0)\r\n return;\r\n \r\n this._expandToObjectLevel(this._treeData[0]);\r\n }\r\n\r\n // #endregion public methods\r\n\r\n // #region private fields\r\n private _filterResult : WebSdk.ObjectFilterStructureResponse | null = null;\r\n private _treeData : TreeNode[] = [];\r\n private _treeNodesLookup : TreeNodesLookup = {};\r\n private _treeNodeObjectCounts: TreeNodeObjectCounts = {};\r\n private _selectedObjects : string[] = [];\r\n // #endregion private fields\r\n\r\n // #region private methods\r\n private _syncSelectedObjects(){\r\n\r\n const nodes : TreeNode[] = []\r\n\r\n for(const id of this._selectedObjects){\r\n const treeNode = this._treeNodesLookup[id];\r\n if(treeNode){\r\n nodes.push(treeNode);\r\n }\r\n }\r\n\r\n this.treeComponent?.reset_selection();\r\n\r\n for(const node of nodes){\r\n this.treeComponent?.select_node(node.id);\r\n }\r\n\r\n }\r\n\r\n\r\n private _updateObjectCounters(){\r\n this._treeNodeObjectCounts = {};\r\n this._countObjects(this.treeData[0]);\r\n }\r\n\r\n private _countObjects(node: TreeNode){\r\n if(node.nodeType && node.nodeType === \"objectNode\")\r\n return 1;\r\n \r\n let count = 0;\r\n if(!node.children)\r\n return 0;\r\n\r\n for(const child of node.children){\r\n if(!child)\r\n continue;\r\n\r\n count += this._countObjects(child);\r\n }\r\n\r\n this._treeNodeObjectCounts[node.id] = count;\r\n return count;\r\n }\r\n\r\n private _updateTreeData(){\r\n if(!this._filterResult){\r\n return;\r\n }\r\n\r\n this._treeNodesLookup = {};\r\n this._treeData = [this._convertFilterResultToTreeNode(this._filterResult.structure, this._treeNodesLookup)];\r\n this._updateObjectCounters();\r\n }\r\n\r\n private _convertFilterResultToTreeNode(node : WebSdk.StructureNode, nodesLookup : TreeNodesLookup | undefined = undefined) : TreeNode{\r\n\r\n const treeNode : TreeNode = {\r\n name: node.name,\r\n id: node.id,\r\n parent: node.parent \r\n };\r\n\r\n if(node.children){\r\n treeNode.children = [];\r\n for(const child of node.children){\r\n const childTreeNode = this._convertFilterResultToTreeNode(child, nodesLookup);\r\n treeNode.children.push(childTreeNode);\r\n }\r\n }\r\n \r\n if(!treeNode.parent){\r\n treeNode.nodeType = \"rootNode\";\r\n }else if(node.type === \"Structure\"){\r\n treeNode.nodeType = \"structureNode\";\r\n }else{\r\n treeNode.nodeType = \"objectNode\"\r\n }\r\n\r\n if(nodesLookup){\r\n nodesLookup[treeNode.id] = treeNode;\r\n }\r\n\r\n return treeNode;\r\n }\r\n\r\n private _expandToObjectLevel(node : TreeNode){\r\n if(node.children){\r\n for(const child of node.children){\r\n if(child.nodeType && child.nodeType === \"objectNode\"){\r\n return;\r\n }else{\r\n this._expandToObjectLevel(child);\r\n }\r\n \r\n }\r\n }\r\n\r\n this.treeComponent?.expand_node(node.id);\r\n }\r\n // #endregion private methods\r\n\r\n}\r\n","<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData\"\r\n enableParentHighlighting=\"false\"\r\n oneLevelMultiSelect=\"false\"\r\n multiSelect=\"true\"\r\n dataTestPrefix=\"object-filter-result-tree-\"\r\n (selectedNodes)=\"handleSelectedNodes($event)\"\r\n [customNodeTemplate]=\"objFilterResultNode\"\r\n>\r\n</lib-bimplus-flat-tree>\r\n\r\n<ng-template #objFilterResultNode let-node='node'>\r\n @switch (node.nodeType) {\r\n @case (\"rootNode\") {\r\n <div class=\"object-navigator-filter-result-root-node noselect\"> {{node.name}} &nbsp;&#40; {{getNodeObjectCounter(node.id)}} &#41;</div>\r\n }\r\n @case (\"structureNode\") {\r\n <div class=\"noselect\"> {{node.name}} &nbsp;&#40; {{getNodeObjectCounter(node.id)}} &#41;</div>\r\n }\r\n @case (\"objectNode\") {\r\n <span class=\"noselect\">\r\n <div class=\"noselect\" (dblclick)=\"dblClickedObjectNode(node)\" (mouseenter)=\"mouseEnterObjectNode(node)\" (mouseleave)=\"mouseLeaveObjectNode(node)\">\r\n {{node.name}}\r\n </div>\r\n </span> \r\n }\r\n }\r\n</ng-template>\r\n","import { FilterCriterium } from \"../components/bimplus-object-navigator/bimplus-object-navigator.interface\";\r\n\r\nconst DivsionIDSubstring = 'tabAttribElement.DivisionID';\r\n\r\nexport class FilterString {\r\n\r\n constructor(filterString: string = \"\", maxFilterCriteria: number = 5){\r\n this._filterString = filterString;\r\n this._maxFilterCriteria = maxFilterCriteria;\r\n }\r\n\r\n get filterString(){\r\n return this._filterString;\r\n }\r\n\r\n private _filterString : string = \"\";\r\n private _maxFilterCriteria : number = 5;\r\n\r\n fromFilterCriteria(criteria : FilterCriterium[]){\r\n this._filterString = `[I]${DivsionIDSubstring}`;\r\n \r\n for(const criterium of criteria){\r\n this._filterString+=criterium.subString;\r\n }\r\n\r\n return this._filterString;\r\n }\r\n\r\n getReadableValuesFromFilterCriteria(criteria : FilterCriterium[]) : Record<string,string>{\r\n const readableValues : Record<string,string> = {};\r\n for(const criterium of criteria){\r\n if(criterium.id && criterium.name)\r\n readableValues[criterium.id] = criterium.name;\r\n }\r\n\r\n return readableValues;\r\n }\r\n\r\n toFilterCriteria(readableValues: Record<string,string> | undefined = undefined): FilterCriterium[]{\r\n const criteria : FilterCriterium[] = [];\r\n\r\n let firstModelIdCriteriaSkipped = false;\r\n\r\n const parts = this._filterString.split('[I]');\r\n for(const part of parts){\r\n if(part.length === 0){\r\n continue;\r\n }\r\n\r\n if(part.includes(DivsionIDSubstring) && !firstModelIdCriteriaSkipped){\r\n firstModelIdCriteriaSkipped = true;\r\n continue;\r\n }\r\n\r\n criteria.push(this._parseFilterSubstring(part, readableValues));\r\n if(criteria.length === this._maxFilterCriteria){\r\n break;\r\n }\r\n }\r\n\r\n return criteria;\r\n }\r\n\r\n private _parseFilterSubstring(subString: string, readableValues: Record<string,string> | undefined = undefined): FilterCriterium{\r\n let name = subString;\r\n let id : string | undefined = undefined;\r\n\r\n const indexOpenBrackets = subString.indexOf('[');\r\n const indexCloseBrackets = subString.indexOf(']');\r\n\r\n if(indexOpenBrackets >= 0 && indexCloseBrackets >=0 && indexCloseBrackets > indexOpenBrackets){\r\n const readableId = subString.slice(indexOpenBrackets+1, indexCloseBrackets);\r\n id = readableId;\r\n if(readableId && readableValues){\r\n const readableString = readableValues[readableId];\r\n if(readableString){\r\n name = readableString;\r\n }\r\n } \r\n }else if(subString.includes('.')){\r\n const splitted = subString.split('.');\r\n name = splitted[splitted.length-1];\r\n }\r\n\r\n return {\r\n name: name,\r\n subString : \"[I]\"+subString,\r\n id : id\r\n }\r\n }\r\n\r\n}\r\n","import * as WebSdk from 'bimplus-websdk';\r\nimport { Observable, concatMap, from, map } from 'rxjs';\r\n\r\nexport class FilterStructureFetcher {\r\n\r\n static fetchObjectFilterStructureFromSelection(projectId: string, filter: WebSdk.ObjectFilter, selectionObject: WebSdk.ExportObject, api: WebSdk.Api): Observable<WebSdk.ObjectFilterStructureResponse> {\r\n const isTemporary = !filter.id;\r\n let filterId = filter.id ? filter.id : \"\";\r\n\r\n let observeable: Observable<WebSdk.ObjectFilterStructureResponse> | null = null;\r\n\r\n if (!isTemporary) {\r\n observeable = from(api.exportService.createExportSelection(projectId, JSON.stringify(selectionObject))).pipe(\r\n concatMap(selectionObj => {\r\n if (!selectionObj?.id) {\r\n throw new Error('Failed to create selection object');\r\n }\r\n return from(api.objectFilters.getSelectionFilteredObjects(selectionObj.id, filterId, undefined, undefined));\r\n })\r\n )\r\n } else {\r\n observeable = from(api.objectFilters.post(JSON.stringify(filter), projectId)).pipe(\r\n concatMap(filterObj => {\r\n if (!filterObj?.id) {\r\n throw new Error('Failed to create temporary filter object');\r\n }\r\n\r\n filterId = filterObj.id;\r\n\r\n return from(api.exportService.createExportSelection(projectId, JSON.stringify(selectionObject)));\r\n }),\r\n concatMap(selectionObj => {\r\n if (!selectionObj?.id) {\r\n throw new Error('Failed to create selection object');\r\n }\r\n return from(api.objectFilters.getSelectionFilteredObjects(selectionObj.id, filterId, undefined, undefined)).pipe(\r\n map((filterResult) => {\r\n api.objectFilters.delete(filterId);\r\n return filterResult;\r\n })\r\n );\r\n })\r\n )\r\n }\r\n return observeable;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport * as WebSdk from 'bimplus-websdk';\r\nimport { BehaviorSubject ,from } from 'rxjs';\r\nimport { CommonModule} from '@angular/common';\r\nimport { FilterCriteriaSelectionMode, FilterCriterium, FilterType, MaxFilterCriteria } from './bimplus-object-navigator.interface';\r\nimport { FilterCriteriumComponent } from './filter-criterium/filter-criterium.component';\r\nimport { ExpansionPanelComponent } from '../expansion-panel/expansion-panel.component';\r\n\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { BimplusSidenavDrawerContentComponent } from '../bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component';\r\nimport { ExpansionPanelHeaderComponent } from '../expansion-panel-header/expansion-panel-header.component';\r\nimport { ExpansionPanelHeaderActionsComponent } from '../expansion-panel-header-actions/expansion-panel-header-actions.component';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { CriteriaSelectObjectPropertiesComponent } from './criteria-select-object-properties/criteria-select-object-properties.component';\r\nimport { ObjectFilterResultComponent } from './object-filter-result/object-filter-result.component';\r\nimport { BimplusContextMenuComponent } from '../bimplus-context-menu/bimplus-context-menu.component'\r\nimport { BimplusContextMenuItem } from '../bimplus-context-menu/bimplus-context-menu.interface';\r\nimport { FilterString } from '../../utils/filterString';\r\nimport { FilterStructureFetcher } from '../../utils/filterStructureFetcher';\r\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component'\r\n\r\n@Component({\r\n selector: 'lib-bimplus-object-navigator',\r\n standalone: true,\r\n imports: [ CommonModule\r\n , FormsModule\r\n , NgSelectModule\r\n , FilterCriteriumComponent\r\n , ExpansionPanelComponent\r\n , ExpansionPanelHeaderComponent\r\n , ExpansionPanelHeaderActionsComponent\r\n , BimplusSidenavDrawerContentComponent\r\n , TranslateModule\r\n , CriteriaSelectObjectPropertiesComponent\r\n , BimplusContextMenuComponent\r\n , ObjectFilterResultComponent\r\n , BimplusScrollableContainerComponent\r\n ],\r\n templateUrl: './bimplus-object-navigator.component.html',\r\n styleUrl: './bimplus-object-navigator.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusObjectNavigatorComponent extends BimplusLocalizedWidgetComponent implements OnInit {\r\n\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n\r\n // #region public fields\r\n\r\n @Input()\r\n hideFilterContextMenu: boolean = false;\r\n\r\n @Input()\r\n filterContextMenu: Array<BimplusContextMenuItem> = [];\r\n\r\n @Input()\r\n set filterTypes(types : Array<FilterType>){\r\n this._filterTypes = types;\r\n if(this._filterTypes.length >0)\r\n this.activeFilterType = this._filterTypes[0];\r\n }\r\n\r\n get filterTypes():Array<FilterType>{\r\n return this._filterTypes;\r\n }\r\n\r\n set activeFilterType(value : FilterType | null){\r\n this.activeFilterTypeSubject$.next(value);\r\n }\r\n\r\n get activeFilterType() : FilterType | null{\r\n return this.activeFilterTypeSubject$.getValue();\r\n }\r\n\r\n activeFilterTypeSubject$ = new BehaviorSubject<FilterType | null> (null);\r\n activeFilterSubject$ = new BehaviorSubject<WebSdk.ObjectFilter | null> (null);\r\n\r\n set activeFilter(filter : WebSdk.ObjectFilter | null){\r\n\r\n if(filter && !filter.id){ // Switching to custom filter will restore the default custom filter\r\n this._setDefaultCustomFilterString(filter);\r\n }\r\n\r\n this.activeFilterSubject$.next(filter);\r\n }\r\n\r\n get activeFilter() : WebSdk.ObjectFilter | null{\r\n return this.activeFilterSubject$.getValue();\r\n }\r\n\r\n @Input()\r\n filters : WebSdk.ObjectFiltersResponse | null = null;\r\n\r\n filterCriteria : FilterCriterium[] = []\r\n\r\n @Input()\r\n api : WebSdk.Api | null = null;\r\n\r\n @Input()\r\n projectId : string = ''\r\n\r\n @HostBinding('class.object-navigator') objNavClassClass: boolean = true;\r\n\r\n filterCriteriaSelectionMode$ = new BehaviorSubject<FilterCriteriaSelectionMode>(FilterCriteriaSelectionMode.None);\r\n\r\n @Output()\r\n filterCriteriaSelectionModeChanged = new EventEmitter<FilterCriteriaSelectionMode>();\r\n\r\n @Input()\r\n selectedObjectId : string | null = null;\r\n\r\n @Input()\r\n selectedObjects : string[] = [];\r\n\r\n @Input()\r\n selectionObject : WebSdk.ExportObject | null = null;\r\n\r\n get filterResult(){\r\n return this._filterResult;\r\n }\r\n\r\n @Output()\r\n filterResultObjectSelectionChanged = new EventEmitter<string[]>();\r\n\r\n @Output()\r\n filterResultObjectDoubleClicked = new EventEmitter<string>();\r\n\r\n @Output()\r\n filterResultObjectMouseEntered = new EventEmitter<string>();\r\n\r\n @Output()\r\n filterResultObjectMouseLeft = new EventEmitter<string>();\r\n\r\n @Output()\r\n pipetteActiveStatus = new EventEmitter<boolean>();\r\n\r\n FilterCriteriaSelectionMode = FilterCriteriaSelectionMode; // Expose enum to template\r\n\r\n isLoadingResults = false;\r\n\r\n // #endregion public fields\r\n\r\n // #region private fields\r\n private _filterResult : WebSdk.ObjectFilterStructureResponse | null = null;\r\n private _filterTypes : Array<FilterType> = [];\r\n // #endregion private fields\r\n\r\n // #region public methods\r\n ngOnInit() {\r\n\r\n this.activeFilterTypeSubject$.subscribe({\r\n next: (v) => {\r\n if(!this.projectId || !this.api || !v){\r\n return;\r\n }\r\n\r\n this.activeFilter = null;\r\n\r\n this.loadCurrentLayerFilters(this.projectId, v.id)?.subscribe({\r\n next: (value) => {\r\n this.filters = [this._createDefaultCustomFilter(v.id), ...value];\r\n this.activeFilter = this.filters[0];\r\n },\r\n error: err => {throw new Error (err)},\r\n }\r\n )}\r\n });\r\n\r\n this.activeFilterSubject$.subscribe({\r\n next: (v) => {\r\n if(!v)\r\n return;\r\n\r\n this.filterCriteria = this.parseFilterString(v);\r\n }\r\n });\r\n\r\n this.filterCriteriaSelectionMode$.subscribe({\r\n next: (v) => { this.filterCriteriaSelectionModeChanged.emit(v)}\r\n })\r\n\r\n if( this.filterTypes.length > 0){\r\n this.activeFilterType = this.filterTypes[0];\r\n }\r\n }\r\n\r\n loadCurrentLayerFilters(projectId : string, layerId : string){\r\n if(!this.api){\r\n return;\r\n }\r\n return from(this.api.objectFilters.get(layerId,projectId));\r\n }\r\n\r\n parseFilterString(filter : WebSdk.ObjectFilter){\r\n const filterString = new FilterString(filter.filterString, MaxFilterCriteria);\r\n return filterString.toFilterCriteria(filter.readableValues);\r\n }\r\n\r\n deleteFilterCriterium(index: number){\r\n this.filterCriteria.splice(index, 1);\r\n this.filterCriteria = [...this.filterCriteria];\r\n this.activateModifiedCustomFilter();\r\n }\r\n\r\n setFilterCriteriaSelectionMode(mode: FilterCriteriaSelectionMode) {\r\n const isSameMode = this.filterCriteriaSelectionMode$.getValue() === mode;\r\n this.filterCriteriaSelectionMode$.next(isSameMode ? FilterCriteriaSelectionMode.None : mode);\r\n this.handlePipetteActiveStatus(!isSameMode);\r\n }\r\n \r\n applyFilter(){\r\n this.filterCriteriaSelectionMode$.next(FilterCriteriaSelectionMode.None);\r\n this._filterResult = null;\r\n\r\n // Custom filter is selected\r\n if(this.activeFilter && !this.activeFilter.id){\r\n this.activeFilter.filterString = new FilterString().fromFilterCriteria(this.filterCriteria);\r\n }\r\n\r\n if(this.selectionObject){\r\n this._applySelectionObjectFilter(this.activeFilter);\r\n }\r\n }\r\n\r\n handleFilterResultSelectionChanged(selection : string[]){\r\n this.filterResultObjectSelectionChanged.emit(selection);\r\n }\r\n\r\n handleFilterResulObjectDoubleClicked(selection : string){\r\n this.filterResultObjectDoubleClicked.emit(selection);\r\n }\r\n\r\n\r\n handleFilterResulObjectMouseEntered(selection : string){\r\n this.filterResultObjectMouseEntered.emit(selection);\r\n }\r\n\r\n handleFilterResulObjectMouseLeft(selection : string){\r\n this.filterResultObjectMouseLeft.emit(selection);\r\n }\r\n\r\n handlePipetteActiveStatus(status: boolean) {\r\n this.pipetteActiveStatus.emit(status);\r\n }\r\n\r\n activateModifiedCustomFilter(){\r\n // When existing filter is changed, Custom filter will be selected and filter settings need to be cloned. Nothing is done when custom filter is already active\r\n if(this.activeFilter?.id && this.filters){\r\n\r\n // Copy filter string from current criteria settings to custom filter\r\n this.filters[0].filterString = new FilterString().fromFilterCriteria(this.filterCriteria);\r\n this.filters[0].readableValues = new FilterString().getReadableValuesFromFilterCriteria(this.filterCriteria);\r\n\r\n this.activeFilterSubject$.next(this.filters[0]);\r\n }\r\n }\r\n // #endregion public methods\r\n\r\n // #region private methods\r\n private _applySelectionObjectFilter(activeFilter : WebSdk.ObjectFilter | null){\r\n\r\n if(!this.api || !this.selectionObject || !activeFilter){\r\n return;\r\n }\r\n\r\n this.selectionObject.singleUse = true;\r\n this.selectionObject.selection.singleuse = true;\r\n\r\n this.isLoadingResults = true;\r\n\r\n FilterStructureFetcher.fetchObjectFilterStructureFromSelection(this.projectId, activeFilter, this.selectionObject, this.api).subscribe({\r\n next: (filterResult) => {\r\n this._filterResult = filterResult;\r\n this.isLoadingResults = false;\r\n }\r\n }\r\n );\r\n }\r\n\r\n private _setDefaultCustomFilterString(filter: WebSdk.ObjectFilter){\r\n const typeAttribId = \"a0e8ae2c-c869-4ec3-9019-25d3704be707\";\r\n filter.filterString = `[I][${typeAttribId}].Value`;\r\n filter.readableValues = {};\r\n filter.readableValues[typeAttribId] = \"Type\"; // Provide readable criterium name for type\r\n }\r\n\r\n private _createDefaultCustomFilter(disciplineID: string) : WebSdk.ObjectFilter{\r\n\r\n const filter = {\r\n module: \"00000000-0000-0000-0000-000000000000\",\r\n category: \"\",\r\n disciplineID: disciplineID,\r\n name: \"Custom filter\",\r\n filterString: \"\",\r\n isDefault: false,\r\n disableSortByModels: false,\r\n }\r\n\r\n this._setDefaultCustomFilterString(filter);\r\n return filter;\r\n }\r\n // #endregion private methods\r\n\r\n}\r\n","<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\r\n [isLoading]=\"isLoadingResults\"\r\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\r\n>\r\n <div class=\"object-navigator-content-container\">\r\n @if(filterTypes.length > 0){\r\n <div class=\"description\">\r\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\r\n </div>\r\n <div class=\"object-navigator-filters-type\">\r\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n <div class=\"object-navigator-filters-name\">\r\n <ng-select data-test=\"object-navigator-filters-name-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\r\n </ng-select>\r\n\r\n @if(!hideFilterContextMenu){\r\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\r\n [items]=\"filterContextMenu\"\r\n *ngIf=\"filterContextMenu?.length\"\r\n >\r\n </lib-bimplus-context-menu>\r\n }\r\n\r\n </div>\r\n\r\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-navigator-filter-criteria-header\">\r\n {{\"_Assign_Objects_Selection_Mode\" | translate}} &#40;{{filterCriteria.length}}&#41;\r\n </span>\r\n <lib-expansion-panel-header-actions>\r\n <div class=\"object-navigator-pick-object-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n (keypress)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n [title]=\"'_Object_Picker'| translate\"\r\n ></div>\r\n <!-- Commented until functionality will be implemented\r\n <div class=\"object-navigator-select-attributes-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectAttributes? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectAttributes)\"\r\n ></div>-->\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <div class=\"filter-criteria-container\">\r\n @for (criterium of filterCriteria; track criterium; let i = $index) {\r\n <app-filter-criterium\r\n [criterium] = \"criterium\"\r\n [indent]=\"i*0.8\"\r\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\r\n ></app-filter-criterium>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n\r\n <div class=\"object-navigator-apply-button-row\">\r\n <button class=\"primary-button\" [ngClass]=\"{'disabled': filterCriteria.length===0}\" [disabled]=\"filterCriteria.length===0\" (click)=\"applyFilter()\"> {{\"_Apply filter\" | translate}} </button>\r\n </div>\r\n\r\n <div class=\"object-navigator-separator\"></div>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(!selectedObjectId){\r\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\r\n }@else{\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-criteria-select-object-properties\r\n [api]=\"api\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [(filterCriteria)]=\"filterCriteria\"\r\n [rootObjectId]=\"selectedObjectId\"\r\n (filterCriteriaChange)=\"activateModifiedCustomFilter()\"\r\n >\r\n </lib-criteria-select-object-properties>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n @case(FilterCriteriaSelectionMode.SelectAttributes){\r\n\r\n }\r\n @default{\r\n @if (filterResult) {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-object-filter-result\r\n [filterResult]=\"filterResult\"\r\n [selectedObjects]=\"selectedObjects\"\r\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\r\n (nodeDoubleClicked)=\"handleFilterResulObjectDoubleClicked($event)\"\r\n (nodeMouseEntered)=\"handleFilterResulObjectMouseEntered($event)\"\r\n (nodeMouseLeft)=\"handleFilterResulObjectMouseLeft($event)\"\r\n ></lib-object-filter-result>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @else {\r\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\r\n }\r\n </div>\r\n</lib-bimplus-sidenav-drawer-content>\r\n","import {\r\n Component\r\n , ViewEncapsulation\r\n , Input\r\n , EventEmitter\r\n , Output\r\n , ElementRef\r\n , OnChanges\r\n , SimpleChanges\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ClickOutsideDirective } from '../../directives/click-outside/click-outside.directive';\r\nimport { TooltipMessageData, TooltipMessagePosition } from './bimplus-tooltip-message.interface'\r\n@Component({\r\n selector: 'lib-bimplus-tooltip-message',\r\n standalone: true,\r\n imports: [CommonModule, ClickOutsideDirective],\r\n templateUrl: './bimplus-tooltip-message.component.html',\r\n styleUrl: './bimplus-tooltip-message.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusTooltipMessageComponent implements OnChanges {\r\n private _element: HTMLElement;\r\n constructor(private el: ElementRef) {\r\n this._element = this.el.nativeElement.shadowRoot;\r\n }\r\n\r\n // Getter for _element\r\n public get element(): HTMLElement {\r\n return this._element;\r\n }\r\n\r\n @Input() messagePosition: TooltipMessagePosition = {\r\n posX: 0,\r\n posY: 0,\r\n };\r\n\r\n @Input() messageData: TooltipMessageData = {};\r\n\r\n @Input() messageVisibility: boolean = false;\r\n @Output() messageVisibilityChange = new EventEmitter<boolean>();\r\n\r\n protected _clickOutside() {\r\n this.messageVisibility = false;\r\n this.messageVisibilityChange.emit(this.messageVisibility)\r\n }\r\n\r\n //<<Calculation of the correct position of the tooltip\r\n private _resizeObserver!: ResizeObserver;\r\n protected _messageParentElement!: ElementRef;\r\n\r\n protected _parentWidth: number = 0;\r\n protected _parentHeight: number = 0;\r\n\r\n get messageParent(): ElementRef {\r\n return this._messageParentElement;\r\n }\r\n\r\n @Input() set messageParent(element: ElementRef) {\r\n this._messageParentElement = element;\r\n if(!this._messageParentElement) {\r\n return;\r\n }\r\n\r\n this._resizeObserver = new ResizeObserver(entries => {\r\n for (const entry of entries) {\r\n const { width, height } = entry.contentRect;\r\n this._parentWidth = width;\r\n this._parentHeight = height; \r\n }\r\n });\r\n\r\n this._resizeObserver.observe(this._messageParentElement.nativeElement);\r\n }\r\n\r\n tooltipRectangleIsOutOfParentRectangleX(tooltipRectangle: DOMRect, parentRectangle: DOMRect): boolean {\r\n return (tooltipRectangle.x + tooltipRectangle.width - parentRectangle.x - parentRectangle.width) > 0;\r\n }\r\n tooltipRectangleIsOutOfParentRectangleY(tooltipRectangle: DOMRect, parentRectangle: DOMRect): boolean {\r\n return (tooltipRectangle.y + tooltipRectangle.height - parentRectangle.y - parentRectangle.height) > 0;\r\n }\r\n\r\n correctTooltipPositionX(oldPosX: number, flippedX: boolean, oldPosY: number, flippedY: boolean): void {\r\n if(!this._messageParentElement) {\r\n return;\r\n }\r\n const _tooltipElement = this._element.querySelector(\".tooltip-message\");\r\n if(!_tooltipElement) {\r\n return;\r\n }\r\n const _tooltipRectangle = _tooltipElement.getBoundingClientRect();\r\n const _parentRectangle = this._messageParentElement.nativeElement.getBoundingClientRect();\r\n if(Math.abs(_tooltipRectangle.x + _tooltipRectangle.width - oldPosX - _parentRectangle.left) > 3) {\r\n this.messagePosition.posX = this.messagePosition.posX + oldPosX - (_tooltipRectangle.x + _tooltipRectangle.width);\r\n setTimeout(() => {\r\n this.correctTooltipPositionX(oldPosX, flippedX, oldPosY, flippedY);\r\n }, 0); \r\n } else if(flippedY && Math.abs(_tooltipRectangle.y + _tooltipRectangle.height - oldPosY - _parentRectangle.top) > 3) {\r\n setTimeout(() => {\r\n this.correctTooltipPositionY(oldPosX, flippedX, oldPosY, flippedY);\r\n }, 0); \r\n } else if(this.tooltipRectangleIsOutOfParentRectangleY(_tooltipRectangle, _parentRectangle)) {\r\n this.messagePosition.posY = this.messagePosition.posY - _tooltipRectangle.height;\r\n setTimeout(() => {\r\n this.correctTooltipPositionY(oldPosX, flippedX, oldPosY, true);\r\n }, 0);\r\n }\r\n }\r\n\r\n correctTooltipPositionY(oldPosX: number, flippedX: boolean, oldPosY: number, flippedY: boolean): void {\r\n if(!this._messageParentElement) {\r\n return;\r\n }\r\n const _tooltipElement = this._element.querySelector(\".tooltip-message\");\r\n if(!_tooltipElement) {\r\n return;\r\n }\r\n const _tooltipRectangle = _tooltipElement.getBoundingClientRect();\r\n const _parentRectangle = this._messageParentElement.nativeElement.getBoundingClientRect();\r\n if(Math.abs(_tooltipRectangle.y + _tooltipRectangle.height - oldPosY - _parentRectangle.top) > 3) {\r\n this.messagePosition.posY = this.messagePosition.posY + oldPosY - (_tooltipRectangle.y + _tooltipRectangle.height);\r\n setTimeout(() => {\r\n this.correctTooltipPositionY(oldPosX, flippedX, oldPosY, flippedY);\r\n }, 0); \r\n } else if(flippedX && Math.abs(_tooltipRectangle.x + _tooltipRectangle.width - oldPosX - _parentRectangle.left) > 3) {\r\n setTimeout(() => {\r\n this.correctTooltipPositionX(oldPosX, flippedX, oldPosY, flippedY);\r\n }, 0); \r\n } else if(this.tooltipRectangleIsOutOfParentRectangleX(_tooltipRectangle, _parentRectangle)) {\r\n this.messagePosition.posX = this.messagePosition.posX - _tooltipRectangle.width;\r\n setTimeout(() => {\r\n this.correctTooltipPositionX(oldPosX, true, oldPosY, flippedY);\r\n }, 0);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['messageVisibility']) {\r\n if(!changes['messageVisibility'].currentValue) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n if(!this._messageParentElement) {\r\n return;\r\n }\r\n const _oldPosX = this.messagePosition.posX;\r\n const _oldPosY = this.messagePosition.posY;\r\n const _tooltipElement = this._element.querySelector(\".tooltip-message\");\r\n if(!_tooltipElement) {\r\n return;\r\n }\r\n const _tooltipRectangle = _tooltipElement.getBoundingClientRect();\r\n const _parentRectangle = this._messageParentElement.nativeElement.getBoundingClientRect();\r\n if(this.tooltipRectangleIsOutOfParentRectangleX(_tooltipRectangle, _parentRectangle)) {\r\n this.messagePosition.posX = this.messagePosition.posX - _tooltipRectangle.width;\r\n setTimeout(() => {\r\n this.correctTooltipPositionX(_oldPosX, true, _oldPosY, false);\r\n }, 0);\r\n } else if(this.tooltipRectangleIsOutOfParentRectangleY(_tooltipRectangle, _parentRectangle)) {\r\n this.messagePosition.posY = this.messagePosition.posY - _tooltipRectangle.height;\r\n setTimeout(() => {\r\n this.correctTooltipPositionY(_oldPosX, false, _oldPosY, true);\r\n }, 0);\r\n }\r\n }, 0);\r\n }\r\n }\r\n //Calculation of the correct position of the tooltip>>\r\n}\r\n","<div *ngIf=\"messageVisibility\"\r\n class=\"tooltip-message\"\r\n libClickOutside\r\n (clickOutside)=\"_clickOutside()\"\r\n [ngStyle]=\"{\r\n 'top.px': messagePosition.posY\r\n , 'left.px': messagePosition.posX\r\n }\"\r\n>\r\n <ng-content select=\".tooltip-message-title-content\"></ng-content>\r\n <div\r\n class=\"tooltip-message-title\"\r\n *ngIf=\"messageData && messageData.title\"\r\n >\r\n {{messageData.title}}\r\n </div>\r\n\r\n <ng-content select=\".tooltip-message-messages-content\"></ng-content>\r\n <div\r\n class=\"tooltip-message-messages\"\r\n *ngIf=\"messageData && messageData.messages\"\r\n >\r\n <ng-container *ngFor=\"let message of messageData.messages\">\r\n <ng-container *ngIf=\"message.separatingLine\">\r\n <div class=\"separating-line\"></div>\r\n </ng-container>\r\n <div class=\"tooltip-message-message\">\r\n <span\r\n *ngIf=\"message.label\"\r\n class=\"label\"\r\n [class.failed]=\"message.type==='failed'\"\r\n [class.success]=\"message.type==='success'\"\r\n >\r\n {{message.label}}\r\n </span>\r\n <span\r\n *ngIf=\"message.value\"\r\n class=\"value\"\r\n >\r\n <ng-container *ngIf=\"message.label\">:</ng-container>\r\n {{message.value}}\r\n </span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <ng-content select=\".tooltip-message-footer-content\"></ng-content>\r\n <div\r\n class=\"tooltip-message-footer\"\r\n *ngIf=\"messageData && messageData.footer\"\r\n >\r\n {{messageData.footer}}\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges} from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-touch-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-touch-menu.component.html',\r\n styleUrl: './bimplus-touch-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusTouchMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList = [\r\n { mode:\"touch\", class: \"icon-touch-mode-toolbar\", textId: \"_Touch_Mode\"},\r\n { mode:\"desktop\", class: \"icon-desktop-mode-toolbar\", textId: \"_Desktop_Mode\"},\r\n ];\r\n\r\n get _selectedItem() {\r\n return this._menuItemsList.find(item => item.mode == this.selectedMode);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() selectedMode : string = 'desktop';\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selected event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusTouchModeSelected = new EventEmitter<string>();\r\n\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue); \r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( mode: string ){\r\n fireEvent(this, \"bimplusTouchModeSelected\", mode);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n</div>\r\n<div \r\n class=\"dropdown\"\r\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <div class=\"dropdown-toggle\">\r\n <div \r\n class=\"main-icon\"\r\n [ngClass]=\"this._selectedItem?.class ? this._selectedItem?.class : ''\"\r\n ></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul \r\n class=\"bimcomp-dropdown-menu\"\r\n [ngClass]=\"{'open':this._menuOpened}\">\r\n <li\r\n *ngFor=\"let item of _menuItemsList\"\r\n class=\"bimcomp-dropdown-menu-item\"\r\n [ngClass]=\"{'selected':this.selectedMode === item.mode}\"\r\n (click)=\"_menuItemClicked(item.mode)\"\r\n (keypress)=\"_menuItemClicked(item.mode)\"\r\n >\r\n <div \r\n class=\"icon\"\r\n [ngClass]=\"item.class\"\r\n ></div>\r\n <span>{{item.textId | translate}}</span>\r\n </li>\r\n </ul>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { LocalizedStrings } from './../types/types'\r\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageStringsService {\r\n\r\n // #region public fields\r\n set languageFilesUri(uri : string){\r\n this._languageFilesUri = uri;\r\n }\r\n private readonly defaultLang: string = 'en';\r\n currentLanguage$ = new BehaviorSubject<string> (this.defaultLang);\r\n currentLanguageStrings$ = new BehaviorSubject<LocalizedStrings>({});\r\n\r\n get currentLanguage() : string {\r\n return this.currentLanguage$.getValue();\r\n }\r\n\r\n set currentLanguageStrings(langStrings : LocalizedStrings){\r\n this.currentLanguageStrings$.next(langStrings);\r\n }\r\n\r\n get currentLanguageStrings() : LocalizedStrings {\r\n return this.currentLanguageStrings$.getValue();\r\n }\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n async setCurrentLanguage(lang : string){\r\n this.currentLanguage$.next(lang);\r\n await this.fetchLanguageStrings(lang); \r\n }\r\n\r\n extractLocalizedStrings(stringIds : Array<string>) : LocalizedStrings {\r\n const obj : LocalizedStrings = {};\r\n for (const [key, value] of Object.entries(this.currentLanguageStrings)) {\r\n if(typeof value == 'string' && stringIds.find(x=>x === key)){\r\n obj[key] = value;\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n async fetchLanguageStrings(lang : string){\r\n const data = await fetch(`${this._languageFilesUri}/strings_${lang}.json`);\r\n const dataJSON = await data.json();\r\n // add missing translations from default language translations\r\n if (lang !== this.defaultLang) {\r\n const fallbackData = await fetch(`${this._languageFilesUri}/strings_en.json`);\r\n const fallbackDataJSON = await fallbackData?.json?.();\r\n const fallbackDataJSONIndexes = fallbackDataJSON && Object.keys(fallbackDataJSON);\r\n if (fallbackDataJSONIndexes?.length) {\r\n for (const index in fallbackDataJSONIndexes) {\r\n const indexName = fallbackDataJSONIndexes[index];\r\n if (!dataJSON[indexName]) {\r\n dataJSON[indexName] = fallbackDataJSON[indexName];\r\n }\r\n }\r\n }\r\n }\r\n this.currentLanguageStrings$.next(dataJSON); \r\n }\r\n // #endregion public methods\r\n\r\n // #region private fields \r\n private _languageFilesUri : string = \"/assets\"\r\n // #endregion private fields\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport enum CursorType {\r\n Pick = 'cursor-pick',\r\n Hide = 'cursor-hide',\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class CursorsService {\r\n\r\n // #region private fields\r\n private _cursorElement: HTMLElement | null = null;\r\n // #endregion private fields\r\n\r\n // #region private methods\r\n private getCursorElement(): HTMLElement | null {\r\n if (this._cursorElement) {\r\n return this._cursorElement;\r\n } else {\r\n return this.getMainViewportContainer();\r\n }\r\n }\r\n private getMainViewportContainer() : HTMLElement | null {\r\n const mainViewportContainer = document.getElementById('mainViewportContainer');\r\n if (!mainViewportContainer) {\r\n console.log(\"mainViewportContainer not found\");\r\n }\r\n return mainViewportContainer;\r\n }\r\n\r\n private addCursor(cursorType: CursorType) {\r\n this.getCursorElement()?.classList.add(cursorType);\r\n }\r\n\r\n private removeCursor(cursorType: CursorType) {\r\n this.getCursorElement()?.classList.remove(cursorType);\r\n }\r\n // #endregion\r\n\r\n\r\n // #region public methods\r\n setCursorElement(cursorElement: HTMLElement | null) {\r\n this._cursorElement = cursorElement;\r\n }\r\n\r\n showPickCursor(show: boolean) {\r\n if (show) {\r\n this.addCursor(CursorType.Pick)\r\n } else {\r\n this.removeCursor(CursorType.Pick);\r\n }\r\n }\r\n\r\n showHideCursor(show: boolean) {\r\n if (show) {\r\n this.addCursor(CursorType.Hide)\r\n } else {\r\n this.removeCursor(CursorType.Hide);\r\n }\r\n }\r\n // #endregion\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libDraggableComponent]',\r\n standalone: true\r\n})\r\nexport class ComponentDraggableDirective {\r\n\r\n private _isDraggingActive = false;\r\n private _isDragging = false;\r\n\r\n startX: number = 0;\r\n startY: number = 0;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n if (!this._isDraggingActive) return;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grab');\r\n this.renderer.setStyle(this.el.nativeElement, 'user-drag', 'none');\r\n }\r\n\r\n @Input() set libDraggableComponent(condition: boolean) {\r\n const element = this.el.nativeElement;\r\n this._isDraggingActive = condition;\r\n if (condition) {\r\n this.renderer.setStyle(element, 'cursor', 'grab');\r\n this.renderer.setStyle(element, 'user-drag', 'none');\r\n } else {\r\n this.renderer.setStyle(element, 'cursor', 'unset');\r\n this.renderer.setStyle(element, 'user-drag', 'auto');\r\n }\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n if (!this._isDraggingActive) return;\r\n this.startX = event.clientX;\r\n this.startY = event.clientY;\r\n this._isDragging = true;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grabbing');\r\n event.preventDefault();\r\n }\r\n\r\n @HostListener('document:mouseup')\r\n onMouseUp() {\r\n if (!this._isDraggingActive) return;\r\n if (this._isDragging) {\r\n this._isDragging = false;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grab');\r\n }\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this._isDraggingActive) return;\r\n\r\n if (this._isDragging) {\r\n const newX = this.startX - event.clientX;\r\n const newY = this.startY - event.clientY;\r\n\r\n this.startX = event.clientX;\r\n this.startY = event.clientY;\r\n\r\n const top = this.el.nativeElement.offsetTop - newY;\r\n const left = this.el.nativeElement.offsetLeft - newX;\r\n\r\n this.renderer.setStyle(this.el.nativeElement, 'position', 'absolute');\r\n this.renderer.setStyle(this.el.nativeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(this.el.nativeElement, 'top', `${top}px`);\r\n }\r\n }\r\n\r\n\r\n /* touch mode */\r\n @HostListener('touchstart', ['$event']) //corresponding to mousedown\r\n onTouchStart(event: TouchEvent) {\r\n if (!this._isDraggingActive) return;\r\n this.startX = event.targetTouches[0].pageX;\r\n this.startY = event.targetTouches[0].pageY;\r\n this._isDragging = true;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grabbing');\r\n }\r\n\r\n @HostListener('document:touchmove', ['$event']) //corresponding to mousemove\r\n onTouchMove(event: TouchEvent) {\r\n if (!this._isDraggingActive) return;\r\n\r\n if (this._isDragging) {\r\n const newX = this.startX - event.targetTouches[0].pageX;\r\n const newY = this.startY - event.targetTouches[0].pageY;\r\n\r\n this.startX = event.targetTouches[0].pageX;\r\n this.startY = event.targetTouches[0].pageY;\r\n\r\n const top = this.el.nativeElement.offsetTop - newY;\r\n const left = this.el.nativeElement.offsetLeft - newX;\r\n\r\n this.renderer.setStyle(this.el.nativeElement, 'position', 'absolute');\r\n this.renderer.setStyle(this.el.nativeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(this.el.nativeElement, 'top', `${top}px`);\r\n }\r\n }\r\n\r\n @HostListener('document:touchend', ['$event']) //corresponding to mouseup\r\n onTouchEnd() {\r\n if (!this._isDraggingActive) return;\r\n if (this._isDragging) {\r\n this._isDragging = false;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grab');\r\n }\r\n }\r\n\r\n}\r\n","import { AfterContentInit, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { IDialogOptions } from './bimplus-general-dialog-config-settings';\r\nimport { ComponentDraggableDirective } from '../../directives/component-draggable/componentsDraggable.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogService } from './bimplus-general-overlay-dialog.service';\r\n\r\n@Component({\r\n selector: 'app-general-overlay-dialog',\r\n standalone: true,\r\n imports: [ComponentDraggableDirective, CommonModule],\r\n templateUrl: './bimplus-general-overlay-dialog.component.html',\r\n styleUrls: ['./bimplus-general-overlay-dialog.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimportalGeneralOverlayDialogComponent implements OnInit, AfterContentInit {\r\n\r\n @ViewChild('dialogRefContainer') genDialogRefContainer!: ElementRef<HTMLDivElement>; //here will be rendered every component we call inside general dialog\r\n @ViewChild('dialogOverlay') dialogOverlay!: ElementRef<HTMLDivElement>;\r\n\r\n options: IDialogOptions | undefined;\r\n units: string = 'rem';\r\n\r\n constructor(private readonly dialogService: DialogService, private readonly cdref: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n this.options = this.dialogService.options;\r\n }\r\n\r\n onClose() {\r\n this.dialogService.close();\r\n }\r\n\r\n ngAfterContentInit() {\r\n if (this.options) {\r\n this.cdref.detectChanges();\r\n this.setOptions();\r\n }\r\n }\r\n\r\n setOptions() {\r\n if (this.options) {\r\n this.setDimensions();\r\n this.setPosition();\r\n this.setOverlay();\r\n }\r\n }\r\n\r\n private setDimensions() {\r\n const width = this.options?.width && this.options.width.length > 0 ? this.options.width : 'auto';\r\n const height = this.options?.height && this.options.height.length > 0 ? this.options.height : 'auto';\r\n this.genDialogRefContainer.nativeElement.style.width = width;\r\n this.genDialogRefContainer.nativeElement.style.height = height;\r\n }\r\n\r\n private setPosition() {\r\n if (this.options?.position === 'middle') {\r\n this.setPositionsMiddle();\r\n } else if (this.options?.position === 'unset') {\r\n this.setPositionsUnset();\r\n }\r\n }\r\n\r\n setPositionsUnset() {\r\n if (this.options) {\r\n this.genDialogRefContainer.nativeElement.style.position = 'fixed';\r\n const top = this.options?.positionOptions?.top ?? '0' + this.units;\r\n const bottom = this.options?.positionOptions?.bottom ?? '0' + this.units;\r\n const left = this.options?.positionOptions?.left ?? '0' + this.units;\r\n const right = this.options?.positionOptions?.right ?? '0' + this.units;\r\n\r\n this.genDialogRefContainer.nativeElement.style.position = 'absolute';\r\n this.genDialogRefContainer.nativeElement.style.top = top;\r\n this.genDialogRefContainer.nativeElement.style.left = left;\r\n this.genDialogRefContainer.nativeElement.style.bottom = bottom;\r\n this.genDialogRefContainer.nativeElement.style.right = right;\r\n\r\n this.options.overlayVisibilityEnabled = this.options.overlayVisibilityEnabled ? this.options.overlayVisibilityEnabled : false;\r\n this.options.overlayClickEnabled = this.options.overlayVisibilityEnabled && this.options.overlayClickEnabled ? this.options.overlayClickEnabled : false;\r\n }\r\n }\r\n\r\n setPositionsMiddle() {\r\n if (this.options) {\r\n this.genDialogRefContainer.nativeElement.className = this.genDialogRefContainer.nativeElement.className + ' middle';\r\n this.options.draggable = false;\r\n this.options.overlayVisibilityEnabled = this.options.overlayVisibilityEnabled ? this.options.overlayVisibilityEnabled : true;\r\n this.options.overlayClickEnabled = this.options.overlayVisibilityEnabled && this.options.overlayClickEnabled ? this.options.overlayClickEnabled : false;\r\n }\r\n }\r\n\r\n private setOverlay() {\r\n if (this.options?.overlayVisibilityEnabled) {\r\n this.dialogOverlay.nativeElement.style.backgroundColor = 'var(--modal-fade-in-background-color)';\r\n }\r\n }\r\n\r\n onKeyPress(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n if (this.options?.overlayClickEnabled) {\r\n this.dialogService.close();\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n","<div class=\"general-dialog-wrapper\" #generalDialogWrapper *ngIf=\"options\">\r\n <section class=\"general-dialog-content\" #dialogRefContainer\r\n [libDraggableComponent]=\"options.draggable ? true : false\">\r\n <ng-content></ng-content>\r\n </section>\r\n <div class=\"general-dialog-overlay\" #dialogOverlay (click)=\"onClose()\" (keypress)=\"onKeyPress($event)\"\r\n [style.display]=\"options.overlayVisibilityEnabled ? 'block' : 'none'\">\r\n </div>\r\n</div>\r\n","import { ApplicationRef, ComponentRef, createComponent, EnvironmentInjector, Injectable, Type } from '@angular/core';\r\nimport { IDialogInputData, IDialogOptions } from './bimplus-general-dialog-config-settings';\r\nimport { Subject } from 'rxjs';\r\nimport { BimportalGeneralOverlayDialogComponent } from './bimplus-general-overlay-dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n generalDialogComponentBody!: ComponentRef<unknown>; //here will be rendered every component we call inside general dialog\r\n generalDialog!: ComponentRef<BimportalGeneralOverlayDialogComponent>; //here will be rendered every component we call inside general dialog\r\n private _isDialogOpen = false;\r\n\r\n inputData: unknown;\r\n private readonly outputData = new Subject<unknown>();\r\n\r\n options: IDialogOptions | undefined;\r\n\r\n constructor(private readonly appRef: ApplicationRef,\r\n private readonly injector: EnvironmentInjector) { }\r\n\r\n open(componentBody: Type<unknown>, data: IDialogInputData) { //todo pass data to second component\r\n if (data?.options) {\r\n this.initializeSettings(data);\r\n this.createComponentsRef(componentBody); //componentBody is component which is added inside to general dialog and rendered\r\n }\r\n }\r\n\r\n initializeSettings(data: IDialogInputData) {\r\n try {\r\n this.inputData = data?.data;\r\n this.options = data.options;\r\n } catch (e) {\r\n console.log('Missing data in open method', e);\r\n }\r\n\r\n }\r\n\r\n createComponentsRef(componentBody: Type<unknown>) {\r\n this.generalDialogComponentBody = createComponent(componentBody, {\r\n environmentInjector: this.injector,\r\n });\r\n\r\n this.generalDialog = createComponent(BimportalGeneralOverlayDialogComponent, {\r\n environmentInjector: this.injector,\r\n projectableNodes: [[this.generalDialogComponentBody.location.nativeElement]],\r\n });\r\n\r\n document.body.appendChild(this.generalDialog.location.nativeElement);\r\n\r\n this.appRef.attachView(this.generalDialogComponentBody.hostView); //first render body of general dialog, it can be any component we create\r\n this.appRef.attachView(this.generalDialog.hostView); //then render body of general dialog, which we can add in any component, can have different content\r\n this._isDialogOpen = true;\r\n }\r\n\r\n close(outputData?: unknown) {\r\n if (outputData) {\r\n this.setOutputData(outputData);\r\n } else {\r\n this.resetSettings();\r\n }\r\n this.generalDialogComponentBody.location.nativeElement.remove();\r\n this.generalDialog.location.nativeElement.remove();\r\n this._isDialogOpen = false;\r\n }\r\n\r\n resetSettings() {\r\n this.inputData = null;\r\n this.options = undefined;\r\n }\r\n\r\n isDialogOpened() {\r\n return this._isDialogOpen;\r\n }\r\n\r\n setOutputData(data: unknown): void {\r\n if (this._isDialogOpen) {\r\n this.outputData.next(data);\r\n }\r\n }\r\n\r\n getOutputData(): Subject<unknown> {\r\n return this.outputData;\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DialogService } from '../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service';\r\n\r\nexport interface WarningDialogInputData {\r\n title: string;\r\n message: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-overlay-dialog-warning',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './bimplus-overlay-dialog-warning.component.html',\r\n styleUrls: ['./bimplus-overlay-dialog-warning.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusOverlayDialogWarningComponent {\r\n\r\n private _title: string = '';\r\n private _message: string = '';\r\n private readonly _data: WarningDialogInputData | undefined;\r\n\r\n @Input()\r\n get title(): string {\r\n return this._title;\r\n }\r\n set title(value: string) {\r\n this._title = value;\r\n }\r\n\r\n @Input()\r\n get message(): string {\r\n return this._message;\r\n }\r\n set message(value: string) {\r\n this._message = value;\r\n }\r\n\r\n constructor(private readonly dialogService: DialogService) {\r\n this._data = this.dialogService.inputData as WarningDialogInputData;\r\n this._title = this._data?.title || '';\r\n this._message = this._data?.message || '';\r\n }\r\n\r\n close() {\r\n this.dialogService.close();\r\n }\r\n\r\n keypressClose(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.dialogService.close();\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"overlay-dialog-container\">\r\n <div class=\"overlay-dialog-container_title\">\r\n <div class=\"overlay-dialog-container_title_icon\">\r\n </div>\r\n <div class=\"overlay-dialog-container_title_msg\">\r\n {{title}}\r\n </div>\r\n <div class=\"overlay-dialog-container_title_close\" (click)=\"close()\" (keypress)=\"keypressClose($event)\">\r\n </div>\r\n </div>\r\n <div class=\"overlay-dialog-container_content\">\r\n <div class=\"overlay-dialog-container_content_msg\">\r\n {{this.message}}\r\n </div>\r\n <button class=\"overlay-dialog-container_content_btn\" (click)=\"close()\">{{\"_Ok\" | translate}}</button>\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation, Input } from '@angular/core';\r\nimport { XDraggableDirective } from '../../directives/x-draggable.directive'\r\nimport { PxsuffixPipe } from '../../pipes/pxsuffix.pipe';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-resizable-panel',\r\n standalone: true,\r\n imports: [CommonModule, XDraggableDirective, PxsuffixPipe],\r\n templateUrl: './resizable-panel.component.html',\r\n styleUrl: './resizable-panel.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ResizablePanelComponent {\r\n @Input() position : \"left\" | \"right\" = \"right\";\r\n @Input() hasDraggableHandle : boolean = false;\r\n @Input() hasDraggableBorder : boolean = false;\r\n\r\n drawerWidth : number = 300;\r\n drawerExpanded : boolean = true;\r\n\r\n\r\n _toggleDrawer(){\r\n this.drawerExpanded = !this.drawerExpanded;\r\n }\r\n \r\n _onResizeWidth(event : number): void {\r\n const deltaX = event;\r\n if(this.position === \"left\"){\r\n this.drawerWidth += deltaX;\r\n }\r\n else if(this.position === \"right\"){\r\n this.drawerWidth -= deltaX;\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"resizable-panel-drawer\"\r\n [style.width] = \"drawerWidth | pxsuffix\"\r\n [ngClass]=\"drawerExpanded ? '' : 'hidden'\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n>\r\n <slot></slot>\r\n @if (drawerExpanded) {\r\n @if (hasDraggableBorder) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-border\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n @if (hasDraggableHandle) {\r\n <div\r\n xDraggable\r\n class=\"resizable-panel-resize-handle\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n (clicked)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n }\r\n</div>\r\n@if (!drawerExpanded) {\r\n @if (hasDraggableHandle) {\r\n <div\r\n class=\"resizable-panel-resize-handle collapsed\"\r\n (click)=\"_toggleDrawer()\"\r\n (keypress)=\"_toggleDrawer()\"\r\n [class.position-right]=\"position === 'right'\"\r\n [class.position-left]=\"position === 'left'\"\r\n >\r\n </div>\r\n }\r\n}\r\n","import {\r\n Component\r\n , Input\r\n , Output\r\n , EventEmitter\r\n , ViewEncapsulation\r\n} from '@angular/core';\r\nimport { SelectedObject } from './object-properties-header.interface';\r\nimport { CommonModule} from '@angular/common';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {\r\n TranslateModule\r\n , TranslateService\r\n} from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\n\r\n@Component({\r\n selector: 'lib-object-properties-header',\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n , FormsModule\r\n , NgSelectModule\r\n , TranslateModule\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './object-properties-header.component.html',\r\n styleUrl: './object-properties-header.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class ObjectPropertiesHeaderComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n\r\n @Output() closePropertiesPanel = new EventEmitter();\r\n\r\n @Input() selectedObjects: Array<SelectedObject> = [];\r\n\r\n _activeObject: SelectedObject | null = null;\r\n\r\n set activeObject(value: SelectedObject | null) {\r\n this._activeObject = value;\r\n }\r\n\r\n get activeObject(): SelectedObject | null {\r\n return this._activeObject;\r\n }\r\n\r\n _closePropertiesPanel(event: Event) {\r\n fireEvent(this, \"closePropertiesPanel\", event);\r\n event.stopPropagation();\r\n }\r\n}\r\n","<div class=\"object-properties-header\">\r\n <div class=\"object-properties-header-object\">\r\n <div class=\"object-properties-header-object-select\">\r\n <ng-select class=\"object-properties-header-object-select-dropdown\" [(ngModel)]=\"activeObject\" [clearable]=\"false\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let object of selectedObjects\" [value]=\"object\">{{object.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n </div>\r\n <div\r\n class=\"object-properties-header-link-icon\"\r\n title=\"{{'_Create link' | translate}}\"\r\n >\r\n </div>\r\n <div\r\n class=\"object-properties-header-close-icon\"\r\n (click)=\"_closePropertiesPanel($event)\"\r\n (keydown)=\"_closePropertiesPanel($event)\"\r\n title=\"{{'_Close_properties_panel_title' | translate}}\"\r\n >\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DialogService } from '../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service';\r\n\r\nexport interface ErrorDialogInputData {\r\n title: string;\r\n message: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-overlay-dialog-error',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './bimplus-overlay-dialog-error.component.html',\r\n styleUrls: ['./bimplus-overlay-dialog-error.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusOverlayDialogErrorComponent {\r\n\r\n private _title: string = '';\r\n private _message: string = '';\r\n private readonly _data: ErrorDialogInputData | undefined;\r\n\r\n @Input()\r\n get title(): string {\r\n return this._title;\r\n }\r\n set title(value: string) {\r\n this._title = value;\r\n }\r\n\r\n @Input()\r\n get message(): string {\r\n return this._message;\r\n }\r\n set message(value: string) {\r\n this._message = value;\r\n }\r\n\r\n constructor(private readonly dialogService: DialogService) {\r\n this._data = this.dialogService.inputData as ErrorDialogInputData;\r\n this._title = this._data?.title || '';\r\n this._message = this._data?.message || '';\r\n }\r\n\r\n close() {\r\n this.dialogService.close();\r\n }\r\n\r\n keypressClose(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.dialogService.close();\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"overlay-dialog-container\">\r\n <div class=\"overlay-dialog-container_title\">\r\n <div class=\"overlay-dialog-container_title_icon\">\r\n </div>\r\n <div class=\"overlay-dialog-container_title_msg\">\r\n {{title}}\r\n </div>\r\n <div class=\"overlay-dialog-container_title_close\" (click)=\"close()\" (keypress)=\"keypressClose($event)\">\r\n </div>\r\n </div>\r\n <div class=\"overlay-dialog-container_content\">\r\n <div class=\"overlay-dialog-container_content_msg\">\r\n {{this.message}}\r\n </div>\r\n <button class=\"overlay-dialog-container_content_btn\" (click)=\"close()\">{{\"_Ok\" | translate}}</button>\r\n </div>\r\n</div>\r\n","/*\r\n * Public API Surface of ngx-bimplus-components\r\n */\r\n\r\nexport * from './lib/ngx-bimplus-components.service';\r\nexport * from './lib/ngx-bimplus-components.component';\r\nexport * from './lib/interfaces/bimplus-opacity-properties.interface';\r\nexport * from './lib/interfaces/bimplus-visibility-properties.interface';\r\nexport * from './lib/components/bimplus-connection-designer/bimplus-connection-designer.component';\r\nexport * from './lib/components/bimplus-connection-designer/bimplus-connection-designer.interface';\r\nexport * from './lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component';\r\nexport * from './lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.interface';\r\nexport * from './lib/components/bimplus-contact/bimplus-contact.component';\r\nexport * from './lib/components/bimplus-floating-bar/bimplus-floating-bar.interface';\r\nexport * from './lib/components/project-models/project-models.interface';\r\nexport * from './lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component';\r\nexport * from './lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component';\r\nexport * from './lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component';\r\nexport * from './lib/components/bimplus-language-menu/bimplus-language-menu.component';\r\nexport * from './lib/components/bimplus-localized-widget/bimplus-localized-widget.component';\r\nexport * from './lib/components/bimplus-main-menu/bimplus-main-menu.component';\r\nexport * from './lib/components/bimplus-navbar/bimplus-navbar.component';\r\nexport * from './lib/components/bimplus-navbar/logo-state.enum';\r\nexport * from './lib/components/bimplus-notify/bimplus-notify.component';\r\nexport * from './lib/components/bimplus-sidenav/bimplus-sidenav.component';\r\nexport * from './lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component';\r\nexport * from './lib/components/bimplus-storage-info/bimplus-storage-info.component';\r\nexport * from './lib/components/bimplus-tool-hub/bimplus-tool-hub.component';\r\nexport * from './lib/components/bimplus-tool-hub/bimplus-tool-hub.interface';\r\nexport * from './lib/components/bimplus-user-menu/bimplus-user-menu.component';\r\nexport * from './lib/components/bimplus-zoom/bimplus-zoom.component';\r\nexport * from './lib/components/bimplus-flat-tree/bimplus-flat-tree.component';\r\nexport * from './lib/components/bimplus-flat-tree/bimplus-flat-tree.interface';\r\nexport * from './lib/components/bimplus-context-menu/bimplus-context-menu.component';\r\nexport * from './lib/components/bimplus-context-menu/bimplus-context-menu.interface';\r\nexport * from './lib/components/loading-spinner/loading-spinner.component';\r\nexport * from './lib/components/bimplus-object-navigator/bimplus-object-navigator.component';\r\nexport * from './lib/components/bimplus-object-navigator/bimplus-object-navigator.interface';\r\nexport * from './lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component';\r\nexport * from './lib/components/bimplus-tooltip-message/bimplus-tooltip-message.interface';\r\nexport * from './lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component';\r\nexport * from './lib/components/bimplus-touch-menu/bimplus-touch-menu.component';\r\nexport * from './lib/components/bimplus-project-menu/bimplus-project-menu.component';\r\nexport * from './lib/services/language-strings.service';\r\nexport * from './lib/services/resize-observer.service';\r\nexport * from './lib/services/cursors.service';\r\nexport * from './lib/types/types';\r\nexport * from './lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component';\r\nexport * from './lib/components/resizable-panel/resizable-panel.component';\r\nexport * from './lib/components/object-properties-header/object-properties-header.component';\r\nexport * from './lib/components/object-properties-header/object-properties-header.interface';\r\nexport * from './lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component';\r\nexport * from './lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component';\r\nexport * from './lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.BimplusConnectionDesignerService","i3","i5","i1.ResizeObserverService","i2.LocalStorageService","i1.LayoutManagerService","i2.LayoutManagerService","i2.ResizeObserverService","i3.ResizeObserverService","DEFAULT_POSITION_LEFT","DEFAULT_POSITION_TOP","i2","i4","BehaviorSubject","i1.DialogService"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-bimplus-components.mjs","sources":["../../../projects/ngx-bimplus-components/src/lib/ngx-bimplus-components.service.ts","../../../projects/ngx-bimplus-components/src/lib/ngx-bimplus-components.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-localized-widget/bimplus-localized-widget.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/loading-spinner/loading-spinner.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/loading-spinner/loading-spinner.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.html","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel/expansion-panel.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel/expansion-panel.component.html","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel-header/expansion-panel-header.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel-header/expansion-panel-header.component.html","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel-header-actions/expansion-panel-header-actions.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/expansion-panel-header-actions/expansion-panel-header-actions.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-text-message/bimplus-text-message.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-text-message/bimplus-text-message.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer/bimplus-connection-designer.service.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.html","../../../projects/ngx-bimplus-components/src/lib/utils/utils.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-contact/bimplus-contact.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-contact/bimplus-contact.component.html","../../../projects/ngx-bimplus-components/src/lib/directives/draggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/services/resize-observer.service.ts","../../../projects/ngx-bimplus-components/src/lib/services/local-storage.service.ts","../../../projects/ngx-bimplus-components/src/lib/services/layout-manager.service.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.html","../../../projects/ngx-bimplus-components/src/lib/directives/resizable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-body/bimplus-floating-bar-body.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-body/bimplus-floating-bar-body.component.html","../../../projects/ngx-bimplus-components/src/lib/components/project-models/project-models.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/project-models/project-models.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-panel-toolbar/bimplus-panel-toolbar.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-panel-toolbar/bimplus-panel-toolbar.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-language-menu/bimplus-language-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-project-menu/bimplus-project-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-main-menu/bimplus-main-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/logo-state.enum.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/bimplus-navbar.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-navbar/bimplus-navbar.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-notify/bimplus-notify.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-notify/bimplus-notify.component.html","../../../projects/ngx-bimplus-components/src/lib/pipes/pxsuffix.pipe.ts","../../../projects/ngx-bimplus-components/src/lib/directives/x-draggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav/bimplus-sidenav.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-sidenav/bimplus-sidenav.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-storage-info/bimplus-storage-info.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/svgGenerator.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-user-menu/bimplus-user-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-zoom/bimplus-zoom.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-zoom/bimplus-zoom.component.html","../../../projects/ngx-bimplus-components/src/lib/directives/click-outside/click-outside.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-context-menu/bimplus-context-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-context-menu/bimplus-context-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/bimplus-object-navigator.interface.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/filter-criterium/filter-criterium.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/filter-criterium/filter-criterium.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-structure/bimplus-object-structure.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-structure/bimplus-object-structure.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-structure/bimplus-object-structure.interface.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-complex-properties/bimplus-object-complex-properties.interface.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.html","../../../projects/ngx-bimplus-components/src/lib/utils/filterString.ts","../../../projects/ngx-bimplus-components/src/lib/utils/filterStructureFetcher.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.html","../../../projects/ngx-bimplus-components/src/lib/services/language-strings.service.ts","../../../projects/ngx-bimplus-components/src/lib/services/cursors.service.ts","../../../projects/ngx-bimplus-components/src/lib/directives/component-draggable/componentsDraggable.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component.html","../../../projects/ngx-bimplus-components/src/lib/components/resizable-panel/resizable-panel.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/resizable-panel/resizable-panel.component.html","../../../projects/ngx-bimplus-components/src/lib/components/object-properties-header/object-properties-header.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/object-properties-header/object-properties-header.component.html","../../../projects/ngx-bimplus-components/src/lib/pipes/round.pipe.ts","../../../projects/ngx-bimplus-components/src/lib/pipes/get-attribute-value.pipe.ts","../../../projects/ngx-bimplus-components/src/lib/utils/objectProperties.ts","../../../projects/ngx-bimplus-components/src/lib/components/object-properties-group/object-property-value/object-property-value.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/object-properties-group/object-property-value/object-property-value.component.html","../../../projects/ngx-bimplus-components/src/lib/components/object-properties-group/object-properties-group.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/object-properties-group/object-properties-group.component.html","../../../projects/ngx-bimplus-components/src/lib/components/object-properties/object-properties.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/object-properties/object-properties.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component.html","../../../projects/ngx-bimplus-components/src/lib/components/links-to-documents/links-to-documents.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/links-to-documents/links-to-documents.component.html","../../../projects/ngx-bimplus-components/src/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/object-hyperlinks-item/object-hyperlinks-item.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-input-text-field/bimplus-input-text-field.component.html","../../../projects/ngx-bimplus-components/src/lib/components/object-hyperlinks/object-hyperlinks.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/object-hyperlinks/object-hyperlinks.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-attachments/bimplus-attachments.interface.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-attachments/services/bimplus-attachments.service.ts","../../../projects/ngx-bimplus-components/src/lib/pipes/bit-converter.pipe.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-attachments/components/bimplus-attachment-item/bimplus-attachment-item.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-attachments/bimplus-attachments.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-attachments/bimplus-attachments.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-textarea/autoResizeTextarea.directive.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-textarea/bimplus-textarea.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-textarea/bimplus-textarea.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-comment/bimplus-comment.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-comment/bimplus-comment.component.html","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.ts","../../../projects/ngx-bimplus-components/src/lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component.html","../../../projects/ngx-bimplus-components/src/public-api.ts","../../../projects/ngx-bimplus-components/src/ngx-bimplus-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxBimplusComponentsService {\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-ngx-bimplus-components',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <p>\r\n ngx-bimplus-components works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class NgxBimplusComponentsComponent {\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, signal, WritableSignal } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { LocalizedStrings } from './../../types/types'\r\n\r\n@Component({\r\n selector: 'lib-bimplus-localized-widget',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n template: `\r\n <p>\r\n localized widget works!\r\n </p>\r\n `,\r\n styles: [\r\n ],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLocalizedWidgetComponent {\r\n constructor(public translateService: TranslateService) {\r\n }\r\n\r\n _selectedLanguage: WritableSignal<string> = signal('en');\r\n get selectedLanguage(): string {\r\n return this._selectedLanguage();\r\n }\r\n @Input() set selectedLanguage(value: string) {\r\n this._selectedLanguage.set(value);\r\n this.translateService.use(value);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, this._localizedStrings());\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n _localizedStrings: WritableSignal<LocalizedStrings> = signal({} as LocalizedStrings);\r\n get localizedStrings(): LocalizedStrings {\r\n return this._localizedStrings();\r\n }\r\n @Input() set localizedStrings(value: LocalizedStrings) {\r\n this._localizedStrings.set(value);\r\n this.translateService.use(this.selectedLanguage);\r\n try {\r\n this.translateService.setTranslation(this.selectedLanguage, value);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n","import { Component, Input, booleanAttribute, computed, signal } from '@angular/core';\r\n\r\ntype SpinnerTexts = string[] | null | undefined;\r\ntype SpinnerText = string | null | undefined;\r\n\r\n@Component({\r\n selector: 'lib-loading-spinner',\r\n standalone: true,\r\n templateUrl: './loading-spinner.component.html',\r\n styleUrl: './loading-spinner.component.less'\r\n})\r\nexport class LoadingSpinnerComponent {\r\n @Input({ transform: booleanAttribute }) spinnerSpinActive: boolean = false;\r\n @Input({ transform: booleanAttribute }) spinnerHoverEnabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) spinnerDisabled: boolean = false;\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'spinnerText' }) set spinnerTextValue(value: SpinnerText) {\r\n this.spinnerText.set(value);\r\n }\r\n protected readonly spinnerText = signal<SpinnerText>(undefined);\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'spinnerTexts' }) set spinnerTextsValue(value: SpinnerTexts) {\r\n this.spinnerTexts.set(value);\r\n }\r\n protected readonly spinnerTexts = signal<SpinnerTexts>(undefined);\r\n\r\n protected readonly isSpinnerTextsArray = computed(() => {\r\n const spinnerTexts = this.spinnerTexts();\r\n return !!(spinnerTexts && typeof spinnerTexts === 'object' && Array.isArray(spinnerTexts) && Boolean(spinnerTexts.length))\r\n });\r\n}\r\n","<div class=\"loading-spinner\">\r\n <div class=\"spinner-conatiner\">\r\n <div\r\n class=\"spinner-icon\"\r\n [class.spinner-spin-active]=\"spinnerSpinActive\"\r\n [class.spinner-disabled]=\"spinnerDisabled\"\r\n [class.hover-enabled]=\"spinnerHoverEnabled && !spinnerDisabled\"\r\n ></div>\r\n @if (spinnerText(); as spinnerText) {\r\n <div class=\"spinner-text\" data-test=\"spinner-text\">\r\n {{ spinnerText }}\r\n </div>\r\n }\r\n @if (isSpinnerTextsArray()) {\r\n <div class=\"spinner-texts\" data-test=\"spinner-texts\">\r\n @for (_spinnerText of spinnerTexts(); track _spinnerText) {\r\n <div class=\"spinner-text\">\r\n {{ _spinnerText }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>","import { Component, Input, signal, ViewEncapsulation } from '@angular/core';\r\nimport { LoadingSpinnerComponent } from '../loading-spinner/loading-spinner.component';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-sidenav-drawer-content',\r\n standalone: true,\r\n imports: [\r\n LoadingSpinnerComponent\r\n ],\r\n templateUrl: './bimplus-sidenav-drawer-content.component.html',\r\n styleUrl: './bimplus-sidenav-drawer-content.component.less',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class BimplusSidenavDrawerContentComponent {\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'header' }) set headerValue(value: string) {\r\n this.header.set(value);\r\n }\r\n protected readonly header = signal<string>('');\r\n\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'isLoading' }) set isLoadingValue(value: boolean) {\r\n this.isLoading.set(value);\r\n }\r\n protected readonly isLoading = signal<boolean>(false);\r\n\r\n @Input() loadingSpinnerText: string = \"\"\r\n}\r\n","<div class=\"sidenav-drawer-content-layout\">\r\n @if (header(); as header) { \r\n <div class = \"sidenav-drawer-header\">\r\n <div class = \"sidenav-drawer-header-title\">\r\n <span>{{header}}</span>\r\n </div>\r\n </div>\r\n }\r\n \r\n <div class=\"sidenav-drawer-content-offset\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if(isLoading()){\r\n <div class=\"sidenav-drawer-loading-overlay\">\r\n <lib-loading-spinner\r\n [spinnerHoverEnabled]=\"false\"\r\n [spinnerSpinActive]=\"true\"\r\n [spinnerDisabled]=\"false\"\r\n [spinnerText]=\"loadingSpinnerText\"\r\n >\r\n </lib-loading-spinner>\r\n </div>\r\n }\r\n</div>\r\n","export interface BimplusButtonRowItem {\r\n id: string;\r\n iconClass?: string;\r\n icon?: string;\r\n title?: string;\r\n tooltip?: string;\r\n disabled?: boolean;\r\n buttonStyle?: 'primary' | 'secondary';\r\n buttonType?: 'text' | 'icon' | 'combined';\r\n type?: typeof BimplusButtonType['FILE' | 'TEXT'];\r\n}\r\n\r\nexport interface BimplusButtonClickEvent {\r\n id: string;\r\n}\r\n\r\nexport const BimplusButtonType = {\r\n FILE: 'file',\r\n TEXT: 'text'\r\n} as const;","import { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport {\r\n BimplusButtonRowItem,\r\n BimplusButtonClickEvent,\r\n BimplusButtonType,\r\n} from './bimplus-buttons-row.interface';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, ViewEncapsulation, EventEmitter, Output, Input, signal } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-buttons-row',\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './bimplus-buttons-row.component.html',\r\n styleUrl: './bimplus-buttons-row.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class BimplusButtonsRowComponent extends BimplusLocalizedWidgetComponent {\r\n protected readonly BimplusButtonType = BimplusButtonType;\r\n\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'items' }) set itemsValue(value: Array<BimplusButtonRowItem>) {\r\n this.items.set(value);\r\n }\r\n protected readonly items = signal<BimplusButtonRowItem[]>([]);\r\n\r\n @Output() fileChanged = new EventEmitter<File>();\r\n @Output() buttonClicked = new EventEmitter<BimplusButtonClickEvent>();\r\n\r\n protected onChange(event: Event, inputElement: HTMLInputElement) {\r\n const file = (event.target as unknown as { files: File[] }).files[0];\r\n\r\n if (file) {\r\n this.fileChanged.emit(file);\r\n // reset value to be able select same value again\r\n inputElement.value = '';\r\n }\r\n }\r\n \r\n protected _buttonClicked(item: BimplusButtonRowItem) {\r\n if (item.disabled) {\r\n return;\r\n }\r\n this.buttonClicked.emit({ id: item.id });\r\n }\r\n}\r\n","<div class=\"button-row\">\r\n @for(item of items(); track item.id; let last=$last; let first=$first;) {\r\n @switch(item.type) { @case (BimplusButtonType.FILE) {\r\n <ng-container\r\n *ngTemplateOutlet=\"fileButton; context: { $implicit: item, last, first }\"\r\n ></ng-container>\r\n } @default {\r\n <ng-container\r\n *ngTemplateOutlet=\"button; context: { $implicit: item, last, first }\"\r\n ></ng-container>\r\n } } }\r\n</div>\r\n\r\n<ng-template #fileButton let-item let-last=\"last\" let-first=\"first\">\r\n <input\r\n #fileInput\r\n hidden\r\n type=\"file\"\r\n (change)=\"onChange($event, fileInput)\"\r\n [id]=\"item.id\"\r\n />\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n button;\r\n context: { $implicit: item, last, first, fileInput }\r\n \"\r\n ></ng-container>\r\n</ng-template>\r\n\r\n<ng-template\r\n #button\r\n let-item\r\n let-last=\"last\"\r\n let-first=\"first\"\r\n let-fileInput=\"fileInput\"\r\n>\r\n <button\r\n [class.last]=\"last\"\r\n [class.first]=\"first\"\r\n [class.primary-button]=\"\r\n item.buttonStyle === undefined || item.buttonStyle === 'primary'\r\n \"\r\n [class.secondary-button]=\"item.buttonStyle === 'secondary'\"\r\n [class.text-button]=\"\r\n item.buttonType === undefined || item.buttonType === 'text'\r\n \"\r\n [class.icon-button]=\"item.buttonType === 'icon'\"\r\n [class.combined-button]=\"item.buttonType === 'combined'\"\r\n [class.disabled]=\"item.disabled === true\"\r\n (click)=\"fileInput ? fileInput.click() : _buttonClicked(item)\"\r\n title=\"{{ item.tooltip }}\"\r\n [attr.disabled]=\"item.disabled === true ? true : null\"\r\n >\r\n {{ item.title }}\r\n </button>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, signal } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-expansion-panel',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './expansion-panel.component.html',\r\n styleUrl: './expansion-panel.component.less'\r\n})\r\nexport class ExpansionPanelComponent {\r\n // #region public fields\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'expanded' }) set expandedValue(value: boolean) {\r\n this.expanded.set(value);\r\n }\r\n protected readonly expanded = signal<boolean>(true);\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n toggleExpand(){\r\n this.expanded.update(value => !value);\r\n }\r\n // #endregion public methods\r\n}\r\n","<div class=\"expansion-panel\">\r\n <div class=\"expansion-panel-header-row\">\r\n <div \r\n class=\"expansion-panel-expander-icon\" \r\n data-test=\"expansion-panel\"\r\n [ngClass]=\"expanded() ? 'open' : 'closed'\" \r\n (click)=\"toggleExpand()\"\r\n (keypress)=\"toggleExpand()\"\r\n ></div>\r\n <div class=\"expansion-panel-header-content\">\r\n <ng-content select=\"lib-expansion-panel-header\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"expansion-panel-content-container\" [ngClass]=\"expanded() ? '' : 'collapsed'\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n","import { Component, HostBinding, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-expansion-panel-header',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './expansion-panel-header.component.html',\r\n styleUrl: './expansion-panel-header.component.less',\r\n encapsulation : ViewEncapsulation.None\r\n})\r\nexport class ExpansionPanelHeaderComponent {\r\n @HostBinding('class.expansion-panel-header-container') centerMenuButtonClass: boolean = true;\r\n}\r\n"," <div class=\"expansion-panel-header-title\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div>\r\n <ng-content select=\"lib-expansion-panel-header-actions\"></ng-content>\r\n </div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-expansion-panel-header-actions',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './expansion-panel-header-actions.component.html',\r\n styleUrl: './expansion-panel-header-actions.component.less'\r\n})\r\nexport class ExpansionPanelHeaderActionsComponent {\r\n\r\n}\r\n","<ng-content></ng-content>\r\n","import { Component, Input, signal } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-text-message',\r\n standalone: true,\r\n templateUrl: './bimplus-text-message.component.html',\r\n styleUrl: './bimplus-text-message.component.less'\r\n})\r\nexport class BimplusTextMessageComponent {\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'message' }) set messageValue(value: string) {\r\n this.message.set(value);\r\n }\r\n protected readonly message = signal<string | undefined>(undefined);\r\n\r\n}\r\n","@if(message(); as message) {\r\n <div class=\"message\">\r\n {{ message }}\r\n </div>\r\n}","import {\r\n Component\r\n , ViewEncapsulation\r\n , ElementRef\r\n , AfterViewInit\r\n , AfterViewChecked\r\n} from '@angular/core';\r\n\r\nimport SimpleBar from 'simplebar';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-scrollable-container',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './bimplus-scrollable-container.component.html',\r\n styleUrl: './bimplus-scrollable-container.component.less',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class BimplusScrollableContainerComponent implements AfterViewInit, AfterViewChecked {\r\n _simpleBar!: SimpleBar;\r\n _element: HTMLElement;\r\n protected _scrollableContainerClassName: string = '.scrollable-container';\r\n\r\n constructor(private readonly elementRef: ElementRef){\r\n this._element = this.elementRef.nativeElement;\r\n }\r\n\r\n private _initializationSimpleScrollBar(): void {\r\n // init simple bar scrollbar\r\n const scrollableContainer: HTMLElement | null = this._element?.querySelector(this._scrollableContainerClassName);\r\n if (!scrollableContainer) {\r\n return;\r\n }\r\n this._simpleBar = new SimpleBar(scrollableContainer);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._initializationSimpleScrollBar();\r\n }\r\n\r\n private _recalculateScrollbar(): void {\r\n if(!this._element) {\r\n return;\r\n }\r\n const _element = this._element;\r\n const barElem = _element?.querySelector(this._scrollableContainerClassName);\r\n if (!barElem){\r\n return;\r\n }\r\n\r\n if (!this._simpleBar) {\r\n return;\r\n }\r\n\r\n this._simpleBar.recalculate();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this._recalculateScrollbar();\r\n }\r\n}\r\n","<div class=\"scrollable-container\">\n <ng-content></ng-content>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\n\nexport class BimplusConnectionDesignerService {\n private _activeStep: number = 0;\n\n activeStepChange$: Subject<number> = new Subject<number>();\n\n set activeStep(activeStep: number) {\n this._activeStep = activeStep;\n this.activeStepChange$.next(this._activeStep);\n }\n\n get activeStep(): number {\n return this._activeStep;\n }\n\n constructor() { }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\nimport { BimplusLocalizedWidgetComponent } from \"../bimplus-localized-widget/bimplus-localized-widget.component\";\nimport { BimplusButtonsRowComponent } from \"../bimplus-buttons-row/bimplus-buttons-row.component\";\nimport { BimplusButtonRowItem, BimplusButtonClickEvent } from \"../bimplus-buttons-row/bimplus-buttons-row.interface\";\nimport { ConnexisResultsRoot, ConnexisResultList, ConnexisResult } from './bimplus-connection-designer-results.interface';\nimport { ExpansionPanelComponent } from '../expansion-panel/expansion-panel.component';\nimport { ExpansionPanelHeaderComponent } from '../expansion-panel-header/expansion-panel-header.component';\nimport { ExpansionPanelHeaderActionsComponent } from '../expansion-panel-header-actions/expansion-panel-header-actions.component';\nimport { BimplusConnectionDesignerService } from \"../bimplus-connection-designer/bimplus-connection-designer.service\";\nimport { BimplusTextMessageComponent } from \"../bimplus-text-message/bimplus-text-message.component\";\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component'\n\n@Component({\n selector: 'lib-bimplus-connection-designer-results',\n standalone: true,\n imports: [\n TranslateModule\n , CommonModule\n , BimplusButtonsRowComponent\n , ExpansionPanelComponent\n , ExpansionPanelHeaderComponent\n , ExpansionPanelHeaderActionsComponent\n , BimplusTextMessageComponent\n , BimplusScrollableContainerComponent\n ],\n providers: [TranslateService],\n templateUrl: './bimplus-connection-designer-results.component.html',\n styleUrl: './bimplus-connection-designer-results.component.less',\n encapsulation: ViewEncapsulation.ShadowDom\n})\nexport class BimplusConnectionDesignerResultsComponent extends BimplusLocalizedWidgetComponent\n implements OnInit, OnChanges {\n\n buttonRowItems: Array<BimplusButtonRowItem> = [];\n\n @Input() errorMessage: string = \"\";\n\n constructor(\n translateService: TranslateService\n , protected connectionDesignerService: BimplusConnectionDesignerService\n ) {\n super(translateService)\n }\n\n ngOnInit(): void {\n this.buttonRowItems = [\n {\n id: \"done\"\n , title: this.translateService.instant('_Done')\n , tooltip: this.translateService.instant('_Done')\n , disabled: false\n , buttonStyle: 'primary'\n }\n ];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const changedResults = changes['results']?.currentValue as ConnexisResultsRoot | null;\n if (changedResults === null) {\n this.connectionDesignerService.activeStep = 0;\n }\n }\n\n @Output() doneClicked = new EventEmitter<void>();\n\n buttonClicked($event: BimplusButtonClickEvent) {\n if ($event.id === \"done\") {\n this.connectionDesignerService.activeStep = 0;\n this.doneClicked.emit();\n }\n }\n\n // #region Results\n @Input() resultTreeRootTitle: string = \"\"; // Tooltip root node of tree\n @Input() resultTreeRootName: string = \"\"; // Visible root node name of tree\n @Input() expandedTreeRoot: boolean = false; // Root tree is expanded\n @Input() expandedResultTrees: boolean = false; // failed and passed sub-tree expanded\n @Input() results: ConnexisResultsRoot | null = null; // Root for all result lists (failed, passed)\n @Output() toggleVisibilityResultsRoot = new EventEmitter<ConnexisResultsRoot>(); // root node\n @Output() toggleVisibilityResultList = new EventEmitter<ConnexisResultList>(); // sub-nodes\n @Output() toggleVisibilityResult = new EventEmitter<ConnexisResult>(); // children nodes\n @Output() clickedResultsRoot = new EventEmitter<ConnexisResultsRoot>(); // root node\n @Output() clickedResultList = new EventEmitter<ConnexisResultList>(); // sub-nodes\n @Output() clickedResult = new EventEmitter<ConnexisResult>(); // children nodes\n @Output() doubleClickedResultsRoot = new EventEmitter<ConnexisResultsRoot>(); // root node\n @Output() doubleClickedResultList = new EventEmitter<ConnexisResultList>(); // sub-nodes\n @Output() doubleClickedResult = new EventEmitter<ConnexisResult>(); // children nodes\n @Output() mouseEnteredResult = new EventEmitter<ConnexisResult>(); // children nodes\n @Output() mouseLeftResult = new EventEmitter<ConnexisResult>(); // children nodes\n\n totalResults(): number {\n let totalCount = 0;\n if (!this.results) return totalCount;\n for (const resultList of this.results.resultList) {\n totalCount += resultList.results.length;\n }\n return totalCount\n }\n private statusMessage(result: ConnexisResult): string {\n let message = \"\\n\";\n message += result.isValid ? \"PASSED : \" : \"FAILED : \";\n message += \"Unity Ratio \" + result.unityRatio;\n return message;\n }\n private infoMessage(result: ConnexisResult): string {\n if (!result.message) {\n return \"\";\n }\n\n let message = \"\\n\";\n message += \"Message: \";\n message += result.message;\n return message;\n }\n\n getTitle(result: ConnexisResult): string {\n return `${result.name}${this.statusMessage(result)}${this.infoMessage(result)}`;\n }\n // #endregion\n}\n","<div class=\"connection-designer-content-result\">\n <div class=\"title\">\n {{ \"_Connection_Designer_results_title\" | translate }}\n </div>\n <div class=\"description\">\n {{ \"_Connection_Designer_results_description\" | translate }}\n </div>\n\n @if(results !== null){\n <lib-bimplus-scrollable-container>\n <div class=\"scrollable-content-container\">\n <lib-expansion-panel\n class=\"project-navigator-model-panel\"\n [expanded]=\"expandedTreeRoot\"\n >\n <lib-expansion-panel-header\n [title]=\"resultTreeRootTitle ? resultTreeRootTitle : results.name + ' (' + totalResults() + ')'\"\n (click)=\"clickedResultsRoot.emit(results)\"\n (keypress)=\"clickedResultsRoot.emit(results)\"\n (dblclick)=\"doubleClickedResultsRoot.emit(results)\"\n >\n <span class=\"project-navigator-root-node\">\n {{ results.name }} ({{ totalResults() }})\n </span>\n \n <lib-expansion-panel-header-actions>\n <!-- toggle buttons should be removed for now see ALBP-24057 -->\n <!-- <div\n [attr.data-test]=\"'toggle_visibility_results'\"\n class=\"ui-icon-checkbox-slider project-navigator-action-buttons\"\n [ngClass]=\"{\n visible: results.isVisible,\n invisible: !results.isVisible,\n semivisible: results.isSemiVisible\n }\"\n [title]=\"'_Toggle visibility' | translate\"\n (click)=\"toggleVisibilityResultsRoot.emit(results)\"\n ></div> -->\n </lib-expansion-panel-header-actions>\n </lib-expansion-panel-header>\n \n <!-- Show all result lists as expansion panels -->\n <!-- lib-bimplus-flat-tree can't be used for that at the moment -->\n <div *ngFor=\"let resultList of results?.resultList\">\n <lib-expansion-panel\n class=\"project-navigator-model-panel\"\n [expanded]=\"expandedResultTrees\"\n >\n <lib-expansion-panel-header>\n <span\n class=\"project-navigator-model-node\"\n [ngClass]=\"{\n visible: resultList.isVisible\n }\"\n [style.color]=\"resultList.colorHexCode\"\n [title]=\"resultList.name + ' (' + resultList.results.length + ')'\"\n (click)=\"clickedResultList.emit(resultList)\"\n (keypress)=\"clickedResultList.emit(resultList)\"\n (dblclick)=\"doubleClickedResultList.emit(resultList)\"\n >\n {{ resultList.name }} ({{ resultList.results.length }})\n </span>\n \n <lib-expansion-panel-header-actions>\n <!-- toggle buttons should be removed for now see ALBP-24057 -->\n <!-- <div\n [attr.data-test]=\"'toggle_visibility_resultlist_' + resultList.id\"\n class=\"ui-icon-checkbox-slider project-navigator-action-buttons\"\n [ngClass]=\"{\n visible: resultList.isVisible,\n invisible: !resultList.isVisible,\n semivisible: resultList.isSemiVisible\n }\"\n [title]=\"'_Toggle visibility' | translate\"\n (click)=\"toggleVisibilityResultList.emit(resultList)\"\n ></div> -->\n </lib-expansion-panel-header-actions>\n </lib-expansion-panel-header>\n \n <!-- Content of panel -->\n <div\n class=\"project-navigator-layer-node\"\n *ngFor=\"let result of resultList.results\"\n >\n <div\n class=\"project-navigator-layer-node-name\"\n [class.selected-node]=\"result.isSelected\"\n [attr.data-test]=\"'result' + result.id\"\n [ngClass]=\"{\n visible: result.isVisible\n }\"\n [title]=\"getTitle(result)\"\n (click)=\"clickedResult.emit(result)\"\n (keypress)=\"clickedResult.emit(result)\" \n (dblclick)=\"doubleClickedResult.emit(result)\"\n (mouseenter)=\"mouseEnteredResult.emit(result)\"\n (mouseleave)=\"mouseLeftResult.emit(result)\"\n >\n {{ result.name }}\n </div>\n \n <!-- toggle buttons should be removed for now see ALBP-24057 -->\n <!-- <div\n [attr.data-test]=\"'toggle_visibility_result_' + result.id\"\n class=\"ui-icon-checkbox-slider project-navigator-action-buttons\"\n [ngClass]=\"{\n visible: result.isVisible,\n invisible: !result.isVisible\n }\"\n [title]=\"'_Toggle visibility' | translate\"\n (click)=\"toggleVisibilityResult.emit(result)\"\n ></div> -->\n </div>\n </lib-expansion-panel>\n </div>\n </lib-expansion-panel>\n </div>\n </lib-bimplus-scrollable-container>\n\n } @else {\n <lib-bimplus-text-message\n class=\"error-message\"\n *ngIf=\"errorMessage\"\n [message]=\"errorMessage\"\n >\n </lib-bimplus-text-message>\n }\n\n <lib-bimplus-buttons-row\n [items]=\"buttonRowItems\"\n (buttonClicked)=\"buttonClicked($event)\"\n >\n </lib-bimplus-buttons-row>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusConnectionDesignerService } from \"./bimplus-connection-designer.service\"\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { BimplusSidenavDrawerContentComponent } from '../bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component';\r\nimport { BimplusConnectionDesignerResultsComponent } from '../bimplus-connection-designer-results/bimplus-connection-designer-results.component';\r\nimport { BimplusButtonsRowComponent } from \"../bimplus-buttons-row/bimplus-buttons-row.component\";\r\nimport { BimplusButtonRowItem, BimplusButtonClickEvent } from \"../bimplus-buttons-row/bimplus-buttons-row.interface\";\r\nimport { DesignCode } from './bimplus-connection-designer.interface';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-connection-designer',\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n , FormsModule\r\n , NgSelectModule\r\n , TranslateModule\r\n , BimplusSidenavDrawerContentComponent\r\n , BimplusConnectionDesignerResultsComponent\r\n , BimplusButtonsRowComponent\r\n , BimplusSidenavDrawerContentComponent\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-connection-designer.component.html',\r\n styleUrl: './bimplus-connection-designer.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusConnectionDesignerComponent extends BimplusLocalizedWidgetComponent implements OnInit {\r\n buttonRowItems: Array<BimplusButtonRowItem> = [];\r\n config: Array<BimplusButtonRowItem> = [];\r\n constructor(\r\n translateService: TranslateService\r\n , protected connectionDesignerService: BimplusConnectionDesignerService\r\n ) {\r\n super(translateService);\r\n connectionDesignerService.activeStepChange$.subscribe((step) => {\r\n if (step === 0) {\r\n this.resetDesignCode();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.config.push({\r\n id: \"next\"\r\n , title: this.translateService.instant('_Next')\r\n , tooltip: this.translateService.instant('_Next')\r\n , disabled: true\r\n , buttonStyle: 'primary'\r\n });\r\n this.buttonRowItems = this.config;\r\n }\r\n\r\n // #region Design codes\r\n\r\n chooseCode: string = \"_Choose_a_design_code\"; // Message for drop down list\r\n\r\n // Design method codes defined in SDS2 (see WebSdk Connexis service for possible values)\r\n @Input() designCodes: Array<DesignCode> = [\r\n { id: \"0\", name: \"EN 1993-1-8 (Eurocode 3)\", code: \"EURO05\", codeNumber: 9 },\r\n { id: \"1\", name: \"AISC 360-22 (16th Ed.): LRFD\", code: \"LRFD16\", codeNumber: 19 },\r\n { id: \"2\", name: \"AISC 360-22 (16th Ed.): ASD\", code: \"ASD16\", codeNumber: 18 },\r\n { id: \"3\", name: \"CSA S16:19 (CISC 12th Ed.)\", code: \"CSA12\", codeNumber: 17 },\r\n ];\r\n @Input() currentDesignCode: DesignCode | null = null;\r\n\r\n @Output() designCodeChanged = new EventEmitter<DesignCode | null>();\r\n\r\n set activeDesignCode(value: DesignCode | null) {\r\n this.currentDesignCode = value;\r\n this.designCodeChanged.emit(this.currentDesignCode);\r\n }\r\n\r\n get activeDesignCode(): DesignCode | null {\r\n return this.currentDesignCode;\r\n }\r\n\r\n private _updateButtonState(buttonId: string, disabled: boolean) {\r\n const _button = this.config.find(btn => btn.id === buttonId);\r\n if (!_button) {\r\n return;\r\n }\r\n _button.disabled = disabled;\r\n }\r\n\r\n private _calculationCanBeStarted: boolean = true;\r\n @Input()\r\n set calculationCanBeStarted(value: boolean) {\r\n this._calculationCanBeStarted = value;\r\n this._updateButtonState(\"next\", !value);\r\n }\r\n get calculationCanBeStarted() {\r\n return this._calculationCanBeStarted;\r\n }\r\n\r\n @Output() startCalculationClicked = new EventEmitter<void>();\r\n\r\n buttonClicked($event: BimplusButtonClickEvent) {\r\n if ($event.id === \"next\") {\r\n this.connectionDesignerService.activeStep = 1;\r\n if (this._calculationCanBeStarted) {\r\n this.startCalculationClicked.emit();\r\n }\r\n }\r\n }\r\n\r\n resetDesignCode() {\r\n this.activeDesignCode = null;\r\n }\r\n // #endregion\r\n}\r\n","<lib-bimplus-sidenav-drawer-content\n [header]=\"'_Connection_designer' | translate\"\n>\n <div class=\"connection-designer-content\">\n @if(connectionDesignerService.activeStep === 0) {\n <div class=\"cross-button\">\n <div class=\"cross\"\n (click)=\"resetDesignCode()\"\n (keypress)=\"resetDesignCode()\"\n >\n </div>\n </div>\n <div class=\"title\">\n {{ \"_Select_the_code\" | translate }}\n </div>\n <div class=\"description\">\n {{ \"_Activate_all_objects_to_make_a_connection\" | translate }}\n </div>\n <div class=\"note\">\n {{ \"_Activate_all_objects_note\" | translate }}\n </div>\n\n @if(designCodes.length > 0){\n <div class=\"design-codes\">\n <ng-select\n class=\"design-codes-dropdown\"\n [(ngModel)]=\"activeDesignCode\"\n [clearable]=\"false\"\n [searchable]=\"false\"\n [placeholder]=\"chooseCode | translate\"\n >\n <ng-option *ngFor=\"let code of designCodes\" [value]=\"code\">{{\n code.name\n }}</ng-option>\n </ng-select>\n </div>\n } @else {\n <div class=\"no-design-codes\">\n {{ \"_No_design_codes_defined\" | translate }}\n </div>\n }\n\n <lib-bimplus-buttons-row\n [items]=\"buttonRowItems\"\n (buttonClicked)=\"buttonClicked($event)\"\n ></lib-bimplus-buttons-row>\n\n } @else {\n <ng-content select=\"lib-bimplus-connection-designer-results\"></ng-content>\n }\n </div>\n</lib-bimplus-sidenav-drawer-content>\n","// Define the type of the window.BimPlus object\nexport interface BimPlusObject {\n [key: string]: (dataDetail: { detail: unknown }) => void;\n}\nexport interface Source {\n [key: string]: { emit: (arg0: unknown) => void; };\n}\n\n\n/**--------------------------------------------------------------------------\n* fire event from component in two ways : \n - fire custom event from component in standard recommended way via. this.eventName.emit function\n \n - call window.BimPlus.eventName function directly on window object (eventName is name\n of the event we want to fire e.g. bimplusNavbarClicked so it will be window.BimPlus.bimplusNavbarClicked).\n Function must be defined in app. where we are using our components.\n This was implemented because MS Edge browser has problems with custom events and in some \n situations(e.g. after file download) it stops handling custom events.\n Disadvantage is that we can have only one event handler which is shared between the multiple components.\n--------------------------------------------------------------------------*/\nexport function fireEvent(source: unknown, eventName: string, data: unknown = null){\n if ( !eventName ) {\n console.error(\"ERROR: Missing event name in fireEvent function in Bimplus components!\");\n return;\n }\n // Check if eventName exists on window.BimPlus and if it's a function\n const bimPlus = ('BimPlus' in window) && typeof window.BimPlus === 'object' && (window.BimPlus as BimPlusObject);\n if (bimPlus && typeof bimPlus[eventName] === 'function') {\n bimPlus[eventName]({detail: data});\n }\n\n const _source = (source as Source);\n if (eventName in _source) {\n _source[eventName].emit(data);\n }\n}","import { CommonModule } from '@angular/common';\nimport { Component, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\nimport { fireEvent } from '../../utils/utils';\n\n@Component({\n selector: 'lib-bimplus-contact',\n standalone: true,\n imports: [CommonModule, TranslateModule],\n providers : [TranslateService],\n templateUrl: './bimplus-contact.component.html',\n styleUrl: './bimplus-contact.component.less',\n encapsulation: ViewEncapsulation.ShadowDom\n})\nexport class BimplusContactComponent extends BimplusLocalizedWidgetComponent{\n constructor(translateService: TranslateService){\n super(translateService)\n }\n @Output() bimplusContactClicked = new EventEmitter<string>();\n\n _contactClicked(){\n fireEvent(this, \"bimplusContactClicked\", \"contact\");\n }\n}\n","<a href=\"https://www.allplan.com/consulting-sale\" \n class=\"bimplus-contact-link\"\n rel=\"noopener\"\n target=\"_blank\"\n (click)=\"_contactClicked()\"\n [title]=\"'_BimplusContactTitle' | translate\"\n>\n <div class=\"bimplus-contact\"></div>\n</a>","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { fireEvent } from '../utils/utils';\r\n\r\n@Directive({\r\n selector: '[libDraggable]',\r\n standalone: true\r\n})\r\nexport class DraggableDirective {\r\n\r\n oldX = 0;\r\n oldY = 0;\r\n isDragging = false;\r\n wasDragging = false;\r\n isMouseDown = false;\r\n\r\n @Output()\r\n dragging = new EventEmitter<[number,number]>();\r\n\r\n @Output()\r\n dragEnd = new EventEmitter<MouseEvent>();\r\n\r\n @Output()\r\n clicked = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this.isDragging && !this.isMouseDown) {\r\n return;\r\n }\r\n\r\n const deltaX = (event.clientX - this.oldX);\r\n const deltaY = (event.clientY - this.oldY);\r\n\r\n if(!this.isDragging){\r\n if(Math.abs(deltaX) > 2 || Math.abs(deltaY) > 2){\r\n this.isDragging = true;\r\n this.wasDragging = true;\r\n }else{\r\n return;\r\n }\r\n }\r\n fireEvent(this, \"dragging\", [deltaX,deltaY]);\r\n\r\n this.oldX = event.clientX;\r\n this.oldY = event.clientY;\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n onMouseUp() {\r\n if(this.isDragging || this.isMouseDown){\r\n fireEvent(this, \"dragEnd\", ['$event']);\r\n }\r\n this.isDragging = false;\r\n this.isMouseDown = false; \r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n this.isMouseDown = true;\r\n this.wasDragging = false;\r\n this.oldX = event.clientX;\r\n this.oldY = event.clientY; \r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onMouseClick(event: MouseEvent) {\r\n if(!this.wasDragging){\r\n fireEvent(this, \"clicked\", event);\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ResizeObserverService {\n\n private rectSize$: BehaviorSubject<DOMRect |undefined > = new BehaviorSubject<DOMRect|undefined>(undefined);\n private internalRectSize :DOMRect = new DOMRect(1,1,1,1);\n // Observable that components can subscribe to\n public parentAppRect$: Observable<DOMRect | undefined> = this.rectSize$.asObservable();\n\n constructor() { }\n\n public setSize(newValue: DOMRect): void {\n this.rectSize$.next(newValue); \n this.internalRectSize = newValue; \n }\n\n public getParentAppRect ():DOMRect{\n if( this.internalRectSize.width<=1 || this.internalRectSize?.height<=1 ) { // not set up with real data yet\n const parentView:HTMLElement|null = document.querySelector('.mainView');\n if(!parentView){\n return this.internalRectSize;\n }\n return parentView.getBoundingClientRect();\n }\n return this.internalRectSize;\n } \n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalStorageService {\n\n private storageSubject = new BehaviorSubject<{ key: string, value: unknown } | null>(null);\n\n constructor() { }\n\n // Set a string value in localStorage\n setItem(key: string, value: string): void {\n try {\n localStorage.setItem(key, value);\n this.storageSubject.next({ key, value });\n } catch (e) {\n console.error('Error saving to localStorage', e);\n }\n }\n\n // Get a string value from localStorage\n getItem(key: string): string | null {\n try {\n return localStorage.getItem(key);\n } catch (e) {\n console.error('Error reading from localStorage', e);\n return null;\n }\n }\n\n // Remove an item from localStorage\n removeItem(key: string): void {\n try {\n localStorage.removeItem(key);\n this.storageSubject.next({ key, value: null });\n } catch (e) {\n console.error('Error removing from localStorage', e);\n }\n }\n\n // Clear all items in localStorage\n clear(): void {\n try {\n localStorage.clear();\n this.storageSubject.next(null);\n } catch (e) {\n console.error('Error clearing localStorage', e);\n }\n }\n\n // Set an object in localStorage\n setObject(key: string, value: unknown): void {\n this.setItem(key, JSON.stringify(value));\n }\n\n // Get an object from localStorage\n getObject(key: string): unknown {\n const value = this.getItem(key);\n return value ? JSON.parse(value) : null;\n }\n\n // Watch for changes in localStorage\n watchStorage(): Observable<{ key: string, value: unknown } | null> {\n return this.storageSubject.asObservable();\n }\n}\n","import { ElementRef,Injectable } from '@angular/core';\r\nimport { ResizeObserverService } from './resize-observer.service';\r\nimport { LocalStorageService } from './local-storage.service';\r\nimport { BehaviorSubject } from 'rxjs';\r\n//import { ItemsList } from '@ng-select/ng-select/lib/items-list';\r\n//import { NotFoundError } from 'rxjs';\r\n\r\n\r\nexport interface LayoutManagerItem {\r\n element:ElementRef;\r\n id: string;\r\n selector?:string;\r\n isCollapsed:boolean;\r\n rememberPosition?:boolean\r\n left?: number;\r\n top?:number;\r\n width?:number;\r\n height?:number;\r\n}\r\n\r\nexport interface LayoutManagerConfigItem {\r\n id: string;\r\n isCollapsed:boolean; \r\n left?: number;\r\n top?:number; \r\n width?:number;\r\n height?:number;\r\n}\r\n\r\n\r\ninterface LayoutManagerConfig {\r\n [key:string]: LayoutManagerConfigItem\r\n}\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LayoutManagerService {\r\n\r\n registeredItems$: BehaviorSubject<LayoutManagerItem[]> = new BehaviorSubject<LayoutManagerItem[]>([])\r\n constructor(private resizeObserverService:ResizeObserverService,\r\n private localStorageService :LocalStorageService \r\n ) { }\r\n private registeredItems:LayoutManagerItem[] = [];\r\n \r\n get RegisteredItems(): LayoutManagerItem[] {\r\n return this.registeredItems;\r\n }\r\n CONFIG:string = 'layoutManagerConfig';\r\n\r\n \r\n/**--------------------------------------------------------------------------\r\n * register object. object must have unique id or elementId\r\n --------------------------------------------------------------------------*/\r\n registerObject(obj:ElementRef, id:string, selector:string | undefined, rememberPosition:boolean,left:number = 100, top:number = 100,width:number = 0, height:number = 0) {\r\n let foundIndex = -1;\r\n if(this.registeredItems.some((item,index) => {\r\n const retval = item.id === id;\r\n if(retval){\r\n foundIndex = index;\r\n }\r\n return retval;\r\n })){\r\n if(foundIndex >= 0){\r\n this.registeredItems.splice(foundIndex,1);\r\n } \r\n }\r\n const newItem: LayoutManagerItem = { \r\n element:obj,\r\n id:id,\r\n selector:selector,\r\n rememberPosition:!!rememberPosition,\r\n left:left,\r\n top:top,\r\n width:width,\r\n height:height,\r\n isCollapsed: false \r\n };\r\n\r\n this.registeredItems.push(newItem);\r\n this.registeredItems$.next(this.registeredItems);\r\n this._initObject(newItem);\r\n }\r\n \r\n _initObject(obj:LayoutManagerItem){\r\n this._adjustObjectByConfig(obj);\r\n this._adjustObjectByWindowSize(obj);\r\n \r\n }\r\n /**--------------------------------------------------------------------------\r\n * get object configuration\r\n * return {left, top, width, heigth}\r\n --------------------------------------------------------------------------*/\r\n _getObjectConfig(obj:LayoutManagerItem):LayoutManagerConfigItem|null {\r\n if(!obj){\r\n return null;\r\n }\r\n const configValue = this.localStorageService.getItem(this.CONFIG);\r\n const config = configValue ? JSON.parse(configValue) : {};\r\n const objId = obj.id ;\r\n let configObj = config[objId];\r\n if(!configObj) {\r\n configObj = {id:objId,left:obj.left,top:obj.top,width:obj.width,height:obj.height}; \r\n }\r\n return configObj;\r\n }\r\n\r\n _adjustObjectByConfig(obj:LayoutManagerItem){\r\n const config:LayoutManagerConfigItem|null = this._getObjectConfig(obj);\r\n if(!config){\r\n return; \r\n }\r\n const parentElement = this._getDomParentElement(obj);\r\n const internalElement = this._getDomInternalElement(obj,'');\r\n if(!parentElement || !internalElement){\r\n return;\r\n }\r\n parentElement.style.left = (config.left) + 'px';\r\n parentElement.style.top = (config.top) + 'px';\r\n if(config.width && config.width > 0){\r\n internalElement.style.width = config.width + 'px';\r\n }\r\n if(config.height && config.height > 0){\r\n internalElement.style.height = config.height + 'px';\r\n }\r\n \r\n this.checkPosition(obj.id,\"\",undefined,0,0,true); \r\n }\r\n\r\n _adjustObjectByWindowSize(obj:LayoutManagerItem){\r\n this.checkPosition(obj.id,\"\",undefined,0,0,true); \r\n }\r\n \r\n /**--------------------------------------------------------------------------\r\n * returns object registered in the layout manager \r\n --------------------------------------------------------------------------*/\r\n getItem(id: string ):LayoutManagerItem|null { \r\n let foundItem:LayoutManagerItem|null = null;\r\n this.registeredItems.forEach(item =>{\r\n if(item.id === id){\r\n foundItem = item;\r\n }\r\n });\r\n return foundItem;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * set object configuration\r\n --------------------------------------------------------------------------*/\r\n _setObjectConfig(obj:LayoutManagerItem, left:number,top:number,width:number,height:number) {\r\n const objId = obj?.id ;\r\n if (!objId) {\r\n return;\r\n }\r\n let config = this.localStorageService.getObject(this.CONFIG) as LayoutManagerConfig;\r\n //let config = configValue && JSON.parse(configValue) as LayoutManagerConfig;\r\n if (!config) {\r\n config = {};\r\n }\r\n if(obj?.isCollapsed){ // do not overtake collapsed size\r\n if (!config[objId]) { \r\n config[objId] = obj;\r\n }\r\n config[objId].left = left;\r\n config[objId].top = top;\r\n //config[objId].width = width;\r\n //config[objId].height = height ;\r\n this.localStorageService.setObject(this.CONFIG, config);\r\n return;\r\n }\r\n\r\n const newItem :LayoutManagerConfigItem = {\r\n id: objId,\r\n isCollapsed: false,\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height\r\n };\r\n config[objId] = newItem;\r\n this.localStorageService.setObject(this.CONFIG,config);\r\n }\r\n \r\n getDomParentElement(id:string ):HTMLElement|null {\r\n const item:LayoutManagerItem|null = this.getItem(id);\r\n if(item){\r\n return this._getDomParentElement(item);\r\n }\r\n return null;\r\n }\r\n\r\n _getDomParentElement(item:LayoutManagerItem ):HTMLElement|null {\r\n let element:HTMLElement;\r\n if(item.element?.nativeElement?.shadowRoot){\r\n element = item.element?.nativeElement?.shadowRoot.querySelector(item.selector);\r\n } else {\r\n element = item.element?.nativeElement; \r\n }\r\n if(!element){\r\n console.error('_getDomParentElement: missing element');\r\n return null;\r\n }\r\n return element; \r\n }\r\n\r\n _getDomInternalElement(item:LayoutManagerItem,selector:string | undefined ):HTMLElement|null {\r\n const element:HTMLElement = item.element?.nativeElement?.shadowRoot || item.element?.nativeElement; \r\n if(!element){\r\n console.error('_getDomInternalElement: missing element');\r\n return null;\r\n }\r\n const mySelector =selector && selector?.length > 0 ?selector:item.selector; \r\n const retval: HTMLElement|null= mySelector?element.querySelector(mySelector):element;\r\n if(!retval){\r\n console.error(`_getDomInternalElement: selection of element ${element} failed with selector ${mySelector}`);\r\n }\r\n return retval;\r\n }\r\n\r\n\r\n _getElementRect(item:LayoutManagerItem,selector:string | undefined ,parentRectangle:DOMRect |undefined ):DOMRect | null{\r\n const selectedObj : HTMLElement|null = this._getDomInternalElement(item,selector);\r\n if(!selectedObj){\r\n console.error('_getElementRect: missing selected object');\r\n return null;\r\n }\r\n\r\n const parentRect:DOMRect = parentRectangle || this.resizeObserverService.getParentAppRect();\r\n if( !parentRect || parentRect?.width<=1 || parentRect?.height<=1 ) {\r\n console.log('_getElementRect: missing parent rect');\r\n }\r\n const elementRect:DOMRect|null = selectedObj.getBoundingClientRect();\r\n if(!elementRect){\r\n console.error('_getElementRect: missing bounding rect');\r\n }\r\n return elementRect;\r\n }\r\n\r\n // checks whether element or element with additional selection of subelement is placed within the give rectangle\r\n // if not then calculates the offset to be moved to fit in\r\n checkPosition(id:string,selector:string,parentRectangle:DOMRect|undefined ,deltaX:number,deltaY:number,forceCheck:boolean = false){\r\n if(!id){\r\n return {deltaX:0,deltaY:0};\r\n }\r\n const e1 = this.getItem(id);\r\n if(!e1){\r\n return {deltaX:0,deltaY:0};\r\n }\r\n const parentRect:DOMRect = parentRectangle || this.resizeObserverService.getParentAppRect();\r\n const elementRect:DOMRect | null = this._getElementRect(e1,selector,parentRect);\r\n if(!elementRect){\r\n console.error('checkPosition: missing elementRect');\r\n return {deltaX:0,deltaY:0};\r\n }\r\n \r\n if(!elementRect?.width || !elementRect?.height){\r\n console.error('checkPosition:element rect empty ');\r\n return {deltaX:0,deltaY:0};\r\n } \r\n \r\n let checkAll = true;\r\n if(parentRect?.width < 2 || parentRect?.height < 2){ // empty parent rect , (after init before first usefull info) nothing to check \r\n checkAll = false; \r\n } \r\n if(checkAll){\r\n let checkBoundaries = true;\r\n if(this._isInsideRect(elementRect, parentRect) === false && !forceCheck) {\r\n checkBoundaries = false;\r\n }\r\n \r\n // copy of real element rectangle to perform calculation over before set to the real element\r\n const elementDOMRect = DOMRect.fromRect(elementRect);\r\n\r\n //set the element rectangle by deltas\r\n this._translateRectangle(elementDOMRect, deltaX, deltaY);\r\n\r\n if(checkBoundaries) {\r\n if(this._isInsideRect(elementDOMRect, parentRect) === false) {\r\n const newElementPos = this.getAlignedPosition(elementDOMRect, parentRect);\r\n deltaX = newElementPos.x - elementRect.x;\r\n deltaY = newElementPos.y - elementRect.y;\r\n this._translateRectangle(elementDOMRect, deltaX, deltaY);\r\n }\r\n } else {\r\n if (this._isInsideLeftTopRect(parentRect, elementDOMRect) === false) {\r\n const newElementPos = this._getAlignedLeftTopPosition(elementDOMRect, parentRect);\r\n deltaX = newElementPos.x - elementRect.x;\r\n deltaY = newElementPos.y - elementRect.y;\r\n this._translateRectangle(elementDOMRect, deltaX, deltaY);\r\n }\r\n }\r\n }\r\n\r\n const selectedElement = this._getDomParentElement(e1);\r\n if(!selectedElement){\r\n return;\r\n }\r\n const computedStyle = window.getComputedStyle(selectedElement);\r\n const top = parseInt(computedStyle.top, 10);\r\n const left = parseInt(computedStyle.left, 10);\r\n selectedElement.style.top = (top + deltaY) + 'px';\r\n selectedElement.style.left = (left + deltaX) + 'px';\r\n return {deltaX,deltaY};\r\n }\r\n /**--------------------------------------------------------------------------\r\n * find if rectangle 1 is inside rectangle 2\r\n --------------------------------------------------------------------------*/\r\n _isInsideRect(r1:DOMRect, r2:DOMRect) {\r\n if(!r1 || !r2) {\r\n return false;\r\n }\r\n return r2.left <= r1.left && r2.top <= r1.top && r2.right >= r1.right && r2.bottom >= r1.bottom;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * find if rectangles do not overlap the left and top sides\r\n --------------------------------------------------------------------------*/\r\n _isInsideLeftTopRect(r1:DOMRect, r2:DOMRect) {\r\n if(!r1 || !r2) {\r\n return false;\r\n }\r\n const r1Inside = r2.left <= r1.left && r2.top <= r1.top;\r\n const r2Inside = r1.left <= r2.left && r1.top <= r2.top;\r\n return r1Inside || r2Inside;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * get position of r1 aligned with the r2 sides\r\n --------------------------------------------------------------------------*/\r\n getAlignedPosition(r1:DOMRect, r2:DOMRect) {\r\n if(!r1 || !r2) {\r\n return {x:0,y:0};\r\n }\r\n const to = { x: r1.x, y: r1.y };\r\n //align left or right sides. preferably left\r\n if(r1.left < r2.left) {\r\n to.x = r2.x;\r\n } else if(r1.right > r2.right) {\r\n to.x = r2.right - r1.width;\r\n }\r\n //align top or bottom. preferably top\r\n if(r1.top < r2.top) {\r\n to.y = r2.y;\r\n } else if(r1.bottom > r2.bottom) {\r\n to.y = r2.bottom - r1.height;\r\n }\r\n return to;\r\n }\r\n \r\n /**--------------------------------------------------------------------------\r\n * get position of r1 aligned with the r2 left, top sides\r\n --------------------------------------------------------------------------*/\r\n _getAlignedLeftTopPosition(r1:DOMRect, r2:DOMRect) {\r\n if(!r1 || !r2) {\r\n return {x:0,y:0};\r\n }\r\n\r\n const to = { x: r1.x, y: r1.y };\r\n //align left\r\n if(r1.left < r2.left) {\r\n to.x = r2.x;\r\n }\r\n //align top\r\n if(r1.top < r2.top) {\r\n to.y = r2.y;\r\n }\r\n return to;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * translate rectangle by x, y\r\n --------------------------------------------------------------------------*/\r\n _translateRectangle(rect:DOMRect, translateX:number, translateY:number) {\r\n if(!rect) {\r\n return;\r\n }\r\n rect.x += translateX;\r\n rect.y += translateY;\r\n return rect;\r\n }\r\n \r\n updateCollapsed(value:boolean, id:string = ''):void{ \r\n const foundItem = this.getItem(id);\r\n if(!foundItem){\r\n return;\r\n }\r\n foundItem.isCollapsed = value;\r\n this.registeredItems$.next(this.registeredItems);\r\n setTimeout(()=>{ \r\n this.checkPosition(foundItem.id,\"\",undefined,0,0,true); \r\n });\r\n } \r\n\r\n\r\n handleDragEnd(id:string){//},left:number,top:number){\r\n this.finalizeObjectChanges(id);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * finalize object changes (position). object must be registered in the layout manager\r\n * object: object to finalize \r\n --------------------------------------------------------------------------*/\r\n finalizeObjectChanges(id:string):void {\r\n const item:LayoutManagerItem|null = this.getItem(id);\r\n if(!item){\r\n return;\r\n }\r\n const element = this._getDomParentElement(item);\r\n if(!element){\r\n return;\r\n }\r\n const computedStyle = window.getComputedStyle(element); \r\n const top = parseInt(computedStyle.top, 10);\r\n const left = parseInt(computedStyle.left, 10);\r\n \r\n const elementRect = this._getElementRect(item,undefined,undefined);\r\n this._setObjectConfig(item,left,top,\r\n elementRect && elementRect.width > 0 ? elementRect.width:0 ,\r\n elementRect && elementRect.height > 0 ? elementRect.height:0);\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { DraggableDirective } from '../../directives/draggable.directive';\nimport { LayoutManagerService } from '../../services/layout-manager.service';\n@Component({\n selector: 'lib-bimplus-floating-bar-dragger',\n standalone: true,\n imports: [\n CommonModule,\n DraggableDirective,\n ],\n templateUrl: './bimplus-floating-bar-dragger.component.html',\n styleUrl: './bimplus-floating-bar-dragger.component.less',\n})\nexport class BimplusFloatingBarDraggerComponent {\n constructor ( private layoutManagerService: LayoutManagerService){\n }\n // Define isCollapsed as a boolean property\n @Input() isCollapsed: boolean = false;\n @Input() parentId:string = '';\n \n // Define icon as a string property with a default value\n draggerIcon: string = 'ui-icon-drag';\n \n \n onDragEnd(){\n this.layoutManagerService.handleDragEnd(this.parentId);\n }\n \n dragBaseElement(event: [number, number]): void {\n const deltaX1 = event[0];\n const deltaY1 = event[1]; \n this.layoutManagerService.checkPosition(this.parentId,\"\",undefined,deltaX1,deltaY1) \n }\n}\n","<div\n class=\"floating-panel__dragger dragger\"\n [ngClass] = \"isCollapsed ? 'collapsed' : ''\"\n [className]=\"draggerIcon\"\n libDraggable \n (dragEnd)=\"onDragEnd()\"\n (dragging)=\"dragBaseElement($event)\"\n>\n</div>\n\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, signal } from '@angular/core';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { FloatingBarItem } from '../bimplus-floating-bar/bimplus-floating-bar.interface';\r\nimport { DraggableDirective } from '../../directives/draggable.directive';\r\nimport { LayoutManagerService, LayoutManagerItem } from '../../services/layout-manager.service';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-header-content',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DraggableDirective,\r\n TranslateModule,\r\n ],\r\n providers: [\r\n TranslateService\r\n ],\r\n templateUrl: './bimplus-floating-bar-header-content.component.html',\r\n styleUrl: './bimplus-floating-bar-header-content.component.less',\r\n})\r\nexport class BimplusFloatingBarHeaderContentComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService,private layoutManagerService:LayoutManagerService) {\r\n super(translateService)\r\n \r\n this.layoutManagerService.registeredItems$.subscribe((items: LayoutManagerItem[]) => {\r\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.parentId); \r\n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \r\n }) \r\n }\r\n\r\n @Input() isCollapsed: boolean = false;\r\n @Input() parentId:string = '';\r\n @Output() actionClicked = new EventEmitter<string>();\r\n\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'items' }) set itemsValue(value: Array<FloatingBarItem>) {\r\n this.items.set(value);\r\n }\r\n protected readonly items = signal<FloatingBarItem[]>([]);\r\n\r\n findItemById(id: string): FloatingBarItem | undefined {\r\n return this.items().find(x => x.buttonId === id);\r\n }\r\n\r\n onItemClicked(action: string) {\r\n const item = this.findItemById(action);\r\n if (!item || item?.disabled) {\r\n return;\r\n }\r\n this.actionClicked.emit(action);\r\n }\r\n onDragEnd(){\r\n this.layoutManagerService.handleDragEnd(this.parentId);\r\n }\r\n \r\n dragBaseElement(event: [number, number]): void {\r\n const deltaX1 = event[0];\r\n const deltaY1 = event[1]; \r\n this.layoutManagerService.checkPosition(this.parentId,\"\",undefined,deltaX1,deltaY1) \r\n }\r\n}\r\n","<div\r\n class=\"floating-panel__header-content dragger\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n libDraggable \r\n (dragEnd)=\"onDragEnd()\"\r\n (dragging)=\"dragBaseElement($event)\"\r\n>\r\n <div class=\"menu-content\">\r\n <div *ngFor=\"let item of items()\">\r\n <div\r\n [attr.data-test]=\"'floating_bar_item_' + item.buttonId\"\r\n class=\"fp-block-item fp-block-icon-item\"\r\n [ngClass]=\"{\r\n active: item.active\r\n }\"\r\n [className]=\"item.iconClass\"\r\n [title]=\"item.title | translate\"\r\n (click)=\"onItemClicked(item.buttonId)\"\r\n (keypress)=\"onItemClicked(item.buttonId)\" \r\n ></div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, HostBinding, OnInit } from '@angular/core';\r\nimport { DraggableDirective } from '../../directives/draggable.directive'\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { LayoutManagerItem, LayoutManagerService } from '../../services/layout-manager.service';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-header-logo',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n DraggableDirective,\r\n TranslateModule,\r\n ],\r\n providers: [\r\n TranslateService\r\n ],\r\n templateUrl: './bimplus-floating-bar-header-logo.component.html',\r\n styleUrl: './bimplus-floating-bar-header-logo.component.less',\r\n})\r\nexport class BimplusFloatingBarHeaderLogoComponent extends BimplusLocalizedWidgetComponent implements OnInit\r\n{\r\n constructor(translateService: TranslateService,\r\n private readonly layoutManagerService: LayoutManagerService\r\n ) { \r\n super(translateService)\r\n\r\n }\r\n\r\n @Input() icon: string = \"\";\r\n @HostBinding('class.isCollapsed')\r\n @Input() isCollapsed: boolean = false;\r\n @Input() parentId: string = '';\r\n\r\n @Input() title: string = \"\";\r\n\r\n ngOnInit(){\r\n this.layoutManagerService.registeredItems$.subscribe((items: LayoutManagerItem[]) => {\r\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.parentId); \r\n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \r\n })\r\n }\r\n\r\n onLogoClicked(){\r\n this.layoutManagerService.updateCollapsed(!this.isCollapsed,this.parentId)\r\n }\r\n \r\n onDragEnd(){\r\n this.layoutManagerService.handleDragEnd(this.parentId);\r\n }\r\n \r\n dragBaseElement(event: [number, number]): void {\r\n const deltaX1 = event[0];\r\n const deltaY1 = event[1]; \r\n this.layoutManagerService.checkPosition(this.parentId,\"\",undefined,deltaX1,deltaY1) \r\n }\r\n}\r\n","<div\r\n class=\"floating-panel__header-logo\"\r\n [ngClass]=\"isCollapsed ? 'collapsed' : ''\"\r\n [className]=\"icon\"\r\n [title]=\"title | translate\"\r\n libDraggable\r\n (clicked)=\"onLogoClicked()\" \r\n (dragEnd)=\"onDragEnd()\"\r\n (dragging)=\"dragBaseElement($event)\"\r\n></div>\r\n","//import { Directive, ElementRef , HostListener, Output, EventEmitter } from '@angular/core';\nimport { Directive, ElementRef , Output, EventEmitter , OnInit, OnDestroy} from '@angular/core';\nimport { LayoutManagerService } from '../services/layout-manager.service';\nimport { ResizeObserverService } from '../services/resize-observer.service';\nimport { fireEvent } from '../utils/utils';\n\ninterface ResizerItem {\n 'className' : string ,\n 'resizeStrategy' : string \n}\n\ninterface ResizableElement extends HTMLElement{\n resizeStrategy?: string;\n}\n\n@Directive({\n selector: '[libResizable]',\n standalone: true\n})\n\nexport class ResizableDirective implements OnDestroy, OnInit{\n resizeContactPointX = 0;\n resizeContactPointY = 0;\n resizableElements:ResizableElement[] = [];\n resizeEnabled = true;\n resizeStarted = false;\n resizeStart : (event: MouseEvent | TouchEvent) => void;\n resizeInProgress: (event: MouseEvent | TouchEvent) => void; \n boundResizeStart: (event: MouseEvent | TouchEvent) => void;\n boundResizeInProgress: (event: MouseEvent | TouchEvent) => void;\n boundResizeEnd: (event: MouseEvent | TouchEvent) => void;\n \n _element:HTMLElement; \n actResizeStrategy = \"se\";\n \n\n @Output()\n resizedEnd = new EventEmitter<MouseEvent>();\n\n\n // list of resizers, resizers are specified by class name\n resizersList:ResizerItem[] = [ \n { className : \"resizer-nw\" , resizeStrategy : \"nw\" },\n { className : \"resizer-n\" , resizeStrategy: \"n\" },\n { className : \"resizer-ne\" , resizeStrategy: \"ne\" },\n { className : \"resizer-e\" , resizeStrategy: \"e\" },\n { className : \"resizer-se\" , resizeStrategy: \"se\" },\n { className : \"resizer-s\" , resizeStrategy: \"s\" },\n { className : \"resizer-sw\" , resizeStrategy: \"sw\" },\n { className : \"resizer-w\" , resizeStrategy: \"w\" }\n ];\n \n constructor(private elementRef: ElementRef,\n private layoutManagerService: LayoutManagerService,\n private resizeObserverService:ResizeObserverService) { \n \n this._element = elementRef.nativeElement;\n this.layoutManagerService = layoutManagerService;\n \n this.resizeStart = (event:MouseEvent|TouchEvent) => {\n //get mouse/finger X Y positions\n event.stopPropagation();\n if(this.resizeStarted){\n return;\n }\n this.resizeStarted = true;\n const touchList = (event as TouchEvent).targetTouches? (event as TouchEvent).targetTouches: [];\n const clientX = event.type === 'touchstart' ? touchList[0]?.clientX : (event as MouseEvent).clientX;\n const clientY = event.type === 'touchstart' ? touchList[0]?.clientY : (event as MouseEvent).clientY;\n this.resizeContactPointX = clientX;\n this.resizeContactPointY = clientY;\n this.openDocumentListenersResize(); \n this.setupResizeStrategy(event);\n }\n \n /**--------------------------------------------------------------------------\n * calcuates and sets the new position\n --------------------------------------------------------------------------*/\n this.resizeInProgress = (event:MouseEvent|TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n //get mouse/finger X Y positions\n const touchList = (event as TouchEvent).targetTouches ? (event as TouchEvent).targetTouches: [];\n const clientX = event.type === 'touchmove' ? touchList[0]?.clientX : (event as MouseEvent).clientX;\n const clientY = event.type === 'touchmove' ? touchList[0]?.clientY : (event as MouseEvent).clientY;\n //const clientX = (event as MouseEvent).clientX;\n //const clientY = (event as MouseEvent).clientY;\n\n const moved = this.resizeFromTo(this._element,this.resizeContactPointX, this.resizeContactPointY,clientX,clientY, this.actResizeStrategy);\n if(moved) {\n this.resizeContactPointX = clientX;\n this.resizeContactPointY = clientY;\n }\n }\n this.boundResizeStart = this.resizeStart.bind(this);\n this.boundResizeInProgress = this.resizeInProgress.bind(this);\n this.boundResizeEnd = this.resizeEnd.bind(this);\n this.resizeInProgress.bind(this);\n this.setResizers(this._element); \n }\n ngOnInit(): void {\n this.boundResizeStart = this.resizeStart.bind(this);\n this.boundResizeInProgress = this.resizeInProgress.bind(this);\n this.boundResizeEnd = this.resizeEnd.bind(this);\n }\n\n ngOnDestroy(): void {\n this.closeAllListenersResize(); \n }\n\n resizeEnd(){ \n //this.closeDocumentListenersResize();\n if(!this.resizeStarted){\n return;\n } \n this.resizeStarted = false;\n this.closeAllListenersResize(); \n this.openElementListenersResize();\n fireEvent(this, \"resizedEnd\", ['$event']); \n }\n \n\n _getViewRect() {\n const view = document.getElementById('#containerView'); // we should get here the parent object selector as input parameter\n if(view){\n return view.getBoundingClientRect();\n }\n return new DOMRect(0,0,0,0);\n }\n\n/**--------------------------------------------------------------------------\n * find if rectangle 1 is inside rectangle 2\n --------------------------------------------------------------------------*/\n isInsideRect(rect1:DOMRect, rect2:DOMRect) {\n if(!rect1 || !rect2) {\n return false;\n }\n const rect1Inside:boolean = rect2.left <= rect1.left\n && rect2.top <= rect1.top \n && rect2.right >= rect1.right \n && rect2.bottom >= rect1.bottom;\n\n return rect1Inside;\n }\n /**--------------------------------------------------------------------------\n * resize rectangle by x, y\n --------------------------------------------------------------------------*/\n _resizeRectangle(rect:DOMRect, resizeX:number, resizeY:number, resizeStrategy:string) {\n if(!rect) {\n return;\n }\n\n if(['nw','w', 'sw'].includes(resizeStrategy)) {\n rect.x += resizeX;\n resizeX = resizeX * -1;\n }\n\n if(['nw','n', 'ne'].includes(resizeStrategy)) {\n rect.y += resizeY;\n resizeY = resizeY * -1;\n }\n\n if(typeof(resizeX) === 'number' && !['n','s'].includes(resizeStrategy)) {\n rect.width += resizeX;\n }\n\n if(typeof(resizeY) === 'number' && !['w','e'].includes(resizeStrategy)) {\n rect.height += resizeY;\n }\n\n return rect;\n }\n\n _maxHeightReset(obj:HTMLElement, elementRect:DOMRect) { \n this.resizeFromTo(obj, elementRect.right, elementRect.bottom, elementRect.left,elementRect.top, \"se\");\n }\n\n /*--------------------------------------------------------------------\n * resize object from {x,y} to {x,y} based on resize strategy\n --------------------------------------------------------------------------*/\n resizeFromTo (obj:HTMLElement, fromX:number, fromY:number, toX:number,toY:number, resizeStrategy:string){\n const posXDelta = toX - fromX;\n const posYDelta = toY - fromY;\n const element = obj ?? this._element;\n const elementRect = element.getBoundingClientRect();\n //const viewRect = this._getViewRect();\n const viewRect = this.resizeObserverService.getParentAppRect();\n \n let checkBoundaries = true;\n\n resizeStrategy = resizeStrategy || \"se\";\n\n //if the object is outside the view rect because it's bigger, do not check boundaries,\n //allow moving outside the view rect\n if(this.isInsideRect(elementRect, viewRect) === false) {\n checkBoundaries = false; \n }\n\n this._resizeRectangle(elementRect, posXDelta, posYDelta, resizeStrategy);\n\n if (checkBoundaries && this.isInsideRect(elementRect, viewRect) === false) {\n return false;\n }\n \n const computedStyle = window.getComputedStyle(element);\n let top = parseInt(computedStyle.top, 10);\n let left = parseInt(computedStyle.left, 10);\n let width = parseInt(computedStyle.width, 10);\n let height = parseInt(computedStyle.height, 10);\n \n if(['nw','w', 'sw'].includes(resizeStrategy)) {\n left = left + posXDelta; \n }\n\n if(['nw','n', 'ne'].includes(resizeStrategy)) {\n top = top + posYDelta; \n }\n\n if(!['n','s'].includes(resizeStrategy)) {\n width = elementRect.width;\n }\n \n if( viewRect.height < elementRect.height ){\n this._maxHeightReset(element, elementRect);\n }\n else if(!['w','e'].includes(resizeStrategy)) {\n height = elementRect.height;\n }\n\n \n element.style.top = top + 'px';\n element.style.left = left + 'px';\n element.style.width = width + 'px';\n element.style.height = height + 'px';\n\n return true;\n }\n/**--------------------------------------------------------------------------\n * resize start at the layout managaer\n * open document listeners\n --------------------------------------------------------------------------*/\n \n /**--------------------------------------------------------------------------\n * set the elements used for resizing\n --------------------------------------------------------------------------*/\n setResizers(element:HTMLElement) {\n const setResizableElements = () => {\n let resizableElements:ResizableElement[] = [];\n // get dom elements of all resizers\n this.resizersList.forEach( item => {\n const resizeElems = element.getElementsByClassName(item.className);\n if( resizeElems?.length ) {\n // set resize strategy in each element so we know in which direction to resize\n const decoratedResizeElems: ResizableElement[] = Array.from(resizeElems).map( elem => {\n const resizableElem = elem as ResizableElement;\n resizableElem.resizeStrategy = item.resizeStrategy;\n return resizableElem;\n });\n\n // add it to list of all resizers\n resizableElements = [...resizableElements, ...decoratedResizeElems];\n }\n });\n\n this.resizableElements = [...resizableElements];\n this.openElementListenersResize();\n }\n setTimeout(()=>{\n setResizableElements();\n });\n }\n\n /**--------------------------------------------------------------------------\n * open mousedown, touchstart listeners on all elements allowed for resizing\n --------------------------------------------------------------------------*/\n openElementListenersResize() {\n this.resizableElements.forEach(element => {\n element.addEventListener('mousedown', this.boundResizeStart);\n element.addEventListener('touchstart', this.boundResizeStart);\n });\n }\n /**--------------------------------------------------------------------------\n * open mouseup, touchend and mousemove, touchmove on document\n --------------------------------------------------------------------------*/\n openDocumentListenersResize() {\n document.addEventListener('mouseup', this.boundResizeEnd);\n document.addEventListener('touchend', this.boundResizeEnd);\n document.addEventListener('mousemove', this.boundResizeInProgress);\n document.addEventListener('touchmove', this.boundResizeInProgress); \n }\n \n /**--------------------------------------------------------------------------\n * close mouseup, touchend and mousemove, touchmove on document\n --------------------------------------------------------------------------*/\n closeDocumentListenersResize() {\n document.removeEventListener('mousemove', this.boundResizeInProgress);\n document.removeEventListener('touchmove', this.boundResizeInProgress);\n document.removeEventListener('mouseup', this.boundResizeEnd);\n document.removeEventListener('touchend', this.boundResizeEnd);\n }\n\n/**--------------------------------------------------------------------------\n * close mousedown, touchstart listeners on all elements allowed for resizing\n --------------------------------------------------------------------------*/\n closeElementListenersResize() {\n this.resizableElements.forEach(element => {\n element.removeEventListener('mousedown', this.boundResizeStart);\n element.removeEventListener('touchstart', this.boundResizeStart);\n element.removeEventListener('mousemove', this.boundResizeInProgress);\n element.removeEventListener('touchmove', this.boundResizeInProgress); \n element.removeEventListener('mouseup', this.boundResizeEnd);\n element.removeEventListener('touchend', this.boundResizeEnd);\n });\n }\n\n /**--------------------------------------------------------------------------\n * close all listeners\n --------------------------------------------------------------------------*/\n closeAllListenersResize() {\n this.closeElementListenersResize();\n this.closeDocumentListenersResize();\n }\n\n /**--------------------------------------------------------------------------\n * setup actual resize strategy\n --------------------------------------------------------------------------*/\n setupResizeStrategy(event: MouseEvent | TouchEvent) {\n if( !event ) {\n return;\n }\n\n // find on which element resize started so we know in which direction to resize\n let resizeStrategy:string = \"se\";\n const resizeSourceElem = event?.target;\n\n if( resizeSourceElem ) {\n const foundElem = this.resizableElements.find( item => item === resizeSourceElem );\n if (foundElem?.resizeStrategy) {\n resizeStrategy = foundElem?.resizeStrategy;\n }\n }\n\n this.actResizeStrategy = resizeStrategy;\n }\n}\n","//import { Component, HostBinding, Input,Output,EventEmitter, ElementRef, AfterViewChecked,ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core';\n//import { Component, Input,Output,EventEmitter, ElementRef, AfterViewChecked,ChangeDetectorRef, OnInit, OnDestroy, ChangeDetectionStrategy } from '@angular/core';\nimport { Component, Input, ElementRef, AfterViewChecked,ChangeDetectorRef, OnInit, OnDestroy,AfterViewInit} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\nimport { BimplusFloatingBarDraggerComponent } from '../bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component';\nimport { BimplusFloatingBarHeaderContentComponent } from '../bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component';\nimport { BimplusFloatingBarHeaderLogoComponent } from '../bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component';\nimport { DraggableDirective } from '../../directives/draggable.directive'\nimport { ResizableDirective } from '../../directives/resizable.directive'\nimport { LayoutManagerItem, LayoutManagerService } from '../../services/layout-manager.service';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\n\n@Component({\n selector: 'lib-bimplus-floating-bar',\n standalone: true,\n imports: [\n CommonModule,\n DraggableDirective,\n ResizableDirective,\n BimplusFloatingBarDraggerComponent,\n BimplusFloatingBarHeaderContentComponent,\n BimplusFloatingBarHeaderLogoComponent,\n ],\n\n\n templateUrl: './bimplus-floating-bar.component.html',\n styleUrl: './bimplus-floating-bar.component.less',\n //changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class BimplusFloatingBarComponent extends BimplusLocalizedWidgetComponent implements OnInit, OnDestroy, AfterViewChecked,AfterViewInit\n{\n constructor(translateService: TranslateService,\n private layoutManagerService: LayoutManagerService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef,\n private resizeObserverService:ResizeObserverService\n ) { \n super(translateService);\n }\n\n @Input() noBody: boolean = false;\n \n @Input() isFocused: boolean = false;\n\n @Input() resizeEnabled: boolean = false;\n @Input() autoCollapse: boolean = false;\n @Input() focusSelector: string = '';\n @Input() isVisible = false; \n @Input() id: string = '';\n \n private subscription: Subscription | null = null; // Initialize to null\n private hasViewChecked: boolean = false;\n \n //@Input() isCollapsed: boolean = false;\n isCollapsed: boolean = false;\n\n get canNotResize(): boolean {\n return !(this.resizeEnabled && !this.isCollapsed);\n }\n\n ngOnInit():void{\n \n this.layoutManagerService.registeredItems$.subscribe((items: LayoutManagerItem[]) => {\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.id); \n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \n }) \n \n }\n ngOnDestroy(): void {\n // Unsubscribe to avoid memory leaks\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n ngAfterViewInit(){\n // if the component wants to be registered in layout manager system\n // Subscribe to the observable\n this.subscription = this.resizeObserverService.parentAppRect$.subscribe(value => {\n this.handleParentAppRectSizeChange(value);\n });\n }\n\n ngAfterViewChecked() {\n if (!this.hasViewChecked && !this.isCollapsed) {\n this.hasViewChecked = true; // Set the flag to prevent repeated execution\n //this.cdr.detectChanges(); // Trigger change detection \n setTimeout(()=>{\n this.layoutManagerService.checkPosition(this.id,\"\",undefined,0,0,true);\n });\n }\n }\n\n handleParentAppRectSizeChange(parentRect:DOMRect | undefined):void{ \n this.layoutManagerService.checkPosition(this.id,'.floating-panel.visible',parentRect,0,0,true); \n }\n \n onResizedEnd(){\n this.layoutManagerService.finalizeObjectChanges(this.id);\n }\n\n onDragEnd(){\n this.layoutManagerService.handleDragEnd(this.id);\n }\n}\n\n","<div\n class=\"floating-panel\"\n [class.visible]=\"isVisible\"\n [class.no-body]=\"noBody\"\n [class.is-focused]=\"isFocused\"\n [class.collapsed]=\"isCollapsed\" \n libResizable\n (resizedEnd)=\"onResizedEnd()\"\n (dragEnd)=\"onDragEnd()\"\n>\n <ng-content select=\".floating-bar-header-logo\"></ng-content>\n <ng-content select=\".floating-bar-header-content\"></ng-content>\n <ng-content select=\".floating-bar-dragger\"></ng-content>\n <ng-content select=\".floating-bar-body\"></ng-content>\n <div \n class=\"resizer-ne floating-panel__resizerNE\"\n [class.resize-disabled]=\"canNotResize\">\n</div>\n<div \n class=\"resizer-e floating-panel__resizerE\"\n [class.resize-disabled]=\"canNotResize\">\n</div>\n<div \n class=\"resizer-se floating-panel__resizerSE\"\n [class.resize-disabled]=\"canNotResize\">\n</div>\n<div \n class=\"resizer-s floating-panel__resizerS\"\n [class.resize-disabled]=\"canNotResize\">\n</div>\n</div>\n\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation,ElementRef, AfterViewInit, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { BimplusFloatingBarComponent } from '../bimplus-floating-bar/bimplus-floating-bar.component';\r\nimport { BimplusFloatingBarDraggerComponent } from '../bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component';\r\nimport { BimplusFloatingBarHeaderContentComponent } from '../bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component';\r\nimport { BimplusFloatingBarHeaderLogoComponent } from '../bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component';\r\nimport { FloatingBarItem } from '../bimplus-floating-bar/bimplus-floating-bar.interface';\r\nimport { LayoutManagerService } from '../../services/layout-manager.service';\r\n\r\nconst DEFAULT_POSITION_LEFT = 355;\r\nconst DEFAULT_POSITION_TOP = 355;\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-hide-objects',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n BimplusFloatingBarComponent,\r\n BimplusFloatingBarDraggerComponent,\r\n BimplusFloatingBarHeaderContentComponent,\r\n BimplusFloatingBarHeaderLogoComponent,\r\n TranslateModule,\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-floating-bar-hide-objects.component.html',\r\n styleUrl: './bimplus-floating-bar-hide-objects.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusFloatingBarHideObjectsComponent extends BimplusLocalizedWidgetComponent implements AfterViewInit {\r\n \r\n @Output() actionClicked = new EventEmitter<string>();\r\n @Input() noBody: boolean = true; \r\n @Input() isFocused: boolean = true;\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n // Items for the header content sub component\r\n @Input({ alias: 'items' }) set itemsValue(value: FloatingBarItem[]) {\r\n this.items.set(value)\r\n }\r\n readonly items = signal<FloatingBarItem[]>([]);\r\n\r\n protected layoutManagerService: LayoutManagerService;\r\n\r\n componentId = 'hide-menu-fp-id'\r\n icon = 'ui-icon-hide-menu';\r\n title: string = \"\"; // no tooltip info on Logo icon\r\n focusSelectorId: string = 'hide-menu-id';\r\n\r\n constructor(\r\n translateService: TranslateService,\r\n layoutManagerService: LayoutManagerService,\r\n private readonly element: ElementRef\r\n ){ \r\n super(translateService);\r\n this.layoutManagerService = layoutManagerService;\r\n }\r\n \r\n ngAfterViewInit() {\r\n // Subscribe to the observable\r\n this.layoutManagerService.registerObject(this.element,this.componentId,'.floating-panel.visible',true,DEFAULT_POSITION_LEFT,DEFAULT_POSITION_TOP); \r\n } \r\n}\r\n","<lib-bimplus-floating-bar\r\n id=\"hide-menu-fp-id\"\r\n [id] = \"componentId\"\r\n class=\"hide-menu\"\r\n [noBody]=\"noBody\"\r\n [isFocused]=\"isFocused\"\r\n [resizeEnabled]=\"false\"\r\n [focusSelector]=\"focusSelectorId\"\r\n [isVisible]=\"true\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\" \r\n>\r\n <lib-bimplus-floating-bar-header-logo\r\n class=\"floating-bar-header-logo\"\r\n [parentId] = \"componentId\"\r\n [icon]=\"icon\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n >\r\n </lib-bimplus-floating-bar-header-logo>\r\n\r\n <lib-bimplus-floating-bar-header-content\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [parentId] = \"componentId\"\r\n class=\"floating-bar-header-content\"\r\n [items]=\"items()\" \r\n (actionClicked)=\"actionClicked.emit($event)\"\r\n >\r\n </lib-bimplus-floating-bar-header-content>\r\n\r\n <lib-bimplus-floating-bar-dragger\r\n class=\"floating-bar-dragger\" \r\n [parentId] = \"componentId\"\r\n >\r\n </lib-bimplus-floating-bar-dragger>\r\n</lib-bimplus-floating-bar>\r\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation ,ElementRef, AfterViewChecked, ChangeDetectorRef, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\n\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\nimport { BimplusFloatingBarComponent } from '../bimplus-floating-bar/bimplus-floating-bar.component';\nimport { BimplusFloatingBarDraggerComponent } from '../bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component';\nimport { BimplusFloatingBarHeaderContentComponent } from '../bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component';\nimport { BimplusFloatingBarHeaderLogoComponent } from '../bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component';\nimport { FloatingBarItem } from '../bimplus-floating-bar/bimplus-floating-bar.interface';\nimport { LayoutManagerService} from '../../services/layout-manager.service';\n\nconst DEFAULT_POSITION_LEFT =355;\nconst DEFAULT_POSITION_TOP = 320;\n\n@Component({\n selector: 'lib-bimplus-floating-bar-isolation-objects',\n standalone: true,\n imports: [\n CommonModule,\n BimplusFloatingBarComponent,\n BimplusFloatingBarDraggerComponent,\n BimplusFloatingBarHeaderContentComponent,\n BimplusFloatingBarHeaderLogoComponent,\n TranslateModule,\n ],\n providers: [TranslateService],\n templateUrl: './bimplus-floating-bar-isolation-objects.component.html',\n styleUrl: './bimplus-floating-bar-isolation-objects.component.less',\n encapsulation: ViewEncapsulation.ShadowDom\n})\n\nexport class BimplusFloatingBarIsolationObjectsComponent extends BimplusLocalizedWidgetComponent implements AfterViewInit, AfterViewChecked{\n constructor(translateService: TranslateService, \n private layoutManagerService: LayoutManagerService,\n private element: ElementRef,\n private cdr: ChangeDetectorRef){ \n super(translateService); \n \n }\n private hasViewChecked: boolean = false;\n\n \n @Output() actionClicked = new EventEmitter<string>();\n\n @Input() noBody: boolean = true;\n @Input() isFocused: boolean = true;\n\n // Items for the header content sub component\n @Input() items: Array<FloatingBarItem> = [];\n\n icon = 'ui-icon-isolation-menu';\n title: string = \"\"; // no tooltip info on Logo icon\n focusSelectorId: string = 'isolation-menu-id';\n componentId = 'isolation-menu-fp-id';\n \n ngAfterViewInit(){\n this.layoutManagerService.registerObject(this.element,this.componentId,'.floating-panel.visible',true,DEFAULT_POSITION_LEFT,DEFAULT_POSITION_TOP,); \n }\n\n ngAfterViewChecked() {\n if (!this.hasViewChecked) {\n this.hasViewChecked = true; // Set the flag to prevent repeated execution\n this.cdr.detectChanges(); // Trigger change detection \n setTimeout(()=>{\n this.layoutManagerService.checkPosition(this.componentId,'.floating-panel.visible',undefined,0,0,true); \n });\n }\n }\n}\n","<lib-bimplus-floating-bar\r\n id=\"isolation-menu-fp-id\"\r\n [id] = \"componentId\"\r\n class=\"isolation-menu\"\r\n [noBody]=\"noBody\"\r\n [isFocused]=\"isFocused\"\r\n [resizeEnabled]=\"false\"\r\n [focusSelector]=\"focusSelectorId\"\r\n [isVisible]=\"true\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n>\r\n <lib-bimplus-floating-bar-header-logo\r\n class=\"floating-bar-header-logo\"\r\n [parentId] = \"componentId\"\r\n [icon]=\"icon\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n >\r\n </lib-bimplus-floating-bar-header-logo>\r\n\r\n <lib-bimplus-floating-bar-header-content\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [parentId] = \"componentId\" \r\n class=\"floating-bar-header-content\"\r\n [items]=\"items\"\r\n (actionClicked)=\"actionClicked.emit($event)\"\r\n >\r\n </lib-bimplus-floating-bar-header-content>\r\n\r\n <lib-bimplus-floating-bar-dragger\r\n class=\"floating-bar-dragger\"\r\n [parentId] = \"componentId\"\r\n >\r\n </lib-bimplus-floating-bar-dragger>\r\n</lib-bimplus-floating-bar>\r\n","import { CommonModule } from '@angular/common';\nimport { Component, Input,OnInit } from '@angular/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\nimport { LayoutManagerItem, LayoutManagerService } from '../../services/layout-manager.service';\n\n@Component({\n selector: 'lib-bimplus-floating-bar-body',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ],\n templateUrl: './bimplus-floating-bar-body.component.html',\n styleUrl: './bimplus-floating-bar-body.component.less'\n})\nexport class BimplusFloatingBarBodyComponent extends BimplusLocalizedWidgetComponent implements OnInit{\n constructor(translateService: TranslateService,\n private layoutManagerService: LayoutManagerService\n ) {\n super(translateService)\n }\n\n @Input() isCollapsed: boolean = false;\n @Input() parentId: string = '';\n \n ngOnInit(){\n this.layoutManagerService.registeredItems$.subscribe((items: LayoutManagerItem[]) => {\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.parentId); \n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \n })\n }\n}\n\n\n","<div\n libDraggable\n class=\"floating-panel__body\"\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\n>\n <ng-content></ng-content>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, signal } from '@angular/core';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\n\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { ProjectNavigatorModel, ProjectNavigatorLayer } from './project-models.interface';\r\nimport { ExpansionPanelComponent } from '../expansion-panel/expansion-panel.component';\r\nimport { ExpansionPanelHeaderComponent } from '../expansion-panel-header/expansion-panel-header.component';\r\nimport { ExpansionPanelHeaderActionsComponent } from '../expansion-panel-header-actions/expansion-panel-header-actions.component';\r\n\r\n@Component({\r\n selector: 'lib-project-models',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ExpansionPanelComponent,\r\n ExpansionPanelHeaderComponent,\r\n ExpansionPanelHeaderActionsComponent,\r\n TranslateModule,\r\n ],\r\n templateUrl: './project-models.component.html',\r\n styleUrl: './project-models.component.less'\r\n})\r\nexport class ProjectModelsComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService) {\r\n super(translateService)\r\n }\r\n\r\n @Input() modelTreeRootTitle: string = \"_Divisions\";\r\n @Input() modelTreeRootName: string = \"_Divisions\";\r\n\r\n @Input() expandedModelTree: boolean = false;\r\n\r\n // List of models\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'models' }) set modelsValue(value: ProjectNavigatorModel[]) {\r\n this.models.set(value);\r\n }\r\n protected readonly models = signal<ProjectNavigatorModel[]>([]);\r\n\r\n @Output() clickedModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() clickedLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n\r\n @Output() toggleOpacityOfModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() toggleOpacityOfLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n\r\n @Output() toggleVisibilityOfModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() toggleVisibilityOfLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n}\r\n","<lib-expansion-panel\r\n class=\"project-navigator-model-panel\"\r\n [expanded]=\"expandedModelTree\"\r\n>\r\n <lib-expansion-panel-header [title]=\"modelTreeRootTitle\">\r\n <span class=\"project-navigator-root-node\">{{\r\n modelTreeRootName | translate\r\n }}</span>\r\n <lib-expansion-panel-header-actions>\r\n <!-- no action buttons for root -->\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <!-- Show all models also as expansion panels -->\r\n <!-- lib-bimplus-flat-tree can't be used for that at the moment -->\r\n @for(model of models(); track model) {\r\n <lib-expansion-panel\r\n class=\"project-navigator-model-panel\"\r\n [expanded]=\"model.isExpanded\"\r\n >\r\n <lib-expansion-panel-header>\r\n <span\r\n class=\"project-navigator-model-node\"\r\n [ngClass]=\"{\r\n visible: model.isVisible\r\n }\"\r\n [title]=\"model.name + ' (Rev: ' + model.currentRevision + ')'\"\r\n (click)=\"clickedModel.emit(model)\"\r\n (keypress)=\"clickedModel.emit(model)\"\r\n >\r\n {{ model.name }}\r\n </span>\r\n\r\n <lib-expansion-panel-header-actions>\r\n <div\r\n [attr.data-test]=\"'toggle_opacity_model_' + model.id\"\r\n class=\"ui-icon-transparency project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n opaque: model.isOpaque,\r\n transparent: !model.isOpaque,\r\n semiopaque: model.isSemiOpaque,\r\n }\"\r\n [title]=\"'_Toggle opacity' | translate\"\r\n (click)=\"toggleOpacityOfModel.emit(model)\"\r\n (keypress)=\"toggleOpacityOfModel.emit(model)\"\r\n ></div>\r\n\r\n <div\r\n [attr.data-test]=\"'toggle_visibility_model_' + model.id\"\r\n class=\"ui-icon-visibility project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n visible: model.isVisible,\r\n invisible: !model.isVisible,\r\n semivisible: model.isSemiVisible\r\n }\"\r\n [title]=\"'_Toggle visibility' | translate\"\r\n (click)=\"toggleVisibilityOfModel.emit(model)\"\r\n (keypress)=\"toggleVisibilityOfModel.emit(model)\"\r\n ></div>\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <!-- Content of panel -->\r\n <div\r\n class=\"project-navigator-layer-node\"\r\n *ngFor=\"let layer of model.layers\"\r\n >\r\n <div\r\n class=\"project-navigator-layer-node-name\"\r\n [attr.data-test]=\"'floating_bar_layer' + layer.id\"\r\n [ngClass]=\"{\r\n visible: layer.isVisible\r\n }\"\r\n [title]=\"layer.name | translate\"\r\n (click)=\"clickedLayer.emit(layer)\"\r\n (keypress)=\"clickedLayer.emit(layer)\"\r\n >\r\n {{ layer.name | translate }}\r\n </div>\r\n\r\n <div\r\n [attr.data-test]=\"'toggle_opacity_layer_' + layer.id\"\r\n class=\"ui-icon-transparency project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n opaque: layer.isOpaque,\r\n transparent: !layer.isOpaque\r\n }\"\r\n [title]=\"'_Toggle opacity' | translate\"\r\n (click)=\"toggleOpacityOfLayer.emit(layer)\"\r\n (keypress)=\"toggleOpacityOfLayer.emit(layer)\"\r\n ></div>\r\n\r\n <div\r\n [attr.data-test]=\"'toggle_visibility_layer_' + layer.id\"\r\n class=\"ui-icon-visibility project-navigator-action-buttons\"\r\n [ngClass]=\"{\r\n visible: layer.isVisible,\r\n invisible: !layer.isVisible\r\n }\"\r\n [title]=\"'_Toggle visibility' | translate\"\r\n (click)=\"toggleVisibilityOfLayer.emit(layer)\"\r\n (keypress)=\"toggleVisibilityOfLayer.emit(layer)\"\r\n ></div>\r\n </div>\r\n </lib-expansion-panel>\r\n }\r\n</lib-expansion-panel>\r\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'lib-bimplus-panel-toolbar',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './bimplus-panel-toolbar.component.html',\n styleUrl: './bimplus-panel-toolbar.component.less'\n})\nexport class BimplusPanelToolbarComponent {\n @Input() isPanelToolbarVisible: boolean = false;\n}\n","<div class=\"panel-toolbar\"\n [ngClass]=\"!isPanelToolbarVisible ? 'hidden' : ''\"\n>\n</div>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation, ElementRef,AfterViewChecked,AfterViewInit, ChangeDetectorRef, inject, DestroyRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { BimplusFloatingBarComponent } from '../bimplus-floating-bar/bimplus-floating-bar.component';\r\nimport { BimplusFloatingBarDraggerComponent } from '../bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component';\r\nimport { BimplusFloatingBarHeaderContentComponent } from '../bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component';\r\nimport { BimplusFloatingBarHeaderLogoComponent } from '../bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component';\r\nimport { BimplusFloatingBarBodyComponent } from '../bimplus-floating-bar-body/bimplus-floating-bar-body.component';\r\nimport { FloatingBarItem } from '../bimplus-floating-bar/bimplus-floating-bar.interface';\r\nimport { ProjectNavigatorModel, ProjectNavigatorLayer, ProjectNavigatorProject } from '../project-models/project-models.interface';\r\nimport { ProjectModelsComponent } from '../project-models/project-models.component';\r\nimport { BimplusPanelToolbarComponent } from '../bimplus-panel-toolbar/bimplus-panel-toolbar.component';\r\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component'\r\nimport { LayoutManagerItem, LayoutManagerService } from '../../services/layout-manager.service';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n\r\nconst DEFAULT_POSITION_LEFT = 355;\r\nconst DEFAULT_POSITION_TOP =20;\r\n@Component({\r\n selector: 'lib-bimplus-floating-bar-project-navigator',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n BimplusFloatingBarComponent,\r\n BimplusFloatingBarDraggerComponent,\r\n BimplusFloatingBarHeaderContentComponent,\r\n BimplusFloatingBarHeaderLogoComponent,\r\n BimplusFloatingBarBodyComponent,\r\n BimplusPanelToolbarComponent,\r\n ProjectModelsComponent,\r\n TranslateModule,\r\n BimplusScrollableContainerComponent\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-floating-bar-project-navigator.component.html',\r\n styleUrl: './bimplus-floating-bar-project-navigator.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusFloatingBarProjectNavigatorComponent extends BimplusLocalizedWidgetComponent implements AfterViewInit, AfterViewChecked {\r\n constructor(translateService: TranslateService,\r\n private readonly layoutManagerService: LayoutManagerService,\r\n private readonly element: ElementRef,\r\n private readonly cdr: ChangeDetectorRef) \r\n {\r\n super(translateService);\r\n }\r\n private hasViewChecked: boolean = false;\r\n \r\n\r\n // General bar handling\r\n @Input() noBody: boolean = false; // Project navigator has a body\r\n @Input() isCollapsed: boolean = false;\r\n @Input() noModelsMessage: string | undefined = undefined;\r\n @Input() isLoading: boolean = false;\r\n @Input() loadingDataMessage: string | undefined = undefined;\r\n \r\n icon = 'ui-icon-project-navigator';\r\n title: string = '_Project_navigator';\r\n componentId = 'project-navigator-fp-id';\r\n // Header content (like IFC export button)\r\n @Input() items: Array<FloatingBarItem> = [];\r\n\r\n @Output() actionClicked = new EventEmitter<string>();\r\n\r\n // Body content\r\n @Input() isPanelToolbarVisible: boolean = false;\r\n @Input() expandedModelTree: boolean = false;\r\n @Input() project: ProjectNavigatorProject = { id: \"\", name: \"\", teamSlug: \"\", models: [] };\r\n @Output() clickedModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() clickedLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n @Output() toggleOpacityOfModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() toggleOpacityOfLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n @Output() toggleVisibilityOfModel = new EventEmitter<ProjectNavigatorModel>();\r\n @Output() toggleVisibilityOfLayer = new EventEmitter<ProjectNavigatorLayer>();\r\n @Output() logoClicked = new EventEmitter<MouseEvent>(); \r\n destroyRef = inject(DestroyRef)\r\n\r\n ngAfterViewInit(){\r\n this.layoutManagerService.registerObject(this.element,this.componentId,'.floating-panel.visible',true,DEFAULT_POSITION_LEFT,DEFAULT_POSITION_TOP);\r\n \r\n this.layoutManagerService.registeredItems$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({next:(items: LayoutManagerItem[]) => {\r\n const layoutManagerItem = items.find((item: LayoutManagerItem) => item.id === this.componentId); \r\n this.isCollapsed = !!(layoutManagerItem?.isCollapsed); \r\n },complete: () => console.log('completed')});\r\n }\r\n // #region General bar handling \r\n\r\n ngAfterViewChecked() {\r\n //if (!this.hasViewChecked && !this.isCollapsed) {\r\n if (!this.hasViewChecked) { \r\n this.hasViewChecked = true; // Set the flag to prevent repeated execution\r\n this.cdr.detectChanges(); // Trigger change detection \r\n setTimeout(()=>{\r\n this.layoutManagerService.checkPosition(this.componentId,'.floating-panel.visible',undefined,0,0,true);\r\n });\r\n }\r\n }\r\n // #endregion\r\n}\r\n","<lib-bimplus-floating-bar\r\n id=\"project-navigator-fp-id\"\r\n [id] = \"componentId\"\r\n class=\"project-navigator-fp floating-panel\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [noBody]=\"noBody\" \r\n [resizeEnabled]=\"true\"\r\n [isVisible]=\"true\" \r\n>\r\n <lib-bimplus-floating-bar-header-logo\r\n class=\"floating-bar-header-logo\"\r\n [parentId] = \"componentId\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [icon]=\"icon\"\r\n [title]=\"title\" \r\n >\r\n </lib-bimplus-floating-bar-header-logo>\r\n\r\n <lib-bimplus-floating-bar-header-content\r\n class=\"floating-bar-header-content\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [items]=\"items\"\r\n (actionClicked)=\"actionClicked.emit($event)\" \r\n [parentId] = \"componentId\"\r\n >\r\n </lib-bimplus-floating-bar-header-content>\r\n\r\n <lib-bimplus-floating-bar-dragger\r\n class=\"floating-bar-dragger\"\r\n [parentId] = \"componentId\"\r\n >\r\n </lib-bimplus-floating-bar-dragger>\r\n\r\n <lib-bimplus-floating-bar-body\r\n class=\"floating-bar-body\"\r\n [parentId] = \"componentId\"\r\n >\r\n <lib-bimplus-panel-toolbar\r\n [isPanelToolbarVisible]=\"isPanelToolbarVisible\"\r\n ></lib-bimplus-panel-toolbar>\r\n\r\n @if(isLoading && loadingDataMessage){\r\n <span class=\"inline-message\" [innerHtml]=\"loadingDataMessage | translate\"></span>\r\n }\r\n @else{ \r\n @if(project.models.length === 0 && noModelsMessage){\r\n <span class=\"inline-message\" [innerHtml]=\"noModelsMessage | translate\"></span>\r\n }@else{\r\n <lib-bimplus-scrollable-container>\r\n <lib-project-models\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [models]=\"project.models\"\r\n [modelTreeRootTitle]=\"project.name + ' - ' + project.teamSlug\"\r\n [expandedModelTree]=\"expandedModelTree\"\r\n (clickedModel)=\"clickedModel.emit($event)\"\r\n (clickedLayer)=\"clickedLayer.emit($event)\"\r\n (toggleOpacityOfModel)=\"toggleOpacityOfModel.emit($event)\"\r\n (toggleOpacityOfLayer)=\"toggleOpacityOfLayer.emit($event)\"\r\n (toggleVisibilityOfModel)=\"toggleVisibilityOfModel.emit($event)\"\r\n (toggleVisibilityOfLayer)=\"toggleVisibilityOfLayer.emit($event)\"\r\n >\r\n </lib-project-models>\r\n </lib-bimplus-scrollable-container>\r\n }\r\n }\r\n </lib-bimplus-floating-bar-body>\r\n</lib-bimplus-floating-bar>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-language-menu',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './bimplus-language-menu.component.html',\r\n styleUrl: './bimplus-language-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusLanguageMenuComponent {\r\n\r\n _languagesList = [\r\n { symbol: \"cs\", text: \"Čeština\"},\r\n { symbol: \"de\", text: \"Deutsch\"},\r\n { symbol: \"en\", text: \"English (UK)\"},\r\n { symbol: \"us\", text: \"English (US)\"},\r\n { symbol: \"es\", text: \"Español\"},\r\n { symbol: \"fr\", text: \"Français\"},\r\n { symbol: \"it\", text: \"Italiano\"},\r\n { symbol: \"ru\", text: \"Русский\"},\r\n { symbol: \"ro\", text: \"Romana\"},\r\n { symbol: \"tr\", text: \"Türkçe\"}\r\n ];\r\n\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Input({ transform: booleanAttribute }) expandUp : boolean = false;\r\n _menuOpened : boolean = false;\r\n\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n _switchLanguage( language: string ){\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div \r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\" \r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n</div>\r\n<div data-test=\"language-menu-dropdown\"\r\n class=\"dropdown\" \r\n [ngClass]=\"_menuOpened ? 'open' : ''\" [ngClass]=\"isTouch ? 'is-touch' : ''\" \r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <div class=\"dropdown-toggle\" >\r\n <div class='main-icon icon-languages'></div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n\r\n <ul class= \"bimcomp-dropdown-menu\" [ngClass]=\"{'open':_menuOpened, 'expand-up':expandUp }\">\r\n <li [attr.data-test]=\"'langmenu_item_' + languageItem.text\" \r\n class=\"bimcomp-dropdown-menu-item\" \r\n [ngClass]=\"selectedLanguage === languageItem.symbol ? 'selected' : ''\" \r\n (click)=\"_switchLanguage(languageItem.symbol)\"\r\n (keypress)=\"_switchLanguage(languageItem.symbol)\"\r\n *ngFor=\"let languageItem of _languagesList\"\r\n >\r\n <span>{{languageItem.text}}</span>\r\n </li>\r\n </ul>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, booleanAttribute } from '@angular/core';\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { MenuListType } from '../../types/types';\r\n\r\nexport interface BimplusProjectMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-project-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-project-menu.component.html',\r\n styleUrl: './bimplus-project-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n\r\n})\r\nexport class BimplusProjectMenuComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService) {\r\n super(translateService)\r\n }\r\n\r\n\r\n @Input() projectName: string = \"\";\r\n @Input() projectImageUrl: string = \"\";\r\n @Input() projectExplorerUrl: string = \"\";\r\n @Input() projectActiveItem: string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled: boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute }) projectmembersVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible: boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible: boolean = true;\r\n\r\n @Input({ transform: booleanAttribute }) isCollapsed: boolean = false;\r\n @Input({ transform: booleanAttribute }) isMiniMode: boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch: boolean = false;\r\n @Input({ transform: booleanAttribute }) hideMenuIcons: boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons: boolean = false;\r\n @Input() menuItemsOrder : string[] = [];\r\n\r\n get prjImgUrl() {\r\n return this.projectImageUrl ? this.projectImageUrl : \"./assets/images/default/bimplus_Components_Project_Pic_Default.png\";\r\n }\r\n get backgroundValue() {\r\n return `linear-gradient(rgba(245, 245, 245, 0.8),rgba(245, 245, 245, 0.5) 25%, 75%, rgba(245, 245, 245, 0.8)), url(${this.projectImageUrl ? this.projectImageUrl : './assets/images/default/bimplus_Components_Project_Pic_Default.png'})`;\r\n }\r\n\r\n get prjImageOverlayStyle() {\r\n return { 'background': `${this.backgroundValue}` };\r\n }\r\n\r\n get prjImageStyle() {\r\n return { 'background': `url(${this.prjImgUrl})` };\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n * and also it serves as info topic id\r\n --------------------------------------------------------------------------*/\r\n _menuPrjList: MenuListType[] = [\r\n { action: \"projectmembers\", id: \"portalBimUsers\", type: \"\", class: \"bim-pm-icon-users\", textId: \"_Project_members_tooltip\", textIdDisabled: \"_Insufficient rights title\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"models\", id: \"portalBimModels\", type: \"\", class: \"bim-pm-icon-models\", textId: \"_Models_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"documents\", id: \"portalBimDocuments\", type: \"\", class: \"bim-pm-icon-documents\", textId: \"_Documents_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"projectsettings\", id: \"portalBimProjectSettings\", type: \"\", class: \"bim-pm-icon-project-settings\", textId: \"_Project_settings_tooltip\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" },\r\n { action: \"processes\", id: \"portalBimProcesses\", type: \"\", class: \"bim-pm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"\", disabledTitle: '', checkSubscription: false, devOrStageOnly: false, clickPolicy: \"\" }\r\n ];\r\n\r\n get menuItems() : MenuListType[] {\r\n return this._menuPrjList.sort((a, b) => this.menuItemsOrder.indexOf(a.id) - this.menuItemsOrder.indexOf(b.id));\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuListType): boolean {\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n\r\n return !((this as unknown as BimplusProjectMenuComponentAttribute)[key]);\r\n }\r\n return false;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item: MenuListType): boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Disabled`;\r\n return !!(this as unknown as BimplusProjectMenuComponentAttribute)[key];\r\n }\r\n return false;\r\n }\r\n\r\n\r\n _projectMenuItemClicked(action: string, param: string) {\r\n console.log(action, param);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n* item clicked\r\n--------------------------------------------------------------------------*/\r\n _menuItemClicked(item: MenuListType, type: string, event: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n console.log(item, type, event);\r\n\r\n\r\n if (type != \"info\") {\r\n if (this._isDisabled(item)) {\r\n return;\r\n }\r\n }\r\n const action = item.action;\r\n fireEvent(this, \"bimplusProjectMenuClicked\", { action, type });\r\n }\r\n\r\n _menuItemIgnoreAction(event: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n _getPrjItemClassAttributes(item: MenuListType, isTouch: boolean) {\r\n const retval: string = `${this._isDisabled(item) ? 'disabled' : ''} ${isTouch ? '' : 'hover-show-info'}`;\r\n return retval;\r\n }\r\n\r\n _getPrjIconClassAttributes(item: MenuListType) {\r\n const retval: string = `${item.class} ${item.action === this.projectActiveItem ? 'active' : ''} ${this._isDisabled(item) ? 'disabled' : ''}`;\r\n return retval;\r\n }\r\n}\r\n","<ng-template #prjList>\r\n@for(item of menuItems; track item.id){\r\n @if (!_isHidden(item)){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\"\r\n (click)=\"_menuItemClicked(item, 'normal',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'normal',$event)\"\r\n >\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'info',$event)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<ng-template #prjListThumbnail>\r\n@for(item of menuItems; track item.id){\r\n @if (!_isHidden(item) && (isCollapsed || item.action !== 'processes' )){\r\n <!--* prjList *-->\r\n <div class=\"bim-pm-prj-item\"\r\n [ngClass] = \"_getPrjItemClassAttributes(item,isTouch)\"\r\n [title]=\"((_isDisabled(item) && item.textIdDisabled) ? item.textIdDisabled : item.textId) | translate\"\r\n (dblclick)=\"_menuItemIgnoreAction($event)\"\r\n (click)=\"_menuItemClicked(item, 'normal',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'normal',$event)\"\r\n >\r\n <div\r\n class=\"bim-pm-prj-icon\"\r\n [ngClass] = \"_getPrjIconClassAttributes(item)\"\r\n >\r\n </div>\r\n <div class=\"bim-pm-app-item-info bim-pm-icon bim-pm-icon-info\"\r\n (click)=\"_menuItemClicked(item, 'info',$event)\"\r\n (keypress)=\"_menuItemClicked(item, 'info',$event)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n}\r\n</ng-template>\r\n\r\n<div class=\"bim-pm-prj-container\"\r\n [ngClass]=\"{ collapsed: isCollapsed, 'mini-mode': isMiniMode, 'is-touch': isTouch }\"\r\n >\r\n @if (isMiniMode && !isCollapsed) {\r\n <div class=\"bim-pm-prj-details-mini\">\r\n <div class=\"bim-pm-prj-image-bkg-mini\"\r\n [ngStyle]=\"prjImageOverlayStyle\">\r\n <div class=\"bim-pm-prj-image-thumbnail\" [ngStyle]=\"prjImageStyle\"></div>\r\n </div>\r\n <div class=\"bim-pm-prj-name-mini\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass]=\"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"prjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @else {\r\n <a href={{projectExplorerUrl}} class=\"bim-pm-prj-details\"\r\n [ngStyle]=\"prjImageOverlayStyle\"\r\n (dblclick)=\"_projectMenuItemClicked('prjimagedblclick','normal')\"\r\n (click)=\"_projectMenuItemClicked('prjimageclick','normal')\"\r\n [title]=\"'_ModelThumbnailTooltip' | translate\">\r\n\r\n <div class=\"bim-pm-prj-image\" [ngStyle]=\"prjImageStyle\">\r\n <div class=\"bim-pm-prj-items-overlay\" [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\">\r\n </div>\r\n <div\r\n class=\"bim-pm-prj-items-list\"\r\n [ngClass] = \"hideMenuIcons || showHorizontalMenuIcons ? 'hidden' : ''\"\r\n >\r\n @if (!hideMenuIcons && !showHorizontalMenuIcons){\r\n <ng-container *ngTemplateOutlet=\"prjListThumbnail\">\r\n </ng-container>\r\n }\r\n </div>\r\n <div class=\"bim-pm-prj-name\">\r\n {{projectName}}\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"bim-pm-prj-items-horizontal\"\r\n [ngClass] = \"showHorizontalMenuIcons ? '' : 'hidden'\">\r\n <div class=\"bim-pm-prj-items-list\">\r\n @if (showHorizontalMenuIcons) {\r\n <ng-container *ngTemplateOutlet=\"prjList\">\r\n </ng-container>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {BimplusProjectMenuComponent} from './../bimplus-project-menu/bimplus-project-menu.component';\r\nimport {MenuListType} from '../../types/types';\r\n\r\nconst MenuListTypeId = {\r\n PORTAL_TEAM_MANAGEMENT_BTN: 'portalTeamManagementBtn',\r\n PORTAL_PROPERTY_MANAGER_BTN: 'portalPropertyManagerBtn',\r\n PORTAL_BIM_USERS: 'portalBimUsers',\r\n PORTAL_BIM_MODELS: 'portalBimModels',\r\n PORTAL_BIM_DOCUMENTS: 'portalBimDocuments',\r\n PORTAL_BIM_PROJECT_SETTINGS: 'portalBimProjectSettings',\r\n PORTAL_BIM_PROCESSES: 'portalBimProcesses',\r\n DIVIDER_PROJECT_MANAGEMENT: 'dividerprojectmanagement',\r\n PORTAL_BIM_VIEWER_BTN: 'portalBimViewerBtn',\r\n PORTAL_CLOUD_VIEWER_BTN: 'portalCloudViewerBtn',\r\n PORTAL_CONNEXIS_BTN: 'portalConnexisBtn',\r\n PORTAL_BIM_AUTOCONVERTER_BTN: 'portalBimAutoconverterBtn',\r\n DIVIDERAPPS: 'dividerapps',\r\n PORTAL_ADD_INS_BTN: 'portalAddInsBtn',\r\n PORTAL_SHOP_BTN: 'portalShopBtn',\r\n PORTAL_GET_YOUR_TEAM_BTN: 'portalGetYourTeamBtn'\r\n} as const;\r\n\r\nexport interface BimplusMainMenuComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-main-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule,BimplusProjectMenuComponent],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-main-menu.component.html',\r\n styleUrl: './bimplus-main-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusMainMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges {\r\n constructor(translateService: TranslateService ){\r\n super(translateService)\r\n }\r\n\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isIpadApp : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input({ transform: booleanAttribute }) hideProjectMenuIcons : boolean = false;\r\n @Input({ transform: booleanAttribute }) showHorizontalMenuIcons : boolean = false;\r\n @Input() projectName : string = \"\";\r\n @Input() projectImageUrl : string = \"\";\r\n @Input() projectExplorerUrl : string = \"\";\r\n @Input() projectActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) projectmembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) modelsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) documentsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) projectsettingsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) processesDisabled : boolean = false;\r\n @Input() footerActiveItem : string = \"\";\r\n @Input() menuActiveItem : string = \"\";\r\n @Input({ transform: booleanAttribute }) isCollapsed : boolean = false;\r\n @Input({ transform: booleanAttribute }) showOverlay : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) autoconverterSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) connexisSubscribed : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) bimexplorerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) autoconverterDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) connexisDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) teammembersDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) propertymanagerDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) shopDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) addinsDisabled : boolean = false;\r\n @Input({ transform: booleanAttribute }) openProjectVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimplusProjectMenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectmembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) modelsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) documentsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) projectsettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) processesVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) bimexplorerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) autoconverterVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) connexisVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) teammembersVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) propertymanagerVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) shopVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) addinsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerprojectmanagementVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerappsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) getYourTeamVisible : boolean = false;\r\n @Input() appsWithInfo : string[] = [];\r\n @Input() appsOrder : string[] = [];\r\n @Input() menuItemsOrder : string[] = [];\r\n\r\n @Output() bimplusMainMenuClicked = new EventEmitter<{ action: string, type: string }>();\r\n @Output() bimplusMainMenuOverlayClicked = new EventEmitter<void>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue);\r\n }\r\n }\r\n\r\n get apps(): MenuListType[] {\r\n let appsList = this.appsList.sort((a, b) => this.appsOrder.indexOf(a.id) - this.appsOrder.indexOf(b.id));\r\n\r\n // if connexisVisible remove PORTAL_CONNEXIS_BTN.\r\n if (!this.connexisVisible) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_CONNEXIS_BTN);\r\n }\r\n\r\n // if teammembersDisabled remove PORTAL_TEAM_MANAGEMENT_BTN.\r\n if (this.teammembersDisabled) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN);\r\n }\r\n\r\n // if propertymanagerDisabled remove PORTAL_PROPERTY_MANAGER_BTN.\r\n if (this.propertymanagerDisabled) {\r\n appsList = appsList.filter(({ id }) => id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN);\r\n }\r\n\r\n // if isTouch remove property manager btn. & approvals btn.\r\n if(this.isTouch) {\r\n appsList = appsList.filter(({ id }) => \r\n id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN && \r\n id !== MenuListTypeId.PORTAL_BIM_PROCESSES\r\n );\r\n }\r\n\r\n if (!this.getYourTeamVisible) {\r\n return appsList;\r\n }\r\n\r\n // if there is no team then show only \"Get Your Team\" button\r\n return appsList.filter(({ id }) => \r\n id !== MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN && \r\n id !== MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN\r\n );\r\n }\r\n\r\n get footerList(): MenuListType[] {\r\n let footerList = this._menuFooterList.filter(item => this._isSubscribed(item) && !this._isHidden(item));\r\n\r\n // in case that \"Get Your Team\" is not visible and teammembers are disabled then remove divider first, or is not isTouch mode\r\n if (this.teammembersDisabled || !this.isTouch) {\r\n footerList = footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n // if team is assigned then remove \"Get Your Team\" button\r\n if (!this.getYourTeamVisible) {\r\n return footerList.filter(({ id }) => id !== MenuListTypeId.PORTAL_GET_YOUR_TEAM_BTN);\r\n }\r\n\r\n // remove divider if there is no \"Get Your Team\" button\r\n return footerList.filter(({ id }) => id !== MenuListTypeId.DIVIDERAPPS);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed\r\n --------------------------------------------------------------------------*/\r\n _isSubscribed(item:MenuListType):boolean {\r\n\r\n if (item.checkSubscription) {\r\n const key = `${item.action}Subscribed`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return true;\r\n }\r\n /**--------------------------------------------------------------------------\r\n * check if app is clickable\r\n --------------------------------------------------------------------------*/\r\n _isClickable(item:MenuListType):boolean {\r\n\r\n if (item.clickPolicy === \"noProjectNoSubscription\") {\r\n return this.projectName !== \"\";\r\n }\r\n return true;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is subscribed/visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item:MenuListType):boolean {\r\n\r\n if (item) {\r\n const key = `${item.action ? item.action : item.id}Visible`;\r\n return !((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n return false;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if app is disabled\r\n --------------------------------------------------------------------------*/\r\n _isDisabled(item:MenuListType) {\r\n const key = `${item.action}Disabled`;\r\n return !!((this as unknown as BimplusMainMenuComponentAttribute )[key]);\r\n }\r\n\r\n _getContextData(item: MenuListType, active: boolean, disabled: boolean, clickable: boolean, selected: boolean) {\r\n return {\r\n item: item,\r\n active: active,\r\n disabled: disabled,\r\n clickable: clickable,\r\n selected: selected,\r\n showInfoIcon: this.appsWithInfo.includes(item.id)\r\n };\r\n }\r\n\r\n _openPrjBtn:MenuListType = { action:\"openProject\", id:\"portalSelectProjectBtn\",type:\"\", class: \"bim-mm-icon-folder\", textId: \"_Portal_Menu_Open_Project\", textIdDisabled: \"_Portal_Menu_Open_Project\",disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"};\r\n\r\n contextData = {item:\"haha\",active:true,disabled:true,clickable:true,selected:true};\r\n\r\n\r\n appsList: MenuListType[] = [\r\n { action:\"projectmembers\", id: MenuListTypeId.PORTAL_BIM_USERS, type:\"\", class: \"bim-mm-icon-users\", textId: \"_projectStatisticsMembers\", textIdDisabled: \"_projectStatisticsMembers\", disabledTitle:\"_Insufficient rights title\",checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"models\", id: MenuListTypeId.PORTAL_BIM_MODELS, type:\"\",class: \"bim-mm-icon-models\", textId: \"_Divisions\", textIdDisabled: \"_Divisions\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"documents\", id: MenuListTypeId.PORTAL_BIM_DOCUMENTS, type:\"\",class: \"bim-mm-icon-documents\", textId: \"_Files\", textIdDisabled: \"_Files\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"projectsettings\", id: MenuListTypeId.PORTAL_BIM_PROJECT_SETTINGS, type:\"\",class: \"bim-mm-icon-project-settings\", textId: \"_Settings\", textIdDisabled: \"_Settings\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"processes\", id: MenuListTypeId.PORTAL_BIM_PROCESSES, type:\"\",class: \"bim-mm-icon-processes\", textId: \"_Approvals\", textIdDisabled: \"_Approvals\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"\",id: MenuListTypeId.DIVIDER_PROJECT_MANAGEMENT, type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"bimexplorer\", id: MenuListTypeId.PORTAL_BIM_VIEWER_BTN, type:\"\",class: \"bim-mm-icon-bim-explorer\", textId: \"_Portal_Menu_BIM_Explorer\", textIdDisabled: \"_Portal_Menu_BIM_Explorer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"cloudviewer\", id: MenuListTypeId.PORTAL_CLOUD_VIEWER_BTN, type:\"\",class: \"bim-mm-icon-cloud-viewer\", textId: \"_Model_Viewer\", textIdDisabled: \"_Model_Viewer\", disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"connexis\", id: MenuListTypeId.PORTAL_CONNEXIS_BTN, type:\"\",class: \"bim-mm-icon-connexis\", textId: \"_Connexis\", textIdDisabled: \"_Connexis\", disabledTitle:'',checkSubscription: false, devOrStageOnly : false, clickPolicy: \"noProjectNoSubscription\"},\r\n { action:\"autoconverter\", id: MenuListTypeId.PORTAL_BIM_AUTOCONVERTER_BTN, type:\"\",class: \"bim-mm-icon-autoconverter\", textId: \"_Autoconverter\", textIdDisabled: \"_Autoconverter\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false, clickPolicy: \"noProjectNoSubscription\"},\r\n\r\n { action:\"\",id: MenuListTypeId.DIVIDERAPPS, type:\"divider\", class: \"bim-mm-app-item-divider\", textId: \"\",textIdDisabled:\"\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"},\r\n\r\n { action:\"teammembers\", id: MenuListTypeId.PORTAL_TEAM_MANAGEMENT_BTN, type:\"\", class: \"bim-mm-icon-team-members\", textId: \"_Portal_Menu_Team_Members\", textIdDisabled: \"_Portal_Menu_Team_Members\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n { action:\"propertymanager\", id: MenuListTypeId.PORTAL_PROPERTY_MANAGER_BTN, type:\"\",class: \"bim-mm-icon-property-manager\", textId: \"_Portal_Menu_Properties\", textIdDisabled: \"_Portal_Menu_Properties\", disabledTitle:'',checkSubscription: true, devOrStageOnly : false,clickPolicy: \"\"},\r\n ];\r\n\r\n _menuFooterList: MenuListType[] = [\r\n { action:\"\",id: MenuListTypeId.DIVIDERAPPS, type:\"divider\", class: \"bim-mm-app-item-divider\",checkSubscription: false,devOrStageOnly : false } as MenuListType,\r\n { action:\"addins\", id: MenuListTypeId.PORTAL_ADD_INS_BTN, type:\"\", class: \"bim-mm-icon-add-ins\", textId: \"_AddIns\", textIdDisabled: \"_AddIns\", disabledTitle:'', checkSubscription: false, devOrStageOnly : false, clickPolicy: \"\"},\r\n { \r\n action:\"getYourTeam\", \r\n id: MenuListTypeId.PORTAL_GET_YOUR_TEAM_BTN,\r\n class: \"bim-mm-icon-get-your-team\", \r\n textId: \"_Get_Your_Team\", \r\n textIdDisabled: \"_Get_Your_Team\",\r\n } as MenuListType,\r\n { action:\"shop\", id: MenuListTypeId.PORTAL_SHOP_BTN, type:\"\",class: \"bim-mm-icon-shop\", textId: \"_Get_More\", textIdDisabled: \"_Get_More\",disabledTitle:'',checkSubscription: false,devOrStageOnly : false,clickPolicy: \"\"}\r\n ];\r\n\r\n _overlayClicked(){\r\n fireEvent(this, \"bimplusMainMenuOverlayClicked\");\r\n }\r\n\r\n _mainMenuItemClicked(item: MenuListType,type:string,event: Event | undefined ){\r\n if (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n if(type != \"info\") {\r\n if (this._isDisabled(item)){\r\n return;\r\n }\r\n }\r\n\r\n const action = item.action;\r\n fireEvent(this,\"bimplusMainMenuClicked\", {action,type:type } );\r\n }\r\n}\r\n","<ng-template #appItemContent let-contextData>\r\n @if (contextData.item.type === 'divider') {\r\n <div class=\"bim-mm-app-item\" [class]=\"contextData.item.class\" [id]=\"contextData.item.id\"></div>\r\n } @else {\r\n <div class=\"bim-mm-app-item\" [id]=\"contextData.item.id\"\r\n [ngClass]=\"isTouch?'':'hover-show-info '+(contextData.active?'active ':' ') +(contextData.disabled?'disabled ':' ')+(contextData.clickable?' ':'not-clickable ')+(contextData.selected?'selected ':' ')\"\r\n [title] =\"((contextData.disabled) ? (contextData.item.disabledTitle | translate) : '' )\"\r\n >\r\n <div class=\"bim-mm-app-item-details\"\r\n [ngClass] = \" contextData.clickable ? '' : 'not-clickable' \"\r\n (click)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\"\r\n (keypress)=\"_mainMenuItemClicked(contextData.item,'normal',$event)\">\r\n <div class=\"bim-mm-icon\"\r\n [ngClass]=\"contextData.item.class + (contextData.active?' active':'') + (contextData.disabled?' disabled ':'')\">\r\n </div>\r\n <span>{{(contextData.isDisabled && (contextData.item.textIdDisabled !==\"\") ? contextData.item.textIdDisabled : contextData.item.textId) | translate}}</span>\r\n </div>\r\n @if(contextData.showInfoIcon){\r\n <div class=\"bim-mm-app-item-info bim-mm-icon bim-mm-icon-info\"\r\n (click)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\"\r\n (keypress)=\"_mainMenuItemClicked(contextData.item, 'info',$event)\">\r\n </div>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n<div \r\n class=\"bim-mm-wrapper\" \r\n [ngClass]=\"showOverlay ? 'bim-mm-overlay' : ''\" \r\n (click)=\"_overlayClicked()\"\r\n (keypress)=\"_overlayClicked()\"\r\n >\r\n <div class= \"bim-mm-container\">\r\n @if(!_isHidden(_openPrjBtn)){\r\n <ng-container\r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(_openPrjBtn,projectActiveItem === 'projectlist',_isDisabled(_openPrjBtn),true,projectActiveItem === 'projectlist') }\"\r\n ></ng-container>\r\n }\r\n\r\n @if(bimplusProjectMenuVisible){\r\n <lib-bimplus-project-menu\r\n projectName = {{projectName}}\r\n projectImageUrl = {{projectImageUrl}}\r\n projectExplorerUrl = {{projectExplorerUrl}}\r\n projectActiveItem = {{projectActiveItem}}\r\n projectmembersDisabled = {{projectmembersDisabled}}\r\n modelsDisabled = {{modelsDisabled}}\r\n documentsDisabled = {{documentsDisabled}}\r\n projectsettingsDisabled = {{projectsettingsDisabled}}\r\n processesDisabled = {{processesDisabled}}\r\n projectmembersVisible = {{projectmembersVisible}}\r\n modelsVisible = {{modelsVisible}}\r\n documentsVisible = {{documentsVisible}}\r\n projectsettingsVisible = {{projectsettingsVisible}}\r\n processesVisible = {{processesVisible}}\r\n isCollapsed = {{isCollapsed}}\r\n isMiniMode = {{isTouch}}\r\n isTouch = {{isTouch}}\r\n hideMenuIcons = {{hideProjectMenuIcons}}\r\n showHorizontalMenuIcons = {{showHorizontalMenuIcons}}\r\n [menuItemsOrder]=\"menuItemsOrder\"\r\n ></lib-bimplus-project-menu>\r\n }\r\n <div [ngClass]=\"apps.length || footerList.length ? 'bim-mm-apps-container' : ''\">\r\n <div class=\"bim-mm-apps-list\">\r\n <div *ngFor=\"let appItem of apps\">\r\n <ng-container\r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(appItem,!_isSubscribed(appItem),_isDisabled(appItem),_isClickable(appItem),menuActiveItem === appItem.action)}\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n <div class=\"bim-mm-footer-container\">\r\n <div *ngFor=\"let footerItem of footerList\">\r\n <ng-container\r\n *ngTemplateOutlet=\"appItemContent; context: { $implicit: _getContextData(footerItem,footerActiveItem === footerItem.action,_isDisabled(footerItem),true,false)}\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","export enum LogoState {\r\n BimplusViewer = 'bimplusViewer', // Bimplus logo\r\n ModelViewerBlack = 'modelViewerBlack', // Model viewer black logo\r\n ModelViewer = 'modelViewer', // Cloud viewer logo\r\n ConnexisViewer = 'connexisViewer', // Connexis viewer logo\r\n ConnexisViewerBlack = 'connexisViewerBlack' // Connexis viewer logo (black)\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, signal, computed } from '@angular/core';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { LogoState } from './logo-state.enum';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-navbar',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './bimplus-navbar.component.html',\r\n styleUrl: './bimplus-navbar.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusNavbarComponent {\r\n @Input() projectInfo : string = \"\";\r\n @Input() teamInfo : string = \"\";\r\n @Input({ transform: booleanAttribute }) isDev : boolean = false;\r\n @Input({ transform: booleanAttribute }) isStage : boolean = false;\r\n @Input() teamInfoOffset : string = \"\";\r\n @Input({ transform: booleanAttribute }) isNavbarMenuVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarInfoVisible : boolean = false;\r\n // Private signal for logoState\r\n private _logoState = signal<LogoState>(LogoState.BimplusViewer);\r\n // Input setter to update the private signal when logoState is set externally\r\n @Input() set logoState(newState: LogoState) {\r\n this._logoState.set(newState);\r\n }\r\n // Getter for logoState to access the current value\r\n get logoState(): LogoState {\r\n return this._logoState();\r\n }\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'isModelViewerActive', transform: booleanAttribute }) set isModelViewerActiveValue(value: boolean) {\r\n this.isModelViewerActive.set(value);\r\n }\r\n protected readonly isModelViewerActive = signal<boolean>(false);\r\n // @Input({ transform: booleanAttribute }) isConnexisViewerActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMessageVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuActive : boolean = false;\r\n @Input({ transform: booleanAttribute }) isNavbarMenuEnabled : boolean = true;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) isDashboardTooltipEnabled: boolean = true;\r\n @Input() selectedLanguage : string = \"en\";\r\n @Output() bimplusNavbarClicked = new EventEmitter<string>();\r\n\r\n // Make the enum available in the template\r\n public LogoState = LogoState;\r\n\r\n protected readonly logoStateSignal = computed<LogoState>(() => {\r\n if (this.isModelViewerActive()) {\r\n return LogoState.ModelViewerBlack;\r\n }\r\n\r\n return this._logoState();\r\n });\r\n\r\n _menuClicked() {\r\n if ( this.isNavbarMenuEnabled ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"menu\");\r\n }\r\n }\r\n\r\n _logoClicked() {\r\n if (this.logoStateSignal() === LogoState.BimplusViewer) {\r\n // Fire only an event for BimplusViewer\r\n fireEvent(this, \"bimplusNavbarClicked\", \"logo\");\r\n }\r\n }\r\n\r\n _projectInfoClicked() {\r\n if ( this.isDev ) {\r\n fireEvent(this, \"bimplusNavbarClicked\", \"project\");\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"bimplus-navbar\"\r\n [ngClass]=\"isTouch ? 'is-touch' : ''\"\r\n>\r\n <div class=\"bimplus-navbar-logo-container\">\r\n <div\r\n class=\"bimplus-logo\"\r\n [ngClass]=\"{\r\n 'model-viewer': logoStateSignal() === LogoState.ModelViewer,\r\n 'model-viewer-black': logoStateSignal() === LogoState.ModelViewerBlack,\r\n 'connexis-viewer': logoStateSignal() === LogoState.ConnexisViewer,\r\n 'connexis-viewer-black': logoStateSignal() === LogoState.ConnexisViewerBlack,\r\n 'burger-menu-not-visible': !isNavbarMenuVisible\r\n }\"\r\n (click)=\"_logoClicked()\"\r\n (keypress)=\"_logoClicked()\"\r\n [title]=\"(isDashboardTooltipEnabled ? '_dashboard_tooltip' : '') | translate\"\r\n ></div>\r\n\r\n <div\r\n class=\"bimplus-navbar-menu icon\"\r\n [ngClass]=\"{'active':isNavbarMenuActive, 'hidden': !isNavbarMenuVisible, 'disabled': !isNavbarMenuEnabled}\"\r\n (click)=\"_menuClicked()\"\r\n (keypress)=\"_menuClicked()\"\r\n ></div>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-container\">\r\n <div\r\n class=\"bimplus-navbar-info\"\r\n [ngClass]=\"{'hidden': !isNavbarInfoVisible}\"\r\n [style.margin-left]=\"teamInfoOffset\"\r\n >\r\n <span class=\"team\">{{teamInfo}}</span>\r\n <span *ngIf=\"projectInfo && !isTouch\">&nbsp;&nbsp; -&nbsp;&nbsp;</span>\r\n <span\r\n class=\"project\"\r\n [ngClass]=\"isDev ? 'clickable' : ''\"\r\n (click)=\"_projectInfoClicked()\"\r\n (keypress)=\"_projectInfoClicked()\"\r\n >\r\n {{projectInfo}}\r\n </span>\r\n </div>\r\n\r\n <div class=\"bimplus-navbar-slot\">\r\n <slot></slot>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n booleanAttribute,\n OnChanges,\n SimpleChanges,\n OnInit,\n HostBinding\n} from '@angular/core';\nimport { fireEvent } from '../../utils/utils';\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component';\n\nconst BIMPLUS_NOTIFY_MESSAGES = \"bimplus-notify-messages\";\ninterface MessageModel {\n 'id': string | undefined,\n 'type': string | undefined,\n 'title': string | undefined,\n 'text': string | undefined,\n 'link': string | undefined,\n 'linkText': string | string[] | undefined,\n 'links': string[] | undefined,\n 'actionId': number | undefined,\n 'capitalizedTitle': string | boolean | undefined\n}\n@Component({\n selector: 'lib-bimplus-notify',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n BimplusScrollableContainerComponent\n ],\n providers : [TranslateService],\n templateUrl: './bimplus-notify.component.html',\n styleUrl: './bimplus-notify.component.less',\n encapsulation: ViewEncapsulation.None\n})\nexport class BimplusNotifyComponent extends BimplusLocalizedWidgetComponent implements OnChanges, OnInit{\n constructor(translateService: TranslateService){\n super(translateService)\n }\n // Expose Array constructor as a property\n Array = Array;\n \n @HostBinding('class.new-messages')\n get newMessages() {\n return this._alertActive;\n }\n\n @HostBinding('class.bim-notify')\n get bimNotify() {\n return true; // Or you can use a condition here if needed\n }\n\n /**--------------------------------------------------------------------------\n * List of messages\n --------------------------------------------------------------------------*/\n _messagesList: MessageModel[] = [];\n\n /**--------------------------------------------------------------------------\n * properties\n --------------------------------------------------------------------------*/\n @Input() messagePreviewTime : number = 3000; // in ms\n\n /**--------------------------------------------------------------------------\n * properties\n --------------------------------------------------------------------------*/\n @Input({ transform: booleanAttribute }) showMessagePreview : boolean = true;\n\n /**--------------------------------------------------------------------------\n * properties\n --------------------------------------------------------------------------*/\n @Input() previewMessagesLimit : number = 3;\n\n /**--------------------------------------------------------------------------\n * offset of preview messages from main icon\n --------------------------------------------------------------------------*/\n @Input() previewMessagesOffsetY : string = '2.7em';\n\n /**--------------------------------------------------------------------------\n * properties\n --------------------------------------------------------------------------*/\n @Input() messages : string = '';\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['messages']) {\n const newValue = changes['messages'].currentValue;\n this.updateMessages(newValue);\n }\n }\n\n updateMessages(newValue: string /*, oldValue: string*/) {\n const isOk = newValue && typeof newValue === 'string';\n if (!isOk) {\n this._messagesList = [];\n this._previewMessagesList = [];\n this._alertActive = false;\n return;\n }\n\n const msgData = JSON.parse(newValue);\n this._messagesList = msgData.messages;\n\n // filter new messages into the list for preview\n let newMessagesList = this._messagesList.filter( (msg) => this._oldMessagesList.findIndex( (oldMsg) => oldMsg.id === msg.id ) < 0 );\n newMessagesList = newMessagesList.filter( (item) => this._messageNotReadYet(item)); // filtering out allready read messages (stored in localstorage)\n\n // setup preview for new messages\n newMessagesList.reverse().forEach( (newMsg) => {\n if ( this._previewMessagesList.findIndex( (item) => newMsg.id === item.id ) < 0){\n this._previewMessagesList.unshift(newMsg);\n\n if( this.messagePreviewTime > 0 ) {\n setTimeout(() => {\n this._closePreviewMessage(newMsg.id, false);\n }, this.messagePreviewTime);\n }\n }\n })\n\n // limit preview messages count\n this._previewMessagesList.length = this._previewMessagesList.length > this.previewMessagesLimit ? this.previewMessagesLimit : this._previewMessagesList.length;\n\n // set old state and alert\n this._oldMessagesList = this._messagesList;\n this._alertActive = this._messagesList.length != 0;\n }\n\n /**--------------------------------------------------------------------------\n * States\n --------------------------------------------------------------------------*/\n _menuOpened: boolean = false;\n _alertActive: boolean = false;\n _oldMessagesList: MessageModel[] = [];\n // list of messages for preview\n _previewMessagesList: MessageModel[] = [];\n\n\n /**--------------------------------------------------------------------------\n * Delete item event\n --------------------------------------------------------------------------*/\n @Output() bimplusNotifyDeleteMessage = new EventEmitter<string>();\n\n /**--------------------------------------------------------------------------\n * Delete all item event\n --------------------------------------------------------------------------*/\n @Output() bimplusNotifyDeleteAllMessages = new EventEmitter<string>();\n\n /**--------------------------------------------------------------------------\n * Message action event\n --------------------------------------------------------------------------*/\n @Output() bimplusNotifyMessageAction = new EventEmitter<string>();\n\n /**--------------------------------------------------------------------------\n * initial component load\n --------------------------------------------------------------------------*/\n ngOnInit(): void {\n this.updateMessages(this.messages);\n }\n\n /**--------------------------------------------------------------------------\n * close single message\n --------------------------------------------------------------------------*/\n _closeMessage( item: MessageModel, preview: boolean, event: Event | undefined ){\n if (preview) {\n return this._closePreviewMessage(item.id);\n }\n\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n fireEvent(this, \"bimplusNotifyDeleteMessage\", JSON.stringify(item));\n }\n\n /**--------------------------------------------------------------------------\n * close preview message\n --------------------------------------------------------------------------*/\n _closePreviewMessage( msgId: string | undefined, closedByUser = true ){\n if (!msgId) {\n return;\n }\n\n this._previewMessagesList = this._previewMessagesList.filter( (msg) => msg.id !== msgId );\n this.storeMessagesAsRead([msgId]);\n if ( closedByUser && this._previewMessagesList.length === 0 ){\n this._alertActive = false;\n }\n }\n\n /**--------------------------------------------------------------------------\n * close all messages\n --------------------------------------------------------------------------*/\n _deleteAllMessages(){\n fireEvent(this, \"bimplusNotifyDeleteAllMessages\");\n this.clearAllLocalStorageMessages();\n }\n\n /**--------------------------------------------------------------------------\n * message clicked\n --------------------------------------------------------------------------*/\n _messageAction( item: MessageModel, index: number ){\n item.actionId = index;\n fireEvent(this, \"bimplusNotifyMessageAction\", JSON.stringify(item));\n }\n\n /**--------------------------------------------------------------------------\n * toggle menu open\n --------------------------------------------------------------------------*/\n _toggleOpened(){\n this._menuOpened = !this._menuOpened;\n this._alertActive = false;\n this._previewMessagesList = [];\n }\n\n _messageNotReadYet(message: MessageModel){\n if(!message?.id){\n return true;\n }\n const messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\n if(!messageListString){\n return true;\n }\n return !messageListString.includes(message.id);\n }\n\n storeMessagesAsRead(messageList: string[]){\n if(!messageList || messageList.length <1){\n return;\n }\n let messageListString = window.localStorage.getItem(BIMPLUS_NOTIFY_MESSAGES);\n if(!messageListString){\n messageListString = \"\";\n }\n messageList.forEach((item: string)=>{\n if(!messageListString?.includes(item)){\n messageListString+=(item+\";\");\n }\n })\n window.localStorage.setItem(BIMPLUS_NOTIFY_MESSAGES,messageListString);\n }\n\n clearAllLocalStorageMessages(){\n window.localStorage.removeItem(BIMPLUS_NOTIFY_MESSAGES);\n }\n\n /**--------------------------------------------------------------------------\n * get item link title\n --------------------------------------------------------------------------*/\n _getItemLinkTitle( item: MessageModel, index: number ){\n let itemLinksTitles: (string | undefined)[] = [];\n if ( item.linkText && (item.links || item.link)) {\n itemLinksTitles = Array.isArray(item.links) ? item.links : [item.link];\n }\n return itemLinksTitles[index] ?? '';\n }\n}\n","<div\n class=\"dropdown\"\n [ngClass]=\"_menuOpened ? 'open' : ''\"\n (click)=\"_toggleOpened()\"\n (keypress)=\"_toggleOpened()\"\n [title]=\"'_BimplusNotifyTitle' | translate\"\n>\n <div class=\"dropdown-toggle\" >\n <div\n class=\"main-icon\"\n [ngClass]=\"'icon-notify' + (this._alertActive ? '-alert notify' : '')\"\n ></div>\n </div>\n\n <div\n class=\"bimcomp-dropdown-menu\"\n [ngClass]=\"_menuOpened ? 'open' : ''\"\n >\n <div class=\"notify-tick\"></div>\n <div class=\"messages-title\">\n <div class=\"messages-count\">\n ({{this._messagesList.length}})\n </div>\n <div\n class=\"messages-delete-all\"\n (click)=\"_deleteAllMessages()\"\n (keypress)=\"_deleteAllMessages()\"\n >\n {{\"_Notify_Mark_All\" | translate}}\n </div>\n </div>\n <div class=\"messages-container\">\n @if (_messagesList.length) {\n <lib-bimplus-scrollable-container>\n <div\n *ngFor=\"let item of _messagesList\"\n class=\"message-item\"\n >\n <div class=\"message-item-title\">\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\n <div\n class=\"message-item-title-text\"\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\n >\n {{item.title}}\n </div>\n <div\n class=\"message-item-icon-close\"\n (click)=\"_closeMessage(item, false, $event)\"\n (keypress)=\"_closeMessage(item, false, $event)\"\n ></div>\n </div>\n \n <div class=\"message-item-body-text\">{{item.text}}</div>\n @if (item.linkText) {\n <div\n *ngFor=\"let link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); let i = index\"\n class=\"message-item-link\"\n [title]=\"_getItemLinkTitle(item, i)\"\n (click)=\"_messageAction(item, i)\"\n (keypress)=\"_messageAction(item, i)\"\n >{{link}}</div>\n }\n </div>\n </lib-bimplus-scrollable-container>\n } @else {\n <div class=\"message-item-empty\">\n <div class=\"message-item-empty-icon\"></div>\n <div class=\"message-item-empty-text\">{{\"_Notify_No_Messages\" | translate}}</div>\n </div>\n }\n </div>\n </div>\n</div>\n\n<div\n class=\"bimcomp-overlay\"\n [ngClass]=\"_menuOpened ? 'open' : ''\"\n (click)=\"_toggleOpened()\"\n (keypress)=\"_toggleOpened()\"\n></div>\n\n<div\n class=\"bimcomp-messages-preview\"\n [ngClass]=\"(showMessagePreview && !_menuOpened && _previewMessagesList.length > 0) ? 'visible' : ''\"\n [style.top]=\"previewMessagesOffsetY\"\n>\n <div class=\"messages-container-preview\">\n <div\n *ngFor=\"let item of _previewMessagesList\"\n class=\"message-item\"\n >\n <div class=\"message-item-title\">\n <div [ngClass]=\"'message-item-icon-' + item.type\"></div>\n <div\n class=\"message-item-title-text\"\n [ngClass]=\"{'capitalize':item.capitalizedTitle}\"\n >\n {{item.title}}\n </div>\n <div\n class=\"message-item-icon-close\"\n (click)=\"_closeMessage(item, true, $event)\"\n (keypress)=\"_closeMessage(item, true, $event)\"\n ></div>\n </div>\n\n <div class=\"message-item-body-text\">\n {{item.text}}\n </div>\n @if (item.linkText) {\n <div\n *ngFor=\"let link of (item.linkText.constructor === Array ? item.linkText : [item.linkText]); let i = index\"\n class=\"message-item-link\"\n [title]=\"_getItemLinkTitle(item, i)\"\n (click)=\"_messageAction(item, i)\"\n (keypress)=\"_messageAction(item, i)\"\n >{{link}}</div>\n }\n </div>\n </div>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'pxsuffix',\r\n standalone: true\r\n})\r\nexport class PxsuffixPipe implements PipeTransform {\r\n\r\n transform(input: number): string{ //string type\r\n return input + 'px';\r\n } \r\n\r\n}\r\n","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\nimport { fireEvent } from '../utils/utils';\r\n\r\n@Directive({\r\n selector: '[xDraggable]',\r\n standalone: true\r\n})\r\nexport class XDraggableDirective {\r\n\r\n oldX = 0;\r\n isDragging = false;\r\n wasDragging = false;\r\n isMouseDown = false;\r\n\r\n @Output()\r\n dragging = new EventEmitter<number>();\r\n\r\n @Output()\r\n clicked = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this.isDragging && !this.isMouseDown) {\r\n return;\r\n }\r\n\r\n const deltaX = (event.clientX - this.oldX);\r\n\r\n if(!this.isDragging){\r\n if(Math.abs(deltaX) > 2){\r\n this.isDragging = true;\r\n this.wasDragging = true;\r\n }else{\r\n return;\r\n }\r\n }\r\n\r\n fireEvent(this, \"dragging\", deltaX);\r\n\r\n this.oldX = event.clientX;\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n onMouseUp() {\r\n this.isDragging = false;\r\n this.isMouseDown = false;\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n this.isMouseDown = true;\r\n this.wasDragging = false;\r\n this.oldX = event.clientX;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onMouseClick(event: MouseEvent) {\r\n if(!this.wasDragging){\r\n fireEvent(this, \"clicked\", event);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewEncapsulation, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PxsuffixPipe } from '../../pipes/pxsuffix.pipe';\r\nimport { XDraggableDirective } from '../../directives/x-draggable.directive'\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface SidenavItem{\r\n id : string;\r\n icon? : string;\r\n iconActive? : string;\r\n iconDisabled? : string;\r\n text : string;\r\n disabled? : boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-sidenav',\r\n standalone: true,\r\n imports: [CommonModule, PxsuffixPipe, XDraggableDirective, TranslateModule],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-sidenav.component.html',\r\n styleUrl: './bimplus-sidenav.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class BimplusSidenavComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService);\r\n }\r\n\r\n// #region public fields\r\n readonly activeItem = signal<string>('');\r\n readonly drawerWidth = signal<number>(300);\r\n readonly drawerExpanded = signal(true);\r\n\r\n @Output() activeItemChanged = new EventEmitter<string>();\r\n @Output() actionClicked = new EventEmitter<string>();\r\n @Output() footerClicked = new EventEmitter<string>();\r\n\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'items' }) set itemsValue(value: Array<SidenavItem>) {\r\n this.items.set(value);\r\n if(value.length){\r\n this._activateItem(value[0].id);\r\n }\r\n }\r\n protected readonly items = signal<SidenavItem[]>([]);\r\n\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'actionItems' }) set actionItemsValue(value: Array<SidenavItem>) {\r\n this.actionItems.set(value);\r\n }\r\n protected readonly actionItems = signal<SidenavItem[]>([]);\r\n\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'footerItem' }) set footerItemValue(value: SidenavItem | null) {\r\n this.footerItem.set(value);\r\n }\r\n protected readonly footerItem = signal<SidenavItem | null>(null);\r\n// #endregion public fields\r\n\r\n// #region public methods\r\n _activateItem(item : string){\r\n this.activeItem.set(item);\r\n const foundItem = this.items().find(x => x.id == item);\r\n if(!foundItem){\r\n return;\r\n }\r\n\r\n if(!this.drawerExpanded()){\r\n this._toggleDrawer();\r\n }\r\n fireEvent(this, \"activeItemChanged\", item);\r\n }\r\n\r\n _clickAction(item : string){\r\n fireEvent(this, \"actionClicked\", item);\r\n }\r\n\r\n _clickFooter(item : string){\r\n fireEvent(this, \"footerClicked\", item);\r\n }\r\n\r\n _toggleDrawer(){\r\n this.drawerExpanded.update(value => !value);\r\n }\r\n\r\n _onResizeWidth(event : number): void {\r\n const deltaX = event;\r\n this.drawerWidth.update(value => (value + deltaX));\r\n }\r\n // #endregion public methods\r\n}\r\n","\r\n<div class=\"sidenav\">\r\n @for (sideNavItem of items(); track sideNavItem) {\r\n <div class=\"sidenav-row\">\r\n @if (sideNavItem.disabled) {\r\n <div\r\n [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\"\r\n class=\"sidenav-item\"\r\n [style.background]=\"' no-repeat center center url(' + sideNavItem.iconDisabled + ')'\"\r\n [title]=\"sideNavItem.text | translate\"\r\n (keypress)=\"_toggleDrawer()\"\r\n >\r\n </div>\r\n } @else {\r\n @if (activeItem() === sideNavItem.id) {\r\n <div\r\n [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\"\r\n class=\"sidenav-item\"\r\n [style.background]=\"' no-repeat center center url(' + sideNavItem.iconActive + ')'\"\r\n (click)=\"_toggleDrawer()\"\r\n (keypress)=\"_toggleDrawer()\"\r\n [title]=\"sideNavItem.text | translate\"\r\n >\r\n </div>\r\n } @else {\r\n <div\r\n [attr.data-test]=\"'sidenav_item_' + sideNavItem.id\" class=\"sidenav-item\"\r\n [style.background]=\"' no-repeat center center url(' + sideNavItem.icon + ')'\"\r\n (click)=\"_activateItem(sideNavItem.id)\"\r\n (keypress)=\"_activateItem(sideNavItem.id)\"\r\n [title]=\"sideNavItem.text | translate\"\r\n >\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n @if (actionItems().length) {\r\n <div class=\"sidenav-separator\"></div>\r\n @for(actionItem of actionItems(); track actionItem) {\r\n <div class=\"sidenav-row\">\r\n <div\r\n [attr.data-test]=\"'sidenav_action_item_' + actionItem.id\"\r\n class=\"sidenav-item\" [style.background]=\"' no-repeat center center url(' + actionItem.icon + ')'\"\r\n (click)=\"_clickAction(actionItem.id)\"\r\n (keypress)=\"_clickAction(actionItem.id)\"\r\n [title]=\"actionItem.text | translate\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n }\r\n @if (footerItem(); as footerItem) {\r\n <div class=\"sidenav-row-footer\">\r\n <div\r\n [attr.data-test]=\"'sidenav_footer_item_' + footerItem.id\"\r\n class=\"sidenav-item\"\r\n [style.background]=\"' no-repeat center center url(' + footerItem.icon + ')'\"\r\n (click)=\"_clickFooter(footerItem.id)\"\r\n (keypress)=\"_clickFooter(footerItem.id)\"\r\n >\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div\r\n class=\"sidenav-drawer\"\r\n [style.width]=\"drawerWidth() | pxsuffix\"\r\n [ngClass]=\"drawerExpanded() ? '' : 'hidden'\"\r\n>\r\n <slot></slot>\r\n @if (drawerExpanded()) { \r\n <div xDraggable\r\n class=\"sidenav-resize-border-right\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n >\r\n </div>\r\n <div xDraggable\r\n data-test=\"sidenav-resize-handle\"\r\n class=\"sidenav-resize-handle-left\"\r\n (dragging)=\"_onResizeWidth($event)\"\r\n (clicked)=\"_toggleDrawer()\"\r\n >\r\n </div>\r\n }\r\n</div>\r\n@if (!drawerExpanded()) { \r\n <div\r\n data-test=\"sidenav-resize-handle\"\r\n class =\"sidenav-resize-handle-left collapsed\"\r\n (click)=\"_toggleDrawer()\"\r\n (keypress)=\"_toggleDrawer()\"\r\n >\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, signal } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-storage-info',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-storage-info.component.html',\r\n styleUrl: './bimplus-storage-info.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusStorageInfoComponent extends BimplusLocalizedWidgetComponent{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'usedStorage' }) set usedStorageValue(value: number) {\r\n this.usedStorage.set(value);\r\n }\r\n protected readonly usedStorage = signal<number>(0);\r\n\r\n\r\n @Output() bimplusStorageInfoClicked = new EventEmitter<string>();\r\n\r\n /**--------------------------------------------------------------------------\r\n * clicked storage info container\r\n --------------------------------------------------------------------------*/\r\n _infoClicked( action: string ){\r\n fireEvent(this, \"bimplusStorageInfoClicked\", action);\r\n }\r\n}\r\n","<div\r\n class=\"storage-info\"\r\n (click)=\"_infoClicked('storageInfo')\"\r\n (keypress)=\"_infoClicked('storageInfo')\"\r\n>\r\n <span class=\"progress-title\">\r\n {{\"_Common_Data_Environment_Quota\" | translate}}\r\n <span class=\"progress-text\" data-test=\"used-storage\">\r\n {{usedStorage()}}%\r\n </span>\r\n </span>\r\n <div class=\"storage-info-bar-container\">\r\n <div \r\n class=\"storage-info-bar\"\r\n [ngClass]=\"{\r\n 'red': usedStorage() >= 90,\r\n 'yellow': usedStorage() >= 80 && usedStorage() < 90,\r\n 'green': usedStorage() < 80\r\n }\"\r\n [style.width]=\"usedStorage() + '%'\"\r\n [style.max-width]=\"usedStorage() + '%'\"\r\n ></div>\r\n </div>\r\n</div>","import { ToolHubVisualSettings, ToolHubItemUnits } from './bimplus-tool-hub.interface';\n\nconst RAD_DEG : number = Math.PI / 180.0;\nconst PI2 : number = 2 * Math.PI;\n\n\nexport class SVGGenerator {\n\n // Constants for drawing arc\n /**\n * @param {Array.<Number>} center\n * @param {Number} R\n * @param {Number} angle\n * @return {Array.<Number>}\n */\n static pointOnArc(center: [number,number], R: number, angle: number) : [number, number] {\n const radians = (angle - 90) * RAD_DEG;\n\n return [center[0] + R * Math.cos(radians), center[1] + R * Math.sin(radians)];\n }\n\n /**\n * Generates arc path\n *\n * @param {Array.<Number>} center\n * @param {Number} radius\n * @param {Number} start\n * @param {Number} end\n * @param {Number} width\n * @param {Number} corner Corner radius\n * @param {Number} canvasWidth - Divisor to have svg with range 0 to 1\n *\n * @return {String|Array.<Number|String>}\n */\n static arc(center: [number,number], radius: number, start: number, end: number, width: number, corner: number, canvasWidth: number) : string {\n\n const innerR = radius - width;\n const circumference = Math.abs(end - start);\n corner = Math.min(width / 2, corner);\n\n if (360 * (corner / (Math.PI * (radius - width))) > Math.abs(start - end)) {\n corner = circumference / 360 * innerR * Math.PI;\n }\n\n // inner and outer radiuses\n const innerR2 = innerR + corner;\n const outerRadius = radius - corner;\n\n // butts corner points\n const oStart = this.pointOnArc(center, outerRadius, start);\n const oEnd = this.pointOnArc(center, outerRadius, end);\n\n const iStart = this.pointOnArc(center, innerR2, start);\n const iEnd = this.pointOnArc(center, innerR2, end);\n\n const iSection = 360 * (corner / (PI2 * innerR));\n const oSection = 360 * (corner / (PI2 * radius));\n\n // arcs endpoints\n const iArcStart = this.pointOnArc(center, innerR, start + iSection);\n const iArcEnd = this.pointOnArc(center, innerR, end - iSection);\n\n const oArcStart = this.pointOnArc(center, radius, start + oSection);\n const oArcEnd = this.pointOnArc(center, radius, end - oSection);\n\n const arcSweep1 = circumference > 180 + 2 * oSection ? 1 : 0;\n const arcSweep2 = circumference > 180 + 2 * iSection ? 1 : 0;\n\n const points : Array<string> = new Array<string>(\n // begin path\n \"M\", (oStart[0] / canvasWidth).toString(), (oStart[1] / canvasWidth).toString(),\n // outer start corner\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (oArcStart[0] / canvasWidth).toString(), (oArcStart[1] / canvasWidth).toString(),\n // outer main arc\n \"A\", (radius / canvasWidth).toString(), (radius / canvasWidth).toString(), \"0\", (arcSweep1 / canvasWidth).toString(), \"1\", (oArcEnd[0] / canvasWidth).toString(), (oArcEnd[1] / canvasWidth).toString(),\n // outer end corner\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (oEnd[0] / canvasWidth).toString(), (oEnd[1] / canvasWidth).toString(),\n // end butt\n \"L\", (iEnd[0] / canvasWidth).toString(), (iEnd[1] / canvasWidth).toString(),\n // inner end corner\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (iArcEnd[0] / canvasWidth).toString(), (iArcEnd[1] / canvasWidth).toString(),\n // inner arc\n \"A\", (innerR / canvasWidth).toString(), (innerR / canvasWidth).toString(), \"0\", (arcSweep2 / canvasWidth).toString(), \"0\", (iArcStart[0] / canvasWidth).toString(), (iArcStart[1] / canvasWidth).toString(),\n // inner start corner\n \"A\", (corner / canvasWidth).toString(), (corner / canvasWidth).toString(), \"0\", \"0\", \"1\", (iStart[0] / canvasWidth).toString(), (iStart[1] / canvasWidth).toString(), \"Z\" // end path*/\n );\n\n return points.join(' ');\n }\n\n /*\n * svg units - when \"objectBoundingBox\" is applied, coordinates are relative,\n * use coordinates as ratio (in range 0-1),\n * f.e. (1,1) is botom right corner of element\n */\n static drawMenuItemSvg(svgRadius: number, svgRadiusInner: number, buttonsLength: number, isEMEmbedded: boolean): ToolHubItemUnits {\n \n const radius = isEMEmbedded ? (svgRadius - 5) * 10 : svgRadius * 10;\n const radiusInner = isEMEmbedded ? (svgRadiusInner - 3) * 10 : svgRadiusInner * 10;\n const width = radius * 2;\n // coordinates of points describing one item on menu\n const angle = 360 / ((buttonsLength > 0) ? buttonsLength : 1);\n const halfAngleRadians = (angle * Math.PI) / 360;\n const leftX = radius - Math.sin(halfAngleRadians) * radius;\n const leftY = radius - Math.cos(halfAngleRadians) * radius;\n const rightX = radius + Math.sin(halfAngleRadians) * radius;\n const rightY = radius - Math.cos(halfAngleRadians) * radius;\n \n \n return {\n radius: radius / width,\n radiusInner: radiusInner / width,\n width: 1,\n thick: (radius - radiusInner) / width,\n innerEdgeRight: (radius + radiusInner) / width,\n leftX: leftX / width,\n leftY: leftY / width,\n rightX: rightX / width,\n rightY: rightY / width\n };\n }\n\n \n static generateAnnularSector(settings : ToolHubVisualSettings): string{\n const multiplier = 12;\n return SVGGenerator.arc(\n [settings.subMenuCenter[0] * multiplier, settings.subMenuCenter[1] * multiplier],\n settings.subMenuRadius * multiplier,\n settings.subMenuStartAngle,\n settings.subMenuEndAngle,\n settings.subMenuWidth,\n 7,\n 425\n );\n }\n\n static generateAnnularSectorBorder(settings : ToolHubVisualSettings): string{\n const multiplier = 12;\n return SVGGenerator.arc(\n [settings.subMenuCenter[0] * multiplier, settings.subMenuCenter[1] * multiplier],\n (settings.subMenuRadius * multiplier) + 1,\n settings.subMenuStartAngle - 0.5,\n settings.subMenuEndAngle + 0.5,\n settings.subMenuWidth + 2,\n 7,\n 425\n );\n }\n\n static generateDeadZoneAnnularSector(settings : ToolHubVisualSettings): string{\n const multiplier = 12;\n return SVGGenerator.arc(\n [settings.deadZoneCenter[0] * multiplier, settings.deadZoneCenter[1] * multiplier],\n (settings.deadZoneRadius) * multiplier,\n settings.deadZoneStartAngle,\n settings.deadZoneEndAngle,\n settings.deadZoneWidth,\n 7,\n 700);\n }\n\n static getSVGViewBox(units : ToolHubItemUnits):string{\n return `0 0 ${units.width} ${units.width}`;\n }\n\n static getSVGCenterMenuPath(units : ToolHubItemUnits):string{\n return `M 0 ${units.radius} A ${units.radius} ${units.radius} 0 0 1 ${units.width} ${units.radius} L ${units.width} ${units.radius} A ${units.radius} ${units.radius} 0 0 1 0 ${units.radius} L ${units.thick} ${units.radius} A ${units.radiusInner} ${units.radiusInner} 0 0 0 ${units.innerEdgeRight} ${units.radius} L ${units.innerEdgeRight} ${units.radius} A ${units.radiusInner} ${units.radiusInner} 0 0 0 ${units.thick} ${units.radius} Z`;\n }\n\n static getSVGCenterMenuItemPath(units : ToolHubItemUnits):string{\n return `M ${units.radius} ${units.radius} L ${units.leftX} ${units.leftY} A ${units.radius} ${units.radius} 0 0 1 ${units.rightX} ${units.rightY} L ${units.rightX} ${units.rightY} L ${units.radius} ${units.radius} Z`;\n }\n\n static getSVGCenterSubMenuItemPath(subMenuUnits : ToolHubItemUnits):string{\n return `M ${subMenuUnits.radius} ${subMenuUnits.radius} L ${subMenuUnits.leftX} ${subMenuUnits.leftY} A ${subMenuUnits.radius} ${subMenuUnits.radius} 0 0 1 ${subMenuUnits.rightX} ${subMenuUnits.rightY} L ${subMenuUnits.rightX} ${subMenuUnits.rightY} L ${subMenuUnits.radius} ${subMenuUnits.radius} Z`;\n }\n\n}\n","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolHubItem } from '../bimplus-tool-hub.interface';\r\n@Component({\r\n selector: 'lib-tool-hub-item',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './tool-hub-item.component.html',\r\n styleUrl: '../bimplus-tool-hub.component.less',\r\n})\r\nexport class ToolHubItemComponent {\r\n @Input()\r\n item : ToolHubItem | null = null;\r\n \r\n @HostBinding('class.active')\r\n @Input() \r\n active : boolean = false;\r\n \r\n @HostBinding('class.enabled')\r\n @Input() \r\n isEnabled : boolean = true;\r\n \r\n @HostBinding('class.centermenu-button') centerMenuButtonClass: boolean = true;\r\n}\r\n"," <div *ngIf=\"item\" class=\"centermenu-button-icon dragger\" [ngClass]=\"{\r\n 'disabled' : !isEnabled,\r\n 'enabled' : isEnabled,\r\n 'active' : active\r\n }\" [className]=\"item.iconClass\">\r\n \r\n <span class=\"centermenu-button-text\">{{item.text}}</span>\r\n</div>","import { Component, HostBinding, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToolHubSubItem } from '../bimplus-tool-hub.interface';\r\n@Component({\r\n selector: 'lib-tool-hub-sub-item',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './tool-hub-sub-item.component.html',\r\n styleUrl: '../bimplus-tool-hub.component.less',\r\n})\r\nexport class ToolHubSubItemComponent {\r\n @Input() item : ToolHubSubItem | null = null;\r\n \r\n @HostBinding('class.active')\r\n @Input() \r\n active : boolean = false;\r\n \r\n @HostBinding('class.enabled')\r\n @Input() \r\n isEnabled : boolean = true;\r\n\r\n @HostBinding('class.centermenu-button') centerMenuButtonClass: boolean = true;\r\n @HostBinding('class.center-sub-menu-button') centerSubMenuButtonClass: boolean = true;\r\n}\r\n","<div\r\n *ngIf=\"item\"\r\n class=\"center-sub-menu-button-icon\"\r\n [ngClass]=\"{\r\n disabled: !isEnabled,\r\n enabled: isEnabled,\r\n active: active\r\n }\"\r\n [className]=\"item.iconClass\"\r\n>\r\n <span class=\"centermenu-button-text\">{{ item.text }}</span>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation, booleanAttribute, ElementRef, OnInit, AfterViewInit } from '@angular/core';\r\nimport { BimplusLocalizedWidgetComponent } from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { TranslateService, TranslateModule } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { SVGGenerator } from './svgGenerator';\r\nimport { ToolHubItemComponent } from './tool-hub-item/tool-hub-item.component';\r\nimport { ToolHubSubItemComponent } from './tool-hub-sub-item/tool-hub-sub-item.component';\r\nimport { DraggableDirective } from '../../directives/draggable.directive'\r\nimport { ToolHubItem, ToolHubSubItem, ToolHubVisualSettings, ToolHubItemUnits, ToolHubItemStates } from './bimplus-tool-hub.interface';\r\nimport { LayoutManagerService } from '../../services/layout-manager.service';\r\nimport { ResizeObserverService } from '../../services/resize-observer.service';\r\n//import { fireEvent } from '../../utils/utils';\r\n\r\nfunction createDefaultVisualSettings(): ToolHubVisualSettings {\r\n const settings: ToolHubVisualSettings = {\r\n subMenuStartAngle: 50,\r\n subMenuEndAngle: 130,\r\n svgRadiusInner: 5.75,\r\n svgRadius: 10.25,\r\n subMenuCenter: [17.25, 17.5],\r\n subMenuRadius: 15.5,\r\n subMenuWidth: 52,\r\n deadZoneCenter: [17, 18],\r\n deadZoneWidth: 140,\r\n deadZoneRadius: 22,\r\n deadZoneStartAngle: 45,\r\n deadZoneEndAngle: 135\r\n }\r\n return settings;\r\n}\r\n\r\n// Use when implementing embedded mode\r\n// function createEmbeddedSettings() : ToolHubVisualSettings{\r\n// const settings : ToolHubVisualSettings = {\r\n// subMenuStartAngle : 50,\r\n// subMenuEndAngle : 130,\r\n// svgRadiusInner : 4,\r\n// svgRadius : 7.25,\r\n// subMenuCenter : [17.25, 17.3],\r\n// subMenuRadius : 16.2,\r\n// subMenuWidth : 62,\r\n// deadZoneCenter : [16.5, 16],\r\n// deadZoneWidth : 120,\r\n// deadZoneRadius : 18,\r\n// deadZoneStartAngle : 35,\r\n// deadZoneEndAngle : 145\r\n// }\r\n// return settings;\r\n// }\r\n\r\nfunction createDefaultItems(): Array<ToolHubItem> {\r\n const items: Array<ToolHubItem> = [\r\n //--- create task ---------------------------------------------------\r\n {\r\n buttonId: 'cmButCreateTask',\r\n iconClass: 'ui-icon-create-task',\r\n text: '_Create_issue_center_menu_tooltip',\r\n tooltip: '_Create_issue_center_menu_tooltip',\r\n tooltipDisabled: '_Create_issue_center_menu_tooltip',\r\n },\r\n\r\n //--- quantity takeoff ---------------------------------------------------\r\n {\r\n buttonId: 'cmButQuantityTakeOff',\r\n iconClass: 'ui-icon-quantity-take-off',\r\n text: '_Quantity_take_Off_center_menu_tooltip',\r\n tooltip: '_Quantity_take_Off_center_menu_tooltip',\r\n tooltipDisabled: '_Quantity_take_Off_center_menu_tooltip',\r\n },\r\n\r\n //--- markup ---------------------------------------------------\r\n {\r\n buttonId: 'cmButMarkup',\r\n iconClass: 'ui-icon-markup',\r\n text: '_Markups_center_menu_tooltip',\r\n tooltip: '_Markups_center_menu_tooltip',\r\n tooltipDisabled: '_Markups_center_menu_tooltip',\r\n },\r\n\r\n //--- section ---------------------------------------------------\r\n {\r\n buttonId: 'cmButSection',\r\n iconClass: 'ui-icon-section',\r\n text: '_Sectioning_center_menu_tooltip',\r\n tooltip: '_Sectioning_center_menu_tooltip',\r\n tooltipDisabled: '_Sectioning_center_menu_tooltip',\r\n },\r\n\r\n //--- hide ---------------------------------------------------\r\n {\r\n buttonId: 'cmButObjTranspMenu',\r\n iconClass: 'ui-icon-obj-transp',\r\n text: '_Hide_objects_center_menu_tooltip',\r\n tooltip: '_Hide_objects_center_menu_tooltip',\r\n tooltipDisabled: '_Hide_objects_center_menu_tooltip',\r\n },\r\n\r\n //--- isolate ---------------------------------------------------\r\n {\r\n buttonId: 'cmButObjSel',\r\n iconClass: 'ui-icon-obj-select',\r\n text: '_Isolate_objects_center_menu_tooltip',\r\n tooltip: '_Isolate_objects_center_menu_tooltip',\r\n tooltipDisabled: '_Isolate_objects_center_menu_tooltip',\r\n },\r\n\r\n //--- navigation map ---------------------------------------------------\r\n {\r\n buttonId: 'cmButNavigationMap',\r\n iconClass: 'ui-icon-navigation-map',\r\n text: '_Navigation_nap_center_menu_tooltip',\r\n tooltip: '_Navigation_nap_center_menu_tooltip',\r\n tooltipDisabled: '_Navigation_nap_center_menu_tooltip',\r\n },\r\n\r\n //--- fullscreen ----------------------------------------------\r\n {\r\n buttonId: 'cmButFullScreen',\r\n iconClass: 'ui-icon-fullscreen',\r\n text: '_Fullscreen_node_center_menu_tooltip',\r\n tooltip: '_Fullscreen_node_center_menu_tooltip',\r\n tooltipDisabled: '_Fullscreen_node_center_menu_tooltip',\r\n },\r\n //--- project navigator ---------------------------------------\r\n {\r\n buttonId: 'cmButProjectNavigator',\r\n iconClass: 'ui-icon-project-navigator',\r\n text: '_Project_navigator_center_menu_tooltip',\r\n tooltip: '_Project_navigator_center_menu_tooltip',\r\n tooltipDisabled: '_Project_navigator_center_menu_tooltip',\r\n },\r\n\r\n //--- reset ---------------------------------------------------\r\n {\r\n iconClass: 'ui-icon-obj-reset',\r\n buttonId: 'cmButResetObj',\r\n text: '_Reset_viewport_center_menu_tooltip',\r\n tooltip: '_Reset_viewport_center_menu_tooltip',\r\n tooltipDisabled: '_Reset_viewport_center_menu_tooltip',\r\n },\r\n //--- view ---------------------------------------------------\r\n {\r\n buttonId: 'cmButResetVp',\r\n iconClass: 'ui-icon-reset-vp',\r\n text: '_Select_view_center_menu_tooltip',\r\n tooltip: '_Select_view_center_menu_tooltip',\r\n tooltipDisabled: '_Select_view_center_menu_tooltip',\r\n subMenuId: 'cmb-view-submenu',\r\n subItems: [\r\n {\r\n buttonId: 'cmButFrontView',\r\n iconClass: 'ui-icon-front-view',\r\n text: '_Front_view_center_menu_tooltip',\r\n tooltip: '_Front_view_center_menu_tooltip',\r\n tooltipDisabled: '_Front_view_center_menu_tooltip',\r\n actionClick: 'centerMenuFrontViewClick',\r\n },\r\n\r\n //--- Top View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButTopView',\r\n iconClass: 'ui-icon-top-view',\r\n text: '_Top_view_center_menu_tooltip',\r\n tooltip: '_Top_view_center_menu_tooltip',\r\n tooltipDisabled: '_Top_view_center_menu_tooltip',\r\n actionClick: 'centerMenuTopViewClick',\r\n },\r\n //--- Side View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButSideView',\r\n iconClass: 'ui-icon-side-view',\r\n text: '_Side_view_center_menu_tooltip',\r\n tooltip: '_Side_view_center_menu_tooltip',\r\n tooltipDisabled: '_Side_view_center_menu_tooltip',\r\n actionClick: 'centerMenuSideViewClick',\r\n },\r\n //--- Perspective View ---------------------------------------------------\r\n {\r\n buttonId: 'cmButPerspectiveView',\r\n iconClass: 'ui-icon-perspective-view',\r\n text: '_Perspective_view_center_menu_tooltip',\r\n tooltip: '_Perspective_view_center_menu_tooltip',\r\n tooltipDisabled: '_Perspective_view_center_menu_tooltip',\r\n actionClick: 'centerMenuPerspectiveViewClick',\r\n }\r\n ]\r\n }\r\n ]\r\n\r\n // Set all tool hub items states to inactive and disabled. Host App must define states\r\n items.forEach(item => { item.active = false; item.disabled = true })\r\n\r\n return items;\r\n}\r\n\r\nconst DEFAULT_POSITION_LEFT = 350;\r\nconst DEFAULT_POSITION_TOP = 670;\r\n@Component({\r\n selector: 'lib-bimplus-tool-hub',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n CommonModule,\r\n ToolHubItemComponent,\r\n ToolHubSubItemComponent,\r\n DraggableDirective\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './bimplus-tool-hub.component.html',\r\n styleUrl: './bimplus-tool-hub.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusToolHubComponent extends BimplusLocalizedWidgetComponent implements OnInit,AfterViewInit {\r\n constructor(translateService: TranslateService,\r\n private layoutManagerService: LayoutManagerService,\r\n private resizeObserverService:ResizeObserverService,\r\n private element: ElementRef) {\r\n super(translateService);\r\n \r\n this.items = createDefaultItems();\r\n this._visualSettings = createDefaultVisualSettings();\r\n this._units = this.calculateCurrentMenuItemUnits();\r\n this._subMenuUnits = this.calculateCurrentSubMenuItemUnits();\r\n this._annularSector = SVGGenerator.generateAnnularSector(this._visualSettings);\r\n this._annularSectorBorder = SVGGenerator.generateAnnularSectorBorder(this._visualSettings);\r\n this._deadZoneAnnularSector = SVGGenerator.generateDeadZoneAnnularSector(this._visualSettings);\r\n\r\n }\r\n\r\n // #region public fields\r\n \r\n get itemStates(): Array<ToolHubItemStates> {\r\n return this._itemStates;\r\n }\r\n @Input() set itemStates(value: Array<ToolHubItemStates>) {\r\n this._itemStates = value;\r\n this.setItemStates(this._itemStates);\r\n }\r\n\r\n setItemStates(itemStates: Array<ToolHubItemStates>) {\r\n for (const itemState of itemStates) {\r\n const item = this._items.find(item => item.buttonId === itemState.buttonId);\r\n if (item) {\r\n if (itemState.active != undefined) {\r\n item.active = itemState.active;\r\n }\r\n if (itemState.disabled !== undefined) {\r\n item.disabled = itemState.disabled;\r\n }\r\n }\r\n }\r\n\r\n this._updateActivationState();\r\n }\r\n\r\n\r\n get items(): Array<ToolHubItem> {\r\n return this._items;\r\n }\r\n @Input() set items(value: Array<ToolHubItem>) {\r\n this._items = value;\r\n\r\n const buttonsLength = (this._items?.length) > 0 ? this._items.length : 1;\r\n const rootStyle = document?.documentElement?.style;\r\n if (rootStyle) {\r\n const menuItems = rootStyle.getPropertyValue(\"--menu-items\");\r\n if (parseInt(menuItems) !== buttonsLength) {\r\n rootStyle.setProperty(\"--menu-items\", buttonsLength.toString());\r\n }\r\n }\r\n\r\n // Transfer disabled states, which can defined by host app\r\n this.setItemStates(this._itemStates);\r\n }\r\n\r\n get activeSubItems(): Array<ToolHubSubItem> | null {\r\n return this._activeSubItems;\r\n }\r\n\r\n get isCollapsed(): boolean {\r\n return this._isCollapsed;\r\n }\r\n @Input({ transform: booleanAttribute })\r\n set isCollapsed(value: boolean) {\r\n this._isCollapsed = value;\r\n }\r\n\r\n get units(): ToolHubItemUnits {\r\n return this._units;\r\n }\r\n\r\n get subMenuUnits(): ToolHubItemUnits {\r\n return this._subMenuUnits;\r\n }\r\n\r\n get annularSector(): string {\r\n return this._annularSector;\r\n }\r\n\r\n get annularSectorBorder(): string {\r\n return this._annularSectorBorder;\r\n }\r\n\r\n get deadZoneAnnularSector(): string {\r\n return this._deadZoneAnnularSector;\r\n }\r\n\r\n @Input({ transform: booleanAttribute }) isEmbedded: boolean = false;\r\n @Input({ transform: booleanAttribute }) isFocused: boolean = false;\r\n @Input({ transform: booleanAttribute }) isActive: boolean = true;\r\n @Output() itemClicked = new EventEmitter<string>();\r\n @Output() subItemClicked = new EventEmitter<string>();\r\n \r\n // Define event handler for reusing draggable also from resize parent \r\n //@Output() resizedragging = new EventEmitter<[number,number]>();\r\n\r\n private componentId = 'center-menu-fp-id';\r\n private subscription: Subscription | null = null; // Initialize to null\r\n\r\n ngOnInit():void{ \r\n this.layoutManagerService.registerObject(this.element,this.componentId,'#center-menu-fp-id',true,DEFAULT_POSITION_LEFT,DEFAULT_POSITION_TOP);\r\n this.layoutManagerService.registeredItems$.subscribe(items => {\r\n const layoutManagerItem = items.find(item => item.id === this.componentId);\r\n this.isCollapsed = Boolean(layoutManagerItem?.isCollapsed); \r\n });\r\n \r\n }\r\n \r\n ngAfterViewInit():void{\r\n // if the component wants to be registered in layout manager system\r\n // Subscribe to the observable\r\n this.subscription = this.resizeObserverService.parentAppRect$.subscribe(value => {\r\n this.handleParentAppRectSizeChange(value);\r\n });\r\n }\r\n \r\n // #endregion public fields\r\n \r\n // #region public methods\r\n public getSVGViewBox(): string {\r\n return SVGGenerator.getSVGViewBox(this._units);\r\n }\r\n\r\n public getSVGCenterMenuPath(): string {\r\n return SVGGenerator.getSVGCenterMenuPath(this._units);\r\n }\r\n\r\n public getSVGCenterMenuItemPath(): string {\r\n return SVGGenerator.getSVGCenterMenuItemPath(this._units);\r\n }\r\n\r\n public getSVGCenterSubMenuItemPath(): string {\r\n return SVGGenerator.getSVGCenterSubMenuItemPath(this._subMenuUnits);\r\n }\r\n\r\n public toggleMenu() {\r\n this.layoutManagerService.updateCollapsed(!this.isCollapsed,this.componentId);\r\n setTimeout(()=>{\r\n this.layoutManagerService.checkPosition('center-menu-fp-id',this.getSelector(),undefined,0,0,true); \r\n })\r\n }\r\n\r\n findToolHubItemById(id: string): ToolHubItem | undefined {\r\n return this._items.find(x => x.buttonId === id);\r\n }\r\n\r\n clickToolHubItem(action: string) {\r\n const item = this.findToolHubItemById(action);\r\n if (!item || item?.disabled) {\r\n return;\r\n }\r\n\r\n this.itemClicked.emit(action);\r\n }\r\n\r\n clickToolHubSubItem(action: string) {\r\n if (!this._activeSubItems) {\r\n return;\r\n }\r\n\r\n const item = this._activeSubItems.find(x => x.buttonId === action);\r\n if (!item) {\r\n return;\r\n }\r\n\r\n this.subItemClicked.emit(action);\r\n this.closeActiveSubItemsView();\r\n }\r\n\r\n toggleToolHubItemActive(buttonId: string) {\r\n const item = this.findToolHubItemById(buttonId);\r\n if (!item || item.disabled) {\r\n return;\r\n }\r\n\r\n item.active = !item.active;\r\n\r\n this._updateActivationState();\r\n }\r\n\r\n toggleSubItemsView(buttonId: string) {\r\n const item = this.findToolHubItemById(buttonId);\r\n if (!item || item.disabled || !item.subItems) {\r\n return;\r\n }\r\n\r\n item.active = !item.active;\r\n if (item.active) {\r\n this._activeSubItemsView = item;\r\n this._activeSubItems = item.subItems;\r\n } else {\r\n this._activeSubItemsView = null;\r\n this._activeSubItems = null;\r\n }\r\n }\r\n\r\n closeActiveSubItemsView() {\r\n if (this._activeSubItemsView) {\r\n this._activeSubItemsView.active = false;\r\n this._activeSubItemsView = null;\r\n }\r\n this._activeSubItems = null;\r\n }\r\n\r\n setHoveredState(element: string, hovered: boolean) {\r\n const index = this._hoveredElements.indexOf(element);\r\n const storedCountHoverd = this._hoveredElements.length;\r\n\r\n if (index >= 0 && !hovered) {\r\n this._hoveredElements.splice(index, 1);\r\n }\r\n\r\n if (index < 0 && hovered) {\r\n this._hoveredElements.push(element);\r\n }\r\n\r\n if (storedCountHoverd > 0 && this._hoveredElements.length === 0) {\r\n\r\n // If hovered elements count reaches zero, check again a bit delayed. If nothing hovered at that time, close submenu\r\n setInterval(() => {\r\n if (this._hoveredElements.length === 0) {\r\n this.closeActiveSubItemsView();\r\n }\r\n }, 1000);\r\n }\r\n }\r\n\r\n private getSelector():string{\r\n return this.isCollapsed ? '#center-menu-controller':'.center-menu-fp';\r\n }\r\n\r\n dragElement(event: [number, number]): void {\r\n const deltaX1 = event[0];\r\n const deltaY1 = event[1]; \r\n this.layoutManagerService.checkPosition('center-menu-fp-id',this.getSelector(),undefined,deltaX1,deltaY1) \r\n }\r\n\r\n onDragEnd(){\r\n this.layoutManagerService.handleDragEnd('center-menu-fp-id');\r\n }\r\n\r\n // #endregion public methods\r\n\r\n // #region private fields\r\n private _isCollapsed: boolean = false;\r\n private _itemStates: Array<ToolHubItemStates> = Array<ToolHubItemStates>();\r\n private _items: Array<ToolHubItem> = Array<ToolHubItem>();\r\n private _activeSubItemsView: ToolHubItem | null = null;\r\n private _activeSubItems: Array<ToolHubSubItem> | null = null;\r\n private _visualSettings: ToolHubVisualSettings;\r\n private _units: ToolHubItemUnits;\r\n private _subMenuUnits: ToolHubItemUnits;\r\n private _annularSector: string;\r\n private _annularSectorBorder: string;\r\n private _deadZoneAnnularSector: string;\r\n private _hoveredElements: Array<string> = Array<string>();\r\n // #endregion private fields\r\n\r\n // #region private methods\r\n private calculateCurrentMenuItemUnits(): ToolHubItemUnits {\r\n return SVGGenerator.drawMenuItemSvg(this._visualSettings.svgRadius, this._visualSettings.svgRadiusInner, this._items.length, this.isEmbedded);\r\n }\r\n\r\n private calculateCurrentSubMenuItemUnits(): ToolHubItemUnits {\r\n return SVGGenerator.drawMenuItemSvg(this._visualSettings.svgRadius, this._visualSettings.svgRadiusInner, 20, this.isEmbedded);\r\n }\r\n\r\n private handleParentAppRectSizeChange(parentRect:DOMRect | undefined):void{\r\n this.layoutManagerService.checkPosition(this.componentId,this.getSelector(),parentRect,0,0,true); \r\n }\r\n\r\n private _oneOrMoreItemsActive(){\r\n for(const item of this.items){\r\n if(item.active === true)\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _updateActivationState(){\r\n if(this._oneOrMoreItemsActive()){\r\n this.isActive = true;\r\n }else{\r\n this.isActive = false;\r\n }\r\n }\r\n // #region private methods\r\n}\r\n","<div class=\"center-menu\">\r\n <div\r\n class=\"center-menu-fp\"\r\n id=\"center-menu-fp-id\"\r\n [ngClass]=\"activeSubItems ? 'submenu-active' : ''\"\r\n >\r\n <div\r\n libDraggable\r\n id=\"center-menu-controller\"\r\n class=\"center-menu-controller dragger\"\r\n data-test=\"toolhub_controller\"\r\n [ngClass]=\"{\r\n opened: !isCollapsed,\r\n active: isActive\r\n }\"\r\n [title]=\"\r\n isCollapsed\r\n ? ('_Show_toolhub_tooltip' | translate)\r\n : ('_Minimize_toolhub_tooltip' | translate) \r\n \"\r\n (clicked)=\"toggleMenu()\"\r\n (dragging)=\"dragElement($event)\"\r\n (dragEnd) =\"onDragEnd()\"\r\n ></div>\r\n <div\r\n class=\"center-menu-circle-border-inner\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n ></div>\r\n <div\r\n class=\"center-menu-circle-border-outer\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('menuCircleBorderOuter', false)\"\r\n (mouseenter)=\"setHoveredState('menuCircleBorderOuter', true)\"\r\n ></div>\r\n <div\r\n libDraggable\r\n class=\"center-menu-circle\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('menuCircle', false)\"\r\n (mouseenter)=\"setHoveredState('menuCircle', true)\"\r\n (dragging)=\"dragElement($event)\"\r\n >\r\n <lib-tool-hub-item\r\n libDraggable\r\n *ngFor=\"let item of items\"\r\n [attr.data-test]=\"'toolhub_item_' + item.buttonId\"\r\n [title]=\"item.tooltip | translate\"\r\n [item]=\"item\"\r\n [active]=\"!!item.active\"\r\n [isEnabled]=\"!item.disabled\"\r\n (clicked)=\"clickToolHubItem(item.buttonId)\"\r\n ></lib-tool-hub-item>\r\n\r\n <svg\r\n class=\"centermenu-button-svg\"\r\n [attr.viewBox]=\"getSVGViewBox()\"\r\n fill=\"none\"\r\n >\r\n <clipPath id=\"svgCenterMenu\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterMenuPath()\" fill=\"white\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuItem\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterMenuItemPath()\" fill=\"white\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterSubMenuItem\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"getSVGCenterSubMenuItemPath()\" fill=\"white\" />\r\n </clipPath>\r\n <clipPath id=\"svgCenterMenuSubMenu\" clipPathUnits=\"objectBoundingBox\">\r\n <path [attr.d]=\"annularSector\" fill=\"none\" />\r\n </clipPath>\r\n <clipPath\r\n id=\"svgCenterMenuSubMenuBorder\"\r\n clipPathUnits=\"objectBoundingBox\"\r\n >\r\n <path [attr.d]=\"annularSectorBorder\" fill=\"none\" />\r\n </clipPath>\r\n <clipPath\r\n id=\"svgCenterMenuSubMenuDeadZone\"\r\n clipPathUnits=\"objectBoundingBox\"\r\n >\r\n <path [attr.d]=\"deadZoneAnnularSector\" fill=\"none\" />\r\n </clipPath>\r\n </svg>\r\n </div>\r\n\r\n @if (activeSubItems) {\r\n <div\r\n class=\"center-menu-sub-menu-border\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('submenuBorder', false)\"\r\n (mouseenter)=\"setHoveredState('submenuBorder', true)\"\r\n ></div>\r\n <div\r\n class=\"center-menu-sub-menu\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('submenu', false)\"\r\n (mouseenter)=\"setHoveredState('submenu', true)\"\r\n >\r\n <lib-tool-hub-sub-item\r\n *ngFor=\"let item of activeSubItems\"\r\n [attr.data-test]=\"'toolhub_subitem_' + item.buttonId\"\r\n [title]=\"item.tooltip | translate\"\r\n [item]=\"item\"\r\n (click)=\"clickToolHubSubItem(item.buttonId)\"\r\n (keypress)=\"clickToolHubSubItem(item.buttonId)\"\r\n ></lib-tool-hub-sub-item>\r\n </div>\r\n <div\r\n class=\"center-menu-sub-menu-dead-zone\"\r\n [ngClass]=\"isCollapsed ? 'hidden' : ''\"\r\n (mouseleave)=\"setHoveredState('deadZone', false)\"\r\n (mouseenter)=\"setHoveredState('deadZone', true)\"\r\n ></div>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute,OnChanges, SimpleChanges } from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\nexport interface MenuItem {\r\n id: string,\r\n action: string,\r\n class: string,\r\n textId: string,\r\n type: string,\r\n checkState: string,\r\n url: string,\r\n _url?: () => string; // Function that takes no arguments and returns a string\r\n textClass: string,\r\n queryParams: string\r\n}\r\nexport interface MenuItemEventData {\r\n index: number,\r\n action: string\r\n}\r\nexport interface LangItem {\r\n symbol: string,\r\n text: string,\r\n lCode: string | undefined\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-user-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-user-menu.component.html',\r\n styleUrl: './bimplus-user-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusUserMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n\r\n _languagesList: LangItem[] = [\r\n { symbol: \"cs\", text: \"Čeština\", lCode: \"3\" },\r\n { symbol: \"de\", text: \"Deutsch\", lCode: \"1\" },\r\n { symbol: \"en\", text: \"English (UK)\", lCode: \"0\" },\r\n { symbol: \"us\", text: \"English (US)\", lCode: undefined },\r\n { symbol: \"es\", text: \"Español\", lCode: \"18\" },\r\n { symbol: \"fr\", text: \"Français\", lCode: \"4\" },\r\n { symbol: \"it\", text: \"Italiano\", lCode: \"2\" },\r\n { symbol: \"ru\", text: \"Русский\", lCode: \"14\" },\r\n { symbol: \"ro\", text: \"Romana\", lCode: undefined },\r\n { symbol: \"tr\", text: \"Türkçe\", lCode: undefined }\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n _languagesMenuOpened = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) accountSettingsVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) removeConnectedAppsVisible : boolean = false;\r\n @Input({ transform: booleanAttribute }) userGuideVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) supportVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) forumVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) submenuVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) clearCacheVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) dividerLoggedInVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) logoutVisible : boolean = true;\r\n @Input({ transform: booleanAttribute }) isEmbedded : boolean = false;\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n @Input({ transform: booleanAttribute }) allowRcaItem : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() buttonTitle : string = '';\r\n @Input() userName : string = 'Unknown user';\r\n @Input() userPhotoUrl : string = '';\r\n @Input() userGuideLinkUrl : string = 'https://doc.allplan.com/display/BIMPLUSMANUAL/Bimplus+Benutzerhandbuch';\r\n @Input() supportLinkUrl : string = 'https://connect2.allplan.com/services/support';\r\n @Input() forumLinkUrl : string = 'https://connect.allplan.com/de/forum/themen/bim-benutzer-forum.ct';\r\n /**--------------------------------------------------------------------------\r\n * Component events\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusUserMenuClicked = new EventEmitter<MenuItemEventData>();\r\n @Output() bimplusLanguageSelected = new EventEmitter<string>();\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue);\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList: MenuItem[] = [\r\n { id:\"accountSettingsPage\", action:\"accountSettings\", class: \"icon-account-settings\", textId: \"_Edit_profile\", type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\", url: \"\",},\r\n { id:\"removeConnectedApps\", action:\"removeConnectedApps\", checkState: \"allowRcaItem\", class: \"icon-rca\", textClass: \"text-capitalized\", textId: \"_Remove_connected_apps\", type: \"\", url: \"\", queryParams: \"\"},\r\n { id:\"userGuideLink\", action:\"userGuide\", class: \"icon-user-guide\", textId: \"_UserGuide\", get url() { return this._url?.() ?? ''; }, _url: () => this.userGuideLinkUrl, type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"supportLink\", action:\"support\", class: \"icon-support\", textId: \"_Support\", get url() { return this._url?.() ?? ''; }, _url: () => this.supportLinkUrl, queryParams: \"no_cache=1\", type: \"\", checkState: \"\", textClass: \"\"},\r\n { id:\"forumLink\", action:\"forum\", class: \"icon-forum\", textId: \"_Forum\", get url() { return this._url?.() ?? ''; }, _url: () => this.forumLinkUrl, type: \"\", checkState: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"languagesSubmenu\", action:\"submenu\", class: \"icon-languages\", textId: \"_Languages\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"clearCache\", action:\"clearCache\", class: \"icon-clear-cache\", textId: \"_Clear cache\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"dividerLoggedIn\", type: \"divider\", action: \"\", class: \"\", textId: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"},\r\n { id:\"logout\", action:\"logout\", class: \"icon-log-out\", textId: \"_Logout\", type: \"\", checkState: \"\", url: \"\", textClass: \"\", queryParams: \"\"}\r\n ];\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( item: MenuItem, index : number ){\r\n if (!item || item.type === 'divider') {\r\n return;\r\n }\r\n\r\n\r\n if (item.action === 'submenu') {\r\n this._toggleLanguagesSubmenuOpened();\r\n }\r\n else {\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusUserMenuClicked\", { index, action: item.action ? item.action : '' });\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * language submenu item clicked\r\n --------------------------------------------------------------------------*/\r\n _switchLanguage( language: string ){\r\n this._languagesMenuOpened = false;\r\n this._menuOpened = false;\r\n fireEvent(this, \"bimplusLanguageSelected\", language);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n if(!this._menuOpened) {\r\n this._languagesMenuOpened = false;\r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle language submenu open\r\n --------------------------------------------------------------------------*/\r\n _toggleLanguagesSubmenuOpened(){\r\n if(!this._menuOpened) {\r\n return;\r\n }\r\n this._languagesMenuOpened = !this._languagesMenuOpened;\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * check if item is visible\r\n --------------------------------------------------------------------------*/\r\n _isHidden(item: MenuItem) {\r\n\r\n if (item) {\r\n return !this[(`${item.action ? item.action : item.id}Visible` as keyof BimplusUserMenuComponent)];\r\n }\r\n\r\n return false;\r\n }\r\n\r\n //--- add lang code and additional query params to supported urls\r\n _buildUrl(item: MenuItem | undefined) {\r\n let itemUrl = item?.url;\r\n const actualLang = this._languagesList.find(lang=> lang.symbol === this.selectedLanguage);\r\n const langCode = actualLang?.lCode;\r\n const supportsLangCode = itemUrl?.endsWith?.('.ct') && langCode;\r\n if (item?.queryParams || supportsLangCode) {\r\n itemUrl = itemUrl + '?';\r\n if (supportsLangCode) {\r\n itemUrl = itemUrl + 'L=' + langCode;\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + '&';\r\n }\r\n }\r\n if (item?.queryParams) {\r\n itemUrl = itemUrl + item.queryParams;\r\n }\r\n }\r\n return itemUrl;\r\n }\r\n\r\n _getMenuItems() {\r\n const menuItemsListFiltered = this.isEmbedded ? this._menuItemsList.slice(0,-3) : this._menuItemsList;\r\n return menuItemsListFiltered.map( (item) => {\r\n\r\n if (this._isHidden(item) || (item.checkState && !this[(item.checkState as keyof BimplusUserMenuComponent)])) {\r\n return;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n _getLangId(lang: LangItem | undefined) {\r\n return \"portalLanguage\" + lang?.symbol.charAt(0).toUpperCase() + lang?.symbol.slice(1);\r\n }\r\n}\r\n","<div\r\n [attr.key]=\"'bimcompOverlay'\"\r\n class=\"bimcomp-overlay\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n></div>\r\n<div\r\n [attr.key]=\"'userMenu'\"\r\n class=\"dropdown\"\r\n [ngClass]=\"_menuOpened ? 'open' : ''\"\r\n>\r\n <div\r\n class=\"dropdown-toggle\"\r\n [title]=\"buttonTitle ? buttonTitle : ''\"\r\n (click)=\"_toggleOpened()\"\r\n (keypress)=\"_toggleOpened()\"\r\n >\r\n <img\r\n class=\"user-photo\"\r\n src=\"{{ userPhotoUrl ? userPhotoUrl : '' }}\"\r\n alt=\"{{ buttonTitle ? buttonTitle : '' }}\"\r\n />\r\n <div class=\"user-name\">\r\n @if (!isTouch) {\r\n {{ userName }}\r\n }\r\n </div>\r\n <span class=\"caret\"></span>\r\n </div>\r\n <ul class=\"bimcomp-dropdown-menu\" [ngClass]=\"_menuOpened ? 'open' : ''\">\r\n <ng-container *ngFor=\"let item of _getMenuItems(); let i = index\">\r\n <li\r\n *ngIf=\"item\"\r\n [attr.key]=\"item.id\"\r\n [attr.role]=\"item.type === 'divider' ? 'separator' : ''\"\r\n [ngClass]=\"{\r\n divider: item.type === 'divider',\r\n languageMenuItem: item.action === 'submenu',\r\n 'submenu-hidden':\r\n (!item.url || item.url.slice(0, 2) === '#/') &&\r\n item.action !== 'submenu'\r\n }\"\r\n (click)=\"_menuItemClicked(item, i)\"\r\n (keypress)=\"_menuItemClicked(item, i)\"\r\n >\r\n @if (item.action === 'submenu') {\r\n <div class=\"submenu arrow\"></div>\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n <div\r\n class=\"languagesSubmenu\"\r\n [ngClass]=\"_languagesMenuOpened ? 'open' : ''\"\r\n >\r\n <div class=\"languageSubmenuItems\">\r\n <div\r\n *ngFor=\"let lang of _languagesList\"\r\n [attr.key]=\"_getLangId(lang)\"\r\n id=\"{{ _getLangId(lang) }}\"\r\n class=\"languageSubmenuItem\"\r\n [ngClass]=\"\r\n lang.symbol === this.selectedLanguage ? 'selected' : ''\r\n \"\r\n (click)=\"_switchLanguage(lang.symbol)\"\r\n (keypress)=\"_switchLanguage(lang.symbol)\"\r\n >\r\n {{ lang.text }}\r\n </div>\r\n </div>\r\n </div>\r\n } @else if (!item.url || item.url.slice(0,2) === \"#/\") {\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n } @else if (!item.type || item.type !== \"divider\") {\r\n <a\r\n href=\"{{ _buildUrl(item) }}\"\r\n rel=\"noopener\"\r\n target=\"_blank\"\r\n class=\"submenu-hidden\"\r\n >\r\n <div class=\"icon\" [ngClass]=\"item.class\"></div>\r\n <span\r\n class=\"menu-item-text\"\r\n [ngClass]=\"item.textClass ? item.textClass : ''\"\r\n >\r\n {{ item.textId | translate }}\r\n </span>\r\n </a>\r\n }\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute } from '@angular/core';\nimport { fireEvent } from '../../utils/utils';\n\n@Component({\n selector: 'lib-bimplus-zoom',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './bimplus-zoom.component.html',\n styleUrl: './bimplus-zoom.component.less',\n encapsulation: ViewEncapsulation.ShadowDom\n})\nexport class BimplusZoomComponent{\n /**--------------------------------------------------------------------------\n * List of available zoom\n --------------------------------------------------------------------------*/\n _zoomList = [\n { symbol: \"100\", text: \"100%\"},\n { symbol: \"105\", text: \"105%\"},\n { symbol: \"110\", text: \"110%\"},\n { symbol: \"115\", text: \"115%\"},\n { symbol: \"120\", text: \"120%\"},\n { symbol: \"125\", text: \"125%\"},\n { symbol: \"130\", text: \"130%\"},\n { symbol: \"135\", text: \"135%\"},\n { symbol: \"140\", text: \"140%\"},\n { symbol: \"145\", text: \"145%\"},\n { symbol: \"150\", text: \"150%\"}\n ];\n\n /**--------------------------------------------------------------------------\n * States\n --------------------------------------------------------------------------*/\n _menuOpened = false;\n \n /**--------------------------------------------------------------------------\n * properties\n --------------------------------------------------------------------------*/\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\n\n /**--------------------------------------------------------------------------\n * properties\n --------------------------------------------------------------------------*/\n @Input() selectedZoom : string = '125';\n\n /**--------------------------------------------------------------------------\n * Zoom selected event\n --------------------------------------------------------------------------*/\n @Output() bimplusZoomSelected = new EventEmitter<string>();\n\n /**--------------------------------------------------------------------------\n * Zoom selection\n --------------------------------------------------------------------------*/\n _switchZoom( zoom: string ){\n fireEvent(this, \"bimplusZoomSelected\", zoom);\n }\n\n /**--------------------------------------------------------------------------\n * toggle menu open\n --------------------------------------------------------------------------*/\n _toggleOpened(){\n this._menuOpened = !this._menuOpened;\n }\n\n /**--------------------------------------------------------------------------\n * setup dynamic classes for zoom item\n --------------------------------------------------------------------------*/\n _getZoomClassObject( symbol: string ){\n return {\n 'selected': this.selectedZoom === symbol,\n ['bimzoom-' + symbol]: true\n };\n }\n}\n","<div\n class=\"bimcomp-overlay\"\n [ngClass]=\"_menuOpened ? 'open' : ''\"\n (click)=\"_toggleOpened()\"\n (keypress)=\"_toggleOpened()\"\n></div>\n<div \n class=\"dropdown\"\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\n (click)=\"_toggleOpened()\"\n (keypress)=\"_toggleOpened()\"\n>\n <div class=\"dropdown-toggle\">\n <div class=\"main-icon icon-zoom\"></div>\n <span class=\"caret\"></span>\n </div>\n <ul\n class=\"bimcomp-dropdown-menu\"\n [ngClass]=\"_menuOpened ? 'open' : ''\"\n >\n <li\n *ngFor=\"let zoom of _zoomList\"\n class=\"bimcomp-dropdown-menu-item\"\n [ngClass]=\"_getZoomClassObject(zoom.symbol)\"\n (click)=\"_switchZoom(zoom.symbol)\"\n (keypress)=\"_switchZoom(zoom.symbol)\"\n >\n <span>{{zoom.text}}</span>\n </li>\n </ul>\n</div>\n","import { Directive, ElementRef, Output, EventEmitter, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[libClickOutside]',\n standalone: true\n})\nexport class ClickOutsideDirective {\n @Output() public clickOutside = new EventEmitter<void>();\n\n constructor(private elementRef: ElementRef) { }\n\n @HostListener('document:click', ['$event.target'])\n public onClick(targetElement: HTMLElement) {\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n if (!clickedInside) {\n this.clickOutside.emit();\n }\n }\n}\n","import { \r\n Component\r\n , Input\r\n , Output\r\n , booleanAttribute\r\n , ViewEncapsulation\r\n , ElementRef\r\n , EventEmitter\r\n , signal\r\n} from '@angular/core';\r\nimport { NgFor, NgIf, NgStyle} from '@angular/common';\r\nimport { BimplusContextMenuItem, BimplusContextMenuPosition } from './bimplus-context-menu.interface';\r\nimport { ClickOutsideDirective } from '../../directives/click-outside/click-outside.directive';\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-context-menu',\r\n standalone: true,\r\n imports: [NgFor, NgIf, NgStyle, ClickOutsideDirective],\r\n templateUrl: './bimplus-context-menu.component.html',\r\n styleUrl: './bimplus-context-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusContextMenuComponent {\r\n @Output() triggerSelected = new EventEmitter();\r\n @Input({ transform: booleanAttribute }) showIcons: boolean = true;\r\n @Input() triggerTitle : string = \"\";\r\n\r\n protected readonly _showDropdown = signal<boolean>(false);\r\n protected _data?: object = undefined;;\r\n protected readonly _position = signal<BimplusContextMenuPosition>({\r\n posX: -2000,\r\n posY: -2000\r\n })\r\n private readonly _element: HTMLElement;\r\n private _interval: number | undefined;\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'items' }) set itemsValue(value: Array<BimplusContextMenuItem> | null | undefined) {\r\n if(!value) {\r\n return;\r\n }\r\n\r\n this.items.set(value);\r\n }\r\n protected readonly items = signal<BimplusContextMenuItem[]>([]);\r\n\r\n constructor(private readonly el: ElementRef) {\r\n this._element = this.el.nativeElement.shadowRoot;\r\n }\r\n\r\n get data(): undefined | object {\r\n return this._data;\r\n }\r\n @Input() set data(data: object) {\r\n this._data = data;\r\n }\r\n\r\n protected _clickOutside() {\r\n this._stopTriggerPositionTracking();\r\n this._showDropdown.set(false);\r\n }\r\n\r\n protected _actionClick(item: BimplusContextMenuItem) {\r\n this._showDropdown.set(false);\r\n\r\n if(typeof item.disabled === 'function') {\r\n if(item.disabled?.(this._data)) {\r\n return;\r\n }\r\n item.action?.(this._data);\r\n return;\r\n }\r\n\r\n if(item.disabled) {\r\n return;\r\n }\r\n item.action?.(this._data);\r\n }\r\n\r\n protected _disabled(item: BimplusContextMenuItem): boolean {\r\n if(!item.disabled) {\r\n return false;\r\n }\r\n if(typeof item.disabled === 'function') {\r\n return item.disabled?.(this._data);\r\n }\r\n return item.disabled;\r\n }\r\n\r\n protected _calculateContextMenuPosition() {\r\n const _triggerElament = this._element.querySelector(\".context-menu-trigger\");\r\n if(!_triggerElament) {\r\n return;\r\n }\r\n\r\n const { right: posX, top: posY } = _triggerElament.getBoundingClientRect();\r\n this._position.set({ posX, posY });\r\n }\r\n\r\n protected _stopTriggerPositionTracking(): void {\r\n if(!this._interval){\r\n return;\r\n }\r\n\r\n clearInterval(this._interval);\r\n this._interval = undefined;\r\n }\r\n\r\n protected _startTriggerPositionTracking(): void {\r\n if(this._interval){\r\n return;\r\n }\r\n this._interval = setInterval(() => {\r\n this._calculateContextMenuPosition();\r\n }, 50) as unknown as number;\r\n }\r\n\r\n protected _toggleDropdown(event: Event) {\r\n this._showDropdown.update(value => !value);\r\n this._calculateContextMenuPosition();\r\n this._startTriggerPositionTracking();\r\n fireEvent(this, \"triggerSelected\");\r\n event.stopPropagation();\r\n }\r\n}\r\n","<div class=\"basic-context-menu\" libClickOutside (clickOutside)=\"_clickOutside()\">\r\n <div class=\"context-menu-trigger\" \r\n (click)=\"_toggleDropdown($event)\"\r\n (keypress)=\"_toggleDropdown($event)\"\r\n title=\"{{triggerTitle}}\"\r\n data-test=\"context-menu\"\r\n >\r\n @if (_showDropdown()) {\r\n <ul\r\n class=\"basic-context-menu__list\"\r\n data-test=\"basic-context-menu__list\"\r\n [ngStyle]=\"{\r\n 'top.px': _position().posY\r\n , 'left.px': _position().posX\r\n }\"\r\n >\r\n @for(item of items(); track item) {\r\n @if (item.id !== 'separator') {\r\n <li \r\n class=\"basic-context-menu__item\"\r\n data-test=\"basic-context-menu__item\"\r\n [class.basic-context-menu__item--disabled]=\"_disabled(item)\"\r\n (click)=\"_actionClick(item)\"\r\n (keypress)=\"_actionClick(item)\"\r\n >\r\n @if (showIcons) {\r\n <div class=\"basic-context-menu__item__icon\" data-test=\"basic-context-menu__item__icon\" [style.background-image]=\"'url(' + item.icon + ')'\">\r\n </div>\r\n }\r\n <div class=\"basic-context-menu__item__label\" data-test=\"basic-context-menu__item__label\" title=\"{{item.tooltip ? item.tooltip : item.title}}\">\r\n {{item.title}}\r\n </div>\r\n </li>\r\n } @else {\r\n <div class=\"basic-context-menu__item__separator\" data-test=\"basic-context-menu__item__separator\"></div>\r\n }\r\n }\r\n </ul>\r\n }\r\n</div>\r\n","import { ElementRef, Component, OnInit, Input, OnChanges, SimpleChange, booleanAttribute, Output, EventEmitter, TemplateRef, signal } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';\r\nimport { SelectionModel} from '@angular/cdk/collections';\r\nimport { CdkTreeModule, FlatTreeControl } from '@angular/cdk/tree';\r\nimport { CommonModule } from '@angular/common';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport { TreeNode, FlatNode, FlatTreeContextMenus } from './bimplus-flat-tree.interface';\r\nimport { BimplusContextMenuComponent } from '../bimplus-context-menu/bimplus-context-menu.component';\r\n\r\ninterface BimplusFlatTreeComponentAttribute {\r\n [key: string]: unknown; // Add index signature allowing string indexing\r\n //Other properties and methods...\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-flat-tree',\r\n standalone: true,\r\n imports: [MatTreeModule\r\n , MatButtonModule\r\n , MatIconModule\r\n , CdkTreeModule\r\n , BimplusContextMenuComponent\r\n , CommonModule\r\n ],\r\n templateUrl: './bimplus-flat-tree.component.html',\r\n styleUrl: './bimplus-flat-tree.component.less'\r\n})\r\n\r\nexport class BimplusFlatTreeComponent implements OnInit, OnChanges{\r\n @Input() treeDataStringified: string | null = null;\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'treeTitle' }) set treeTitleValue(value: string) {\r\n this.treeTitle.set(value);\r\n }\r\n protected readonly treeTitle = signal<string | undefined>(undefined);\r\n @Input() paddingIndent : string = \"2.8rem\"\r\n @Input({ transform: booleanAttribute }) multiSelect: boolean = false;\r\n @Input({ transform: booleanAttribute }) oneLevelMultiSelect: boolean = false;\r\n @Input({ transform: booleanAttribute }) showFoldersIcons: boolean = false;\r\n @Input({ transform: booleanAttribute }) showObjectsIcons: boolean = false;\r\n @Input({ transform: booleanAttribute }) enableSelect: boolean = true;\r\n @Input({ transform: booleanAttribute }) enableParentHighlighting: boolean = true;\r\n @Input({ transform: booleanAttribute }) enableDragAndDrop: boolean = false;\r\n @Input() dataTestPrefix : string = \"\";\r\n @Input() contextMenus: FlatTreeContextMenus | null | undefined = null;\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n get treeData() : Array<TreeNode>{\r\n return this._dataSource.data;\r\n }\r\n\r\n @Input() set treeData(data: Array<TreeNode>) {\r\n this.treeDataStringified = null;\r\n this._dataSource.data = data;\r\n }\r\n \r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n @Input({ alias: 'customNodeTemplate' }) set customNodeTemplateValue(value: TemplateRef<unknown> | null) {\r\n this.customNodeTemplate.set(value);\r\n }\r\n protected readonly customNodeTemplate = signal<TemplateRef<unknown> | null>(null);\r\n\r\n @Output() selectedNodes = new EventEmitter<FlatNode[]>();\r\n\r\n private _selectionList: SelectionModel<FlatNode> | undefined = undefined;\r\n\r\n\r\n ngOnInit(): void {\r\n const element = this.el.nativeElement;\r\n if (element) {\r\n (element as unknown as BimplusFlatTreeComponentAttribute)['get_node'] = this.get_node.bind(this);\r\n (element as unknown as BimplusFlatTreeComponentAttribute)['select_node'] = this.select_node.bind(this);\r\n }\r\n\r\n this._selectionList = new SelectionModel<FlatNode>(this.multiSelect || this.oneLevelMultiSelect);\r\n if(this.treeDataStringified){\r\n this._setNewData(this.treeDataStringified)\r\n }\r\n }\r\n\r\n public expandTree(){\r\n this._treeControl.expandAll();\r\n }\r\n\r\n private _getNode(id: string, nodes: Array<TreeNode>): TreeNode | null {\r\n for(const node of nodes) {\r\n if(node.id === id) {\r\n return node;\r\n }\r\n if(node.children) {\r\n const _node: TreeNode | null = this._getNode(id, node.children);\r\n if(_node) {\r\n return _node;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public get_node(id: { id: string } | string, getDOMElement: boolean = false): TreeNode | Element | null {\r\n if(typeof id === 'string') {\r\n return this._getNode(id, this._dataSource.data);\r\n }\r\n if(getDOMElement) {\r\n const _element: Element = this.el.nativeElement.querySelector(`[node-id='${id.id}']`);\r\n return _element;\r\n }\r\n return this._getNode(id.id, this._dataSource.data);\r\n }\r\n\r\n public select_node(id: string, skipEvent: boolean = false) {\r\n const node = this._treeControl.dataNodes.find(n => n.id === id);\r\n if(!node) {\r\n return;\r\n }\r\n\r\n if(!this._selectionList) {\r\n return;\r\n }\r\n\r\n if(this.oneLevelMultiSelect && this._selectionList.selected.length > 0) {\r\n if(this._selectionList.selected[0].parent !== node.parent) {\r\n this._selectionList.clear();\r\n }\r\n }\r\n\r\n if(this._selectionList.isSelected(node)) {\r\n return;\r\n }\r\n\r\n this._selectionList.select(node);\r\n if(!this.multiSelect && !this.oneLevelMultiSelect && !skipEvent) {\r\n fireEvent(this, \"selectedNodes\", this._selectionList.selected );\r\n return;\r\n }\r\n\r\n if(!this.oneLevelMultiSelect) {\r\n this._toggleDescendantsNodes(node);\r\n }\r\n\r\n if(this.enableParentHighlighting) {\r\n this._updateParentSelections(node);\r\n }\r\n\r\n if(!skipEvent){\r\n fireEvent(this, \"selectedNodes\", this._selectionList.selected );\r\n }\r\n\r\n }\r\n\r\n public reset_selection(){\r\n this._selectionList?.clear();\r\n }\r\n\r\n public expand_node(id : string){\r\n const node = this._treeControl.dataNodes.find(n => n.id === id);\r\n if(!node) {\r\n return;\r\n }\r\n\r\n this._treeControl.expand(node);\r\n }\r\n\r\n public is_expanded(id : string){\r\n const node = this._treeControl.dataNodes.find(n => n.id === id);\r\n if(!node) {\r\n return false;\r\n }\r\n\r\n return this._treeControl.isExpanded(node);\r\n }\r\n\r\n public is_selected(id : string){\r\n if(!this._selectionList)\r\n return;\r\n\r\n const node = this._treeControl.dataNodes.find(n => n.id === id);\r\n if(!node) {\r\n return false;\r\n }\r\n\r\n return this._selectionList?.isSelected(node);\r\n }\r\n\r\n private _setNewData(treeDataStringified: string): void {\r\n const _tree_data = JSON.parse(treeDataStringified);\r\n this._dataSource.data = _tree_data ?? [];\r\n }\r\n\r\n private _changedTreeData(change: SimpleChange) {\r\n this._setNewData(change.currentValue)\r\n }\r\n\r\n ngOnChanges(changes: { [propKey: string]: SimpleChange }): void {\r\n if(changes['multiSelect'] || changes['oneLevelMultiSelect']) {\r\n this._selectionList = new SelectionModel<FlatNode>(this.multiSelect || this.oneLevelMultiSelect);\r\n }\r\n if(changes['treeDataStringified']) {\r\n this._changedTreeData(changes['treeDataStringified'])\r\n }\r\n }\r\n\r\n private _transformer = (node: TreeNode, level: number): FlatNode => {\r\n return {\r\n expandable: node.children !== undefined,\r\n children_count: node.children?.length,\r\n name: node.name,\r\n id: node.id,\r\n level: level,\r\n parent: node.parent,\r\n nodeType: node.nodeType\r\n };\r\n };\r\n\r\n protected _treeControl = new FlatTreeControl<FlatNode>(\r\n node => node.level,\r\n node => node.expandable,\r\n );\r\n\r\n protected _treeFlattener = new MatTreeFlattener(\r\n this._transformer,\r\n node => node.level,\r\n node => node.expandable,\r\n node => node.children\r\n );\r\n\r\n protected _dataSource = new MatTreeFlatDataSource(this._treeControl, this._treeFlattener);\r\n protected _isExpendable = (_: number, node: FlatNode) => node.expandable;\r\n protected _isCustomNodeType(node: FlatNode): boolean{\r\n return node.nodeType != undefined && node.nodeType != \"\";\r\n }\r\n\r\n protected _hasChildren(node: FlatNode): boolean {\r\n if(!node.expandable) {\r\n return false;\r\n }\r\n if(node.children_count === undefined) {\r\n return false\r\n }\r\n return node.children_count > 0\r\n }\r\n\r\n protected _descendantsAllSelected(node: FlatNode): boolean {\r\n if(!this._selectionList) {\r\n return false;\r\n }\r\n\r\n const _selectionList: SelectionModel<FlatNode> = this._selectionList;\r\n\r\n const _descendants = this._treeControl.getDescendants(node);\r\n if(_descendants.length === 0) {\r\n return true;\r\n }\r\n const _descAllSelected = _descendants.length > 0 && _descendants.every((child) => {\r\n return _selectionList.isSelected(child);\r\n });\r\n return _descAllSelected;\r\n }\r\n\r\n protected _descendantsPartiallySelected(node: FlatNode): boolean {\r\n if(!this._selectionList) {\r\n return false;\r\n }\r\n const _selectionList: SelectionModel<FlatNode> = this._selectionList;\r\n\r\n const _descendants = this._treeControl.getDescendants(node);\r\n const _result = _descendants.some((child) => {\r\n return _selectionList.isSelected(child)\r\n });\r\n return _result && !this._descendantsAllSelected(node);\r\n }\r\n\r\n private _toggleDescendantsNodes(node: FlatNode) {\r\n if(!this._selectionList) {\r\n return;\r\n }\r\n\r\n const _isNodeSelected = this._selectionList.isSelected(node);\r\n if(_isNodeSelected) {\r\n this._selectionList.select(...this._treeControl.getDescendants(node));\r\n }\r\n else {\r\n this._selectionList.deselect(...this._treeControl.getDescendants(node));\r\n }\r\n }\r\n\r\n private _updateParentSelections(node: FlatNode) {\r\n if(!this._selectionList) {\r\n return;\r\n }\r\n\r\n let _parentId = node.parent;\r\n let _parentNode = this._treeControl.dataNodes.find(n => n.id === _parentId)\r\n while(_parentNode) {\r\n if(this._descendantsAllSelected(_parentNode)) {\r\n this._selectionList.select(_parentNode);\r\n }\r\n else{\r\n this._selectionList.deselect(_parentNode);\r\n }\r\n _parentId = _parentNode.parent;\r\n _parentNode = this._treeControl.dataNodes.find(n => n.id === _parentId);\r\n }\r\n }\r\n\r\n protected _toggleNode(event: Event, node: FlatNode) {\r\n if(!node) {\r\n return;\r\n }\r\n\r\n if(!this.enableSelect) {\r\n return;\r\n }\r\n\r\n if(!this._selectionList) {\r\n return;\r\n }\r\n\r\n // Check if event is a MouseEvent before accessing ctrlKey\r\n const isMouseEvent = event != null && event instanceof MouseEvent;\r\n if (isMouseEvent && !event?.ctrlKey) {\r\n this._selectionList.clear();\r\n }\r\n\r\n if(this.oneLevelMultiSelect && this._selectionList.selected.length > 0) {\r\n if(this._selectionList.selected[0].parent !== node.parent) {\r\n this._selectionList.clear();\r\n }\r\n }\r\n\r\n this._selectionList.toggle(node);\r\n if(!this.multiSelect && !this.oneLevelMultiSelect) {\r\n fireEvent(this, \"selectedNodes\", this._selectionList.selected );\r\n return;\r\n }\r\n\r\n if(!this.oneLevelMultiSelect) {\r\n this._toggleDescendantsNodes(node);\r\n }\r\n \r\n if(this.enableParentHighlighting) {\r\n this._updateParentSelections(node);\r\n }\r\n \r\n fireEvent(this, \"selectedNodes\", this._selectionList.selected );\r\n }\r\n\r\n protected _isSelected(node: FlatNode): boolean{\r\n if(!this._selectionList) {\r\n return false;\r\n }\r\n return this._selectionList?.isSelected(node);\r\n }\r\n}\r\n","<div class=\"tree-container\">\r\n @if (treeTitle(); as treeTitle) {\r\n <div class=\"tree-title\">{{treeTitle}}</div>\r\n }\r\n <cdk-tree [dataSource]=\"_dataSource\" [treeControl]=\"_treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <cdk-tree-node\r\n [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"object-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon object-icon\" *ngIf=\"showObjectsIcons\">\r\n </div>\r\n <span\r\n class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div>\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.objectContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.objectContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <cdk-tree-node [matTreeNodePaddingIndent]=\"paddingIndent\"\r\n *matTreeNodeDef=\"let node;when: _isExpendable\"\r\n matTreeNodePadding\r\n (click)=\"_toggleNode($event, node)\"\r\n (keypress)=\"_toggleNode($event, node)\"\r\n class=\"folder-node\"\r\n [class.dragable-node]=\"enableDragAndDrop && node.level > 0\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [attr.data-test]=\"dataTestPrefix + node.id\"\r\n [title]=\"node.name\"\r\n [attr.node-id]=\"node.id\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n [attr.aria-label]=\"'Toggle ' + node.name\"\r\n >\r\n <div\r\n class=\"icon expand-collapse-icon\"\r\n [class.expand-more-icon]=\"_hasChildren(node) && !_treeControl.isExpanded(node)\"\r\n [class.collapse-icon]=\"_hasChildren(node) && _treeControl.isExpanded(node)\"\r\n >\r\n </div>\r\n </button>\r\n @if (customNodeTemplate() && _isCustomNodeType(node)) {\r\n <ng-container \r\n [ngTemplateOutlet]=\"customNodeTemplate()\" \r\n [ngTemplateOutletContext]=\"{node:node}\">\r\n </ng-container>\r\n }@else{\r\n <div class=\"icon folder-icon\" *ngIf=\"showFoldersIcons\">\r\n </div>\r\n <span class=\"node-label\"\r\n [class.selected-node]=\"_isSelected(node)\"\r\n [class.selected-all-descendants-nodes]=\"_descendantsAllSelected(node) && _isSelected(node) && enableParentHighlighting\"\r\n [class.selected-partially-descendants-nodes]=\"_descendantsPartiallySelected(node) && enableParentHighlighting\"\r\n >\r\n <div class=\"custom-drag-placeholder\" *cdkDragPlaceholder></div>\r\n <div class=\"node-label\">\r\n {{node.name}}\r\n </div>\r\n </span>\r\n }\r\n <lib-bimplus-context-menu\r\n [items]=\"contextMenus?.folderContextMenuitems\"\r\n [data]=\"node\"\r\n *ngIf=\"contextMenus?.folderContextMenuitems?.length\"\r\n (triggerSelected)=\"_toggleNode($event, node)\"\r\n >\r\n </lib-bimplus-context-menu>\r\n </cdk-tree-node>\r\n </cdk-tree>\r\n</div>\r\n","\r\nexport interface FilterType{\r\n id: string,\r\n name: string\r\n}\r\n\r\nexport interface FilterCriterium{\r\n name : string,\r\n value? : string,\r\n id? : string,\r\n subString : string,\r\n}\r\n\r\nexport enum FilterCriteriaSelectionMode{\r\n None,\r\n SelectObjectProperties,\r\n SelectAttributes\r\n} \r\n\r\nexport const MaxFilterCriteria = 5;","import { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport { FilterCriterium } from '../bimplus-object-navigator.interface';\r\n\r\n@Component({\r\n selector: 'app-filter-criterium',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './filter-criterium.component.html',\r\n styleUrl: './filter-criterium.component.less'\r\n})\r\nexport class FilterCriteriumComponent {\r\n \r\n // #region public fields\r\n @Input()\r\n criterium : FilterCriterium = { name : \"\", subString:\"\"}\r\n\r\n @HostBinding('style.margin-left.em') @Input() indent: number = 0;\r\n\r\n @Output() deleteCriterium = new EventEmitter<void>();\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n clickedDelete(){\r\n this.deleteCriterium.emit();\r\n }\r\n // #endregion public methods\r\n}\r\n","<div class=\"filter-criterium-row\">\r\n @if(criterium.value){\r\n <span class=\"filter-criterium-item\">{{criterium.name}} &nbsp;&#40;{{criterium.value}}&#41;</span>\r\n }@else{\r\n <span class=\"filter-criterium-item\">{{criterium.name}}</span>\r\n }\r\n <div \r\n class=\"filter-criterium-icon-delete\"\r\n (click)=\"clickedDelete()\"\r\n (keypress)=\"clickedDelete()\"\r\n >\r\n </div>\r\n</div>","import { Component, computed, EventEmitter, Input, Output, signal, ViewChild } from '@angular/core';\r\nimport { BimplusFlatTreeComponent } from '../bimplus-flat-tree/bimplus-flat-tree.component';\r\nimport { FlatNode, TreeNode } from '../bimplus-flat-tree/bimplus-flat-tree.interface';\r\nimport { ObjectStructureNode } from './bimplus-object-structure.interface';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-object-structure',\r\n standalone: true,\r\n imports: [BimplusFlatTreeComponent],\r\n templateUrl: './bimplus-object-structure.component.html',\r\n styleUrl: './bimplus-object-structure.component.less'\r\n})\r\nexport class BimplusObjectStructureComponent{\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'objectStructure' })\r\n set objectStructureValue(node : ObjectStructureNode){\r\n this._objectStructure.set(node);\r\n }\r\n\r\n private readonly _objectStructure = signal<ObjectStructureNode>({\r\n id : \"\",\r\n name : \"\",\r\n parent: \"\"\r\n });\r\n\r\n @ViewChild(BimplusFlatTreeComponent) treeComponent: BimplusFlatTreeComponent | null = null;\r\n \r\n private _convertObjectStructureNodeToTreeNode(node : ObjectStructureNode) : TreeNode{\r\n\r\n const treeNode : TreeNode = {\r\n name: node.name,\r\n id: node.id,\r\n parent: node.parent \r\n };\r\n\r\n if(node.children){\r\n treeNode.children = [];\r\n for(const child of node.children){\r\n const childTreeNode = this._convertObjectStructureNodeToTreeNode(child);\r\n treeNode.children.push(childTreeNode);\r\n }\r\n }\r\n\r\n return treeNode;\r\n }\r\n\r\n readonly treeData = computed<TreeNode[]>(() => {\r\n const objectStructure = this._objectStructure();\r\n if(!objectStructure){\r\n return [];\r\n }\r\n\r\n const root = this._convertObjectStructureNodeToTreeNode(objectStructure);\r\n if(!root){\r\n return [];\r\n }\r\n\r\n return [root];\r\n })\r\n\r\n\r\n private _findNode(id:string, node : ObjectStructureNode) : ObjectStructureNode | null{\r\n if(node.id == id){\r\n return node;\r\n }\r\n\r\n if(node.children){\r\n for(const child of node.children){\r\n const res = this._findNode(id, child);\r\n if(res){\r\n return res;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n handleSelectedNodes(nodes : FlatNode[]){\r\n if(nodes.length === 1){\r\n const selectedNode = this._findNode(nodes[0].id, this._objectStructure());\r\n if(selectedNode){\r\n this.nodeSelected.emit(selectedNode);\r\n }\r\n } \r\n }\r\n\r\n expandTree(){\r\n this.treeComponent?.expandTree();\r\n }\r\n\r\n @Output() nodeSelected = new EventEmitter<ObjectStructureNode>();\r\n}\r\n","<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes)=\"handleSelectedNodes($event)\"\r\n dataTestPrefix=\"object-structure-tree-\"\r\n></lib-bimplus-flat-tree>\r\n","import { Component, computed, EventEmitter, Input, Output, signal, ViewChild } from '@angular/core';\r\nimport { BimplusFlatTreeComponent } from '../bimplus-flat-tree/bimplus-flat-tree.component';\r\nimport { ComplexPropertiesNode } from './bimplus-object-complex-properties.interface';\r\nimport { FlatNode, TreeNode } from '../bimplus-flat-tree/bimplus-flat-tree.interface';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-object-complex-properties',\r\n standalone: true,\r\n imports: [BimplusFlatTreeComponent],\r\n templateUrl: './bimplus-object-complex-properties.component.html',\r\n styleUrl: './bimplus-object-complex-properties.component.less'\r\n})\r\nexport class BimplusObjectComplexPropertiesComponent {\r\n /** TODO remove @Input once signal inputs release from developer preview. */\r\n /* eslint-disable @angular-eslint/no-input-rename */\r\n @Input({ alias: 'complexProperties' })\r\n set complexPropertiesValue(node : ComplexPropertiesNode) {\r\n this._complexProperties.set(node);\r\n }\r\n\r\n private readonly _complexProperties = signal<ComplexPropertiesNode>({\r\n id: \"\",\r\n name: \"\",\r\n parent: \"\"\r\n });\r\n\r\n @ViewChild(BimplusFlatTreeComponent) treeComponent: BimplusFlatTreeComponent | null = null;\r\n\r\n readonly treeData = computed<TreeNode[]>(() => {\r\n const complexProperties = this._complexProperties();\r\n if(!complexProperties) {\r\n return [];\r\n }\r\n\r\n const root = this._convertObjectStructureNodeToTreeNode(complexProperties);\r\n if(!root) {\r\n return [];\r\n }\r\n\r\n return [root];\r\n })\r\n\r\n private _convertObjectStructureNodeToTreeNode(node : ComplexPropertiesNode) : TreeNode{\r\n\r\n const treeNode : TreeNode = {\r\n name: node.name,\r\n id: node.id,\r\n parent: node.parent \r\n };\r\n\r\n if(node.children){\r\n treeNode.children = [];\r\n for(const child of node.children){\r\n const childTreeNode = this._convertObjectStructureNodeToTreeNode(child);\r\n treeNode.children.push(childTreeNode);\r\n }\r\n }\r\n\r\n return treeNode;\r\n }\r\n\r\n\r\n private _findNode(id:string, node : ComplexPropertiesNode) : ComplexPropertiesNode | null{\r\n if(node.id == id){\r\n return node;\r\n }\r\n\r\n if(node.children){\r\n for(const child of node.children){\r\n const res = this._findNode(id, child);\r\n if(res){\r\n return res;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n handleSelectedNodes(nodes : FlatNode[]){\r\n if(nodes.length === 1){\r\n const selectedNode = this._findNode(nodes[0].id, this._complexProperties());\r\n if(selectedNode){\r\n this.nodeSelected.emit(selectedNode);\r\n }\r\n } \r\n }\r\n\r\n expandTree(){\r\n this.treeComponent?.expandTree();\r\n }\r\n\r\n @Output() nodeSelected = new EventEmitter<ComplexPropertiesNode>();\r\n}\r\n","<lib-bimplus-flat-tree\r\n paddingIndent=\"1.4rem\"\r\n [treeData]=\"treeData()\"\r\n enableParentHighlighting=\"false\"\r\n (selectedNodes)=\"handleSelectedNodes($event)\"\r\n dataTestPrefix=\"object-complex-properties-tree-\"\r\n></lib-bimplus-flat-tree>\r\n","import * as WebSdk from 'bimplus-websdk';\r\n\r\nexport interface ObjectStructureNode{\r\n id: string;\r\n children? : ObjectStructureNode[];\r\n name: string;\r\n parent: string;\r\n}\r\n\r\nexport class ObjectStructureNodeBuilder{\r\n static createFromResponse(response : WebSdk.ObjectTopologyResponse) : ObjectStructureNode{\r\n const node : ObjectStructureNode = {\r\n id : response.id,\r\n name : response.name ? `${response.type}(${response.name})` : response.type,\r\n parent : response.parent\r\n }\r\n\r\n if(response.children){\r\n node.children = [];\r\n for(const child of response.children){\r\n node.children.push(ObjectStructureNodeBuilder.createFromResponse(child as WebSdk.ObjectTopologyResponse));\r\n }\r\n }\r\n\r\n return node;\r\n }\r\n}","import * as WebSdk from 'bimplus-websdk';\r\n\r\nexport interface ComplexPropertiesNode{\r\n id: string;\r\n children? : ComplexPropertiesNode[];\r\n name: string;\r\n parent: string;\r\n}\r\n\r\nexport class ComplexPropertiesNodeBuilder{\r\n static createFromResponse(response : WebSdk.ObjectComplexPropertyTopologyResponse) : ComplexPropertiesNode{\r\n const node : ComplexPropertiesNode = {\r\n id : response.id,\r\n name : response.type ? response.type : response.name,\r\n parent : response.parent\r\n }\r\n\r\n if(response.children){\r\n node.children = [];\r\n for(const child of response.children){\r\n node.children.push(ComplexPropertiesNodeBuilder.createFromResponse(child as WebSdk.ObjectComplexPropertyTopologyResponse));\r\n }\r\n }\r\n\r\n return node;\r\n }\r\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport * as WebSdk from 'bimplus-websdk';\r\nimport { BehaviorSubject, from } from 'rxjs';\r\nimport { BimplusLocalizedWidgetComponent } from '../../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { ExpansionPanelComponent } from '../../expansion-panel/expansion-panel.component';\r\nimport { ExpansionPanelHeaderComponent } from '../../expansion-panel-header/expansion-panel-header.component';\r\nimport { FilterCriterium, MaxFilterCriteria } from '../bimplus-object-navigator.interface';\r\nimport { BimplusObjectStructureComponent } from '../../bimplus-object-structure/bimplus-object-structure.component';\r\nimport { BimplusObjectComplexPropertiesComponent } from '../../bimplus-object-complex-properties/bimplus-object-complex-properties.component';\r\nimport { ObjectStructureNode, ObjectStructureNodeBuilder } from '../../bimplus-object-structure/bimplus-object-structure.interface';\r\nimport { ComplexPropertiesNode, ComplexPropertiesNodeBuilder } from '../../bimplus-object-complex-properties/bimplus-object-complex-properties.interface';\r\nimport { CriteriaSelectObjectAttribute, CriteriaSelectObjectAttributeGroup } from './criteria-select-object-properties.interface';\r\n\r\n@Component({\r\n selector: 'lib-criteria-select-object-properties',\r\n standalone: true,\r\n imports: [ ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent],\r\n templateUrl: './criteria-select-object-properties.component.html',\r\n styleUrl: './criteria-select-object-properties.component.less'\r\n})\r\nexport class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWidgetComponent implements OnInit {\r\n\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n\r\n ngOnInit() {\r\n this._currentPropertiesObjectId$.subscribe({\r\n next: (id) => {\r\n if(id){\r\n this._createObjectProperties(id, this.revision)\r\n }\r\n }\r\n });\r\n\r\n this._currentObjectId$.subscribe({\r\n next: (id) => {\r\n this._currentPropertiesObjectId$.next(id);\r\n this._createComplexPropertiestructure(id, this.revision);\r\n }\r\n });\r\n\r\n }\r\n\r\n @Input()\r\n api : WebSdk.Api | null = null;\r\n\r\n @Input()\r\n set rootObjectId(id : string){\r\n this._currentObjectId$.next(id);\r\n this._createObjectStructure(id, this.revision);\r\n\r\n this._rootObjectId = id;\r\n }\r\n\r\n get rootObjectId() : string{\r\n return this._rootObjectId;\r\n }\r\n\r\n @Input()\r\n revision : number | undefined = undefined;\r\n\r\n private readonly _currentObjectId$ = new BehaviorSubject<string> (\"\");\r\n\r\n private readonly _currentPropertiesObjectId$ = new BehaviorSubject<string> (\"\");\r\n\r\n objectAttributeGroups : CriteriaSelectObjectAttributeGroup[] = [];\r\n\r\n MaxFilterCriteria = MaxFilterCriteria; // For exposure to template\r\n\r\n private _rootObjectId : string = \"\";\r\n\r\n @Input()\r\n set filterCriteria(criteria : FilterCriterium[]){\r\n this._filterCriteria = criteria;\r\n this._syncAttributeStatesFromCriteria();\r\n }\r\n\r\n @Output() filterCriteriaChange = new EventEmitter<FilterCriterium[]>();\r\n\r\n get filterCriteria(){\r\n return this._filterCriteria;\r\n }\r\n\r\n private _filterCriteria : FilterCriterium[] = [];\r\n\r\n private _objectStructure : ObjectStructureNode | null = null;\r\n\r\n get objectStructure(): ObjectStructureNode | null{\r\n return this._objectStructure\r\n }\r\n\r\n private _complexProperties : ComplexPropertiesNode | null = null;\r\n\r\n get complexProperties() : ComplexPropertiesNode | null{\r\n return this._complexProperties;\r\n }\r\n\r\n toggleAttribute(attrib : CriteriaSelectObjectAttribute){\r\n attrib.checked = !attrib.checked;\r\n if(attrib.checked === false){\r\n attrib.valueChecked = false;\r\n }\r\n\r\n this.handleFilterCriteriumAttributeStateChange(attrib);\r\n }\r\n\r\n toggleAttributeValue(attrib : CriteriaSelectObjectAttribute){\r\n attrib.valueChecked = !attrib.valueChecked;\r\n attrib.checked = attrib.valueChecked;\r\n\r\n this.handleFilterCriteriumAttributeStateChange(attrib);\r\n }\r\n\r\n handleFilterCriteriumAttributeStateChange(attrib : CriteriaSelectObjectAttribute){\r\n\r\n const index = this.filterCriteria.findIndex(x=>x.id === attrib.id);\r\n if(index>=0){\r\n if(attrib.checked === false || attrib.valueChecked === false){\r\n this.filterCriteria.splice(index, 1);\r\n this.filterCriteriaChange.emit(this.filterCriteria);\r\n }\r\n }\r\n else if(this.filterCriteria.length < MaxFilterCriteria){\r\n\r\n let substring = `[I][${attrib.id}].Value`;\r\n\r\n if(attrib.valueChecked){\r\n substring += `[F][0]=${attrib.value}`;\r\n }\r\n\r\n this.filterCriteria.push({\r\n name : attrib.name,\r\n value : attrib.valueChecked ? attrib.value : undefined,\r\n id : attrib.id,\r\n subString : substring\r\n });\r\n\r\n this.filterCriteriaChange.emit(this.filterCriteria);\r\n }\r\n }\r\n\r\n handleObjectStructureNodeSelected(node : ObjectStructureNode){\r\n this._currentObjectId$.next(node.id);\r\n }\r\n\r\n handleComplexPropertyNodeSelected(node : ComplexPropertiesNode){\r\n this._currentPropertiesObjectId$.next(node.id);\r\n }\r\n\r\n private _createObjectProperties(objectId : string, revision : number | undefined){\r\n this._loadObjectProperties(objectId, revision)?.subscribe({\r\n\r\n // properties response is badly structured, nearly impossible to create class structure from it. Therefore using shortcut\r\n // any for json response\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n next: (propertiesData : any) => {\r\n this.objectAttributeGroups = this._createAttributeGroupsFromResponse(propertiesData);\r\n this._syncAttributeStatesFromCriteria();\r\n },\r\n error: () =>{\r\n this.objectAttributeGroups = [];\r\n }\r\n }\r\n )\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _createAttributeGroupsFromResponse(propertiesData : any){\r\n\r\n const groups : Array<CriteriaSelectObjectAttributeGroup> = [];\r\n let localizedAttribGroups = null;\r\n if(propertiesData.localizedAttributeGroups){\r\n localizedAttribGroups = propertiesData.localizedAttributeGroups;\r\n }\r\n\r\n if (!propertiesData.attributes){\r\n return groups;\r\n }\r\n\r\n const attribGroups = propertiesData.attributes;\r\n for(const [groupName, attribsObject] of Object.entries(attribGroups)){\r\n\r\n const newGroup : CriteriaSelectObjectAttributeGroup = {\r\n name : groupName,\r\n expanded : false,\r\n attributes : []\r\n };\r\n\r\n if(localizedAttribGroups?.[groupName]){\r\n newGroup.name = localizedAttribGroups[groupName];\r\n }\r\n\r\n if(!attribsObject){\r\n continue;\r\n }\r\n\r\n for(const attrib of Object.values(attribsObject)){\r\n\r\n const newAttrib : CriteriaSelectObjectAttribute = {\r\n id : attrib.id,\r\n name : attrib.name,\r\n description : attrib.description,\r\n value : attrib.value,\r\n checked: false,\r\n valueChecked : false,\r\n group : attrib.group\r\n }\r\n\r\n newGroup.attributes.push(newAttrib);\r\n }\r\n\r\n groups.push(newGroup);\r\n }\r\n\r\n return groups;\r\n }\r\n\r\n private _syncAttributeStatesFromCriteria(){\r\n this.objectAttributeGroups.forEach(group=>{\r\n group.attributes.forEach(attrib=>{\r\n const criteria = this._filterCriteria.find(x=>x.id == attrib.id)\r\n if(criteria){\r\n attrib.checked = true;\r\n attrib.valueChecked = criteria.value !== undefined;\r\n }else{\r\n attrib.checked = false;\r\n attrib.valueChecked = false;\r\n }\r\n })\r\n })\r\n }\r\n\r\n private _loadObjectProperties(objectId : string, revision : number | undefined){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n return from(this.api.objects.get(objectId, revision, \"8\", undefined, false, undefined ));\r\n }\r\n\r\n private _loadObjectStructure(objectId : string, revision : number | undefined){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n return from(this.api.objects.getTopology(objectId, revision, false, false, undefined));\r\n }\r\n\r\n private _loadObjectComplexPropertiesStructure(objectId : string, revision : number | undefined){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n return from(this.api.objects.getComplexPropertiesTopology(objectId, revision));\r\n }\r\n\r\n private _createComplexPropertiestructure(objectId : string, revision : number | undefined){\r\n this._loadObjectComplexPropertiesStructure(objectId, revision)?.subscribe({\r\n next :(structureData)=>{\r\n if(structureData){\r\n const complexProps = ComplexPropertiesNodeBuilder.createFromResponse(structureData);\r\n if(complexProps?.children?.length){\r\n this._complexProperties = complexProps;\r\n }else{\r\n this._complexProperties = null;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n private _createObjectStructure(objectId : string, revision : number | undefined){\r\n this._loadObjectStructure(objectId, revision)?.subscribe({\r\n next :(structureData)=>{\r\n if(structureData){\r\n this._objectStructure = ObjectStructureNodeBuilder.createFromResponse(structureData);\r\n }\r\n }\r\n })\r\n }\r\n}\r\n","<!-- Object structure-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object structure\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure>\r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object multiproperties tree\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties> \r\n </lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object properties\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\"> {{attribGroup.name}}</span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.name}}</div>\r\n </div>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n @if(attrib.value){\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.value}}</div>\r\n }@else {\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">...</div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel> \r\n }\r\n </lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->","import { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { BimplusFlatTreeComponent } from '../../bimplus-flat-tree/bimplus-flat-tree.component';\r\nimport { FlatNode, TreeNode } from '../../bimplus-flat-tree/bimplus-flat-tree.interface';\r\nimport * as WebSdk from 'bimplus-websdk';\r\n\r\ntype TreeNodesLookup = Record<string, TreeNode>;\r\ntype TreeNodeObjectCounts = Record<string, number>;\r\n\r\n@Component({\r\n selector: 'lib-object-filter-result',\r\n standalone: true,\r\n imports: [BimplusFlatTreeComponent],\r\n templateUrl: './object-filter-result.component.html',\r\n styleUrl: './object-filter-result.component.less'\r\n})\r\nexport class ObjectFilterResultComponent implements AfterViewInit {\r\n\r\n // #region public fields\r\n @ViewChild(BimplusFlatTreeComponent) treeComponent: BimplusFlatTreeComponent | null = null;\r\n \r\n @Input()\r\n set filterResult(res : WebSdk.ObjectFilterStructureResponse | null){\r\n this._filterResult = res;\r\n this._updateTreeData();\r\n }\r\n\r\n @Input()\r\n set selectedObjects(selectedObjects: string[]){\r\n this._selectedObjects = selectedObjects;\r\n this._syncSelectedObjects();\r\n }\r\n\r\n get treeData(){\r\n return this._treeData;\r\n }\r\n\r\n @Output() nodeSelectionChanged = new EventEmitter<string[]>();\r\n @Output() nodeDoubleClicked = new EventEmitter<string>();\r\n @Output() nodeMouseEntered = new EventEmitter<string>();\r\n @Output() nodeMouseLeft = new EventEmitter<string>();\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n ngAfterViewInit(): void {\r\n if(this._treeData && this._treeData.length>0){\r\n this._expandToObjectLevel(this._treeData[0]);\r\n }\r\n }\r\n\r\n handleSelectedNodes(nodes : FlatNode[]){\r\n this.nodeSelectionChanged.emit(nodes.map(x=>x.id));\r\n }\r\n\r\n\r\n getNodeObjectCounter(id: string){\r\n return this._treeNodeObjectCounts[id];\r\n }\r\n\r\n dblClickedObjectNode(node: TreeNode){\r\n this.nodeDoubleClicked.emit(node.id);\r\n }\r\n\r\n mouseEnterObjectNode(node: TreeNode){\r\n this.nodeMouseEntered.emit(node.id);\r\n }\r\n\r\n mouseLeaveObjectNode(node: TreeNode){\r\n this.nodeMouseLeft.emit(node.id);\r\n }\r\n\r\n expandToObjectLevel(){\r\n if(this.treeData.length === 0)\r\n return;\r\n \r\n this._expandToObjectLevel(this._treeData[0]);\r\n }\r\n\r\n // #endregion public methods\r\n\r\n // #region private fields\r\n private _filterResult : WebSdk.ObjectFilterStructureResponse | null = null;\r\n private _treeData : TreeNode[] = [];\r\n private _treeNodesLookup : TreeNodesLookup = {};\r\n private _treeNodeObjectCounts: TreeNodeObjectCounts = {};\r\n private _selectedObjects : string[] = [];\r\n // #endregion private fields\r\n\r\n // #region private methods\r\n private _syncSelectedObjects(){\r\n\r\n const nodes : TreeNode[] = []\r\n\r\n for(const id of this._selectedObjects){\r\n const treeNode = this._treeNodesLookup[id];\r\n if(treeNode){\r\n nodes.push(treeNode);\r\n }\r\n }\r\n\r\n this.treeComponent?.reset_selection();\r\n\r\n for(const node of nodes){\r\n this.treeComponent?.select_node(node.id);\r\n }\r\n\r\n }\r\n\r\n\r\n private _updateObjectCounters(){\r\n this._treeNodeObjectCounts = {};\r\n this._countObjects(this.treeData[0]);\r\n }\r\n\r\n private _countObjects(node: TreeNode){\r\n if(node.nodeType && node.nodeType === \"objectNode\")\r\n return 1;\r\n \r\n let count = 0;\r\n if(!node.children)\r\n return 0;\r\n\r\n for(const child of node.children){\r\n if(!child)\r\n continue;\r\n\r\n count += this._countObjects(child);\r\n }\r\n\r\n this._treeNodeObjectCounts[node.id] = count;\r\n return count;\r\n }\r\n\r\n private _updateTreeData(){\r\n if(!this._filterResult){\r\n return;\r\n }\r\n\r\n this._treeNodesLookup = {};\r\n this._treeData = [this._convertFilterResultToTreeNode(this._filterResult.structure, this._treeNodesLookup)];\r\n this._updateObjectCounters();\r\n }\r\n\r\n private _convertFilterResultToTreeNode(node : WebSdk.StructureNode, nodesLookup : TreeNodesLookup | undefined = undefined) : TreeNode{\r\n\r\n const treeNode : TreeNode = {\r\n name: node.name,\r\n id: node.id,\r\n parent: node.parent \r\n };\r\n\r\n if(node.children){\r\n treeNode.children = [];\r\n for(const child of node.children){\r\n const childTreeNode = this._convertFilterResultToTreeNode(child, nodesLookup);\r\n treeNode.children.push(childTreeNode);\r\n }\r\n }\r\n \r\n if(!treeNode.parent){\r\n treeNode.nodeType = \"rootNode\";\r\n }else if(node.type === \"Structure\"){\r\n treeNode.nodeType = \"structureNode\";\r\n }else{\r\n treeNode.nodeType = \"objectNode\"\r\n }\r\n\r\n if(nodesLookup){\r\n nodesLookup[treeNode.id] = treeNode;\r\n }\r\n\r\n return treeNode;\r\n }\r\n\r\n private _expandToObjectLevel(node : TreeNode){\r\n if(node.children){\r\n for(const child of node.children){\r\n if(child.nodeType && child.nodeType === \"objectNode\"){\r\n return;\r\n }else{\r\n this._expandToObjectLevel(child);\r\n }\r\n \r\n }\r\n }\r\n\r\n this.treeComponent?.expand_node(node.id);\r\n }\r\n // #endregion private methods\r\n\r\n}\r\n","<lib-bimplus-flat-tree\n paddingIndent=\"1.4rem\"\n [treeData]=\"treeData\"\n enableParentHighlighting=\"false\"\n oneLevelMultiSelect=\"false\"\n multiSelect=\"true\"\n dataTestPrefix=\"object-filter-result-tree-\"\n (selectedNodes)=\"handleSelectedNodes($event)\"\n [customNodeTemplate]=\"objFilterResultNode\"\n>\n</lib-bimplus-flat-tree>\n\n<ng-template #objFilterResultNode let-node='node'>\n @switch (node.nodeType) {\n @case (\"rootNode\") {\n <div class=\"object-navigator-filter-result-root-node noselect\"> {{node.name}} &nbsp;&#40; {{getNodeObjectCounter(node.id)}} &#41;</div>\n }\n @case (\"structureNode\") {\n <div class=\"noselect\"> {{node.name}} &nbsp;&#40; {{getNodeObjectCounter(node.id)}} &#41;</div>\n }\n @case (\"objectNode\") {\n <span class=\"noselect\">\n <div class=\"noselect\" (dblclick)=\"dblClickedObjectNode(node)\" (mouseenter)=\"mouseEnterObjectNode(node)\" (mouseleave)=\"mouseLeaveObjectNode(node)\">\n {{node.name}}\n </div>\n </span> \n }\n }\n</ng-template>\n","import { FilterCriterium } from \"../components/bimplus-object-navigator/bimplus-object-navigator.interface\";\n\nconst DivsionIDSubstring = 'tabAttribElement.DivisionID';\n\nexport class FilterString {\n\n constructor(filterString: string = \"\", maxFilterCriteria: number = 5){\n this._filterString = filterString;\n this._maxFilterCriteria = maxFilterCriteria;\n }\n\n get filterString(){\n return this._filterString;\n }\n\n private _filterString : string = \"\";\n private _maxFilterCriteria : number = 5;\n\n fromFilterCriteria(criteria : FilterCriterium[]){\n this._filterString = `[I]${DivsionIDSubstring}`;\n \n for(const criterium of criteria){\n this._filterString+=criterium.subString;\n }\n\n return this._filterString;\n }\n\n getReadableValuesFromFilterCriteria(criteria : FilterCriterium[]) : Record<string,string>{\n const readableValues : Record<string,string> = {};\n for(const criterium of criteria){\n if(criterium.id && criterium.name)\n readableValues[criterium.id] = criterium.name;\n }\n\n return readableValues;\n }\n\n toFilterCriteria(readableValues: Record<string,string> | undefined = undefined): FilterCriterium[]{\n const criteria : FilterCriterium[] = [];\n\n let firstModelIdCriteriaSkipped = false;\n\n const parts = this._filterString.split('[I]');\n for(const part of parts){\n if(part.length === 0){\n continue;\n }\n\n if(part.includes(DivsionIDSubstring) && !firstModelIdCriteriaSkipped){\n firstModelIdCriteriaSkipped = true;\n continue;\n }\n\n criteria.push(this._parseFilterSubstring(part, readableValues));\n if(criteria.length === this._maxFilterCriteria){\n break;\n }\n }\n\n return criteria;\n }\n\n private _parseFilterSubstring(subString: string, readableValues: Record<string,string> | undefined = undefined): FilterCriterium{\n let name = subString;\n let id : string | undefined = undefined;\n\n const indexOpenBrackets = subString.indexOf('[');\n const indexCloseBrackets = subString.indexOf(']');\n\n if(indexOpenBrackets >= 0 && indexCloseBrackets >=0 && indexCloseBrackets > indexOpenBrackets){\n const readableId = subString.slice(indexOpenBrackets+1, indexCloseBrackets);\n id = readableId;\n if(readableId && readableValues){\n const readableString = readableValues[readableId];\n if(readableString){\n name = readableString;\n }\n } \n }else if(subString.includes('.')){\n const splitted = subString.split('.');\n name = splitted[splitted.length-1];\n }\n\n return {\n name: name,\n subString : \"[I]\"+subString,\n id : id\n }\n }\n\n}\n","import * as WebSdk from 'bimplus-websdk';\nimport { Observable, concatMap, from, map } from 'rxjs';\n\nexport class FilterStructureFetcher {\n\n static fetchObjectFilterStructureFromSelection(projectId: string, filter: WebSdk.ObjectFilter, selectionObject: WebSdk.ExportObject, api: WebSdk.Api): Observable<WebSdk.ObjectFilterStructureResponse> {\n const isTemporary = !filter.id;\n let filterId = filter.id ? filter.id : \"\";\n\n let observeable: Observable<WebSdk.ObjectFilterStructureResponse> | null = null;\n\n if (!isTemporary) {\n observeable = from(api.exportService.createExportSelection(projectId, JSON.stringify(selectionObject))).pipe(\n concatMap(selectionObj => {\n if (!selectionObj?.id) {\n throw new Error('Failed to create selection object');\n }\n return from(api.objectFilters.getSelectionFilteredObjects(selectionObj.id, filterId, undefined, undefined));\n })\n )\n } else {\n observeable = from(api.objectFilters.post(JSON.stringify(filter), projectId)).pipe(\n concatMap(filterObj => {\n if (!filterObj?.id) {\n throw new Error('Failed to create temporary filter object');\n }\n\n filterId = filterObj.id;\n\n return from(api.exportService.createExportSelection(projectId, JSON.stringify(selectionObject)));\n }),\n concatMap(selectionObj => {\n if (!selectionObj?.id) {\n throw new Error('Failed to create selection object');\n }\n return from(api.objectFilters.getSelectionFilteredObjects(selectionObj.id, filterId, undefined, undefined)).pipe(\n map((filterResult) => {\n api.objectFilters.delete(filterId);\n return filterResult;\n })\n );\n })\n )\n }\n return observeable;\n }\n\n}\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport * as WebSdk from 'bimplus-websdk';\r\nimport { BehaviorSubject ,from } from 'rxjs';\r\nimport { CommonModule} from '@angular/common';\r\nimport { FilterCriteriaSelectionMode, FilterCriterium, FilterType, MaxFilterCriteria } from './bimplus-object-navigator.interface';\r\nimport { FilterCriteriumComponent } from './filter-criterium/filter-criterium.component';\r\nimport { ExpansionPanelComponent } from '../expansion-panel/expansion-panel.component';\r\n\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { BimplusSidenavDrawerContentComponent } from '../bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component';\r\nimport { ExpansionPanelHeaderComponent } from '../expansion-panel-header/expansion-panel-header.component';\r\nimport { ExpansionPanelHeaderActionsComponent } from '../expansion-panel-header-actions/expansion-panel-header-actions.component';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { CriteriaSelectObjectPropertiesComponent } from './criteria-select-object-properties/criteria-select-object-properties.component';\r\nimport { ObjectFilterResultComponent } from './object-filter-result/object-filter-result.component';\r\nimport { BimplusContextMenuComponent } from '../bimplus-context-menu/bimplus-context-menu.component'\r\nimport { BimplusContextMenuItem } from '../bimplus-context-menu/bimplus-context-menu.interface';\r\nimport { FilterString } from '../../utils/filterString';\r\nimport { FilterStructureFetcher } from '../../utils/filterStructureFetcher';\r\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component'\r\n\r\n@Component({\r\n selector: 'lib-bimplus-object-navigator',\r\n standalone: true,\r\n imports: [ CommonModule\r\n , FormsModule\r\n , NgSelectModule\r\n , FilterCriteriumComponent\r\n , ExpansionPanelComponent\r\n , ExpansionPanelHeaderComponent\r\n , ExpansionPanelHeaderActionsComponent\r\n , BimplusSidenavDrawerContentComponent\r\n , TranslateModule\r\n , CriteriaSelectObjectPropertiesComponent\r\n , BimplusContextMenuComponent\r\n , ObjectFilterResultComponent\r\n , BimplusScrollableContainerComponent\r\n ],\r\n templateUrl: './bimplus-object-navigator.component.html',\r\n styleUrl: './bimplus-object-navigator.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusObjectNavigatorComponent extends BimplusLocalizedWidgetComponent implements OnInit {\r\n\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n\r\n // #region public fields\r\n\r\n @Input()\r\n hideFilterContextMenu: boolean = false;\r\n\r\n @Input()\r\n filterContextMenu: Array<BimplusContextMenuItem> = [];\r\n\r\n @Input()\r\n set filterTypes(types : Array<FilterType>){\r\n this._filterTypes = types;\r\n if(this._filterTypes.length >0)\r\n this.activeFilterType = this._filterTypes[0];\r\n }\r\n\r\n get filterTypes():Array<FilterType>{\r\n return this._filterTypes;\r\n }\r\n\r\n set activeFilterType(value : FilterType | null){\r\n this.activeFilterTypeSubject$.next(value);\r\n }\r\n\r\n get activeFilterType() : FilterType | null{\r\n return this.activeFilterTypeSubject$.getValue();\r\n }\r\n\r\n activeFilterTypeSubject$ = new BehaviorSubject<FilterType | null> (null);\r\n activeFilterSubject$ = new BehaviorSubject<WebSdk.ObjectFilter | null> (null);\r\n\r\n set activeFilter(filter : WebSdk.ObjectFilter | null){\r\n\r\n if(filter && !filter.id){ // Switching to custom filter will restore the default custom filter\r\n this._setDefaultCustomFilterString(filter);\r\n }\r\n\r\n this.activeFilterSubject$.next(filter);\r\n }\r\n\r\n get activeFilter() : WebSdk.ObjectFilter | null{\r\n return this.activeFilterSubject$.getValue();\r\n }\r\n\r\n @Input()\r\n filters : WebSdk.ObjectFiltersResponse | null = null;\r\n\r\n filterCriteria : FilterCriterium[] = []\r\n\r\n @Input()\r\n api : WebSdk.Api | null = null;\r\n\r\n @Input()\r\n projectId : string = ''\r\n\r\n @HostBinding('class.object-navigator') objNavClassClass: boolean = true;\r\n\r\n filterCriteriaSelectionMode$ = new BehaviorSubject<FilterCriteriaSelectionMode>(FilterCriteriaSelectionMode.None);\r\n\r\n @Output()\r\n filterCriteriaSelectionModeChanged = new EventEmitter<FilterCriteriaSelectionMode>();\r\n\r\n @Input()\r\n selectedObjectId : string | null = null;\r\n\r\n @Input()\r\n selectedObjects : string[] = [];\r\n\r\n @Input()\r\n selectionObject : WebSdk.ExportObject | null = null;\r\n\r\n get filterResult(){\r\n return this._filterResult;\r\n }\r\n\r\n @Output()\r\n filterResultObjectSelectionChanged = new EventEmitter<string[]>();\r\n\r\n @Output()\r\n filterResultObjectDoubleClicked = new EventEmitter<string>();\r\n\r\n @Output()\r\n filterResultObjectMouseEntered = new EventEmitter<string>();\r\n\r\n @Output()\r\n filterResultObjectMouseLeft = new EventEmitter<string>();\r\n\r\n @Output()\r\n pipetteActiveStatus = new EventEmitter<boolean>();\r\n\r\n FilterCriteriaSelectionMode = FilterCriteriaSelectionMode; // Expose enum to template\r\n\r\n isLoadingResults = false;\r\n\r\n // #endregion public fields\r\n\r\n // #region private fields\r\n private _filterResult : WebSdk.ObjectFilterStructureResponse | null = null;\r\n private _filterTypes : Array<FilterType> = [];\r\n // #endregion private fields\r\n\r\n // #region public methods\r\n ngOnInit() {\r\n\r\n this.activeFilterTypeSubject$.subscribe({\r\n next: (v) => {\r\n if(!this.projectId || !this.api || !v){\r\n return;\r\n }\r\n\r\n this.activeFilter = null;\r\n\r\n this.loadCurrentLayerFilters(this.projectId, v.id)?.subscribe({\r\n next: (value) => {\r\n this.filters = [this._createDefaultCustomFilter(v.id), ...value];\r\n this.activeFilter = this.filters[0];\r\n },\r\n error: err => {throw new Error (err)},\r\n }\r\n )}\r\n });\r\n\r\n this.activeFilterSubject$.subscribe({\r\n next: (v) => {\r\n if(!v)\r\n return;\r\n\r\n this.filterCriteria = this.parseFilterString(v);\r\n }\r\n });\r\n\r\n this.filterCriteriaSelectionMode$.subscribe({\r\n next: (v) => { this.filterCriteriaSelectionModeChanged.emit(v)}\r\n })\r\n\r\n if( this.filterTypes.length > 0){\r\n this.activeFilterType = this.filterTypes[0];\r\n }\r\n }\r\n\r\n loadCurrentLayerFilters(projectId : string, layerId : string){\r\n if(!this.api){\r\n return;\r\n }\r\n return from(this.api.objectFilters.get(layerId,projectId));\r\n }\r\n\r\n parseFilterString(filter : WebSdk.ObjectFilter){\r\n const filterString = new FilterString(filter.filterString, MaxFilterCriteria);\r\n return filterString.toFilterCriteria(filter.readableValues);\r\n }\r\n\r\n deleteFilterCriterium(index: number){\r\n this.filterCriteria.splice(index, 1);\r\n this.filterCriteria = [...this.filterCriteria];\r\n this.activateModifiedCustomFilter();\r\n }\r\n\r\n setFilterCriteriaSelectionMode(mode: FilterCriteriaSelectionMode) {\r\n const isSameMode = this.filterCriteriaSelectionMode$.getValue() === mode;\r\n this.filterCriteriaSelectionMode$.next(isSameMode ? FilterCriteriaSelectionMode.None : mode);\r\n this.handlePipetteActiveStatus(!isSameMode);\r\n }\r\n \r\n applyFilter(){\r\n this.filterCriteriaSelectionMode$.next(FilterCriteriaSelectionMode.None);\r\n this._filterResult = null;\r\n\r\n // Custom filter is selected\r\n if(this.activeFilter && !this.activeFilter.id){\r\n this.activeFilter.filterString = new FilterString().fromFilterCriteria(this.filterCriteria);\r\n }\r\n\r\n if(this.selectionObject){\r\n this._applySelectionObjectFilter(this.activeFilter);\r\n }\r\n }\r\n\r\n handleFilterResultSelectionChanged(selection : string[]){\r\n this.filterResultObjectSelectionChanged.emit(selection);\r\n }\r\n\r\n handleFilterResulObjectDoubleClicked(selection : string){\r\n this.filterResultObjectDoubleClicked.emit(selection);\r\n }\r\n\r\n\r\n handleFilterResulObjectMouseEntered(selection : string){\r\n this.filterResultObjectMouseEntered.emit(selection);\r\n }\r\n\r\n handleFilterResulObjectMouseLeft(selection : string){\r\n this.filterResultObjectMouseLeft.emit(selection);\r\n }\r\n\r\n handlePipetteActiveStatus(status: boolean) {\r\n this.pipetteActiveStatus.emit(status);\r\n }\r\n\r\n activateModifiedCustomFilter(){\r\n // When existing filter is changed, Custom filter will be selected and filter settings need to be cloned. Nothing is done when custom filter is already active\r\n if(this.activeFilter?.id && this.filters){\r\n\r\n // Copy filter string from current criteria settings to custom filter\r\n this.filters[0].filterString = new FilterString().fromFilterCriteria(this.filterCriteria);\r\n this.filters[0].readableValues = new FilterString().getReadableValuesFromFilterCriteria(this.filterCriteria);\r\n\r\n this.activeFilterSubject$.next(this.filters[0]);\r\n }\r\n }\r\n // #endregion public methods\r\n\r\n // #region private methods\r\n private _applySelectionObjectFilter(activeFilter : WebSdk.ObjectFilter | null){\r\n\r\n if(!this.api || !this.selectionObject || !activeFilter){\r\n return;\r\n }\r\n\r\n this.selectionObject.singleUse = true;\r\n this.selectionObject.selection.singleuse = true;\r\n\r\n this.isLoadingResults = true;\r\n\r\n FilterStructureFetcher.fetchObjectFilterStructureFromSelection(this.projectId, activeFilter, this.selectionObject, this.api).subscribe({\r\n next: (filterResult) => {\r\n this._filterResult = filterResult;\r\n this.isLoadingResults = false;\r\n }\r\n }\r\n );\r\n }\r\n\r\n private _setDefaultCustomFilterString(filter: WebSdk.ObjectFilter){\r\n const typeAttribId = \"a0e8ae2c-c869-4ec3-9019-25d3704be707\";\r\n filter.filterString = `[I][${typeAttribId}].Value`;\r\n filter.readableValues = {};\r\n filter.readableValues[typeAttribId] = \"Type\"; // Provide readable criterium name for type\r\n }\r\n\r\n private _createDefaultCustomFilter(disciplineID: string) : WebSdk.ObjectFilter{\r\n\r\n const filter = {\r\n module: \"00000000-0000-0000-0000-000000000000\",\r\n category: \"\",\r\n disciplineID: disciplineID,\r\n name: \"Custom filter\",\r\n filterString: \"\",\r\n isDefault: false,\r\n disableSortByModels: false,\r\n }\r\n\r\n this._setDefaultCustomFilterString(filter);\r\n return filter;\r\n }\r\n // #endregion private methods\r\n\r\n}\r\n","<lib-bimplus-sidenav-drawer-content [header]=\"'_Object navigator' | translate\"\r\n [isLoading]=\"isLoadingResults\"\r\n [loadingSpinnerText]=\"'_Loading_Filter_Results' | translate\"\r\n>\r\n <div class=\"object-navigator-content-container\">\r\n @if(filterTypes.length > 0){\r\n <div class=\"description\">\r\n {{\"_Select_an_object_using_Object_Picker\" | translate}}\r\n </div>\r\n <div class=\"object-navigator-filters-type\">\r\n <ng-select data-test=\"object-navigator-filter-types-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilterType\" [clearable]=\"false\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let type of filterTypes\" [value]=\"type\">{{type.name}}</ng-option>\r\n </ng-select>\r\n </div>\r\n <div class=\"object-navigator-filters-name\">\r\n <ng-select data-test=\"object-navigator-filters-name-dropdown\" class=\"object-navigator-dropdown\" [(ngModel)]=\"activeFilter\" [clearable]=\"false\" [disabled]=\"!filters\" [searchable]=\"false\">\r\n <ng-option *ngFor=\"let filter of filters\" [value]=\"filter\">{{filter.name}}</ng-option>\r\n </ng-select>\r\n\r\n @if(!hideFilterContextMenu){\r\n <lib-bimplus-context-menu class=\"object-navigator-filters-name-context-menu\"\r\n [items]=\"filterContextMenu\"\r\n *ngIf=\"filterContextMenu?.length\"\r\n >\r\n </lib-bimplus-context-menu>\r\n }\r\n\r\n </div>\r\n\r\n <lib-expansion-panel class=\"object-navigator-filter-criteria-panel\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-navigator-filter-criteria-header\">\r\n {{\"_Assign_Objects_Selection_Mode\" | translate}} &#40;{{filterCriteria.length}}&#41;\r\n </span>\r\n <lib-expansion-panel-header-actions>\r\n <div class=\"object-navigator-pick-object-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectObjectProperties? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n (keypress)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectObjectProperties)\"\r\n [title]=\"'_Object_Picker'| translate\"\r\n ></div>\r\n <!-- Commented until functionality will be implemented\r\n <div class=\"object-navigator-select-attributes-button\"\r\n [ngClass]=\"filterCriteriaSelectionMode$.getValue() === FilterCriteriaSelectionMode.SelectAttributes? 'active' : ''\"\r\n (click)=\"setFilterCriteriaSelectionMode(FilterCriteriaSelectionMode.SelectAttributes)\"\r\n ></div>-->\r\n </lib-expansion-panel-header-actions>\r\n </lib-expansion-panel-header>\r\n\r\n <div class=\"filter-criteria-container\">\r\n @for (criterium of filterCriteria; track criterium; let i = $index) {\r\n <app-filter-criterium\r\n [criterium] = \"criterium\"\r\n [indent]=\"i*0.8\"\r\n (deleteCriterium)=\"deleteFilterCriterium(i)\"\r\n ></app-filter-criterium>\r\n }\r\n </div>\r\n </lib-expansion-panel>\r\n\r\n <div class=\"object-navigator-apply-button-row\">\r\n <button class=\"primary-button\" [ngClass]=\"{'disabled': filterCriteria.length===0}\" [disabled]=\"filterCriteria.length===0\" (click)=\"applyFilter()\"> {{\"_Apply filter\" | translate}} </button>\r\n </div>\r\n\r\n <div class=\"object-navigator-separator\"></div>\r\n\r\n @switch(filterCriteriaSelectionMode$.getValue()){\r\n @case(FilterCriteriaSelectionMode.SelectObjectProperties){\r\n @if(!selectedObjectId){\r\n <p id=\"NoObjectSelected\">{{ \"_NoObjectSelected\" | translate}}</p>\r\n }@else{\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-criteria-select-object-properties\r\n [api]=\"api\"\r\n [selectedLanguage]=\"selectedLanguage\"\r\n [localizedStrings]=\"localizedStrings\"\r\n [(filterCriteria)]=\"filterCriteria\"\r\n [rootObjectId]=\"selectedObjectId\"\r\n (filterCriteriaChange)=\"activateModifiedCustomFilter()\"\r\n >\r\n </lib-criteria-select-object-properties>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n @case(FilterCriteriaSelectionMode.SelectAttributes){\r\n\r\n }\r\n @default{\r\n @if (filterResult) {\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <lib-object-filter-result\r\n [filterResult]=\"filterResult\"\r\n [selectedObjects]=\"selectedObjects\"\r\n (nodeSelectionChanged)=\"handleFilterResultSelectionChanged($event)\"\r\n (nodeDoubleClicked)=\"handleFilterResulObjectDoubleClicked($event)\"\r\n (nodeMouseEntered)=\"handleFilterResulObjectMouseEntered($event)\"\r\n (nodeMouseLeft)=\"handleFilterResulObjectMouseLeft($event)\"\r\n ></lib-object-filter-result>\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @else {\r\n <div data-test=\"object-navigator-no-filter-types-message\" class=\"object-navigator-no-filter-types\"> {{\"_No_visible_models_found\" | translate}} </div>\r\n }\r\n </div>\r\n</lib-bimplus-sidenav-drawer-content>\r\n","import {\n Component\n , ViewEncapsulation\n , Input\n , EventEmitter\n , Output\n , ElementRef\n , OnChanges\n , SimpleChanges\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ClickOutsideDirective } from '../../directives/click-outside/click-outside.directive';\nimport { TooltipMessageData, TooltipMessagePosition } from './bimplus-tooltip-message.interface'\n@Component({\n selector: 'lib-bimplus-tooltip-message',\n standalone: true,\n imports: [CommonModule, ClickOutsideDirective],\n templateUrl: './bimplus-tooltip-message.component.html',\n styleUrl: './bimplus-tooltip-message.component.less',\n encapsulation: ViewEncapsulation.ShadowDom\n})\n\nexport class BimplusTooltipMessageComponent implements OnChanges {\n private _element: HTMLElement;\n constructor(private el: ElementRef) {\n this._element = this.el.nativeElement.shadowRoot;\n }\n\n // Getter for _element\n public get element(): HTMLElement {\n return this._element;\n }\n\n @Input() messagePosition: TooltipMessagePosition = {\n posX: 0,\n posY: 0,\n };\n\n @Input() messageData: TooltipMessageData = {};\n\n @Input() messageVisibility: boolean = false;\n @Output() messageVisibilityChange = new EventEmitter<boolean>();\n\n protected _clickOutside() {\n this.messageVisibility = false;\n this.messageVisibilityChange.emit(this.messageVisibility)\n }\n\n //<<Calculation of the correct position of the tooltip\n private _resizeObserver!: ResizeObserver;\n protected _messageParentElement!: ElementRef;\n\n protected _parentWidth: number = 0;\n protected _parentHeight: number = 0;\n\n get messageParent(): ElementRef {\n return this._messageParentElement;\n }\n\n @Input() set messageParent(element: ElementRef) {\n this._messageParentElement = element;\n if(!this._messageParentElement) {\n return;\n }\n\n this._resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n this._parentWidth = width;\n this._parentHeight = height; \n }\n });\n\n this._resizeObserver.observe(this._messageParentElement.nativeElement);\n }\n\n tooltipRectangleIsOutOfParentRectangleX(tooltipRectangle: DOMRect, parentRectangle: DOMRect): boolean {\n return (tooltipRectangle.x + tooltipRectangle.width - parentRectangle.x - parentRectangle.width) > 0;\n }\n tooltipRectangleIsOutOfParentRectangleY(tooltipRectangle: DOMRect, parentRectangle: DOMRect): boolean {\n return (tooltipRectangle.y + tooltipRectangle.height - parentRectangle.y - parentRectangle.height) > 0;\n }\n\n correctTooltipPositionX(oldPosX: number, flippedX: boolean, oldPosY: number, flippedY: boolean): void {\n if(!this._messageParentElement) {\n return;\n }\n const _tooltipElement = this._element.querySelector(\".tooltip-message\");\n if(!_tooltipElement) {\n return;\n }\n const _tooltipRectangle = _tooltipElement.getBoundingClientRect();\n const _parentRectangle = this._messageParentElement.nativeElement.getBoundingClientRect();\n if(Math.abs(_tooltipRectangle.x + _tooltipRectangle.width - oldPosX - _parentRectangle.left) > 3) {\n this.messagePosition.posX = this.messagePosition.posX + oldPosX - (_tooltipRectangle.x + _tooltipRectangle.width);\n setTimeout(() => {\n this.correctTooltipPositionX(oldPosX, flippedX, oldPosY, flippedY);\n }, 0); \n } else if(flippedY && Math.abs(_tooltipRectangle.y + _tooltipRectangle.height - oldPosY - _parentRectangle.top) > 3) {\n setTimeout(() => {\n this.correctTooltipPositionY(oldPosX, flippedX, oldPosY, flippedY);\n }, 0); \n } else if(this.tooltipRectangleIsOutOfParentRectangleY(_tooltipRectangle, _parentRectangle)) {\n this.messagePosition.posY = this.messagePosition.posY - _tooltipRectangle.height;\n setTimeout(() => {\n this.correctTooltipPositionY(oldPosX, flippedX, oldPosY, true);\n }, 0);\n }\n }\n\n correctTooltipPositionY(oldPosX: number, flippedX: boolean, oldPosY: number, flippedY: boolean): void {\n if(!this._messageParentElement) {\n return;\n }\n const _tooltipElement = this._element.querySelector(\".tooltip-message\");\n if(!_tooltipElement) {\n return;\n }\n const _tooltipRectangle = _tooltipElement.getBoundingClientRect();\n const _parentRectangle = this._messageParentElement.nativeElement.getBoundingClientRect();\n if(Math.abs(_tooltipRectangle.y + _tooltipRectangle.height - oldPosY - _parentRectangle.top) > 3) {\n this.messagePosition.posY = this.messagePosition.posY + oldPosY - (_tooltipRectangle.y + _tooltipRectangle.height);\n setTimeout(() => {\n this.correctTooltipPositionY(oldPosX, flippedX, oldPosY, flippedY);\n }, 0); \n } else if(flippedX && Math.abs(_tooltipRectangle.x + _tooltipRectangle.width - oldPosX - _parentRectangle.left) > 3) {\n setTimeout(() => {\n this.correctTooltipPositionX(oldPosX, flippedX, oldPosY, flippedY);\n }, 0); \n } else if(this.tooltipRectangleIsOutOfParentRectangleX(_tooltipRectangle, _parentRectangle)) {\n this.messagePosition.posX = this.messagePosition.posX - _tooltipRectangle.width;\n setTimeout(() => {\n this.correctTooltipPositionX(oldPosX, true, oldPosY, flippedY);\n }, 0);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['messageVisibility']) {\n if(!changes['messageVisibility'].currentValue) {\n return;\n }\n setTimeout(() => {\n if(!this._messageParentElement) {\n return;\n }\n const _oldPosX = this.messagePosition.posX;\n const _oldPosY = this.messagePosition.posY;\n const _tooltipElement = this._element.querySelector(\".tooltip-message\");\n if(!_tooltipElement) {\n return;\n }\n const _tooltipRectangle = _tooltipElement.getBoundingClientRect();\n const _parentRectangle = this._messageParentElement.nativeElement.getBoundingClientRect();\n if(this.tooltipRectangleIsOutOfParentRectangleX(_tooltipRectangle, _parentRectangle)) {\n this.messagePosition.posX = this.messagePosition.posX - _tooltipRectangle.width;\n setTimeout(() => {\n this.correctTooltipPositionX(_oldPosX, true, _oldPosY, false);\n }, 0);\n } else if(this.tooltipRectangleIsOutOfParentRectangleY(_tooltipRectangle, _parentRectangle)) {\n this.messagePosition.posY = this.messagePosition.posY - _tooltipRectangle.height;\n setTimeout(() => {\n this.correctTooltipPositionY(_oldPosX, false, _oldPosY, true);\n }, 0);\n }\n }, 0);\n }\n }\n //Calculation of the correct position of the tooltip>>\n}\n","<div *ngIf=\"messageVisibility\"\n class=\"tooltip-message\"\n libClickOutside\n (clickOutside)=\"_clickOutside()\"\n [ngStyle]=\"{\n 'top.px': messagePosition.posY\n , 'left.px': messagePosition.posX\n }\"\n>\n <ng-content select=\".tooltip-message-title-content\"></ng-content>\n <div\n class=\"tooltip-message-title\"\n *ngIf=\"messageData && messageData.title\"\n >\n {{messageData.title}}\n </div>\n\n <ng-content select=\".tooltip-message-messages-content\"></ng-content>\n <div\n class=\"tooltip-message-messages\"\n *ngIf=\"messageData && messageData.messages\"\n >\n <ng-container *ngFor=\"let message of messageData.messages\">\n <ng-container *ngIf=\"message.separatingLine\">\n <div class=\"separating-line\"></div>\n </ng-container>\n <div class=\"tooltip-message-message\">\n <span\n *ngIf=\"message.label\"\n class=\"label\"\n [class.failed]=\"message.type==='failed'\"\n [class.success]=\"message.type==='success'\"\n >\n {{message.label}}\n </span>\n <span\n *ngIf=\"message.value\"\n class=\"value\"\n >\n <ng-container *ngIf=\"message.label\">:</ng-container>\n {{message.value}}\n </span>\n </div>\n </ng-container>\n </div>\n \n <ng-content select=\".tooltip-message-footer-content\"></ng-content>\n <div\n class=\"tooltip-message-footer\"\n *ngIf=\"messageData && messageData.footer\"\n >\n {{messageData.footer}}\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ViewEncapsulation, Input, Output, EventEmitter, booleanAttribute, OnChanges, SimpleChanges} from '@angular/core';\r\nimport {TranslateService, TranslateModule} from '@ngx-translate/core';\r\nimport {BimplusLocalizedWidgetComponent} from \"./../bimplus-localized-widget/bimplus-localized-widget.component\"\r\nimport { fireEvent } from '../../utils/utils';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-touch-menu',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n providers : [TranslateService],\r\n templateUrl: './bimplus-touch-menu.component.html',\r\n styleUrl: './bimplus-touch-menu.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusTouchMenuComponent extends BimplusLocalizedWidgetComponent implements OnChanges{\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n /**--------------------------------------------------------------------------\r\n * List of menu items\r\n * Note : action is used to identify action which should be executed\r\n --------------------------------------------------------------------------*/\r\n _menuItemsList = [\r\n { mode:\"touch\", class: \"icon-touch-mode-toolbar\", textId: \"_Touch_Mode\"},\r\n { mode:\"desktop\", class: \"icon-desktop-mode-toolbar\", textId: \"_Desktop_Mode\"},\r\n ];\r\n\r\n get _selectedItem() {\r\n return this._menuItemsList.find(item => item.mode == this.selectedMode);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * States\r\n --------------------------------------------------------------------------*/\r\n _menuOpened = false;\r\n \r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input({ transform: booleanAttribute }) isTouch : boolean = false;\r\n\r\n /**--------------------------------------------------------------------------\r\n * properties\r\n --------------------------------------------------------------------------*/\r\n @Input() selectedMode : string = 'desktop';\r\n\r\n /**--------------------------------------------------------------------------\r\n * Zoom selected event\r\n --------------------------------------------------------------------------*/\r\n @Output() bimplusTouchModeSelected = new EventEmitter<string>();\r\n\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['localizedStrings']) {\r\n this._localizedStrings.set(changes['localizedStrings'].currentValue); \r\n }\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * Item clicked\r\n --------------------------------------------------------------------------*/\r\n _menuItemClicked( mode: string ){\r\n fireEvent(this, \"bimplusTouchModeSelected\", mode);\r\n }\r\n\r\n /**--------------------------------------------------------------------------\r\n * toggle menu open\r\n --------------------------------------------------------------------------*/\r\n _toggleOpened(){\r\n this._menuOpened = !this._menuOpened;\r\n }\r\n}\r\n","<div\n class=\"bimcomp-overlay\"\n [ngClass]=\"_menuOpened ? 'open' : ''\"\n (click)=\"_toggleOpened()\"\n (keypress)=\"_toggleOpened()\"\n >\n</div>\n<div \n class=\"dropdown\"\n [ngClass]=\"{'open': _menuOpened, 'is-touch': isTouch}\"\n (click)=\"_toggleOpened()\"\n (keypress)=\"_toggleOpened()\"\n >\n <div class=\"dropdown-toggle\">\n <div \n class=\"main-icon\"\n [ngClass]=\"this._selectedItem?.class ? this._selectedItem?.class : ''\"\n ></div>\n <span class=\"caret\"></span>\n </div>\n <ul \n class=\"bimcomp-dropdown-menu\"\n [ngClass]=\"{'open':this._menuOpened}\">\n <li\n *ngFor=\"let item of _menuItemsList\"\n class=\"bimcomp-dropdown-menu-item\"\n [ngClass]=\"{'selected':this.selectedMode === item.mode}\"\n (click)=\"_menuItemClicked(item.mode)\"\n (keypress)=\"_menuItemClicked(item.mode)\"\n >\n <div \n class=\"icon\"\n [ngClass]=\"item.class\"\n ></div>\n <span>{{item.textId | translate}}</span>\n </li>\n </ul>\n</div>\n","import { Injectable } from '@angular/core';\r\nimport { LocalizedStrings } from './../types/types'\r\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageStringsService {\r\n\r\n // #region public fields\r\n set languageFilesUri(uri : string){\r\n this._languageFilesUri = uri;\r\n }\r\n private readonly defaultLang: string = 'en';\r\n currentLanguage$ = new BehaviorSubject<string> (this.defaultLang);\r\n currentLanguageStrings$ = new BehaviorSubject<LocalizedStrings>({});\r\n\r\n get currentLanguage() : string {\r\n return this.currentLanguage$.getValue();\r\n }\r\n\r\n set currentLanguageStrings(langStrings : LocalizedStrings){\r\n this.currentLanguageStrings$.next(langStrings);\r\n }\r\n\r\n get currentLanguageStrings() : LocalizedStrings {\r\n return this.currentLanguageStrings$.getValue();\r\n }\r\n // #endregion public fields\r\n\r\n // #region public methods\r\n async setCurrentLanguage(lang : string){\r\n this.currentLanguage$.next(lang);\r\n await this.fetchLanguageStrings(lang); \r\n }\r\n\r\n extractLocalizedStrings(stringIds : Array<string>) : LocalizedStrings {\r\n const obj : LocalizedStrings = {};\r\n for (const [key, value] of Object.entries(this.currentLanguageStrings)) {\r\n if(typeof value == 'string' && stringIds.find(x=>x === key)){\r\n obj[key] = value;\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n async fetchLanguageStrings(lang : string){\r\n const data = await fetch(`${this._languageFilesUri}/strings_${lang}.json`);\r\n const dataJSON = await data.json();\r\n // add missing translations from default language translations\r\n if (lang !== this.defaultLang) {\r\n const fallbackData = await fetch(`${this._languageFilesUri}/strings_en.json`);\r\n const fallbackDataJSON = await fallbackData?.json?.();\r\n const fallbackDataJSONIndexes = fallbackDataJSON && Object.keys(fallbackDataJSON);\r\n if (fallbackDataJSONIndexes?.length) {\r\n for (const index in fallbackDataJSONIndexes) {\r\n const indexName = fallbackDataJSONIndexes[index];\r\n if (!dataJSON[indexName]) {\r\n dataJSON[indexName] = fallbackDataJSON[indexName];\r\n }\r\n }\r\n }\r\n }\r\n this.currentLanguageStrings$.next(dataJSON); \r\n }\r\n // #endregion public methods\r\n\r\n // #region private fields \r\n private _languageFilesUri : string = \"/assets\"\r\n // #endregion private fields\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport enum CursorType {\r\n Pick = 'cursor-pick',\r\n Hide = 'cursor-hide',\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class CursorsService {\r\n\r\n // #region private fields\r\n private _cursorElement: HTMLElement | null = null;\r\n // #endregion private fields\r\n\r\n // #region private methods\r\n private getCursorElement(): HTMLElement | null {\r\n if (this._cursorElement) {\r\n return this._cursorElement;\r\n } else {\r\n return this.getMainViewportContainer();\r\n }\r\n }\r\n private getMainViewportContainer() : HTMLElement | null {\r\n const mainViewportContainer = document.getElementById('mainViewportContainer');\r\n if (!mainViewportContainer) {\r\n console.log(\"mainViewportContainer not found\");\r\n }\r\n return mainViewportContainer;\r\n }\r\n\r\n private addCursor(cursorType: CursorType) {\r\n this.getCursorElement()?.classList.add(cursorType);\r\n }\r\n\r\n private removeCursor(cursorType: CursorType) {\r\n this.getCursorElement()?.classList.remove(cursorType);\r\n }\r\n // #endregion\r\n\r\n\r\n // #region public methods\r\n setCursorElement(cursorElement: HTMLElement | null) {\r\n this._cursorElement = cursorElement;\r\n }\r\n\r\n showPickCursor(show: boolean) {\r\n if (show) {\r\n this.addCursor(CursorType.Pick)\r\n } else {\r\n this.removeCursor(CursorType.Pick);\r\n }\r\n }\r\n\r\n showHideCursor(show: boolean) {\r\n if (show) {\r\n this.addCursor(CursorType.Hide)\r\n } else {\r\n this.removeCursor(CursorType.Hide);\r\n }\r\n }\r\n // #endregion\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libDraggableComponent]',\r\n standalone: true\r\n})\r\nexport class ComponentDraggableDirective {\r\n\r\n private _isDraggingActive = false;\r\n private _isDragging = false;\r\n\r\n startX: number = 0;\r\n startY: number = 0;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n if (!this._isDraggingActive) return;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grab');\r\n this.renderer.setStyle(this.el.nativeElement, 'user-drag', 'none');\r\n }\r\n\r\n @Input() set libDraggableComponent(condition: boolean) {\r\n const element = this.el.nativeElement;\r\n this._isDraggingActive = condition;\r\n if (condition) {\r\n this.renderer.setStyle(element, 'cursor', 'grab');\r\n this.renderer.setStyle(element, 'user-drag', 'none');\r\n } else {\r\n this.renderer.setStyle(element, 'cursor', 'unset');\r\n this.renderer.setStyle(element, 'user-drag', 'auto');\r\n }\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event: MouseEvent) {\r\n if (!this._isDraggingActive) return;\r\n this.startX = event.clientX;\r\n this.startY = event.clientY;\r\n this._isDragging = true;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grabbing');\r\n event.preventDefault();\r\n }\r\n\r\n @HostListener('document:mouseup')\r\n onMouseUp() {\r\n if (!this._isDraggingActive) return;\r\n if (this._isDragging) {\r\n this._isDragging = false;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grab');\r\n }\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (!this._isDraggingActive) return;\r\n\r\n if (this._isDragging) {\r\n const newX = this.startX - event.clientX;\r\n const newY = this.startY - event.clientY;\r\n\r\n this.startX = event.clientX;\r\n this.startY = event.clientY;\r\n\r\n const top = this.el.nativeElement.offsetTop - newY;\r\n const left = this.el.nativeElement.offsetLeft - newX;\r\n\r\n this.renderer.setStyle(this.el.nativeElement, 'position', 'absolute');\r\n this.renderer.setStyle(this.el.nativeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(this.el.nativeElement, 'top', `${top}px`);\r\n }\r\n }\r\n\r\n\r\n /* touch mode */\r\n @HostListener('touchstart', ['$event']) //corresponding to mousedown\r\n onTouchStart(event: TouchEvent) {\r\n if (!this._isDraggingActive) return;\r\n this.startX = event.targetTouches[0].pageX;\r\n this.startY = event.targetTouches[0].pageY;\r\n this._isDragging = true;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grabbing');\r\n }\r\n\r\n @HostListener('document:touchmove', ['$event']) //corresponding to mousemove\r\n onTouchMove(event: TouchEvent) {\r\n if (!this._isDraggingActive) return;\r\n\r\n if (this._isDragging) {\r\n const newX = this.startX - event.targetTouches[0].pageX;\r\n const newY = this.startY - event.targetTouches[0].pageY;\r\n\r\n this.startX = event.targetTouches[0].pageX;\r\n this.startY = event.targetTouches[0].pageY;\r\n\r\n const top = this.el.nativeElement.offsetTop - newY;\r\n const left = this.el.nativeElement.offsetLeft - newX;\r\n\r\n this.renderer.setStyle(this.el.nativeElement, 'position', 'absolute');\r\n this.renderer.setStyle(this.el.nativeElement, 'left', `${left}px`);\r\n this.renderer.setStyle(this.el.nativeElement, 'top', `${top}px`);\r\n }\r\n }\r\n\r\n @HostListener('document:touchend', ['$event']) //corresponding to mouseup\r\n onTouchEnd() {\r\n if (!this._isDraggingActive) return;\r\n if (this._isDragging) {\r\n this._isDragging = false;\r\n this.renderer.setStyle(this.el.nativeElement, 'cursor', 'grab');\r\n }\r\n }\r\n\r\n}\r\n","import { AfterContentInit, ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { IDialogOptions } from './bimplus-general-dialog-config-settings';\r\nimport { ComponentDraggableDirective } from '../../directives/component-draggable/componentsDraggable.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DialogService } from './bimplus-general-overlay-dialog.service';\r\n\r\n@Component({\r\n selector: 'app-general-overlay-dialog',\r\n standalone: true,\r\n imports: [ComponentDraggableDirective, CommonModule],\r\n templateUrl: './bimplus-general-overlay-dialog.component.html',\r\n styleUrls: ['./bimplus-general-overlay-dialog.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimportalGeneralOverlayDialogComponent implements OnInit, AfterContentInit {\r\n\r\n @ViewChild('dialogRefContainer') genDialogRefContainer!: ElementRef<HTMLDivElement>;\r\n @ViewChild('dialogOverlay') dialogOverlay!: ElementRef<HTMLDivElement>;\r\n\r\n options: IDialogOptions | undefined;\r\n units: string = 'rem';\r\n\r\n constructor(private readonly dialogService: DialogService, private readonly cdref: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n this.options = this.dialogService.options;\r\n }\r\n\r\n onClose() {\r\n this.dialogService.close();\r\n }\r\n\r\n ngAfterContentInit() {\r\n if (this.options) {\r\n this.cdref.detectChanges();\r\n this.setOptions();\r\n }\r\n }\r\n\r\n setOptions() {\r\n if (this.options) {\r\n this.setDimensions();\r\n this.setPosition();\r\n this.setOverlay();\r\n }\r\n }\r\n\r\n private setDimensions() {\r\n const width = this.options?.width && this.options.width.length > 0 ? this.options.width : 'auto';\r\n const height = this.options?.height && this.options.height.length > 0 ? this.options.height : 'auto';\r\n this.genDialogRefContainer.nativeElement.style.width = width;\r\n this.genDialogRefContainer.nativeElement.style.height = height;\r\n }\r\n\r\n private setPosition() {\r\n if (this.options?.position === 'middle') {\r\n this.setPositionsMiddle();\r\n } else if (this.options?.position === 'unset') {\r\n this.setPositionsUnset();\r\n }\r\n }\r\n\r\n setPositionsUnset() {\r\n if (this.options) {\r\n this.genDialogRefContainer.nativeElement.style.position = 'fixed';\r\n const top = this.options?.positionOptions?.top ?? '0' + this.units;\r\n const bottom = this.options?.positionOptions?.bottom ?? '0' + this.units;\r\n const left = this.options?.positionOptions?.left ?? '0' + this.units;\r\n const right = this.options?.positionOptions?.right ?? '0' + this.units;\r\n\r\n this.genDialogRefContainer.nativeElement.style.position = 'absolute';\r\n this.genDialogRefContainer.nativeElement.style.top = top;\r\n this.genDialogRefContainer.nativeElement.style.left = left;\r\n this.genDialogRefContainer.nativeElement.style.bottom = bottom;\r\n this.genDialogRefContainer.nativeElement.style.right = right;\r\n\r\n this.options.overlayVisibilityEnabled = this.options.overlayVisibilityEnabled ? this.options.overlayVisibilityEnabled : false;\r\n this.options.overlayClickEnabled = this.options.overlayVisibilityEnabled && this.options.overlayClickEnabled ? this.options.overlayClickEnabled : false;\r\n }\r\n }\r\n\r\n setPositionsMiddle() {\r\n if (this.options) {\r\n this.genDialogRefContainer.nativeElement.className = this.genDialogRefContainer.nativeElement.className + ' middle';\r\n this.options.draggable = false;\r\n this.options.overlayVisibilityEnabled = this.options.overlayVisibilityEnabled ? this.options.overlayVisibilityEnabled : true;\r\n this.options.overlayClickEnabled = this.options.overlayVisibilityEnabled && this.options.overlayClickEnabled ? this.options.overlayClickEnabled : false;\r\n }\r\n }\r\n\r\n private setOverlay() {\r\n if (this.options?.overlayVisibilityEnabled) {\r\n this.dialogOverlay.nativeElement.style.backgroundColor = 'var(--modal-fade-in-background-color)';\r\n }\r\n }\r\n\r\n onKeyPress(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n if (this.options?.overlayClickEnabled) {\r\n this.dialogService.close();\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n","<div class=\"general-dialog-wrapper\" #generalDialogWrapper *ngIf=\"options\">\r\n <section class=\"general-dialog-content\" #dialogRefContainer\r\n [libDraggableComponent]=\"options.draggable ? true : false\">\r\n <ng-content></ng-content>\r\n </section>\r\n <div class=\"general-dialog-overlay\" #dialogOverlay (click)=\"onClose()\" (keypress)=\"onKeyPress($event)\"\r\n [style.display]=\"options.overlayVisibilityEnabled ? 'block' : 'none'\">\r\n </div>\r\n</div>\r\n","import { ApplicationRef, ComponentRef, createComponent, EnvironmentInjector, Injectable, Type } from '@angular/core';\r\nimport { IDialogInputData, IDialogOptions } from './bimplus-general-dialog-config-settings';\r\nimport { Subject } from 'rxjs';\r\nimport { BimportalGeneralOverlayDialogComponent } from './bimplus-general-overlay-dialog.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n generalDialogComponentBody!: ComponentRef<unknown>; //here will be rendered every component we call inside general dialog\r\n generalDialog!: ComponentRef<BimportalGeneralOverlayDialogComponent>; //here will be rendered every component we call inside general dialog\r\n private _isDialogOpen = false;\r\n\r\n inputData: unknown;\r\n private readonly outputData = new Subject<unknown>();\r\n\r\n options: IDialogOptions | undefined;\r\n\r\n constructor(private readonly appRef: ApplicationRef,\r\n private readonly injector: EnvironmentInjector) { }\r\n\r\n open(componentBody: Type<unknown>, data: IDialogInputData) { //todo pass data to second component\r\n if (data?.options) {\r\n this.initializeSettings(data);\r\n this.createComponentsRef(componentBody); //componentBody is component which is added inside to general dialog and rendered\r\n }\r\n }\r\n\r\n initializeSettings(data: IDialogInputData) {\r\n try {\r\n this.inputData = data?.data;\r\n this.options = data.options;\r\n } catch (e) {\r\n console.log('Missing data in open method', e);\r\n }\r\n\r\n }\r\n\r\n createComponentsRef(componentBody: Type<unknown>) {\r\n this.generalDialogComponentBody = createComponent(componentBody, {\r\n environmentInjector: this.injector,\r\n });\r\n\r\n this.generalDialog = createComponent(BimportalGeneralOverlayDialogComponent, {\r\n environmentInjector: this.injector,\r\n projectableNodes: [[this.generalDialogComponentBody.location.nativeElement]],\r\n });\r\n\r\n document.body.appendChild(this.generalDialog.location.nativeElement);\r\n\r\n this.appRef.attachView(this.generalDialogComponentBody.hostView); //first render body of general dialog, it can be any component we create\r\n this.appRef.attachView(this.generalDialog.hostView); //then render body of general dialog, which we can add in any component, can have different content\r\n this._isDialogOpen = true;\r\n }\r\n\r\n close(outputData?: unknown) {\r\n if (outputData) {\r\n this.setOutputData(outputData);\r\n } else {\r\n this.resetSettings();\r\n }\r\n this.generalDialogComponentBody.location.nativeElement.remove();\r\n this.generalDialog.location.nativeElement.remove();\r\n this._isDialogOpen = false;\r\n }\r\n\r\n resetSettings() {\r\n this.inputData = null;\r\n this.options = undefined;\r\n }\r\n\r\n isDialogOpened() {\r\n return this._isDialogOpen;\r\n }\r\n\r\n setOutputData(data: unknown): void {\r\n if (this._isDialogOpen) {\r\n this.outputData.next(data);\r\n }\r\n }\r\n\r\n getOutputData(): Subject<unknown> {\r\n return this.outputData;\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n Input,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DialogService } from '../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service';\r\n\r\nexport interface WarningDialogInputData {\r\n title: string;\r\n message: string;\r\n buttonsRef?: TemplateRef<unknown>;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-overlay-dialog-warning',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './bimplus-overlay-dialog-warning.component.html',\r\n styleUrls: ['./bimplus-overlay-dialog-warning.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class BimplusOverlayDialogWarningComponent {\r\n private _title: string = '';\r\n private _message: string = '';\r\n private readonly _data: WarningDialogInputData | undefined;\r\n protected readonly buttonsRef: TemplateRef<unknown> | null = null;\r\n\r\n @Input()\r\n get title(): string {\r\n return this._title;\r\n }\r\n set title(value: string) {\r\n this._title = value;\r\n }\r\n\r\n @Input()\r\n get message(): string {\r\n return this._message;\r\n }\r\n set message(value: string) {\r\n this._message = value;\r\n }\r\n\r\n constructor(private readonly dialogService: DialogService) {\r\n this._data = this.dialogService.inputData as WarningDialogInputData;\r\n this.buttonsRef = this._data?.buttonsRef ?? null;\r\n this._title = this._data?.title || '';\r\n this._message = this._data?.message || '';\r\n }\r\n\r\n close() {\r\n this.dialogService.close();\r\n }\r\n\r\n keypressClose(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.dialogService.close();\r\n }\r\n }\r\n}\r\n","<div class=\"overlay-dialog-container\">\r\n <div class=\"overlay-dialog-container_title\">\r\n <div class=\"overlay-dialog-container_title_icon\"></div>\r\n <div class=\"overlay-dialog-container_title_msg\">\r\n {{ title }}\r\n </div>\r\n <div\r\n class=\"overlay-dialog-container_title_close\"\r\n (click)=\"close()\"\r\n (keypress)=\"keypressClose($event)\"\r\n ></div>\r\n </div>\r\n <div class=\"overlay-dialog-container_content\">\r\n <div\r\n class=\"overlay-dialog-container_content_msg\"\r\n [innerHTML]=\"this.message\"\r\n ></div>\r\n <section class=\"overlay-dialog-container_content_buttons\">\r\n @if(buttonsRef) {\r\n <ng-container\r\n *ngTemplateOutlet=\"buttonsRef; context: { close: close.bind(this) }\"\r\n ></ng-container>\r\n } @else {\r\n <button class=\"overlay-dialog-container_content_btn\" (click)=\"close()\">\r\n {{ \"_Ok\" | translate }}\r\n </button>\r\n }\r\n </section>\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation, Input } from '@angular/core';\nimport { XDraggableDirective } from '../../directives/x-draggable.directive'\nimport { PxsuffixPipe } from '../../pipes/pxsuffix.pipe';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'lib-resizable-panel',\n standalone: true,\n imports: [CommonModule, XDraggableDirective, PxsuffixPipe],\n templateUrl: './resizable-panel.component.html',\n styleUrl: './resizable-panel.component.less',\n encapsulation: ViewEncapsulation.ShadowDom\n})\nexport class ResizablePanelComponent {\n @Input() position : \"left\" | \"right\" = \"right\";\n @Input() hasDraggableHandle : boolean = false;\n @Input() hasDraggableBorder : boolean = false;\n\n drawerWidth : number = 300;\n drawerExpanded : boolean = true;\n\n\n _toggleDrawer(){\n this.drawerExpanded = !this.drawerExpanded;\n }\n \n _onResizeWidth(event : number): void {\n const deltaX = event;\n if(this.position === \"left\"){\n this.drawerWidth += deltaX;\n }\n else if(this.position === \"right\"){\n this.drawerWidth -= deltaX;\n }\n }\n}\n","<div\n class=\"resizable-panel-drawer\"\n [style.width] = \"drawerWidth | pxsuffix\"\n [ngClass]=\"drawerExpanded ? '' : 'hidden'\"\n [class.position-right]=\"position === 'right'\"\n [class.position-left]=\"position === 'left'\"\n>\n <slot></slot>\n @if (drawerExpanded) {\n @if (hasDraggableBorder) {\n <div\n xDraggable\n class=\"resizable-panel-resize-border\"\n (dragging)=\"_onResizeWidth($event)\"\n [class.position-right]=\"position === 'right'\"\n [class.position-left]=\"position === 'left'\"\n >\n </div>\n }\n @if (hasDraggableHandle) {\n <div\n xDraggable\n class=\"resizable-panel-resize-handle\"\n (dragging)=\"_onResizeWidth($event)\"\n (clicked)=\"_toggleDrawer()\"\n [class.position-right]=\"position === 'right'\"\n [class.position-left]=\"position === 'left'\"\n >\n </div>\n }\n }\n</div>\n@if (!drawerExpanded) {\n @if (hasDraggableHandle) {\n <div\n class=\"resizable-panel-resize-handle collapsed\"\n (click)=\"_toggleDrawer()\"\n (keypress)=\"_toggleDrawer()\"\n [class.position-right]=\"position === 'right'\"\n [class.position-left]=\"position === 'left'\"\n >\n </div>\n }\n}\n","import {\r\n Component\r\n , Input\r\n , Output\r\n , EventEmitter\r\n , ViewEncapsulation\r\n , SimpleChanges\r\n , OnChanges\r\n} from '@angular/core';\r\nimport { SelectedObject } from './object-properties-header.interface';\r\nimport { CommonModule} from '@angular/common';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { fireEvent } from '../../utils/utils';\r\nimport {\r\n TranslateModule\r\n , TranslateService\r\n} from '@ngx-translate/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\n\r\n@Component({\r\n selector: 'lib-object-properties-header',\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n , FormsModule\r\n , NgSelectModule\r\n , TranslateModule\r\n ],\r\n providers: [TranslateService],\r\n templateUrl: './object-properties-header.component.html',\r\n styleUrl: './object-properties-header.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class ObjectPropertiesHeaderComponent extends BimplusLocalizedWidgetComponent implements OnChanges {\r\n constructor(translateService: TranslateService){\r\n super(translateService)\r\n }\r\n\r\n @Output() selectedObject = new EventEmitter<SelectedObject>();\r\n\r\n @Output() closePropertiesPanel = new EventEmitter();\r\n\r\n @Input() selectedObjects: Array<SelectedObject> = [];\r\n\r\n _activeObject: SelectedObject | null = null;\r\n\r\n set activeObject(value: SelectedObject | null) {\r\n this._activeObject = value;\r\n fireEvent(this, \"selectedObject\", value);\r\n }\r\n\r\n get activeObject(): SelectedObject | null {\r\n return this._activeObject;\r\n }\r\n\r\n _closePropertiesPanel(event: Event) {\r\n fireEvent(this, \"closePropertiesPanel\", event);\r\n event.stopPropagation();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (!changes['selectedObjects']) {\r\n return;\r\n }\r\n const previousValue: SelectedObject[] | null = changes['selectedObjects'].previousValue;\r\n const currentValue: SelectedObject[] | null = changes['selectedObjects'].currentValue;\r\n if(currentValue && currentValue.length > 0) {\r\n this.activeObject = currentValue[currentValue.length - 1];\r\n }\r\n console.log(`Data changed from ${previousValue} to ${currentValue}`);\r\n }\r\n}\r\n","<div class=\"object-properties-header\">\n <div class=\"object-properties-header-object\">\n <div class=\"object-properties-header-object-select\">\n <ng-select class=\"object-properties-header-object-select-dropdown\" [(ngModel)]=\"activeObject\" [clearable]=\"false\" [searchable]=\"false\">\n <ng-option *ngFor=\"let object of selectedObjects\" [value]=\"object\">{{object.name}}</ng-option>\n </ng-select>\n </div>\n </div>\n <div\n class=\"object-properties-header-link-icon\"\n title=\"{{'_Create link' | translate}}\"\n >\n </div>\n <div\n class=\"object-properties-header-close-icon\"\n (click)=\"_closePropertiesPanel($event)\"\n (keydown)=\"_closePropertiesPanel($event)\"\n title=\"{{'_Close_properties_panel_title' | translate}}\"\n >\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'round',\r\n standalone: true\r\n})\r\nexport class RoundPipe implements PipeTransform {\r\n\r\n transform(value: string, decimal: number): string {\r\n const num = parseFloat(value);\r\n const dec = decimal;\r\n\r\n const mult = Math.pow(10, dec);\r\n\r\n return \"\" + Math.round(num * mult) / mult;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ObjectAttribute } from '../components/object-properties/object-properties.interface';\r\nimport { RoundPipe } from './round.pipe';\r\nimport moment from 'moment';\r\nimport 'moment/min/locales';\r\n\r\n\r\n@Pipe({\r\n name: 'getAttributeValue',\r\n standalone: true\r\n})\r\nexport class GetAttributeValue implements PipeTransform {\r\n\r\n constructor() {\r\n const locale = window.navigator.language;\r\n moment.locale(locale);\r\n }\r\n\r\n _transformDouble(value: ObjectAttribute): string {\r\n if(value.control && /^Enumeration$/i.test(value.control)) {\r\n return value.enumdefinition[`${value.value}`];\r\n }\r\n return new RoundPipe().transform(value.value, value.decimal || 2);\r\n }\r\n\r\n _transformDatetime(value: ObjectAttribute): string {\r\n moment.locale(window.navigator.language);\r\n const localeDate: string = moment(value.value).format('L')\r\n console.log(localeDate);\r\n if(localeDate) {\r\n return localeDate;\r\n }\r\n return value.value;\r\n }\r\n\r\n _transformGUIDorInt(value: ObjectAttribute): string {\r\n if(value.control && /^Enumeration$/i.test(value.control)) {\r\n return value.enumdefinition[`${value.value}`];\r\n }\r\n return value.value;\r\n }\r\n\r\n _transformString(value: ObjectAttribute): string {\r\n if(value.control && /^Combobox$/i.test(value.control)) {\r\n return value.value;\r\n }\r\n if(value.control && /^Enumeration$/i.test(value.control)) {\r\n return value.enumdefinition[`${value.value}`];\r\n }\r\n return value.value;\r\n }\r\n\r\n _transformCheckbox(value: ObjectAttribute): string {\r\n if(value.value === '1') {\r\n return \"True\";\r\n }\r\n return \"False\";\r\n }\r\n\r\n _transformBoolean(value: ObjectAttribute): string {\r\n if(value.value === '1'\r\n || /^true$/i.test(value.value)\r\n ) {\r\n return \"True\";\r\n }\r\n return \"False\";\r\n }\r\n\r\n transform(value: ObjectAttribute): string {\r\n const _value = value.value;\r\n if (this.isEmpty(_value)) {\r\n return '';\r\n }\r\n\r\n if (this.isDouble(value)) {\r\n return this._transformDouble(value);\r\n }\r\n\r\n if (this.isDatetime(value)) {\r\n return this._transformDatetime(value);\r\n }\r\n\r\n if (this.isGUIDorInt(value)) {\r\n return this._transformGUIDorInt(value);\r\n }\r\n\r\n if (this.isString(value)) {\r\n return this._transformString(value);\r\n }\r\n\r\n if (this.isCheckbox(value)) {\r\n return this._transformCheckbox(value);\r\n }\r\n\r\n if (this.isBoolean(value)) {\r\n return this._transformBoolean(value);\r\n }\r\n\r\n return value.value;\r\n }\r\n\r\n private isEmpty(value: string | undefined | null): boolean {\r\n return value === undefined || value === null || value === '';\r\n }\r\n\r\n private isDouble(value: ObjectAttribute): boolean {\r\n return typeof value.type === 'string' && /^double$/i.test(value.type);\r\n }\r\n\r\n private isDatetime(value: ObjectAttribute): boolean {\r\n return typeof value.type === 'string' && /^datetime$/i.test(value.type);\r\n }\r\n\r\n private isGUIDorInt(value: ObjectAttribute): boolean {\r\n return typeof value.type === 'string' && (/^guid$/i.test(value.type) || /^int(32)?$/i.test(value.type));\r\n }\r\n\r\n private isString(value: ObjectAttribute): boolean {\r\n return typeof value.type === 'string' && /^string$/i.test(value.type);\r\n }\r\n\r\n private isCheckbox(value: ObjectAttribute): boolean {\r\n return typeof value.type === 'string' && /^checkbox$/i.test(value.control);\r\n }\r\n\r\n private isBoolean(value: ObjectAttribute): boolean {\r\n return typeof value.type === 'string' && /^boolean$/i.test(value.type);\r\n }\r\n}\r\n","import { ObjectAttribute } from '../components/object-properties/object-properties.interface';\r\n\r\nexport function isObjectPropertyValueBlank(attrib: ObjectAttribute): boolean {\r\n return attrib.value === undefined\r\n || attrib.value === null\r\n || attrib.value === ''\r\n || attrib.value === '\\n\\t'\r\n || attrib.value === '\\n'\r\n || attrib.value === '\\t';\r\n}","import { Input, Component, ViewEncapsulation, signal } from '@angular/core';\r\nimport isURL from 'validator/lib/isURL';\r\n\r\n@Component({\r\n selector: 'lib-object-property-value',\r\n standalone: true,\r\n templateUrl: './object-property-value.component.html',\r\n styleUrls: ['./object-property-value.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ObjectPropertyValueComponent {\r\n protected _tooltip = signal<string>('');\r\n protected _value = signal<string>('');\r\n protected _valueIsUrl = signal<boolean>(false);\r\n protected _decoratedHyperlink = signal<string>('');\r\n\r\n @Input() set value(value: string) {\r\n this._value.set(value);\r\n if(this._isUrl(value)) {\r\n this._valueIsUrl.set(true);\r\n this._decoratedHyperlink.set(this._decorateHyperlink(value));\r\n }\r\n else {\r\n this._valueIsUrl.set(false);\r\n }\r\n }\r\n\r\n @Input() set tooltip(tooltip: string) {\r\n this._tooltip.set(tooltip);\r\n }\r\n\r\n private _isUrl(url: string): boolean {\r\n if (!url) {\r\n return false;\r\n }\r\n const link = url.trim();\r\n if(!/^http(s?):\\/\\//.exec(link) && !/^www\\./.exec(link)) {\r\n return false;\r\n }\r\n\r\n return isURL(link);\r\n }\r\n\r\n private _decorateHyperlink(url: string): string {\r\n if(!this._isUrl(url)) {\r\n return '';\r\n }\r\n let link = url.trim();\r\n\r\n if (link && !/^http(s?):\\/\\//.exec(link)) {\r\n link = 'https://' + link;\r\n }\r\n return link;\r\n }\r\n\r\n constructor() { }\r\n}\r\n","@if(_valueIsUrl()) {\r\n <a class=\"link-detect-automatically\" target=\"_blank\" rel=\"noopener\" href={{_decoratedHyperlink()}} title=\"{{_tooltip()}}\">{{_value()}}</a>\r\n}\r\n@else {\r\n <div title=\"{{_tooltip()}}\">\r\n {{_value()}}\r\n </div>\r\n}\r\n","import {\r\n Component\r\n , Input\r\n , ViewEncapsulation\r\n , signal\r\n} from '@angular/core';\r\nimport {\r\n ObjectAttributeGroup\r\n , ObjectAttribute\r\n} from '../object-properties/object-properties.interface';\r\nimport { RoundPipe } from '../../pipes/round.pipe';\r\nimport { GetAttributeValue } from '../../pipes/get-attribute-value.pipe';\r\nimport { isObjectPropertyValueBlank } from '../../utils/objectProperties';\r\nimport { ObjectPropertyValueComponent } from './object-property-value/object-property-value.component';\r\n\r\n@Component({\r\n selector: 'lib-object-properties-group',\r\n standalone: true,\r\n imports: [\r\n RoundPipe\r\n , GetAttributeValue\r\n , ObjectPropertyValueComponent\r\n ],\r\n templateUrl: './object-properties-group.component.html',\r\n styleUrls: ['./object-properties-group.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class ObjectPropertiesGroupComponent {\r\n @Input() editMode : boolean = false;\r\n\r\n protected _attributesGroup = signal<ObjectAttributeGroup>({\r\n name: '',\r\n attributes: [],\r\n expanded: false,\r\n });\r\n\r\n @Input() set attributesGroup(value: ObjectAttributeGroup | undefined) {\r\n if(!value){\r\n return;\r\n }\r\n this._attributesGroup.set(value);\r\n }\r\n\r\n constructor() { }\r\n\r\n isValueBlank(attrib: ObjectAttribute): boolean {\r\n return isObjectPropertyValueBlank(attrib);\r\n }\r\n}\r\n","<div class=\"object-property-table\">\r\n @for (attrib of _attributesGroup().attributes; track attrib) {\r\n @if(!isValueBlank(attrib)) {\r\n <div class=\"rowWrapper\">\r\n <div class=\"table-cell object-property-icon uuid-{{attrib.id}}\"></div>\r\n <div class=\"table-cell object-property-name uuid-{{attrib.id}}\" title=\"{{attrib.tooltip}}\">{{attrib.name}}:</div>\r\n <div class=\"table-cell object-property-value uuid-{{attrib.id}}\">\r\n <lib-object-property-value\r\n value=\"{{attrib | getAttributeValue}}\"\r\n tooltip=\"{{attrib.tooltip}}\"\r\n />\r\n </div>\r\n <div class=\"table-cell object-property-unit uuid-{{attrib.id}}\" title=\"{{attrib.tooltip}}\">{{attrib.unit}}</div>\r\n </div>\r\n }\r\n }\r\n</div>\r\n","import {\r\n Component\r\n , ViewEncapsulation\r\n , Input\r\n , OnInit\r\n} from '@angular/core';\r\nimport { ExpansionPanelComponent } from '../expansion-panel/expansion-panel.component';\r\nimport { ExpansionPanelHeaderComponent } from '../expansion-panel-header/expansion-panel-header.component';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport {\r\n ObjectStructureNode\r\n , ObjectStructureNodeBuilder\r\n} from '../bimplus-object-structure/bimplus-object-structure.interface';\r\nimport * as WebSdk from 'bimplus-websdk';\r\nimport {\r\n from\r\n , BehaviorSubject\r\n} from 'rxjs';\r\nimport { BimplusObjectStructureComponent } from '../bimplus-object-structure/bimplus-object-structure.component';\r\nimport {\r\n ComplexPropertiesNode\r\n , ComplexPropertiesNodeBuilder\r\n} from '../bimplus-object-complex-properties/bimplus-object-complex-properties.interface';\r\nimport { BimplusObjectComplexPropertiesComponent } from '../bimplus-object-complex-properties/bimplus-object-complex-properties.component';\r\nimport {\r\n ObjectAttribute\r\n , ObjectAttributeGroup\r\n} from './object-properties.interface';\r\nimport { BimplusButtonsRowComponent } from \"../bimplus-buttons-row/bimplus-buttons-row.component\";\r\nimport { BimplusButtonRowItem, BimplusButtonClickEvent } from \"../bimplus-buttons-row/bimplus-buttons-row.interface\";\r\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component'\r\nimport { ObjectPropertiesGroupComponent } from '../object-properties-group/object-properties-group.component';\r\nimport { isObjectPropertyValueBlank } from '../../utils/objectProperties';\r\n\r\n@Component({\r\n selector: 'lib-object-properties',\r\n standalone: true,\r\n imports: [\r\n ExpansionPanelComponent\r\n , ExpansionPanelHeaderComponent\r\n , TranslateModule\r\n , BimplusObjectStructureComponent\r\n , BimplusObjectComplexPropertiesComponent\r\n , BimplusButtonsRowComponent\r\n , BimplusScrollableContainerComponent\r\n , ObjectPropertiesGroupComponent\r\n ],\r\n templateUrl: './object-properties.component.html',\r\n styleUrls: ['./object-properties.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ObjectPropertiesComponent extends BimplusLocalizedWidgetComponent implements OnInit {\r\n constructor(translateService: TranslateService) {\r\n super(translateService)\r\n }\r\n\r\n protected _editMode = false;\r\n\r\n private _objectStructure : ObjectStructureNode | null = null;\r\n\r\n get objectStructure(): ObjectStructureNode | null{\r\n return this._objectStructure\r\n }\r\n\r\n private _complexProperties : ComplexPropertiesNode | null = null;\r\n\r\n get complexProperties() : ComplexPropertiesNode | null{\r\n return this._complexProperties;\r\n }\r\n\r\n @Input() api : WebSdk.Api | null = null;\r\n @Input() revision : number | undefined = undefined;\r\n\r\n @Input()\r\n set rootObjectId(id : string){\r\n this._currentObjectId$.next(id);\r\n this._createObjectStructure(id, this.revision);\r\n\r\n this._rootObjectId = id;\r\n }\r\n\r\n get rootObjectId() : string{\r\n return this._rootObjectId;\r\n }\r\n\r\n private readonly _currentObjectId$ = new BehaviorSubject<string> (\"\");\r\n private readonly _currentPropertiesObjectId$ = new BehaviorSubject<string> (\"\");\r\n private _rootObjectId : string = \"\";\r\n\r\n buttonRowItems: Array<BimplusButtonRowItem> = [];\r\n configEditProperties: Array<BimplusButtonRowItem> = [];\r\n configEditedProperties: Array<BimplusButtonRowItem> = [];\r\n\r\n _editPropertiesButtonsConfiguration() {\r\n this.configEditProperties.push(\r\n {\r\n id: \"edit-properties\"\r\n , title: this.translateService.instant('_Edit_properties')\r\n , tooltip: this.translateService.instant('_Edit_properties')\r\n , disabled: false\r\n , buttonStyle: 'primary'\r\n }\r\n );\r\n }\r\n\r\n _editedPropertiesButtonsConfiguration() {\r\n this.configEditedProperties.push(\r\n {\r\n id: \"save-changed-properties\"\r\n , title: this.translateService.instant('_Save')\r\n , tooltip: this.translateService.instant('_Save')\r\n , disabled: true\r\n , buttonStyle: 'primary'\r\n }\r\n );\r\n this.configEditedProperties.push(\r\n {\r\n id: \"cancel-editing-properties\"\r\n , title: this.translateService.instant('_Cancel')\r\n , tooltip: this.translateService.instant('_Cancel')\r\n , disabled: false\r\n , buttonStyle: 'secondary'\r\n }\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this._editPropertiesButtonsConfiguration();\r\n this._editedPropertiesButtonsConfiguration();\r\n\r\n this.buttonRowItems = this.configEditProperties;\r\n\r\n this._currentPropertiesObjectId$.subscribe({\r\n next: (id) => {\r\n if(id){\r\n this._createObjectProperties(id, this.revision)\r\n }\r\n }\r\n });\r\n\r\n this._currentObjectId$.subscribe({\r\n next: (id) => {\r\n this._currentPropertiesObjectId$.next(id);\r\n this._createComplexPropertiestructure(id, this.revision);\r\n }\r\n });\r\n }\r\n\r\n handleObjectStructureNodeSelected(node : ObjectStructureNode){\r\n console.log(node);\r\n this._currentObjectId$.next(node.id);\r\n }\r\n\r\n handleComplexPropertyNodeSelected(node : ComplexPropertiesNode){\r\n console.log(node);\r\n this._currentPropertiesObjectId$.next(node.id);\r\n }\r\n\r\n private _loadObjectStructure(objectId : string, revision : number | undefined){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n if(!objectId) {\r\n return;\r\n }\r\n\r\n return from(this.api.objects.getTopology(objectId, revision, false, false, undefined));\r\n }\r\n\r\n private _createObjectStructure(objectId : string, revision : number | undefined){\r\n this._loadObjectStructure(objectId, revision)?.subscribe({\r\n next :(structureData) => {\r\n if(structureData){\r\n this._objectStructure = ObjectStructureNodeBuilder.createFromResponse(structureData);\r\n }\r\n }\r\n })\r\n }\r\n\r\n private _loadObjectComplexPropertiesStructure(objectId : string, revision : number | undefined){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n if(!objectId) {\r\n return;\r\n }\r\n\r\n return from(this.api.objects.getComplexPropertiesTopology(objectId, revision));\r\n }\r\n\r\n private _createComplexPropertiestructure(objectId : string, revision : number | undefined){\r\n this._loadObjectComplexPropertiesStructure(objectId, revision)?.subscribe({\r\n next :(structureData) => {\r\n if(structureData){\r\n const complexProps = ComplexPropertiesNodeBuilder.createFromResponse(structureData);\r\n if(complexProps?.children?.length){\r\n this._complexProperties = complexProps;\r\n }else{\r\n this._complexProperties = null;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n objectAttributeGroups : ObjectAttributeGroup[] = [];\r\n\r\n private _loadObjectProperties(objectId : string, revision : number | undefined){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n if(!objectId) {\r\n return;\r\n }\r\n\r\n return from(this.api.objects.get(objectId, revision, \"8\", undefined, false, undefined ));\r\n }\r\n\r\n private _createObjectProperties(objectId : string, revision : number | undefined){\r\n this._loadObjectProperties(objectId, revision)?.subscribe({\r\n\r\n // properties response is badly structured, nearly impossible to create class structure from it. Therefore using shortcut\r\n // any for json response\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n next: (propertiesData : any) => {\r\n this.objectAttributeGroups = this._createAttributeGroupsFromResponse(propertiesData);\r\n // this._syncAttributeStatesFromCriteria();\r\n },\r\n error: () =>{\r\n this.objectAttributeGroups = [];\r\n }\r\n }\r\n )\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _tooltip(attrib: any): string {\r\n const nameTitle: string = this.translateService.instant('_Name');\r\n const name: string = attrib.name ? attrib.name : '';\r\n const descriptionTitle: string = this.translateService.instant(\"description\");\r\n const description: string = attrib.description;\r\n const uuidTitle: string = this.translateService.instant(\"_UUID\");\r\n const uuid: string = attrib.id;\r\n if(description === null || description === undefined || description === '') {\r\n return `${nameTitle}: ${name}\\n${uuidTitle}: ${uuid}`;\r\n }\r\n return `${nameTitle}: ${name}\\n${descriptionTitle}: ${description}\\n${uuidTitle}: ${uuid}`;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private _createAttributeGroupsFromResponse(propertiesData : any){\r\n\r\n const groups : Array<ObjectAttributeGroup> = [];\r\n let localizedAttribGroups = null;\r\n if(propertiesData.localizedAttributeGroups){\r\n localizedAttribGroups = propertiesData.localizedAttributeGroups;\r\n }\r\n\r\n if (!propertiesData.attributes){\r\n return groups;\r\n }\r\n\r\n const attribGroups = propertiesData.attributes;\r\n for(const [groupName, attribsObject] of Object.entries(attribGroups)){\r\n\r\n const newGroup : ObjectAttributeGroup = {\r\n name : groupName,\r\n expanded : false,\r\n attributes : []\r\n };\r\n\r\n if(localizedAttribGroups?.[groupName]){\r\n newGroup.name = localizedAttribGroups[groupName];\r\n }\r\n\r\n if(!attribsObject){\r\n continue;\r\n }\r\n\r\n for(const attrib of Object.values(attribsObject)){\r\n\r\n const newAttrib: ObjectAttribute = {\r\n id: attrib.id\r\n , name: attrib.name\r\n , description: attrib.description\r\n , value: attrib.value\r\n , group: attrib.group\r\n , type: attrib.type\r\n , unit: attrib.unit\r\n , decimal: attrib.decimal\r\n , control: attrib.control\r\n , enumdefinition: attrib.enumdefinition\r\n , isChangeable: attrib.isChangeable\r\n , tooltip: this._tooltip(attrib)\r\n };\r\n\r\n newGroup.attributes.push(newAttrib);\r\n }\r\n\r\n groups.push(newGroup);\r\n }\r\n\r\n return groups;\r\n }\r\n\r\n buttonClicked($event: BimplusButtonClickEvent) {\r\n if ($event.id === \"edit-properties\") {\r\n console.log(\"Edit properties clicked\");\r\n this.buttonRowItems = this.configEditedProperties;\r\n }\r\n\r\n if ($event.id === \"save-changed-properties\") {\r\n this.buttonRowItems = this.configEditProperties;\r\n console.log(\"Save changed properties clicked\");\r\n }\r\n\r\n if ($event.id === \"cancel-editing-properties\") {\r\n this.buttonRowItems = this.configEditProperties;\r\n console.log(\"Cancel edit properties clicked\");\r\n }\r\n }\r\n\r\n hasSetAnyAttribute(objectAttributeGroup: ObjectAttributeGroup) {\r\n return objectAttributeGroup.attributes.some((attrib) => {\r\n return !isObjectPropertyValueBlank(attrib);\r\n });\r\n }\r\n}\r\n","<lib-bimplus-buttons-row\r\n [items]=\"buttonRowItems\"\r\n (buttonClicked)=\"buttonClicked($event)\"\r\n/>\r\n\r\n<div class=\"object-properties\">\r\n <lib-bimplus-scrollable-container>\r\n <!-- Object structure-->\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-structure-header\">{{\"_Object structure\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @if (objectStructure) {\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n />\r\n }\r\n </lib-expansion-panel>\r\n <!-- End Object structure-->\r\n\r\n <!-- Complex properties-->\r\n @if(complexProperties){\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-properties-header\"> {{\"_Object multiproperties tree\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n />\r\n </lib-expansion-panel>\r\n }\r\n <!-- End Complex properties-->\r\n\r\n @if(objectAttributeGroups.length > 0){\r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"object-properties-header\">{{\"_Object properties\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n @if(hasSetAnyAttribute(attribGroup)){\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"object-properties-group-header\"> {{attribGroup.name}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-object-properties-group\r\n [attributesGroup]=\"attribGroup\"\r\n [editMode]=\"_editMode\"\r\n />\r\n </lib-expansion-panel>\r\n }\r\n }\r\n </lib-expansion-panel>\r\n }\r\n </lib-bimplus-scrollable-container>\r\n</div>\r\n","import {Component, HostListener, ViewEncapsulation} from '@angular/core';\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {DialogService} from \"../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service\";\r\nimport {BimplusButtonsRowComponent} from \"../bimplus-buttons-row/bimplus-buttons-row.component\";\r\nimport {BimplusButtonClickEvent, BimplusButtonRowItem} from \"../bimplus-buttons-row/bimplus-buttons-row.interface\";\r\n\r\nexport interface ConfirmDialogInputData {\r\n title: string;\r\n message: string;\r\n acceptButtonLocalizedString: string;\r\n cancelButtonLocalizedString: string;\r\n acceptCallback: () => void;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-overlay-dialog-confirm',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n BimplusButtonsRowComponent\r\n ],\r\n templateUrl: './bimplus-overlay-dialog-confirm.component.html',\r\n styleUrl: './bimplus-overlay-dialog-confirm.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\n\r\nexport class BimplusOverlayDialogConfirmComponent {\r\n title: string = '';\r\n message: string = '';\r\n acceptButtonLocalizedString: string = '_Accept';\r\n cancelButtonLocalizedString: string = '_Cancel';\r\n acceptCallback: (() => void) | undefined;\r\n protected readonly buttons: BimplusButtonRowItem[] = [\r\n {\r\n id: \"accept\",\r\n title: this.translateService.instant(this.acceptButtonLocalizedString),\r\n tooltip: this.translateService.instant(this.acceptButtonLocalizedString),\r\n disabled: false,\r\n buttonStyle: 'primary'\r\n },\r\n {\r\n id: \"cancel\",\r\n title: this.translateService.instant(this.cancelButtonLocalizedString),\r\n tooltip: this.translateService.instant(this.cancelButtonLocalizedString),\r\n disabled: false,\r\n buttonStyle: 'secondary'\r\n }\r\n ]\r\n\r\n constructor(private readonly dialogService: DialogService, private readonly translateService: TranslateService) {\r\n const data = this.dialogService.inputData as ConfirmDialogInputData;\r\n\r\n if (data) {\r\n this.title = data.title || '';\r\n this.message = data.message || '';\r\n this.acceptButtonLocalizedString = data.acceptButtonLocalizedString || '_Accept';\r\n this.cancelButtonLocalizedString = data.cancelButtonLocalizedString || '_Cancel';\r\n this.acceptCallback = data.acceptCallback;\r\n }\r\n }\r\n\r\n close() {\r\n this.dialogService.close();\r\n (document.activeElement as HTMLElement)?.blur();\r\n }\r\n\r\n keypressClose(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.dialogService.close();\r\n }\r\n }\r\n\r\n buttonRowButtonClicked($event: BimplusButtonClickEvent) {\r\n this.dialogService.close();\r\n\r\n if ($event.id === \"accept\") {\r\n this.acceptCallback?.();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.close();\r\n }\r\n }\r\n}\r\n","<div class=\"overlay-dialog-container\">\r\n <div class=\"header\">\r\n <div class=\"icon\"></div>\r\n <div class=\"title-text\">\r\n {{ title }}\r\n </div>\r\n <button class=\"close-button\" (click)=\"close()\" tabindex=\"0\"\r\n (keydown)=\"keypressClose($event)\">\r\n </button>\r\n </div>\r\n <div class=\"content\">\r\n <div class=\"text\" [innerHTML]=\"message\">\r\n </div>\r\n <div class=\"buttons\">\r\n <lib-bimplus-buttons-row [items]=\"buttons\" (buttonClicked)=\"buttonRowButtonClicked($event)\"/>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component , ViewEncapsulation , Input , OnInit, Renderer2, ElementRef, OnDestroy} from '@angular/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport * as WebSdk from 'bimplus-websdk';\r\nimport { from , BehaviorSubject, switchMap, forkJoin } from 'rxjs';\r\nimport { concatMap } from 'rxjs/operators';\r\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component'\r\nimport { AttachmentLinkItem} from \"./links-to-documents.component.interface\";\r\nimport { ProjectNavigatorProject } from '../project-models/project-models.interface';\r\nimport { BimplusButtonsRowComponent } from \"../bimplus-buttons-row/bimplus-buttons-row.component\";\r\nimport { BimplusButtonClickEvent, BimplusButtonRowItem } from '../bimplus-buttons-row/bimplus-buttons-row.interface';\r\nimport {\r\n BimplusOverlayDialogConfirmComponent\r\n} from \"../bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component\";\r\nimport {DialogService} from \"../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service\";\r\nimport * as WebClient from 'bimplus-webclient';\r\n\r\nexport const EMBEDDED_MODAL_DIALOGE_TYPE_FILE = 'file';\r\n\r\n@Component({\r\n selector: 'lib-links-to-documents',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n BimplusScrollableContainerComponent,\r\n BimplusButtonsRowComponent \r\n ],\r\n templateUrl: './links-to-documents.component.html',\r\n styleUrls: ['./links-to-documents.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class LinksToDocumentsComponent extends BimplusLocalizedWidgetComponent implements OnInit, OnDestroy {\r\n\r\n constructor(translateService: TranslateService,\r\n private readonly dialogService: DialogService,\r\n private renderer: Renderer2,\r\n private el: ElementRef\r\n ) {\r\n super(translateService)\r\n this.shadowRootElement = this.el.nativeElement.shadowRoot;\r\n\r\n }\r\n private shadowRootElement: HTMLElement;\r\n private _rootObjectId : string = \"\";\r\n isDestroyed = false;\r\n localWormHole:boolean = true;\r\n //When is true then it means the creation of link is in progress\r\n inProgress:boolean= false;\r\n\r\n @Input() api : WebSdk.Api | null = null;\r\n @Input() canCreateAttachmentLink:boolean = true;\r\n @Input() canDeleteAttachmentLink:boolean = true;\r\n @Input() project : ProjectNavigatorProject | null = null;\r\n @Input() wormholeSelector : string | undefined= \"localEmbeddedModalId\"; // calling application can provide a place where the iframe for documents selection will be rendered\r\n @Input() env : string = 'dev';\r\n\r\n @Input()\r\n set rootObjectId(id : string){\r\n this._currentObjectId$.next(id);\r\n this._rootObjectId = id;\r\n }\r\n\r\n get rootObjectId() : string{\r\n return this._rootObjectId;\r\n }\r\n\r\n private readonly _currentObjectId$ = new BehaviorSubject<string> (\"\");\r\n _attachmentCount : number = 0;\r\n _attachments : AttachmentLinkItem[] = [];\r\n buttonRowItems: Array<BimplusButtonRowItem> = [\r\n {\r\n id: \"add-documents\"\r\n , title: this.translateService.instant('_Add_document')\r\n , tooltip: this.translateService.instant('_Add_document')\r\n , disabled: !this.canCreateAttachmentLink\r\n , buttonStyle: 'primary'\r\n }\r\n ];\r\n\r\n ngOnInit() {\r\n this._currentObjectId$.subscribe({\r\n next: (id) => {\r\n this._createAttachmentLinkStructure(id);\r\n }\r\n });\r\n };\r\n \r\n ngOnDestroy(): void {\r\n this.isDestroyed = true;\r\n }\r\n\r\n fmt(string: string, ...formats: unknown[]): string {\r\n let index = 0;\r\n\r\n return string.replace(/%@(\\d+)?/g, (match: string, argumentIndex: string) => {\r\n const argumentIndexN = argumentIndex ? parseInt(argumentIndex, 10) - 1 : index++;\r\n const _match = formats[argumentIndexN];\r\n\r\n if (_match === null) {\r\n return '(null)';\r\n }\r\n if (_match === undefined) {\r\n return '';\r\n }\r\n return _match.toString();\r\n });\r\n }\r\n\r\n/**--------------------------------------------------------------------------\r\n * decorate link\r\n --------------------------------------------------------------------------*/\r\n _decorateLink(api:WebSdk.Api,link:WebSdk.AttachmentLink):AttachmentLinkItem{\r\n\r\n const retval:AttachmentLinkItem = {\r\n id: link.id,\r\n name: link.name,\r\n fileName: link.fileName,\r\n size: link.size,\r\n link: link.link,\r\n fileNameShort: '',\r\n extension: '',\r\n objectId: '',\r\n version: link.version\r\n };\r\n const access_token = api.getAccessToken();\r\n const attVersion = \"attachments/%@/versions/%@/download\";\r\n const url = api.getApiTeamUrl()+attVersion;\r\n const isEmbeddedAllplanMode = false;\r\n retval.size = parseFloat((link.size / 1000).toFixed(2));\r\n retval.link = `${this.fmt(url, link.id, link.version)}?api-token=${access_token}${ isEmbeddedAllplanMode ? '' : '&openInBrowser=true'}`;\r\n if (link.fileName.length > 20) {\r\n const fileParts = link.fileName.split('.');\r\n if (fileParts.length > 1) {\r\n retval.fileNameShort = fileParts.slice(0, -1).join('.');\r\n retval.extension = \".\" + fileParts.slice(-1);\r\n } else {\r\n retval.fileNameShort = link.fileName;\r\n }\r\n } else {\r\n retval.fileNameShort = link.fileName;\r\n }\r\n retval.objectId = this._currentObjectId$.value;\r\n\r\n return retval;\r\n }\r\n\r\n private decorateAttachmentLinks(api:WebSdk.Api, links:WebSdk.AttachmentLinksResponse):AttachmentLinkItem[]{\r\n const decoratedLinks = links.map((link) => this._decorateLink(api,link));\r\n decoratedLinks.sort((a,b) => {\r\n if(a.fileName.toLowerCase() < b.fileName.toLowerCase() ) return -1;\r\n if(a.fileName.toLowerCase() > b.fileName.toLowerCase() ) return 1;\r\n return 0;\r\n });\r\n return decoratedLinks;\r\n }\r\n\r\n private _createAttachmentLinkStructure(objectId : string){\r\n\r\n this._loadAttachmentLinkStructure(objectId)?.subscribe({\r\n next :(structureData) => {\r\n if(structureData){\r\n //this._attachmentLinkStructure = _attachmentLink StructureBuilder.createFromResponse(structureData);\r\n this._attachmentCount = structureData?.length;\r\n if(this.api){\r\n const retval = this.decorateAttachmentLinks(this.api,structureData);\r\n if(retval){\r\n this._attachments = retval;\r\n }\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n private _loadAttachmentLinkStructure(objectId : string){\r\n if(!this.api){\r\n return;\r\n }\r\n\r\n if(!objectId) {\r\n return;\r\n }\r\n return from(this.api.objects.getAttachmentLinks(objectId));\r\n }\r\n\r\n documentSelection :string[] | null = null;\r\n isOpened:boolean = false;\r\n embeddedModalContainer:string = 'embedded-modal';\r\n \r\n // show or hide embedded modal\r\n setModalVisibility(opened = true) {\r\n if(!this.wormholeSelector){\r\n return; \r\n }\r\n const element = this.localWormHole ? this.shadowRootElement.querySelector(\"#\" + this.wormholeSelector):\r\n document.getElementById(this.wormholeSelector);\r\n if (!element) {\r\n return;\r\n }\r\n if(this.localWormHole){\r\n if(element.parentElement){\r\n this.renderer.setStyle(element.parentElement,'display',opened?'block':'none')\r\n }\r\n } else {\r\n this.renderer.setStyle(element.parentElement,'display',opened?'block':'none')\r\n }\r\n \r\n ///containerEl.fadeIn(\"fast\") : containerEl.fadeOut(\"fast\");\r\n this.isOpened = opened;\r\n }\r\n\r\n\r\n closeEmbeddedModalFileSelection() { \r\n this.setModalVisibility(false); \r\n }\r\n\r\n _addLink(api:WebSdk.Api,ids:string[]){\r\n // filter out already existing attachment links \r\n const newAttachmentIDs = ids.filter( item => !this._attachments.find(n => n.id === item) );\r\n if( !newAttachmentIDs.length ){\r\n return;\r\n }\r\n if(this.inProgress){\r\n console.log('in progress');\r\n return;\r\n }\r\n\r\n this.inProgress = true;\r\n newAttachmentIDs.forEach((id) => {\r\n console.log('new attachment id:',id);\r\n });\r\n // Create an array of observables for each post request\r\n const postRequests = newAttachmentIDs.map((id) => \r\n from(api.objects.postAttachmentLink(this._rootObjectId,JSON.stringify({ attachmentId: id}))) \r\n );\r\n\r\n // Use forkJoin to wait for all post requests to complete in parallel\r\n forkJoin(postRequests)\r\n .pipe(\r\n // After all posts are complete, switch to the next call to get updated links\r\n concatMap(() => from(api.objects.getAttachmentLinks(this._rootObjectId)))\r\n )\r\n .subscribe({\r\n next: (updatedAttachments) => {\r\n this._attachments = this.decorateAttachmentLinks(\r\n api,\r\n updatedAttachments\r\n ); // Update attachments in component \r\n this.inProgress = false; \r\n },\r\n error: (err) => {\r\n console.error('Failed to add or reload attachments:', err);\r\n this.inProgress = false; \r\n }\r\n });\r\n }\r\n\r\n\r\n createAttachmentLink(api:WebSdk.Api){\r\n this.localWormHole = this.wormholeSelector === \"localEmbeddedModalId\";\r\n const callbackF = (docIDs:string[]):void => {\r\n const ids = (typeof docIDs === 'string') ? [docIDs] : docIDs;\r\n const foundDocuments = ids && ids.length > 0;\r\n if(!this.isDestroyed){\r\n this.closeEmbeddedModalFileSelection();\r\n if (foundDocuments) {\r\n this._addLink(api,ids);\r\n }\r\n }\r\n }\r\n\r\n if (typeof callbackF !== \"function\" || !this.project || !this.api) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n const isLocalhost = window.location.href.includes(\"localhost\");\r\n let access_token :string|null |undefined= '';\r\n if (isLocalhost) {\r\n access_token = this.api?.getAccessToken();\r\n if (!access_token) {\r\n return;\r\n }\r\n }\r\n\r\n const newClient = new WebClient.ExternalClient('BImplusNGXComponentClient');\r\n newClient?.initialize();\r\n // Make embedded windows pointing to the current feature branch with baseUrl setup\r\n const options:{baseUrl?:string} = {};\r\n // In case of localhost ommit explicit setup of baseUrl\r\n if (!isLocalhost) {\r\n // Remove '/viewer/' from the end of pathname\r\n let filteredPathname = window.location.pathname.replace(/\\/viewer\\/$/, '/');\r\n // Remove '/connexis/' from the end of pathname if we use temporary url for connexis like https://portal-dev.bimplus.net/connexis/?embedded...\r\n filteredPathname = filteredPathname.replace(/\\/connexis\\/$/, '/');\r\n options.baseUrl = window.location.origin + filteredPathname;\r\n }\r\n \r\n ///const env:string=\"dev\"; ///!!! to-do introduce env variable into components\r\n const clientModule = WebClient.BimFilesSelect;\r\n if(this.wormholeSelector){\r\n const documentSelection = new clientModule(this.wormholeSelector, access_token, newClient, this.env, options);\r\n if (!documentSelection) {\r\n return;\r\n }\r\n documentSelection.onAttachmentSelected = callbackF;\r\n \r\n if(this.project){\r\n if(this.localWormHole){\r\n documentSelection.loadShadowRoot(this.shadowRootElement,this.project.teamSlug , this.project.id);\r\n }else{\r\n documentSelection.load(this.project.teamSlug , this.project.id);\r\n }\r\n }\r\n this.setModalVisibility(true);\r\n }\r\n },200); \r\n\r\n }\r\n\r\n _deleteAttachmentLink(api:WebSdk.Api ,id:string,$event:Event){\r\n $event.stopPropagation();\r\n $event.preventDefault();\r\n const objects = api.objects;\r\n const objectId = this._currentObjectId$.value;\r\n from(api.objects.deleteAttachmentLink(this.rootObjectId,id)).pipe(\r\n switchMap(() => from(objects.getAttachmentLinks(objectId)))\r\n ).subscribe({\r\n next: (updatedAttachments) => {\r\n if(this.api){\r\n this._attachments = this.decorateAttachmentLinks(this.api,updatedAttachments); // Update attachments in component\r\n }\r\n },\r\n error: (err) => {\r\n console.error('Failed to delete or reload attachments:', err);\r\n }\r\n });\r\n }\r\n\r\n deleteAttachmentLink(attachment:AttachmentLinkItem,$event:Event){\r\n if(!this.api){\r\n return;\r\n }\r\n if(!attachment) {\r\n return;\r\n }\r\n const api = this.api;\r\n this.dialogService.open(BimplusOverlayDialogConfirmComponent, {\r\n options: {\r\n width: '400px', height: '200px', position: 'middle',\r\n positionOptions: {}, overlayClickEnabled: false, overlayVisibilityEnabled: true, draggable: false\r\n }, data: {\r\n title: this.translateService.instant('_Delete_attachmentlink'),\r\n message: this.translateService.instant('_Attachmentlink_delete_confirmation_message'),\r\n acceptButtonLocalizedString: \"_Delete\",\r\n acceptCallback: () => {\r\n this._deleteAttachmentLink(api,attachment.id,$event);\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n buttonClicked($event: BimplusButtonClickEvent){\r\n if(!this.api){\r\n return;\r\n }\r\n const api = this.api;\r\n if($event.id == \"add-documents\"){\r\n this.createAttachmentLink(api); \r\n }\r\n }\r\n}\r\n","@if (canCreateAttachmentLink) {\r\n <lib-bimplus-buttons-row\r\n [items]=\"buttonRowItems\"\r\n (buttonClicked)=\"buttonClicked($event)\"\r\n />\r\n}\r\n@if (wormholeSelector === 'localEmbeddedModalId'){\r\n <div class='embedded-modal-container'>\r\n <iframe id={{wormholeSelector}} [title]=\"\"></iframe>\r\n </div> \r\n}\r\n<lib-bimplus-scrollable-container>\r\n @for (attachment of _attachments; track attachment; let i = $index) {\r\n <div class=\"attachment-row\">\r\n @if (canDeleteAttachmentLink) {\r\n <span class=\"bim-attachment-delete-button\" (click)=\"deleteAttachmentLink(attachment,$event)\" (keydown)=\"deleteAttachmentLink(attachment,$event)\">\r\n <div\r\n title=\"{{ '_Delete_attachmentlink' | translate }}\"\r\n >\r\n &#10005;&#xFE0E;\r\n </div>\r\n </span>\r\n }\r\n <a class=\"bim-attachmentlink-item\" href={{attachment.link}} target='_blank' rel='noopener noreferrer'>\r\n <div class=\"bim-attachment-name\" title={{attachment.fileName}}>\r\n {{attachment.name ? attachment.name : attachment.fileName}}\r\n </div>\r\n <div class=\"bim-attachment-size\" title={{attachment.name}}>\r\n ({{attachment.size}} kB)\r\n </div>\r\n </a>\r\n </div>\r\n }\r\n @if (_attachments.length === 0) {\r\n <div class=\"bim-attachment-not-found\">\r\n {{ '_No attachments found' | translate }}\r\n </div>\r\n }\r\n</lib-bimplus-scrollable-container>\r\n\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport WebSdk from \"bimplus-websdk\";\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\n\r\n@Component({\r\n selector: 'lib-object-hyperlinks-item',\r\n standalone: true,\r\n imports: [\r\n TranslateModule\r\n ],\r\n templateUrl: './object-hyperlinks-item.component.html',\r\n styleUrl: './object-hyperlinks-item.component.less'\r\n})\r\nexport class ObjectHyperlinksItemComponent extends BimplusLocalizedWidgetComponent {\r\n constructor(translateService: TranslateService) {\r\n super(translateService)\r\n }\r\n\r\n @Input() hyperlink: WebSdk.Hyperlink | undefined;\r\n @Input() deleteButtonEnabled: boolean = true;\r\n\r\n @Output() deleteButtonClicked = new EventEmitter<void>();\r\n\r\n onDeleteButtonClick(): void {\r\n this.deleteButtonClicked.emit();\r\n }\r\n\r\n onDeleteButtonKeyDown($event: KeyboardEvent) {\r\n if ($event.key === 'Enter' || $event.key === ' ') {\r\n $event.preventDefault();\r\n\r\n this.onDeleteButtonClick();\r\n }\r\n }\r\n}\r\n","<div class=\"hyperlink-item\">\r\n @if (deleteButtonEnabled) {\r\n <div class=\"bim-list-button delete\" title=\"{{ '_Delete hyperlink' | translate }}\" (click)=\"onDeleteButtonClick()\"\r\n (keydown)=\"onDeleteButtonKeyDown($event)\">\r\n &#10005;&#xFE0E;\r\n </div>\r\n }\r\n\r\n <a href=\"{{ hyperlink?.url }}\" class='bim-hyperlink-url' target=\"_blank\" title=\"{{ hyperlink?.url }}\">\r\n <div class=\"bim-hyperlink-name\">\r\n {{ hyperlink?.name }}\r\n </div>\r\n </a>\r\n</div>\r\n","import {Component, forwardRef, Input, ViewEncapsulation} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {TranslateModule} from \"@ngx-translate/core\";\r\n\r\n@Component({\r\n selector: 'lib-bimplus-input-text-field',\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n TranslateModule\r\n ],\r\n templateUrl: './bimplus-input-text-field.component.html',\r\n styleUrl: './bimplus-input-text-field.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => BimplusInputTextFieldComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class BimplusInputTextFieldComponent implements ControlValueAccessor {\r\n @Input() placeholder: string = '';\r\n\r\n value: string = '';\r\n isDisabled: boolean = false;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n onChange = (value: string) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n handleInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n this.value = input.value;\r\n this.onChange(this.value);\r\n }\r\n\r\n handleBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<input\r\n type=\"text\"\r\n [value]=\"value\"\r\n (input)=\"handleInput($event)\"\r\n (blur)=\"handleBlur()\"\r\n [disabled]=\"isDisabled\"\r\n [placeholder]=\"placeholder\"\r\n class=\"text-input\"\r\n/>\r\n","import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';\r\nimport {BimplusButtonsRowComponent} from \"../bimplus-buttons-row/bimplus-buttons-row.component\";\r\nimport {BimplusButtonClickEvent, BimplusButtonRowItem} from \"../bimplus-buttons-row/bimplus-buttons-row.interface\";\r\nimport {BimplusLocalizedWidgetComponent} from \"../bimplus-localized-widget/bimplus-localized-widget.component\";\r\nimport {TranslateModule, TranslateService} from \"@ngx-translate/core\";\r\nimport {\r\n BimplusScrollableContainerComponent\r\n} from \"../bimplus-scrollable-container/bimplus-scrollable-container.component\";\r\nimport {ObjectHyperlinksItemComponent} from \"../object-hyperlinks-item/object-hyperlinks-item.component\";\r\nimport WebSdk from \"bimplus-websdk\";\r\nimport {BehaviorSubject} from \"rxjs\";\r\nimport {NgForOf, NgIf} from \"@angular/common\";\r\nimport {DialogService} from \"../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service\";\r\nimport {\r\n BimplusOverlayDialogConfirmComponent\r\n} from \"../bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component\";\r\nimport {FormBuilder, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {BimplusInputTextFieldComponent} from \"../bimplus-input-text-field/bimplus-input-text-field.component\";\r\n\r\n@Component({\r\n selector: 'lib-object-hyperlinks',\r\n standalone: true,\r\n imports: [\r\n BimplusButtonsRowComponent,\r\n BimplusScrollableContainerComponent,\r\n ObjectHyperlinksItemComponent,\r\n NgForOf,\r\n TranslateModule,\r\n ReactiveFormsModule,\r\n NgIf,\r\n BimplusInputTextFieldComponent\r\n ],\r\n templateUrl: './object-hyperlinks.component.html',\r\n styleUrl: './object-hyperlinks.component.less',\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ObjectHyperlinksComponent extends BimplusLocalizedWidgetComponent implements OnInit {\r\n hyperlinkForm: FormGroup;\r\n\r\n constructor(translateService: TranslateService, private readonly dialogService: DialogService, private readonly formBuilder: FormBuilder) {\r\n super(translateService);\r\n\r\n this.hyperlinkForm = this.formBuilder.group({\r\n name: ['', []],\r\n url: ['',\r\n [\r\n Validators.required,\r\n Validators.pattern(/^[^<>]*$/), // Do not allow < or >\r\n Validators.pattern(/^(?!\\s*$).+/) // Do not allow all empty string, but allow text after spaces\r\n ]\r\n ]\r\n });\r\n\r\n this.hyperlinkForm.statusChanges.subscribe(status => {\r\n this.buttonRowItems[0].disabled = status !== 'VALID';\r\n });\r\n }\r\n\r\n @Input() api: WebSdk.Api | null = null;\r\n\r\n @Input()\r\n set rootObjectId(id: string) {\r\n this._currentObjectId$.next(id);\r\n this.loadHyperlinks(id);\r\n\r\n this._rootObjectId = id;\r\n }\r\n\r\n get rootObjectId(): string {\r\n return this._rootObjectId;\r\n }\r\n\r\n private readonly _currentObjectId$ = new BehaviorSubject<string>(\"\");\r\n private readonly _currentPropertiesObjectId$ = new BehaviorSubject<string>(\"\");\r\n private _rootObjectId: string = \"\";\r\n\r\n buttonRowItems: Array<BimplusButtonRowItem> = [];\r\n\r\n @Input() canCreateHyperlinks: boolean = true;\r\n @Input() canDeleteHyperlinks: boolean = true;\r\n\r\n hyperlinks: Array<WebSdk.Hyperlink> = [];\r\n\r\n ngOnInit() {\r\n this.buttonRowItems.push(\r\n {\r\n id: \"add-hyperlink\"\r\n , title: this.translateService.instant('_Add hyperlink')\r\n , tooltip: this.translateService.instant('_Add hyperlink')\r\n , disabled: true\r\n , buttonStyle: 'primary'\r\n }\r\n );\r\n }\r\n\r\n buttonRowButtonClicked($event: BimplusButtonClickEvent) {\r\n if ($event.id === \"add-hyperlink\") {\r\n if (this.hyperlinkForm.valid) {\r\n this.addHyperlink(this.hyperlinkForm.value['name'], this.hyperlinkForm.value['url'], this._rootObjectId).then(() => {\r\n this.loadHyperlinks(this._rootObjectId);\r\n this.hyperlinkForm.reset();\r\n });\r\n }\r\n }\r\n }\r\n\r\n private loadHyperlinks(objectId: string) {\r\n if (!this.api)\r\n return;\r\n\r\n this.api.objects.getHyperlinks(objectId).then((response: WebSdk.HyperlinksResponse) => {\r\n this.hyperlinks = response;\r\n });\r\n }\r\n\r\n private addHyperlink(name: string, url: string, objectId: string): Promise<WebSdk.Hyperlink> {\r\n if (!this.api)\r\n return Promise.reject(new Error('API not available'));\r\n\r\n let sanitizedUrl: string = url.trim();\r\n\r\n if (!RegExp(/^http(s?):\\/\\//).exec(sanitizedUrl)) {\r\n sanitizedUrl = 'https://' + sanitizedUrl;\r\n }\r\n\r\n let sanitizedName = name?.trim() ?? '';\r\n\r\n if (sanitizedName === '') {\r\n sanitizedName = sanitizedUrl;\r\n }\r\n\r\n const data = JSON.stringify({\r\n name: sanitizedName,\r\n url: sanitizedUrl,\r\n objectId: objectId\r\n });\r\n\r\n return this.api.objects.postHyperlink(objectId, data);\r\n }\r\n\r\n onHyperlinkItemDeleteButtonClicked(hyperlink: WebSdk.Hyperlink) {\r\n this.dialogService.open(BimplusOverlayDialogConfirmComponent, {\r\n options: {\r\n width: '400px', height: '200px', position: 'middle',\r\n positionOptions: {}, overlayClickEnabled: false, overlayVisibilityEnabled: true, draggable: false\r\n }, data: {\r\n title: this.translateService.instant('_Delete hyperlink'),\r\n message: this.translateService.instant('_Hyperlink delete confirmation message'),\r\n acceptButtonLocalizedString: \"_Delete\",\r\n acceptCallback: () => {\r\n this.deleteHyperlink(hyperlink.id);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private deleteHyperlink(id: string) {\r\n if (!this.api)\r\n return;\r\n\r\n this.api.hyperlinks.delete(id).then(() => {\r\n this.loadHyperlinks(this._rootObjectId);\r\n });\r\n }\r\n}\r\n","@if (canCreateHyperlinks) {\r\n <form [formGroup]=\"hyperlinkForm\" class=\"input-form\">\r\n <div>\r\n <lib-bimplus-input-text-field formControlName=\"name\" placeholder=\"{{ '_Name' | translate }}\"/>\r\n </div>\r\n <div>\r\n <lib-bimplus-input-text-field formControlName=\"url\" placeholder=\"{{ '_URL' | translate }}\"/>\r\n </div>\r\n\r\n <lib-bimplus-buttons-row [items]=\"buttonRowItems\" (buttonClicked)=\"buttonRowButtonClicked($event)\"/>\r\n </form>\r\n}\r\n\r\n<div class=\"list-anchor\">\r\n <div class=\"list\">\r\n <lib-bimplus-scrollable-container>\r\n @if (hyperlinks.length > 0) {\r\n <div style=\"padding-left: 8px\" *ngFor=\"let hyperlink of hyperlinks\">\r\n <lib-object-hyperlinks-item [hyperlink]=\"hyperlink\" [deleteButtonEnabled]=\"canDeleteHyperlinks\"\r\n (deleteButtonClicked)=\"onHyperlinkItemDeleteButtonClicked(hyperlink)\"/>\r\n </div>\r\n } @else {\r\n <div class=\"no-links\">{{ \"_No hyperlinks found\" | translate }}</div>\r\n }\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DialogService } from '../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service';\r\n\r\nexport interface ErrorDialogInputData {\r\n title: string;\r\n message: string;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-overlay-dialog-error',\r\n standalone: true,\r\n imports: [CommonModule, TranslateModule],\r\n templateUrl: './bimplus-overlay-dialog-error.component.html',\r\n styleUrls: ['./bimplus-overlay-dialog-error.component.less'],\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusOverlayDialogErrorComponent {\r\n\r\n private _title: string = '';\r\n private _message: string = '';\r\n private readonly _data: ErrorDialogInputData | undefined;\r\n\r\n @Input()\r\n get title(): string {\r\n return this._title;\r\n }\r\n set title(value: string) {\r\n this._title = value;\r\n }\r\n\r\n @Input()\r\n get message(): string {\r\n return this._message;\r\n }\r\n set message(value: string) {\r\n this._message = value;\r\n }\r\n\r\n constructor(private readonly dialogService: DialogService) {\r\n this._data = this.dialogService.inputData as ErrorDialogInputData;\r\n this._title = this._data?.title || '';\r\n this._message = this._data?.message || '';\r\n }\r\n\r\n close() {\r\n this.dialogService.close();\r\n }\r\n\r\n keypressClose(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.dialogService.close();\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"overlay-dialog-container\">\r\n <div class=\"overlay-dialog-container_title\">\r\n <div class=\"overlay-dialog-container_title_icon\">\r\n </div>\r\n <div class=\"overlay-dialog-container_title_msg\">\r\n {{title}}\r\n </div>\r\n <div class=\"overlay-dialog-container_title_close\" (click)=\"close()\" (keypress)=\"keypressClose($event)\">\r\n </div>\r\n </div>\r\n <div class=\"overlay-dialog-container_content\">\r\n <div class=\"overlay-dialog-container_content_msg\">\r\n {{this.message}}\r\n </div>\r\n <button class=\"overlay-dialog-container_content_btn\" (click)=\"close()\">{{\"_Ok\" | translate}}</button>\r\n </div>\r\n</div>\r\n","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport type BimplusTabComponentModel = {\r\n id: string;\r\n title: string;\r\n img: {\r\n default: string;\r\n active: string;\r\n };\r\n};\r\n\r\nexport const DEFAULT_TAB_SWITCHER_ELEMENTS: BimplusTabComponentModel[] = [\r\n { id: 'object-properties', img: { default: 'ic_models', active: 'ic_models_maincolor' }, title: '_Object properties' },\r\n { id: 'comments', img: { default: 'Comments_18_gray', active: 'Comments_18_maincolor' }, title: '_Comments' },\r\n { id: 'attachments', img: { default: 'Attachment_18_gray', active: 'Attachment_18_maincolor' }, title: '_Attachments' },\r\n { id: 'hyperlinks', img: { default: 'Links_18_gray', active: 'Links_18_maincolor' }, title: 'hyperlinks' },\r\n { id: 'links-to-documents', img: { default: 'Attachmentlink_18_gray', active: 'Attachmentlink_18_maincolor' }, title: '_Links_to_documents' },\r\n];\r\n\r\nexport type BimplusTabsSwitcherConfig = {\r\n defaultTabsSwitcherElements?: BimplusTabComponentModel[];\r\n disabled: Partial<{\r\n all: boolean;\r\n id: string;\r\n }>\r\n};\r\n\r\nexport const BIMPLUS_TABS_SWITCHER_CONFIG = new InjectionToken<BimplusTabsSwitcherConfig>('bimplus-tabs-switcher-config');","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { BIMPLUS_TABS_SWITCHER_CONFIG, BimplusTabComponentModel, BimplusTabsSwitcherConfig, DEFAULT_TAB_SWITCHER_ELEMENTS } from '../bimplus-tabs-switcher.interface';\r\n\r\n@Injectable()\r\nexport class BimplusTabsSwitcherService {\r\n /** Default tab switcher elements. */\r\n private readonly tabSwitcherElements = new BehaviorSubject<\r\n BimplusTabComponentModel[]\r\n >(DEFAULT_TAB_SWITCHER_ELEMENTS);\r\n public readonly tabSwitcherElements$ =\r\n this.tabSwitcherElements.asObservable();\r\n\r\n /** Attribute to indicate active tab. (only for BimplusTabComponent) */\r\n private readonly activeTab = new Subject<string>();\r\n public readonly activeTab$ = this.activeTab.asObservable();\r\n\r\n public setActiveTab(key: string): void {\r\n this.activeTab.next(key);\r\n }\r\n\r\n constructor(\r\n @Optional()\r\n @Inject(BIMPLUS_TABS_SWITCHER_CONFIG)\r\n private readonly bimplusTabsSwitcherConfig?: Pick<\r\n BimplusTabsSwitcherConfig,\r\n 'defaultTabsSwitcherElements'\r\n >\r\n ) {\r\n // if there is new default tabs from configuration token then use them instead of original default tabs\r\n if (this.bimplusTabsSwitcherConfig?.defaultTabsSwitcherElements) {\r\n this.tabSwitcherElements.next(\r\n this.bimplusTabsSwitcherConfig.defaultTabsSwitcherElements\r\n );\r\n }\r\n }\r\n}\r\n","import { NgClass } from '@angular/common';\r\nimport { Component, computed, EventEmitter, HostListener, Inject, Input, OnInit, Optional, Output, signal } from '@angular/core';\r\nimport { BimplusTabsSwitcherService } from '../../services/bimplus-tabs-switcher.service';\r\nimport { BIMPLUS_TABS_SWITCHER_CONFIG, BimplusTabComponentModel, BimplusTabsSwitcherConfig } from '../../bimplus-tabs-switcher.interface';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nconst DEFAULT_IMAGE_SRC = '../../../../../../';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-tab',\r\n standalone: true,\r\n imports: [NgClass, TranslateModule],\r\n templateUrl: './bimplus-tab.component.html',\r\n styleUrl: './bimplus-tab.component.less'\r\n})\r\nexport class BimplusTabComponent implements OnInit {\r\n @Input({ required: true }) bimplusTabComponentModel!: BimplusTabComponentModel;\r\n @Input() imageBaseSrc?: string | null = DEFAULT_IMAGE_SRC;\r\n /** Currently active tab. */\r\n @Input() set activeTab(value: string | undefined) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n this.bimplusTabsSwitcherService.setActiveTab(value);\r\n }\r\n @Output() activeTabChange = new EventEmitter<string>();\r\n\r\n /** Attribute indicating active tab. */\r\n protected readonly activeTabSignal = toSignal(this.bimplusTabsSwitcherService.activeTab$);\r\n /** Indicate that tab is active or not. */\r\n protected readonly isActive = computed(() => this.activeTabSignal() === this.bimplusTabComponentModel.id);\r\n /** Indicate that tab is disabled or not. */\r\n protected readonly isDisabled = signal<boolean>(false);\r\n /** Computed property for image file name based on active/default state. */\r\n protected readonly imgName = computed(() =>\r\n this.isActive() ? this.bimplusTabComponentModel.img.active : this.bimplusTabComponentModel.img.default\r\n )\r\n protected readonly onHoverOver = signal<boolean>(false);\r\n\r\n /** Whether all tabs is disabled based on configuration token. */\r\n private readonly isAllDisabled = this.bimplusTabsSwitcherConfig?.disabled?.all ?? false;\r\n\r\n constructor(\r\n @Optional() @Inject(BIMPLUS_TABS_SWITCHER_CONFIG) private readonly bimplusTabsSwitcherConfig: BimplusTabsSwitcherConfig,\r\n protected readonly bimplusTabsSwitcherService: BimplusTabsSwitcherService\r\n ) {\r\n if (this.isAllDisabled) {\r\n this.isDisabled.set(true);\r\n }\r\n }\r\n\r\n @HostListener('mouseenter')\r\n protected onMouseEnter(): void {\r\n this.onHoverOver.set(true)\r\n }\r\n\r\n @HostListener('mouseleave')\r\n protected onMouseLeave(): void {\r\n this.onHoverOver.set(false)\r\n }\r\n\r\n public ngOnInit(): void {\r\n // wheter specific tab is disabled\r\n if (!this.isAllDisabled && this.bimplusTabsSwitcherConfig?.disabled?.id) {\r\n this.isDisabled.set(this.bimplusTabsSwitcherConfig.disabled?.id === this.bimplusTabComponentModel.id);\r\n }\r\n }\r\n\r\n /**\r\n * Will update active tab to service state.\r\n * @protected\r\n * @returns void\r\n */\r\n protected activate(): void {\r\n if (this.isDisabled()) {\r\n return;\r\n }\r\n\r\n this.bimplusTabsSwitcherService.setActiveTab(this.bimplusTabComponentModel.id);\r\n this.activeTabChange.emit(this.bimplusTabComponentModel.id);\r\n }\r\n}\r\n","<div\r\n class=\"tab-element\"\r\n [title]=\"bimplusTabComponentModel.title | translate\"\r\n [class.disabled]=\"isDisabled()\"\r\n (click)=\"!isDisabled() && activate()\"\r\n (keypress)=\"!isDisabled() && activate()\"\r\n>\r\n <img src=\"{{imageBaseSrc}}assets/images/default/{{imgName()}}.svg\" [alt]=\"imgName()\">\r\n <div\r\n [attr.data-test]=\"'underline-switcher-' + bimplusTabComponentModel.id\"\r\n [ngClass]=\"{\r\n 'underline-switcher': true,\r\n 'highlight': isActive(),\r\n 'hovering': onHoverOver()\r\n }\"\r\n ></div>\r\n</div>\r\n","import { Component, ViewEncapsulation, Optional, ChangeDetectionStrategy, signal, Signal, SkipSelf, Output, EventEmitter, Input, inject } from '@angular/core';\r\nimport { BimplusTabsSwitcherService } from './services/bimplus-tabs-switcher.service';\r\nimport { BimplusTabComponent } from './components/bimplus-tab/bimplus-tab.component';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { BimplusTabComponentModel, DEFAULT_TAB_SWITCHER_ELEMENTS } from './bimplus-tabs-switcher.interface';\r\nimport { APP_BASE_HREF } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-tabs-switcher',\r\n standalone: true,\r\n imports: [BimplusTabComponent],\r\n templateUrl: './bimplus-tabs-switcher.component.html',\r\n styleUrls: ['./bimplus-tabs-switcher.component.less'],\r\n providers: [BimplusTabsSwitcherService],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class BimplusTabsSwitcherComponent {\r\n @Input() activeTab?: string;\r\n @Output() activeTabChange = new EventEmitter<string>();\r\n\r\n /** default tab elements, can be chanaged from outside by BimplusTabsSwitcherService */\r\n protected readonly tabSwitcherElements: Signal<BimplusTabComponentModel[]>;\r\n /** app base href */\r\n protected readonly baseHref = inject(APP_BASE_HREF, { optional: true });\r\n\r\n constructor(\r\n @Optional() @SkipSelf()\r\n private readonly bimplusTabsSwitcherService: BimplusTabsSwitcherService\r\n ) {\r\n // will check wheter is used from outside and if not then add default tabs\r\n if (this.bimplusTabsSwitcherService) {\r\n this.tabSwitcherElements = toSignal(this.bimplusTabsSwitcherService.tabSwitcherElements$) as Signal<BimplusTabComponentModel[]>\r\n } else {\r\n this.tabSwitcherElements = signal<BimplusTabComponentModel[]>(DEFAULT_TAB_SWITCHER_ELEMENTS).asReadonly();\r\n }\r\n }\r\n}\r\n","<div class=\"tabswitcher-container\">\r\n @for (tabElement of tabSwitcherElements(); track tabElement.id) {\r\n <lib-bimplus-tab\r\n [attr.data-test]=\"tabElement.id\"\r\n [activeTab]=\"activeTab\"\r\n [imageBaseSrc]=\"baseHref\"\r\n (activeTabChange)=\"activeTabChange.emit($event)\"\r\n [bimplusTabComponentModel]=\"{ id: tabElement.id, title: tabElement.title, img: { active: tabElement.img.active, default: tabElement.img.default }}\"\r\n />\r\n }\r\n <ng-content></ng-content>\r\n</div>","import { Attachment as IAttachment } from 'bimplus-websdk';\r\n\r\nexport class Attachment implements Partial<IAttachment> {\r\n public id: string;\r\n public fileName: string;\r\n public size: number | undefined;\r\n public file?: File;\r\n\r\n constructor(data: Partial<IAttachment>) {\r\n this.id = data.id ?? '';\r\n this.fileName = data.fileName ?? '';\r\n this.size = data.size ?? 0;\r\n }\r\n}\r\n\r\ntype Builder = typeof AttachmentBuilder;\r\n\r\nexport abstract class AttachmentBuilder {\r\n private static attachment = new Attachment({});\r\n\r\n public static create(value: Attachment): Builder {\r\n this.attachment = new Attachment(value);\r\n return this;\r\n }\r\n\r\n public static setId(id: string): Builder {\r\n this.attachment.id = id;\r\n return this;\r\n }\r\n\r\n public static setFileName(name: string): Builder {\r\n this.attachment.fileName = name;\r\n return this;\r\n }\r\n\r\n public static setSize(size: number): Builder {\r\n this.attachment.size = size;\r\n return this;\r\n }\r\n\r\n public static setFile(file: File): Builder {\r\n this.attachment.file = file;\r\n return this;\r\n }\r\n\r\n public static build(): Attachment {\r\n return this.attachment;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport {\r\n Attachment,\r\n AttachmentBuilder,\r\n} from '../bimplus-attachments.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BimplusAttachmentsService {\r\n private readonly attachments = new BehaviorSubject<Attachment[] | null>(null);\r\n public readonly attachments$ = this.attachments.asObservable();\r\n\r\n public setAttachment(value: Attachment | File): void {\r\n let payload: Attachment;\r\n if (value instanceof File) {\r\n payload = AttachmentBuilder.setFile(value)\r\n .setFileName(value.name)\r\n .build();\r\n } else {\r\n payload = AttachmentBuilder.create(value).build();\r\n }\r\n\r\n const toUpdate = this.attachments.value\r\n ? [...this.attachments.value, payload]\r\n : [payload];\r\n this.attachments.next(toUpdate);\r\n }\r\n\r\n public deleteAttachment(fileToDelete: Attachment): void {\r\n const toUpdate =\r\n this.attachments.value?.filter((file) => file !== fileToDelete) ?? null;\r\n this.attachments.next(toUpdate);\r\n }\r\n\r\n public addAttachments(attachments: Attachment[]): void {\r\n this.attachments.next(attachments);\r\n }\r\n\r\n public download(href: string, fileName: string): void {\r\n const anchor: HTMLAnchorElement = document.createElement('a');\r\n anchor.rel = 'noopener noreferrer';\r\n anchor.target = '_blank';\r\n anchor.href = href;\r\n anchor.download = fileName;\r\n anchor.click();\r\n }\r\n}\r\n","import { DecimalPipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\nconst MB_SIZE = 1024;\r\n\r\nexport const BitConverterSize = {\r\n KB: 'kB',\r\n GB: 'gib',\r\n MB: 'mb'\r\n // more..\r\n} as const;\r\n\r\ntype SizeType = typeof BitConverterSize['GB' | 'KB' | 'MB'];\r\n\r\n@Pipe({\r\n name: 'bitConverter',\r\n standalone: true\r\n})\r\nexport class BitConverterPipe extends DecimalPipe implements PipeTransform {\r\n override transform(value: number | string, digitsInfo?: string, locale?: string): string | null;\r\n override transform(value: null | undefined, digitsInfo?: string, locale?: string): null;\r\n override transform(value: number | string | null | undefined, digitsInfo?: string, locale?: string): string | null;\r\n override transform(value: unknown, sizeToConvert: SizeType = BitConverterSize.KB, digitsInfo: string = '1.2-2'): string | null {\r\n if (!this.isNumber(value)) {\r\n throw new Error('[BitConverterPipe]: value is not a number');\r\n }\r\n const size = this.getSizeFromBites(value, sizeToConvert);\r\n let decimalValue = super.transform(size, digitsInfo);\r\n decimalValue ??= value.toString();\r\n\r\n return `(${decimalValue} ${sizeToConvert})`;\r\n }\r\n\r\n private getSizeFromBites(value: number, size: SizeType): number {\r\n switch(size) {\r\n case 'kB':\r\n return value / MB_SIZE;\r\n case 'mb':\r\n return value / (MB_SIZE * MB_SIZE);\r\n case 'gib':\r\n return value / (MB_SIZE * MB_SIZE * MB_SIZE);\r\n default:\r\n return value;\r\n }\r\n }\r\n\r\n private isNumber(value: unknown): value is number {\r\n return typeof value === 'number' && !isNaN(value);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n computed,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n signal,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { BitConverterPipe } from '../../../../pipes/bit-converter.pipe';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { Attachment } from '../../bimplus-attachments.interface';\r\n\r\nconst BIM_ATTACHMENT_DELETE_BUTTON_WIDTH = 30;\r\nconst BIM_ATTACHMENT_ITEM_PADDING_LEFT = 28;\r\n\r\n@Component({\r\n selector: 'lib-bimplus-attachment-item',\r\n standalone: true,\r\n imports: [BitConverterPipe, TranslateModule],\r\n templateUrl: './bimplus-attachment-item.component.html',\r\n styleUrl: './bimplus-attachment-item.component.less',\r\n})\r\nexport class BimplusAttachmentItemComponent\r\n implements AfterViewInit, OnDestroy\r\n{\r\n @ViewChild('attachmentSizeRef') attachmentSizeRef!: ElementRef<HTMLElement>;\r\n @ViewChild('attachmentNameRef') attachmentNameRef!: ElementRef<HTMLElement>;\r\n @Input({ required: true }) attachment!: Attachment;\r\n @Input() set parentWidth(value: number | undefined) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n this.parentWidthSignal.set(value);\r\n }\r\n @Output() deleteAttachment = new EventEmitter<Attachment>();\r\n @Output() getAttachment = new EventEmitter<Attachment>();\r\n\r\n get type(): string {\r\n return `.${this.attachment.fileName.split('.').at(-1)}`;\r\n }\r\n\r\n private intersectionObserver!: IntersectionObserver;\r\n /** Parent element width. */\r\n private readonly parentWidthSignal = signal<number | undefined>(undefined);\r\n /** Attachment size text width. */\r\n private readonly attachmentSizeWidth = signal<number>(0);\r\n /** Wheter name is fully visible or not based on parent width. */\r\n protected readonly nameIsfullyVisible = signal<boolean>(false);\r\n\r\n /** Width size of file name line. */\r\n protected readonly nameInfoLineWidth = computed<number>(() => {\r\n const parentWidth = this.parentWidthSignal();\r\n const attachmentSizeWidth = this.attachmentSizeWidth();\r\n const nameIsfullyVisible = this.nameIsfullyVisible();\r\n\r\n if (!parentWidth) {\r\n return 0;\r\n }\r\n\r\n if (nameIsfullyVisible) {\r\n return parentWidth - BIM_ATTACHMENT_DELETE_BUTTON_WIDTH;\r\n }\r\n\r\n return (\r\n parentWidth -\r\n attachmentSizeWidth -\r\n (BIM_ATTACHMENT_DELETE_BUTTON_WIDTH + BIM_ATTACHMENT_ITEM_PADDING_LEFT)\r\n );\r\n });\r\n\r\n public ngAfterViewInit(): void {\r\n this.attachmentSizeWidth.set(\r\n +this.attachmentSizeRef.nativeElement.clientWidth\r\n );\r\n this.createIntersectionObserver();\r\n this.intersectionObserver.observe(this.attachmentNameRef.nativeElement);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.intersectionObserver.unobserve(this.attachmentNameRef.nativeElement);\r\n }\r\n\r\n private createIntersectionObserver(): void {\r\n const options: IntersectionObserverInit = {\r\n root: null,\r\n rootMargin: '0px',\r\n threshold: 1.0,\r\n };\r\n const callback: IntersectionObserverCallback = (entries) =>\r\n entries.forEach(({ intersectionRatio }) =>\r\n this.nameIsfullyVisible.set(intersectionRatio === 1)\r\n );\r\n\r\n this.intersectionObserver = new IntersectionObserver(callback, options);\r\n }\r\n}\r\n","<div class=\"bim-attachment-item\">\r\n <div\r\n data-test=\"bim-attachment\"\r\n (click)=\"getAttachment.emit(attachment)\"\r\n (keypress)=\"$event.preventDefault()\"\r\n title=\"{{ attachment.fileName }}\"\r\n class=\"bim-attachment-name\"\r\n [style.width.px]=\"nameInfoLineWidth()\"\r\n >\r\n <span #attachmentNameRef>{{ attachment.fileName }}</span>\r\n @if (nameIsfullyVisible()) {\r\n <span class=\"bim-attachment-size\">{{\r\n attachment.size | bitConverter\r\n }}</span>\r\n }\r\n </div>\r\n @if(!nameIsfullyVisible()) {\r\n <span>{{ type }} </span>\r\n <div #attachmentSizeRef class=\"bim-attachment-size\">\r\n {{ attachment.size | bitConverter }}\r\n </div>\r\n }\r\n <span\r\n data-test=\"delete-attachment-btn\"\r\n class=\"bim-attachment-delete-button\"\r\n title=\"{{ '_Delete attachment' | translate }}\"\r\n (click)=\"deleteAttachment.emit(attachment)\"\r\n (keypress)=\"$event.preventDefault()\"\r\n >\r\n ✕︎\r\n </span>\r\n</div>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n OnDestroy,\r\n Output,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BimplusButtonsRowComponent } from '../bimplus-buttons-row/bimplus-buttons-row.component';\r\nimport { BimplusButtonRowItem } from '../bimplus-buttons-row/bimplus-buttons-row.interface';\r\nimport { BimplusAttachmentsService } from './services/bimplus-attachments.service';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { BimplusAttachmentItemComponent } from './components/bimplus-attachment-item/bimplus-attachment-item.component';\r\nimport { Attachment } from './bimplus-attachments.interface';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-attachments',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n BimplusButtonsRowComponent,\r\n BimplusAttachmentItemComponent,\r\n ],\r\n templateUrl: './bimplus-attachments.component.html',\r\n styleUrl: './bimplus-attachments.component.less',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.ShadowDom,\r\n})\r\nexport class BimplusAttachmentsComponent\r\n extends BimplusLocalizedWidgetComponent\r\n implements AfterViewInit, OnDestroy\r\n{\r\n @ViewChild('attachmentListRef') attachmentListRef!: ElementRef<HTMLElement>;\r\n @Output() deleteAttachment = new EventEmitter<Attachment>();\r\n @Output() addAttachment = new EventEmitter<File>();\r\n @Output() getAttachment = new EventEmitter<Attachment>();\r\n\r\n private resizeObserver!: ResizeObserver;\r\n private readonly bimplusAttachmentsService = inject(\r\n BimplusAttachmentsService\r\n );\r\n /** Attribute for attachments which were saved to server. */\r\n protected readonly attachments = toSignal(\r\n this.bimplusAttachmentsService.attachments$\r\n );\r\n /** Attachments buttons. */\r\n protected readonly items: BimplusButtonRowItem[] = [\r\n {\r\n id: 'add-attachment',\r\n title: this.translateService.instant('_Add attachment'),\r\n tooltip: this.translateService.instant('_Add attachment'),\r\n disabled: false,\r\n buttonStyle: 'primary',\r\n type: 'file',\r\n },\r\n ];\r\n /** Width size of file name line. */\r\n protected readonly attachmentListWidth = signal<number | undefined>(\r\n undefined\r\n );\r\n\r\n public ngAfterViewInit(): void {\r\n this.createResizeObserver();\r\n this.resizeObserver.observe(this.attachmentListRef.nativeElement);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.resizeObserver.unobserve(this.attachmentListRef.nativeElement);\r\n }\r\n\r\n protected onFileChanged(file: File): void {\r\n this.addAttachment.emit(file);\r\n }\r\n\r\n private createResizeObserver(): void {\r\n this.resizeObserver = new ResizeObserver((entries) => {\r\n const { width }: DOMRectReadOnly = entries[0].contentRect;\r\n this.attachmentListWidth.set(width);\r\n });\r\n }\r\n}\r\n","<lib-bimplus-buttons-row [items]=\"items\" (fileChanged)=\"onFileChanged($event)\"/>\r\n\r\n<section #attachmentListRef class=\"bim-attachments-list\">\r\n @if (!attachments()?.length) {\r\n <p data-test=\"no-attachments\" class=\"bim-attachments-list-empty\">{{ '_No attachments found' | translate }}</p>\r\n } @else {\r\n @for (attachment of attachments(); track attachment) {\r\n <lib-bimplus-attachment-item\r\n [attr.data-test]=\"attachment.id\"\r\n (deleteAttachment)=\"deleteAttachment.emit($event)\"\r\n (getAttachment)=\"getAttachment.emit($event)\"\r\n [parentWidth]=\"attachmentListWidth()\"\r\n [attachment]=\"attachment\"\r\n />\r\n }\r\n }\r\n</section>\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { BimplusButtonsRowComponent } from '../bimplus-buttons-row/bimplus-buttons-row.component';\r\nimport { BimplusButtonClickEvent, BimplusButtonRowItem } from '../bimplus-buttons-row/bimplus-buttons-row.interface';\r\nimport { DialogService } from '../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service';\r\n\r\ninterface CommentDialogData {\r\n title: string;\r\n message: string;\r\n acceptCallback: () => void;\r\n}\r\n\r\nconst DELETE_BUTTON_ID = 'delete';\r\nconst CANCEL_BUTTON_ID = 'cancel';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-overlay-dialog-delete',\r\n templateUrl: './bimplus-overlay-dialog-delete.component.html',\r\n styleUrls: ['./bimplus-overlay-dialog-delete.component.less'],\r\n imports: [TranslateModule, BimplusButtonsRowComponent],\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusOverlayDialogDeleteComponent {\r\n\r\n private _title: string = '';\r\n private _message: string = '';\r\n private readonly data: CommentDialogData | undefined;\r\n acceptCallback: (() => void) | undefined;\r\n protected readonly buttons: BimplusButtonRowItem[] = [\r\n {\r\n id: DELETE_BUTTON_ID,\r\n title: this.translateService.instant('_Delete'),\r\n tooltip: this.translateService.instant('_Delete'),\r\n disabled: false,\r\n buttonStyle: 'primary'\r\n },\r\n {\r\n id: CANCEL_BUTTON_ID,\r\n title: this.translateService.instant('_Cancel'),\r\n tooltip: this.translateService.instant('_Cancel'),\r\n disabled: false,\r\n buttonStyle: 'secondary'\r\n }\r\n ];\r\n\r\n @Input()\r\n get title(): string {\r\n return this._title;\r\n }\r\n set title(value: string) {\r\n this._title = value;\r\n }\r\n\r\n @Input()\r\n get message(): string {\r\n return this._message;\r\n }\r\n set message(value: string) {\r\n this._message = value;\r\n }\r\n\r\n constructor(\r\n private readonly dialogService: DialogService,\r\n private readonly translateService: TranslateService\r\n ) {\r\n this.data = this.dialogService.inputData as CommentDialogData;\r\n if (this.data) {\r\n this._title = this.data.title || '';\r\n this._message = this.data.message || '';\r\n this.acceptCallback = this.data.acceptCallback;\r\n }\r\n }\r\n\r\n close(): void {\r\n this.dialogService.close();\r\n }\r\n\r\n keypressClose(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.dialogService.close();\r\n }\r\n }\r\n\r\n buttonRowButtonClicked($event: BimplusButtonClickEvent): void {\r\n this.dialogService.close();\r\n\r\n if ($event.id === DELETE_BUTTON_ID) {\r\n this.acceptCallback?.();\r\n }\r\n }\r\n}\r\n","<div class=\"overlay-dialog-container\">\r\n <div class=\"overlay-dialog-container_title\">\r\n <div class=\"overlay-dialog-container_title_icon\"></div>\r\n <div class=\"overlay-dialog-container_title_msg\">\r\n {{title}}\r\n </div>\r\n <div\r\n class=\"overlay-dialog-container_title_close\"\r\n (click)=\"close()\"\r\n (keypress)=\"keypressClose($event)\"\r\n ></div>\r\n </div>\r\n <div class=\"overlay-dialog-container_content\">\r\n <div\r\n class=\"overlay-dialog-container_content_msg\"\r\n [innerHTML]=\"message\">\r\n </div>\r\n <div class=\"buttons\">\r\n <lib-bimplus-buttons-row\r\n [items]=\"buttons\"\r\n (buttonClicked)=\"buttonRowButtonClicked($event)\"\r\n ></lib-bimplus-buttons-row>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libAutoResizeTextarea]',\r\n standalone: true\r\n})\r\nexport class AutoResizeTextareaDirective {\r\n\r\n private _libAutoResizeTextarea = false;\r\n private _autoResizeMinRows = 1;\r\n private _autoResizeMaxRows = 1;\r\n private currentRows = 1;\r\n private offsetHeight = 0;\r\n private readonly input: HTMLTextAreaElement;\r\n private avgLineHeight = 0;\r\n\r\n @Input()\r\n set autoResizeMinRows(value: number) {\r\n this._autoResizeMinRows = value > 0 ? value : 1;\r\n this.currentRows = this.currentRows < value ? value : this.currentRows;\r\n this.input.rows = value;\r\n }\r\n get autoResizeMinRows(): number {\r\n return this._autoResizeMinRows;\r\n }\r\n\r\n @Input()\r\n set autoResizeMaxRows(value: number) {\r\n this._autoResizeMaxRows = value < 1 ? 1 : value;\r\n }\r\n get autoResizeMaxRows(): number {\r\n return this._autoResizeMaxRows;\r\n }\r\n\r\n @Input()\r\n set libAutoResizeTextarea(condition: boolean) {\r\n this._libAutoResizeTextarea = condition;\r\n }\r\n get libAutoResizeTextarea(): boolean {\r\n return this._libAutoResizeTextarea;\r\n }\r\n\r\n constructor(private el: ElementRef) {\r\n this.input = this.el.nativeElement;\r\n }\r\n\r\n @HostListener('input')\r\n onInput(): void {\r\n if (this.libAutoResizeTextarea) {\r\n this.calculateLineHeight();\r\n this.updateRows();\r\n }\r\n }\r\n\r\n private calculateLineHeight(): void {\r\n const style = window.getComputedStyle(this.input, null);\r\n const lineHeight = style.getPropertyValue('line-height');\r\n let newLineHeight = 0;\r\n if (lineHeight === 'normal') {\r\n newLineHeight = (parseFloat(style.getPropertyValue('font-size')) || 16) * 1.14;\r\n } else {\r\n newLineHeight = parseFloat(lineHeight);\r\n }\r\n this.avgLineHeight = Math.trunc(newLineHeight);\r\n }\r\n\r\n private updateRows(): void {\r\n if (this.offsetHeight <= 0) {\r\n this.offsetHeight = this.input.scrollHeight;\r\n }\r\n\r\n this.input.rows = this._autoResizeMinRows;\r\n\r\n const rows = Math.floor(\r\n (this.input.scrollHeight - this.offsetHeight) /\r\n this.avgLineHeight\r\n );\r\n\r\n const rowsCount = this._autoResizeMinRows + rows;\r\n\r\n this.input.rows = rowsCount > this._autoResizeMaxRows\r\n ? this._autoResizeMaxRows\r\n : rowsCount;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { AutoResizeTextareaDirective } from './autoResizeTextarea.directive';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'lib-bimplus-textarea',\r\n templateUrl: './bimplus-textarea.component.html',\r\n styleUrls: ['./bimplus-textarea.component.less'],\r\n standalone: true,\r\n imports: [ReactiveFormsModule, AutoResizeTextareaDirective, TranslateModule]\r\n})\r\nexport class BimplusTextareaComponent implements OnInit, OnDestroy {\r\n\r\n textareaControl = new FormControl();\r\n\r\n private _textareaSubscription?: Subscription;\r\n\r\n @Output() textAreaValueChange = new EventEmitter<string>();\r\n\r\n private _text = '';\r\n private _name = '';\r\n private _placeholder = '';\r\n private _readonly = false;\r\n private _required = false;\r\n private _rows = 1;\r\n private _activeAutoResizeTextarea = false;\r\n private _minRows = 1;\r\n private _maxRows = 1;\r\n\r\n @Input()\r\n set text(value: string) {\r\n this._text = value;\r\n }\r\n get text(): string {\r\n return this._text;\r\n }\r\n\r\n @Input()\r\n set name(value: string) {\r\n this._name = value;\r\n }\r\n get name(): string {\r\n return this._name;\r\n }\r\n\r\n @Input()\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n }\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n\r\n @Input()\r\n set readonly(value: boolean) {\r\n this._readonly = value;\r\n }\r\n get readonly(): boolean {\r\n return this._readonly;\r\n }\r\n\r\n @Input()\r\n set required(value: boolean) {\r\n this._required = value;\r\n }\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n @Input()\r\n set minRows(value: number) {\r\n this._minRows = value;\r\n }\r\n get minRows(): number {\r\n return this._minRows;\r\n }\r\n\r\n @Input()\r\n set maxRows(value: number) {\r\n this._maxRows = value;\r\n }\r\n get maxRows(): number {\r\n return this._maxRows;\r\n }\r\n\r\n @Input()\r\n set activeAutoResizeTextarea(value: boolean) {\r\n this._activeAutoResizeTextarea = value;\r\n }\r\n get activeAutoResizeTextarea(): boolean {\r\n return this._activeAutoResizeTextarea;\r\n }\r\n\r\n @Input()\r\n set rows(value: number) {\r\n this._rows = value;\r\n }\r\n get rows(): number {\r\n return this._rows;\r\n }\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this._textareaSubscription = this.textareaControl.valueChanges.subscribe(value => {\r\n this.textAreaValueChange.emit(value);\r\n });\r\n }\r\n\r\n getTextareaValue() {\r\n return this.textareaControl.value;\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): boolean {\r\n const forbiddenKeys = ['<', '>'];\r\n if (forbiddenKeys.includes(event.key)) {\r\n event.preventDefault();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._textareaSubscription?.unsubscribe();\r\n }\r\n}\r\n","@if(activeAutoResizeTextarea){\r\n <textarea\r\n [formControl]=\"textareaControl\"\r\n [placeholder]=\"placeholder | translate\"\r\n [name]=\"name\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n (keydown)=\"onKeydown($event)\"\r\n [libAutoResizeTextarea]=\"activeAutoResizeTextarea\"\r\n [autoResizeMinRows]=\"minRows\"\r\n [autoResizeMaxRows]=\"maxRows\"\r\n ></textarea>\r\n } @else {\r\n <textarea\r\n [formControl]=\"textareaControl\"\r\n [placeholder]=\"placeholder\"\r\n [name]=\"name\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n (keydown)=\"onKeydown($event)\"\r\n [rows]=\"rows\"\r\n ></textarea>\r\n }\r\n","import {DatePipe, NgForOf} from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport WebSdk from \"bimplus-websdk\";\r\nimport {TranslatePipe} from \"@ngx-translate/core\";\r\n\r\nexport interface CustomComment {\r\n message?: string;\r\n date?: string;\r\n action?: string;\r\n outputData?: unknown;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-bimplus-comment',\r\n templateUrl: './bimplus-comment.component.html',\r\n styleUrls: ['./bimplus-comment.component.less'],\r\n imports: [DatePipe, NgForOf, TranslatePipe],\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusCommentComponent {\r\n\r\n @Output() outputActionCommentEvent = new EventEmitter<{ action: string, data: unknown }>();\r\n\r\n private _message = '';\r\n @Input()\r\n set message(value: string) {\r\n this._message = value;\r\n }\r\n get message(): string {\r\n return this._message;\r\n }\r\n\r\n private _date = '';\r\n @Input()\r\n set date(value: string) {\r\n this._date = value;\r\n }\r\n get date(): string {\r\n return this._date;\r\n }\r\n\r\n private _action = 'close';\r\n @Input()\r\n set action(value: string) {\r\n this._action = value;\r\n }\r\n get action(): string {\r\n return this._action;\r\n }\r\n\r\n private _commentId = '';\r\n @Input()\r\n set commentId(value: string) {\r\n this._commentId = value;\r\n }\r\n get commentId(): string {\r\n return this._commentId;\r\n }\r\n\r\n @Input() hyperlinks: WebSdk.Hyperlink[] | undefined = [];\r\n\r\n constructor() { }\r\n\r\n emitAction(action: string, data: unknown) {\r\n this.outputActionCommentEvent.emit({ action: action, data: data });\r\n }\r\n\r\n close(): void {\r\n this.emitAction(this.action, { commentId: this.commentId });\r\n }\r\n\r\n onKeyPress(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' || event.key === 'Esc') {\r\n this.close();\r\n }\r\n }\r\n}\r\n","@if (message && message.length > 0) {\r\n<div class=\"comment-item-container\">\r\n <div\r\n class=\"comment-close\"\r\n (click)=\"close()\"\r\n (keydown)=\"onKeyPress($event)\"\r\n ></div>\r\n @if (message && message.length > 0){\r\n <div class=\"comment-item-text\">{{message}}</div>\r\n }\r\n\r\n <a *ngFor=\"let link of hyperlinks\" class=\"hyperlink\" href=\"{{ link.url }}\" target=\"_blank\">\r\n <div class=\"link-icon\" title=\"{{ '_Hyperlink' | translate }}\"></div>\r\n <div class=\"text\" title=\"{{ link.url }}\">{{ link.name }}</div>\r\n </a>\r\n\r\n @if (date && date.length > 0){\r\n <div class=\"comment-item-date\">\r\n {{date | date:'shortTime'}}\r\n </div>\r\n }\r\n</div>\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { BimplusOverlayDialogDeleteComponent } from '../bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { DatePipe, NgFor } from '@angular/common';\r\nimport { DialogService } from '../bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service';\r\nimport { BimplusTextareaComponent } from '../bimplus-textarea/bimplus-textarea.component';\r\nimport { BimplusCommentComponent } from '../bimplus-comment/bimplus-comment.component';\r\nimport WebSdk from 'bimplus-websdk';\r\nimport { BimplusButtonClickEvent, BimplusButtonRowItem } from '../bimplus-buttons-row/bimplus-buttons-row.interface';\r\nimport { BimplusButtonsRowComponent } from '../bimplus-buttons-row/bimplus-buttons-row.component';\r\nimport { BimplusLocalizedWidgetComponent } from '../bimplus-localized-widget/bimplus-localized-widget.component';\r\nimport { BimplusScrollableContainerComponent } from '../bimplus-scrollable-container/bimplus-scrollable-container.component';\r\nimport { CommentData, CommentOutputData, IDialogConfirmClose } from './bimplusObjectCommentsI';\r\nimport {BimplusInputTextFieldComponent} from \"../bimplus-input-text-field/bimplus-input-text-field.component\";\r\nimport {FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'lib-bimplus-object-comments-list',\r\n templateUrl: './bimplus-object-comments-list.component.html',\r\n styleUrls: ['./bimplus-object-comments-list.component.less'],\r\n imports: [\r\n NgFor,\r\n DatePipe,\r\n BimplusTextareaComponent,\r\n BimplusCommentComponent,\r\n BimplusButtonsRowComponent,\r\n TranslateModule,\r\n BimplusScrollableContainerComponent,\r\n BimplusInputTextFieldComponent,\r\n FormsModule,\r\n ReactiveFormsModule\r\n ],\r\n providers: [DatePipe],\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class BimplusObjectCommentsListComponent extends BimplusLocalizedWidgetComponent implements OnInit {\r\n\r\n hyperlinkForm: FormGroup;\r\n\r\n @Input() api: WebSdk.Api | null = null;\r\n commentsList: WebSdk.CommentsResponse = [];\r\n loading = false;\r\n buttonRowItems: BimplusButtonRowItem[] = [];\r\n hyperlinkButtonRowItems: BimplusButtonRowItem[] = [];\r\n textAreaValue = '';\r\n lastShownDate = '';\r\n placeholder = '';\r\n name = '';\r\n readonly = false;\r\n autoResizeTextarea = true;\r\n minRows = 3;\r\n maxRows = 10;\r\n\r\n isAddingHyperlink: boolean = false;\r\n intermediateHyperlinks: Partial<WebSdk.Hyperlink>[] = [];\r\n\r\n private _rootObjectId = '';\r\n\r\n @Input()\r\n set rootObjectId(id: string) {\r\n this.loadComments(id);\r\n this._rootObjectId = id;\r\n }\r\n\r\n get rootObjectId(): string {\r\n return this._rootObjectId;\r\n }\r\n\r\n constructor(\r\n private readonly dialogService: DialogService,\r\n translateService: TranslateService,\r\n private readonly datePipe: DatePipe,\r\n private readonly formBuilder: FormBuilder\r\n ) {\r\n super(translateService);\r\n\r\n this.hyperlinkForm = this.formBuilder.group({\r\n name: ['', []],\r\n url: ['',\r\n [\r\n Validators.required,\r\n Validators.pattern(/^[^<>]*$/), // Do not allow < or >\r\n Validators.pattern(/^(?!\\s*$).+/) // Do not allow all empty string, but allow text after spaces\r\n ]\r\n ]\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n const submit: BimplusButtonRowItem[] = [{\r\n id: 'submit',\r\n title: this.translateService.instant('_Add comment'),\r\n tooltip: this.translateService.instant('_Add comment'),\r\n disabled: !this.textAreaValue || this.textAreaValue.length <= 0,\r\n buttonStyle: 'primary'\r\n }];\r\n this.placeholder = this.translateService.instant('_Place comment text here');\r\n this.name = this.translateService.instant('comment');\r\n this.buttonRowItems = submit;\r\n\r\n this.hyperlinkButtonRowItems.push(\r\n {\r\n id: \"cancel-hyperlink\"\r\n , title: this.translateService.instant('_Cancel')\r\n , tooltip: this.translateService.instant('_Cancel')\r\n , disabled: false\r\n , buttonStyle: 'primary'\r\n },\r\n {\r\n id: \"add-hyperlink\"\r\n , title: this.translateService.instant('_Add hyperlink')\r\n , tooltip: this.translateService.instant('_Add hyperlink')\r\n , disabled: true\r\n , buttonStyle: 'primary'\r\n }\r\n );\r\n\r\n this.hyperlinkForm.statusChanges.subscribe(status => {\r\n this.hyperlinkButtonRowItems[1].disabled = status !== 'VALID';\r\n });\r\n }\r\n\r\n onTextareaValueChange(value: string) {\r\n this.textAreaValue = value;\r\n this.buttonRowItems[0].disabled = !(value && value.length > 0);\r\n }\r\n\r\n handleActionCommentEvent(event: CommentOutputData) {\r\n if (event.action === 'delete') {\r\n const data = event.data as CommentData;\r\n this.openDialogDeleteComment(data.commentId);\r\n }\r\n }\r\n\r\n actionDialogClose(data: IDialogConfirmClose) {\r\n this.dialogService.close(data);\r\n }\r\n\r\n openDialogDeleteComment(commentId: string) {\r\n this.dialogService.open(BimplusOverlayDialogDeleteComponent, {\r\n options: {\r\n width: 'auto',\r\n height: '200px',\r\n position: 'middle',\r\n positionOptions: {},\r\n overlayClickEnabled: false,\r\n overlayVisibilityEnabled: true,\r\n draggable: true\r\n },\r\n data: {\r\n title: this.translateService.instant('_Comment delete confirmation title'),\r\n message: this.translateService.instant('_Comment delete confirmation message'),\r\n acceptCallback: () => {\r\n this.deleteComment(commentId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n isSameDate(date?: string): boolean {\r\n if (!date) {\r\n return false;\r\n }\r\n const time = this.datePipe.transform(date, 'shortDate');\r\n if (this.lastShownDate === time) {\r\n return false;\r\n }\r\n this.lastShownDate = date;\r\n return true;\r\n }\r\n\r\n buttonRowButtonClicked($event: BimplusButtonClickEvent) {\r\n if ($event.id === 'submit') {\r\n\r\n if (!this.api || !this.rootObjectId) return;\r\n this.loading = true;\r\n\r\n const data = {\r\n text: this.textAreaValue,\r\n objectId: this.rootObjectId,\r\n };\r\n const dataText = JSON.stringify(data);\r\n\r\n this.api.objects.postComment(this.rootObjectId, dataText).then(createdComment => {\r\n\r\n console.log(\"created:\", createdComment);\r\n\r\n const createdCommentId = createdComment.id;\r\n\r\n const hyperlinks: Partial<WebSdk.Hyperlink>[] = this.intermediateHyperlinks.map(h => ({ ...h, objectId: createdCommentId }));\r\n\r\n const hyperlinkPromises: (Promise<void | WebSdk.Hyperlink> | undefined)[] = [];\r\n hyperlinks.forEach(h => {\r\n const hyperlinkData = JSON.stringify(h);\r\n const promise = this.api?.objects.postHyperlink(createdCommentId, hyperlinkData).catch((err) => {\r\n console.log(err);\r\n });\r\n hyperlinkPromises.push(promise);\r\n });\r\n\r\n Promise.all(hyperlinkPromises).then(() => {\r\n this.hyperlinkForm.reset();\r\n this.isAddingHyperlink = false;\r\n this.loadComments(this.rootObjectId);\r\n this.loading = false;\r\n });\r\n\r\n }).catch((err) => {\r\n console.log(err);\r\n });\r\n }\r\n }\r\n\r\n hyperlinkButtonRowButtonClicked($event: BimplusButtonClickEvent) {\r\n if ($event.id === 'add-hyperlink') {\r\n if (this.hyperlinkForm.valid) {\r\n\r\n let sanitizedUrl: string = this.hyperlinkForm.value['url'].trim();\r\n\r\n if (!RegExp(/^http(s?):\\/\\//).exec(sanitizedUrl)) {\r\n sanitizedUrl = 'https://' + sanitizedUrl;\r\n }\r\n\r\n let sanitizedName = this.hyperlinkForm.value['name']?.trim() ?? '';\r\n\r\n if (sanitizedName === '') {\r\n sanitizedName = sanitizedUrl;\r\n }\r\n\r\n this.intermediateHyperlinks.push({\r\n name: sanitizedName,\r\n url: sanitizedUrl\r\n });\r\n\r\n this.hyperlinkForm.reset();\r\n this.isAddingHyperlink = false;\r\n }\r\n } else if ($event.id === 'cancel-hyperlink') {\r\n this.hyperlinkForm.reset();\r\n this.isAddingHyperlink = false;\r\n }\r\n }\r\n\r\n deleteComment(commentId: string) {\r\n if (!this.api || !commentId) return;\r\n\r\n this.api.comments.delete(commentId).then(() => {\r\n this.loadComments(this.rootObjectId);\r\n }).catch((err) => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n private loadComments(objectId: string) {\r\n if (!this.api || !objectId) return;\r\n\r\n this.api.objects.getComments(objectId).then((response: WebSdk.CommentsResponse) => {\r\n this.commentsList = response;\r\n }).catch((err) => {\r\n console.log(err);\r\n });\r\n }\r\n\r\n addHyperlinkIconClicked() {\r\n this.isAddingHyperlink = !this.isAddingHyperlink;\r\n }\r\n\r\n addHyperlinkIconKeypress(event: KeyboardEvent) {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n this.addHyperlinkIconClicked();\r\n }\r\n }\r\n\r\n removeIntermediateHyperlink(link: Partial<WebSdk.Hyperlink>) {\r\n this.intermediateHyperlinks = this.intermediateHyperlinks.filter(hyperlink => hyperlink !== link);\r\n }\r\n\r\n removeIntermediateHyperlinkKeypress(event: KeyboardEvent, link: Partial<WebSdk.Hyperlink>) {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n this.removeIntermediateHyperlink(link);\r\n }\r\n }\r\n}\r\n","@if (!loading) {\r\n<div class=\"comment-tab-container\">\r\n <div class=\"textarea-container\">\r\n <lib-bimplus-textarea\r\n (textAreaValueChange)=\"onTextareaValueChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n [name]=\"name\"\r\n [readonly]=\"readonly\"\r\n [activeAutoResizeTextarea]=\"true\"\r\n [minRows]=\"minRows\"\r\n [maxRows]=\"maxRows\"\r\n ></lib-bimplus-textarea>\r\n </div>\r\n\r\n <div class=\"intermediate-hyperlinks-list\">\r\n <div *ngFor=\"let link of intermediateHyperlinks\" class=\"intermediate-hyperlink\" title=\"{{ link.url }}\">\r\n <div class=\"link-icon icon-small\" title=\"{{ link.url }}\"></div>\r\n <div class=\"text\">{{ link.name }}</div>\r\n <span class=\"cancel-icon\" title=\"{{ '_Delete hyperlink' | translate }}\" (click)=\"removeIntermediateHyperlink(link)\" (keydown)=\"removeIntermediateHyperlinkKeypress($event, link)\"></span>\r\n </div>\r\n </div>\r\n\r\n @if (isAddingHyperlink) {\r\n <form [formGroup]=\"hyperlinkForm\" class=\"hyperlink-input-form\">\r\n <div class=\"hyperlink-input-row\">\r\n <div class=\"link-icon icon-next-to-text-input\"></div>\r\n <lib-bimplus-input-text-field class=\"flex-grow\" formControlName=\"name\" placeholder=\"{{ '_Name' | translate }}\"/>\r\n </div>\r\n <div class=\"hyperlink-input-row\">\r\n <div class=\"icon-next-to-text-input\"></div>\r\n <lib-bimplus-input-text-field class=\"flex-grow\" formControlName=\"url\" placeholder=\"{{ '_URL' | translate }}\"/>\r\n </div>\r\n\r\n <lib-bimplus-buttons-row [items]=\"hyperlinkButtonRowItems\" (buttonClicked)=\"hyperlinkButtonRowButtonClicked($event)\"/>\r\n </form>\r\n }\r\n\r\n <div class=\"comments-tab-attachments-section\">\r\n <div class=\"comments-attachments-list\">\r\n <div class=\"tab-attachments icon attachments-icon hidden\"></div>\r\n <div class=\"link-icon icon-small interactive\" (click)=\"addHyperlinkIconClicked()\" (keydown)=\"addHyperlinkIconKeypress($event)\"></div>\r\n <div class=\"tab-attachmentlinks icon attachments-icon hidden\"></div>\r\n </div>\r\n <div class=\"add-comment\">\r\n <lib-bimplus-buttons-row\r\n [items]=\"buttonRowItems\"\r\n (buttonClicked)=\"buttonRowButtonClicked($event)\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"comments-separator\"></div>\r\n\r\n <div class=\"scrollable-content-container\">\r\n <lib-bimplus-scrollable-container>\r\n <div *ngFor=\"let item of commentsList\">\r\n @if(isSameDate(item.createdAt))\r\n {\r\n <div class=\"comment-list-date\">\r\n {{item.createdAt | date:'shortDate'}}\r\n </div>\r\n }\r\n <lib-bimplus-comment\r\n (outputActionCommentEvent)=\"handleActionCommentEvent($event)\"\r\n [message]=\"item.text ? item.text : ''\"\r\n [date]=\"item.createdAt ? item.createdAt : ''\"\r\n [action]=\"'delete'\"\r\n [commentId]=\"item.id\"\r\n [hyperlinks]=\"item.hyperlinks\">\r\n </lib-bimplus-comment>\r\n </div>\r\n\r\n </lib-bimplus-scrollable-container>\r\n </div>\r\n\r\n</div>\r\n\r\n} @else{\r\n<div>{{'_Loading' | translate}}</div>\r\n}\r\n","/*\r\n * Public API Surface of ngx-bimplus-components\r\n */\r\n\r\nexport * from './lib/ngx-bimplus-components.service';\r\nexport * from './lib/ngx-bimplus-components.component';\r\nexport * from './lib/interfaces/bimplus-opacity-properties.interface';\r\nexport * from './lib/interfaces/bimplus-visibility-properties.interface';\r\nexport * from './lib/components/bimplus-connection-designer/bimplus-connection-designer.component';\r\nexport * from './lib/components/bimplus-connection-designer/bimplus-connection-designer.interface';\r\nexport * from './lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component';\r\nexport * from './lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.interface';\r\nexport * from './lib/components/bimplus-contact/bimplus-contact.component';\r\nexport * from './lib/components/bimplus-floating-bar/bimplus-floating-bar.interface';\r\nexport * from './lib/components/project-models/project-models.interface';\r\nexport * from './lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component';\r\nexport * from './lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component';\r\nexport * from './lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component';\r\nexport * from './lib/components/bimplus-language-menu/bimplus-language-menu.component';\r\nexport * from './lib/components/bimplus-localized-widget/bimplus-localized-widget.component';\r\nexport * from './lib/components/bimplus-main-menu/bimplus-main-menu.component';\r\nexport * from './lib/components/bimplus-navbar/bimplus-navbar.component';\r\nexport * from './lib/components/bimplus-navbar/logo-state.enum';\r\nexport * from './lib/components/bimplus-notify/bimplus-notify.component';\r\nexport * from './lib/components/bimplus-sidenav/bimplus-sidenav.component';\r\nexport * from './lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component';\r\nexport * from './lib/components/bimplus-storage-info/bimplus-storage-info.component';\r\nexport * from './lib/components/bimplus-tool-hub/bimplus-tool-hub.component';\r\nexport * from './lib/components/bimplus-tool-hub/bimplus-tool-hub.interface';\r\nexport * from './lib/components/bimplus-user-menu/bimplus-user-menu.component';\r\nexport * from './lib/components/bimplus-zoom/bimplus-zoom.component';\r\nexport * from './lib/components/bimplus-flat-tree/bimplus-flat-tree.component';\r\nexport * from './lib/components/bimplus-flat-tree/bimplus-flat-tree.interface';\r\nexport * from './lib/components/bimplus-context-menu/bimplus-context-menu.component';\r\nexport * from './lib/components/bimplus-context-menu/bimplus-context-menu.interface';\r\nexport * from './lib/components/loading-spinner/loading-spinner.component';\r\nexport * from './lib/components/bimplus-object-navigator/bimplus-object-navigator.component';\r\nexport * from './lib/components/bimplus-object-navigator/bimplus-object-navigator.interface';\r\nexport * from './lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component';\r\nexport * from './lib/components/bimplus-tooltip-message/bimplus-tooltip-message.interface';\r\nexport * from './lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component';\r\nexport * from './lib/components/bimplus-touch-menu/bimplus-touch-menu.component';\r\nexport * from './lib/components/bimplus-project-menu/bimplus-project-menu.component';\r\nexport * from './lib/services/language-strings.service';\r\nexport * from './lib/services/resize-observer.service';\r\nexport * from './lib/services/cursors.service';\r\nexport * from './lib/types/types';\r\nexport * from './lib/components/bimplus-overlay-dialog-warning/bimplus-overlay-dialog-warning.component';\r\nexport * from './lib/components/resizable-panel/resizable-panel.component';\r\nexport * from './lib/components/object-properties-header/object-properties-header.component';\r\nexport * from './lib/components/object-properties-header/object-properties-header.interface';\r\nexport * from './lib/components/object-properties/object-properties.component';\r\nexport * from './lib/components/links-to-documents/links-to-documents.component';\r\nexport * from './lib/components/object-hyperlinks/object-hyperlinks.component';\r\nexport * from './lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.component';\r\nexport * from './lib/components/bimplus-overlay-dialog-error/bimplus-overlay-dialog-error.component';\r\nexport * from './lib/components/bimplus-overlay-dialog-confirm/bimplus-overlay-dialog-confirm.component';\r\nexport * from './lib/components/bimplus-input-text-field/bimplus-input-text-field.component';\r\nexport * from './lib/components/bimplus-general-overlay-dialog/bimplus-general-overlay-dialog.service';\r\nexport * from './lib/components/bimplus-tabs-switcher/components/bimplus-tab/bimplus-tab.component';\r\nexport * from './lib/components/bimplus-tabs-switcher/services/bimplus-tabs-switcher.service';\r\nexport * from './lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.component';\r\nexport * from './lib/components/bimplus-tabs-switcher/bimplus-tabs-switcher.interface';\r\nexport * from './lib/components/bimplus-attachments/bimplus-attachments.component';\r\nexport * from './lib/components/bimplus-attachments/services/bimplus-attachments.service';\r\nexport * from './lib/components/bimplus-attachments/bimplus-attachments.interface';\r\nexport * from './lib/components/bimplus-object-comments-list/bimplus-object-comments-list.component';\r\nexport * from './lib/components/bimplus-overlay-dialog-delete/bimplus-overlay-dialog-delete.component';\r\nexport * from './lib/components/bimplus-comment/bimplus-comment.component';\r\nexport * from './lib/components/bimplus-textarea/bimplus-textarea.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.BimplusConnectionDesignerService","i3","i5","i1.ResizeObserverService","i2.LocalStorageService","i1.LayoutManagerService","i2.LayoutManagerService","i2.ResizeObserverService","i3.ResizeObserverService","DEFAULT_POSITION_LEFT","DEFAULT_POSITION_TOP","i2","i4","BehaviorSubject","i1.DialogService","concatMap","i2.DialogService","i1.BimplusTabsSwitcherService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;MAKa,2BAA2B,CAAA;+GAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAF1B,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCSY,6BAA6B,CAAA;+GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAP9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAGU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAXzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAC1B,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,EAAE,EACD,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,CAAA;;;MCSU,+BAA+B,CAAA;AAC1C,IAAA,WAAA,CAAmB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAGrD,QAAA,IAAA,CAAA,iBAAiB,GAA2B,MAAM,CAAC,IAAI,CAAC,CAAC;AAczD,QAAA,IAAA,CAAA,iBAAiB,GAAqC,MAAM,CAAC,EAAsB,CAAC,CAAC;KAhBpF;AAGD,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;KACjC;IACD,IAAa,gBAAgB,CAAC,KAAa,EAAA;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SACvF;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACtB;KACF;AAGD,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;KACjC;IACD,IAAa,gBAAgB,CAAC,KAAuB,EAAA;AACnD,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACjD,QAAA,IAAI;YACF,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;SACpE;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACtB;KACF;+GA9BU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAV/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,gBAAgB,CAAC,EACnB,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;GAIT,EANS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,eAAe,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAW5B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAd3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAC5B,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,CAAC,EAC7B,SAAA,EAAA,CAAC,gBAAgB,CAAC,EACnB,QAAA,EAAA,CAAA;;;;GAIT,EAGc,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,CAAA;qFAU7B,gBAAgB,EAAA,CAAA;sBAA5B,KAAK;gBAcO,gBAAgB,EAAA,CAAA;sBAA5B,KAAK;;;MC9BK,uBAAuB,CAAA;AANpC,IAAA,WAAA,GAAA;QAO0C,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QACnC,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;QACrC,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AAMtD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAc,SAAS,CAAC,CAAC;AAM7C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAe,SAAS,CAAC,CAAC;AAE/C,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AACrD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACzC,OAAO,CAAC,EAAE,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;AAC5H,SAAC,CAAC,CAAC;AACJ,KAAA;;;IAfC,IAAqC,gBAAgB,CAAC,KAAkB,EAAA;AACtE,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC7B;;IAID,IAAsC,iBAAiB,CAAC,KAAmB,EAAA;AACzE,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC9B;+GAdU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,+HACd,gBAAgB,CAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAChB,gBAAgB,CAChB,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,gBAAgB,8ICdtC,8yBAuBM,EAAA,MAAA,EAAA,CAAA,69FAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDZO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,QAAA,EAAA,8yBAAA,EAAA,MAAA,EAAA,CAAA,69FAAA,CAAA,EAAA,CAAA;8BAKwB,iBAAiB,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,mBAAmB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAGD,gBAAgB,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAMO,iBAAiB,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;;;MEVrB,oCAAoC,CAAA;AAVjD,IAAA,WAAA,GAAA;AAgBqB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;AAM5B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;QAE7C,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAA;AACzC,KAAA;;;IAZC,IAAgC,WAAW,CAAC,KAAa,EAAA;AACvD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;;IAID,IAAmC,cAAc,CAAC,KAAc,EAAA;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC3B;+GAXU,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,cAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbjD,swBAwBA,EAAA,MAAA,EAAA,CAAA,0sCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBI,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAMd,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAVhD,SAAS;+BACE,oCAAoC,EAAA,UAAA,EAClC,IAAI,EACP,OAAA,EAAA;wBACP,uBAAuB;qBACxB,EAGc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,swBAAA,EAAA,MAAA,EAAA,CAAA,0sCAAA,CAAA,EAAA,CAAA;8BAKL,WAAW,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAMS,cAAc,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAKpB,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;;;AEXD,MAAM,iBAAiB,GAAG;AAC/B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,MAAM;CACJ;;ACFJ,MAAO,0BAA2B,SAAQ,+BAA+B,CAAA;AAR/E,IAAA,WAAA,GAAA;;QASqB,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;AAOtC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAyB,EAAE,CAAC,CAAC;AAEpD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAA2B,CAAC;AAkBvE,KAAA;;;IAxBC,IAA+B,UAAU,CAAC,KAAkC,EAAA;AAC1E,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACvB;IAMS,QAAQ,CAAC,KAAY,EAAE,YAA8B,EAAA;QAC7D,MAAM,IAAI,GAAI,KAAK,CAAC,MAAuC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAErE,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAE5B,YAAA,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC;SACzB;KACF;AAES,IAAA,cAAc,CAAC,IAA0B,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;KAC1C;+GA5BU,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBvC,suDAwDA,EAAA,MAAA,EAAA,CAAA,+qcAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5CY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAKf,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EACP,OAAA,EAAA,CAAC,gBAAgB,CAAC,EAAA,aAAA,EAGZ,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,suDAAA,EAAA,MAAA,EAAA,CAAA,+qcAAA,CAAA,EAAA,CAAA;8BAOX,UAAU,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAKf,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MElBI,uBAAuB,CAAA;AAPpC,IAAA,WAAA,GAAA;AAcqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,IAAI,CAAC,CAAC;AAQrD,KAAA;;;;IAXC,IAAkC,aAAa,CAAC,KAAc,EAAA;AAC5D,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC1B;;;IAKD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;+GAbU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVpC,msBAkBA,EAAA,MAAA,EAAA,CAAA,ihEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACnB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,msBAAA,EAAA,MAAA,EAAA,CAAA,ihEAAA,CAAA,EAAA,CAAA;8BAQW,aAAa,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;;;MEJjB,6BAA6B,CAAA;AAR1C,IAAA,WAAA,GAAA;QASyD,IAAqB,CAAA,qBAAA,GAAY,IAAI,CAAC;AAC9F,KAAA;+GAFY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,wLCV1C,mNAKU,EAAA,MAAA,EAAA,CAAA,uMAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FDKG,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBARzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAC1B,IAAI,EAAA,OAAA,EACP,EAAE,EAGK,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,mNAAA,EAAA,MAAA,EAAA,CAAA,uMAAA,CAAA,EAAA,CAAA;8BAGiB,qBAAqB,EAAA,CAAA;sBAA3E,WAAW;uBAAC,wCAAwC,CAAA;;;MEF1C,oCAAoC,CAAA;+GAApC,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,8FCTjD,+BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDQa,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAPhD,SAAS;+BACE,oCAAoC,EAAA,UAAA,EAClC,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA;;;MEGA,2BAA2B,CAAA;AANxC,IAAA,WAAA,GAAA;AAYqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;AAEpE,KAAA;;;IALC,IAAiC,YAAY,CAAC,KAAa,EAAA;AACzD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACzB;+GALU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,2ICRxC,iGAIC,EAAA,MAAA,EAAA,CAAA,uTAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDIY,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cACxB,IAAI,EAAA,QAAA,EAAA,iGAAA,EAAA,MAAA,EAAA,CAAA,uTAAA,CAAA,EAAA,CAAA;8BAOiB,YAAY,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;;;MEQhB,mCAAmC,CAAA;AAK9C,IAAA,WAAA,CAA6B,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAFzC,IAA6B,CAAA,6BAAA,GAAW,uBAAuB,CAAC;QAGxE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;KAC/C;IAEO,8BAA8B,GAAA;;AAEpC,QAAA,MAAM,mBAAmB,GAAuB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACjH,IAAI,CAAC,mBAAmB,EAAE;YACxB,OAAO;SACR;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;KACtD;IAED,eAAe,GAAA;QACb,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACvC;IAEO,qBAAqB,GAAA;AAC3B,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;AACD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,EAAC;YACX,OAAO;SACR;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACR;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;KAC/B;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;+GAzCU,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,4FCnBhD,6EAGA,EAAA,MAAA,EAAA,CAAA,wkGAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FDgBa,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAT/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,cAChC,IAAI,EAAA,OAAA,EACP,EAAE,EAGI,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,6EAAA,EAAA,MAAA,EAAA,CAAA,wkGAAA,CAAA,EAAA,CAAA;;;MEX1B,gCAAgC,CAAA;IAK3C,IAAI,UAAU,CAAC,UAAkB,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC/C;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED,IAAA,WAAA,GAAA;QAbQ,IAAW,CAAA,WAAA,GAAW,CAAC,CAAC;AAEhC,QAAA,IAAA,CAAA,iBAAiB,GAAoB,IAAI,OAAO,EAAU,CAAC;KAW1C;+GAdN,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cAFnB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEnB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAF5C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;AC6B5B,MAAO,yCAA0C,SAAQ,+BAA+B,CAAA;IAO5F,WACE,CAAA,gBAAkC,EACtB,yBAA2D,EAAA;QAEvE,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAFX,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAAkC;QANzE,IAAc,CAAA,cAAA,GAAgC,EAAE,CAAC;QAExC,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;AA4BzB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;;AAUxC,QAAA,IAAA,CAAA,mBAAmB,GAAW,EAAE,CAAC;AACjC,QAAA,IAAA,CAAA,kBAAkB,GAAW,EAAE,CAAC;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAAY,KAAK,CAAC;AAClC,QAAA,IAAA,CAAA,mBAAmB,GAAY,KAAK,CAAC;AACrC,QAAA,IAAA,CAAA,OAAO,GAA+B,IAAI,CAAC;AAC1C,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,YAAY,EAAuB,CAAC;AACtE,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAsB,CAAC;AACpE,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAkB,CAAC;AAC5D,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAuB,CAAC;AAC7D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAsB,CAAC;AAC3D,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAkB,CAAC;AACnD,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAuB,CAAC;AACnE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAsB,CAAC;AACjE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAkB,CAAC;AACzD,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAkB,CAAC;AACxD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAkB,CAAC;KA9C9D;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,GAAG;AACpB,YAAA;AACE,gBAAA,EAAE,EAAE,MAAM;gBACR,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC7C,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/C,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,WAAW,EAAE,SAAS;AACzB,aAAA;SACF,CAAC;KACH;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,YAA0C,CAAC;AACtF,QAAA,IAAI,cAAc,KAAK,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,GAAG,CAAC,CAAC;SAC/C;KACF;AAID,IAAA,aAAa,CAAC,MAA+B,EAAA;AAC3C,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,GAAG,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;KACF;IAoBD,YAAY,GAAA;QACV,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,UAAU,CAAC;QACrC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAChD,YAAA,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;SACzC;AACD,QAAA,OAAO,UAAU,CAAA;KAClB;AACO,IAAA,aAAa,CAAC,MAAsB,EAAA;QAC1C,IAAI,OAAO,GAAG,IAAI,CAAC;AACnB,QAAA,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC;AACtD,QAAA,OAAO,IAAI,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC;AAC9C,QAAA,OAAO,OAAO,CAAC;KAChB;AACO,IAAA,WAAW,CAAC,MAAsB,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,YAAA,OAAO,EAAE,CAAC;SACX;QAED,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,WAAW,CAAC;AACvB,QAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;AAC1B,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,QAAQ,CAAC,MAAsB,EAAA;AAC7B,QAAA,OAAO,GAAG,MAAM,CAAC,IAAI,CAAG,EAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;KACjF;+GAvFU,yCAAyC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAzC,yCAAyC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EALzC,CAAC,gBAAgB,CAAC,sEC3B/B,+oLAsIA,EAAA,MAAA,EAAA,CAAA,w/4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpHI,eAAe,EACb,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8VACZ,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,uBAAuB,EACvB,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,6BAA6B,uEAC7B,oCAAoC,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpC,2BAA2B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,mCAAmC,EAAA,QAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAO5B,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAlBrD,SAAS;+BACE,yCAAyC,EAAA,UAAA,EACvC,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACb,YAAY;wBACZ,0BAA0B;wBAC1B,uBAAuB;wBACvB,6BAA6B;wBAC7B,oCAAoC;wBACpC,2BAA2B;wBAC3B,mCAAmC;AACtC,qBAAA,EAAA,SAAA,EACU,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,+oLAAA,EAAA,MAAA,EAAA,CAAA,w/4BAAA,CAAA,EAAA,CAAA;iIAOjC,YAAY,EAAA,CAAA;sBAApB,KAAK;gBA4BI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAUE,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,2BAA2B,EAAA,CAAA;sBAApC,MAAM;gBACG,0BAA0B,EAAA,CAAA;sBAAnC,MAAM;gBACG,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBACG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,wBAAwB,EAAA,CAAA;sBAAjC,MAAM;gBACG,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;gBACG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBACG,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBACG,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;AE3DH,MAAO,kCAAmC,SAAQ,+BAA+B,CAAA;IAGrF,WACE,CAAA,gBAAkC,EACtB,yBAA2D,EAAA;QAEvE,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAFZ,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAAkC;QAJzE,IAAc,CAAA,cAAA,GAAgC,EAAE,CAAC;QACjD,IAAM,CAAA,MAAA,GAAgC,EAAE,CAAC;;AA0BzC,QAAA,IAAA,CAAA,UAAU,GAAW,uBAAuB,CAAC;;AAGpC,QAAA,IAAA,CAAA,WAAW,GAAsB;AACxC,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE;AAC5E,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;AACjF,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;AAC/E,YAAA,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;SAC/E,CAAC;QACO,IAAiB,CAAA,iBAAA,GAAsB,IAAI,CAAC;AAE3C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAqB,CAAC;QAmB5D,IAAwB,CAAA,wBAAA,GAAY,IAAI,CAAC;AAUvC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAQ,CAAC;QA5D3D,yBAAyB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC7D,YAAA,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,IAAI,CAAC,eAAe,EAAE,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,EAAE,EAAE,MAAM;YACR,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/C,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;KACnC;IAiBD,IAAI,gBAAgB,CAAC,KAAwB,EAAA;AAC3C,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACrD;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IAEO,kBAAkB,CAAC,QAAgB,EAAE,QAAiB,EAAA;AAC5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;AACD,QAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC7B;IAGD,IACI,uBAAuB,CAAC,KAAc,EAAA;AACxC,QAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;KACzC;AACD,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACtC;AAID,IAAA,aAAa,CAAC,MAA+B,EAAA;AAC3C,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,GAAG,CAAC,CAAC;AAC9C,YAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;+GAjFU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,gCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,2TALlC,CAAC,gBAAgB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B/B,inDAoDA,EDnCI,MAAA,EAAA,CAAA,sm3BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,8VACX,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,oCAAoC,sIAEpC,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAQnB,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAlB9C,SAAS;+BACE,iCAAiC,EAAA,UAAA,EAC/B,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACV,WAAW;wBACX,cAAc;wBACd,eAAe;wBACf,oCAAoC;wBACpC,yCAAyC;wBACzC,0BAA0B;wBAC1B,oCAAoC;AACvC,qBAAA,EAAA,SAAA,EACU,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,inDAAA,EAAA,MAAA,EAAA,CAAA,sm3BAAA,CAAA,EAAA,CAAA;iIAiCjC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAMG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAqBH,uBAAuB,EAAA,CAAA;sBAD1B,KAAK;gBASI,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;;;AE1FT;;;;;;;;;;AAU4E;AACtE,SAAU,SAAS,CAAC,MAAe,EAAE,SAAiB,EAAE,OAAgB,IAAI,EAAA;IAC9E,IAAK,CAAC,SAAS,EAAG;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;QACxF,OAAO;KACV;;AAED,IAAA,MAAM,OAAO,GAAG,CAAC,SAAS,IAAI,MAAM,KAAK,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAK,MAAM,CAAC,OAAyB,CAAC;IACjH,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE;QACtD,OAAO,CAAC,SAAS,CAAC,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;KACrC;IAED,MAAM,OAAO,GAAI,MAAiB,CAAC;AACnC,IAAA,IAAI,SAAS,IAAI,OAAO,EAAE;QACtB,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;AACL;;ACpBM,MAAO,uBAAwB,SAAQ,+BAA+B,CAAA;AAC1E,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC5C,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAEf,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAU,CAAC;KAD5D;IAGD,eAAe,GAAA;AACb,QAAA,SAAS,CAAC,IAAI,EAAE,uBAAuB,EAAE,SAAS,CAAC,CAAC;KACrD;+GARU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EALtB,CAAC,gBAAgB,CAAC,iDCVhC,kRAQI,EAAA,MAAA,EAAA,CAAA,y2CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAM5B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACnB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,SAAA,EAC5B,CAAC,gBAAgB,CAAC,EAGf,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,kRAAA,EAAA,MAAA,EAAA,CAAA,y2CAAA,CAAA,EAAA,CAAA;qFAMhC,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;;;MEZI,kBAAkB,CAAA;AAJ/B,IAAA,WAAA,GAAA;QAME,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;QACT,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;QACT,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAGpB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAmB,CAAC;AAG/C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAc,CAAC;AAGzC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAc,CAAC;AAiD1C,KAAA;AA9CC,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACvC,OAAO;SACV;QAED,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAE3C,QAAA,IAAG,CAAC,IAAI,CAAC,UAAU,EAAC;AAClB,YAAA,IAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC;AAC9C,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACzB;iBAAI;gBACH,OAAO;aACR;SACF;QACD,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;KAC3B;IAGD,SAAS,GAAA;QACP,IAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAC;YACrC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;SACxC;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAGD,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;KAC3B;AAGD,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAG,CAAC,IAAI,CAAC,WAAW,EAAC;AACnB,YAAA,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;SACnC;KACF;+GA9DU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAUC,QAAQ,EAAA,CAAA;sBADP,MAAM;gBAIP,OAAO,EAAA,CAAA;sBADN,MAAM;gBAIP,OAAO,EAAA,CAAA;sBADN,MAAM;gBAIP,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAwB9C,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAU5C,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBASrC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MC1DtB,qBAAqB,CAAA;AAOhC,IAAA,WAAA,GAAA;AALQ,QAAA,IAAA,CAAA,SAAS,GAAyC,IAAI,eAAe,CAAoB,SAAS,CAAC,CAAC;AACpG,QAAA,IAAA,CAAA,gBAAgB,GAAY,IAAI,OAAO,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;;AAElD,QAAA,IAAA,CAAA,cAAc,GAAoC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KAEtE;AAEV,IAAA,OAAO,CAAC,QAAiB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;KAClC;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAE,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAE,CAAC,EAAG;YACvE,MAAM,UAAU,GAAoB,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACxE,IAAG,CAAC,UAAU,EAAC;gBACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;aAC9B;AACD,YAAA,OAAO,UAAU,CAAC,qBAAqB,EAAE,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;+GAvBU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCCY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,GAAA;AAFQ,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAyC,IAAI,CAAC,CAAC;KAE1E;;IAGjB,OAAO,CAAC,GAAW,EAAE,KAAa,EAAA;AAChC,QAAA,IAAI;AACF,YAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1C;QAAC,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;SAClD;KACF;;AAGD,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI;AACF,YAAA,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAClC;QAAC,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;AACpD,YAAA,OAAO,IAAI,CAAC;SACb;KACF;;AAGD,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,IAAI;AACF,YAAA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SAChD;QAAC,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;SACtD;KACF;;IAGD,KAAK,GAAA;AACH,QAAA,IAAI;YACF,YAAY,CAAC,KAAK,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChC;QAAC,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;SACjD;KACF;;IAGD,SAAS,CAAC,GAAW,EAAE,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1C;;AAGD,IAAA,SAAS,CAAC,GAAW,EAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAChC,QAAA,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;KACzC;;IAGD,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC3C;+GA5DU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MC+BY,oBAAoB,CAAA;IAG/B,WAAoB,CAAA,qBAA2C,EAC3C,mBAAwC,EAAA;QADxC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAsB;QAC3C,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AAF5D,QAAA,IAAA,CAAA,gBAAgB,GAAyC,IAAI,eAAe,CAAsB,EAAE,CAAC,CAAA;QAI7F,IAAe,CAAA,eAAA,GAAuB,EAAE,CAAC;QAKjD,IAAM,CAAA,MAAA,GAAU,qBAAqB,CAAC;KANjC;AAGL,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAIH;;AAE8E;AAC5E,IAAA,cAAc,CAAC,GAAc,EAAE,EAAS,EAAE,QAA2B,EAAE,gBAAwB,EAAC,OAAc,GAAG,EAAE,MAAa,GAAG,EAAC,QAAe,CAAC,EAAE,SAAgB,CAAC,EAAA;AACrK,QAAA,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,IAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAC,KAAK,KAAI;AACxC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YAC9B,IAAG,MAAM,EAAC;gBACR,UAAU,GAAG,KAAK,CAAC;aACpB;AACD,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,EAAC;AACH,YAAA,IAAG,UAAU,IAAI,CAAC,EAAC;gBACjB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,EAAC,CAAC,CAAC,CAAC;aAC3C;SACF;AACD,QAAA,MAAM,OAAO,GAAsB;AACjC,YAAA,OAAO,EAAC,GAAG;AACX,YAAA,EAAE,EAAC,EAAE;AACL,YAAA,QAAQ,EAAC,QAAQ;YACjB,gBAAgB,EAAC,CAAC,CAAC,gBAAgB;AACnC,YAAA,IAAI,EAAC,IAAI;AACT,YAAA,GAAG,EAAC,GAAG;AACP,YAAA,KAAK,EAAC,KAAK;AACX,YAAA,MAAM,EAAC,MAAM;AACb,YAAA,WAAW,EAAE,KAAK;SAClB,CAAC;AAEH,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;KAC3B;AAED,IAAA,WAAW,CAAC,GAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;KAErC;AACD;;;AAG4E;AAC5E,IAAA,gBAAgB,CAAC,GAAqB,EAAA;QACpC,IAAG,CAAC,GAAG,EAAC;AACN,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClE,QAAA,MAAO,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AAC3D,QAAA,MAAO,KAAK,GAAG,GAAG,CAAC,EAAE,CAAE;AACvB,QAAA,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAG,CAAC,SAAS,EAAE;AACb,YAAA,SAAS,GAAG,EAAC,EAAE,EAAC,KAAK,EAAC,IAAI,EAAC,GAAG,CAAC,IAAI,EAAC,GAAG,EAAC,GAAG,CAAC,GAAG,EAAC,KAAK,EAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,GAAG,CAAC,MAAM,EAAC,CAAC;SACpF;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,qBAAqB,CAAC,GAAqB,EAAA;QACzC,MAAM,MAAM,GAAgC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACvE,IAAG,CAAC,MAAM,EAAC;YACT,OAAO;SACR;QACD,MAAO,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACtD,MAAO,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAC,EAAE,CAAC,CAAC;AAC7D,QAAA,IAAG,CAAC,aAAa,IAAI,CAAC,eAAe,EAAC;YACpC,OAAO;SACR;AACD,QAAA,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;AAChD,QAAA,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC;QAC9C,IAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAC;YAClC,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;SACnD;QACD,IAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAC;YACpC,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;SACrD;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAC,EAAE,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;KAClD;AAED,IAAA,yBAAyB,CAAC,GAAqB,EAAA;AAC7C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAC,EAAE,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;KAClD;AAED;;AAE4E;AAC5E,IAAA,OAAO,CAAC,EAAU,EAAA;QAChB,IAAI,SAAS,GAA0B,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,IAAG;AAClC,YAAA,IAAG,IAAI,CAAC,EAAE,KAAK,EAAE,EAAC;gBAChB,SAAS,GAAG,IAAI,CAAC;aAClB;AACH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,SAAS,CAAC;KAClB;AAED;;AAE4E;IAC5E,gBAAgB,CAAC,GAAqB,EAAE,IAAW,EAAC,GAAU,EAAC,KAAY,EAAC,MAAa,EAAA;AACvF,QAAA,MAAM,KAAK,GAAG,GAAG,EAAE,EAAE,CAAE;QACvB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;AACD,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAwB,CAAC;;QAEpF,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,EAAE,CAAC;SACb;AACD,QAAA,IAAG,GAAG,EAAE,WAAW,EAAC;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAClB,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;aACrB;AACD,YAAA,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1B,YAAA,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,GAAI,GAAG,CAAC;;;YAGzB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxD,OAAO;SACR;AAED,QAAA,MAAM,OAAO,GAA4B;AACvC,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,MAAM;SACf,CAAC;AACF,QAAA,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAC,MAAM,CAAC,CAAC;KACxD;AAED,IAAA,mBAAmB,CAAC,EAAS,EAAA;QAC3B,MAAM,IAAI,GAA0B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrD,IAAG,IAAI,EAAC;AACN,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SACxC;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,oBAAoB,CAAC,IAAsB,EAAA;AACzC,QAAA,IAAI,OAAmB,CAAC;QACxB,IAAG,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAC;AACzC,YAAA,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChF;aAAM;AACL,YAAA,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;SACvC;QACD,IAAG,CAAC,OAAO,EAAC;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACvD,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IAED,sBAAsB,CAAC,IAAsB,EAAC,QAA2B,EAAA;AACvE,QAAA,MAAM,OAAO,GAAe,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC;QACnG,IAAG,CAAC,OAAO,EAAC;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AACzD,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,MAAM,UAAU,GAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAE,QAAQ,GAAC,IAAI,CAAC,QAAQ,CAAC;AAC3E,QAAA,MAAM,MAAM,GAAoB,UAAU,GAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,GAAC,OAAO,CAAC;QACrF,IAAG,CAAC,MAAM,EAAC;YACT,OAAO,CAAC,KAAK,CAAC,CAAA,6CAAA,EAAgD,OAAO,CAA0B,uBAAA,EAAA,UAAU,CAAE,CAAA,CAAC,CAAC;SAC9G;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAGD,IAAA,eAAe,CAAC,IAAsB,EAAC,QAA2B,EAAE,eAAkC,EAAA;QACpG,MAAM,WAAW,GAAsB,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAC,QAAQ,CAAC,CAAC;QAClF,IAAG,CAAC,WAAW,EAAC;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC1D,YAAA,OAAO,IAAI,CAAC;SACb;QAED,MAAM,UAAU,GAAY,eAAe,IAAK,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;AAC9F,QAAA,IAAI,CAAC,UAAU,IAAK,UAAU,EAAE,KAAK,IAAE,CAAC,IAAI,UAAU,EAAE,MAAM,IAAE,CAAC,EAAG;AAClE,YAAA,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;SACrD;AACD,QAAA,MAAO,WAAW,GAAgB,WAAW,CAAC,qBAAqB,EAAE,CAAC;QACtE,IAAG,CAAC,WAAW,EAAC;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;SACzD;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;;;AAID,IAAA,aAAa,CAAC,EAAS,EAAC,QAAe,EAAC,eAAiC,EAAE,MAAa,EAAC,MAAa,EAAC,UAAA,GAAqB,KAAK,EAAA;QAC/H,IAAG,CAAC,EAAE,EAAC;YACL,OAAO,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,CAAC;SAC5B;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAG,CAAC,EAAE,EAAC;YACL,OAAO,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,CAAC;SAC5B;QACD,MAAM,UAAU,GAAY,eAAe,IAAK,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;AAC9F,QAAA,MAAM,WAAW,GAAkB,IAAI,CAAC,eAAe,CAAC,EAAE,EAAC,QAAQ,EAAC,UAAU,CAAC,CAAC;QAChF,IAAG,CAAC,WAAW,EAAC;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACpD,OAAO,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,CAAC;SAC5B;QAED,IAAG,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,MAAM,EAAC;AAC7C,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,OAAO,EAAC,MAAM,EAAC,CAAC,EAAC,MAAM,EAAC,CAAC,EAAC,CAAC;SAC5B;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC;AACpB,QAAA,IAAG,UAAU,EAAE,KAAK,GAAG,CAAC,IAAK,UAAU,EAAE,MAAM,GAAG,CAAC,EAAC;YAClD,QAAQ,GAAG,KAAK,CAAC;SAClB;QACD,IAAG,QAAQ,EAAC;YACV,IAAI,eAAe,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;gBACvE,eAAe,GAAG,KAAK,CAAC;aACzB;;YAGD,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;;YAGrD,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAEzD,IAAG,eAAe,EAAE;gBAClB,IAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,UAAU,CAAC,KAAK,KAAK,EAAE;oBAC3D,MAAO,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;oBAC3E,MAAM,GAAG,aAAa,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;oBACzC,MAAM,GAAG,aAAa,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;iBAC1D;aACF;iBAAM;gBACL,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,cAAc,CAAC,KAAK,KAAK,EAAE;oBACnE,MAAM,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;oBAClF,MAAM,GAAG,aAAa,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;oBACzC,MAAM,GAAG,aAAa,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;iBAC1D;aACF;SACF;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;QACtD,IAAG,CAAC,eAAe,EAAC;YAClB,OAAO;SACR;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9C,QAAA,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC;AAClD,QAAA,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,MAAM,IAAI,IAAI,CAAC;AACpD,QAAA,OAAO,EAAC,MAAM,EAAC,MAAM,EAAC,CAAC;KACxB;AACD;;AAE4E;IAC5E,aAAa,CAAC,EAAU,EAAE,EAAU,EAAA;AAClC,QAAA,IAAG,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;AACb,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,OAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC;KACnG;AAED;;AAE4E;IAC5E,oBAAoB,CAAC,EAAU,EAAE,EAAU,EAAA;AACzC,QAAA,IAAG,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;AACb,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,MAAO,QAAQ,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC;AAC1D,QAAA,MAAO,QAAQ,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAK,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC;QAC1D,OAAO,QAAQ,IAAI,QAAQ,CAAC;KAC7B;AAED;;AAE4E;IAC5E,kBAAkB,CAAC,EAAU,EAAE,EAAU,EAAA;AACvC,QAAA,IAAG,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;YACb,OAAO,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;SAClB;AACD,QAAA,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;;QAEhC,IAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE;AACpB,YAAA,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACb;aAAM,IAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE;YAC7B,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;SAC5B;;QAED,IAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE;AAClB,YAAA,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACb;aAAM,IAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE;YAC/B,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;SAC9B;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;AAE4E;IAC5E,0BAA0B,CAAC,EAAU,EAAE,EAAU,EAAA;AAC/C,QAAA,IAAG,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;YACb,OAAQ,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC;SACnB;AAED,QAAA,MAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;;QAEjC,IAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE;AACpB,YAAA,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACb;;QAED,IAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE;AAClB,YAAA,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACb;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAEA;;AAE2E;AAC5E,IAAA,mBAAmB,CAAC,IAAY,EAAE,UAAiB,EAAE,UAAiB,EAAA;QACpE,IAAG,CAAC,IAAI,EAAE;YACR,OAAO;SACR;AACD,QAAA,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACrB,QAAA,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,eAAe,CAAC,KAAa,EAAE,EAAA,GAAY,EAAE,EAAA;QAC3C,MAAO,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpC,IAAG,CAAC,SAAS,EAAC;YACZ,OAAO;SACR;AACD,QAAA,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACjD,UAAU,CAAC,MAAI;AACb,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAC,EAAE,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;AACzD,SAAC,CAAC,CAAC;KACL;AAGA,IAAA,aAAa,CAAC,EAAS,EAAA;AACrB,QAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;KAChC;AAED;;;AAG4E;AAC5E,IAAA,qBAAqB,CAAC,EAAS,EAAA;QAC7B,MAAM,IAAI,GAA2B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtD,IAAG,CAAC,IAAI,EAAC;YACP,OAAO;SACR;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAG,CAAC,OAAO,EAAC;YACV,OAAO;SACR;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAE9C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAC,SAAS,EAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAC,IAAI,EAAC,GAAG,EACb,WAAW,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,GAAC,CAAC,EAC1D,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;KACrF;+GA9XU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCrBY,kCAAkC,CAAA;AAC7C,IAAA,WAAA,CAAsB,oBAA0C,EAAA;QAA1C,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;;QAGvD,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAQ,CAAA,QAAA,GAAU,EAAE,CAAC;;QAG9B,IAAW,CAAA,WAAA,GAAW,cAAc,CAAC;KANpC;IASD,SAAS,GAAA;QACP,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxD;AAED,IAAA,eAAe,CAAC,KAAuB,EAAA;AACrC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAC,EAAE,EAAC,SAAS,EAAC,OAAO,EAAC,OAAO,CAAC,CAAA;KACpF;+GAnBU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,ECd/C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4OAUA,EDFI,MAAA,EAAA,CAAA,mquBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,6HACZ,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKT,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAV9C,SAAS;+BACE,kCAAkC,EAAA,UAAA,EAChC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,kBAAkB;AACnB,qBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,mquBAAA,CAAA,EAAA,CAAA;sFAQQ,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;AEIF,MAAO,wCAAyC,SAAQ,+BAA+B,CAAA;IAC3F,WAAY,CAAA,gBAAkC,EAAS,oBAAyC,EAAA;QAC9F,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAD8B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAqB;QASvF,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAQ,CAAA,QAAA,GAAU,EAAE,CAAC;AACpB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;AAQlC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAoB,EAAE,CAAC,CAAC;QAhBvD,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAA0B,KAAI;AAClF,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAuB,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7F,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;AACxD,SAAC,CAAC,CAAA;KACH;;;IASD,IAA+B,UAAU,CAAC,KAA6B,EAAA;AACrE,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACvB;AAGD,IAAA,YAAY,CAAC,EAAU,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;KAClD;AAED,IAAA,aAAa,CAAC,MAAc,EAAA;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE;YAC3B,OAAO;SACR;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACjC;IACD,SAAS,GAAA;QACP,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxD;AAED,IAAA,eAAe,CAAC,KAAuB,EAAA;AACrC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAC,EAAE,EAAC,SAAS,EAAC,OAAO,EAAC,OAAO,CAAC,CAAA;KACpF;+GAzCU,wCAAwC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wCAAwC,EANxC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA;YACT,gBAAgB;AACjB,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBH,mvBAuBA,EDVI,MAAA,EAAA,CAAA,+vqCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,uGAClB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAQN,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAdpD,SAAS;+BACE,yCAAyC,EAAA,UAAA,EACvC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,eAAe;qBAChB,EACU,SAAA,EAAA;wBACT,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,mvBAAA,EAAA,MAAA,EAAA,CAAA,+vqCAAA,CAAA,EAAA,CAAA;qHAcQ,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAKwB,UAAU,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;;;AEnBrB,MAAO,qCAAuC,SAAQ,+BAA+B,CAAA;IAEzF,WAAY,CAAA,gBAAkC,EAC3B,oBAA0C,EAAA;QAE3D,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAFN,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAMpD,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;QAElB,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QAEtB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;KAP3B;IASD,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAA0B,KAAI;AAClF,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAuB,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7F,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;AACxD,SAAC,CAAC,CAAA;KACH;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KAC3E;IAED,SAAS,GAAA;QACP,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxD;AAED,IAAA,eAAe,CAAC,KAAuB,EAAA;AACrC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAC,EAAE,EAAC,SAAS,EAAC,OAAO,EAAC,OAAO,CAAC,CAAA;KACpF;+GAnCU,qCAAqC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qCAAqC,EANrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACT,gBAAgB;AACjB,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBH,iTAUA,EDCI,MAAA,EAAA,CAAA,uhtBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,uGAClB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAQN,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAdjD,SAAS;+BACE,sCAAsC,EAAA,UAAA,EACpC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,eAAe;qBAChB,EACU,SAAA,EAAA;wBACT,gBAAgB;AACjB,qBAAA,EAAA,QAAA,EAAA,iTAAA,EAAA,MAAA,EAAA,CAAA,uhtBAAA,CAAA,EAAA,CAAA;qHAaQ,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEG,WAAW,EAAA,CAAA;sBADnB,WAAW;uBAAC,mBAAmB,CAAA;;sBAC/B,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AEnCR;MAoBa,kBAAkB,CAAA;AAgC7B,IAAA,WAAA,CAAoB,UAAsB,EACtB,oBAA0C,EAC1C,qBAA2C,EAAA;QAF3C,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAsB;QAjC/D,IAAmB,CAAA,mBAAA,GAAG,CAAC,CAAC;QACxB,IAAmB,CAAA,mBAAA,GAAG,CAAC,CAAC;QACxB,IAAiB,CAAA,iBAAA,GAAsB,EAAE,CAAC;QAC1C,IAAa,CAAA,aAAA,GAAS,IAAI,CAAC;QAC3B,IAAa,CAAA,aAAA,GAAS,KAAK,CAAC;QAQ5B,IAAiB,CAAA,iBAAA,GAAK,IAAI,CAAC;AAI3B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAc,CAAC;;AAI5C,QAAA,IAAA,CAAA,YAAY,GAAkB;AAC5B,YAAA,EAAE,SAAS,EAAG,YAAY,EAAG,cAAc,EAAG,IAAI,EAAE;AACpD,YAAA,EAAE,SAAS,EAAG,WAAW,EAAI,cAAc,EAAE,GAAG,EAAI;AACpD,YAAA,EAAE,SAAS,EAAG,YAAY,EAAG,cAAc,EAAE,IAAI,EAAG;AACpD,YAAA,EAAE,SAAS,EAAG,WAAW,EAAI,cAAc,EAAE,GAAG,EAAI;AACpD,YAAA,EAAE,SAAS,EAAG,YAAY,EAAG,cAAc,EAAE,IAAI,EAAG;AACpD,YAAA,EAAE,SAAS,EAAG,WAAW,EAAI,cAAc,EAAE,GAAG,EAAI;AACpD,YAAA,EAAE,SAAS,EAAG,YAAY,EAAG,cAAc,EAAE,IAAI,EAAG;AACpD,YAAA,EAAE,SAAS,EAAG,WAAW,EAAI,cAAc,EAAE,GAAG,EAAI;SACrD,CAAC;AAMA,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC;AACzC,QAAA,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;AAEjD,QAAA,IAAI,CAAC,WAAW,GAAK,CAAC,KAA2B,KAAI;;YAEnD,KAAK,CAAC,eAAe,EAAE,CAAC;AACxB,YAAA,IAAG,IAAI,CAAC,aAAa,EAAC;gBACpB,OAAO;aACR;AACD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,YAAA,MAAM,SAAS,GAAI,KAAoB,CAAC,aAAa,GAAG,KAAoB,CAAC,aAAa,GAAE,EAAE,CAAC;YAC/F,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,GAAI,KAAoB,CAAC,OAAO,CAAC;YACpG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,GAAI,KAAoB,CAAC,OAAO,CAAC;AACpG,YAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;AACnC,YAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;YACnC,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAClC,SAAC,CAAA;AAED;;AAE4E;AAC5E,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAA2B,KAAI;YACtD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;;AAGxB,YAAA,MAAM,SAAS,GAAI,KAAoB,CAAC,aAAa,GAAI,KAAoB,CAAC,aAAa,GAAE,EAAE,CAAC;YAChG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,GAAI,KAAoB,CAAC,OAAO,CAAC;YACnG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,GAAI,KAAoB,CAAC,OAAO,CAAC;;;YAInG,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAC,OAAO,EAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC1I,IAAG,KAAK,EAAE;AACR,gBAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;AACnC,gBAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;aACpC;AACH,SAAC,CAAA;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACjC;IACD,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAED,SAAS,GAAA;;AAEP,QAAA,IAAG,CAAC,IAAI,CAAC,aAAa,EAAC;YACrB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC3C;IAGD,YAAY,GAAA;QACV,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACvD,IAAG,IAAI,EAAC;AACN,YAAA,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACrC;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;KAC7B;AAEH;;AAE8E;IAC5E,YAAY,CAAC,KAAa,EAAE,KAAa,EAAA;AACvC,QAAA,IAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,OAAO,KAAK,CAAC;SACd;QACD,MAAM,WAAW,GAAW,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;AACnC,eAAA,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;AACtB,eAAA,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;AAC1B,eAAA,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;AAE9C,QAAA,OAAO,WAAW,CAAC;KACpB;AACC;;AAE0E;AAC5E,IAAA,gBAAgB,CAAC,IAAY,EAAE,OAAc,EAAE,OAAc,EAAE,cAAqB,EAAA;QAClF,IAAG,CAAC,IAAI,EAAE;YACR,OAAO;SACR;AAED,QAAA,IAAG,CAAC,IAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC;AAClB,YAAA,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;SACxB;AAED,QAAA,IAAG,CAAC,IAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC;AAClB,YAAA,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;SACxB;AAED,QAAA,IAAG,QAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AACtE,YAAA,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC;SACvB;AAED,QAAA,IAAG,QAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AACtE,YAAA,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;SACxB;AAED,QAAA,OAAO,IAAI,CAAC;KACb;IAED,eAAe,CAAC,GAAe,EAAE,WAAmB,EAAA;QAClD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACvG;AAED;;AAE4E;IAC5E,YAAY,CAAE,GAAe,EAAE,KAAY,EAAE,KAAY,EAAE,GAAU,EAAC,GAAU,EAAE,cAAqB,EAAA;AACrG,QAAA,MAAM,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;AAC9B,QAAA,MAAM,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;AAC9B,QAAA,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;AACrC,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;;QAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;QAE/D,IAAI,eAAe,GAAG,IAAI,CAAC;AAE3B,QAAA,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC;;;QAIxC,IAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,KAAK,EAAE;YACrD,eAAe,GAAG,KAAK,CAAC;SACzB;QAED,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AAEzE,QAAA,IAAI,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,KAAK,EAAE;AACvE,YAAA,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEhD,QAAA,IAAG,CAAC,IAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAC3C,YAAA,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;SAC1B;AAED,QAAA,IAAG,CAAC,IAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAC5C,YAAA,GAAG,GAAG,GAAG,GAAK,SAAS,CAAC;SACzB;AAED,QAAA,IAAG,CAAC,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AACtC,YAAA,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;SAC3B;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;SAC5C;AACI,aAAA,IAAG,CAAC,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;AAC3C,YAAA,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;SAC7B;QAGD,OAAO,CAAC,KAAK,CAAC,GAAG,GAAM,GAAG,GAAK,IAAI,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAK,IAAI,GAAI,IAAI,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAI,KAAK,GAAG,IAAI,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAI,MAAM,GAAG,IAAI,CAAC;AAEtC,QAAA,OAAO,IAAI,CAAC;KACb;AACH;;;AAG8E;AAE1E;;AAE0E;AAC5E,IAAA,WAAW,CAAC,OAAmB,EAAA;QAC7B,MAAM,oBAAoB,GAAG,MAAK;YAChC,IAAI,iBAAiB,GAAsB,EAAE,CAAC;;AAE9C,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAE,IAAI,IAAG;gBAChC,MAAM,WAAW,GAAI,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpE,gBAAA,IAAI,WAAW,EAAE,MAAM,EAAG;;AAExB,oBAAA,MAAM,oBAAoB,GAAuB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAE,IAAI,IAAG;wBACnF,MAAM,aAAa,GAAG,IAAwB,CAAC;AAC/C,wBAAA,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AACnD,wBAAA,OAAO,aAAa,CAAC;AACvB,qBAAC,CAAC,CAAC;;oBAGH,iBAAiB,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,oBAAoB,CAAC,CAAC;iBACrE;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,iBAAiB,GAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;YACjD,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACpC,SAAC,CAAA;QACD,UAAU,CAAC,MAAI;AACb,YAAA,oBAAoB,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;AAED;;AAE4E;IAC5E,0BAA0B,GAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,IAAG;YACvC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7D,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChE,SAAC,CAAC,CAAC;KACJ;AACF;;AAE6E;IAC5E,2BAA2B,GAAA;QACzB,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1D,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3D,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;KACpE;AAED;;AAE4E;IAC5E,4BAA4B,GAAA;QAC1B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACtE,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACtE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7D,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KAC/D;AAEH;;AAE8E;IAC5E,2BAA2B,GAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,IAAG;YACvC,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAChE,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACjE,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACrE,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACrE,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5D,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAC/D,SAAC,CAAC,CAAC;KACJ;AAED;;AAE4E;IAC5E,uBAAuB,GAAA;QACrB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;AAEF;;AAE6E;AAC5E,IAAA,mBAAmB,CAAC,KAA8B,EAAA;QAChD,IAAI,CAAC,KAAK,EAAG;YACX,OAAO;SACR;;QAGD,IAAI,cAAc,GAAU,IAAI,CAAC;AACjC,QAAA,MAAO,gBAAgB,GAAG,KAAK,EAAE,MAAM,CAAC;QAExC,IAAI,gBAAgB,EAAG;AACrB,YAAA,MAAO,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAE,IAAI,IAAI,IAAI,KAAK,gBAAgB,CAAE,CAAC;AACpF,YAAA,IAAI,SAAS,EAAE,cAAc,EAAE;AAC7B,gBAAA,cAAc,GAAG,SAAS,EAAE,cAAc,CAAC;aAC5C;SACF;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAI,cAAc,CAAC;KAC1C;+GApUU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;gJAmBC,UAAU,EAAA,CAAA;sBADT,MAAM;;;ACpCT;AACA;AAgCM,MAAO,2BAA4B,SAAQ,+BAA+B,CAAA;IAE9E,WAAY,CAAA,gBAAkC,EAC1B,oBAA0C,EAC1C,OAAmB,EACnB,GAAsB,EACtB,qBAA2C,EAAA;QAE7D,KAAK,CAAC,gBAAgB,CAAC,CAAC;QALN,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QACnB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAsB;QAKtD,IAAM,CAAA,MAAA,GAAY,KAAK,CAAC;QAExB,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAE3B,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;QAC/B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAC3B,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAE,CAAA,EAAA,GAAY,EAAE,CAAC;AAElB,QAAA,IAAA,CAAA,YAAY,GAAwB,IAAI,CAAC;QACzC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;;QAGxC,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;KAhB5B;AAkBD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACnD;IAED,QAAQ,GAAA;QAEN,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAA0B,KAAI;AAClF,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAuB,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;AACxD,SAAC,CAAC,CAAA;KAEH;IACD,WAAW,GAAA;;AAET,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;KACF;IAED,eAAe,GAAA;;;AAGb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9E,YAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACJ;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC7C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;;YAE3B,UAAU,CAAC,MAAI;AACb,gBAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAC,EAAE,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;AACzE,aAAC,CAAC,CAAC;SACJ;KACF;AAED,IAAA,6BAA6B,CAAC,UAA8B,EAAA;AAC1D,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAC,yBAAyB,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;KAChG;IAED,YAAY,GAAA;QACV,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC1D;IAED,SAAS,GAAA;QACP,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAClD;+GA1EU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,ECjCxC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,m8BAgCA,EDbI,MAAA,EAAA,CAAA,uhtBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+BAEZ,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAYT,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAlBvC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,kBAAkB;wBAClB,kCAAkC;wBAClC,wCAAwC;wBACxC,qCAAqC;AACtC,qBAAA,EAAA,QAAA,EAAA,m8BAAA,EAAA,MAAA,EAAA,CAAA,uhtBAAA,CAAA,EAAA,CAAA;+MAmBQ,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,EAAE,EAAA,CAAA;sBAAV,KAAK;;;AEzCR,MAAMC,uBAAqB,GAAG,GAAG,CAAC;AAClC,MAAMC,sBAAoB,GAAG,GAAG,CAAC;AAiB3B,MAAO,sCAAuC,SAAQ,+BAA+B,CAAA;;;;IASzF,IAA+B,UAAU,CAAC,KAAwB,EAAA;AAChE,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;KACtB;AAUD,IAAA,WAAA,CACE,gBAAkC,EAClC,oBAA0C,EACzB,OAAmB,EAAA;QAEpC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAFP,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAtB5B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;QAC5C,IAAM,CAAA,MAAA,GAAY,IAAI,CAAC;QACvB,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAQ1B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAoB,EAAE,CAAC,CAAC;QAI/C,IAAW,CAAA,WAAA,GAAG,iBAAiB,CAAA;QAC/B,IAAI,CAAA,IAAA,GAAG,mBAAmB,CAAC;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAW,EAAE,CAAC;QACnB,IAAe,CAAA,eAAA,GAAW,cAAc,CAAC;AAQvC,QAAA,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;KAClD;IAED,eAAe,GAAA;;QAEb,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAC,IAAI,CAAC,WAAW,EAAC,yBAAyB,EAAC,IAAI,EAACD,uBAAqB,EAACC,sBAAoB,CAAC,CAAC;KACnJ;+GAjCU,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,4NALtC,CAAC,gBAAgB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxB/B,ksCAqCA,EDpBI,MAAA,EAAA,CAAA,uhtBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,2KAC3B,kCAAkC,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,wCAAwC,EACxC,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qCAAqC,sIACrC,eAAe,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAON,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAhBlD,SAAS;+BACE,uCAAuC,EAAA,UAAA,EACrC,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,2BAA2B;wBAC3B,kCAAkC;wBAClC,wCAAwC;wBACxC,qCAAqC;wBACrC,eAAe;AAChB,qBAAA,EAAA,SAAA,EACU,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,ksCAAA,EAAA,MAAA,EAAA,CAAA,uhtBAAA,CAAA,EAAA,CAAA;8IAIhC,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACE,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAKyB,UAAU,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;;;AE1B3B,MAAMG,uBAAqB,GAAE,GAAG,CAAC;AACjC,MAAMC,sBAAoB,GAAG,GAAG,CAAC;AAmB3B,MAAO,2CAA4C,SAAQ,+BAA+B,CAAA;AAC9F,IAAA,WAAA,CAAY,gBAAkC,EAC1B,oBAA0C,EAC1C,OAAmB,EACnB,GAAsB,EAAA;QACxC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAHN,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QACnB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAIlC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAG9B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;QAE5C,IAAM,CAAA,MAAA,GAAY,IAAI,CAAC;QACvB,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;;QAG1B,IAAK,CAAA,KAAA,GAA2B,EAAE,CAAC;QAE5C,IAAI,CAAA,IAAA,GAAG,wBAAwB,CAAC;AAChC,QAAA,IAAA,CAAA,KAAK,GAAW,EAAE,CAAC;QACnB,IAAe,CAAA,eAAA,GAAW,mBAAmB,CAAC;QAC9C,IAAW,CAAA,WAAA,GAAG,sBAAsB,CAAC;KAfpC;IAiBD,eAAe,GAAA;QACb,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAC,IAAI,CAAC,WAAW,EAAC,yBAAyB,EAAC,IAAI,EAACD,uBAAqB,EAACC,sBAAoB,CAAE,CAAC;KACpJ;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACzB,UAAU,CAAC,MAAI;AACb,gBAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAC,yBAAyB,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;AACzG,aAAC,CAAC,CAAC;SACJ;KACF;+GApCU,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,4MAN3C,CAAC,gBAAgB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B/B,ssCAqCA,EDlBI,MAAA,EAAA,CAAA,uhtBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,2KAC3B,kCAAkC,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,wCAAwC,EACxC,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qCAAqC,sIACrC,eAAe,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAQN,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAjBvD,SAAS;+BACE,4CAA4C,EAAA,UAAA,EAC1C,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,2BAA2B;wBAC3B,kCAAkC;wBAClC,wCAAwC;wBACxC,qCAAqC;wBACrC,eAAe;AAChB,qBAAA,EAAA,SAAA,EACU,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,ssCAAA,EAAA,MAAA,EAAA,CAAA,uhtBAAA,CAAA,EAAA,CAAA;8KAchC,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEE,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGG,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AEhCF,MAAO,+BAAgC,SAAQ,+BAA+B,CAAA;IAClF,WAAY,CAAA,gBAAkC,EAC1B,oBAA0C,EAAA;QAE5D,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAFL,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAKrD,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;KAH9B;IAKD,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAA0B,KAAI;AAClF,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAuB,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7F,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;AACxD,SAAC,CAAC,CAAA;KACH;+GAfU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,ECjB5C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+IAOA,EDII,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,4HACZ,eAAe,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKN,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAV3C,SAAS;+BACE,+BAA+B,EAAA,UAAA,EAC7B,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,+IAAA,EAAA,CAAA;qHAWQ,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;AEFF,MAAO,sBAAuB,SAAQ,+BAA+B,CAAA;AACzE,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC5C,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAGhB,IAAkB,CAAA,kBAAA,GAAW,YAAY,CAAC;QAC1C,IAAiB,CAAA,iBAAA,GAAW,YAAY,CAAC;QAEzC,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AAQzB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAA0B,EAAE,CAAC,CAAC;AAEtD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyB,CAAC;AACzD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyB,CAAC;AAEzD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAyB,CAAC;AACjE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAyB,CAAC;AAEjE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAyB,CAAC;AACpE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAyB,CAAC;KAtB7E;;;;IAUD,IAAgC,WAAW,CAAC,KAA8B,EAAA;AACxE,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;+GAfU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBnC,oiIA2GA,EAAA,MAAA,EAAA,CAAA,sqhBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7FI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,6BAA6B,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,oCAAoC,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpC,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKN,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,uBAAuB;wBACvB,6BAA6B;wBAC7B,oCAAoC;wBACpC,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,oiIAAA,EAAA,MAAA,EAAA,CAAA,sqhBAAA,CAAA,EAAA,CAAA;qFASQ,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAK0B,WAAW,EAAA,CAAA;sBAA1C,KAAK;uBAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;gBAKhB,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBAEG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBAEG,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;gBACG,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;;;MEtCI,4BAA4B,CAAA;AAPzC,IAAA,WAAA,GAAA;QAQW,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;AACjD,KAAA;+GAFY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVzC,mGAIA,EAAA,MAAA,EAAA,CAAA,4QAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIX,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EACzB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,mGAAA,EAAA,MAAA,EAAA,CAAA,4QAAA,CAAA,EAAA,CAAA;8BAKd,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;;;AEQR,MAAMU,uBAAqB,GAAG,GAAG,CAAC;AAClC,MAAMC,sBAAoB,GAAE,EAAE,CAAC;AAqBzB,MAAO,2CAA4C,SAAQ,+BAA+B,CAAA;AAC9F,IAAA,WAAA,CAAY,gBAAkC,EAC3B,oBAA0C,EAC1C,OAAmB,EACnB,GAAsB,EAAA;QAEvC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAJP,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QACnB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAIjC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;;AAI/B,QAAA,IAAA,CAAA,MAAM,GAAY,KAAK,CAAC;QACxB,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAe,CAAA,eAAA,GAAuB,SAAS,CAAC;QAChD,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAkB,CAAA,kBAAA,GAAuB,SAAS,CAAC;QAE5D,IAAI,CAAA,IAAA,GAAG,2BAA2B,CAAC;QACnC,IAAK,CAAA,KAAA,GAAW,oBAAoB,CAAC;QACrC,IAAW,CAAA,WAAA,GAAG,yBAAyB,CAAC;;QAE/B,IAAK,CAAA,KAAA,GAA2B,EAAE,CAAC;AAElC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;;QAG5C,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;QACvC,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AACnC,QAAA,IAAA,CAAA,OAAO,GAA4B,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACjF,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyB,CAAC;AACzD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyB,CAAC;AACzD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAyB,CAAC;AACjE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAyB,CAAC;AACjE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAyB,CAAC;AACpE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAyB,CAAC;AACpE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAc,CAAC;AACvD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;KA9B9B;IAgCD,eAAe,GAAA;QACb,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAC,IAAI,CAAC,WAAW,EAAC,yBAAyB,EAAC,IAAI,EAACD,uBAAqB,EAACC,sBAAoB,CAAC,CAAC;QAElJ,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAC,IAAI,EAAC,CAAC,KAA0B,KAAI;AAClI,gBAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAuB,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;gBAChG,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;AACxD,aAAC,EAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC;KAC9C;;IAGD,kBAAkB,GAAA;;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACzB,UAAU,CAAC,MAAI;AACb,gBAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAC,yBAAyB,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;AACzG,aAAC,CAAC,CAAC;SACJ;KACF;+GA1DU,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3C,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAL3C,CAAC,gBAAgB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpC/B,6pFAuEA,ED9CI,MAAA,EAAA,CAAA,6wxBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,EAC3B,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kCAAkC,kHAClC,wCAAwC,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxC,qCAAqC,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrC,+BAA+B,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC/B,4BAA4B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,mCAAmC,EAAA,QAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAO1B,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBApBvD,SAAS;+BACE,4CAA4C,EAAA,UAAA,EAC1C,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,2BAA2B;wBAC3B,kCAAkC;wBAClC,wCAAwC;wBACxC,qCAAqC;wBACrC,+BAA+B;wBAC/B,4BAA4B;wBAC5B,sBAAsB;wBACtB,eAAe;wBACf,mCAAmC;AACpC,qBAAA,EAAA,SAAA,EACU,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,6pFAAA,EAAA,MAAA,EAAA,CAAA,6wxBAAA,CAAA,EAAA,CAAA;8KAcjC,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAMG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAGE,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACI,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;gBACG,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;;;MEjEI,4BAA4B,CAAA;AARzC,IAAA,WAAA,GAAA;AAUG,QAAA,IAAA,CAAA,cAAc,GAAG;AAChB,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC;AAChC,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC;AAChC,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAC;AACrC,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAC;AACrC,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC;AAChC,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAC;AACjC,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAC;AACjC,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC;AAChC,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC;AAC/B,YAAA,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAC;SAChC,CAAC;QAEsC,IAAO,CAAA,OAAA,GAAa,KAAK,CAAC;QACzD,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;QACF,IAAQ,CAAA,QAAA,GAAa,KAAK,CAAC;QACnE,IAAW,CAAA,WAAA,GAAa,KAAK,CAAC;AAEpB,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAU,CAAC;AAShE,KAAA;AAPC,IAAA,eAAe,CAAE,QAAgB,EAAA;AAC/B,QAAA,SAAS,CAAC,IAAI,EAAE,yBAAyB,EAAE,QAAQ,CAAC,CAAC;KACtD;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;KACtC;+GA5BU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,uGAenB,gBAAgB,CAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAEhB,gBAAgB,CC7BtC,EAAA,EAAA,OAAA,EAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,upCA6BM,q5HDtBM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAKX,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,aAAA,EAGR,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,upCAAA,EAAA,MAAA,EAAA,CAAA,81HAAA,CAAA,EAAA,CAAA;8BAiBF,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC7B,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACkC,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAG5B,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;;;AEVH,MAAO,2BAA4B,SAAQ,+BAA+B,CAAA;AAC9E,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC5C,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAIhB,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QACzB,IAAe,CAAA,eAAA,GAAW,EAAE,CAAC;QAC7B,IAAkB,CAAA,kBAAA,GAAW,EAAE,CAAC;QAChC,IAAiB,CAAA,iBAAA,GAAW,EAAE,CAAC;QACA,IAAsB,CAAA,sBAAA,GAAY,KAAK,CAAC;QACxC,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAChC,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QACnC,IAAuB,CAAA,uBAAA,GAAY,KAAK,CAAC;QACzC,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QAEnC,IAAqB,CAAA,qBAAA,GAAY,IAAI,CAAC;QACtC,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;QAC9B,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;QACjC,IAAsB,CAAA,sBAAA,GAAY,IAAI,CAAC;QACvC,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;QAEjC,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QACzB,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;QAC/B,IAAuB,CAAA,uBAAA,GAAY,KAAK,CAAC;QACxE,IAAc,CAAA,cAAA,GAAc,EAAE,CAAC;AAiBxC;;;;AAI4E;AAC5E,QAAA,IAAA,CAAA,YAAY,GAAmB;AAC7B,YAAA,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,0BAA0B,EAAE,cAAc,EAAE,4BAA4B,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;AAC/P,YAAA,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;AACtN,YAAA,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,oBAAoB,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;AAClO,YAAA,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,2BAA2B,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;AAC5P,YAAA,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;SAC3N,CAAC;KApDD;AA0BD,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,oEAAoE,CAAC;KAC3H;AACD,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,CAA8G,2GAAA,EAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG,oEAAoE,GAAG,CAAC;KAC5O;AAED,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,EAAE,YAAY,EAAE,CAAA,EAAG,IAAI,CAAC,eAAe,CAAE,CAAA,EAAE,CAAC;KACpD;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,EAAE,YAAY,EAAE,CAAA,IAAA,EAAO,IAAI,CAAC,SAAS,CAAG,CAAA,CAAA,EAAE,CAAC;KACnD;AAeD,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAChH;AAED;;AAE4E;AAC5E,IAAA,SAAS,CAAC,IAAkB,EAAA;QAC1B,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC;AAE5D,YAAA,OAAO,EAAG,IAAwD,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1E;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AACD;;AAE8E;AAC9E,IAAA,WAAW,CAAC,IAAkB,EAAA;QAE5B,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,UAAU,CAAC;AAC7D,YAAA,OAAO,CAAC,CAAE,IAAwD,CAAC,GAAG,CAAC,CAAC;SACzE;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAGD,uBAAuB,CAAC,MAAc,EAAE,KAAa,EAAA;AACnD,QAAA,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KAC5B;AAED;;AAE0E;AAC1E,IAAA,gBAAgB,CAAC,IAAkB,EAAE,IAAY,EAAE,KAAY,EAAA;QAC7D,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAG/B,QAAA,IAAI,IAAI,IAAI,MAAM,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBAC1B,OAAO;aACR;SACF;AACD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,SAAS,CAAC,IAAI,EAAE,2BAA2B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;KAChE;AAED,IAAA,qBAAqB,CAAC,KAAY,EAAA;QAChC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;KACF;IAED,0BAA0B,CAAC,IAAkB,EAAE,OAAgB,EAAA;AAC7D,QAAA,MAAM,MAAM,GAAW,CAAG,EAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,EAAE,CAAA,CAAA,EAAI,OAAO,GAAG,EAAE,GAAG,iBAAiB,CAAA,CAAE,CAAC;AACzG,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,0BAA0B,CAAC,IAAkB,EAAA;AAC3C,QAAA,MAAM,MAAM,GAAW,CAAA,EAAG,IAAI,CAAC,KAAK,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,GAAG,QAAQ,GAAG,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,EAAE,EAAE,CAAC;AAC7I,QAAA,OAAO,MAAM,CAAC;KACf;+GA5HU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,qSAUlB,gBAAgB,CAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAChB,gBAAgB,CAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAChB,gBAAgB,CAChB,EAAA,uBAAA,EAAA,CAAA,yBAAA,EAAA,yBAAA,EAAA,gBAAgB,CAChB,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,gBAAgB,6EAEhB,gBAAgB,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAChB,gBAAgB,CAChB,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAgB,gFAChB,gBAAgB,CAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAChB,gBAAgB,CAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAEhB,gBAAgB,CAChB,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,gBAAgB,mCAChB,gBAAgB,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAChB,gBAAgB,CAChB,EAAA,uBAAA,EAAA,CAAA,yBAAA,EAAA,yBAAA,EAAA,gBAAgB,CAhCzB,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,gBAAgB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB/B,uiIA6GA,ED9FY,MAAA,EAAA,CAAA,sqsBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,wXAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAO5B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EACxB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,SAAA,EAC7B,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,uiIAAA,EAAA,MAAA,EAAA,CAAA,sqsBAAA,CAAA,EAAA,CAAA;qFASjC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACkC,sBAAsB,EAAA,CAAA;sBAA7D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,cAAc,EAAA,CAAA;sBAArD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,iBAAiB,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,uBAAuB,EAAA,CAAA;sBAA9D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,iBAAiB,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAEE,qBAAqB,EAAA,CAAA;sBAA5D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,sBAAsB,EAAA,CAAA;sBAA7D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAEE,WAAW,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,UAAU,EAAA,CAAA;sBAAjD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,uBAAuB,EAAA,CAAA;sBAA9D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC7B,cAAc,EAAA,CAAA;sBAAtB,KAAK;;;AEzCR,MAAM,cAAc,GAAG;AACrB,IAAA,0BAA0B,EAAE,yBAAyB;AACrD,IAAA,2BAA2B,EAAE,0BAA0B;AACvD,IAAA,gBAAgB,EAAE,gBAAgB;AAClC,IAAA,iBAAiB,EAAE,iBAAiB;AACpC,IAAA,oBAAoB,EAAE,oBAAoB;AAC1C,IAAA,2BAA2B,EAAE,0BAA0B;AACvD,IAAA,oBAAoB,EAAE,oBAAoB;AAC1C,IAAA,0BAA0B,EAAE,0BAA0B;AACtD,IAAA,qBAAqB,EAAE,oBAAoB;AAC3C,IAAA,uBAAuB,EAAE,sBAAsB;AAC/C,IAAA,mBAAmB,EAAE,mBAAmB;AACxC,IAAA,4BAA4B,EAAE,2BAA2B;AACzD,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,kBAAkB,EAAE,iBAAiB;AACrC,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,wBAAwB,EAAE,sBAAsB;CACxC,CAAC;AAiBL,MAAO,wBAAyB,SAAQ,+BAA+B,CAAA;AAC3E,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC5C,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAGe,IAAU,CAAA,UAAA,GAAa,KAAK,CAAC;QAC7B,IAAO,CAAA,OAAA,GAAa,KAAK,CAAC;QAC1B,IAAS,CAAA,SAAA,GAAa,KAAK,CAAC;QAC5B,IAAK,CAAA,KAAA,GAAa,KAAK,CAAC;QACxB,IAAO,CAAA,OAAA,GAAa,KAAK,CAAC;QAC1B,IAAoB,CAAA,oBAAA,GAAa,KAAK,CAAC;QACvC,IAAuB,CAAA,uBAAA,GAAa,KAAK,CAAC;QACzE,IAAW,CAAA,WAAA,GAAY,EAAE,CAAC;QAC1B,IAAe,CAAA,eAAA,GAAY,EAAE,CAAC;QAC9B,IAAkB,CAAA,kBAAA,GAAY,EAAE,CAAC;QACjC,IAAiB,CAAA,iBAAA,GAAY,EAAE,CAAC;QACD,IAAsB,CAAA,sBAAA,GAAa,KAAK,CAAC;QACzC,IAAc,CAAA,cAAA,GAAa,KAAK,CAAC;QACjC,IAAiB,CAAA,iBAAA,GAAa,KAAK,CAAC;QACpC,IAAuB,CAAA,uBAAA,GAAa,KAAK,CAAC;QAC1C,IAAiB,CAAA,iBAAA,GAAa,KAAK,CAAC;QACnE,IAAgB,CAAA,gBAAA,GAAY,EAAE,CAAC;QAC/B,IAAc,CAAA,cAAA,GAAY,EAAE,CAAC;QACE,IAAW,CAAA,WAAA,GAAa,KAAK,CAAC;QAC9B,IAAW,CAAA,WAAA,GAAa,KAAK,CAAC;QAC9B,IAAqB,CAAA,qBAAA,GAAa,KAAK,CAAC;QACxC,IAAyB,CAAA,yBAAA,GAAa,KAAK,CAAC;QAC5C,IAAuB,CAAA,uBAAA,GAAa,KAAK,CAAC;QAC1C,IAAkB,CAAA,kBAAA,GAAa,KAAK,CAAC;QACrC,IAAmB,CAAA,mBAAA,GAAa,KAAK,CAAC;QACtC,IAAmB,CAAA,mBAAA,GAAa,KAAK,CAAC;QACtC,IAAqB,CAAA,qBAAA,GAAa,KAAK,CAAC;QACxC,IAAgB,CAAA,gBAAA,GAAa,KAAK,CAAC;QACnC,IAAmB,CAAA,mBAAA,GAAa,KAAK,CAAC;QACtC,IAAuB,CAAA,uBAAA,GAAa,KAAK,CAAC;QAC1C,IAAY,CAAA,YAAA,GAAa,KAAK,CAAC;QAC/B,IAAc,CAAA,cAAA,GAAa,KAAK,CAAC;QACjC,IAAkB,CAAA,kBAAA,GAAa,IAAI,CAAC;QACpC,IAAyB,CAAA,yBAAA,GAAa,IAAI,CAAC;QAC3C,IAAqB,CAAA,qBAAA,GAAa,IAAI,CAAC;QACvC,IAAa,CAAA,aAAA,GAAa,IAAI,CAAC;QAC/B,IAAgB,CAAA,gBAAA,GAAa,IAAI,CAAC;QAClC,IAAsB,CAAA,sBAAA,GAAa,IAAI,CAAC;QACxC,IAAgB,CAAA,gBAAA,GAAa,IAAI,CAAC;QAClC,IAAkB,CAAA,kBAAA,GAAa,IAAI,CAAC;QACpC,IAAoB,CAAA,oBAAA,GAAa,IAAI,CAAC;QACtC,IAAe,CAAA,eAAA,GAAa,IAAI,CAAC;QACjC,IAAkB,CAAA,kBAAA,GAAa,IAAI,CAAC;QACpC,IAAsB,CAAA,sBAAA,GAAa,IAAI,CAAC;QACxC,IAAW,CAAA,WAAA,GAAa,IAAI,CAAC;QAC7B,IAAa,CAAA,aAAA,GAAa,IAAI,CAAC;QAC/B,IAA+B,CAAA,+BAAA,GAAa,IAAI,CAAC;QACjD,IAAkB,CAAA,kBAAA,GAAa,IAAI,CAAC;QACpC,IAAkB,CAAA,kBAAA,GAAa,KAAK,CAAC;QACpE,IAAY,CAAA,YAAA,GAAc,EAAE,CAAC;QAC7B,IAAS,CAAA,SAAA,GAAc,EAAE,CAAC;QAC1B,IAAc,CAAA,cAAA,GAAc,EAAE,CAAC;AAE9B,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAoC,CAAC;AAC9E,QAAA,IAAA,CAAA,6BAA6B,GAAG,IAAI,YAAY,EAAQ,CAAC;AAmHnE,QAAA,IAAA,CAAA,WAAW,GAAgB,EAAE,MAAM,EAAC,aAAa,EAAE,EAAE,EAAC,wBAAwB,EAAC,IAAI,EAAC,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,2BAA2B,EAAE,cAAc,EAAE,2BAA2B,EAAC,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC,CAAC;QAExR,IAAW,CAAA,WAAA,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,CAAC;AAGnF,QAAA,IAAA,CAAA,QAAQ,GAAmB;AACzB,YAAA,EAAE,MAAM,EAAC,gBAAgB,EAAE,EAAE,EAAE,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAC,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,2BAA2B,EAAE,cAAc,EAAE,2BAA2B,EAAE,aAAa,EAAC,4BAA4B,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;AAClS,YAAA,EAAE,MAAM,EAAC,QAAQ,EAAE,EAAE,EAAE,cAAc,CAAC,iBAAiB,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAC,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;AAClO,YAAA,EAAE,MAAM,EAAC,WAAW,EAAE,EAAE,EAAE,cAAc,CAAC,oBAAoB,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAC,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;AACnO,YAAA,EAAE,MAAM,EAAC,iBAAiB,EAAE,EAAE,EAAE,cAAc,CAAC,2BAA2B,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAC,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;AAC7P,YAAA,EAAE,MAAM,EAAC,WAAW,EAAE,EAAE,EAAE,cAAc,CAAC,oBAAoB,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAC,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;AAC3O,YAAA,EAAE,MAAM,EAAC,EAAE,EAAC,EAAE,EAAE,cAAc,CAAC,0BAA0B,EAAE,IAAI,EAAC,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,EAAC,cAAc,EAAC,EAAE,EAAC,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;AAE3N,YAAA,EAAE,MAAM,EAAC,aAAa,EAAE,EAAE,EAAE,cAAc,CAAC,qBAAqB,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,2BAA2B,EAAE,cAAc,EAAE,2BAA2B,EAAE,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,yBAAyB,EAAC;AACvS,YAAA,EAAE,MAAM,EAAC,aAAa,EAAE,EAAE,EAAE,cAAc,CAAC,uBAAuB,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,yBAAyB,EAAC;AACjR,YAAA,EAAE,MAAM,EAAC,UAAU,EAAE,EAAE,EAAE,cAAc,CAAC,mBAAmB,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAG,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAC;AAChQ,YAAA,EAAE,MAAM,EAAC,eAAe,EAAE,EAAE,EAAE,cAAc,CAAC,4BAA4B,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAG,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAC;AAE5R,YAAA,EAAE,MAAM,EAAC,EAAE,EAAC,EAAE,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,EAAC,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,EAAC,cAAc,EAAC,EAAE,EAAC,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;AAE5M,YAAA,EAAE,MAAM,EAAC,aAAa,EAAE,EAAE,EAAE,cAAc,CAAC,0BAA0B,EAAE,IAAI,EAAC,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,2BAA2B,EAAE,cAAc,EAAE,2BAA2B,EAAE,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;AACtR,YAAA,EAAE,MAAM,EAAC,iBAAiB,EAAE,EAAE,EAAE,cAAc,CAAC,2BAA2B,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,yBAAyB,EAAE,cAAc,EAAE,yBAAyB,EAAE,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;SAC3R,CAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAmB;YAChC,EAAE,MAAM,EAAC,EAAE,EAAC,EAAE,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,EAAC,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAkB;AAC9J,YAAA,EAAE,MAAM,EAAC,QAAQ,EAAE,EAAE,EAAE,cAAc,CAAC,kBAAkB,EAAE,IAAI,EAAC,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAG,KAAK,EAAE,WAAW,EAAE,EAAE,EAAC;AACnO,YAAA;AACE,gBAAA,MAAM,EAAC,aAAa;gBACpB,EAAE,EAAE,cAAc,CAAC,wBAAwB;AAC3C,gBAAA,KAAK,EAAE,2BAA2B;AAClC,gBAAA,MAAM,EAAE,gBAAgB;AACxB,gBAAA,cAAc,EAAE,gBAAgB;AACjB,aAAA;AACjB,YAAA,EAAE,MAAM,EAAC,MAAM,EAAE,EAAE,EAAE,cAAc,CAAC,eAAe,EAAE,IAAI,EAAC,EAAE,EAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAC,aAAa,EAAC,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAC,cAAc,EAAG,KAAK,EAAC,WAAW,EAAE,EAAE,EAAC;SAC3N,CAAC;KA9MD;AA0DD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,CAAC;SACtE;KACF;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;AAGzG,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,cAAc,CAAC,mBAAmB,CAAC,CAAC;SACnF;;AAGD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,cAAc,CAAC,0BAA0B,CAAC,CAAC;SAC1F;;AAGD,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,cAAc,CAAC,2BAA2B,CAAC,CAAC;SAC3F;;AAGD,QAAA,IAAG,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAChC,EAAE,KAAK,cAAc,CAAC,2BAA2B;AACjD,gBAAA,EAAE,KAAK,cAAc,CAAC,oBAAoB,CAC3C,CAAC;SACH;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,OAAO,QAAQ,CAAC;SACjB;;AAGD,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAC5B,EAAE,KAAK,cAAc,CAAC,0BAA0B;AAChD,YAAA,EAAE,KAAK,cAAc,CAAC,2BAA2B,CAClD,CAAC;KACH;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;;QAGxG,IAAI,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7C,YAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC;SAC/E;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,cAAc,CAAC,wBAAwB,CAAC,CAAC;SACtF;;AAGD,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,cAAc,CAAC,WAAW,CAAC,CAAC;KACzE;AAED;;AAE4E;AAC5E,IAAA,aAAa,CAAC,IAAiB,EAAA;AAE7B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,YAAY,CAAC;YACvC,OAAO,CAAC,EAAG,IAAsD,CAAC,GAAG,CAAC,CAAC,CAAC;SACzE;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACD;;AAE4E;AAC5E,IAAA,YAAY,CAAC,IAAiB,EAAA;AAE5B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,yBAAyB,EAAE;AAClD,YAAA,OAAO,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC;SAChC;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAE4E;AAC5E,IAAA,SAAS,CAAC,IAAiB,EAAA;QAEzB,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC;AAC5D,YAAA,OAAO,EAAG,IAAsD,CAAC,GAAG,CAAC,CAAC,CAAC;SACxE;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAE4E;AAC5E,IAAA,WAAW,CAAC,IAAiB,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,UAAU,CAAC;QACrC,OAAO,CAAC,EAAG,IAAsD,CAAC,GAAG,CAAC,CAAC,CAAC;KACzE;IAED,eAAe,CAAC,IAAkB,EAAE,MAAe,EAAE,QAAiB,EAAE,SAAkB,EAAE,QAAiB,EAAA;QAC3G,OAAO;AACL,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;SAClD,CAAC;KACH;IAuCD,eAAe,GAAA;AACb,QAAA,SAAS,CAAC,IAAI,EAAE,+BAA+B,CAAC,CAAC;KAClD;AAED,IAAA,oBAAoB,CAAC,IAAkB,EAAC,IAAW,EAAC,KAAwB,EAAA;QAC1E,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;AAED,QAAA,IAAG,IAAI,IAAI,MAAM,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC;gBACzB,OAAO;aACR;SACF;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,SAAS,CAAC,IAAI,EAAC,wBAAwB,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAE,CAAE,CAAC;KAChE;+GArOU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAKf,gBAAgB,CAChB,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,gBAAgB,yCAChB,gBAAgB,CAAA,EAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAChB,gBAAgB,CAChB,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,gBAAgB,0EAChB,gBAAgB,CAAA,EAAA,uBAAA,EAAA,CAAA,yBAAA,EAAA,yBAAA,EAChB,gBAAgB,CAKhB,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,gBAAgB,wDAChB,gBAAgB,CAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAChB,gBAAgB,CAAA,EAAA,uBAAA,EAAA,CAAA,yBAAA,EAAA,yBAAA,EAChB,gBAAgB,CAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAChB,gBAAgB,CAGhB,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAgB,+CAChB,gBAAgB,CAAA,EAAA,qBAAA,EAAA,CAAA,uBAAA,EAAA,uBAAA,EAChB,gBAAgB,CAChB,EAAA,yBAAA,EAAA,CAAA,2BAAA,EAAA,2BAAA,EAAA,gBAAgB,mFAChB,gBAAgB,CAAA,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAChB,gBAAgB,CAChB,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAAA,gBAAgB,uEAChB,gBAAgB,CAAA,EAAA,qBAAA,EAAA,CAAA,uBAAA,EAAA,uBAAA,EAChB,gBAAgB,CAChB,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAgB,CAChB,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAAA,gBAAgB,CAChB,EAAA,uBAAA,EAAA,CAAA,yBAAA,EAAA,yBAAA,EAAA,gBAAgB,kDAChB,gBAAgB,CAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAChB,gBAAgB,CAChB,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,gBAAgB,yFAChB,gBAAgB,CAAA,EAAA,qBAAA,EAAA,CAAA,uBAAA,EAAA,uBAAA,EAChB,gBAAgB,CAChB,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,gBAAgB,8DAChB,gBAAgB,CAAA,EAAA,sBAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAChB,gBAAgB,CAChB,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAgB,oEAChB,gBAAgB,CAAA,EAAA,oBAAA,EAAA,CAAA,sBAAA,EAAA,sBAAA,EAChB,gBAAgB,CAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAChB,gBAAgB,CAAA,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAChB,gBAAgB,CAChB,EAAA,sBAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,gBAAgB,+CAChB,gBAAgB,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAChB,gBAAgB,CAChB,EAAA,+BAAA,EAAA,CAAA,iCAAA,EAAA,iCAAA,EAAA,gBAAgB,CAChB,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,gBAAgB,CAChB,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,gBAAgB,uOA3DzB,CAAC,gBAAgB,CAAC,ECpC/B,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2vIAoFA,kt6EDjDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAC,2BAA2B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAOxD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cACrB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAC,2BAA2B,CAAC,aACzD,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,2vIAAA,EAAA,MAAA,EAAA,CAAA,2p6EAAA,CAAA,EAAA,CAAA;qFAQF,UAAU,EAAA,CAAA;sBAAjD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,SAAS,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,KAAK,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,oBAAoB,EAAA,CAAA;sBAA3D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,uBAAuB,EAAA,CAAA;sBAA9D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC7B,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACkC,sBAAsB,EAAA,CAAA;sBAA7D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,cAAc,EAAA,CAAA;sBAArD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,iBAAiB,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,uBAAuB,EAAA,CAAA;sBAA9D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,iBAAiB,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC7B,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACkC,WAAW,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,WAAW,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,qBAAqB,EAAA,CAAA;sBAA5D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,yBAAyB,EAAA,CAAA;sBAAhE,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,uBAAuB,EAAA,CAAA;sBAA9D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,kBAAkB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,mBAAmB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,mBAAmB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,qBAAqB,EAAA,CAAA;sBAA5D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,mBAAmB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,uBAAuB,EAAA,CAAA;sBAA9D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,YAAY,EAAA,CAAA;sBAAnD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,cAAc,EAAA,CAAA;sBAArD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,kBAAkB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,yBAAyB,EAAA,CAAA;sBAAhE,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,qBAAqB,EAAA,CAAA;sBAA5D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,sBAAsB,EAAA,CAAA;sBAA7D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,kBAAkB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,oBAAoB,EAAA,CAAA;sBAA3D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,eAAe,EAAA,CAAA;sBAAtD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,kBAAkB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,sBAAsB,EAAA,CAAA;sBAA7D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,WAAW,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,+BAA+B,EAAA,CAAA;sBAAtE,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,kBAAkB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,kBAAkB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC7B,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEI,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBACG,6BAA6B,EAAA,CAAA;sBAAtC,MAAM;;;IErGG,UAMX;AAND,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,SAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC,CAAA;AACrC,IAAA,SAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;IACjC,SAA2C,CAAA,qBAAA,CAAA,GAAA,qBAAA,CAAA;AAC7C,CAAC,EANW,SAAS,KAAT,SAAS,GAMpB,EAAA,CAAA,CAAA;;MCQY,sBAAsB,CAAA;AARnC,IAAA,WAAA,GAAA;QASW,IAAW,CAAA,WAAA,GAAY,EAAE,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAY,EAAE,CAAC;QACQ,IAAK,CAAA,KAAA,GAAa,KAAK,CAAC;QACxB,IAAO,CAAA,OAAA,GAAa,KAAK,CAAC;QACzD,IAAc,CAAA,cAAA,GAAY,EAAE,CAAC;QACE,IAAmB,CAAA,mBAAA,GAAa,KAAK,CAAC;QACtC,IAAmB,CAAA,mBAAA,GAAa,KAAK,CAAC;;AAEtE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAY,SAAS,CAAC,aAAa,CAAC,CAAC;AAa7C,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;;QAExB,IAAsB,CAAA,sBAAA,GAAa,KAAK,CAAC;QACzC,IAAkB,CAAA,kBAAA,GAAa,KAAK,CAAC;QACrC,IAAmB,CAAA,mBAAA,GAAa,IAAI,CAAC;QACrC,IAAO,CAAA,OAAA,GAAa,KAAK,CAAC;QAC1B,IAAyB,CAAA,yBAAA,GAAY,IAAI,CAAC;QACzE,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;AAChC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAU,CAAC;;QAGrD,IAAS,CAAA,SAAA,GAAG,SAAS,CAAC;AAEV,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAY,MAAK;AAC5D,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;gBAC9B,OAAO,SAAS,CAAC,gBAAgB,CAAC;aACnC;AAED,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;AAoBJ,KAAA;;IAlDC,IAAa,SAAS,CAAC,QAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC/B;;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;KAC1B;;IAED,IAA0E,wBAAwB,CAAC,KAAc,EAAA;AAC/G,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACrC;IAsBD,YAAY,GAAA;AACV,QAAA,IAAK,IAAI,CAAC,mBAAmB,EAAG;AAC9B,YAAA,SAAS,CAAC,IAAI,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;SACjD;KACF;IAED,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,SAAS,CAAC,aAAa,EAAE;;AAEtD,YAAA,SAAS,CAAC,IAAI,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;SACjD;KACF;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAK,IAAI,CAAC,KAAK,EAAG;AAChB,YAAA,SAAS,CAAC,IAAI,EAAE,sBAAsB,EAAE,SAAS,CAAC,CAAC;SACpD;KACF;+GA5DU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAGb,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAChB,gBAAgB,CAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAEhB,gBAAgB,CAChB,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAAA,gBAAgB,CAYc,EAAA,SAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,CAAA,qBAAA,EAAA,0BAAA,EAAA,gBAAgB,CAK9C,EAAA,sBAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,gBAAgB,oEAChB,gBAAgB,CAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAChB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAChB,gBAAgB,CAAA,EAAA,yBAAA,EAAA,CAAA,2BAAA,EAAA,2BAAA,EAChB,gBAAgB,CAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CtC,k+DAmDA,EAAA,MAAA,EAAA,CAAA,08xBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1CY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAK5B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,aAAA,EAGzB,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,k+DAAA,EAAA,MAAA,EAAA,CAAA,08xBAAA,CAAA,EAAA,CAAA;8BAGjC,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACkC,KAAK,EAAA,CAAA;sBAA5C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC7B,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACkC,mBAAmB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,mBAAmB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAIzB,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAQoE,wBAAwB,EAAA,CAAA;sBAAjG,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAK5B,sBAAsB,EAAA,CAAA;sBAA7D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,kBAAkB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,mBAAmB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,yBAAyB,EAAA,CAAA;sBAAhE,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC7B,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACI,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;;;AE1BT,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAyBpD,MAAO,sBAAuB,SAAQ,+BAA+B,CAAA;AACzE,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC5C,KAAK,CAAC,gBAAgB,CAAC,CAAA;;QAGzB,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAYd;;AAE4E;QAC5E,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAEnC;;AAE4E;AACnE,QAAA,IAAA,CAAA,kBAAkB,GAAY,IAAI,CAAC;AAE5C;;AAE4E;QACpC,IAAkB,CAAA,kBAAA,GAAa,IAAI,CAAC;AAE5E;;AAE4E;QACnE,IAAoB,CAAA,oBAAA,GAAY,CAAC,CAAC;AAE3C;;AAE4E;QACnE,IAAsB,CAAA,sBAAA,GAAY,OAAO,CAAC;AAEnD;;AAE4E;QACnE,IAAQ,CAAA,QAAA,GAAY,EAAE,CAAC;AA8ChC;;AAE4E;QAC5E,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAgB,CAAA,gBAAA,GAAmB,EAAE,CAAC;;QAEtC,IAAoB,CAAA,oBAAA,GAAmB,EAAE,CAAC;AAG1C;;AAE4E;AAClE,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAU,CAAC;AAElE;;AAE4E;AAClE,QAAA,IAAA,CAAA,8BAA8B,GAAG,IAAI,YAAY,EAAU,CAAC;AAEtE;;AAE4E;AAClE,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAU,CAAC;KA/GjE;AAID,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC;KACb;AAgCD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC;AAClD,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SAC/B;KACF;IAED,cAAc,CAAC,QAAgB,yBAAuB;QACpD,MAAM,IAAI,GAAG,QAAQ,IAAK,OAAO,QAAQ,KAAK,QAAQ,CAAC;QACvD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,OAAO;SACR;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAGtC,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAE,CAAC,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAE,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAE,GAAG,CAAC,CAAE,CAAC;AACpI,QAAA,eAAe,GAAG,eAAe,CAAC,MAAM,CAAE,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;;QAGnF,eAAe,CAAC,OAAO,EAAE,CAAC,OAAO,CAAE,CAAC,MAAM,KAAI;YAC5C,IAAK,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAE,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAE,GAAG,CAAC,EAAC;AAC9E,gBAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAE1C,gBAAA,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAG;oBAChC,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,qBAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;iBAC7B;aACF;AACH,SAAC,CAAC,CAAA;;AAGF,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;;AAG/J,QAAA,IAAI,CAAC,gBAAgB,GAAI,IAAI,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,CAAC;KACpD;AA2BD;;AAE4E;IAC5E,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpC;AAED;;AAE4E;AAC5E,IAAA,aAAa,CAAE,IAAkB,EAAE,OAAgB,EAAE,KAAwB,EAAA;QAC3E,IAAI,OAAO,EAAE;YACX,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3C;QAED,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;AAED,QAAA,SAAS,CAAC,IAAI,EAAE,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;AAED;;AAE4E;AAC5E,IAAA,oBAAoB,CAAE,KAAyB,EAAE,YAAY,GAAG,IAAI,EAAA;QAClE,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,KAAK,CAAE,CAAC;AAC1F,QAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,IAAK,YAAY,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3D,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;KACF;AAED;;AAE4E;IAC5E,kBAAkB,GAAA;AAChB,QAAA,SAAS,CAAC,IAAI,EAAE,gCAAgC,CAAC,CAAC;QAClD,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;AAED;;AAE4E;IAC5E,cAAc,CAAE,IAAkB,EAAE,KAAa,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,SAAS,CAAC,IAAI,EAAE,4BAA4B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;AAED;;AAE4E;IAC5E,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;KAChC;AAED,IAAA,kBAAkB,CAAC,OAAqB,EAAA;AACtC,QAAA,IAAG,CAAC,OAAO,EAAE,EAAE,EAAC;AACd,YAAA,OAAO,IAAI,CAAC;SACb;QACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC/E,IAAG,CAAC,iBAAiB,EAAC;AACpB,YAAA,OAAO,IAAI,CAAC;SACb;QACD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;KAChD;AAED,IAAA,mBAAmB,CAAC,WAAqB,EAAA;QACvC,IAAG,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,GAAE,CAAC,EAAC;YACvC,OAAO;SACR;QACD,IAAI,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC7E,IAAG,CAAC,iBAAiB,EAAC;YACpB,iBAAiB,GAAG,EAAE,CAAC;SACxB;AACD,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAY,KAAG;YAClC,IAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAC;AACpC,gBAAA,iBAAiB,KAAG,IAAI,GAAC,GAAG,CAAC,CAAC;aAC/B;AACH,SAAC,CAAC,CAAA;QACF,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAC,iBAAiB,CAAC,CAAC;KACxE;IAED,4BAA4B,GAAA;AAC1B,QAAA,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;KACzD;AAED;;AAE4E;IAC5E,iBAAiB,CAAE,IAAkB,EAAE,KAAa,EAAA;QAClD,IAAI,eAAe,GAA2B,EAAE,CAAC;AACjD,QAAA,IAAK,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;YAC/C,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxE;AACD,QAAA,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACrC;+GA3NU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EA8Bb,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,gBAAgB,CAnCxB,EAAA,oBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,gBAAgB,CAAC,ECtChC,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8vJAyHM,EDvFF,MAAA,EAAA,CAAA,qveAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,4FACf,mCAAmC,EAAA,QAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAO1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACZ,eAAe;wBACf,mCAAmC;AACpC,qBAAA,EAAA,SAAA,EACW,CAAC,gBAAgB,CAAC,EAGf,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8vJAAA,EAAA,MAAA,EAAA,CAAA,qveAAA,CAAA,EAAA,CAAA;qFAUjC,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,oBAAoB,CAAA;gBAM7B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,kBAAkB,CAAA;gBAatB,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBAKkC,kBAAkB,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAK7B,oBAAoB,EAAA,CAAA;sBAA5B,KAAK;gBAKG,sBAAsB,EAAA,CAAA;sBAA9B,KAAK;gBAKG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBA2DI,0BAA0B,EAAA,CAAA;sBAAnC,MAAM;gBAKG,8BAA8B,EAAA,CAAA;sBAAvC,MAAM;gBAKG,0BAA0B,EAAA,CAAA;sBAAnC,MAAM;;;MEvJI,YAAY,CAAA;AAEvB,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,OAAO,KAAK,GAAG,IAAI,CAAC;KACtB;+GAJW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCEY,mBAAmB,CAAA;AAJhC,IAAA,WAAA,GAAA;QAME,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;QACT,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAGpB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AAGtC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAc,CAAC;AA4C1C,KAAA;AAzCC,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACvC,OAAO;SACV;QAED,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAE3C,QAAA,IAAG,CAAC,IAAI,CAAC,UAAU,EAAC;YAClB,IAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAC;AACtB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACzB;iBAAI;gBACH,OAAO;aACR;SACF;AAED,QAAA,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AAEpC,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;KAC3B;IAGD,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAGD,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;KAC3B;AAGD,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAG,CAAC,IAAI,CAAC,WAAW,EAAC;AACnB,YAAA,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;SACnC;KACF;+GArDU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BASC,QAAQ,EAAA,CAAA;sBADP,MAAM;gBAIP,OAAO,EAAA,CAAA;sBADN,MAAM;gBAIP,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAuB9C,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAO5C,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAQrC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC7B7B,MAAO,uBAAwB,SAAQ,+BAA+B,CAAA;AAC1E,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC5C,KAAK,CAAC,gBAAgB,CAAC,CAAC;;AAIjB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,GAAG,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAE7B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;AAC3C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;AAUlC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAgB,EAAE,CAAC,CAAC;AAMlC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAgB,EAAE,CAAC,CAAC;AAMxC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;KA/BhE;;;IAaD,IAA+B,UAAU,CAAC,KAAyB,EAAA;AACjE,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,QAAA,IAAG,KAAK,CAAC,MAAM,EAAC;YACd,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACjC;KACF;;IAID,IAAqC,gBAAgB,CAAC,KAAyB,EAAA;AAC7E,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC7B;;IAID,IAAoC,eAAe,CAAC,KAAyB,EAAA;AAC3E,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC5B;;;AAKD,IAAA,aAAa,CAAC,IAAa,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;QACvD,IAAG,CAAC,SAAS,EAAC;YACZ,OAAO;SACR;AAED,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAC;YACxB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;AACD,QAAA,SAAS,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;KAC5C;AAED,IAAA,YAAY,CAAC,IAAa,EAAA;AACxB,QAAA,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;KACxC;AAED,IAAA,YAAY,CAAC,IAAa,EAAA;AACxB,QAAA,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;KACxC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED,IAAA,cAAc,CAAC,KAAc,EAAA;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;KACpD;+GAlEU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EALvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,eAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA,CAAC,gBAAgB,CAAC,ECrB/B,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,61HAgGA,ED5EY,MAAA,EAAA,CAAA,urFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,YAAY,EAAE,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,0FAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAM/D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,CAAC,aAChE,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,61HAAA,EAAA,MAAA,EAAA,CAAA,urFAAA,CAAA,EAAA,CAAA;qFAYhC,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAIwB,UAAU,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBASY,gBAAgB,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAMK,eAAe,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;;;AE1C1B,MAAO,2BAA4B,SAAQ,+BAA+B,CAAA;AAC9E,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC5C,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAUN,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAGzC,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,YAAY,EAAU,CAAC;KAZhE;AACD;;AAE4E;;;IAG5E,IAAqC,gBAAgB,CAAC,KAAa,EAAA;AACjE,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC7B;AAMD;;AAE4E;AAC5E,IAAA,YAAY,CAAE,MAAc,EAAA;AAC1B,QAAA,SAAS,CAAC,IAAI,EAAE,2BAA2B,EAAE,MAAM,CAAC,CAAC;KACtD;+GAtBU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,SAAA,EAL1B,CAAC,gBAAgB,CAAC,iDCVhC,o1BAuBM,EAAA,MAAA,EAAA,CAAA,oxCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAM5B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EACxB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,SAAA,EAC5B,CAAC,gBAAgB,CAAC,EAGf,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,o1BAAA,EAAA,MAAA,EAAA,CAAA,oxCAAA,CAAA,EAAA,CAAA;qFAWL,gBAAgB,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBAMrB,yBAAyB,EAAA,CAAA;sBAAlC,MAAM;;;AE5BT,MAAM,OAAO,GAAY,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;AACzC,MAAM,GAAG,GAAY,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;MAGpB,YAAY,CAAA;;AAGvB;;;;;AAKG;AACH,IAAA,OAAO,UAAU,CAAC,MAAuB,EAAE,CAAS,EAAE,KAAa,EAAA;QACjE,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,EAAE,IAAI,OAAO,CAAC;AAEvC,QAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;KAC/E;AAED;;;;;;;;;;;;AAYG;AACH,IAAA,OAAO,GAAG,CAAC,MAAuB,EAAE,MAAc,EAAE,KAAa,EAAE,GAAW,EAAE,KAAa,EAAE,MAAc,EAAE,WAAmB,EAAA;AAEhI,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;QAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;QAC5C,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAErC,IAAI,GAAG,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE;YACzE,MAAM,GAAG,aAAa,GAAG,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;SACjD;;AAGD,QAAA,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAChC,QAAA,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;;AAGpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAC3D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;AAEvD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACvD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AAEnD,QAAA,MAAM,QAAQ,GAAG,GAAG,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;AACjD,QAAA,MAAM,QAAQ,GAAG,GAAG,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;;AAGjD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;AACpE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC;AAEhE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;AACpE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC;AAEhE,QAAA,MAAM,SAAS,GAAG,aAAa,GAAG,GAAG,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D,QAAA,MAAM,SAAS,GAAG,aAAa,GAAG,GAAG,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAmB,IAAI,KAAK;;QAEtC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE;;QAE/E,GAAG,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE;;QAE1K,GAAG,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE;;QAEvM,GAAG,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE;;QAEhK,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE;;QAE3E,GAAG,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE;;QAEtK,GAAG,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE;;QAE3M,GAAG,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG;SAC1K,CAAC;AAEF,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzB;AAED;;;;AAII;IACJ,OAAO,eAAe,CAAC,SAAiB,EAAE,cAAsB,EAAE,aAAqB,EAAE,YAAqB,EAAA;AAE5G,QAAA,MAAM,MAAM,GAAG,YAAY,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,GAAG,SAAS,GAAG,EAAE,CAAC;AACpE,QAAA,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,EAAE,GAAG,cAAc,GAAG,EAAE,CAAC;AACnF,QAAA,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;;AAEzB,QAAA,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC;AACjD,QAAA,MAAM,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;AAC3D,QAAA,MAAM,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;AAC3D,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;AAC5D,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;QAG5D,OAAO;YACL,MAAM,EAAE,MAAM,GAAG,KAAK;YACtB,WAAW,EAAE,WAAW,GAAG,KAAK;AAChC,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,CAAC,MAAM,GAAG,WAAW,IAAI,KAAK;AACrC,YAAA,cAAc,EAAE,CAAC,MAAM,GAAG,WAAW,IAAI,KAAK;YAC9C,KAAK,EAAE,KAAK,GAAG,KAAK;YACpB,KAAK,EAAE,KAAK,GAAG,KAAK;YACpB,MAAM,EAAE,MAAM,GAAG,KAAK;YACtB,MAAM,EAAE,MAAM,GAAG,KAAK;SACvB,CAAC;KACH;IAGD,OAAO,qBAAqB,CAAC,QAAgC,EAAA;QAC3D,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,GAAG,CACrB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAChF,QAAQ,CAAC,aAAa,GAAG,UAAU,EACnC,QAAQ,CAAC,iBAAiB,EAC1B,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,YAAY,EACrB,CAAC,EACD,GAAG,CACJ,CAAC;KACH;IAED,OAAO,2BAA2B,CAAC,QAAgC,EAAA;QACjE,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,GAAG,CACrB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAChF,CAAC,QAAQ,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,EACzC,QAAQ,CAAC,iBAAiB,GAAG,GAAG,EAChC,QAAQ,CAAC,eAAe,GAAI,GAAG,EAC/B,QAAQ,CAAC,YAAY,GAAG,CAAC,EACzB,CAAC,EACD,GAAG,CACJ,CAAC;KACH;IAED,OAAO,6BAA6B,CAAC,QAAgC,EAAA;QACnE,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,GAAG,CACrB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAClF,CAAC,QAAQ,CAAC,cAAc,IAAI,UAAU,EACtC,QAAQ,CAAC,kBAAkB,EAC3B,QAAQ,CAAC,gBAAgB,EACzB,QAAQ,CAAC,aAAa,EACtB,CAAC,EACD,GAAG,CAAC,CAAC;KACR;IAED,OAAO,aAAa,CAAC,KAAwB,EAAA;QAC3C,OAAO,CAAA,IAAA,EAAO,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;KAC5C;IAED,OAAO,oBAAoB,CAAC,KAAwB,EAAA;AAClD,QAAA,OAAO,OAAO,KAAK,CAAC,MAAM,CAAM,GAAA,EAAA,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,KAAK,CAAI,CAAA,EAAA,KAAK,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,CAAC,KAAK,CAAI,CAAA,EAAA,KAAK,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAY,SAAA,EAAA,KAAK,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,CAAC,KAAK,CAAI,CAAA,EAAA,KAAK,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAU,OAAA,EAAA,KAAK,CAAC,cAAc,CAAA,CAAA,EAAI,KAAK,CAAC,MAAM,MAAM,KAAK,CAAC,cAAc,CAAI,CAAA,EAAA,KAAK,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAU,OAAA,EAAA,KAAK,CAAC,KAAK,CAAA,CAAA,EAAI,KAAK,CAAC,MAAM,IAAI,CAAC;KACxb;IAED,OAAO,wBAAwB,CAAC,KAAwB,EAAA;QACtD,OAAO,CAAA,EAAA,EAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,CAAC,KAAK,CAAI,CAAA,EAAA,KAAK,CAAC,KAAK,CAAA,GAAA,EAAM,KAAK,CAAC,MAAM,CAAI,CAAA,EAAA,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,MAAM,CAAI,CAAA,EAAA,KAAK,CAAC,MAAM,CAAA,GAAA,EAAM,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,MAAM,CAAM,GAAA,EAAA,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA,EAAA,CAAI,CAAC;KAC1N;IAED,OAAO,2BAA2B,CAAC,YAA+B,EAAA;QAChE,OAAO,CAAA,EAAA,EAAK,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAA,GAAA,EAAM,YAAY,CAAC,KAAK,CAAI,CAAA,EAAA,YAAY,CAAC,KAAK,CAAA,GAAA,EAAM,YAAY,CAAC,MAAM,CAAI,CAAA,EAAA,YAAY,CAAC,MAAM,UAAU,YAAY,CAAC,MAAM,CAAI,CAAA,EAAA,YAAY,CAAC,MAAM,CAAA,GAAA,EAAM,YAAY,CAAC,MAAM,CAAA,CAAA,EAAI,YAAY,CAAC,MAAM,CAAM,GAAA,EAAA,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAA,EAAA,CAAI,CAAC;KAC9S;AAEF;;MCvKY,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;QASE,IAAI,CAAA,IAAA,GAAwB,IAAI,CAAC;QAIjC,IAAM,CAAA,MAAA,GAAa,KAAK,CAAC;QAIzB,IAAS,CAAA,SAAA,GAAa,IAAI,CAAC;QAEa,IAAqB,CAAA,qBAAA,GAAY,IAAI,CAAC;AAC/E,KAAA;+GAbY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVjC,iSAOM,EAAA,MAAA,EAAA,CAAA,s4qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDM,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EACjB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,iSAAA,EAAA,MAAA,EAAA,CAAA,s4qCAAA,CAAA,EAAA,CAAA;8BAMvB,IAAI,EAAA,CAAA;sBADH,KAAK;gBAKN,MAAM,EAAA,CAAA;sBAFL,WAAW;uBAAC,cAAc,CAAA;;sBAC1B,KAAK;gBAKN,SAAS,EAAA,CAAA;sBAFR,WAAW;uBAAC,eAAe,CAAA;;sBAC3B,KAAK;gBAGkC,qBAAqB,EAAA,CAAA;sBAA5D,WAAW;uBAAC,yBAAyB,CAAA;;;MEZ3B,uBAAuB,CAAA;AAPpC,IAAA,WAAA,GAAA;QAQW,IAAI,CAAA,IAAA,GAA2B,IAAI,CAAC;QAI7C,IAAM,CAAA,MAAA,GAAa,KAAK,CAAC;QAIzB,IAAS,CAAA,SAAA,GAAa,IAAI,CAAC;QAEa,IAAqB,CAAA,qBAAA,GAAY,IAAI,CAAC;QACjC,IAAwB,CAAA,wBAAA,GAAY,IAAI,CAAC;AACvF,KAAA;+GAbY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVpC,ySAYA,EAAA,MAAA,EAAA,CAAA,s4qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIX,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EACrB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,ySAAA,EAAA,MAAA,EAAA,CAAA,s4qCAAA,CAAA,EAAA,CAAA;8BAKd,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAIN,MAAM,EAAA,CAAA;sBAFL,WAAW;uBAAC,cAAc,CAAA;;sBAC1B,KAAK;gBAKN,SAAS,EAAA,CAAA;sBAFR,WAAW;uBAAC,eAAe,CAAA;;sBAC3B,KAAK;gBAGkC,qBAAqB,EAAA,CAAA;sBAA5D,WAAW;uBAAC,yBAAyB,CAAA;gBACO,wBAAwB,EAAA,CAAA;sBAApE,WAAW;uBAAC,8BAA8B,CAAA;;;AEV7C;AAEA,SAAS,2BAA2B,GAAA;AAClC,IAAA,MAAM,QAAQ,GAA0B;AACtC,QAAA,iBAAiB,EAAE,EAAE;AACrB,QAAA,eAAe,EAAE,GAAG;AACpB,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;AAC5B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,YAAY,EAAE,EAAE;AAChB,QAAA,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACxB,QAAA,aAAa,EAAE,GAAG;AAClB,QAAA,cAAc,EAAE,EAAE;AAClB,QAAA,kBAAkB,EAAE,EAAE;AACtB,QAAA,gBAAgB,EAAE,GAAG;KACtB,CAAA;AACD,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,SAAS,kBAAkB,GAAA;AACzB,IAAA,MAAM,KAAK,GAAuB;;AAEhC,QAAA;AACE,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,IAAI,EAAE,mCAAmC;AACzC,YAAA,OAAO,EAAE,mCAAmC;AAC5C,YAAA,eAAe,EAAE,mCAAmC;AACrD,SAAA;;AAGD,QAAA;AACE,YAAA,QAAQ,EAAE,sBAAsB;AAChC,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,IAAI,EAAE,wCAAwC;AAC9C,YAAA,OAAO,EAAE,wCAAwC;AACjD,YAAA,eAAe,EAAE,wCAAwC;AAC1D,SAAA;;AAGD,QAAA;AACE,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE,gBAAgB;AAC3B,YAAA,IAAI,EAAE,8BAA8B;AACpC,YAAA,OAAO,EAAE,8BAA8B;AACvC,YAAA,eAAe,EAAE,8BAA8B;AAChD,SAAA;;AAGD,QAAA;AACE,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE,iBAAiB;AAC5B,YAAA,IAAI,EAAE,iCAAiC;AACvC,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,eAAe,EAAE,iCAAiC;AACnD,SAAA;;AAGD,QAAA;AACE,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,IAAI,EAAE,mCAAmC;AACzC,YAAA,OAAO,EAAE,mCAAmC;AAC5C,YAAA,eAAe,EAAE,mCAAmC;AACrD,SAAA;;AAGD,QAAA;AACE,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,IAAI,EAAE,sCAAsC;AAC5C,YAAA,OAAO,EAAE,sCAAsC;AAC/C,YAAA,eAAe,EAAE,sCAAsC;AACxD,SAAA;;AAGD,QAAA;AACE,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,SAAS,EAAE,wBAAwB;AACnC,YAAA,IAAI,EAAE,qCAAqC;AAC3C,YAAA,OAAO,EAAE,qCAAqC;AAC9C,YAAA,eAAe,EAAE,qCAAqC;AACvD,SAAA;;AAGD,QAAA;AACE,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,IAAI,EAAE,sCAAsC;AAC5C,YAAA,OAAO,EAAE,sCAAsC;AAC/C,YAAA,eAAe,EAAE,sCAAsC;AACxD,SAAA;;AAED,QAAA;AACE,YAAA,QAAQ,EAAE,uBAAuB;AACjC,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,IAAI,EAAE,wCAAwC;AAC9C,YAAA,OAAO,EAAE,wCAAwC;AACjD,YAAA,eAAe,EAAE,wCAAwC;AAC1D,SAAA;;AAGD,QAAA;AACE,YAAA,SAAS,EAAE,mBAAmB;AAC9B,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,IAAI,EAAE,qCAAqC;AAC3C,YAAA,OAAO,EAAE,qCAAqC;AAC9C,YAAA,eAAe,EAAE,qCAAqC;AACvD,SAAA;;AAED,QAAA;AACE,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,SAAS,EAAE,kBAAkB;AAC7B,YAAA,IAAI,EAAE,kCAAkC;AACxC,YAAA,OAAO,EAAE,kCAAkC;AAC3C,YAAA,eAAe,EAAE,kCAAkC;AACnD,YAAA,SAAS,EAAE,kBAAkB;AAC7B,YAAA,QAAQ,EAAE;AACR,gBAAA;AACE,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,SAAS,EAAE,oBAAoB;AAC/B,oBAAA,IAAI,EAAE,iCAAiC;AACvC,oBAAA,OAAO,EAAE,iCAAiC;AAC1C,oBAAA,eAAe,EAAE,iCAAiC;AAClD,oBAAA,WAAW,EAAE,0BAA0B;AACxC,iBAAA;;AAGD,gBAAA;AACE,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,SAAS,EAAE,kBAAkB;AAC7B,oBAAA,IAAI,EAAE,+BAA+B;AACrC,oBAAA,OAAO,EAAE,+BAA+B;AACxC,oBAAA,eAAe,EAAE,+BAA+B;AAChD,oBAAA,WAAW,EAAE,wBAAwB;AACtC,iBAAA;;AAED,gBAAA;AACE,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE,mBAAmB;AAC9B,oBAAA,IAAI,EAAE,gCAAgC;AACtC,oBAAA,OAAO,EAAE,gCAAgC;AACzC,oBAAA,eAAe,EAAE,gCAAgC;AACjD,oBAAA,WAAW,EAAE,yBAAyB;AACvC,iBAAA;;AAED,gBAAA;AACE,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,SAAS,EAAE,0BAA0B;AACrC,oBAAA,IAAI,EAAE,uCAAuC;AAC7C,oBAAA,OAAO,EAAE,uCAAuC;AAChD,oBAAA,eAAe,EAAE,uCAAuC;AACxD,oBAAA,WAAW,EAAE,gCAAgC;AAC9C,iBAAA;AACF,aAAA;AACF,SAAA;KACF,CAAA;;IAGD,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG,EAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA,EAAE,CAAC,CAAA;AAEpE,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,oBAAoB,GAAI,GAAG,CAAC;AAgB5B,MAAO,uBAAwB,SAAQ,+BAA+B,CAAA;AAC1E,IAAA,WAAA,CAAY,gBAAkC,EAC1B,oBAA0C,EAC1C,qBAA2C,EAC3C,OAAmB,EAAA;QACrC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAHN,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAsB;QAC3C,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QA2FC,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;QAC5B,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;AACvD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AACzC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAU,CAAC;;;QAK9C,IAAW,CAAA,WAAA,GAAG,mBAAmB,CAAC;AAClC,QAAA,IAAA,CAAA,YAAY,GAAwB,IAAI,CAAC;;;QAmJzC,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;QAC9B,IAAW,CAAA,WAAA,GAA6B,KAAK,EAAqB,CAAC;QACnE,IAAM,CAAA,MAAA,GAAuB,KAAK,EAAe,CAAC;QAClD,IAAmB,CAAA,mBAAA,GAAuB,IAAI,CAAC;QAC/C,IAAe,CAAA,eAAA,GAAiC,IAAI,CAAC;QAOrD,IAAgB,CAAA,gBAAA,GAAkB,KAAK,EAAU,CAAC;AAhQxD,QAAA,IAAI,CAAC,KAAK,GAAG,kBAAkB,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,GAAG,2BAA2B,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/E,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,2BAA2B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3F,IAAI,CAAC,sBAAsB,GAAG,YAAY,CAAC,6BAA6B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAEhG;;AAID,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAa,UAAU,CAAC,KAA+B,EAAA;AACrD,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACtC;AAED,IAAA,aAAa,CAAC,UAAoC,EAAA;AAChD,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5E,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,EAAE;AACjC,oBAAA,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;iBAChC;AACD,gBAAA,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,EAAE;AACpC,oBAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;iBACpC;aACF;SACF;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AAGD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAa,KAAK,CAAC,KAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACzE,QAAA,MAAM,SAAS,GAAG,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC;QACnD,IAAI,SAAS,EAAE;YACb,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAC7D,YAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,aAAa,EAAE;gBACzC,SAAS,CAAC,WAAW,CAAC,cAAc,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;aACjE;SACF;;AAGD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACtC;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IACI,WAAW,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC3B;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;AAED,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;KAClC;AAED,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;IAcD,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAC,IAAI,CAAC,WAAW,EAAC,oBAAoB,EAAC,IAAI,EAAC,qBAAqB,EAAC,oBAAoB,CAAC,CAAC;QAC7I,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,IAAG;AAC3D,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3E,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAC7D,SAAC,CAAC,CAAC;KAEJ;IAED,eAAe,GAAA;;;AAGb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9E,YAAA,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACJ;;;IAKM,aAAa,GAAA;QAClB,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChD;IAEM,oBAAoB,GAAA;QACzB,OAAO,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvD;IAEM,wBAAwB,GAAA;QAC7B,OAAO,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC3D;IAEM,2BAA2B,GAAA;QAChC,OAAO,YAAY,CAAC,2BAA2B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACrE;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9E,UAAU,CAAC,MAAI;YACb,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,mBAAmB,EAAC,IAAI,CAAC,WAAW,EAAE,EAAC,SAAS,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;AACnG,SAAC,CAAC,CAAA;KACL;AAED,IAAA,mBAAmB,CAAC,EAAU,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;KACjD;AAED,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE;YAC3B,OAAO;SACR;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;AAED,IAAA,mBAAmB,CAAC,MAAc,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO;SACR;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;AAED,IAAA,uBAAuB,CAAC,QAAgB,EAAA;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC1B,OAAO;SACR;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AAED,IAAA,kBAAkB,CAAC,QAAgB,EAAA;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC5C,OAAO;SACR;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;SACtC;aAAM;AACL,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC7B;KACF;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,KAAK,CAAC;AACxC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACjC;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;KAC7B;IAED,eAAe,CAAC,OAAe,EAAE,OAAgB,EAAA;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACrD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAEvD,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACxC;AAED,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACrC;AAED,QAAA,IAAI,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;;YAG/D,WAAW,CAAC,MAAK;gBACf,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtC,IAAI,CAAC,uBAAuB,EAAE,CAAC;iBAChC;aACF,EAAE,IAAI,CAAC,CAAC;SACV;KACF;IAEO,WAAW,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW,GAAG,yBAAyB,GAAC,iBAAiB,CAAC;KACvE;AAED,IAAA,WAAW,CAAC,KAAuB,EAAA;AACjC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,mBAAmB,EAAC,IAAI,CAAC,WAAW,EAAE,EAAC,SAAS,EAAC,OAAO,EAAC,OAAO,CAAC,CAAA;KAC1G;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;KAC9D;;;IAoBO,6BAA6B,GAAA;QACnC,OAAO,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC/I;IAEO,gCAAgC,GAAA;QACtC,OAAO,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC/H;AAEO,IAAA,6BAA6B,CAAC,UAA8B,EAAA;QAClE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAC,IAAI,CAAC,WAAW,EAAE,EAAC,UAAU,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,CAAC,CAAC;KAClG;IAEO,qBAAqB,GAAA;AAC3B,QAAA,KAAI,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAC;AAC3B,YAAA,IAAG,IAAI,CAAC,MAAM,KAAK,IAAI;AACrB,gBAAA,OAAO,IAAI,CAAC;SACf;AAED,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAG,IAAI,CAAC,qBAAqB,EAAE,EAAC;AAC9B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;aAAI;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;KACF;+GAtSU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAO,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAsEd,gBAAgB,CAyBhB,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,gBAAgB,yCAChB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAChB,gBAAgB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAtGzB,CAAC,gBAAgB,CAAC,EChN/B,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2xIAoHA,EDsFI,MAAA,EAAA,CAAA,s4qCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,0PACZ,oBAAoB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,uBAAuB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAOT,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAfnC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,YAAY;wBACZ,oBAAoB;wBACpB,uBAAuB;wBACvB,kBAAkB;AACnB,qBAAA,EAAA,SAAA,EACU,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,2xIAAA,EAAA,MAAA,EAAA,CAAA,s4qCAAA,CAAA,EAAA,CAAA;+KAwB7B,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAyBO,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAwBF,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAyBE,UAAU,EAAA,CAAA;sBAAjD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,SAAS,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC5B,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;AElRH,MAAO,wBAAyB,SAAQ,+BAA+B,CAAA;AAC3E,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC5C,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAGzB,QAAA,IAAA,CAAA,cAAc,GAAe;YAC3B,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;YAC7C,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;YAC7C,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE;YAClD,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE;YACxD,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9C,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;YAC9C,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE;YAC9C,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9C,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;YAClD,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;SACnD,CAAC;AAEF;;AAE4E;QAC5E,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;AAE7B;;AAE4E;QACpC,IAAsB,CAAA,sBAAA,GAAa,IAAI,CAAC;QACxC,IAA0B,CAAA,0BAAA,GAAa,KAAK,CAAC;QAC7C,IAAgB,CAAA,gBAAA,GAAa,IAAI,CAAC;QAClC,IAAc,CAAA,cAAA,GAAa,IAAI,CAAC;QAChC,IAAY,CAAA,YAAA,GAAa,IAAI,CAAC;QAC9B,IAAc,CAAA,cAAA,GAAa,IAAI,CAAC;QAChC,IAAiB,CAAA,iBAAA,GAAa,IAAI,CAAC;QACnC,IAAsB,CAAA,sBAAA,GAAa,IAAI,CAAC;QACxC,IAAa,CAAA,aAAA,GAAa,IAAI,CAAC;QAC/B,IAAU,CAAA,UAAA,GAAa,KAAK,CAAC;QAC7B,IAAO,CAAA,OAAA,GAAa,KAAK,CAAC;QAC1B,IAAY,CAAA,YAAA,GAAa,KAAK,CAAC;AAEvE;;AAE4E;QACnE,IAAW,CAAA,WAAA,GAAY,EAAE,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAY,cAAc,CAAC;QACnC,IAAY,CAAA,YAAA,GAAY,EAAE,CAAC;QAC3B,IAAgB,CAAA,gBAAA,GAAY,wEAAwE,CAAC;QACrG,IAAc,CAAA,cAAA,GAAY,+CAA+C,CAAC;QAC1E,IAAY,CAAA,YAAA,GAAY,mEAAmE,CAAC;AACrG;;AAE4E;AAClE,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAqB,CAAC;AAC/D,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAU,CAAC;AAS/D;;;AAG4E;AAC5E,QAAA,IAAA,CAAA,cAAc,GAAe;AAC3B,YAAA,EAAE,EAAE,EAAC,qBAAqB,EAAE,MAAM,EAAC,iBAAiB,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAE;AAClL,YAAA,EAAE,EAAE,EAAC,qBAAqB,EAAE,MAAM,EAAC,qBAAqB,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAC;YAC7M,EAAE,EAAE,EAAC,eAAe,EAAE,MAAM,EAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,GAAG,GAAA,EAAK,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAC;YACjO,EAAE,EAAE,EAAC,aAAa,EAAE,MAAM,EAAC,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,GAAA,EAAK,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAC;YAChO,EAAE,EAAE,EAAC,WAAW,EAAE,MAAM,EAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,GAAA,EAAK,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAC;AAC5M,YAAA,EAAE,EAAE,EAAC,kBAAkB,EAAE,MAAM,EAAC,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAC;AAC5J,YAAA,EAAE,EAAE,EAAC,YAAY,EAAE,MAAM,EAAC,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAC;AAC7J,YAAA,EAAE,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAC;AACpI,YAAA,EAAE,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAC;SAC7I,CAAC;KAzED;AAqDD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,CAAC;SACtE;KACF;AAkBD;;AAE4E;IAC5E,gBAAgB,CAAE,IAAc,EAAE,KAAc,EAAA;QAC9C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YACpC,OAAO;SACR;AAGD,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,6BAA6B,EAAE,CAAC;SACtC;aACI;AACH,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,SAAS,CAAC,IAAI,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;SAC9F;KACF;AAED;;AAE4E;AAC5E,IAAA,eAAe,CAAE,QAAgB,EAAA;AAC/B,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,SAAS,CAAC,IAAI,EAAE,yBAAyB,EAAE,QAAQ,CAAC,CAAC;KACtD;AAED;;AAE4E;IAC5E,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,IAAG,CAAC,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;SACnC;KACF;AAED;;AAE4E;IAC5E,6BAA6B,GAAA;AAC3B,QAAA,IAAG,CAAC,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC;KACxD;AAED;;AAE4E;AAC5E,IAAA,SAAS,CAAC,IAAc,EAAA;QAEtB,IAAI,IAAI,EAAE;YACR,OAAO,CAAC,IAAI,CAAE,CAAA,EAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAA4C,OAAA,CAAA,CAAC,CAAC;SACnG;AAED,QAAA,OAAO,KAAK,CAAC;KACd;;AAGD,IAAA,SAAS,CAAC,IAA0B,EAAA;AAClC,QAAA,IAAI,OAAO,GAAG,IAAI,EAAE,GAAG,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC1F,QAAA,MAAM,QAAQ,GAAG,UAAU,EAAE,KAAK,CAAC;QACnC,MAAM,gBAAgB,GAAG,OAAO,EAAE,QAAQ,GAAG,KAAK,CAAC,IAAI,QAAQ,CAAC;AAChE,QAAA,IAAI,IAAI,EAAE,WAAW,IAAI,gBAAgB,EAAE;AACzC,YAAA,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC;YACxB,IAAI,gBAAgB,EAAE;AACpB,gBAAA,OAAO,GAAG,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;AACpC,gBAAA,IAAI,IAAI,EAAE,WAAW,EAAE;AACrB,oBAAA,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC;iBACzB;aACF;AACD,YAAA,IAAI,IAAI,EAAE,WAAW,EAAE;AACrB,gBAAA,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;aACtC;SACF;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IAED,aAAa,GAAA;QACX,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;AACtG,QAAA,OAAO,qBAAqB,CAAC,GAAG,CAAE,CAAC,IAAI,KAAI;YAEzC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,UAA6C,CAAC,CAAC,EAAE;gBAC3G,OAAO;aACR;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,IAA0B,EAAA;QACnC,OAAO,gBAAgB,GAAG,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxF;+GA5KU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EA2Bf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,gBAAgB,CAChB,EAAA,0BAAA,EAAA,CAAA,4BAAA,EAAA,4BAAA,EAAA,gBAAgB,8DAChB,gBAAgB,CAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAChB,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAChB,gBAAgB,CAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAChB,gBAAgB,CAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAChB,gBAAgB,CAChB,EAAA,sBAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAAA,gBAAgB,CAChB,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,gBAAgB,CAChB,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,gBAAgB,CAChB,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,gBAAgB,kDAChB,gBAAgB,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,SAAA,EA5CxB,CAAC,gBAAgB,CAAC,EChChC,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,q8GAuGA,EDxEY,MAAA,EAAA,CAAA,g1jBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,6VAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAO5B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EACrB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,SAAA,EAC5B,CAAC,gBAAgB,CAAC,EAGf,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,q8GAAA,EAAA,MAAA,EAAA,CAAA,g1jBAAA,CAAA,EAAA,CAAA;qFA8BF,sBAAsB,EAAA,CAAA;sBAA7D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,0BAA0B,EAAA,CAAA;sBAAjE,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,cAAc,EAAA,CAAA;sBAArD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,YAAY,EAAA,CAAA;sBAAnD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,cAAc,EAAA,CAAA;sBAArD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,iBAAiB,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,sBAAsB,EAAA,CAAA;sBAA7D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,aAAa,EAAA,CAAA;sBAApD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,UAAU,EAAA,CAAA;sBAAjD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,YAAY,EAAA,CAAA;sBAAnD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAK7B,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAII,sBAAsB,EAAA,CAAA;sBAA/B,MAAM;gBACG,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;;;ME/EI,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;AASE;;AAE4E;AAC5E,QAAA,IAAA,CAAA,SAAS,GAAG;AACV,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;AAC9B,YAAA,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAC;SAC/B,CAAC;AAEF;;AAE4E;QAC5E,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEpB;;AAE4E;QACpC,IAAO,CAAA,OAAA,GAAa,KAAK,CAAC;AAElE;;AAE4E;QACnE,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAEvC;;AAE4E;AAClE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU,CAAC;AAyB5D,KAAA;AAvBC;;AAE4E;AAC5E,IAAA,WAAW,CAAE,IAAY,EAAA;AACvB,QAAA,SAAS,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;KAC9C;AAED;;AAE4E;IAC5E,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;KACtC;AAED;;AAE4E;AAC5E,IAAA,mBAAmB,CAAE,MAAc,EAAA;QACjC,OAAO;AACL,YAAA,UAAU,EAAE,IAAI,CAAC,YAAY,KAAK,MAAM;AACxC,YAAA,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI;SAC5B,CAAC;KACH;+GA5DU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EA0BX,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,gBAAgB,CCtCtC,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,+5BA+BA,25HDxBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAKX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,aAAA,EAGR,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,+5BAAA,EAAA,MAAA,EAAA,CAAA,o2HAAA,CAAA,EAAA,CAAA;8BA4BF,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAK7B,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAKI,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;;;ME1CI,qBAAqB,CAAA;AAGhC,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAFzB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;KAEV;AAGxC,IAAA,OAAO,CAAC,aAA0B,EAAA;AACvC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B;KACF;+GAXU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;+EAEkB,YAAY,EAAA,CAAA;sBAA5B,MAAM;gBAKA,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,CAAA;;;MCatC,2BAA2B,CAAA;;;;IAgBtC,IAA+B,UAAU,CAAC,KAAuD,EAAA;QAC/F,IAAG,CAAC,KAAK,EAAE;YACT,OAAO;SACR;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACvB;AAGD,IAAA,WAAA,CAA6B,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AAxBjC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE,CAAC;QACP,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;QACzD,IAAY,CAAA,YAAA,GAAY,EAAE,CAAC;AAEjB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;QAChD,IAAK,CAAA,KAAA,GAAY,SAAS,CAAC;QAClB,IAAS,CAAA,SAAA,GAAG,MAAM,CAA6B;YAChE,IAAI,EAAE,CAAC,IAAI;YACX,IAAI,EAAE,CAAC,IAAI;AACZ,SAAA,CAAC,CAAA;AAaiB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAA2B,EAAE,CAAC,CAAC;QAG9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC;KAClD;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAa,IAAI,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;IAES,aAAa,GAAA;QACrB,IAAI,CAAC,4BAA4B,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC/B;AAES,IAAA,YAAY,CAAC,IAA4B,EAAA;AACjD,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAE9B,QAAA,IAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE;YACtC,IAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC9B,OAAO;aACR;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO;SACR;AAED,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAE;YAChB,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AAES,IAAA,SAAS,CAAC,IAA4B,EAAA;AAC9C,QAAA,IAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,IAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE;YACtC,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAES,6BAA6B,GAAA;QACrC,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAC7E,IAAG,CAAC,eAAe,EAAE;YACnB,OAAO;SACR;AAED,QAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;QAC3E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KACpC;IAES,4BAA4B,GAAA;AACpC,QAAA,IAAG,CAAC,IAAI,CAAC,SAAS,EAAC;YACjB,OAAO;SACR;AAED,QAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;IAES,6BAA6B,GAAA;AACrC,QAAA,IAAG,IAAI,CAAC,SAAS,EAAC;YAChB,OAAO;SACR;AACD,QAAA,IAAI,CAAC,SAAS,GAAI,WAAW,CAAC,MAAK;YACjC,IAAI,CAAC,6BAA6B,EAAE,CAAC;SACtC,EAAE,EAAE,CAAsB,CAAC;KAC7B;AAES,IAAA,eAAe,CAAC,KAAY,EAAA;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,QAAA,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACnC,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;+GAtGU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,4GAElB,gBAAgB,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BtC,qlDAwCA,EDtByB,MAAA,EAAA,CAAA,qtOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,2EAAE,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAM1C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBATvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EACxB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,EAGvC,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,qlDAAA,EAAA,MAAA,EAAA,CAAA,qtOAAA,CAAA,EAAA,CAAA;+EAIhC,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBACiC,SAAS,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC7B,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAayB,UAAU,EAAA,CAAA;sBAAxC,KAAK;uBAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;gBAgBZ,IAAI,EAAA,CAAA;sBAAhB,KAAK;;;ME1BK,wBAAwB,CAAA;;;IAInC,IAAmC,cAAc,CAAC,KAAa,EAAA;AAC7D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAC3B;AAaD,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAlBzB,IAAmB,CAAA,mBAAA,GAAkB,IAAI,CAAC;AAMhC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;QAC5D,IAAa,CAAA,aAAA,GAAY,QAAQ,CAAA;QACF,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAC7B,IAAmB,CAAA,mBAAA,GAAY,KAAK,CAAC;QACrC,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAClC,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;QAC7B,IAAwB,CAAA,wBAAA,GAAY,IAAI,CAAC;QACzC,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QAClE,IAAc,CAAA,cAAA,GAAY,EAAE,CAAC;QAC7B,IAAY,CAAA,YAAA,GAA4C,IAAI,CAAC;AAiBnD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAA8B,IAAI,CAAC,CAAC;AAExE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAc,CAAC;QAEjD,IAAc,CAAA,cAAA,GAAyC,SAAS,CAAC;AA0IjE,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,IAAc,EAAE,KAAa,KAAc;YACjE,OAAO;AACL,gBAAA,UAAU,EAAE,IAAI,CAAC,QAAQ,KAAK,SAAS;AACvC,gBAAA,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM;gBACrC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,gBAAA,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;AACJ,SAAC,CAAC;QAEQ,IAAY,CAAA,YAAA,GAAG,IAAI,eAAe,CAC1C,IAAI,IAAI,IAAI,CAAC,KAAK,EAClB,IAAI,IAAI,IAAI,CAAC,UAAU,CACxB,CAAC;AAEQ,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,gBAAgB,CAC7C,IAAI,CAAC,YAAY,EACjB,IAAI,IAAI,IAAI,CAAC,KAAK,EAClB,IAAI,IAAI,IAAI,CAAC,UAAU,EACvB,IAAI,IAAI,IAAI,CAAC,QAAQ,CACtB,CAAC;AAEQ,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAChF,IAAa,CAAA,aAAA,GAAG,CAAC,CAAS,EAAE,IAAc,KAAK,IAAI,CAAC,UAAU,CAAC;KAtLnC;AAEtC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;KAC9B;IAED,IAAa,QAAQ,CAAC,IAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;KAC9B;;IAGD,IAA4C,uBAAuB,CAAC,KAAkC,EAAA;AACpG,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACpC;IAQD,QAAQ,GAAA;AACN,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACtC,IAAI,OAAO,EAAE;AACV,YAAA,OAAwD,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChG,YAAA,OAAwD,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxG;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAW,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACjG,QAAA,IAAG,IAAI,CAAC,mBAAmB,EAAC;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;SAC3C;KACF;IAEM,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;KAC/B;IAEO,QAAQ,CAAC,EAAU,EAAE,KAAsB,EAAA;AACjD,QAAA,KAAI,MAAM,IAAI,IAAI,KAAK,EAAE;AACvB,YAAA,IAAG,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AACjB,gBAAA,OAAO,IAAI,CAAC;aACb;AACD,YAAA,IAAG,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA,MAAM,KAAK,GAAoB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChE,IAAG,KAAK,EAAE;AACR,oBAAA,OAAO,KAAK,CAAC;iBACd;aACF;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEM,IAAA,QAAQ,CAAC,EAA2B,EAAE,aAAA,GAAyB,KAAK,EAAA;AACzE,QAAA,IAAG,OAAO,EAAE,KAAK,QAAQ,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACjD;QACD,IAAG,aAAa,EAAE;AAChB,YAAA,MAAM,QAAQ,GAAY,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,EAAE,CAAA,EAAA,CAAI,CAAC,CAAC;AACtF,YAAA,OAAO,QAAQ,CAAC;SACjB;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACpD;AAEM,IAAA,WAAW,CAAC,EAAU,EAAE,SAAA,GAAqB,KAAK,EAAA;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAG,CAAC,IAAI,EAAE;YACR,OAAO;SACR;AAED,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;SACR;AAED,QAAA,IAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACtE,YAAA,IAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACzD,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;aAC7B;SACF;QAED,IAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACvC,OAAO;SACR;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,IAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,SAAS,EAAE;YAC/D,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAE,CAAC;YAChE,OAAO;SACR;AAED,QAAA,IAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;SACpC;AAED,QAAA,IAAG,IAAI,CAAC,wBAAwB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;SACpC;QAED,IAAG,CAAC,SAAS,EAAC;YACZ,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAE,CAAC;SACjE;KAEF;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC;KAC9B;AAEM,IAAA,WAAW,CAAC,EAAW,EAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAG,CAAC,IAAI,EAAE;YACR,OAAO;SACR;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAChC;AAEM,IAAA,WAAW,CAAC,EAAW,EAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAG,CAAC,IAAI,EAAE;AACR,YAAA,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC3C;AAEM,IAAA,WAAW,CAAC,EAAW,EAAA;QAC5B,IAAG,CAAC,IAAI,CAAC,cAAc;YACrB,OAAO;QAET,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAG,CAAC,IAAI,EAAE;AACR,YAAA,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;KAC9C;AAEO,IAAA,WAAW,CAAC,mBAA2B,EAAA;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC;KAC1C;AAEO,IAAA,gBAAgB,CAAC,MAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;KACtC;AAED,IAAA,WAAW,CAAC,OAA4C,EAAA;QACtD,IAAG,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,qBAAqB,CAAC,EAAE;AAC3D,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAW,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC;SAClG;AACD,QAAA,IAAG,OAAO,CAAC,qBAAqB,CAAC,EAAE;YACjC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAA;SACtD;KACF;AA4BS,IAAA,iBAAiB,CAAC,IAAc,EAAA;QACxC,OAAO,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;KAC1D;AAES,IAAA,YAAY,CAAC,IAAc,EAAA;AACnC,QAAA,IAAG,CAAC,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,IAAG,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;AACpC,YAAA,OAAO,KAAK,CAAA;SACb;AACD,QAAA,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,CAAA;KAC/B;AAES,IAAA,uBAAuB,CAAC,IAAc,EAAA;AAC9C,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC;SACd;AAED,QAAA,MAAM,cAAc,GAA6B,IAAI,CAAC,cAAc,CAAC;QAErE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC5D,QAAA,IAAG,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,KAAI;AAC/E,YAAA,OAAO,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,gBAAgB,CAAC;KACzB;AAES,IAAA,6BAA6B,CAAC,IAAc,EAAA;AACpD,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,MAAM,cAAc,GAA6B,IAAI,CAAC,cAAc,CAAC;QAErE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAC1C,YAAA,OAAO,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AACzC,SAAC,CAAC,CAAC;QACH,OAAO,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;KACvD;AAEO,IAAA,uBAAuB,CAAC,IAAc,EAAA;AAC5C,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;SACR;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAG,eAAe,EAAE;AAClB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;SACvE;aACI;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;SACzE;KACF;AAEO,IAAA,uBAAuB,CAAC,IAAc,EAAA;AAC5C,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;SACR;AAED,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAA;QAC3E,OAAM,WAAW,EAAE;AACjB,YAAA,IAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;aACzC;iBACG;AACF,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;aAC3C;AACD,YAAA,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;AAC/B,YAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;SACzE;KACF;IAES,WAAW,CAAC,KAAY,EAAE,IAAc,EAAA;QAChD,IAAG,CAAC,IAAI,EAAE;YACR,OAAO;SACR;AAED,QAAA,IAAG,CAAC,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO;SACR;AAED,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;SACR;;QAGD,MAAM,YAAY,GAAG,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,UAAU,CAAC;AAClE,QAAA,IAAI,YAAY,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;SAC7B;AAED,QAAA,IAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACtE,YAAA,IAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACzD,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;aAC7B;SACF;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,IAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YACjD,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAE,CAAC;YAChE,OAAO;SACR;AAED,QAAA,IAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;SACpC;AAED,QAAA,IAAG,IAAI,CAAC,wBAAwB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;SACpC;QAED,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAE,CAAC;KACjE;AAES,IAAA,WAAW,CAAC,IAAc,EAAA;AAClC,QAAA,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;KAC9C;+GAtUU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EASf,gBAAgB,CAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAChB,gBAAgB,CAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAChB,gBAAgB,CAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAChB,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAChB,gBAAgB,CAAA,EAAA,wBAAA,EAAA,CAAA,0BAAA,EAAA,0BAAA,EAChB,gBAAgB,CAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAChB,gBAAgB,CAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,CAAA,oBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7CtC,mmIAsGA,EAAA,MAAA,EAAA,CAAA,+oMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnFY,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,cAAA,EAAA,YAAA,EAAA,YAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,2BAA2B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC3B,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAML,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EACrB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,aAAa;wBACnB,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,2BAA2B;wBAC3B,YAAY;AACf,qBAAA,EAAA,QAAA,EAAA,mmIAAA,EAAA,MAAA,EAAA,CAAA,+oMAAA,CAAA,EAAA,CAAA;+EAMQ,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAG6B,cAAc,EAAA,CAAA;sBAAhD,KAAK;uBAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAA;gBAIpB,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACkC,WAAW,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,mBAAmB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,YAAY,EAAA,CAAA;sBAAnD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,wBAAwB,EAAA,CAAA;sBAA/D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBACE,iBAAiB,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAC7B,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAQO,QAAQ,EAAA,CAAA;sBAApB,KAAK;gBAMsC,uBAAuB,EAAA,CAAA;sBAAlE,KAAK;uBAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAA;gBAK5B,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;IErDG,4BAIX;AAJD,CAAA,UAAY,2BAA2B,EAAA;AACrC,IAAA,2BAAA,CAAA,2BAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,2BAAA,CAAA,2BAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAAsB,CAAA;AACtB,IAAA,2BAAA,CAAA,2BAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,kBAAgB,CAAA;AAClB,CAAC,EAJW,2BAA2B,KAA3B,2BAA2B,GAItC,EAAA,CAAA,CAAA,CAAA;AAEM,MAAM,iBAAiB,GAAG;;MCTpB,wBAAwB,CAAA;AAPrC,IAAA,WAAA,GAAA;;QAWE,IAAS,CAAA,SAAA,GAAqB,EAAE,IAAI,EAAG,EAAE,EAAE,SAAS,EAAC,EAAE,EAAC,CAAA;QAEV,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;AAEvD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAQ,CAAC;AAQtD,KAAA;;;IAJC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;KAC7B;+GAdU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,wPCVrC,0cAYM,EAAA,MAAA,EAAA,CAAA,wkBAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FDFO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EAAA,0cAAA,EAAA,MAAA,EAAA,CAAA,wkBAAA,CAAA,EAAA,CAAA;8BAQX,SAAS,EAAA,CAAA;sBADR,KAAK;gBAGwC,MAAM,EAAA,CAAA;sBAAnD,WAAW;uBAAC,sBAAsB,CAAA;;sBAAG,KAAK;gBAEjC,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MENI,+BAA+B,CAAA;AAP5C,IAAA,WAAA,GAAA;QAemB,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAsB;AAC9D,YAAA,EAAE,EAAG,EAAE;AACP,YAAA,IAAI,EAAG,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACX,SAAA,CAAC,CAAC;QAEkC,IAAa,CAAA,aAAA,GAAoC,IAAI,CAAC;AAqBlF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAa,MAAK;AAC5C,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAChD,IAAG,CAAC,eAAe,EAAC;AAClB,gBAAA,OAAO,EAAE,CAAC;aACX;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,qCAAqC,CAAC,eAAe,CAAC,CAAC;YACzE,IAAG,CAAC,IAAI,EAAC;AACP,gBAAA,OAAO,EAAE,CAAC;aACX;YAED,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,SAAC,CAAC,CAAA;AAiCQ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAuB,CAAC;AAClE,KAAA;;;IA9EC,IACI,oBAAoB,CAAC,IAA0B,EAAA;AACjD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACjC;AAUO,IAAA,qCAAqC,CAAC,IAA0B,EAAA;AAEtE,QAAA,MAAM,QAAQ,GAAc;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;AAEF,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;AACf,YAAA,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;AACvB,YAAA,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAC;gBAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;AACxE,gBAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACvC;SACF;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;IAiBO,SAAS,CAAC,EAAS,EAAE,IAA0B,EAAA;AACrD,QAAA,IAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAC;AACf,YAAA,OAAO,IAAI,CAAC;SACb;AAED,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;AACf,YAAA,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACtC,IAAG,GAAG,EAAC;AACL,oBAAA,OAAO,GAAG,CAAC;iBACZ;aACF;SACF;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,mBAAmB,CAAC,KAAkB,EAAA;AACpC,QAAA,IAAG,KAAK,CAAC,MAAM,KAAK,CAAC,EAAC;AACpB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC1E,IAAG,YAAY,EAAC;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACtC;SACF;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;KAClC;+GA9EU,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAc/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,EC1BrC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,kQAOA,qRDCY,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIvB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAC5B,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,wBAAwB,CAAC,EAAA,QAAA,EAAA,kQAAA,EAAA,MAAA,EAAA,CAAA,6NAAA,CAAA,EAAA,CAAA;8BAQ/B,oBAAoB,EAAA,CAAA;sBADvB,KAAK;uBAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAA;gBAWE,aAAa,EAAA,CAAA;sBAAjD,SAAS;uBAAC,wBAAwB,CAAA;gBAkEzB,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEhFI,uCAAuC,CAAA;AAPpD,IAAA,WAAA,GAAA;QAemB,IAAkB,CAAA,kBAAA,GAAG,MAAM,CAAwB;AAClE,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACX,SAAA,CAAC,CAAC;QAEkC,IAAa,CAAA,aAAA,GAAoC,IAAI,CAAC;AAElF,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAa,MAAK;AAC5C,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACpD,IAAG,CAAC,iBAAiB,EAAE;AACrB,gBAAA,OAAO,EAAE,CAAC;aACX;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,qCAAqC,CAAC,iBAAiB,CAAC,CAAC;YAC3E,IAAG,CAAC,IAAI,EAAE;AACR,gBAAA,OAAO,EAAE,CAAC;aACX;YAED,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,SAAC,CAAC,CAAA;AAoDQ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAyB,CAAC;AACpE,KAAA;;;IA9EC,IACI,sBAAsB,CAAC,IAA4B,EAAA;AACrD,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACnC;AAwBO,IAAA,qCAAqC,CAAC,IAA4B,EAAA;AAExE,QAAA,MAAM,QAAQ,GAAc;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;AAEF,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;AACf,YAAA,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;AACvB,YAAA,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAC;gBAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,CAAC;AACxE,gBAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACvC;SACF;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;IAGO,SAAS,CAAC,EAAS,EAAE,IAA4B,EAAA;AACvD,QAAA,IAAG,IAAI,CAAC,EAAE,IAAI,EAAE,EAAC;AACf,YAAA,OAAO,IAAI,CAAC;SACb;AAED,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;AACf,YAAA,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACtC,IAAG,GAAG,EAAC;AACL,oBAAA,OAAO,GAAG,CAAC;iBACZ;aACF;SACF;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,mBAAmB,CAAC,KAAkB,EAAA;AACpC,QAAA,IAAG,KAAK,CAAC,MAAM,KAAK,CAAC,EAAC;AACpB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAC5E,IAAG,YAAY,EAAC;AACd,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACtC;SACF;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;KAClC;+GA9EU,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,EAcvC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,CAAA,mBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,EC1BrC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2QAOA,8RDCY,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIvB,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAPnD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EACrC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,wBAAwB,CAAC,EAAA,QAAA,EAAA,2QAAA,EAAA,MAAA,EAAA,CAAA,sOAAA,CAAA,EAAA,CAAA;8BAQ/B,sBAAsB,EAAA,CAAA;sBADzB,KAAK;uBAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAA;gBAWA,aAAa,EAAA,CAAA;sBAAjD,SAAS;uBAAC,wBAAwB,CAAA;gBAkEzB,YAAY,EAAA,CAAA;sBAArB,MAAM;;;MEnFI,0BAA0B,CAAA;IACrC,OAAO,kBAAkB,CAAC,QAAwC,EAAA;AAChE,QAAA,MAAM,IAAI,GAAyB;YACjC,EAAE,EAAG,QAAQ,CAAC,EAAE;YAChB,IAAI,EAAG,QAAQ,CAAC,IAAI,GAAI,GAAG,QAAQ,CAAC,IAAI,CAAI,CAAA,EAAA,QAAQ,CAAC,IAAI,CAAA,CAAA,CAAG,GAAG,QAAQ,CAAC,IAAI;YAC5E,MAAM,EAAG,QAAQ,CAAC,MAAM;SACzB,CAAA;AAED,QAAA,IAAG,QAAQ,CAAC,QAAQ,EAAC;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,KAAI,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAC;AACnC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,CAAC,KAAsC,CAAC,CAAC,CAAC;aAC3G;SACF;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AACF;;MCjBY,4BAA4B,CAAA;IACvC,OAAO,kBAAkB,CAAC,QAAuD,EAAA;AAC/E,QAAA,MAAM,IAAI,GAA2B;YACnC,EAAE,EAAG,QAAQ,CAAC,EAAE;AAChB,YAAA,IAAI,EAAG,QAAQ,CAAC,IAAI,GAAI,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;YACrD,MAAM,EAAG,QAAQ,CAAC,MAAM;SACzB,CAAA;AAED,QAAA,IAAG,QAAQ,CAAC,QAAQ,EAAC;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,YAAA,KAAI,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAC;AACnC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,CAAC,KAAqD,CAAC,CAAC,CAAC;aAC5H;SACF;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AACF;;ACLK,MAAO,uCAAwC,SAAQ,+BAA+B,CAAA;AAE1F,IAAA,WAAA,CAAY,gBAAmC,EAAA;QAC7C,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAsBzB,IAAG,CAAA,GAAA,GAAuB,IAAI,CAAC;QAe/B,IAAQ,CAAA,QAAA,GAAwB,SAAS,CAAC;AAEzB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAU,EAAE,CAAC,CAAC;AAErD,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAAU,EAAE,CAAC,CAAC;QAEhF,IAAqB,CAAA,qBAAA,GAA0C,EAAE,CAAC;AAElE,QAAA,IAAA,CAAA,iBAAiB,GAAG,iBAAiB,CAAC;QAE9B,IAAa,CAAA,aAAA,GAAY,EAAE,CAAC;AAQ1B,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAqB,CAAC;QAM/D,IAAe,CAAA,eAAA,GAAuB,EAAE,CAAC;QAEzC,IAAgB,CAAA,gBAAA,GAAgC,IAAI,CAAC;QAMpD,IAAkB,CAAA,kBAAA,GAAkC,IAAI,CAAC;KApEjE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,EAAE,CAAC,EAAE,KAAI;gBACX,IAAG,EAAE,EAAC;oBACJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;iBAChD;aACF;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,EAAE,KAAI;AACX,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1C,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1D;AACF,SAAA,CAAC,CAAC;KAEJ;IAKD,IACI,YAAY,CAAC,EAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE/C,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAeD,IACI,cAAc,CAAC,QAA4B,EAAA;AAC7C,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,IAAI,CAAC,gCAAgC,EAAE,CAAC;KACzC;AAID,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAMA,IAAA,IAAI,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,gBAAgB,CAAA;KAC5B;AAID,IAAA,IAAI,iBAAiB,GAAA;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAC/B;AAEF,IAAA,eAAe,CAAC,MAAsC,EAAA;AACpD,QAAA,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAG,MAAM,CAAC,OAAO,KAAK,KAAK,EAAC;AAC1B,YAAA,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;SAC7B;AAED,QAAA,IAAI,CAAC,yCAAyC,CAAC,MAAM,CAAC,CAAC;KACxD;AAED,IAAA,oBAAoB,CAAC,MAAsC,EAAA;AACzD,QAAA,MAAM,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;AAC3C,QAAA,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;AAErC,QAAA,IAAI,CAAC,yCAAyC,CAAC,MAAM,CAAC,CAAC;KACxD;AAED,IAAA,yCAAyC,CAAC,MAAsC,EAAA;QAE9E,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAE,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;AACnE,QAAA,IAAG,KAAK,IAAE,CAAC,EAAC;AACV,YAAA,IAAG,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK,EAAC;gBAC3D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACrD;SACF;aACI,IAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,iBAAiB,EAAC;AAEnD,YAAA,IAAI,SAAS,GAAG,CAAA,IAAA,EAAO,MAAM,CAAC,EAAE,SAAS,CAAC;AAE1C,YAAA,IAAG,MAAM,CAAC,YAAY,EAAC;AACrB,gBAAA,SAAS,IAAI,CAAU,OAAA,EAAA,MAAM,CAAC,KAAK,EAAE,CAAC;aACvC;AAED,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBACvB,IAAI,EAAG,MAAM,CAAC,IAAI;AAClB,gBAAA,KAAK,EAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS;gBACtD,EAAE,EAAG,MAAM,CAAC,EAAE;AACd,gBAAA,SAAS,EAAG,SAAS;AACtB,aAAA,CAAC,CAAC;YAEH,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACrD;KACJ;AAED,IAAA,iCAAiC,CAAC,IAA0B,EAAA;QAC1D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACtC;AAED,IAAA,iCAAiC,CAAC,IAA4B,EAAA;QAC5D,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChD;IAEO,uBAAuB,CAAC,QAAiB,EAAE,QAA6B,EAAA;QAC9E,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;;;;AAMtD,YAAA,IAAI,EAAE,CAAC,cAAoB,KAAI;gBAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,kCAAkC,CAAC,cAAc,CAAC,CAAC;gBACrF,IAAI,CAAC,gCAAgC,EAAE,CAAC;aACzC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;aACjC;AACF,SAAA,CACF,CAAA;KACF;;AAGO,IAAA,kCAAkC,CAAC,cAAoB,EAAA;QAE7D,MAAM,MAAM,GAA+C,EAAE,CAAC;QAC9D,IAAI,qBAAqB,GAAG,IAAI,CAAC;AACjC,QAAA,IAAG,cAAc,CAAC,wBAAwB,EAAC;AACzC,YAAA,qBAAqB,GAAG,cAAc,CAAC,wBAAwB,CAAC;SACjE;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAC;AAC7B,YAAA,OAAO,MAAM,CAAC;SACf;AAED,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,UAAU,CAAC;AAC/C,QAAA,KAAI,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAC;AAEnE,YAAA,MAAM,QAAQ,GAAwC;AACpD,gBAAA,IAAI,EAAG,SAAS;AAChB,gBAAA,QAAQ,EAAG,KAAK;AAChB,gBAAA,UAAU,EAAG,EAAE;aAChB,CAAC;AAEF,YAAA,IAAG,qBAAqB,GAAG,SAAS,CAAC,EAAC;AACpC,gBAAA,QAAQ,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;aAClD;YAED,IAAG,CAAC,aAAa,EAAC;gBAChB,SAAS;aACV;YAED,KAAI,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAC;AAE/C,gBAAA,MAAM,SAAS,GAAmC;oBAChD,EAAE,EAAG,MAAM,CAAC,EAAE;oBACd,IAAI,EAAG,MAAM,CAAC,IAAI;oBAClB,WAAW,EAAG,MAAM,CAAC,WAAW;oBAChC,KAAK,EAAG,MAAM,CAAC,KAAK;AACpB,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,YAAY,EAAG,KAAK;oBACpB,KAAK,EAAG,MAAM,CAAC,KAAK;iBACrB,CAAA;AAED,gBAAA,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrC;AAED,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvB;AAED,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,gCAAgC,GAAA;AACtC,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,IAAE;AACxC,YAAA,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAE;gBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAE,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAA;gBAChE,IAAG,QAAQ,EAAC;AACV,oBAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;oBACtB,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC;iBACpD;qBAAI;AACH,oBAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,oBAAA,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;iBAC7B;AACH,aAAC,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;KACH;IAEO,qBAAqB,CAAC,QAAiB,EAAE,QAA6B,EAAA;AAC5E,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAE,CAAC,CAAC;KAC1F;IAEO,oBAAoB,CAAC,QAAiB,EAAE,QAA6B,EAAA;AAC3E,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;KACxF;IAEO,qCAAqC,CAAC,QAAiB,EAAE,QAA6B,EAAA;AAC5F,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;KAChF;IAEO,gCAAgC,CAAC,QAAiB,EAAE,QAA6B,EAAA;QACvF,IAAI,CAAC,qCAAqC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;AACxE,YAAA,IAAI,EAAE,CAAC,aAAa,KAAG;gBACrB,IAAG,aAAa,EAAC;oBACf,MAAM,YAAY,GAAG,4BAA4B,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACpF,oBAAA,IAAG,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAC;AAChC,wBAAA,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;qBACxC;yBAAI;AACH,wBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;qBAChC;iBACF;aACF;AACF,SAAA,CAAC,CAAA;KACH;IAEO,sBAAsB,CAAC,QAAiB,EAAE,QAA6B,EAAA;QAC7E,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;AACvD,YAAA,IAAI,EAAE,CAAC,aAAa,KAAG;gBACrB,IAAG,aAAa,EAAC;oBACf,IAAI,CAAC,gBAAgB,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;iBACtF;aACF;AACF,SAAA,CAAC,CAAA;KACH;+GArQU,uCAAuC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAvC,uCAAuC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBpD,u3HAoF2B,EAAA,MAAA,EAAA,CAAA,s6GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnEd,6BAA6B,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,+BAA+B,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uCAAuC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIjJ,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAPnD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EACrC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAE,6BAA6B,EAAE,uBAAuB,EAAE,eAAe,EAAE,+BAA+B,EAAE,uCAAuC,CAAC,EAAA,QAAA,EAAA,u3HAAA,EAAA,MAAA,EAAA,CAAA,s6GAAA,CAAA,EAAA,CAAA;qFA6B7J,GAAG,EAAA,CAAA;sBADF,KAAK;gBAIF,YAAY,EAAA,CAAA;sBADf,KAAK;gBAaN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAcF,cAAc,EAAA,CAAA;sBADjB,KAAK;gBAMI,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;;;MEhEI,2BAA2B,CAAA;AAPxC,IAAA,WAAA,GAAA;;QAUuC,IAAa,CAAA,aAAA,GAAoC,IAAI,CAAC;AAkBjF,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAY,CAAC;AACpD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU,CAAC;AAC/C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU,CAAC;AAC9C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;;;QAyC7C,IAAa,CAAA,aAAA,GAAiD,IAAI,CAAC;QACnE,IAAS,CAAA,SAAA,GAAgB,EAAE,CAAC;QAC5B,IAAgB,CAAA,gBAAA,GAAqB,EAAE,CAAC;QACxC,IAAqB,CAAA,qBAAA,GAAyB,EAAE,CAAC;QACjD,IAAgB,CAAA,gBAAA,GAAc,EAAE,CAAC;AAyG1C,KAAA;IAzKC,IACI,YAAY,CAAC,GAAiD,EAAA;AAChE,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,IACI,eAAe,CAAC,eAAyB,EAAA;AAC3C,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;;;IASD,eAAe,GAAA;AACb,QAAA,IAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAC,CAAC,EAAC;YAC3C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9C;KACF;AAED,IAAA,mBAAmB,CAAC,KAAkB,EAAA;AACpC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACpD;AAGD,IAAA,oBAAoB,CAAC,EAAU,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;KACvC;AAED,IAAA,oBAAoB,CAAC,IAAc,EAAA;QACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACtC;AAED,IAAA,oBAAoB,CAAC,IAAc,EAAA;QACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACrC;AAED,IAAA,oBAAoB,CAAC,IAAc,EAAA;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAClC;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC3B,OAAO;QAET,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9C;;;IAaO,oBAAoB,GAAA;QAE1B,MAAM,KAAK,GAAgB,EAAE,CAAA;AAE7B,QAAA,KAAI,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAG,QAAQ,EAAC;AACV,gBAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtB;SACF;AAED,QAAA,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,CAAC;AAEtC,QAAA,KAAI,MAAM,IAAI,IAAI,KAAK,EAAC;YACtB,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1C;KAEF;IAGO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;KACtC;AAEO,IAAA,aAAa,CAAC,IAAc,EAAA;QAClC,IAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY;AAChD,YAAA,OAAO,CAAC,CAAC;QAEX,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAG,CAAC,IAAI,CAAC,QAAQ;AACf,YAAA,OAAO,CAAC,CAAC;AAEX,QAAA,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAC;AAC/B,YAAA,IAAG,CAAC,KAAK;gBACP,SAAS;AAEX,YAAA,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;AAC5C,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,eAAe,GAAA;AACrB,QAAA,IAAG,CAAC,IAAI,CAAC,aAAa,EAAC;YACrB,OAAO;SACR;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;AAEO,IAAA,8BAA8B,CAAC,IAA2B,EAAE,WAAA,GAA4C,SAAS,EAAA;AAEvH,QAAA,MAAM,QAAQ,GAAc;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;AAEF,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;AACf,YAAA,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;AACvB,YAAA,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAC;gBAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC9E,gBAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACvC;SACF;AAED,QAAA,IAAG,CAAC,QAAQ,CAAC,MAAM,EAAC;AAClB,YAAA,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC;SAChC;AAAK,aAAA,IAAG,IAAI,CAAC,IAAI,KAAK,WAAW,EAAC;AACjC,YAAA,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC;SACrC;aAAI;AACH,YAAA,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAAA;SACjC;QAED,IAAG,WAAW,EAAC;AACb,YAAA,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;SACrC;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;AAEO,IAAA,oBAAoB,CAAC,IAAe,EAAA;AAC1C,QAAA,IAAG,IAAI,CAAC,QAAQ,EAAC;AACf,YAAA,KAAI,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAC;gBAC/B,IAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY,EAAC;oBACnD,OAAO;iBACR;qBAAI;AACH,oBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;iBAClC;aAEF;SACF;QAED,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC1C;+GA3KU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAG3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,EClBrC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,0jCA6BA,4qBDlBY,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIvB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EACxB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,wBAAwB,CAAC,EAAA,QAAA,EAAA,0jCAAA,EAAA,MAAA,EAAA,CAAA,onBAAA,CAAA,EAAA,CAAA;8BAOE,aAAa,EAAA,CAAA;sBAAjD,SAAS;uBAAC,wBAAwB,CAAA;gBAG/B,YAAY,EAAA,CAAA;sBADf,KAAK;gBAOF,eAAe,EAAA,CAAA;sBADlB,KAAK;gBAUI,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;AErCT,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;MAE5C,YAAY,CAAA;AAEvB,IAAA,WAAA,CAAY,YAAuB,GAAA,EAAE,EAAE,iBAAA,GAA4B,CAAC,EAAA;QAS5D,IAAa,CAAA,aAAA,GAAY,EAAE,CAAC;QAC5B,IAAkB,CAAA,kBAAA,GAAY,CAAC,CAAC;AATtC,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;KAC7C;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAKD,IAAA,kBAAkB,CAAC,QAA4B,EAAA;AAC7C,QAAA,IAAI,CAAC,aAAa,GAAG,CAAM,GAAA,EAAA,kBAAkB,EAAE,CAAC;AAEhD,QAAA,KAAI,MAAM,SAAS,IAAI,QAAQ,EAAC;AAC9B,YAAA,IAAI,CAAC,aAAa,IAAE,SAAS,CAAC,SAAS,CAAC;SACzC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED,IAAA,mCAAmC,CAAC,QAA4B,EAAA;QAC9D,MAAM,cAAc,GAA2B,EAAE,CAAC;AAClD,QAAA,KAAI,MAAM,SAAS,IAAI,QAAQ,EAAC;AAC9B,YAAA,IAAG,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,IAAI;gBAC/B,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC;SACjD;AAED,QAAA,OAAO,cAAc,CAAC;KACvB;IAED,gBAAgB,CAAC,iBAAoD,SAAS,EAAA;QAC5E,MAAM,QAAQ,GAAuB,EAAE,CAAC;QAExC,IAAI,2BAA2B,GAAG,KAAK,CAAC;QAExC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,QAAA,KAAI,MAAM,IAAI,IAAI,KAAK,EAAC;AACtB,YAAA,IAAG,IAAI,CAAC,MAAM,KAAK,CAAC,EAAC;gBACnB,SAAS;aACV;YAED,IAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,2BAA2B,EAAC;gBACnE,2BAA2B,GAAG,IAAI,CAAC;gBACnC,SAAS;aACV;AAED,YAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;YAChE,IAAG,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,kBAAkB,EAAC;gBAC7C,MAAM;aACP;SACF;AAED,QAAA,OAAO,QAAQ,CAAC;KACjB;AAEO,IAAA,qBAAqB,CAAC,SAAiB,EAAE,cAAA,GAAoD,SAAS,EAAA;QAC5G,IAAI,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,EAAE,GAAwB,SAAS,CAAC;QAExC,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAElD,QAAA,IAAG,iBAAiB,IAAI,CAAC,IAAI,kBAAkB,IAAG,CAAC,IAAI,kBAAkB,GAAG,iBAAiB,EAAC;AAC5F,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,iBAAiB,GAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC5E,EAAE,GAAG,UAAU,CAAC;AAChB,YAAA,IAAG,UAAU,IAAI,cAAc,EAAC;AAC9B,gBAAA,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;gBAClD,IAAG,cAAc,EAAC;oBAChB,IAAI,GAAG,cAAc,CAAC;iBACvB;aACF;SACF;AAAK,aAAA,IAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC;YAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;SACpC;QAED,OAAO;AACL,YAAA,IAAI,EAAE,IAAI;YACV,SAAS,EAAG,KAAK,GAAC,SAAS;AAC3B,YAAA,EAAE,EAAG,EAAE;SACR,CAAA;KACF;AAEF;;MCxFY,sBAAsB,CAAA;IAEjC,OAAO,uCAAuC,CAAC,SAAiB,EAAE,MAA2B,EAAE,eAAoC,EAAE,GAAe,EAAA;AAClJ,QAAA,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/B,QAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QAE1C,IAAI,WAAW,GAA4D,IAAI,CAAC;QAEhF,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAC1G,SAAS,CAAC,YAAY,IAAG;AACvB,gBAAA,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE;AACrB,oBAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;iBACtD;AACD,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,2BAA2B,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;aAC7G,CAAC,CACH,CAAA;SACF;aAAM;YACL,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAChF,SAAS,CAAC,SAAS,IAAG;AACpB,gBAAA,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE;AAClB,oBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;iBAC7D;AAED,gBAAA,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;AAExB,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACnG,aAAC,CAAC,EACF,SAAS,CAAC,YAAY,IAAG;AACvB,gBAAA,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE;AACrB,oBAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;iBACtD;gBACD,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,2BAA2B,CAAC,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAC9G,GAAG,CAAC,CAAC,YAAY,KAAI;AACnB,oBAAA,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnC,oBAAA,OAAO,YAAY,CAAC;iBACrB,CAAC,CACH,CAAC;aACH,CAAC,CACH,CAAA;SACF;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;AAEF;;ACHK,MAAO,+BAAgC,SAAQ,+BAA+B,CAAA;AAElF,IAAA,WAAA,CAAY,gBAAmC,EAAA;QAC7C,KAAK,CAAC,gBAAgB,CAAC,CAAA;;QAMzB,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;QAGvC,IAAiB,CAAA,iBAAA,GAAkC,EAAE,CAAC;AAqBtD,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAAqB,IAAI,CAAC,CAAC;AACzE,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAA8B,IAAI,CAAC,CAAC;QAgB9E,IAAO,CAAA,OAAA,GAAyC,IAAI,CAAC;QAErD,IAAc,CAAA,cAAA,GAAuB,EAAE,CAAA;QAGvC,IAAG,CAAA,GAAA,GAAuB,IAAI,CAAC;QAG/B,IAAS,CAAA,SAAA,GAAY,EAAE,CAAA;QAEgB,IAAgB,CAAA,gBAAA,GAAY,IAAI,CAAC;QAExE,IAA4B,CAAA,4BAAA,GAAG,IAAI,eAAe,CAA8B,2BAA2B,CAAC,IAAI,CAAC,CAAC;AAGlH,QAAA,IAAA,CAAA,kCAAkC,GAAG,IAAI,YAAY,EAA+B,CAAC;QAGrF,IAAgB,CAAA,gBAAA,GAAmB,IAAI,CAAC;QAGxC,IAAe,CAAA,eAAA,GAAc,EAAE,CAAC;QAGhC,IAAe,CAAA,eAAA,GAAgC,IAAI,CAAC;AAOpD,QAAA,IAAA,CAAA,kCAAkC,GAAG,IAAI,YAAY,EAAY,CAAC;AAGlE,QAAA,IAAA,CAAA,+BAA+B,GAAG,IAAI,YAAY,EAAU,CAAC;AAG7D,QAAA,IAAA,CAAA,8BAA8B,GAAG,IAAI,YAAY,EAAU,CAAC;AAG5D,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,YAAY,EAAU,CAAC;AAGzD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAW,CAAC;AAElD,QAAA,IAAA,CAAA,2BAA2B,GAAG,2BAA2B,CAAC;QAE1D,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;;;QAKjB,IAAa,CAAA,aAAA,GAAiD,IAAI,CAAC;QACnE,IAAY,CAAA,YAAA,GAAuB,EAAE,CAAC;KAnG7C;IAUD,IACI,WAAW,CAAC,KAAyB,EAAA;AACvC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAE,CAAC;YAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;KAChD;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IAED,IAAI,gBAAgB,CAAC,KAAyB,EAAA;AAC5C,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC;KACjD;IAKD,IAAI,YAAY,CAAC,MAAmC,EAAA;QAElD,IAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAC;AACtB,YAAA,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;SAC5C;AAED,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACxC;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;KAC7C;AA6BD,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;;IA6BD,QAAQ,GAAA;AAEN,QAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAC;oBACpC,OAAO;iBACR;AAED,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAEzB,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;AAC1D,oBAAA,IAAI,EAAE,CAAC,KAAK,KAAI;AACd,wBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;wBACjE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;qBACrC;AACD,oBAAA,KAAK,EAAE,GAAG,IAAK,EAAA,MAAM,IAAI,KAAK,CAAE,GAAG,CAAC,CAAA,EAAC;AACtC,iBAAA,CACF,CAAA;aAAC;AACL,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAG,CAAC,CAAC;oBACH,OAAO;gBAET,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;aACjD;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC;AAC1C,YAAA,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,EAAC;AAChE,SAAA,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAC;YAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC7C;KACF;IAED,uBAAuB,CAAC,SAAkB,EAAE,OAAgB,EAAA;AAC1D,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAC,SAAS,CAAC,CAAC,CAAC;KAC5D;AAED,IAAA,iBAAiB,CAAC,MAA4B,EAAA;QAC5C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QAC9E,OAAO,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KAC7D;AAED,IAAA,qBAAqB,CAAC,KAAa,EAAA;QACjC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;AAED,IAAA,8BAA8B,CAAC,IAAiC,EAAA;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC;AACzE,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,GAAG,2BAA2B,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,yBAAyB,CAAC,CAAC,UAAU,CAAC,CAAC;KAC7C;IAED,WAAW,GAAA;QACT,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;;QAG1B,IAAG,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAC;AAC5C,YAAA,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC7F;AAED,QAAA,IAAG,IAAI,CAAC,eAAe,EAAC;AACtB,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACrD;KACF;AAED,IAAA,kCAAkC,CAAC,SAAoB,EAAA;AACrD,QAAA,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACzD;AAED,IAAA,oCAAoC,CAAC,SAAkB,EAAA;AACrD,QAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACtD;AAGD,IAAA,mCAAmC,CAAC,SAAkB,EAAA;AACpD,QAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACrD;AAED,IAAA,gCAAgC,CAAC,SAAkB,EAAA;AACjD,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAClD;AAED,IAAA,yBAAyB,CAAC,MAAe,EAAA;AACvC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvC;IAED,4BAA4B,GAAA;;QAE1B,IAAG,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,IAAI,CAAC,OAAO,EAAC;;AAGvC,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC,mCAAmC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE7G,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACjD;KACF;;;AAIO,IAAA,2BAA2B,CAAC,YAAyC,EAAA;AAE3E,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAC;YACrD,OAAO;SACR;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;AAEhD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAE7B,QAAA,sBAAsB,CAAC,uCAAuC,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACrI,YAAA,IAAI,EAAE,CAAC,YAAY,KAAI;AACrB,gBAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;AAClC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC/B;AACF,SAAA,CACF,CAAC;KACD;AAEO,IAAA,6BAA6B,CAAC,MAA2B,EAAA;QAC/D,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAC5D,QAAA,MAAM,CAAC,YAAY,GAAG,CAAO,IAAA,EAAA,YAAY,SAAS,CAAC;AACnD,QAAA,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;KAC9C;AAEO,IAAA,0BAA0B,CAAC,YAAoB,EAAA;AAErD,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,MAAM,EAAE,sCAAsC;AAC9C,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,YAAY,EAAG,EAAE;AACjB,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,mBAAmB,EAAE,KAAK;SAC3B,CAAA;AAED,QAAA,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAA,OAAO,MAAM,CAAC;KACf;+GAnQU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,GAAA,EAAA,KAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kCAAA,EAAA,oCAAA,EAAA,kCAAA,EAAA,oCAAA,EAAA,+BAAA,EAAA,iCAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5C5C,moNAgHA,EAAA,MAAA,EAAA,CAAA,w5kBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtFa,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,wBAAwB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,6BAA6B,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,oCAAoC,EAAA,QAAA,EAAA,oCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpC,oCAAoC,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpC,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,uCAAuC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,cAAA,EAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvC,2BAA2B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,2BAA2B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,mCAAmC,EAAA,QAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAM5B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBArB3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,EAC5B,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAE,YAAY;wBACnB,WAAW;wBACX,cAAc;wBACd,wBAAwB;wBACxB,uBAAuB;wBACvB,6BAA6B;wBAC7B,oCAAoC;wBACpC,oCAAoC;wBACpC,eAAe;wBACf,uCAAuC;wBACvC,2BAA2B;wBAC3B,2BAA2B;wBAC3B,mCAAmC;qBACtC,EAGc,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,moNAAA,EAAA,MAAA,EAAA,CAAA,w5kBAAA,CAAA,EAAA,CAAA;qFAW1C,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAIN,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAIF,WAAW,EAAA,CAAA;sBADd,KAAK;gBAoCN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAMN,GAAG,EAAA,CAAA;sBADF,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAGiC,gBAAgB,EAAA,CAAA;sBAAtD,WAAW;uBAAC,wBAAwB,CAAA;gBAKrC,kCAAkC,EAAA,CAAA;sBADjC,MAAM;gBAIP,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAQN,kCAAkC,EAAA,CAAA;sBADjC,MAAM;gBAIP,+BAA+B,EAAA,CAAA;sBAD9B,MAAM;gBAIP,8BAA8B,EAAA,CAAA;sBAD7B,MAAM;gBAIP,2BAA2B,EAAA,CAAA;sBAD1B,MAAM;gBAIP,mBAAmB,EAAA,CAAA;sBADlB,MAAM;;;MElHI,8BAA8B,CAAA;AAEzC,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;AASzB,QAAA,IAAA,CAAA,eAAe,GAA2B;AACjD,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,CAAC;SACR,CAAC;QAEO,IAAW,CAAA,WAAA,GAAuB,EAAE,CAAC;QAErC,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AAClC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAK,YAAY,EAAW,CAAC;QAWvD,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;QACzB,IAAa,CAAA,aAAA,GAAW,CAAC,CAAC;QA5BlC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC;KAClD;;AAGC,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAYO,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;KAC1D;AASD,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACnC;IAED,IAAa,aAAa,CAAC,OAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;AACrC,QAAA,IAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC9B,OAAO;SACR;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,OAAO,IAAG;AAClD,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC3B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;AAC5C,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;aAC7B;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;KACxE;IAED,uCAAuC,CAAC,gBAAyB,EAAE,eAAwB,EAAA;AACzF,QAAA,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,KAAK,GAAG,eAAe,CAAC,CAAC,GAAG,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC;KACtG;IACD,uCAAuC,CAAC,gBAAyB,EAAE,eAAwB,EAAA;AACzF,QAAA,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC,CAAC;KACxG;AAED,IAAA,uBAAuB,CAAC,OAAe,EAAE,QAAiB,EAAE,OAAe,EAAE,QAAiB,EAAA;AAC5F,QAAA,IAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC9B,OAAO;SACR;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACxE,IAAG,CAAC,eAAe,EAAE;YACnB,OAAO;SACR;AACD,QAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;QAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC1F,IAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,GAAG,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAChG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,OAAO,IAAI,iBAAiB,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAClH,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aACpE,EAAE,CAAC,CAAC,CAAC;SACP;aAAM,IAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,GAAG,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACnH,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aACpE,EAAE,CAAC,CAAC,CAAC;SACP;aAAM,IAAG,IAAI,CAAC,uCAAuC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAAE;AAC3F,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC;YACjF,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;aAChE,EAAE,CAAC,CAAC,CAAC;SACP;KACF;AAED,IAAA,uBAAuB,CAAC,OAAe,EAAE,QAAiB,EAAE,OAAe,EAAE,QAAiB,EAAA;AAC5F,QAAA,IAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC9B,OAAO;SACR;QACD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACxE,IAAG,CAAC,eAAe,EAAE;YACnB,OAAO;SACR;AACD,QAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;QAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;QAC1F,IAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,GAAG,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAChG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,OAAO,IAAI,iBAAiB,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACnH,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aACpE,EAAE,CAAC,CAAC,CAAC;SACP;aAAM,IAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,GAAG,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACnH,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aACpE,EAAE,CAAC,CAAC,CAAC;SACP;aAAM,IAAG,IAAI,CAAC,uCAAuC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAAE;AAC3F,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC;YAChF,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aAChE,EAAE,CAAC,CAAC,CAAC;SACP;KACF;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE;YAChC,IAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,YAAY,EAAE;gBAC7C,OAAO;aACR;YACD,UAAU,CAAC,MAAK;AACd,gBAAA,IAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;oBAC9B,OAAO;iBACR;AACD,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC3C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;gBACxE,IAAG,CAAC,eAAe,EAAE;oBACnB,OAAO;iBACR;AACD,gBAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;gBAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;gBAC1F,IAAG,IAAI,CAAC,uCAAuC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAAE;AACpF,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC;oBAChF,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;qBAC/D,EAAE,CAAC,CAAC,CAAC;iBACP;qBAAM,IAAG,IAAI,CAAC,uCAAuC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAAE;AAC3F,oBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC;oBACjF,UAAU,CAAC,MAAK;wBACd,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;qBAC/D,EAAE,CAAC,CAAC,CAAC;iBACP;aACF,EAAE,CAAC,CAAC,CAAC;SACP;KACF;+GAjJU,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,ECtB3C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,whDAsDA,EDtCY,MAAA,EAAA,CAAA,0vFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qVAAE,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAMlC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAT1C,SAAS;+BACE,6BAA6B,EAAA,UAAA,EAC3B,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,qBAAqB,CAAC,EAAA,aAAA,EAG/B,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,whDAAA,EAAA,MAAA,EAAA,CAAA,0vFAAA,CAAA,EAAA,CAAA;+EAcjC,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAKG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACI,uBAAuB,EAAA,CAAA;sBAAhC,MAAM;gBAkBM,aAAa,EAAA,CAAA;sBAAzB,KAAK;;;AE3CF,MAAO,yBAA0B,SAAQ,+BAA+B,CAAA;AAC5E,IAAA,WAAA,CAAY,gBAAmC,EAAA;QAC7C,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAEzB;;;AAG4E;AAC5E,QAAA,IAAA,CAAA,cAAc,GAAG;YACf,EAAE,IAAI,EAAC,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,aAAa,EAAC;YACxE,EAAE,IAAI,EAAC,SAAS,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,eAAe,EAAC;SAC/E,CAAC;AAMF;;AAE4E;QAC5E,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAEpB;;AAE4E;QACpC,IAAO,CAAA,OAAA,GAAa,KAAK,CAAC;AAElE;;AAE4E;QACnE,IAAY,CAAA,YAAA,GAAY,SAAS,CAAC;AAE3C;;AAE4E;AAClE,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAU,CAAC;KAhC/D;AAUD,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;KACzE;AAuBD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC,CAAC;SACtE;KACF;AAED;;AAE4E;AAC5E,IAAA,gBAAgB,CAAE,IAAY,EAAA;AAC5B,QAAA,SAAS,CAAC,IAAI,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC;KACnD;AAED;;AAE4E;IAC5E,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;KACtC;+GAxDU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAyBhB,gBAAgB,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,SAAA,EA/BxB,CAAC,gBAAgB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVhC,qqCAsCA,EAAA,MAAA,EAAA,CAAA,u+KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAO5B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EACtB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,SAAA,EAC5B,CAAC,gBAAgB,CAAC,EAGf,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,qqCAAA,EAAA,MAAA,EAAA,CAAA,u+KAAA,CAAA,EAAA,CAAA;qFA4BF,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAK7B,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAKI,wBAAwB,EAAA,CAAA;sBAAjC,MAAM;;;ME5CI,sBAAsB,CAAA;AAHnC,IAAA,WAAA,GAAA;QASmB,IAAW,CAAA,WAAA,GAAW,IAAI,CAAC;QAC5C,IAAgB,CAAA,gBAAA,GAAG,IAAIC,iBAAe,CAAU,IAAI,CAAC,WAAW,CAAC,CAAC;AAClE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAIA,iBAAe,CAAmB,EAAE,CAAC,CAAC;;;QAsD5D,IAAiB,CAAA,iBAAA,GAAY,SAAS,CAAA;AAE/C,KAAA;;IA7DC,IAAI,gBAAgB,CAAC,GAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;KAC9B;AAKD,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;KACzC;IAED,IAAI,sBAAsB,CAAC,WAA8B,EAAA;AACvD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAChD;AAED,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;KAChD;;;IAID,MAAM,kBAAkB,CAAC,IAAa,EAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;KACvC;AAED,IAAA,uBAAuB,CAAC,SAAyB,EAAA;QAC/C,MAAM,GAAG,GAAsB,EAAE,CAAC;AAClC,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;AACtE,YAAA,IAAG,OAAO,KAAK,IAAI,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAE,CAAC,KAAK,GAAG,CAAC,EAAC;AAC1D,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aAClB;SACF;AAED,QAAA,OAAO,GAAG,CAAC;KACZ;IAED,MAAM,oBAAoB,CAAC,IAAa,EAAA;AACtC,QAAA,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,SAAA,EAAY,IAAI,CAAA,KAAA,CAAO,CAAC,CAAC;AAC3E,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;;AAEnC,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;YAC7B,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,CAAG,EAAA,IAAI,CAAC,iBAAiB,CAAkB,gBAAA,CAAA,CAAC,CAAC;YAC9E,MAAM,gBAAgB,GAAG,MAAM,YAAY,EAAE,IAAI,IAAI,CAAC;YACtD,MAAM,uBAAuB,GAAG,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAClF,YAAA,IAAI,uBAAuB,EAAE,MAAM,EAAE;AACnC,gBAAA,KAAK,MAAM,KAAK,IAAI,uBAAuB,EAAE;AAC3C,oBAAA,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACjD,oBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;wBACxB,QAAQ,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;qBACnD;iBACF;aACF;SACF;AACD,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7C;+GA1DU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ICJW,WAGX;AAHD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,aAAoB,CAAA;AACpB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,aAAoB,CAAA;AACtB,CAAC,EAHW,UAAU,KAAV,UAAU,GAGrB,EAAA,CAAA,CAAA,CAAA;MAMY,cAAc,CAAA;AAJ3B,IAAA,WAAA,GAAA;;QAOU,IAAc,CAAA,cAAA,GAAuB,IAAI,CAAC;AAkDnD,KAAA;;;IA9CS,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,IAAI,CAAC,cAAc,CAAC;SAC5B;aAAM;AACL,YAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACxC;KACF;IACO,wBAAwB,GAAA;QAC9B,MAAM,qBAAqB,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QAC/E,IAAI,CAAC,qBAAqB,EAAE;AAC1B,YAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;SAChD;AACD,QAAA,OAAO,qBAAqB,CAAC;KAC9B;AAEO,IAAA,SAAS,CAAC,UAAsB,EAAA;QACtC,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACpD;AAEO,IAAA,YAAY,CAAC,UAAsB,EAAA;QACzC,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KACvD;;;AAKD,IAAA,gBAAgB,CAAC,aAAiC,EAAA;AAChD,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;KACrC;AAED,IAAA,cAAc,CAAC,IAAa,EAAA;QAC1B,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;SAChC;aAAM;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACpC;KACF;AAED,IAAA,cAAc,CAAC,IAAa,EAAA;QAC1B,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;SAChC;aAAM;AACL,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACpC;KACF;+GAnDU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAHb,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAGP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCHY,2BAA2B,CAAA;IAQtC,WAAoB,CAAA,EAAc,EAAU,QAAmB,EAAA;QAA3C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QANvD,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAE5B,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;QACnB,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;QAGjB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;KACpE;IAED,IAAa,qBAAqB,CAAC,SAAkB,EAAA;AACnD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AACtC,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;SACtD;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;SACtD;KACF;AAGD,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpE,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;IAGD,SAAS,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;AACpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;SACjE;KACF;AAGD,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;AAEpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAEzC,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;AAC5B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;YAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC;YACnD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;AAErD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;SAClE;KACF;;AAKD,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;KACrE;AAGD,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;AAEpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACxD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAExD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC;YACnD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;AAErD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACtE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA,EAAA,CAAI,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,GAAG,CAAA,EAAA,CAAI,CAAC,CAAC;SAClE;KACF;IAGD,UAAU,GAAA;QACR,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;AACpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;SACjE;KACF;+GAvGU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;uGAec,qBAAqB,EAAA,CAAA;sBAAjC,KAAK;gBAaN,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAWrC,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,kBAAkB,CAAA;gBAUhC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAuB9C,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAUtC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAqB9C,UAAU,EAAA,CAAA;sBADT,YAAY;uBAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCxFlC,sCAAsC,CAAA;IAQjD,WAA6B,CAAA,aAA4B,EAAmB,KAAwB,EAAA;QAAvE,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAmB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAmB;QAFpG,IAAK,CAAA,KAAA,GAAW,KAAK,CAAC;KAEmF;IAEzG,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;KAC3C;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC5B;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;AACjG,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACrG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7D,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;KAChE;IAEO,WAAW,GAAA;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,EAAE;YACvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,KAAK,OAAO,EAAE;YAC7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;KACF;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;AAClE,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACnE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACzE,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;AACrE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;YAEvE,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YACrE,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;YACzD,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YAC3D,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YAC/D,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YAE7D,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,KAAK,CAAC;AAC9H,YAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;SACzJ;KACF;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;AACpH,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;AAC7H,YAAA,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;SACzJ;KACF;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,wBAAwB,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,uCAAuC,CAAC;SAClG;KACF;AAED,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACjD,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,mBAAmB,EAAE;AACrC,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC5B;SACF;KACF;+GAxFU,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,ECdnD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qeASA,EDAY,MAAA,EAAA,CAAA,2VAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,sGAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAKxC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBARlD,SAAS;+BACE,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EAAA,OAAA,EACP,CAAC,2BAA2B,EAAE,YAAY,CAAC,EAAA,aAAA,EAGrC,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,qeAAA,EAAA,MAAA,EAAA,CAAA,2VAAA,CAAA,EAAA,CAAA;+GAIT,qBAAqB,EAAA,CAAA;sBAArD,SAAS;uBAAC,oBAAoB,CAAA;gBACH,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;;;METf,aAAa,CAAA;IAWxB,WAA6B,CAAA,MAAsB,EAChC,QAA6B,EAAA;QADnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QAChC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqB;QARxC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAGb,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAW,CAAC;KAKA;IAErD,IAAI,CAAC,aAA4B,EAAE,IAAsB,EAAA;AACvD,QAAA,IAAI,IAAI,EAAE,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;SACzC;KACF;AAED,IAAA,kBAAkB,CAAC,IAAsB,EAAA;AACvC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SAC7B;QAAC,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;SAC/C;KAEF;AAED,IAAA,mBAAmB,CAAC,aAA4B,EAAA;AAC9C,QAAA,IAAI,CAAC,0BAA0B,GAAG,eAAe,CAAC,aAAa,EAAE;YAC/D,mBAAmB,EAAE,IAAI,CAAC,QAAQ;AACnC,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,sCAAsC,EAAE;YAC3E,mBAAmB,EAAE,IAAI,CAAC,QAAQ;YAClC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC7E,SAAA,CAAC,CAAC;AAEH,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAErE,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC3B;AAED,IAAA,KAAK,CAAC,UAAoB,EAAA;QACxB,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAChC;aAAM;YACL,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;KAC1B;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED,IAAA,aAAa,CAAC,IAAa,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5B;KACF;IAED,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;+GA5EU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCiBY,oCAAoC,CAAA;AAM/C,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,WAAA,CAA6B,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QArBjD,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;QACpB,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QAEX,IAAU,CAAA,UAAA,GAAgC,IAAI,CAAC;QAmBhE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAmC,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,UAAU,IAAI,IAAI,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;KAC3C;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC5B;AAED,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACjD,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5B;KACF;+GArCU,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,ECxBjD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8gCA8BA,EDXY,MAAA,EAAA,CAAA,g0eAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,qMAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAK5B,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBARhD,SAAS;+BACE,oCAAoC,EAAA,UAAA,EAClC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,aAAA,EAGzB,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,8gCAAA,EAAA,MAAA,EAAA,CAAA,g0eAAA,CAAA,EAAA,CAAA;+EAStC,KAAK,EAAA,CAAA;sBADR,KAAK;gBASF,OAAO,EAAA,CAAA;sBADV,KAAK;;;MEzBK,uBAAuB,CAAA;AARpC,IAAA,WAAA,GAAA;QASW,IAAQ,CAAA,QAAA,GAAsB,OAAO,CAAC;QACtC,IAAkB,CAAA,kBAAA,GAAa,KAAK,CAAC;QACrC,IAAkB,CAAA,kBAAA,GAAa,KAAK,CAAC;QAE9C,IAAW,CAAA,WAAA,GAAY,GAAG,CAAC;QAC3B,IAAc,CAAA,cAAA,GAAa,IAAI,CAAC;AAgBjC,KAAA;IAbC,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;KAC5C;AAED,IAAA,cAAc,CAAC,KAAc,EAAA;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC;AACrB,QAAA,IAAG,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAC;AAC1B,YAAA,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC;SAC5B;AACI,aAAA,IAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAC;AAChC,YAAA,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC;SAC5B;KACF;+GArBU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,qMCbpC,svCA4CA,EAAA,MAAA,EAAA,CAAA,sgGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpCY,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,sFAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAK9C,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACnB,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,mBAAmB,EAAE,YAAY,CAAC,EAG3C,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,svCAAA,EAAA,MAAA,EAAA,CAAA,sgGAAA,CAAA,EAAA,CAAA;8BAGjC,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;gBACG,kBAAkB,EAAA,CAAA;sBAA1B,KAAK;;;AEmBF,MAAO,+BAAgC,SAAQ,+BAA+B,CAAA;AAClF,IAAA,WAAA,CAAY,gBAAmC,EAAA;QAC7C,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAGf,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAkB,CAAC;AAEpD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;QAE3C,IAAe,CAAA,eAAA,GAA0B,EAAE,CAAC;QAErD,IAAa,CAAA,aAAA,GAA0B,IAAI,CAAC;KAR3C;IAUD,IAAI,YAAY,CAAC,KAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;KAC1C;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED,IAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,QAAA,SAAS,CAAC,IAAI,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC/C,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;YAC/B,OAAO;SACR;QACD,MAAM,aAAa,GAA4B,OAAO,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC;QACxF,MAAM,YAAY,GAA4B,OAAO,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC;QACtF,IAAG,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC3D;QACD,OAAO,CAAC,GAAG,CAAC,CAAA,kBAAA,EAAqB,aAAa,CAAO,IAAA,EAAA,YAAY,CAAE,CAAA,CAAC,CAAC;KACtE;+GArCU,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAN/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,gBAAgB,CAAC,EC7B/B,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,syBAoBA,EDII,MAAA,EAAA,CAAA,+4ZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACV,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,EACX,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,skCACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAQR,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAf3C,SAAS;+BACE,8BAA8B,EAAA,UAAA,EAC5B,IAAI,EACP,OAAA,EAAA;wBACP,YAAY;wBACV,WAAW;wBACX,cAAc;wBACd,eAAe;AAClB,qBAAA,EAAA,SAAA,EACU,CAAC,gBAAgB,CAAC,EAGd,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,syBAAA,EAAA,MAAA,EAAA,CAAA,+4ZAAA,CAAA,EAAA,CAAA;qFAQhC,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBAEE,eAAe,EAAA,CAAA;sBAAvB,KAAK;;;MEtCK,SAAS,CAAA;IAEpB,SAAS,CAAC,KAAa,EAAE,OAAe,EAAA;AACtC,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC;QAEpB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAE/B,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;KAC3C;+GATU,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,CAAA,EAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCMY,iBAAiB,CAAA;AAE5B,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AACzC,QAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACvB;AAED,IAAA,gBAAgB,CAAC,KAAsB,EAAA;AACrC,QAAA,IAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACxD,OAAO,KAAK,CAAC,cAAc,CAAC,CAAA,EAAG,KAAK,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;SAC/C;AACD,QAAA,OAAO,IAAI,SAAS,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;KACnE;AAED,IAAA,kBAAkB,CAAC,KAAsB,EAAA;QACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACzC,QAAA,MAAM,UAAU,GAAW,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC1D,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,IAAG,UAAU,EAAE;AACb,YAAA,OAAO,UAAU,CAAC;SACnB;QACD,OAAO,KAAK,CAAC,KAAK,CAAC;KACpB;AAED,IAAA,mBAAmB,CAAC,KAAsB,EAAA;AACxC,QAAA,IAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACxD,OAAO,KAAK,CAAC,cAAc,CAAC,CAAA,EAAG,KAAK,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;SAC/C;QACD,OAAO,KAAK,CAAC,KAAK,CAAC;KACpB;AAED,IAAA,gBAAgB,CAAC,KAAsB,EAAA;AACrC,QAAA,IAAG,KAAK,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACrD,OAAO,KAAK,CAAC,KAAK,CAAC;SACpB;AACD,QAAA,IAAG,KAAK,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACxD,OAAO,KAAK,CAAC,cAAc,CAAC,CAAA,EAAG,KAAK,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;SAC/C;QACD,OAAO,KAAK,CAAC,KAAK,CAAC;KACpB;AAED,IAAA,kBAAkB,CAAC,KAAsB,EAAA;AACvC,QAAA,IAAG,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;AACtB,YAAA,OAAO,MAAM,CAAC;SACf;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,iBAAiB,CAAC,KAAsB,EAAA;AACtC,QAAA,IAAG,KAAK,CAAC,KAAK,KAAK,GAAG;eACjB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAC5B;AACF,YAAA,OAAO,MAAM,CAAC;SACf;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;AAED,IAAA,SAAS,CAAC,KAAsB,EAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACxB,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACrC;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SACvC;AAED,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACxC;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACrC;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SACvC;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACtC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC;KACpB;AAEO,IAAA,OAAO,CAAC,KAAgC,EAAA;QAC9C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;KAC9D;AAEO,IAAA,QAAQ,CAAC,KAAsB,EAAA;AACrC,QAAA,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACvE;AAEO,IAAA,UAAU,CAAC,KAAsB,EAAA;AACvC,QAAA,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACzE;AAEO,IAAA,WAAW,CAAC,KAAsB,EAAA;QACxC,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KACzG;AAEO,IAAA,QAAQ,CAAC,KAAsB,EAAA;AACrC,QAAA,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACvE;AAEO,IAAA,UAAU,CAAC,KAAsB,EAAA;AACvC,QAAA,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC5E;AAEO,IAAA,SAAS,CAAC,KAAsB,EAAA;AACtC,QAAA,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACxE;+GApHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA,EAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACRK,SAAU,0BAA0B,CAAC,MAAuB,EAAA;AAChE,IAAA,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS;WAC5B,MAAM,CAAC,KAAK,KAAK,IAAI;WACrB,MAAM,CAAC,KAAK,KAAK,EAAE;WACnB,MAAM,CAAC,KAAK,KAAK,MAAM;WACvB,MAAM,CAAC,KAAK,KAAK,IAAI;AACrB,WAAA,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AAC7B;;MCCa,4BAA4B,CAAA;IAMvC,IAAa,KAAK,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,QAAA,IAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;SAC9D;aACI;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC7B;KACF;IAED,IAAa,OAAO,CAAC,OAAe,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC5B;AAEO,IAAA,MAAM,CAAC,GAAW,EAAA;QACxB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AACxB,QAAA,IAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACvD,YAAA,OAAO,KAAK,CAAC;SACd;AAED,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;AAEO,IAAA,kBAAkB,CAAC,GAAW,EAAA;QACpC,IAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACpB,YAAA,OAAO,EAAE,CAAC;SACX;AACD,QAAA,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAEtB,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxC,YAAA,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC;SAC1B;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,WAAA,GAAA;AA5CU,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;KAyClC;+GA7CN,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,qICVzC,2QAQA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FDEa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EACzB,UAAA,EAAA,IAAI,EAGD,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,2QAAA,EAAA,CAAA;wDAQ7B,KAAK,EAAA,CAAA;sBAAjB,KAAK;gBAWO,OAAO,EAAA,CAAA;sBAAnB,KAAK;;;MECK,8BAA8B,CAAA;IASzC,IAAa,eAAe,CAAC,KAAuC,EAAA;QAClE,IAAG,CAAC,KAAK,EAAC;YACR,OAAO;SACR;AACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KAClC;AAED,IAAA,WAAA,GAAA;QAfS,IAAQ,CAAA,QAAA,GAAa,KAAK,CAAC;QAE1B,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAuB;AACxD,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,QAAQ,EAAE,KAAK;AAChB,SAAA,CAAC,CAAC;KASc;AAEjB,IAAA,YAAY,CAAC,MAAuB,EAAA;AAClC,QAAA,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;KAC3C;+GApBU,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EC5B3C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qzBAiBA,EDGM,MAAA,EAAA,CAAA,owBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,iBAAiB,0DACjB,4BAA4B,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAOrB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAb1C,SAAS;+BACE,6BAA6B,EAAA,UAAA,EAC3B,IAAI,EACP,OAAA,EAAA;wBACP,SAAS;wBACP,iBAAiB;wBACjB,4BAA4B;qBAC/B,EAGc,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,qzBAAA,EAAA,MAAA,EAAA,CAAA,owBAAA,CAAA,EAAA,CAAA;wDAIjC,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAQO,eAAe,EAAA,CAAA;sBAA3B,KAAK;;;AEeF,MAAO,yBAA0B,SAAQ,+BAA+B,CAAA;AAC5E,IAAA,WAAA,CAAY,gBAAmC,EAAA;QAC7C,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAGf,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAEpB,IAAgB,CAAA,gBAAA,GAAgC,IAAI,CAAC;QAMrD,IAAkB,CAAA,kBAAA,GAAkC,IAAI,CAAC;QAMxD,IAAG,CAAA,GAAA,GAAuB,IAAI,CAAC;QAC/B,IAAQ,CAAA,QAAA,GAAwB,SAAS,CAAC;AAclC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAU,EAAE,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAAU,EAAE,CAAC,CAAC;QACxE,IAAa,CAAA,aAAA,GAAY,EAAE,CAAC;QAEpC,IAAc,CAAA,cAAA,GAAgC,EAAE,CAAC;QACjD,IAAoB,CAAA,oBAAA,GAAgC,EAAE,CAAC;QACvD,IAAsB,CAAA,sBAAA,GAAgC,EAAE,CAAC;QAoHzD,IAAqB,CAAA,qBAAA,GAA4B,EAAE,CAAC;KAzJnD;AAMD,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAA;KAC7B;AAID,IAAA,IAAI,iBAAiB,GAAA;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAC/B;IAKD,IACI,YAAY,CAAC,EAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAE/C,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAUD,mCAAmC,GAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B;AACE,YAAA,EAAE,EAAE,iBAAiB;YACnB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACxD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,CAAC;AAC1D,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA,CACF,CAAC;KACH;IAED,qCAAqC,GAAA;AACnC,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC9B;AACE,YAAA,EAAE,EAAE,yBAAyB;YAC3B,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/C,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA,CACF,CAAC;AACF,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC9B;AACE,YAAA,EAAE,EAAE,2BAA2B;YAC7B,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;YAC/C,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;AACjD,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,WAAW,EAAE,WAAW;AAC3B,SAAA,CACF,CAAC;KACH;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,mCAAmC,EAAE,CAAC;QAC3C,IAAI,CAAC,qCAAqC,EAAE,CAAC;AAE7C,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAEhD,QAAA,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,EAAE,CAAC,EAAE,KAAI;gBACX,IAAG,EAAE,EAAC;oBACJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;iBAChD;aACF;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,EAAE,KAAI;AACX,gBAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1C,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1D;AACF,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,iCAAiC,CAAC,IAA0B,EAAA;AAC1D,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACtC;AAED,IAAA,iCAAiC,CAAC,IAA4B,EAAA;AAC5D,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAChD;IAEO,oBAAoB,CAAC,QAAiB,EAAE,QAA6B,EAAA;AAC3E,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;QAED,IAAG,CAAC,QAAQ,EAAE;YACZ,OAAO;SACR;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;KACxF;IAEO,sBAAsB,CAAC,QAAiB,EAAE,QAA6B,EAAA;QAC7E,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;AACvD,YAAA,IAAI,EAAE,CAAC,aAAa,KAAI;gBACtB,IAAG,aAAa,EAAC;oBACf,IAAI,CAAC,gBAAgB,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;iBACtF;aACF;AACF,SAAA,CAAC,CAAA;KACH;IAEO,qCAAqC,CAAC,QAAiB,EAAE,QAA6B,EAAA;AAC5F,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;QAED,IAAG,CAAC,QAAQ,EAAE;YACZ,OAAO;SACR;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;KAChF;IAEO,gCAAgC,CAAC,QAAiB,EAAE,QAA6B,EAAA;QACvF,IAAI,CAAC,qCAAqC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;AACxE,YAAA,IAAI,EAAE,CAAC,aAAa,KAAI;gBACtB,IAAG,aAAa,EAAC;oBACf,MAAM,YAAY,GAAG,4BAA4B,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACpF,oBAAA,IAAG,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAC;AAChC,wBAAA,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;qBACxC;yBAAI;AACH,wBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;qBAChC;iBACF;aACF;AACF,SAAA,CAAC,CAAA;KACH;IAIO,qBAAqB,CAAC,QAAiB,EAAE,QAA6B,EAAA;AAC5E,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;QAED,IAAG,CAAC,QAAQ,EAAE;YACZ,OAAO;SACR;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAE,CAAC,CAAC;KAC1F;IAEO,uBAAuB,CAAC,QAAiB,EAAE,QAA6B,EAAA;QAC9E,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;;;;AAMtD,YAAA,IAAI,EAAE,CAAC,cAAoB,KAAI;gBAC7B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,kCAAkC,CAAC,cAAc,CAAC,CAAC;;aAEtF;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;aACjC;AACF,SAAA,CACF,CAAA;KACF;;AAGO,IAAA,QAAQ,CAAC,MAAW,EAAA;QAC1B,MAAM,SAAS,GAAW,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjE,QAAA,MAAM,IAAI,GAAW,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,gBAAgB,GAAW,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC9E,QAAA,MAAM,WAAW,GAAW,MAAM,CAAC,WAAW,CAAC;QAC/C,MAAM,SAAS,GAAW,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACjE,QAAA,MAAM,IAAI,GAAW,MAAM,CAAC,EAAE,CAAC;AAC/B,QAAA,IAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE;YACzE,OAAO,CAAA,EAAG,SAAS,CAAK,EAAA,EAAA,IAAI,KAAK,SAAS,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAC;SACxD;AACD,QAAA,OAAO,CAAG,EAAA,SAAS,CAAK,EAAA,EAAA,IAAI,CAAK,EAAA,EAAA,gBAAgB,CAAK,EAAA,EAAA,WAAW,CAAK,EAAA,EAAA,SAAS,CAAK,EAAA,EAAA,IAAI,EAAE,CAAC;KAC5F;;AAGO,IAAA,kCAAkC,CAAC,cAAoB,EAAA;QAE7D,MAAM,MAAM,GAAiC,EAAE,CAAC;QAChD,IAAI,qBAAqB,GAAG,IAAI,CAAC;AACjC,QAAA,IAAG,cAAc,CAAC,wBAAwB,EAAC;AACzC,YAAA,qBAAqB,GAAG,cAAc,CAAC,wBAAwB,CAAC;SACjE;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAC;AAC7B,YAAA,OAAO,MAAM,CAAC;SACf;AAED,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,UAAU,CAAC;AAC/C,QAAA,KAAI,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAC;AAEnE,YAAA,MAAM,QAAQ,GAA0B;AACtC,gBAAA,IAAI,EAAG,SAAS;AAChB,gBAAA,QAAQ,EAAG,KAAK;AAChB,gBAAA,UAAU,EAAG,EAAE;aAChB,CAAC;AAEF,YAAA,IAAG,qBAAqB,GAAG,SAAS,CAAC,EAAC;AACpC,gBAAA,QAAQ,CAAC,IAAI,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;aAClD;YAED,IAAG,CAAC,aAAa,EAAC;gBAChB,SAAS;aACV;YAED,KAAI,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAC;AAE/C,gBAAA,MAAM,SAAS,GAAoB;oBACjC,EAAE,EAAE,MAAM,CAAC,EAAE;oBACX,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,YAAY,EAAE,MAAM,CAAC,YAAY;AACjC,oBAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;iBACjC,CAAC;AAEF,gBAAA,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrC;AAED,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvB;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,aAAa,CAAC,MAA+B,EAAA;AAC3C,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,iBAAiB,EAAE;AACnC,YAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC;SACnD;AAED,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,yBAAyB,EAAE;AAC3C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAChD,YAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;SAChD;AAED,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,2BAA2B,EAAE;AAC7C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAChD,YAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;SAC/C;KACF;AAED,IAAA,kBAAkB,CAAC,oBAA0C,EAAA;QAC3D,OAAO,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AACrD,YAAA,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;KACJ;+GAvRU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,oLCpDtC,mrEAyDA,EAAA,MAAA,EAAA,CAAA,w4BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBI,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,6BAA6B,EAC7B,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,+BAA+B,iIAC/B,uCAAuC,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvC,0BAA0B,EAC1B,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mCAAmC,6EACnC,8BAA8B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAMvB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EACP,OAAA,EAAA;wBACP,uBAAuB;wBACrB,6BAA6B;wBAC7B,eAAe;wBACf,+BAA+B;wBAC/B,uCAAuC;wBACvC,0BAA0B;wBAC1B,mCAAmC;wBACnC,8BAA8B;qBACjC,EAGc,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,mrEAAA,EAAA,MAAA,EAAA,CAAA,w4BAAA,CAAA,EAAA,CAAA;qFAqBjC,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAGF,YAAY,EAAA,CAAA;sBADf,KAAK;;;MEhDK,oCAAoC,CAAA;IAuB/C,WAA6B,CAAA,aAA4B,EAAmB,gBAAkC,EAAA;QAAjF,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAmB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAtB9G,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;QACrB,IAA2B,CAAA,2BAAA,GAAW,SAAS,CAAC;QAChD,IAA2B,CAAA,2BAAA,GAAW,SAAS,CAAC;AAE7B,QAAA,IAAA,CAAA,OAAO,GAA2B;AACnD,YAAA;AACE,gBAAA,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;gBACtE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;AACxE,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,WAAW,EAAE,SAAS;AACvB,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;gBACtE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;AACxE,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,WAAW,EAAE,WAAW;AACzB,aAAA;SACF,CAAA;AAGC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAmC,CAAC;QAEpE,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,IAAI,SAAS,CAAC;YACjF,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,IAAI,SAAS,CAAC;AACjF,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;SAC3C;KACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1B,QAAA,QAAQ,CAAC,aAA6B,EAAE,IAAI,EAAE,CAAC;KACjD;AAED,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACjD,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5B;KACF;AAED,IAAA,sBAAsB,CAAC,MAA+B,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAE3B,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,IAAI,CAAC;SACzB;KACF;AAGD,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;+GA3DU,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAe,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oCAAoC,EC1BjD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wlBAkBA,EDAI,MAAA,EAAA,CAAA,i6DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,+BACf,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAOjB,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAZhD,SAAS;+BACE,oCAAoC,EAAA,UAAA,EAClC,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,0BAA0B;qBAC3B,EAGc,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,wlBAAA,EAAA,MAAA,EAAA,CAAA,i6DAAA,CAAA,EAAA,CAAA;8GA0D1C,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AE/DvC,MAAM,gCAAgC,GAAG,OAAO;AAcjD,MAAO,yBAA0B,SAAQ,+BAA+B,CAAA;AAE5E,IAAA,WAAA,CAAY,gBAAmC,EACnB,aAA4B,EACrC,QAAmB,EACnB,EAAc,EAAA;QAE/B,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAJG,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QACrC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAOzB,IAAa,CAAA,aAAA,GAAY,EAAE,CAAC;QACpC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;;QAE9B,IAAU,CAAA,UAAA,GAAU,KAAK,CAAC;QAEjB,IAAG,CAAA,GAAA,GAAuB,IAAI,CAAC;QAC/B,IAAuB,CAAA,uBAAA,GAAW,IAAI,CAAC;QACvC,IAAuB,CAAA,uBAAA,GAAW,IAAI,CAAC;QACvC,IAAO,CAAA,OAAA,GAAoC,IAAI,CAAC;AAChD,QAAA,IAAA,CAAA,gBAAgB,GAAuB,sBAAsB,CAAC;QAC9D,IAAG,CAAA,GAAA,GAAY,KAAK,CAAC;AAYb,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAU,EAAE,CAAC,CAAC;QACtE,IAAgB,CAAA,gBAAA,GAAY,CAAC,CAAC;QAC9B,IAAY,CAAA,YAAA,GAA0B,EAAE,CAAC;AACzC,QAAA,IAAA,CAAA,cAAc,GAAgC;AAC5C,YAAA;AACE,gBAAA,EAAE,EAAE,eAAe;gBACjB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC;gBACrD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC;AACvD,gBAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,uBAAuB;AACvC,gBAAA,WAAW,EAAE,SAAS;AACzB,aAAA;SACF,CAAC;QA4GF,IAAiB,CAAA,iBAAA,GAAoB,IAAI,CAAC;QAC1C,IAAQ,CAAA,QAAA,GAAW,KAAK,CAAC;QACzB,IAAsB,CAAA,sBAAA,GAAU,gBAAgB,CAAC;QApJ/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC;KAE3D;IAeD,IACI,YAAY,CAAC,EAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAeD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;AAC/B,YAAA,IAAI,EAAE,CAAC,EAAE,KAAI;AACX,gBAAA,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;aACzC;AACF,SAAA,CAAC,CAAC;KACJ;;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;AAED,IAAA,GAAG,CAAC,MAAc,EAAE,GAAG,OAAkB,EAAA;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAa,EAAE,aAAqB,KAAI;AAC1E,YAAA,MAAM,cAAc,GAAG,aAAa,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC;AACjF,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEvC,YAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,gBAAA,OAAO,QAAQ,CAAC;aACjB;AACD,YAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,gBAAA,OAAO,EAAE,CAAC;aACX;AACD,YAAA,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;AAEH;;AAE8E;IAC5E,aAAa,CAAC,GAAc,EAAC,IAA0B,EAAA;AAErD,QAAA,MAAM,MAAM,GAAsB;YAChC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;AACF,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,qCAAqC,CAAC;QACzD,MAAM,GAAG,GAAG,GAAG,CAAC,aAAa,EAAE,GAAC,UAAU,CAAC;QAC3C,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,QAAA,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,QAAA,MAAM,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA,WAAA,EAAc,YAAY,CAAA,EAAI,qBAAqB,GAAG,EAAE,GAAG,qBAAqB,EAAE,CAAC;QACxI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC3C,YAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,gBAAA,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxD,gBAAA,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C;iBAAM;AACL,gBAAA,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;aACtC;SACF;aAAM;AACL,YAAA,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;SACtC;QACD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAE/C,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,uBAAuB,CAAC,GAAc,EAAE,KAAoC,EAAA;QAClF,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,EAAC,IAAI,CAAC,CAAC,CAAC;QACzE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,KAAI;AAC1B,YAAA,IAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAAG,OAAO,CAAC,CAAC,CAAC;AACnE,YAAA,IAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE;AAAG,gBAAA,OAAO,CAAC,CAAC;AACnE,YAAA,OAAO,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,cAAc,CAAC;KACvB;AAEO,IAAA,8BAA8B,CAAC,QAAiB,EAAA;AAEtD,QAAA,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;AACrD,YAAA,IAAI,EAAE,CAAC,aAAa,KAAI;gBACtB,IAAG,aAAa,EAAC;;AAEf,oBAAA,IAAI,CAAC,gBAAgB,GAAG,aAAa,EAAE,MAAM,CAAC;AAC9C,oBAAA,IAAG,IAAI,CAAC,GAAG,EAAC;AACV,wBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAC,aAAa,CAAC,CAAC;wBACpE,IAAG,MAAM,EAAC;AACR,4BAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;yBAC5B;qBACF;iBACF;aACF;AACF,SAAA,CAAC,CAAA;KACH;AAEO,IAAA,4BAA4B,CAAC,QAAiB,EAAA;AACpD,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;QAED,IAAG,CAAC,QAAQ,EAAE;YACZ,OAAO;SACR;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC5D;;IAOD,kBAAkB,CAAC,MAAM,GAAG,IAAI,EAAA;AAC9B,QAAA,IAAG,CAAC,IAAI,CAAC,gBAAgB,EAAC;YACxB,OAAO;SACR;QACD,MAAM,OAAO,GAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACtE,YAAA,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;AACD,QAAA,IAAG,IAAI,CAAC,aAAa,EAAC;AACpB,YAAA,IAAG,OAAO,CAAC,aAAa,EAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAC,SAAS,EAAC,MAAM,GAAC,OAAO,GAAC,MAAM,CAAC,CAAA;aAC9E;SACF;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAC,SAAS,EAAC,MAAM,GAAC,OAAO,GAAC,MAAM,CAAC,CAAA;SAC9E;;AAGD,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;KACxB;IAGD,+BAA+B,GAAA;AAC7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAChC;IAED,QAAQ,CAAC,GAAc,EAAC,GAAY,EAAA;;AAElC,QAAA,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAE,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAE,CAAC;AAC3F,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC5B,OAAO;SACR;AACD,QAAA,IAAG,IAAI,CAAC,UAAU,EAAC;AACjB,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO;SACR;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AAC9B,YAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAC,EAAE,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;;AAEH,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,KAC3C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAC,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,CAC7F,CAAC;;QAGF,QAAQ,CAAC,YAAY,CAAC;aACrB,IAAI;;AAEH,QAAAI,WAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAC1E;AACA,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,kBAAkB,KAAI;AAC3B,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAC9C,GAAG,EACH,kBAAkB,CACnB,CAAC;AACF,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;AAC3D,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;AACF,SAAA,CAAC,CAAC;KACJ;AAGD,IAAA,oBAAoB,CAAC,GAAc,EAAA;QACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,KAAK,sBAAsB,CAAC;AACtE,QAAA,MAAM,SAAS,GAAG,CAAC,MAAe,KAAS;AACzC,YAAA,MAAM,GAAG,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;YAC7D,MAAM,cAAc,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,YAAA,IAAG,CAAC,IAAI,CAAC,WAAW,EAAC;gBACnB,IAAI,CAAC,+BAA+B,EAAE,CAAC;gBACvC,IAAI,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC;iBACxB;aACF;AACH,SAAC,CAAA;AAED,QAAA,IAAI,OAAO,SAAS,KAAK,UAAU,IAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YAClE,OAAO;SACR;QAED,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,YAAY,GAA0B,EAAE,CAAC;YAC7C,IAAI,WAAW,EAAE;AACf,gBAAA,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,YAAY,EAAE;oBACjB,OAAO;iBACR;aACF;YAED,MAAM,SAAS,GAAI,IAAI,SAAS,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAC;YAC7E,SAAS,EAAE,UAAU,EAAE,CAAC;;YAExB,MAAM,OAAO,GAAqB,EAAE,CAAC;;YAErC,IAAI,CAAC,WAAW,EAAE;;AAEhB,gBAAA,IAAI,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;;gBAE5E,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;gBAClE,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,gBAAgB,CAAC;aAC7D;;AAGD,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC;AAC9C,YAAA,IAAG,IAAI,CAAC,gBAAgB,EAAC;AACvB,gBAAA,MAAM,iBAAiB,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC9G,IAAI,CAAC,iBAAiB,EAAE;oBACtB,OAAO;iBACR;AACD,gBAAA,iBAAiB,CAAC,oBAAoB,GAAG,SAAS,CAAC;AAEnD,gBAAA,IAAG,IAAI,CAAC,OAAO,EAAC;AACd,oBAAA,IAAG,IAAI,CAAC,aAAa,EAAC;AACpB,wBAAA,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;qBAClG;yBAAI;AACH,wBAAA,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;qBACjE;iBACF;AACD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;aAC/B;SACF,EAAC,GAAG,CAAC,CAAC;KAER;AAED,IAAA,qBAAqB,CAAC,GAAc,EAAE,EAAS,EAAC,MAAY,EAAA;QAC1D,MAAM,CAAC,eAAe,EAAE,CAAC;QACzB,MAAM,CAAC,cAAc,EAAE,CAAC;AACxB,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAC/D,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC5D,CAAC,SAAS,CAAC;AACV,YAAA,IAAI,EAAE,CAAC,kBAAkB,KAAI;AAC3B,gBAAA,IAAG,IAAI,CAAC,GAAG,EAAC;AACV,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAC,kBAAkB,CAAC,CAAC;iBAC/E;aACF;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;aAC/D;AACF,SAAA,CAAC,CAAC;KACJ;IAED,oBAAoB,CAAC,UAA6B,EAAC,MAAY,EAAA;AAC7D,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;QACD,IAAG,CAAC,UAAU,EAAE;YACd,OAAO;SACR;AACD,QAAA,MAAM,GAAG,GAAI,IAAI,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oCAAoC,EAAE;AAC5D,YAAA,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;AACnD,gBAAA,eAAe,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK;AAClG,aAAA,EAAE,IAAI,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,CAAC;gBAC9D,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,6CAA6C,CAAC;AACrF,gBAAA,2BAA2B,EAAE,SAAS;gBACtC,cAAc,EAAE,MAAK;oBACnB,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAC,UAAU,CAAC,EAAE,EAAC,MAAM,CAAC,CAAC;iBACtD;AACF,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAGD,IAAA,aAAa,CAAC,MAA+B,EAAA;AAC3C,QAAA,IAAG,CAAC,IAAI,CAAC,GAAG,EAAC;YACX,OAAO;SACR;AACD,QAAA,MAAM,GAAG,GAAI,IAAI,CAAC,GAAG,CAAC;AACtB,QAAA,IAAG,MAAM,CAAC,EAAE,IAAI,eAAe,EAAC;AAC9B,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;SAChC;KACF;+GApVU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,6UC/BtC,q/CAwCA,EAAA,MAAA,EAAA,CAAA,wxNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjBK,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mCAAmC,6EACnC,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAMlB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EACP,OAAA,EAAA;wBACN,eAAe;wBACf,mCAAmC;wBACnC,0BAA0B;qBAC5B,EAGc,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,q/CAAA,EAAA,MAAA,EAAA,CAAA,wxNAAA,CAAA,EAAA,CAAA;+JAoBjC,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBACG,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAGF,YAAY,EAAA,CAAA;sBADf,KAAK;;;AE1CF,MAAO,6BAA8B,SAAQ,+BAA+B,CAAA;AAChF,IAAA,WAAA,CAAY,gBAAkC,EAAA;QAC5C,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAIhB,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;AAEnC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAQ,CAAC;KALxD;IAOD,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;KACjC;AAED,IAAA,qBAAqB,CAAC,MAAqB,EAAA;AACzC,QAAA,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,EAAE;YAChD,MAAM,CAAC,cAAc,EAAE,CAAC;YAExB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;KACF;+GApBU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd1C,6gBAcA,EAAA,MAAA,EAAA,CAAA,s5JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLI,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAKN,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBATzC,SAAS;+BACE,4BAA4B,EAAA,UAAA,EAC1B,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,6gBAAA,EAAA,MAAA,EAAA,CAAA,s5JAAA,CAAA,EAAA,CAAA;qFASQ,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEI,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;;;MEAI,8BAA8B,CAAA;AAlB3C,IAAA,WAAA,GAAA;QAmBW,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QAElC,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;;AAG5B,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,KAAa,KAAI,GAAG,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,GAAG,CAAC;AA2BtB,KAAA;AAzBC,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAED,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;AAED,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;AAC/C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;IAED,UAAU,GAAA;QACR,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;+GAlCU,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAR9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;AAC7D,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBH,0NASA,EAAA,MAAA,EAAA,CAAA,qbAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDI,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,eAAe,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAaN,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAlB1C,SAAS;+BACE,8BAA8B,EAAA,UAAA,EAC5B,IAAI,EACP,OAAA,EAAA;wBACP,mBAAmB;wBACnB,eAAe;qBAChB,EAGc,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAC/B,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oCAAoC,CAAC;AAC7D,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,0NAAA,EAAA,MAAA,EAAA,CAAA,qbAAA,CAAA,EAAA,CAAA;8BAGQ,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;AEaF,MAAO,yBAA0B,SAAQ,+BAA+B,CAAA;AAG5E,IAAA,WAAA,CAAY,gBAAkC,EAAmB,aAA4B,EAAmB,WAAwB,EAAA;QACtI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QADuC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAmB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAmB/H,IAAG,CAAA,GAAA,GAAsB,IAAI,CAAC;AActB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;AACpD,QAAA,IAAA,CAAA,2BAA2B,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;QACvE,IAAa,CAAA,aAAA,GAAW,EAAE,CAAC;QAEnC,IAAc,CAAA,cAAA,GAAgC,EAAE,CAAC;QAExC,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;QACpC,IAAmB,CAAA,mBAAA,GAAY,IAAI,CAAC;QAE7C,IAAU,CAAA,UAAA,GAA4B,EAAE,CAAC;QAvCvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1C,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YACd,GAAG,EAAE,CAAC,EAAE;AACN,gBAAA;AACE,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9B,oBAAA,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC;AAClC,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAG;YAClD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,KAAK,OAAO,CAAC;AACvD,SAAC,CAAC,CAAC;KACJ;IAID,IACI,YAAY,CAAC,EAAU,EAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AAExB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAaD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB;AACE,YAAA,EAAE,EAAE,eAAe;YACjB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACtD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACxD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA,CACF,CAAC;KACH;AAED,IAAA,sBAAsB,CAAC,MAA+B,EAAA;AACpD,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,eAAe,EAAE;AACjC,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAC5B,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAK;AACjH,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACxC,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC7B,iBAAC,CAAC,CAAC;aACJ;SACF;KACF;AAEO,IAAA,cAAc,CAAC,QAAgB,EAAA;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG;YACX,OAAO;AAET,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAmC,KAAI;AACpF,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AAC7B,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,YAAY,CAAC,IAAY,EAAE,GAAW,EAAE,QAAgB,EAAA;QAC9D,IAAI,CAAC,IAAI,CAAC,GAAG;YACX,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAExD,QAAA,IAAI,YAAY,GAAW,GAAG,CAAC,IAAI,EAAE,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAChD,YAAA,YAAY,GAAG,UAAU,GAAG,YAAY,CAAC;SAC1C;QAED,IAAI,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEvC,QAAA,IAAI,aAAa,KAAK,EAAE,EAAE;YACxB,aAAa,GAAG,YAAY,CAAC;SAC9B;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1B,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,GAAG,EAAE,YAAY;AACjB,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACvD;AAED,IAAA,kCAAkC,CAAC,SAA2B,EAAA;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oCAAoC,EAAE;AAC5D,YAAA,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;AACnD,gBAAA,eAAe,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK;AAClG,aAAA,EAAE,IAAI,EAAE;gBACP,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,CAAC;gBACzD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wCAAwC,CAAC;AAChF,gBAAA,2BAA2B,EAAE,SAAS;gBACtC,cAAc,EAAE,MAAK;AACnB,oBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;iBACpC;AACF,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CAAC,EAAU,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,GAAG;YACX,OAAO;AAET,QAAA,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;KACJ;+GA/HU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,ECpCtC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6nCA2BA,EDJI,MAAA,EAAA,CAAA,oWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,kIAC1B,mCAAmC,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnC,6BAA6B,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,OAAO,EACP,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,6rBAEnB,8BAA8B,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAMrB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjBrC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EACP,OAAA,EAAA;wBACP,0BAA0B;wBAC1B,mCAAmC;wBACnC,6BAA6B;wBAC7B,OAAO;wBACP,eAAe;wBACf,mBAAmB;wBACnB,IAAI;wBACJ,8BAA8B;qBAC/B,EAGc,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,6nCAAA,EAAA,MAAA,EAAA,CAAA,oWAAA,CAAA,EAAA,CAAA;wIAwBjC,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAGF,YAAY,EAAA,CAAA;sBADf,KAAK;gBAkBG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;;;ME7DK,kCAAkC,CAAA;AAM7C,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,WAAA,CAA6B,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QApBjD,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;QACpB,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QAoB5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAiC,CAAC;QAClE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;KAC3C;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC5B;AAED,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACjD,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5B;KACF;+GApCU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,EClB/C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,yrBAiBA,EDJY,MAAA,EAAA,CAAA,ugHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAK5B,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAR9C,SAAS;+BACE,kCAAkC,EAAA,UAAA,EAChC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,CAAC,EAAA,aAAA,EAGzB,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,yrBAAA,EAAA,MAAA,EAAA,CAAA,ugHAAA,CAAA,EAAA,CAAA;+EAStC,KAAK,EAAA,CAAA;sBADR,KAAK;gBASF,OAAO,EAAA,CAAA;sBADV,KAAK;;;AErBK,MAAA,6BAA6B,GAA+B;AACvE,IAAA,EAAE,EAAE,EAAE,mBAAmB,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACtH,IAAA,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,uBAAuB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AAC7G,IAAA,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,yBAAyB,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;AACvH,IAAA,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;AAC1G,IAAA,EAAE,EAAE,EAAE,oBAAoB,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,6BAA6B,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;EAC7I;MAUW,4BAA4B,GAAG,IAAI,cAAc,CAA4B,8BAA8B;;MCtB3G,0BAA0B,CAAA;AAY9B,IAAA,YAAY,CAAC,GAAW,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1B;AAED,IAAA,WAAA,CAGmB,yBAGhB,EAAA;QAHgB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAGzC;;AApBc,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAExD,6BAA6B,CAAC,CAAC;AACjB,QAAA,IAAA,CAAA,oBAAoB,GAClC,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;;AAGzB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAU,CAAC;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;;AAezD,QAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE,2BAA2B,EAAE;YAC/D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAC3B,IAAI,CAAC,yBAAyB,CAAC,2BAA2B,CAC3D,CAAC;SACH;KACF;AA9BU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAkB3B,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;mHAlB3B,0BAA0B,EAAA,CAAA,CAAA,EAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;0BAkBN,QAAQ;;0BACR,MAAM;2BAAC,4BAA4B,CAAA;;;AChBxC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;MASlC,mBAAmB,CAAA;;IAI9B,IAAa,SAAS,CAAC,KAAyB,EAAA;QAC9C,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;AAED,QAAA,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACrD;IAkBD,WACqE,CAAA,yBAAoD,EACpG,0BAAsD,EAAA;QADN,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA2B;QACpG,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA4B;QA5BlE,IAAY,CAAA,YAAA,GAAmB,iBAAiB,CAAC;AAShD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;;QAGpC,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;;AAEvE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;;AAEvF,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;;AAEpC,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,CACvG,CAAA;AACkB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;;QAGvC,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,yBAAyB,EAAE,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC;AAMtF,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC3B;KACF;IAGS,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;KAC3B;IAGS,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;KAC5B;IAEM,QAAQ,GAAA;;AAEb,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,yBAAyB,EAAE,QAAQ,EAAE,EAAE,EAAE;AACvE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;SACvG;KACF;AAED;;;;AAIG;IACO,QAAQ,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,OAAO;SACR;QAED,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;KAC7D;AAlEU,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBA6BR,4BAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AA7BvC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EChBhC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,knBAiBA,EDLY,MAAA,EAAA,CAAA,wjrCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,mFAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIvB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cACf,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,knBAAA,EAAA,MAAA,EAAA,CAAA,wjrCAAA,CAAA,EAAA,CAAA;;0BAiChC,QAAQ;;0BAAI,MAAM;2BAAC,4BAA4B,CAAA;+EA5BvB,wBAAwB,EAAA,CAAA;sBAAlD,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAChB,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAEO,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAOI,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBA2BG,YAAY,EAAA,CAAA;sBADrB,YAAY;uBAAC,YAAY,CAAA;gBAMhB,YAAY,EAAA,CAAA;sBADrB,YAAY;uBAAC,YAAY,CAAA;;;MEzCf,4BAA4B,CAAA;AASvC,IAAA,WAAA,CAEmB,0BAAsD,EAAA;QAAtD,IAA0B,CAAA,0BAAA,GAA1B,0BAA0B,CAA4B;AAT/D,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;;QAKpC,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;;AAOtE,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACnC,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CAAuC,CAAA;SAChI;aAAM;YACL,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAA6B,6BAA6B,CAAC,CAAC,UAAU,EAAE,CAAC;SAC3G;KACF;+GAnBU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,6JAJ5B,CAAC,0BAA0B,CAAC,ECbzC,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,4jBAWM,qKDDM,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAOlB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAVxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,cACzB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,CAAC,EAGnB,SAAA,EAAA,CAAC,0BAA0B,CAAC,mBACtB,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,4jBAAA,EAAA,MAAA,EAAA,CAAA,6GAAA,CAAA,EAAA,CAAA;;0BAYvC,QAAQ;;0BAAI,QAAQ;yCATd,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACI,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MEjBI,UAAU,CAAA;AAMrB,IAAA,WAAA,CAAY,IAA0B,EAAA;QACpC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;KAC5B;AACF,CAAA;MAIqB,iBAAiB,CAAA;AACtB,IAAA,SAAA,IAAA,CAAA,UAAU,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,EAAA;IAExC,OAAO,MAAM,CAAC,KAAiB,EAAA;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACb;IAEM,OAAO,KAAK,CAAC,EAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;IAEM,OAAO,WAAW,CAAC,IAAY,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACb;IAEM,OAAO,OAAO,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;IAEM,OAAO,OAAO,CAAC,IAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;AAEM,IAAA,OAAO,KAAK,GAAA;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;;;MCrCU,yBAAyB,CAAA;AAHtC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAsB,IAAI,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;AAoChE,KAAA;AAlCQ,IAAA,aAAa,CAAC,KAAwB,EAAA;AAC3C,QAAA,IAAI,OAAmB,CAAC;AACxB,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC;AACvC,iBAAA,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;AACvB,iBAAA,KAAK,EAAE,CAAC;SACZ;aAAM;YACL,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;SACnD;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;cACnC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;AACtC,cAAE,CAAC,OAAO,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACjC;AAEM,IAAA,gBAAgB,CAAC,YAAwB,EAAA;QAC9C,MAAM,QAAQ,GACZ,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,YAAY,CAAC,IAAI,IAAI,CAAC;AAC1E,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACjC;AAEM,IAAA,cAAc,CAAC,WAAyB,EAAA;AAC7C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACpC;IAEM,QAAQ,CAAC,IAAY,EAAE,QAAgB,EAAA;QAC5C,MAAM,MAAM,GAAsB,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC9D,QAAA,MAAM,CAAC,GAAG,GAAG,qBAAqB,CAAC;AACnC,QAAA,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;AACzB,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,QAAA,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,MAAM,CAAC,KAAK,EAAE,CAAC;KAChB;+GArCU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFxB,MAAM,EAAA,CAAA,CAAA,EAAA;;4FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACND,MAAM,OAAO,GAAG,IAAI,CAAC;AAEd,MAAM,gBAAgB,GAAG;AAC5B,IAAA,EAAE,EAAE,IAAI;AACR,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,IAAI;;CAEF,CAAC;AAQL,MAAO,gBAAiB,SAAQ,WAAW,CAAA;IAIpC,SAAS,CAAC,KAAc,EAAE,aAAA,GAA0B,gBAAgB,CAAC,EAAE,EAAE,UAAA,GAAqB,OAAO,EAAA;QAC1G,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAChE;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACzD,IAAI,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACrD,QAAA,YAAY,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;AAElC,QAAA,OAAO,CAAI,CAAA,EAAA,YAAY,CAAI,CAAA,EAAA,aAAa,GAAG,CAAC;KAC/C;IAEO,gBAAgB,CAAC,KAAa,EAAE,IAAc,EAAA;QAClD,QAAO,IAAI;AACP,YAAA,KAAK,IAAI;gBACL,OAAO,KAAK,GAAG,OAAO,CAAC;AAC3B,YAAA,KAAK,IAAI;AACL,gBAAA,OAAO,KAAK,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC;AACvC,YAAA,KAAK,KAAK;gBACN,OAAO,KAAK,IAAI,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;AACjD,YAAA;AACI,gBAAA,OAAO,KAAK,CAAC;SACpB;KACJ;AAEO,IAAA,QAAQ,CAAC,KAAc,EAAA;QAC3B,OAAQ,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACtD;+GA9BQ,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACDD,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAC9C,MAAM,gCAAgC,GAAG,EAAE,CAAC;MAS/B,8BAA8B,CAAA;AAP3C,IAAA,WAAA,GAAA;AAoBY,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAc,CAAC;AAClD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAc,CAAC;;AAQxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;;AAE1D,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;;AAEtC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;;AAG5C,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAS,MAAK;AAC3D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7C,YAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACvD,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAErD,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,OAAO,CAAC,CAAC;aACV;YAED,IAAI,kBAAkB,EAAE;gBACtB,OAAO,WAAW,GAAG,kCAAkC,CAAC;aACzD;AAED,YAAA,QACE,WAAW;gBACX,mBAAmB;AACnB,iBAAC,kCAAkC,GAAG,gCAAgC,CAAC,EACvE;AACJ,SAAC,CAAC,CAAC;AA2BJ,KAAA;IApEC,IAAa,WAAW,CAAC,KAAyB,EAAA;QAChD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACnC;AAID,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD;IA+BM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAC1B,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAClD,CAAC;QACF,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;KACzE;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;KAC3E;IAEO,0BAA0B,GAAA;AAChC,QAAA,MAAM,OAAO,GAA6B;AACxC,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,SAAS,EAAE,GAAG;SACf,CAAC;AACF,QAAA,MAAM,QAAQ,GAAiC,CAAC,OAAO,KACrD,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,iBAAiB,EAAE,KACpC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,CAAC,CACrD,CAAC;QAEJ,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;KACzE;+GAzEU,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EC1B3C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2gCAgCA,EDVY,MAAA,EAAA,CAAA,g1JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,gBAAgB,oDAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAIhC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,cAC3B,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,2gCAAA,EAAA,MAAA,EAAA,CAAA,g1JAAA,CAAA,EAAA,CAAA;8BAOZ,iBAAiB,EAAA,CAAA;sBAAhD,SAAS;uBAAC,mBAAmB,CAAA;gBACE,iBAAiB,EAAA,CAAA;sBAAhD,SAAS;uBAAC,mBAAmB,CAAA;gBACH,UAAU,EAAA,CAAA;sBAApC,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBACZ,WAAW,EAAA,CAAA;sBAAvB,KAAK;gBAOI,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;AELH,MAAO,2BACX,SAAQ,+BAA+B,CAAA;AAdzC,IAAA,WAAA,GAAA;;AAkBY,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAc,CAAC;AAClD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ,CAAC;AACzC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAc,CAAC;AAGxC,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CACjD,yBAAyB,CAC1B,CAAC;;QAEiB,IAAW,CAAA,WAAA,GAAG,QAAQ,CACvC,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAC5C,CAAC;;AAEiB,QAAA,IAAA,CAAA,KAAK,GAA2B;AACjD,YAAA;AACE,gBAAA,EAAE,EAAE,gBAAgB;gBACpB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBACvD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACzD,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA;SACF,CAAC;;AAEiB,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAC7C,SAAS,CACV,CAAC;AAqBH,KAAA;IAnBQ,eAAe,GAAA;QACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;KACnE;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;KACrE;AAES,IAAA,aAAa,CAAC,IAAU,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;IAEO,oBAAoB,GAAA;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;YACnD,MAAM,EAAE,KAAK,EAAE,GAAoB,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAC1D,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;KACJ;+GAnDU,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,qVCnCxC,gyBAiBA,EAAA,MAAA,EAAA,CAAA,8JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSI,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,kIAC1B,8BAA8B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAOrB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAbvC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EACP,OAAA,EAAA;wBACP,eAAe;wBACf,0BAA0B;wBAC1B,8BAA8B;AAC/B,qBAAA,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,gyBAAA,EAAA,MAAA,EAAA,CAAA,8JAAA,CAAA,EAAA,CAAA;8BAMV,iBAAiB,EAAA,CAAA;sBAAhD,SAAS;uBAAC,mBAAmB,CAAA;gBACpB,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;AE9BT,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAClC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;MAUrB,mCAAmC,CAAA;AAuB9C,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;IAED,WACmB,CAAA,aAA4B,EAC5B,gBAAkC,EAAA;QADlC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAvC7C,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;QACpB,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;AAGX,QAAA,IAAA,CAAA,OAAO,GAA2B;AACnD,YAAA;AACE,gBAAA,EAAE,EAAE,gBAAgB;gBACpB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC/C,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;AACjD,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,WAAW,EAAE,SAAS;AACvB,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,gBAAgB;gBACpB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;gBAC/C,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;AACjD,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,WAAW,EAAE,WAAW;AACzB,aAAA;SACF,CAAC;QAsBA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAA8B,CAAC;AAC9D,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;SAChD;KACF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC5B;AAED,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AACjD,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5B;KACF;AAED,IAAA,sBAAsB,CAAC,MAA+B,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAE3B,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,gBAAgB,EAAE;AAClC,YAAA,IAAI,CAAC,cAAc,IAAI,CAAC;SACzB;KACF;+GAnEU,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,ECvBhD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6zBAyBA,EDNY,MAAA,EAAA,CAAA,48GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,+BAAE,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAI1C,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAR/C,SAAS;+BACE,mCAAmC,EAAA,OAAA,EAGpC,CAAC,eAAe,EAAE,0BAA0B,CAAC,EAAA,UAAA,EAC1C,IAAI,EAAA,aAAA,EACD,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,6zBAAA,EAAA,MAAA,EAAA,CAAA,48GAAA,CAAA,EAAA,CAAA;8GA0BtC,KAAK,EAAA,CAAA;sBADR,KAAK;gBASF,OAAO,EAAA,CAAA;sBADV,KAAK;;;MEhDK,2BAA2B,CAAA;IAUtC,IACI,iBAAiB,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AACvE,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;KACzB;AACD,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IAED,IACI,iBAAiB,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KACjD;AACD,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IAED,IACI,qBAAqB,CAAC,SAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;KACzC;AACD,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;AAED,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAlC1B,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAC/B,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;QACvB,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;QACvB,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;QAChB,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QAEjB,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;QA6BxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;KACpC;IAGD,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;KACF;IAEO,mBAAmB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;AAC3B,YAAA,aAAa,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;SAChF;aAAM;AACL,YAAA,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;KAChD;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;SAC7C;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC;AAE1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACrB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;YAC5C,IAAI,CAAC,aAAa,CACnB,CAAC;AAEF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAEjD,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,kBAAkB;cACjD,IAAI,CAAC,kBAAkB;cACvB,SAAS,CAAC;KACf;+GA7EU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;+EAYK,iBAAiB,EAAA,CAAA;sBADpB,KAAK;gBAWF,iBAAiB,EAAA,CAAA;sBADpB,KAAK;gBASF,qBAAqB,EAAA,CAAA;sBADxB,KAAK;gBAaN,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;;;MCjCV,wBAAwB,CAAA;IAkBnC,IACI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,IACI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,IACI,WAAW,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC3B;AACD,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IAED,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IACI,OAAO,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AACD,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IACI,OAAO,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AACD,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IACI,wBAAwB,CAAC,KAAc,EAAA;AACzC,QAAA,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;KACxC;AACD,IAAA,IAAI,wBAAwB,GAAA;QAC1B,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACvC;IAED,IACI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED,IAAA,WAAA,GAAA;AAxFA,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,WAAW,EAAE,CAAC;AAI1B,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU,CAAC;QAEnD,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;QACX,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;QACX,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;QAClB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QACV,IAAyB,CAAA,yBAAA,GAAG,KAAK,CAAC;QAClC,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;QACb,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;KA0EL;IAEhB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;AAC/E,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;KACJ;IAED,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;KACnC;AAED,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACrC,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,qBAAqB,EAAE,WAAW,EAAE,CAAC;KAC3C;+GAjHU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,qWCbrC,+rBAuBA,EAAA,MAAA,EAAA,CAAA,otBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDZY,mBAAmB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,2BAA2B,gJAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAY,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAEhE,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EAGpB,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,+rBAAA,EAAA,MAAA,EAAA,CAAA,otBAAA,CAAA,EAAA,CAAA;wDAQlE,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBAaH,IAAI,EAAA,CAAA;sBADP,KAAK;gBASF,IAAI,EAAA,CAAA;sBADP,KAAK;gBASF,WAAW,EAAA,CAAA;sBADd,KAAK;gBASF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBASF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBASF,OAAO,EAAA,CAAA;sBADV,KAAK;gBASF,OAAO,EAAA,CAAA;sBADV,KAAK;gBASF,wBAAwB,EAAA,CAAA;sBAD3B,KAAK;gBASF,IAAI,EAAA,CAAA;sBADP,KAAK;;;ME3EK,uBAAuB,CAAA;IAKlC,IACI,OAAO,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AACD,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAGD,IACI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAGD,IACI,MAAM,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AACD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAGD,IACI,SAAS,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;AACD,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAID,IAAA,WAAA,GAAA;AAxCU,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAqC,CAAC;QAEnF,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;QASd,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;QASX,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QASlB,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;QASf,IAAU,CAAA,UAAA,GAAmC,EAAE,CAAC;KAExC;IAEjB,UAAU,CAAC,MAAc,EAAE,IAAa,EAAA;AACtC,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KACpE;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;KAC7D;AAED,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;KACF;+GAxDU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,oQCpBpC,4tBAuBA,EAAA,MAAA,EAAA,CAAA,4zJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDPY,QAAQ,EAAE,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,8GAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAI/B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAGtB,OAAA,EAAA,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,EAC/B,UAAA,EAAA,IAAI,EACD,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,4tBAAA,EAAA,MAAA,EAAA,CAAA,4zJAAA,CAAA,EAAA,CAAA;wDAIhC,wBAAwB,EAAA,CAAA;sBAAjC,MAAM;gBAIH,OAAO,EAAA,CAAA;sBADV,KAAK;gBAUF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAUF,MAAM,EAAA,CAAA;sBADT,KAAK;gBAUF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAQG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;AExBF,MAAO,kCAAmC,SAAQ,+BAA+B,CAAA;IAuBrF,IACI,YAAY,CAAC,EAAU,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;KACzB;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED,IAAA,WAAA,CACmB,aAA4B,EAC7C,gBAAkC,EACjB,QAAkB,EAClB,WAAwB,EAAA;QAEzC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QALP,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAE5B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QAjClC,IAAG,CAAA,GAAA,GAAsB,IAAI,CAAC;QACvC,IAAY,CAAA,YAAA,GAA4B,EAAE,CAAC;QAC3C,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAc,CAAA,cAAA,GAA2B,EAAE,CAAC;QAC5C,IAAuB,CAAA,uBAAA,GAA2B,EAAE,CAAC;QACrD,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;QACnB,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;QACnB,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;QACjB,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;QACV,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;QAC1B,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;QACZ,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;QAEb,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;QACnC,IAAsB,CAAA,sBAAA,GAAgC,EAAE,CAAC;QAEjD,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;QAoBzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1C,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;YACd,GAAG,EAAE,CAAC,EAAE;AACN,gBAAA;AACE,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;AAC9B,oBAAA,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC;AAClC,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,MAAM,MAAM,GAA2B,CAAC;AACtC,gBAAA,EAAE,EAAE,QAAQ;gBACZ,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC;gBACpD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC;AACtD,gBAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC;AAC/D,gBAAA,WAAW,EAAE,SAAS;AACvB,aAAA,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;AAE7B,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC/B;AACE,YAAA,EAAE,EAAE,kBAAkB;YACpB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;YAC/C,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;AACjD,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,WAAW,EAAE,SAAS;SACzB,EACD;AACE,YAAA,EAAE,EAAE,eAAe;YACjB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACtD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACxD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA,CACF,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAG;YAClD,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,KAAK,OAAO,CAAC;AAChE,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAChE;AAED,IAAA,wBAAwB,CAAC,KAAwB,EAAA;AAC/C,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC7B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAmB,CAAC;AACvC,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC9C;KACF;AAED,IAAA,iBAAiB,CAAC,IAAyB,EAAA;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAChC;AAED,IAAA,uBAAuB,CAAC,SAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mCAAmC,EAAE;AAC3D,YAAA,OAAO,EAAE;AACP,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,OAAO;AACf,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,eAAe,EAAE,EAAE;AACnB,gBAAA,mBAAmB,EAAE,KAAK;AAC1B,gBAAA,wBAAwB,EAAE,IAAI;AAC9B,gBAAA,SAAS,EAAE,IAAI;AAChB,aAAA;AACD,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,oCAAoC,CAAC;gBAC1E,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,sCAAsC,CAAC;gBAC9E,cAAc,EAAE,MAAK;AACnB,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;iBAC/B;AACF,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,IAAa,EAAA;QACtB,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACxD,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE;AAC/B,YAAA,OAAO,KAAK,CAAC;SACd;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,sBAAsB,CAAC,MAA+B,EAAA;AACpD,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE;YAE1B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO;AAC5C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAEpB,YAAA,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE,IAAI,CAAC,aAAa;gBACxB,QAAQ,EAAE,IAAI,CAAC,YAAY;aAC5B,CAAC;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAEtC,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,IAAG;AAE9E,gBAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAExC,gBAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,EAAE,CAAC;gBAE3C,MAAM,UAAU,GAAgC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;gBAE7H,MAAM,iBAAiB,GAAqD,EAAE,CAAC;AAC/E,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;oBACrB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACxC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AAC7F,wBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,qBAAC,CAAC,CAAC;AACH,oBAAA,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,iBAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAK;AACvC,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC3B,oBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,iBAAC,CAAC,CAAC;AAEL,aAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AACf,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,aAAC,CAAC,CAAC;SACJ;KACF;AAED,IAAA,+BAA+B,CAAC,MAA+B,EAAA;AAC7D,QAAA,IAAI,MAAM,CAAC,EAAE,KAAK,eAAe,EAAE;AACjC,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AAE5B,gBAAA,IAAI,YAAY,GAAW,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBAElE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAChD,oBAAA,YAAY,GAAG,UAAU,GAAG,YAAY,CAAC;iBAC1C;AAED,gBAAA,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEnE,gBAAA,IAAI,aAAa,KAAK,EAAE,EAAE;oBACxB,aAAa,GAAG,YAAY,CAAC;iBAC9B;AAED,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AAC/B,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,GAAG,EAAE,YAAY;AAClB,iBAAA,CAAC,CAAC;AAEH,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC3B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAChC;SACF;AAAM,aAAA,IAAI,MAAM,CAAC,EAAE,KAAK,kBAAkB,EAAE;AAC3C,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAChC;KACF;AAED,IAAA,aAAa,CAAC,SAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS;YAAE,OAAO;AAEpC,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAK;AAC5C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AACf,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,YAAY,CAAC,QAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO;AAEnC,QAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAiC,KAAI;AAChF,YAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;AAC/B,SAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;AACf,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,SAAC,CAAC,CAAC;KACJ;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAClD;AAED,IAAA,wBAAwB,CAAC,KAAoB,EAAA;AAC3C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;KACF;AAED,IAAA,2BAA2B,CAAC,IAA+B,EAAA;AACzD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC;KACnG;IAED,mCAAmC,CAAC,KAAoB,EAAE,IAA+B,EAAA;AACvF,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAC9C,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;SACxC;KACF;+GAtPU,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAJlC,CAAC,QAAQ,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCvB,muGA+EA,ED1DI,MAAA,EAAA,CAAA,2mLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,KAAK,EACL,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,QAAQ,EACR,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,8NACxB,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,0BAA0B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC1B,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,mCAAmC,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnC,8BAA8B,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC9B,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAMV,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBApB9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kCAAkC,EAGnC,OAAA,EAAA;wBACP,KAAK;wBACL,QAAQ;wBACR,wBAAwB;wBACxB,uBAAuB;wBACvB,0BAA0B;wBAC1B,eAAe;wBACf,mCAAmC;wBACnC,8BAA8B;wBAC9B,WAAW;wBACX,mBAAmB;qBACpB,EACU,SAAA,EAAA,CAAC,QAAQ,CAAC,EAAA,UAAA,EACT,IAAI,EACD,aAAA,EAAA,iBAAiB,CAAC,SAAS,EAAA,QAAA,EAAA,muGAAA,EAAA,MAAA,EAAA,CAAA,2mLAAA,CAAA,EAAA,CAAA;+JAMjC,GAAG,EAAA,CAAA;sBAAX,KAAK;gBAoBF,YAAY,EAAA,CAAA;sBADf,KAAK;;;AE3DR;;AAEG;;ACFH;;AAEG;;;;"}