herum-shared 0.1.25

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 (236) hide show
  1. package/README.md +63 -0
  2. package/animations/index.d.ts +5 -0
  3. package/assets/feed/exercise/exerciseAchivment.svg +11 -0
  4. package/assets/feed/icons/active/audio.svg +5 -0
  5. package/assets/feed/icons/active/collection.svg +15 -0
  6. package/assets/feed/icons/active/exercise.svg +13 -0
  7. package/assets/feed/icons/active/generic-file.svg +8 -0
  8. package/assets/feed/icons/active/image.svg +11 -0
  9. package/assets/feed/icons/active/link.svg +6 -0
  10. package/assets/feed/icons/active/pdf.svg +14 -0
  11. package/assets/feed/icons/active/presentation.svg +11 -0
  12. package/assets/feed/icons/active/quiz.svg +17 -0
  13. package/assets/feed/icons/active/story.svg +7 -0
  14. package/assets/feed/icons/active/video.svg +11 -0
  15. package/assets/feed/icons/comment.svg +12 -0
  16. package/assets/feed/icons/error/audio.svg +5 -0
  17. package/assets/feed/icons/error/collection.svg +15 -0
  18. package/assets/feed/icons/error/exercise.svg +13 -0
  19. package/assets/feed/icons/error/generic-file.svg +8 -0
  20. package/assets/feed/icons/error/image.svg +11 -0
  21. package/assets/feed/icons/error/pdf.svg +14 -0
  22. package/assets/feed/icons/error/presentation.svg +11 -0
  23. package/assets/feed/icons/error/quiz.svg +17 -0
  24. package/assets/feed/icons/error/story.svg +7 -0
  25. package/assets/feed/icons/error/video.svg +11 -0
  26. package/assets/feed/icons/eye.svg +13 -0
  27. package/assets/feed/icons/garbage-secondary.svg +14 -0
  28. package/assets/feed/icons/garbage.svg +14 -0
  29. package/assets/feed/icons/green-x.svg +165 -0
  30. package/assets/feed/icons/hamburger.svg +2 -0
  31. package/assets/feed/icons/inactive/audio.svg +5 -0
  32. package/assets/feed/icons/inactive/exercise.svg +17 -0
  33. package/assets/feed/icons/inactive/link.svg +6 -0
  34. package/assets/feed/icons/inactive/pdf.svg +19 -0
  35. package/assets/feed/icons/inactive/presentation.svg +13 -0
  36. package/assets/feed/icons/inactive/quiz.svg +25 -0
  37. package/assets/feed/icons/inactive/story.svg +7 -0
  38. package/assets/feed/icons/inactive/video.svg +13 -0
  39. package/assets/feed/icons/status/Group 856.svg +11 -0
  40. package/assets/feed/icons/status/almostDone.svg +11 -0
  41. package/assets/feed/icons/status/done.svg +11 -0
  42. package/assets/feed/icons/status/inProgress.svg +13 -0
  43. package/assets/feed/icons/white-chevron.svg +3 -0
  44. package/assets/feed/icons/wide-mode.png +0 -0
  45. package/assets/feed/icons/wide-mode.svg +7 -0
  46. package/assets/feed/icons/wide-mode2.svg +8 -0
  47. package/assets/files-icons/.image.svg +11 -0
  48. package/assets/files-icons/.mp4.png +0 -0
  49. package/assets/files-icons/.mp4.svg +12 -0
  50. package/assets/files-icons/.pdf.png +0 -0
  51. package/assets/files-icons/.pdf.svg +16 -0
  52. package/assets/files-icons/.pptx.png +0 -0
  53. package/assets/files-icons/.pptx.svg +12 -0
  54. package/assets/files-icons/.video.svg +12 -0
  55. package/assets/files-icons/default-file.png +0 -0
  56. package/assets/files-icons/generic-file.svg +8 -0
  57. package/assets/files-icons/story.png +0 -0
  58. package/assets/files-icons/story.svg +3 -0
  59. package/assets/files-icons/upload-file.svg +4 -0
  60. package/assets/general/calendar.svg +12 -0
  61. package/assets/general/chevron.svg +3 -0
  62. package/assets/general/clock.svg +4 -0
  63. package/assets/general/closed-chevron.png +0 -0
  64. package/assets/general/college-calendar.svg +12 -0
  65. package/assets/general/comment-icon.svg +12 -0
  66. package/assets/general/dialogX.png +0 -0
  67. package/assets/general/errorOwl.png +0 -0
  68. package/assets/general/green-x.svg +4 -0
  69. package/assets/general/grey-chevron.svg +3 -0
  70. package/assets/general/keyboardLink.svg +15 -0
  71. package/assets/general/logo.png +0 -0
  72. package/assets/general/noCollectionsMessage.svg +59 -0
  73. package/assets/general/open-chevron.png +0 -0
  74. package/assets/general/owl-logo.svg +98 -0
  75. package/assets/general/secondary-x.svg +3 -0
  76. package/assets/general/user.svg +15 -0
  77. package/assets/general/white-chevron.svg +3 -0
  78. package/assets/quiz/greenHeaderArrow.svg +12 -0
  79. package/assets/quiz/greyHeaderArrow.svg +12 -0
  80. package/assets/quiz/happyOwl.svg +126 -0
  81. package/assets/quiz/sadOwl.svg +94 -0
  82. package/assets/quiz/skip.svg +5 -0
  83. package/assets/shared/atoms/inputs/herum-inputs.component.scss +56 -0
  84. package/assets/shared/atoms/selects/herum-selects.component.scss +141 -0
  85. package/assets/shared/atoms/uploadingStatuses/error.svg +8 -0
  86. package/assets/shared/atoms/uploadingStatuses/information.svg +6 -0
  87. package/assets/shared/atoms/uploadingStatuses/success.svg +9 -0
  88. package/assets/shared/audio-images/gray-pause.svg +4 -0
  89. package/assets/shared/audio-images/gray-play.svg +3 -0
  90. package/assets/shared/audio-images/next15.svg +7 -0
  91. package/assets/shared/audio-images/pause.svg +4 -0
  92. package/assets/shared/audio-images/play.svg +3 -0
  93. package/assets/shared/audio-images/previous15.svg +7 -0
  94. package/assets/shared/background/cubes.png +0 -0
  95. package/assets/shared/background/cubes.svg +1900 -0
  96. package/assets/shared/icons/V.svg +3 -0
  97. package/assets/shared/icons/X.svg +3 -0
  98. package/assets/shared/icons/active-clipboard.svg +7 -0
  99. package/assets/shared/icons/active-drag.svg +44 -0
  100. package/assets/shared/icons/active-upload.svg +3 -0
  101. package/assets/shared/icons/add.svg +3 -0
  102. package/assets/shared/icons/attachUsers.png +0 -0
  103. package/assets/shared/icons/big-no-result-owl.png +0 -0
  104. package/assets/shared/icons/bigV.svg +3 -0
  105. package/assets/shared/icons/celeb-owl.png +0 -0
  106. package/assets/shared/icons/clock.svg +3 -0
  107. package/assets/shared/icons/drag.svg +44 -0
  108. package/assets/shared/icons/edit.svg +3 -0
  109. package/assets/shared/icons/editCollection.png +0 -0
  110. package/assets/shared/icons/femaleAvatar.svg +80 -0
  111. package/assets/shared/icons/inactive-clipboard.svg +7 -0
  112. package/assets/shared/icons/input/X.png +0 -0
  113. package/assets/shared/icons/input/X.svg +3 -0
  114. package/assets/shared/icons/input/drag.svg +6 -0
  115. package/assets/shared/icons/input/green-search.png +0 -0
  116. package/assets/shared/icons/input/grey-search.png +0 -0
  117. package/assets/shared/icons/input/search.svg +4 -0
  118. package/assets/shared/icons/maleAvatar.svg +55 -0
  119. package/assets/shared/icons/no-result-owl.png +0 -0
  120. package/assets/shared/icons/resources.svg +6 -0
  121. package/assets/shared/icons/secondary-x.svg +3 -0
  122. package/assets/shared/icons/settings.png +0 -0
  123. package/assets/shared/icons/stepper/white-v.svg +3 -0
  124. package/assets/shared/icons/table/edit.svg +3 -0
  125. package/assets/shared/icons/target.png +0 -0
  126. package/assets/shared/icons/upload.png +0 -0
  127. package/assets/shared/icons/upload.svg +7 -0
  128. package/assets/shared/icons/user.svg +8 -0
  129. package/assets/shared/icons/video/Play.PNG +0 -0
  130. package/assets/shared/icons/video/back10.PNG +0 -0
  131. package/assets/shared/icons/video/back10.svg +7 -0
  132. package/assets/shared/icons/video/download.PNG +0 -0
  133. package/assets/shared/icons/video/download.svg +4 -0
  134. package/assets/shared/icons/video/fullScreen.PNG +0 -0
  135. package/assets/shared/icons/video/fullScreen.svg +7 -0
  136. package/assets/shared/icons/video/minimize.png +0 -0
  137. package/assets/shared/icons/video/mute.png +0 -0
  138. package/assets/shared/icons/video/mute.svg +7 -0
  139. package/assets/shared/icons/video/next10.PNG +0 -0
  140. package/assets/shared/icons/video/next10.svg +7 -0
  141. package/assets/shared/icons/video/pause.PNG +0 -0
  142. package/assets/shared/icons/video/pause.svg +5 -0
  143. package/assets/shared/icons/video/pictureInPicture.png +0 -0
  144. package/assets/shared/icons/video/pictureInPicture.svg +5 -0
  145. package/assets/shared/icons/video/pictureInPictureOff.svg +7 -0
  146. package/assets/shared/icons/video/play.svg +4 -0
  147. package/assets/shared/icons/video/primary-play.png +0 -0
  148. package/assets/shared/icons/video/primaryPlay.svg +22 -0
  149. package/assets/shared/icons/video/sound.svg +8 -0
  150. package/assets/shared/icons/video/speaker.PNG +0 -0
  151. package/assets/shared/trackChanges/edit.svg +11 -0
  152. package/assets/shared/trackChanges/message-plus.svg +14 -0
  153. package/assets/shared/trackChanges/show-comments.svg +5 -0
  154. package/assets/shared/trackChanges/text-reference.svg +3 -0
  155. package/assets/shared/trackChanges/trash.svg +9 -0
  156. package/atoms/index.d.ts +836 -0
  157. package/constants/index.d.ts +795 -0
  158. package/decorators/index.d.ts +3 -0
  159. package/dialogs/index.d.ts +41 -0
  160. package/directives/index.d.ts +55 -0
  161. package/environment/index.d.ts +129 -0
  162. package/errors/index.d.ts +26 -0
  163. package/fesm2022/herum-shared-animations.mjs +41 -0
  164. package/fesm2022/herum-shared-animations.mjs.map +1 -0
  165. package/fesm2022/herum-shared-atoms.mjs +2919 -0
  166. package/fesm2022/herum-shared-atoms.mjs.map +1 -0
  167. package/fesm2022/herum-shared-constants.mjs +711 -0
  168. package/fesm2022/herum-shared-constants.mjs.map +1 -0
  169. package/fesm2022/herum-shared-decorators.mjs +12 -0
  170. package/fesm2022/herum-shared-decorators.mjs.map +1 -0
  171. package/fesm2022/herum-shared-dialogs.mjs +113 -0
  172. package/fesm2022/herum-shared-dialogs.mjs.map +1 -0
  173. package/fesm2022/herum-shared-directives.mjs +226 -0
  174. package/fesm2022/herum-shared-directives.mjs.map +1 -0
  175. package/fesm2022/herum-shared-environment.mjs +10 -0
  176. package/fesm2022/herum-shared-environment.mjs.map +1 -0
  177. package/fesm2022/herum-shared-errors.mjs +71 -0
  178. package/fesm2022/herum-shared-errors.mjs.map +1 -0
  179. package/fesm2022/herum-shared-fetched-message.mjs +118 -0
  180. package/fesm2022/herum-shared-fetched-message.mjs.map +1 -0
  181. package/fesm2022/herum-shared-herum-types.mjs +106 -0
  182. package/fesm2022/herum-shared-herum-types.mjs.map +1 -0
  183. package/fesm2022/herum-shared-molecules.mjs +1530 -0
  184. package/fesm2022/herum-shared-molecules.mjs.map +1 -0
  185. package/fesm2022/herum-shared-mongo-molecules.mjs +269 -0
  186. package/fesm2022/herum-shared-mongo-molecules.mjs.map +1 -0
  187. package/fesm2022/herum-shared-mongo-services.mjs +441 -0
  188. package/fesm2022/herum-shared-mongo-services.mjs.map +1 -0
  189. package/fesm2022/herum-shared-mongo.mjs +729 -0
  190. package/fesm2022/herum-shared-mongo.mjs.map +1 -0
  191. package/fesm2022/herum-shared-objectsExample.mjs +190 -0
  192. package/fesm2022/herum-shared-objectsExample.mjs.map +1 -0
  193. package/fesm2022/herum-shared-pipes.mjs +406 -0
  194. package/fesm2022/herum-shared-pipes.mjs.map +1 -0
  195. package/fesm2022/herum-shared-services.mjs +1107 -0
  196. package/fesm2022/herum-shared-services.mjs.map +1 -0
  197. package/fesm2022/herum-shared-static-services.mjs +140 -0
  198. package/fesm2022/herum-shared-static-services.mjs.map +1 -0
  199. package/fesm2022/herum-shared-table.mjs +837 -0
  200. package/fesm2022/herum-shared-table.mjs.map +1 -0
  201. package/fesm2022/herum-shared-testsObjects.mjs +5722 -0
  202. package/fesm2022/herum-shared-testsObjects.mjs.map +1 -0
  203. package/fesm2022/herum-shared-tokens.mjs +13 -0
  204. package/fesm2022/herum-shared-tokens.mjs.map +1 -0
  205. package/fesm2022/herum-shared-utils.mjs +380 -0
  206. package/fesm2022/herum-shared-utils.mjs.map +1 -0
  207. package/fesm2022/herum-shared-validators.mjs +76 -0
  208. package/fesm2022/herum-shared-validators.mjs.map +1 -0
  209. package/fesm2022/herum-shared.mjs +11709 -0
  210. package/fesm2022/herum-shared.mjs.map +1 -0
  211. package/fetched-message/index.d.ts +49 -0
  212. package/herum-types/index.d.ts +198 -0
  213. package/index.d.ts +2946 -0
  214. package/molecules/index.d.ts +458 -0
  215. package/mongo/index.d.ts +175 -0
  216. package/mongo/molecules/index.d.ts +76 -0
  217. package/mongo/services/index.d.ts +98 -0
  218. package/objectsExample/index.d.ts +11 -0
  219. package/package.json +128 -0
  220. package/pipes/index.d.ts +93 -0
  221. package/services/index.d.ts +266 -0
  222. package/static-services/index.d.ts +25 -0
  223. package/styles/_mixin.scss +86 -0
  224. package/styles/collection-wizard-layout.component.scss +70 -0
  225. package/styles/dialogs.scss +49 -0
  226. package/styles/forms.scss +18 -0
  227. package/styles/overView.scss +115 -0
  228. package/styles/variables/_colors.college.scss +65 -0
  229. package/styles/variables/_colors.scss +161 -0
  230. package/styles/variables/_sizes.scss +73 -0
  231. package/styles/wizard-steps-layout.scss +21 -0
  232. package/table/index.d.ts +233 -0
  233. package/testsObjects/index.d.ts +91 -0
  234. package/tokens/index.d.ts +8 -0
  235. package/utils/index.d.ts +92 -0
  236. package/validators/index.d.ts +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"herum-shared.mjs","sources":["../../../projects/herum-shared/directives/herum-tool-tip.directive.ts","../../../projects/herum-shared/organisms/herum-video-player/video-speed-options.ts","../../../projects/herum-shared/atoms/herum-slider/herum-slider.component.ts","../../../projects/herum-shared/atoms/herum-slider/herum-slider.component.html","../../../projects/herum-shared/atoms/herum-video-select/herum-video-select.component.ts","../../../projects/herum-shared/atoms/herum-video-select/herum-video-select.component.html","../../../projects/herum-shared/pipes/safe.pipe.ts","../../../projects/herum-shared/pipes/safe-html.pipe.ts","../../../projects/herum-shared/organisms/herum-video-player/herum-video-player.component.ts","../../../projects/herum-shared/organisms/herum-video-player/herum-video-player.component.html","../../../projects/herum-shared/organisms/herum-video-player/herum-video-range-bar/herum-video-range-bar.component.ts","../../../projects/herum-shared/organisms/herum-video-player/herum-video-range-bar/herum-video-range-bar.component.html","../../../projects/herum-shared/organisms/herum-pdf-viewer/herum-pdf-viewer.component.ts","../../../projects/herum-shared/organisms/herum-pdf-viewer/herum-pdf-viewer.component.html","../../../projects/herum-shared/organisms/herum-story-viewer/herum-story-viewer.component.ts","../../../projects/herum-shared/organisms/herum-story-viewer/herum-story-viewer.component.html","../../../projects/herum-shared/directives/user-action.directive.ts","../../../projects/herum-shared/organisms/herum-presentation-viewer/herum-presentation-viewer.component.ts","../../../projects/herum-shared/organisms/herum-presentation-viewer/herum-presentation-viewer.component.html","../../../projects/herum-shared/organisms/herum-loader/herum-loader.component.ts","../../../projects/herum-shared/organisms/herum-loader/herum-loader.component.html","../../../projects/herum-shared/directives/svg-on-hover.directive.ts","../../../projects/herum-shared/atoms/herum-button/herum-button.component.ts","../../../projects/herum-shared/atoms/herum-button/herum-button.component.html","../../../projects/herum-shared/atoms/herum-quiz-header-item/herum-quiz-header-item.component.ts","../../../projects/herum-shared/atoms/herum-quiz-header-item/herum-quiz-header-item.component.html","../../../projects/herum-shared/organisms/herum-list-centralizer/herum-list-centralizer.component.ts","../../../projects/herum-shared/organisms/herum-list-centralizer/herum-list-centralizer.component.html","../../../projects/herum-shared/organisms/herum-quiz/quiz-header/quiz-header.component.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-header/quiz-header.component.html","../../../projects/herum-shared/pipes/ellipsis.pipe.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-two-answers-question/quiz-two-answers-question.component.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-two-answers-question/quiz-two-answers-question.component.html","../../../projects/herum-shared/atoms/radio-button/radio-button.component.ts","../../../projects/herum-shared/atoms/radio-button/radio-button.component.html","../../../projects/herum-shared/organisms/herum-quiz/quiz-one-answer-question/quiz-one-answer-question.component.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-one-answer-question/quiz-one-answer-question.component.html","../../../projects/herum-shared/organisms/herum-quiz/quiz-submission/quiz-submission.component.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-submission/quiz-submission.component.html","../../../projects/herum-shared/pipes/displayed-submissions-counter-pipe.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-intro/quiz-intro.component.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-intro/quiz-intro.component.html","../../../projects/herum-shared/organisms/herum-quiz/quiz-grade-sheet/quiz-grade-sheet.component.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-grade-sheet/quiz-grade-sheet.component.html","../../../projects/herum-shared/atoms/herum-checkbox/herum-checkbox.component.ts","../../../projects/herum-shared/atoms/herum-checkbox/herum-checkbox.component.html","../../../projects/herum-shared/organisms/herum-quiz/quiz-multi-answer-question/quiz-multi-answer-question.component.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-multi-answer-question/quiz-multi-answer-question.component.html","../../../projects/herum-shared/organisms/herum-quiz/quiz-loader/quiz-loader.component.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-loader/quiz-loader.component.html","../../../projects/herum-shared/organisms/herum-quiz/herum-quiz.component.ts","../../../projects/herum-shared/organisms/herum-quiz/herum-quiz.component.html","../../../projects/herum-shared/organisms/herum-local-loader/herum-local-loader.component.ts","../../../projects/herum-shared/organisms/herum-local-loader/herum-local-loader.component.html","../../../projects/herum-shared/atoms/herum-form-control/herum-form-control.ts","../../../projects/herum-shared/atoms/herum-input-field/herum-input-field.component.ts","../../../projects/herum-shared/atoms/herum-input-field/herum-input-field.component.html","../../../projects/herum-shared/molecules/herum-user-progress/herum-user-progress.component.ts","../../../projects/herum-shared/molecules/herum-user-progress/herum-user-progress.component.html","../../../projects/herum-shared/organisms/blocked-form/blocked-form.component.ts","../../../projects/herum-shared/organisms/blocked-form/blocked-form.component.html","../../../projects/herum-shared/atoms/herum-progress-bar/herum-progress-bar.component.ts","../../../projects/herum-shared/atoms/herum-progress-bar/herum-progress-bar.component.html","../../../projects/herum-shared/atoms/herum-switch/herum-switch.component.ts","../../../projects/herum-shared/atoms/herum-switch/herum-switch.component.html","../../../projects/herum-shared/organisms/herum-mini-table/herum-mini-table.component.ts","../../../projects/herum-shared/organisms/herum-mini-table/herum-mini-table.component.html","../../../projects/herum-shared/molecules/herum-hierarchy-tree-node/herum-hierarchy-tree-node.component.ts","../../../projects/herum-shared/molecules/herum-hierarchy-tree-node/herum-hierarchy-tree-node.component.html","../../../projects/herum-shared/organisms/herum-hierarchy-tree/herum-hierarchy-tree.component.ts","../../../projects/herum-shared/organisms/herum-hierarchy-tree/herum-hierarchy-tree.component.html","../../../projects/herum-shared/organisms/herum-hierarchy-tree/recursive-tree/recursive-tree.component.ts","../../../projects/herum-shared/organisms/herum-hierarchy-tree/recursive-tree/recursive-tree.component.html","../../../projects/herum-shared/organisms/herum-hierarchy-tree/herum-textual-vertical-tree/herum-textual-vertical-tree.component.ts","../../../projects/herum-shared/organisms/herum-hierarchy-tree/herum-textual-vertical-tree/herum-textual-vertical-tree.component.html","../../../projects/herum-shared/molecules/herum-date-time-input/herum-date-time-input.component.ts","../../../projects/herum-shared/molecules/herum-date-time-input/herum-date-time-input.component.html","../../../projects/herum-shared/molecules/herum-date-time-picker/herum-date-time-picker.component.ts","../../../projects/herum-shared/molecules/herum-date-time-picker/herum-date-time-picker.component.html","../../../projects/herum-shared/molecules/herum-time-select/herum-time-select.component.ts","../../../projects/herum-shared/molecules/herum-time-select/herum-time-select.component.html","../../../projects/herum-shared/organisms/herum-time-range-select/herum-time-range-select.component.ts","../../../projects/herum-shared/organisms/herum-time-range-select/herum-time-range-select.component.html","../../../projects/herum-shared/organisms/herum-date-time-picker-select/herum-date-time-picker-select.component.ts","../../../projects/herum-shared/organisms/herum-date-time-picker-select/herum-date-time-picker-select.component.html","../../../projects/herum-shared/tokens/tokens.ts","../../../projects/herum-shared/organisms/audio-player/audio-visualization.service.ts","../../../projects/herum-shared/services/graph-ql.service.ts","../../../projects/herum-shared/services/auth.service.ts","../../../projects/herum-shared/services/common-graphql-requests.service.ts","../../../projects/herum-shared/services/db-actions-inner-id-manager.service.ts","../../../projects/herum-shared/services/db-action-requests.service.ts","../../../projects/herum-shared/services/global-keyboard-listener.service.ts","../../../projects/herum-shared/services/key-press.service.ts","../../../projects/herum-shared/services/loader-manager.service.ts","../../../projects/herum-shared/services/micro-resources.service.ts","../../../projects/herum-shared/services/resource-data-builder.service.ts","../../../projects/herum-shared/services/system-styling.service.ts","../../../projects/herum-shared/services/track-text-changes.service.ts","../../../projects/herum-shared/static-services/storage.service.ts","../../../projects/herum-shared/static-services/utils.service.ts","../../../projects/herum-shared/atoms/herum-spinner/herum-spinner.component.ts","../../../projects/herum-shared/atoms/herum-spinner/herum-spinner.component.html","../../../projects/herum-shared/organisms/audio-player/audio-slider/audio-slider.component.ts","../../../projects/herum-shared/organisms/audio-player/audio-slider/audio-slider.component.html","../../../projects/herum-shared/organisms/audio-player/audio-player.component.ts","../../../projects/herum-shared/organisms/audio-player/audio-player.component.html","../../../projects/herum-shared/atoms/herum-text-area/herum-text-area.component.ts","../../../projects/herum-shared/atoms/herum-text-area/herum-text-area.component.html","../../../projects/herum-shared/organisms/track-text-changes/track-text-changes.component.ts","../../../projects/herum-shared/organisms/track-text-changes/track-text-changes.component.html","../../../projects/herum-shared/pipes/answer-notes-to-text-changes.pipe.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-open-answer-question/quiz-open-answer-question.component.ts","../../../projects/herum-shared/organisms/herum-quiz/quiz-open-answer-question/quiz-open-answer-question.component.html","../../../projects/herum-shared/directives/herum-highlight.directive.ts","../../../projects/herum-shared/dialogs/insurance-dialog/insurance-dialog.component.ts","../../../projects/herum-shared/dialogs/insurance-dialog/insurance-dialog.component.html","../../../projects/herum-shared/dialogs/herum-files-viewer-dialog/herum-files-viewer-dialog.component.ts","../../../projects/herum-shared/dialogs/herum-files-viewer-dialog/herum-files-viewer-dialog.component.html","../../../projects/herum-shared/dialogs/dialogs-module.ts","../../../projects/herum-shared/atoms/college-loader/college-loader.component.ts","../../../projects/herum-shared/atoms/college-loader/college-loader.component.html","../../../projects/herum-shared/atoms/herum-breadcrumbs/slice-breadcrumbs.pipe.ts","../../../projects/herum-shared/atoms/herum-breadcrumbs/herum-breadcrumbs.component.ts","../../../projects/herum-shared/atoms/herum-breadcrumbs/herum-breadcrumbs.component.html","../../../projects/herum-shared/atoms/herum-chip/herum-chip.component.ts","../../../projects/herum-shared/atoms/herum-chip/herum-chip.component.html","../../../projects/herum-shared/atoms/herum-circular-progress-bar/herum-circular-progress-bar.component.ts","../../../projects/herum-shared/atoms/herum-circular-progress-bar/herum-circular-progress-bar.component.html","../../../projects/herum-shared/atoms/herum-date-picker/herum-date-picker.component.ts","../../../projects/herum-shared/atoms/herum-date-picker/herum-date-picker.component.html","../../../projects/herum-shared/atoms/herum-download-file/herum-download-file.component.ts","../../../projects/herum-shared/atoms/herum-download-file/herum-download-file.component.html","../../../projects/herum-shared/atoms/herum-ellipsis-loader/herum-ellipsis-loader.component.ts","../../../projects/herum-shared/atoms/herum-ellipsis-loader/herum-ellipsis-loader.component.html","../../../projects/herum-shared/atoms/herum-icon-label/herum-icon-label.component.ts","../../../projects/herum-shared/atoms/herum-icon-label/herum-icon-label.component.html","../../../projects/herum-shared/atoms/herum-indeterminate/herum-indeterminate.component.ts","../../../projects/herum-shared/atoms/herum-indeterminate/herum-indeterminate.component.html","../../../projects/herum-shared/atoms/herum-input-field/conditional-form-control-name.directive.ts","../../../projects/herum-shared/atoms/herum-logo/herum-logo.component.ts","../../../projects/herum-shared/atoms/herum-logo/herum-logo.component.html","../../../projects/herum-shared/atoms/herum-options-list/herum-options-list.component.ts","../../../projects/herum-shared/atoms/herum-options-list/herum-options-list.component.html","../../../projects/herum-shared/atoms/herum-recursive-hierarchy-options-list/herum-recursive-hierarchy-options-list.component.ts","../../../projects/herum-shared/atoms/herum-recursive-hierarchy-options-list/herum-recursive-hierarchy-options-list.component.html","../../../projects/herum-shared/atoms/herum-multi-select/herum-multi-select.component.ts","../../../projects/herum-shared/atoms/herum-multi-select/herum-multi-select.component.html","../../../projects/herum-shared/atoms/herum-narrow-collection-menu-item/herum-narrow-collection-menu-item.component.ts","../../../projects/herum-shared/atoms/herum-narrow-collection-menu-item/herum-narrow-collection-menu-item.component.html","../../../projects/herum-shared/atoms/herum-no-result-message/herum-no-result-message.component.ts","../../../projects/herum-shared/atoms/herum-no-result-message/herum-no-result-message.component.html","../../../projects/herum-shared/atoms/herum-paginator/herum-paginator.component.ts","../../../projects/herum-shared/atoms/herum-paginator/herum-paginator.component.html","../../../projects/herum-shared/atoms/herum-panel-links/herum-panel-links.component.ts","../../../projects/herum-shared/atoms/herum-panel-links/herum-panel-links.component.html","../../../projects/herum-shared/atoms/herum-select/herum-select.component.ts","../../../projects/herum-shared/atoms/herum-select/herum-select.component.html","../../../projects/herum-shared/atoms/herum-time-picker/herum-time-picker.component.ts","../../../projects/herum-shared/atoms/herum-time-picker/herum-time-picker.component.html","../../../projects/herum-shared/atoms/herum-toggle-button/herum-toggle-button.component.ts","../../../projects/herum-shared/atoms/herum-toggle-button/herum-toggle-button.component.html","../../../projects/herum-shared/atoms/herum-upload-file/herum-upload-file.component.ts","../../../projects/herum-shared/atoms/herum-upload-file/herum-upload-file.component.html","../../../projects/herum-shared/atoms/rounded-vertical-menu/rounded-vertical-menu.component.ts","../../../projects/herum-shared/atoms/rounded-vertical-menu/rounded-vertical-menu.component.html","../../../projects/herum-shared/atoms/track-text-changes-notes/track-text-changes-notes.component.ts","../../../projects/herum-shared/atoms/track-text-changes-notes/track-text-changes-notes.component.html","../../../projects/herum-shared/atoms/user-profile-image/user-profile-image.component.ts","../../../projects/herum-shared/atoms/user-profile-image/user-profile-image.component.html","../../../projects/herum-shared/atoms/users-profile-preview/users-profile-preview.component.ts","../../../projects/herum-shared/atoms/users-profile-preview/users-profile-preview.component.html","../../../projects/herum-shared/atoms/atoms-module.ts","../../../projects/herum-shared/pipes/collection-subscription-to-collection-base.pipe.ts","../../../projects/herum-shared/pipes/collection-to-collection-base.pipe.ts","../../../projects/herum-shared/pipes/resource-subscription-to-resource.pipe.ts","../../../projects/herum-shared/pipes/resource-to-resource-subscription.pipe.ts","../../../projects/herum-shared/pipes/user-identified-entities-to-backend-models.pipe.ts","../../../projects/herum-shared/pipes/sign-up-fields-to-sign-up-field-config.pipe.ts","../../../projects/herum-shared/pipes/to-integer.pipe.ts","../../../projects/herum-shared/pipes/pipes-module.ts","../../../projects/herum-shared/molecules/herum-active-link/herum-active-link.component.ts","../../../projects/herum-shared/molecules/herum-active-link/herum-active-link.component.html","../../../projects/herum-shared/molecules/herum-active-menu/herum-active-menu.component.ts","../../../projects/herum-shared/molecules/herum-active-menu/herum-active-menu.component.html","../../../projects/herum-shared/molecules/herum-autocomplete/herum-autocomplete.component.ts","../../../projects/herum-shared/molecules/herum-autocomplete/herum-autocomplete.component.html","../../../projects/herum-shared/molecules/herum-closed-list-multi-select/herum-closed-list-multi-select.component.ts","../../../projects/herum-shared/molecules/herum-closed-list-multi-select/herum-closed-list-multi-select.component.html","../../../projects/herum-shared/molecules/herum-closed-list-select/herum-closed-list-select.component.ts","../../../projects/herum-shared/molecules/herum-closed-list-select/herum-closed-list-select.component.html","../../../projects/herum-shared/molecules/herum-drop-zone/herum-drop-zone.component.ts","../../../projects/herum-shared/molecules/herum-drop-zone/herum-drop-zone.component.html","../../../projects/herum-shared/molecules/herum-expendable-panel/herum-expendable-panel.component.ts","../../../projects/herum-shared/molecules/herum-expendable-panel/herum-expendable-panel.component.html","../../../projects/herum-shared/molecules/herum-files-viewer/herum-files-viewer.component.ts","../../../projects/herum-shared/molecules/herum-files-viewer/herum-files-viewer.component.html","../../../projects/herum-shared/molecules/herum-multi-progress-bar/herum-multi-progress-bar.component.ts","../../../projects/herum-shared/molecules/herum-multi-progress-bar/herum-multi-progress-bar.component.html","../../../projects/herum-shared/molecules/herum-navigator/herum-navigator.component.ts","../../../projects/herum-shared/molecules/herum-navigator/herum-navigator.component.html","../../../projects/herum-shared/molecules/herum-step-navigator/herum-step-navigator.component.ts","../../../projects/herum-shared/molecules/herum-step-navigator/herum-step-navigator.component.html","../../../projects/herum-shared/molecules/herum-stepper/herum-stepper.component.ts","../../../projects/herum-shared/molecules/herum-stepper/herum-stepper.component.html","../../../projects/herum-shared/molecules/herum-user-profile/herum-user-profile.component.ts","../../../projects/herum-shared/molecules/herum-user-profile/herum-user-profile.component.html","../../../projects/herum-shared/molecules/key-value-list/key-value-list.component.ts","../../../projects/herum-shared/molecules/key-value-list/key-value-list.component.html","../../../projects/herum-shared/molecules/labels-with-icons-list/labels-with-icons-list.component.ts","../../../projects/herum-shared/molecules/labels-with-icons-list/labels-with-icons-list.component.html","../../../projects/herum-shared/molecules/progresses-over-view/progresses-over-view.component.ts","../../../projects/herum-shared/molecules/progresses-over-view/progresses-over-view.component.html","../../../projects/herum-shared/molecules/molecules-module.ts","../../../projects/herum-shared/errors/error-message-dialog/error-message-dialog.component.ts","../../../projects/herum-shared/errors/error-message-dialog/error-message-dialog.component.html","../../../projects/herum-shared/errors/errors-module.ts","../../../projects/herum-shared/fetched-message/fetched-message-dialog/fetched-message-dialog.component.ts","../../../projects/herum-shared/fetched-message/fetched-message-dialog/fetched-message-dialog.component.html","../../../projects/herum-shared/fetched-message/fetched-message-module.ts","../../../projects/herum-shared/table/atoms/checkbox-cell/checkbox-cell.ts","../../../projects/herum-shared/table/atoms/checkbox-cell/checkbox-cell.html","../../../projects/herum-shared/table/atoms/chips-cell/chips-cell.component.ts","../../../projects/herum-shared/table/atoms/chips-cell/chips-cell.component.html","../../../projects/herum-shared/table/atoms/copyable-cell/copyable-cell.component.ts","../../../projects/herum-shared/table/atoms/copyable-cell/copyable-cell.component.html","../../../projects/herum-shared/table/atoms/delete-row/delete-row.component.ts","../../../projects/herum-shared/table/atoms/delete-row/delete-row.component.html","../../../projects/herum-shared/table/atoms/edit-row/edit-row.component.ts","../../../projects/herum-shared/table/atoms/edit-row/edit-row.component.html","../../../projects/herum-shared/table/atoms/input-cell/input-cell.component.ts","../../../projects/herum-shared/table/atoms/input-cell/input-cell.component.html","../../../projects/herum-shared/table/atoms/row-action-buttons/row-action-buttons.component.ts","../../../projects/herum-shared/table/atoms/row-action-buttons/row-action-buttons.component.html","../../../projects/herum-shared/table/atoms/switch-cell/switch-cell.component.ts","../../../projects/herum-shared/table/atoms/switch-cell/switch-cell.component.html","../../../projects/herum-shared/table/molecules/herum-ag-grid-filter/herum-ag-grid-filter.component.ts","../../../projects/herum-shared/table/molecules/herum-ag-grid-filter/herum-ag-grid-filter.component.html","../../../projects/herum-shared/table/organisms/heurm-table/herum-table.component.ts","../../../projects/herum-shared/table/organisms/heurm-table/herum-table.component.html","../../../projects/herum-shared/table/table-module.ts","../../../projects/herum-shared/herum-shared-module.ts","../../../projects/herum-shared/animations/open-close.ts","../../../projects/herum-shared/fetched-message/fetched-message.service.ts","../../../projects/herum-shared/mongo/services/errors-handler.service.ts","../../../projects/herum-shared/mongo/services/dependents.service.ts","../../../projects/herum-shared/mongo/services/toasts.service.ts","../../../projects/herum-shared/mongo/services/uploads-manager.service.ts","../../../projects/herum-shared/mongo/molecules/herum-toasts/herum-toasts.component.ts","../../../projects/herum-shared/mongo/molecules/herum-toasts/herum-toasts.component.html","../../../projects/herum-shared/mongo/molecules/herum-uploads-manager/herum-uploads-manager.component.ts","../../../projects/herum-shared/mongo/molecules/herum-uploads-manager/herum-uploads-manager.component.html","../../../projects/herum-shared/mongo/molecules/mongo-molecules-module.ts","../../../projects/herum-shared/mongo/mongo-module.ts","../../../projects/herum-shared/organisms/audio-player/audioConfigurationConstants.ts","../../../projects/herum-shared/organisms/audio-player/time-format.pipe.ts","../../../projects/herum-shared/organisms/track-text-changes/dynamicElementsStyling.ts","../../../projects/herum-shared/public-api.ts","../../../projects/herum-shared/herum-shared.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[appHerumToolTip]'\r\n})\r\nexport class HerumToolTipDirective {\r\n\r\n @Input() tooltipText: string = '';\r\n\r\n private tooltip: HTMLElement;\r\n\r\n constructor(private el: ElementRef) {\r\n this.tooltip = document.createElement('div');\r\n this.tooltip.className = 'tooltip';\r\n }\r\n\r\n @HostListener('mouseenter') onMouseEnter() {\r\n this.showTooltip();\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n this.hideTooltip();\r\n }\r\n\r\n private showTooltip() {\r\n const hostPosition = this.el.nativeElement.getBoundingClientRect();\r\n const tooltipPosition = {\r\n top: window.scrollY + hostPosition.top - this.tooltip.offsetHeight - 30,\r\n left: window.scrollX + hostPosition.left + hostPosition.width / 4 //+ this.tooltip.offsetWidth\r\n };\r\n\r\n const bodyRect = document.body.getBoundingClientRect();\r\n const tooltipRect = this.tooltip.getBoundingClientRect();\r\n\r\n if (tooltipPosition.left < bodyRect.left) {\r\n tooltipPosition.left = bodyRect.left;\r\n } else if (tooltipPosition.left + tooltipRect.width > bodyRect.right) {\r\n tooltipPosition.left = bodyRect.right - tooltipRect.width;\r\n }\r\n\r\n this.tooltip.style.top = `${tooltipPosition.top}px`;\r\n this.tooltip.style.left = `${tooltipPosition.left}px`;\r\n document.body.appendChild(this.tooltip);\r\n this.tooltip.innerText = this.tooltipText;\r\n }\r\n\r\n private hideTooltip() {\r\n document.body.removeChild(this.tooltip);\r\n }\r\n\r\n}","\r\nconst max = 3;\r\nconst min = 0.1;\r\nconst step = 0.1;\r\nconst length = Math.round((max - min) / step) + 1;\r\n\r\nexport const speedOptions = Array.from({length},(_, i:number) => parseFloat((min + (i * step)).toFixed(1)))","import { Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\r\n\r\nconst smallSize = 'small';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-slider',\r\n templateUrl: './herum-slider.component.html',\r\n styleUrls: ['./herum-slider.component.scss']\r\n})\r\nexport class HerumSliderComponent {\r\n\r\n @Input() size: string = 'default';\r\n @Input() maxSliderValue: number;\r\n @Input() currentSliderValue: number;\r\n @Input() initSlider: boolean;\r\n l\r\n @Output() isDraggingEmitter = new EventEmitter<boolean>();\r\n @Output() updatedSliderValue = new EventEmitter<number>();\r\n @ViewChild('slider') slider: ElementRef;\r\n\r\n progress: number;\r\n isDragging: boolean = false;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['currentSliderValue']) {\r\n if (changes['currentSliderValue'].currentValue === 0)\r\n this.progress = 0;\r\n else\r\n this.progress = (100 / this.maxSliderValue) * changes['currentSliderValue'].currentValue;\r\n }\r\n }\r\n\r\n _onUpdateProgressMouseClicked(event: MouseEvent) {\r\n this.updateSliderOnMouseEvent(event);\r\n }\r\n\r\n _onUpdateProgressMouseDown(event: MouseEvent) {\r\n event.preventDefault();\r\n this.isDragging = true;\r\n document.body.classList.add('grabbing');\r\n\r\n this.isDraggingEmitter.emit(true);\r\n\r\n const mouseMoveListener = (event: MouseEvent) => { this.updateSliderOnMouseEvent(event); };\r\n const mouseUpListener = () => {\r\n this.isDragging = false;\r\n document.body.classList.remove('grabbing');\r\n this.isDraggingEmitter.emit(false);\r\n\r\n document.removeEventListener('mousemove', mouseMoveListener);\r\n document.removeEventListener('mouseup', mouseUpListener);\r\n };\r\n\r\n document.addEventListener('mouseup', mouseUpListener);\r\n document.addEventListener('mousemove', mouseMoveListener);\r\n }\r\n\r\n calculateSliderProgress(): number {\r\n return this.progress === 100 ? this.progress - 1.5 : this.progress;\r\n }\r\n\r\n isSmallSizeSlider(): boolean {\r\n return this.size === smallSize;\r\n }\r\n\r\n private updateSliderOnMouseEvent(event: MouseEvent): void {\r\n const containerWidth = this.slider.nativeElement.clientWidth;\r\n const offsetX = event.pageX - this.slider.nativeElement.getBoundingClientRect().left;\r\n this.updatedSliderValue.emit((offsetX / containerWidth) * this.maxSliderValue);\r\n }\r\n}\r\n","<div class=\"slider-container\" (click)=\"_onUpdateProgressMouseClicked($event)\">\r\n <div #slider class=\"slider-wrapper\" [ngClass]=\"{'small-slider-wrapper':isSmallSizeSlider()}\"\r\n [ngStyle]=\"{'cursor': isDragging ? 'grabbing' : 'grab'}\" (mousedown)=\"_onUpdateProgressMouseDown($event)\">\r\n <div class=\"slider-track\" [style.width.%]=\"calculateSliderProgress()\"></div>\r\n\r\n <div class=\"slider-thumb\" [style.left.%]=\"calculateSliderProgress()\"\r\n [ngClass]=\"{'small-slider-thumb': isSmallSizeSlider()}\">\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, Input, EventEmitter, Output, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-video-select',\r\n templateUrl: './herum-video-select.component.html',\r\n styleUrls: ['./herum-video-select.component.scss'],\r\n})\r\nexport class HerumVideoSelectComponent implements OnInit, ControlValueAccessor {\r\n\r\n @Input() currentVideoSpeed!: number\r\n @Input() options: number[] = [];\r\n @Output() selectedOptionEmitter = new EventEmitter<number>();\r\n\r\n selectedOption: number = 1;\r\n selectedOptionIndexValue: number = -1;\r\n isDropupOpen = false;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['currentVideoSpeed'])\r\n this.selectedOption = changes['currentVideoSpeed'].currentValue;\r\n }\r\n\r\n ngOnInit() {\r\n window.addEventListener('click', (event) => this.closeDropup(event));\r\n }\r\n\r\n onChange: (value: any) => void = () => { };\r\n\r\n onTouched: () => void = () => { };\r\n\r\n writeValue(value: any): void {\r\n this.selectedOption = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n _onToggleDropup() {\r\n this.isDropupOpen = true;\r\n }\r\n\r\n closeDropup(event: MouseEvent) {\r\n if (!(event.target as HTMLElement).matches('.internal'))\r\n this.isDropupOpen = false;\r\n }\r\n\r\n selectOption(optionIndex: number) {\r\n this.selectedOptionIndexValue = optionIndex;\r\n this.selectedOptionEmitter.emit(Number(this.options[optionIndex]));\r\n this.selectedOption = this.options[optionIndex];\r\n }\r\n\r\n isSelectedOption(optionIndex: number) {\r\n return this.selectedOptionIndexValue == optionIndex;\r\n }\r\n\r\n show() {\r\n return this.isDropupOpen;\r\n }\r\n\r\n ngOnDestroy() {\r\n window.removeEventListener('click', (event) => this.closeDropup(event));\r\n }\r\n}","<div class=\"dropup internal\" dir=\"rtl\" (click)=\"_onToggleDropup()\">\r\n <button class=\"drop-button internal selected\"\r\n [ngClass]=\"{'open-drop-button': show(), 'displayed-selected-option':selectedOption }\">\r\n {{selectedOption ? selectedOption +'X' : '1X'}}\r\n </button>\r\n\r\n <div id=\"myDropup\" [ngClass]=\"{'dropup-content': true, 'show': show()}\">\r\n <a *ngFor=\"let option of options; let i=index\" (click)=\"selectOption(i)\"\r\n [ngClass]=\"{'selected': isSelectedOption(i)}\">\r\n {{option}}X\r\n </a>\r\n </div>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'safe'\r\n})\r\nexport class SafePipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(url) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'safeHtml'\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitized: DomSanitizer) { }\r\n\r\n transform(value: any): any {\r\n return this.sanitized.bypassSecurityTrustHtml(value);\r\n }\r\n}","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnDestroy, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { IHerumInterface } from '../IHerumResource';\r\nimport { ResourceGradeUpdate } from 'herum-shared/herum-types';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { keyboardAsciiCodes, svgsStrings, regexExpressions } from 'herum-shared/constants';\r\nimport { GlobalKeyboardListenerService, KeyPressService } from 'herum-shared/services';\r\nimport { speedOptions } from './video-speed-options';\r\nimport { MediaSettings } from 'herum-shared/herum-types';\r\nimport { ResourceSubscription } from 'herum-shared/herum-types';\r\nimport { IMediaPlayer } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-video-player',\r\n templateUrl: './herum-video-player.component.html',\r\n styleUrls: ['./herum-video-player.component.scss']\r\n})\r\nexport class HerumVideoPlayerComponent implements OnChanges, OnDestroy, IHerumInterface, IMediaPlayer {\r\n\r\n @Input() resourceSubscription: ResourceSubscription;\r\n @Input() srcPath: string;\r\n @Input() resourceId: string;\r\n @Input() isResourceInWideMode!: boolean;\r\n @Input() format: 'regular' | 'preview' | 'no-height' = 'regular';\r\n @Input() mediaSettings: MediaSettings;\r\n @Input() isBlock: boolean = false;\r\n @Input() id: string;\r\n @Input() getTimeUpdate: number = 0;\r\n\r\n @Output() onGradeUpdate = new EventEmitter<ResourceGradeUpdate>();\r\n @Output() isLoadingChange = new EventEmitter<boolean>();\r\n\r\n @Output() mediaSettingsUpdate = new EventEmitter<MediaSettings>();\r\n @Output() mediaSettingsUpdateByRequest = new EventEmitter<number>();\r\n\r\n @ViewChild('videoPlayer') videoPlayer: ElementRef;\r\n\r\n @HostListener('window:keydown', ['$event'])\r\n _onKeyDown(event: KeyboardEvent) {\r\n if (this.isBlock) return;\r\n\r\n if (event.code.toLowerCase().includes(\"numpad\"))\r\n event.preventDefault();\r\n\r\n if (!this.isGlobalKeyboardBindingActive)\r\n this.keysBinding(this.formatCode(event.code));\r\n }\r\n\r\n videoLoaded: boolean = false;\r\n currentTime: string = '00:00';\r\n duration: string = '00:00';\r\n progress: number = 0;\r\n isDragging: boolean = false;\r\n maxTimePassed: number = 0;\r\n videoSpeedOptions: number[] = speedOptions;\r\n currentSpeed: number = 1;\r\n isPictureInPictureMode: boolean = false;\r\n isGlobalKeyboardBindingActive: boolean = false;\r\n canPlay: boolean = false;\r\n\r\n isToUpdateGrade$ = new Subject<void>();\r\n destroySubject$ = new Subject<null>();\r\n\r\n updateGradeInterval: any;\r\n updateCurrentTimeInterval: number;\r\n\r\n constructor(private globalKeyboardListener: GlobalKeyboardListenerService, private keyPressService: KeyPressService) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['resourceId']) {\r\n this.setGradeInterval();\r\n if ((changes['resourceId'].currentValue !== changes['resourceId'].previousValue) && changes['resourceId'].previousValue)\r\n this.resetVideoState();\r\n }\r\n\r\n if (changes['srcPath']?.previousValue && changes['srcPath']?.currentValue !== changes['srcPath'].previousValue)\r\n this.resetVideoState();\r\n\r\n if (changes['mediaSettings'] && this.videoPlayer)\r\n this.setVideoPlayer();\r\n\r\n if (changes.getTimeUpdate && !changes.getTimeUpdate.firstChange)\r\n this.mediaSettingsUpdateByRequest.emit(this.videoPlayer?.nativeElement.currentTime);\r\n\r\n }\r\n\r\n private resetVideoState() {\r\n if (this.updateGradeInterval)\r\n clearInterval(this.updateGradeInterval);\r\n\r\n this.maxTimePassed = 0;\r\n this.videoPlayer.nativeElement.pause();\r\n this.videoPlayer.nativeElement.playbackRate = this.currentSpeed = 1;\r\n\r\n this._timeUpdate();\r\n }\r\n\r\n private setGradeInterval() {\r\n this.updateGradeInterval = setInterval(() => { this.isToUpdateGrade(); }, 8000);\r\n }\r\n\r\n ngOnInit() {\r\n this.globalKeyboardListenerInitiation();\r\n\r\n this.isToUpdateGrade$.pipe(\r\n takeUntil(this.destroySubject$),\r\n debounceTime(500))\r\n .subscribe(() => { this.isToUpdateGrade(); });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setVideoPlayer();\r\n }\r\n\r\n private setVideoPlayer() {\r\n if (!this.mediaSettings)\r\n return;\r\n\r\n this.id = this.mediaSettings.id;\r\n\r\n if (this.videoLoaded)\r\n this.videoPlayer.nativeElement.currentTime = this.mediaSettings.currentTime;\r\n\r\n this.mediaSettings.isPlaying ? this.videoPlayer.nativeElement.play() : this.videoPlayer.nativeElement.pause();\r\n this.videoPlayer.nativeElement.playbackRate = this.currentSpeed = this.mediaSettings.playbackSpeed;\r\n\r\n this._timeUpdate();\r\n }\r\n\r\n private globalKeyboardListenerInitiation() {\r\n this.globalKeyboardListener.initGlobalSocket();\r\n this.globalKeyboardListener.globalKeyboardEvents$.pipe(takeUntil(this.destroySubject$)).subscribe(globalKeyboardEvent => {\r\n this.isGlobalKeyboardBindingActive = true;\r\n this.keysBinding(this.formatCode(globalKeyboardEvent.name))\r\n })\r\n }\r\n\r\n private isToUpdateGrade() {\r\n if (this.videoPlayer.nativeElement.currentTime > this.maxTimePassed) {\r\n this.maxTimePassed = this.videoPlayer.nativeElement.currentTime;\r\n this.updateGrade(this.getCurrentGrade());\r\n }\r\n }\r\n\r\n private fastForward(time: number = 10) {\r\n this.videoPlayer.nativeElement.currentTime += time;\r\n this.emitMediaSettingsUpdate();\r\n }\r\n\r\n private rewind(time: number = 10) {\r\n this.videoPlayer.nativeElement.currentTime -= time;\r\n this.emitMediaSettingsUpdate();\r\n }\r\n\r\n _onPlayPause() {\r\n if (this.isFullScreen())\r\n return;\r\n\r\n this.playPause();\r\n }\r\n\r\n private playPause() {\r\n this.videoPlayer.nativeElement.paused ? this.videoPlayer.nativeElement.play() : this.videoPlayer.nativeElement.pause();\r\n this.emitMediaSettingsUpdate();\r\n }\r\n\r\n private isFullScreen() {\r\n return document.fullscreenElement === this.videoPlayer.nativeElement;\r\n }\r\n\r\n private formatTime(time: number) {\r\n const minutes = Math.floor(time / 60);\r\n const seconds = Math.floor(time % 60);\r\n return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\r\n }\r\n\r\n _timeUpdate() {\r\n this.currentTime = this.formatTime(this.videoPlayer.nativeElement.currentTime);\r\n this.progress = (100 / this.videoPlayer.nativeElement.duration) * this.videoPlayer.nativeElement.currentTime;\r\n }\r\n\r\n _onMuteUnmute() {\r\n this.videoPlayer.nativeElement.muted = !this.videoPlayer.nativeElement.muted;\r\n this.videoPlayer.nativeElement.muted ? this.videoPlayer.nativeElement.volume = 0 : this.videoPlayer.nativeElement.volume = 1;\r\n }\r\n\r\n _onToggleFullScreen() {\r\n this.videoPlayer.nativeElement.requestFullscreen();\r\n }\r\n\r\n private getCurrentGrade(): number {\r\n return (this.videoPlayer.nativeElement.currentTime / this.videoPlayer.nativeElement.duration) * 100;\r\n }\r\n\r\n private updateGrade(newGrade: number) {\r\n this.onGradeUpdate.emit({ newGrade: Math.floor(newGrade), resourceId: this.resourceId } as ResourceGradeUpdate);\r\n this.emitMediaSettingsUpdate();\r\n return newGrade;\r\n }\r\n\r\n _onTogglePictureInPictureMode() {\r\n this.isPictureInPictureMode = !this.isPictureInPictureMode;\r\n const videoElement = this.videoPlayer.nativeElement;\r\n\r\n if (videoElement !== (document as any).pictureInPictureElement)\r\n videoElement.requestPictureInPicture();\r\n else\r\n (document as any).exitPictureInPicture();\r\n }\r\n\r\n _setisDragging(isDragging: boolean) {\r\n this.isDragging = isDragging;\r\n }\r\n\r\n _setVideoPlayerCurrentTime(currentTime: number) {\r\n this.canPlay = false;\r\n this.videoPlayer.nativeElement.currentTime = currentTime;\r\n this.isToUpdateGrade$.next();\r\n this.emitMediaSettingsUpdate();\r\n }\r\n\r\n _setVideoPlayerVolume(volume: number) {\r\n if (volume <= 0) {\r\n this.videoPlayer.nativeElement.volume = 0;\r\n this.videoPlayer.nativeElement.muted = true;\r\n }\r\n else if (volume > 1)\r\n this.videoPlayer.nativeElement.volume = 1;\r\n else {\r\n this.videoPlayer.nativeElement.muted = false;\r\n this.videoPlayer.nativeElement.volume = volume;\r\n }\r\n }\r\n\r\n _setVideoSpeed(speed: number) {\r\n this.currentSpeed = speed;\r\n this.videoPlayer.nativeElement.playbackRate = speed;\r\n\r\n this.emitMediaSettingsUpdate();\r\n }\r\n\r\n _loadStart() {\r\n this.isLoadingChange.emit(true);\r\n }\r\n\r\n _videoLoad() {\r\n this.videoLoaded = true;\r\n this.isLoadingChange.emit(false);\r\n\r\n this.duration = this.formatTime(this.videoPlayer.nativeElement.duration);\r\n this.videoPlayer.nativeElement.currentTime = this.resourceSubscription?.grade ? (this.resourceSubscription.grade / 100) * (this.videoPlayer.nativeElement.duration) : 0\r\n\r\n if (this.mediaSettings?.currentTime)\r\n this.videoPlayer.nativeElement.currentTime = this.mediaSettings.currentTime;\r\n }\r\n\r\n _canplay() {\r\n this.canPlay = true;\r\n }\r\n\r\n private emitMediaSettingsUpdate() {\r\n this.mediaSettingsUpdate.emit({\r\n isPlaying: !this.videoPlayer.nativeElement.paused,\r\n currentTime: this.videoPlayer.nativeElement.currentTime,\r\n playbackSpeed: this.currentSpeed,\r\n id: this.id\r\n });\r\n }\r\n\r\n private keysBinding(keyName: string) {\r\n this.keysBindingToFunction[keyName]?.function();\r\n }\r\n\r\n get keysBindingToFunction() {\r\n return {\r\n numpad0: { keyNumber: keyboardAsciiCodes.insert, function: () => this.playPause() },\r\n numpad1: { keyNumber: keyboardAsciiCodes.end, function: () => this._setVideoSpeed(0.5) },\r\n numpad2: { keyNumber: keyboardAsciiCodes.arrowDown, function: () => this._setVideoSpeed(1) },\r\n numpad3: { keyNumber: keyboardAsciiCodes.pageDown, function: () => this._setVideoSpeed(2) },\r\n numpad4: { keyNumber: keyboardAsciiCodes.left, function: () => this.rewind(3) },\r\n numpad5: { keyNumber: keyboardAsciiCodes.clear, function: () => this.rewind(0.7) },\r\n numpad6: { keyNumber: keyboardAsciiCodes.right, function: () => this.fastForward(3) },\r\n numpad7: { keyNumber: keyboardAsciiCodes.home, function: () => this.rewind(10) },\r\n numpad9: { keyNumber: keyboardAsciiCodes.pageUp, function: () => this.fastForward(10) },\r\n }\r\n }\r\n\r\n private formatCode(code: string) {\r\n return code.toLowerCase().replace(regexExpressions.removeSpacesRegex, \"\");\r\n }\r\n\r\n get primaryPlaySvg() {\r\n return svgsStrings.primaryPlay;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n clearInterval(this.updateGradeInterval);\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n}","<div class=\"video-player\"\r\n [ngStyle]=\"{ 'height' : isResourceInWideMode ? '78vh' : (format == 'preview') ? '200px' : (format == 'no-height') ? 'unset' : '70vh' }\">\r\n <div class=\"video-container\">\r\n <video #videoPlayer id=\"videoPlayer\" [src]=\"srcPath | safe\" (loadedmetadata)=\"_videoLoad()\"\r\n (canplay)=\"_canplay()\" (click)=\"_onPlayPause()\" (timeupdate)=\"_timeUpdate()\" (loadstart)=\"_loadStart()\">\r\n Your browser does not support the video tag.\r\n </video>\r\n </div>\r\n\r\n <div class=\"big-play-container\">\r\n <span class=\"fade-loader\" *ngIf=\"!canPlay\"></span>\r\n\r\n <span class=\"primary-play\" *ngIf=\"videoPlayer.paused && canPlay && !isBlock\"\r\n [innerHTML]=\"primaryPlaySvg | safeHtml\" (click)=\"_onPlayPause()\">\r\n </span>\r\n </div>\r\n\r\n <div class=\"controls\" *ngIf=\"videoLoaded && !isBlock\">\r\n <herum-slider class=\"video-slider\" [currentSliderValue]=\"videoPlayer.currentTime\"\r\n [maxSliderValue]=\"videoPlayer.duration\" (isDraggingEmitter)=\"_setisDragging($event)\"\r\n (updatedSliderValue)=\"_setVideoPlayerCurrentTime($event)\">\r\n </herum-slider>\r\n\r\n <div class=\"row w-100\">\r\n <div class=\"col-6 right-controls\">\r\n <button (click)=\"rewind()\" id=\"back\">\r\n <img class=\"control-icon\" src=\"assets/shared/icons/video/back10.svg\">\r\n </button>\r\n\r\n <button (click)=\"fastForward()\" id=\"forward\">\r\n <img class=\"control-icon\" src=\"assets/shared/icons/video/next10.svg\">\r\n </button>\r\n\r\n <herum-video-select class=\"video-speed-select\" [options]=\"videoSpeedOptions\"\r\n [currentVideoSpeed]=\"videoPlayer.playbackRate\" (selectedOptionEmitter)=\"_setVideoSpeed($event)\">\r\n </herum-video-select>\r\n\r\n <button (click)=\"_onTogglePictureInPictureMode()\">\r\n <img class=\"control-icon\" *ngIf=\"!isPictureInPictureMode \"\r\n src=\"assets/shared/icons/video/pictureInPicture.svg\">\r\n <img class=\"control-icon\" *ngIf=\"isPictureInPictureMode \"\r\n src=\"assets/shared/icons/video/pictureInPictureOff.svg\">\r\n </button>\r\n\r\n <button (click)=\"_onToggleFullScreen()\">\r\n <img class=\"control-icon\" src=\"assets/shared/icons/video/fullScreen.svg\">\r\n </button>\r\n </div>\r\n\r\n <div class=\"col-6 left-controls p-0\">\r\n <button (click)=\"_onPlayPause()\">\r\n <img class=\"control-icon\" *ngIf=\"videoPlayer.paused\" src=\"assets/shared/icons/video/play.svg\">\r\n <img class=\"control-icon\" *ngIf=\"!videoPlayer.paused\" src=\"assets/shared/icons/video/pause.svg\">\r\n </button>\r\n\r\n <span>{{duration}} / {{currentTime}} </span>\r\n\r\n <ng-container *ngIf=\"format == 'regular'\">\r\n <img class=\"control-icon\" *ngIf=\"!videoPlayer.muted && videoPlayer.volume \"\r\n (click)=\"_onMuteUnmute()\" src=\"assets/shared/icons/video/sound.svg\">\r\n\r\n <img class=\"control-icon\" *ngIf=\"videoPlayer.muted || !videoPlayer.volume\" (click)=\"_onMuteUnmute()\"\r\n src=\"assets/shared/icons/video/mute.svg\">\r\n </ng-container>\r\n\r\n <herum-slider *ngIf=\"format == 'regular'\" class=\"volume-slider\"\r\n [currentSliderValue]=\"videoPlayer.muted ? 0 : videoPlayer.volume \" [maxSliderValue]=\"1\"\r\n [size]=\"'small'\" (updatedSliderValue)=\"_setVideoPlayerVolume($event)\"></herum-slider>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-video-range-bar',\r\n templateUrl: './herum-video-range-bar.component.html',\r\n styleUrls: ['./herum-video-range-bar.component.scss']\r\n})\r\nexport class HerumVideoRangeBarComponent implements OnInit {\r\n\r\n @Input() percentage: number;\r\n @Output() percentageChanged: EventEmitter<number> = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n onBarClicked(): void {\r\n this.percentageChanged.emit(this.percentage);\r\n }\r\n}","<div class=\"range-bar\">\r\n <div class=\"range-bar-fill\" [ngStyle]=\"{'width.%': percentage}\"></div>\r\n</div>","import { Component, ElementRef, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';\r\nimport { IHerumInterface } from '../IHerumResource';\r\nimport { ResourceGradeUpdate } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-pdf-viewer',\r\n templateUrl: './herum-pdf-viewer.component.html',\r\n styleUrls: ['./herum-pdf-viewer.component.scss']\r\n})\r\nexport class HerumPdfViewerComponent implements OnChanges, IHerumInterface {\r\n\r\n @Input() srcPath: string;\r\n @Input() isResourceInWideMode!: boolean;\r\n @Input() resourceId: string;\r\n @Output() onGradeUpdate = new EventEmitter<ResourceGradeUpdate>();\r\n\r\n @ViewChild('pdfFrame') pdfFrame: ElementRef;\r\n\r\n ngOnChanges(): void {\r\n this.updateGrade(100);\r\n }\r\n\r\n private updateGrade(newGrade: number) {\r\n this.onGradeUpdate.emit({ newGrade: Math.floor(newGrade), resourceId: this.resourceId } as ResourceGradeUpdate);\r\n }\r\n\r\n handleError(a: any) { }\r\n\r\n onError() { }\r\n}","<iframe #pdfFrame (load)=\"handleError($event)\" (error)=\"onError()\" (cancel)=\"onError()\" (invalid)=\"onError()\"\r\n class=\"rounded-corners\" [src]=\"srcPath | safe\" width=\"100%\"\r\n [ngStyle]=\"{'height': isResourceInWideMode ? '100%' : '88%'}\"></iframe>","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { IHerumInterface } from '../IHerumResource';\r\nimport { ResourceGradeUpdate } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-story-viewer',\r\n templateUrl: './herum-story-viewer.component.html',\r\n styleUrls: ['./herum-story-viewer.component.scss']\r\n})\r\nexport class HerumStoryViewerComponent implements OnChanges, IHerumInterface {\r\n\r\n @Input() srcPath: string;\r\n @Input() isResourceInWideMode!: boolean;\r\n @Input() resourceId: string;\r\n @Output() onGradeUpdate = new EventEmitter<ResourceGradeUpdate>();\r\n\r\n constructor() { }\r\n\r\n ngOnChanges(): void {\r\n this.updateGrade(100);\r\n }\r\n\r\n private updateGrade(newGrade: number) {\r\n this.onGradeUpdate.emit({ newGrade: Math.floor(newGrade), resourceId: this.resourceId } as ResourceGradeUpdate);\r\n }\r\n}","<iframe class=\"rounded-corners\" [src]=\"srcPath | safe\" width=\"100%\"\r\n [ngStyle]=\"{'height': isResourceInWideMode ? '100%' : '88%'}\">\r\n</iframe>","import { HttpClient } from '@angular/common/http';\r\nimport { Directive, ElementRef, HostListener, Inject, Input } from '@angular/core';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\nconst unwantedSelectors = [\"div\", null]\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[userAction]'\r\n})\r\nexport class UserActionDirective {\r\n\r\n @Input('userAction') description: string;\r\n\r\n constructor(private el: ElementRef, private http: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event) {\r\n var obj = {\r\n system: this.environmentConfig?.environment?.envName,\r\n currentUrl: this.el.nativeElement?.formAction,\r\n innerText: this.el.nativeElement?.innerText,\r\n attributes: Array.from(Object.values(this.el.nativeElement?.attributes)).map((attribute: any) => ({\r\n attribute: attribute.name,\r\n value: attribute.value\r\n })),\r\n selector: this.el.nativeElement?.tagName,\r\n viewPath: event.path?.map(viewElement => viewElement.localName).filter(selector => !unwantedSelectors.includes(selector) && selector),\r\n timeStamp: event.timeStamp,\r\n screenX: event.screenX,\r\n screenY: event.screenY,\r\n description: this.description\r\n }\r\n this.http.post(this.environmentConfig?.environment?.userAction, obj).subscribe(res => { });\r\n }\r\n}","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IHerumInterface } from '../IHerumResource';\r\nimport { ResourceGradeUpdate } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'app-herum-presentation-viewer',\r\n templateUrl: './herum-presentation-viewer.component.html',\r\n styleUrls: ['./herum-presentation-viewer.component.scss']\r\n})\r\nexport class HerumPresentationViewerComponent implements OnInit, IHerumInterface {\r\n\r\n @Input() srcPath: string;\r\n @Input() resourceId: string;\r\n @Output() onGradeUpdate = new EventEmitter<ResourceGradeUpdate>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.updateGrade(100);\r\n }\r\n\r\n private updateGrade(newGrade: number) {\r\n this.onGradeUpdate.emit({ newGrade: Math.floor(newGrade), resourceId: this.resourceId } as ResourceGradeUpdate);\r\n }\r\n}\r\n","<p>herum-presentation-viewer works!</p>\r\n","import { Component, ElementRef, Inject, Input, ViewChild } from '@angular/core';\r\nimport { system } from 'herum-shared/constants';\r\nimport lottie from 'lottie-web';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-loader',\r\n templateUrl: './herum-loader.component.html',\r\n styleUrls: ['./herum-loader.component.scss'],\r\n})\r\nexport class HerumLoaderComponent {\r\n @Input() loaderText = 'בדרך אליך';\r\n @ViewChild('lottieRef', { static: true }) lottieRef!: ElementRef;\r\n isHadracha: boolean = true;\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n this.isHadracha = this.environmentConfig?.environment.systemIdentifier == system.hadracha;\r\n }\r\n\r\n ngOnInit() {\r\n this.isHadracha = this.environmentConfig?.environment.systemIdentifier == system.hadracha;\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.lottieRef && this.lottieRef.nativeElement) {\r\n try {\r\n const animation = lottie.loadAnimation({\r\n container: this.lottieRef.nativeElement,\r\n renderer: 'svg',\r\n loop: true,\r\n autoplay: true,\r\n path: '/assets/hadracha/loader.json'\r\n });\r\n\r\n animation.addEventListener('error', (error: any) => {\r\n console.error('Lottie animation error:', error);\r\n });\r\n } catch (error) {\r\n console.error('Failed to load Lottie animation:', error);\r\n }\r\n } else {\r\n console.error('Lottie container element not found');\r\n }\r\n }\r\n}","<div class=\"loader-container ag-overlay-loading-center\" *ngIf=\"!isHadracha\">\r\n <div class=\"loader\">\r\n <div>\r\n <ul>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n </ul>\r\n </div>\r\n <span>{{loaderText}}</span>\r\n <!-- <span *ngIf=\"percentage > -1\">{{percentage}}</span> -->\r\n </div>\r\n</div>\r\n\r\n<div class=\"loader-container ag-overlay-loading-center\" [hidden]=\"!isHadracha\">\r\n <div class=\"hadracha-centered-container\">\r\n <div class=\"lottie-container\" #lottieRef></div>\r\n <span *ngIf=\"loaderText\">{{loaderText}}</span>\r\n </div>\r\n</div>","import { Directive, HostListener, HostBinding, ElementRef, Input } from '@angular/core';\r\n\r\nconst iconDefaultColor: string = '#7897a8';\r\n\r\nconst attribute: string = 'stroke';\r\nconst pathSelector: string = 'path';\r\nconst svgSelector: string = 'svg';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[svgOnHover]'\r\n})\r\nexport class SvgOnHoverDirective {\r\n\r\n @Input('svgOnHover') iconHoverColor!: string;\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter() {\r\n if (!this.iconHoverColor)\r\n this.iconHoverColor = window.getComputedStyle(document.body).getPropertyValue('--icons-color');\r\n\r\n if (this.element.nativeElement.querySelector(svgSelector)?.querySelectorAll(pathSelector).length === 1)\r\n this.setElementAttribute(this.iconHoverColor);\r\n else;\r\n this.setElementsAttribute(this.iconHoverColor);\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave() {\r\n if (this.element.nativeElement.querySelector(svgSelector)?.querySelectorAll(pathSelector).length === 1)\r\n this.setElementAttribute(iconDefaultColor);\r\n else\r\n this.setElementsAttribute(iconDefaultColor);\r\n }\r\n\r\n @HostBinding()\r\n stroke: string;\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n setElementAttribute(color: string) {\r\n const element = this.element.nativeElement.querySelector(svgSelector)?.querySelector(pathSelector);\r\n element?.setAttribute(attribute, color);\r\n }\r\n\r\n setElementsAttribute(color: string) {\r\n const elements = this.element.nativeElement.querySelector(svgSelector)?.querySelectorAll(pathSelector);\r\n elements?.forEach(element => element.setAttribute(attribute, color));\r\n }\r\n}","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-button',\r\n templateUrl: './herum-button.component.html',\r\n styleUrls: ['./herum-button.component.scss']\r\n})\r\nexport class HerumButtonComponent {\r\n\r\n @Input() type: 'primary' | 'secondary' | 'ghost' | 'white' = 'primary';\r\n @Input() color: 'regular' | 'error' = 'regular';\r\n @Input() size: 'fit' | 'small' | 'medium' | 'medium-square' | 'big' = 'medium';\r\n @Input() roundedCorners: 'up' | 'down' | 'default' = 'default';\r\n @Input() disabled: boolean = false;\r\n @Input() isLoading: boolean = false;\r\n @Input() name: string;\r\n}","<button userAction class=\"herum-button shadow\" [name]=\"name\"\r\n [ngClass]=\"[type, color ?? '', size, roundedCorners + '-rounded-corners', isLoading ? 'skeleton' : '']\"\r\n [disabled]=\"disabled\">\r\n <ng-content></ng-content>\r\n</button>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { QuizHeaderState } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-quiz-header-item',\r\n templateUrl: './herum-quiz-header-item.component.html',\r\n styleUrls: ['./herum-quiz-header-item.component.scss']\r\n})\r\nexport class HerumQuizHeaderItemComponent {\r\n\r\n @Input() index!: string;\r\n @Input() item!: {};\r\n @Input() itemState!: {};\r\n @Output() itemEmitter = new EventEmitter();\r\n\r\n _onSelectItem(index: string) {\r\n this.itemEmitter.emit(index);\r\n }\r\n\r\n getItemClass(itemState: {}): string {\r\n switch (itemState) {\r\n case QuizHeaderState.current:\r\n return 'current';\r\n case QuizHeaderState.correct:\r\n return 'correct';\r\n case QuizHeaderState.wrong:\r\n return 'wrong';\r\n case QuizHeaderState.answered:\r\n return 'answered';\r\n case QuizHeaderState.unanswered:\r\n return 'unanswered';\r\n case QuizHeaderState.skipped:\r\n return 'skipped';\r\n default:\r\n return 'current';\r\n }\r\n }\r\n}","<div class=\"item\" (click)=\"_onSelectItem(index)\">\r\n <div class=\"item-number\" [ngClass]=\"getItemClass(itemState)\">{{index +1}}\r\n </div>\r\n</div>","import { Component, Input, SimpleChanges, TemplateRef } from '@angular/core';\r\n\r\nconst currentItemIndexInput: string = 'currentItemIndex';\r\nconst containerSizeInput: string = 'containerSize';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-list-centralizer',\r\n templateUrl: './herum-list-centralizer.component.html',\r\n styleUrls: ['./herum-list-centralizer.component.scss']\r\n})\r\nexport class HerumListCentralizerComponent {\r\n\r\n @Input() containerSize!: number;\r\n @Input() itemSize!: number;\r\n @Input() currentItemIndex!: number;\r\n @Input() isHorizontalMode: boolean = false;\r\n @Input() isArrowsNeeded: boolean = false;\r\n @Input() itemTemplate!: TemplateRef<any>;\r\n @Input() itemsState!: any[];\r\n @Input() items!: any[];\r\n @Input() centralizedIndex!: number;\r\n\r\n maxItemsToShow!: number;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes[currentItemIndexInput]?.currentValue && changes[currentItemIndexInput])\r\n this.setCentralizedIndex(changes);\r\n\r\n if (this.itemSize && changes[containerSizeInput]?.currentValue)\r\n this.calculateResourcesToShow();\r\n }\r\n\r\n private setCentralizedIndex(changes: SimpleChanges) {\r\n if (changes[currentItemIndexInput].firstChange && this.centralizedIndex === undefined)\r\n this.centralizedIndex = changes[currentItemIndexInput].currentValue;\r\n\r\n if (!changes[currentItemIndexInput].firstChange)\r\n this.centralizedIndex = changes[currentItemIndexInput].currentValue;\r\n }\r\n\r\n private calculateResourcesToShow() {\r\n this.maxItemsToShow = Math.floor(this.containerSize / this.itemSize);\r\n }\r\n\r\n _onPreviousCentralizedIndex() {\r\n this.centralizedIndex--;\r\n }\r\n\r\n _onNextCentralizedIndex() {\r\n this.centralizedIndex++;\r\n }\r\n\r\n _slicedList(items: any[]) {\r\n if (!this.isSlicedItemsNeeded)\r\n return items;\r\n\r\n const halfOfMaxItemsToShow = this.maxItemsToShow * 0.5;\r\n\r\n this.centralizedIndex = this.centralizedIndex > this.items.length - halfOfMaxItemsToShow ? this.items.length - halfOfMaxItemsToShow : this.centralizedIndex;\r\n this.centralizedIndex = this.centralizedIndex < halfOfMaxItemsToShow ? halfOfMaxItemsToShow : this.centralizedIndex;\r\n\r\n return items.slice(this.centralizedIndex - halfOfMaxItemsToShow, this.centralizedIndex + halfOfMaxItemsToShow);\r\n }\r\n\r\n get isPreviousArrowActive() {\r\n return this.centralizedIndex > this.maxItemsToShow / 2;\r\n }\r\n\r\n get isNextArrowActive() {\r\n return this.centralizedIndex < this.items.length - this.maxItemsToShow / 2;\r\n }\r\n\r\n get isSlicedItemsNeeded() {\r\n return this.items?.length > this.maxItemsToShow;\r\n }\r\n}","<div [ngClass]=\"{'horizontal-list':isHorizontalMode}\">\r\n <div *ngIf=\"isArrowsNeeded && isSlicedItemsNeeded\" class=\"rotate-180\" (click)=\"_onPreviousCentralizedIndex()\">\r\n <img src=\"assets/quiz/greyHeaderArrow.svg\" *ngIf=\"!isPreviousArrowActive\" />\r\n <img class=\"cursor-pointer\" src=\"assets/quiz/greenHeaderArrow.svg\" *ngIf=\"isPreviousArrowActive\" />\r\n </div>\r\n\r\n <div [ngClass]=\"{'d-flex flex-row':isHorizontalMode}\">\r\n <ng-container *ngFor=\"let item of _slicedList(items); let itemIndex = index\">\r\n <ng-container *ngFor=\"let itemState of _slicedList(itemsState); let itemsStateIndex = index\">\r\n <ng-container *ngIf=\"itemIndex === itemsStateIndex\">\r\n <div\r\n *ngTemplateOutlet=\"itemTemplate; context:{index:itemState.index, item: item, itemState: itemState.state}\">\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"isArrowsNeeded && isSlicedItemsNeeded\" (click)=\"_onNextCentralizedIndex()\">\r\n <img src=\"assets/quiz/greyHeaderArrow.svg\" *ngIf=\"!isNextArrowActive\" />\r\n <img class=\"cursor-pointer\" src=\"assets/quiz/greenHeaderArrow.svg\" *ngIf=\"isNextArrowActive\" />\r\n </div>\r\n</div>","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { QuizHeaderState } from 'herum-shared/herum-types';\r\nimport { Question, QuizData } from 'herum-shared/herum-types';\r\n\r\nconst stateField: string = 'state';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'quiz-header',\r\n templateUrl: './quiz-header.component.html',\r\n styleUrls: ['./quiz-header.component.scss']\r\n})\r\nexport class QuizHeaderComponent {\r\n\r\n @Input() quizData!: QuizData;\r\n @Output() onSelectQuestion = new EventEmitter<number>();\r\n @Output() onReturnToGradePage = new EventEmitter<boolean>();\r\n @ViewChild('questionsContainer') questionsContainer: ElementRef;\r\n\r\n maxQuestionsToShow: number = 18;\r\n questionWidth: number = 47;\r\n\r\n _onSelectQuestion(questionIndex: number) {\r\n this.onSelectQuestion.emit(questionIndex);\r\n }\r\n\r\n _onReturnToGradePage() {\r\n this.onReturnToGradePage.emit(true);\r\n }\r\n\r\n _backToSummary() {\r\n this._onSelectQuestion(this.quizData.questions.length + 1);\r\n }\r\n\r\n private isQuestionAnswered(question: Question) {\r\n return this.quizData.userAnswers?.find(userAnswer => userAnswer.id == question.id)?.userAnswers?.some(answer => answer.isChosen);\r\n }\r\n\r\n private isUserAnsweredCorrect(question: Question) {\r\n return this.quizData.userAnswers.find(userAnswer => userAnswer.id == question.id).areAnswersCorrect;\r\n }\r\n\r\n get questionsContainerWidth() {\r\n return this.questionsContainer?.nativeElement?.offsetWidth;\r\n }\r\n\r\n get questionsState() {\r\n return this.quizData.questions.map((question) => {\r\n let questionState = { index: question.index };\r\n\r\n if (question.index + 1 === this.quizData.currentQuestion) {\r\n this.quizData.isSubmitted ? questionState[stateField] = QuizHeaderState.default : questionState[stateField] = QuizHeaderState.current;\r\n return questionState;\r\n }\r\n\r\n if (this.quizData.isSubmitted) {\r\n this.isUserAnsweredCorrect(question) ? questionState[stateField] = QuizHeaderState.correct : questionState[stateField] = QuizHeaderState.wrong;\r\n return questionState;\r\n }\r\n\r\n if (question.isSkipped) {\r\n questionState[stateField] = QuizHeaderState.skipped;\r\n return questionState;\r\n }\r\n\r\n this.isQuestionAnswered(question) ? questionState[stateField] = QuizHeaderState.answered : questionState[stateField] = QuizHeaderState.unanswered;\r\n\r\n return questionState;\r\n });\r\n }\r\n}","<div class=\"quiz-header-container\">\r\n <div class=\"top-buttons-conatiner\">\r\n <p class=\"quiz-header-title\">רשימת שאלות </p>\r\n <p class=\"quiz-header-title clickable-text\"\r\n *ngIf=\"quizData.isSubmitted && quizData.currentQuestion!==quizData.questions.length + 2\"\r\n (click)=\" _backToSummary()\">\r\n חזרה למסך סיכום\r\n </p>\r\n </div>\r\n\r\n <div #questionsContainer class=\"question-list-container\">\r\n <herum-list-centralizer [currentItemIndex]=\"quizData.currentQuestion\" [itemSize]=\"questionWidth\"\r\n [containerSize]=\"questionsContainerWidth\" [isHorizontalMode]=true [itemTemplate]=\"itemTemplate\"\r\n [items]=\"quizData.questions\" [itemsState]=\"questionsState\" [isArrowsNeeded]=\"true\">\r\n </herum-list-centralizer>\r\n </div>\r\n\r\n <ng-template #itemTemplate let-index=\"index\" let-item=\"item\" let-itemState=\"itemState\">\r\n <herum-quiz-header-item [index]=\"index\" [item]=\"item\" [itemState]=\"itemState\"\r\n (itemEmitter)=\"_onSelectQuestion($event)\"></herum-quiz-header-item>\r\n </ng-template>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'ellipsis'\r\n})\r\nexport class EllipsisPipe implements PipeTransform {\r\n transform(value: string, element: HTMLElement, numberOfRows: number = 1): string {\r\n if (!value || !element || numberOfRows < 1)\r\n return '';\r\n\r\n if (!element.clientWidth)\r\n return value;\r\n\r\n const style: CSSStyleDeclaration = window.getComputedStyle(element);\r\n const fontSize: number = parseFloat(style.fontSize);\r\n const fontFamily: string = style.fontFamily;\r\n const availableWidth: number = element.clientWidth - this.getElementWidth(fontSize, fontFamily, '...');\r\n\r\n return numberOfRows > 1 ?\r\n this.handleMultiRows(value, fontSize, fontFamily, numberOfRows, element.clientWidth, availableWidth)\r\n :\r\n this.ellipsis(value, fontSize, fontFamily, availableWidth);\r\n }\r\n\r\n private handleMultiRows(value: string, fontSize: number, fontFamily: string, numberOfRows: number, maxRowWidth: number, availableWidth: number) {\r\n const words: string[] = value.split(' ');\r\n let text: string = '';\r\n let rowWidthCounter: number = 0;\r\n let rowsCounter: number = 1\r\n let isLastRow: boolean = false\r\n\r\n for (let index = 0; index < words.length; index++) {\r\n const word = words[index];\r\n const wordWidth = this.getElementWidth(fontSize, fontFamily, word) + this.getElementWidth(fontSize, fontFamily, ' ');\r\n\r\n if ((rowWidthCounter + wordWidth >= maxRowWidth)) {\r\n rowsCounter = rowsCounter + 1;\r\n rowWidthCounter = 0;\r\n }\r\n\r\n isLastRow = rowsCounter === numberOfRows;\r\n\r\n if ((Math.ceil(rowWidthCounter + wordWidth) < maxRowWidth) && !isLastRow) {\r\n rowWidthCounter += wordWidth;\r\n text += words[index] + ' ';\r\n }\r\n\r\n if (isLastRow && index < words.length) {\r\n const leftText = words.slice(index).join(' ');\r\n text += this.ellipsis(leftText, fontSize, fontFamily, availableWidth);\r\n break;\r\n }\r\n }\r\n return text;\r\n }\r\n\r\n private ellipsis(text: string, fontSize: number, fontFamily: string, availableWidth: number): string {\r\n let totalWidth: number = 0;\r\n let newText: string = '';\r\n\r\n for (let index = 0; index < text.length; index++) {\r\n const char = text[index];\r\n const charWidth = this.getElementWidth(fontSize, fontFamily, char);\r\n\r\n totalWidth += charWidth;\r\n\r\n if (Math.ceil(totalWidth) >= availableWidth)\r\n return newText + '...';\r\n\r\n newText += char;\r\n }\r\n\r\n return newText;\r\n }\r\n\r\n private getElementWidth(fontSize: number, fontFamily: string, element: string): number {\r\n const canvas: HTMLCanvasElement = document.createElement('canvas');\r\n const context: CanvasRenderingContext2D = canvas.getContext('2d');\r\n context.font = `${fontSize}px ${fontFamily}`;\r\n const metrics: TextMetrics = context.measureText(element);\r\n\r\n return metrics.width;\r\n }\r\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Answer, Question } from 'herum-shared/herum-types';\r\nimport { UserAnswer } from 'herum-shared/herum-types';\r\nimport { isTruncatedTitleElement } from 'herum-shared/utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'quiz-two-answers-question',\r\n templateUrl: './quiz-two-answers-question.component.html',\r\n styleUrls: ['./quiz-two-answers-question.component.scss']\r\n})\r\nexport class QuizTwoAnswersQuestionComponent {\r\n\r\n @Input() question!: Question;\r\n @Input() userAnswers!: UserAnswer[];\r\n @Input() isSubmitted: boolean = false;\r\n @Output() onAnswersChange = new EventEmitter<UserAnswer[]>();\r\n\r\n selectedAnswer: string = '';\r\n\r\n _onAnswersChange(answer: Answer) {\r\n if (this.isSubmitted)\r\n return;\r\n\r\n this.selectedAnswer = answer.id;\r\n this.onAnswersChange.emit([{\r\n id: this.selectedAnswer,\r\n index: answer.index,\r\n isChosen: true\r\n }]);\r\n }\r\n\r\n _getAnswerClass(answer: Answer) {\r\n if (this.isSubmitted) {\r\n return this.userAnswers.some(userAnswer => userAnswer.id === answer.id && userAnswer.isChosen) ?\r\n `submitted-quiz ${answer.isCorrect ? 'correct' : 'wrong'}` : `submitted-quiz`;\r\n }\r\n\r\n return this.userAnswers.some(userAnswer => userAnswer.id === answer.id && userAnswer.isChosen) ? 'selected-answer' : '';\r\n }\r\n\r\n _isTruncatedTitleElement(element: HTMLElement): boolean {\r\n return isTruncatedTitleElement(element);\r\n }\r\n}","<div class=\"answers-container\">\r\n <div class=\"answer-item herum-card\" *ngFor=\"let answer of question.answers; let i=index\"\r\n [ngClass]=\"_getAnswerClass(answer)\" (click)=\"_onAnswersChange(answer)\">\r\n <p #answerText class=\"w-100 \" [matTooltip]=\"_isTruncatedTitleElement(answerText)? answer.content : ''\">\r\n {{ answer.content | ellipsis:answerText }}\r\n </p>\r\n </div>\r\n</div>","import { Component, Input, EventEmitter, Output, forwardRef, SimpleChanges, Inject } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { IdentifiedEntity } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\nconst CUSTOM_RADIO_BUTTON_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumRadioButtonComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-radio-button',\r\n templateUrl: './radio-button.component.html',\r\n styleUrls: ['./radio-button.component.scss'],\r\n providers: [CUSTOM_RADIO_BUTTON_CONTROL_VALUE_ACCESSOR]\r\n\r\n})\r\nexport class HerumRadioButtonComponent implements ControlValueAccessor {\r\n\r\n @Input() options: IdentifiedEntity[] = [];\r\n @Input() isValid: boolean = false;\r\n @Input() errorMsg: string = '';\r\n @Input() isVertical: boolean = false;\r\n @Output() selectOptionEmitter = new EventEmitter<string>();\r\n @Input() isBlocked: boolean = false;\r\n @Input() type: 'checked' | 'error' | 'disabled' | 'completed';\r\n @Input() selectedOption!: string\r\n @Input() additionalOptionsText: string[] = []\r\n @Input() showAdditionalOptionsText: boolean = false;\r\n\r\n @Input() secondarySelectedOption: IdentifiedEntity;\r\n\r\n selectedOptionId!: string;\r\n isSelectedOptionFocused: boolean = false;\r\n isOptionFocused: boolean = false;\r\n focusedIdOption!: string;\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['selectedOption']?.currentValue)\r\n this.selectedOptionId = changes['selectedOption'].currentValue;\r\n\r\n if (changes['type']?.currentValue)\r\n changes['type'].currentValue === this.environmentConfig?.radioButtonTypes?.disabled ? this.isBlocked = true : null;\r\n }\r\n\r\n _onSelect(option: IdentifiedEntity) {\r\n if (this.isBlocked)\r\n return;\r\n\r\n this.selectedOptionId = option.id;\r\n this.onChange(option);\r\n this.selectOptionEmitter.emit(option.id);\r\n }\r\n\r\n getRadioButtonClasses(id: string) {\r\n let classes: string = this.isBlocked ? 'not-clickable ' : '';\r\n\r\n if (this.type === this.environmentConfig?.radioButtonTypes?.disabled && !this.selectedOption)\r\n return classes += this.setAllButtonsToDisabled(classes, id);\r\n\r\n if (id === this.selectedOptionId)\r\n classes += this.setSelectedButton(classes);\r\n\r\n if ((this.isOptionFocused && id !== this.selectedOption && this.selectedOption) || (!this.selectedOption && this.focusedIdOption === id && this.isOptionFocused))\r\n classes += `default-focused-radio `;\r\n\r\n return classes.trim();\r\n }\r\n\r\n private setAllButtonsToDisabled(classes: string, id: string): string {\r\n classes += `${this.type}-border `;\r\n return this.focusedIdOption === id ? classes += `${this.type}-focused-radio` : classes;\r\n }\r\n\r\n private setSelectedButton(classes: string): string {\r\n classes += this.type ? `${this.type}-border ` : 'checked-border ';\r\n\r\n if (this.isSelectedOptionFocused)\r\n classes += this.type ? `${this.type}-focused-radio ` : 'default-focused-radio ';\r\n\r\n return classes;\r\n }\r\n\r\n getRadioButtonInnerCircleClasses(id: string) {\r\n let classes: string = ``;\r\n\r\n if (this.type === this.environmentConfig?.radioButtonTypes?.disabled && !this.selectedOption)\r\n return `${this.type}-background ${this.type}-inner-circle`;\r\n\r\n if (id === this.selectedOptionId)\r\n classes += this.type ? `${this.type}-background ` : 'checked-background ';\r\n\r\n classes += this.type === this.environmentConfig?.radioButtonTypes?.disabled || this.type === this.environmentConfig?.radioButtonTypes?.completed ? `${this.type}-inner-circle ` : 'default-inner-circle ';\r\n\r\n return classes.trim();\r\n }\r\n\r\n _isRadioButtonFocused(id: string, value: boolean) {\r\n this.focusedIdOption = id;\r\n\r\n if (id === this.selectedOption)\r\n this.isSelectedOptionFocused = value;\r\n else\r\n this.isOptionFocused = value;\r\n }\r\n\r\n onChange: (value: any) => void = () => { }\r\n\r\n onTouched: () => void = () => { }\r\n\r\n writeValue(value: { type: any, id: string, isBlocked: boolean }): void {\r\n if (value === null || value == undefined) return;\r\n\r\n if(typeof value === 'string' || typeof value === 'number'){\r\n this.selectedOptionId = value;\r\n return\r\n }\r\n\r\n this.selectedOptionId = value.id;\r\n this.type = value.type;\r\n this.isBlocked = value.isBlocked || this.isBlocked;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n}","<div class=\"options-container\" [ngClass]=\"{'direction-column':isVertical}\">\r\n <label class=\"label\" *ngFor=\"let option of options ;let i = index\">\r\n <div class=\"option\" [attr.includes-additional-option-text]=\" additionalOptionsText[i] ? 'true' : 'false'\"\r\n [attr.type]=\"selectedOptionId===option.id ? type+'-selected': secondarySelectedOption?.id===option.id ? 'checked' : ''\">\r\n <div class=\"radio-container\" [ngClass]=\"getRadioButtonClasses(option.id)\" [tabindex]=\"'radio-' + i\"\r\n id=\"radio-{{option.id}}\" (click)=\"_onSelect(option)\" (blur)=\"_isRadioButtonFocused(option.id,false)\">\r\n <div class=\"inner-circle\" [ngClass]=\"getRadioButtonInnerCircleClasses(option.id)\">\r\n </div>\r\n </div>\r\n\r\n <span class=\"option-name\" [attr.type]=\"type\" [ngClass]=\"{'cursor-pointer':type===undefined}\"\r\n (click)=\"_onSelect(option)\">\r\n {{option?.name }}\r\n </span>\r\n </div>\r\n\r\n <span *ngIf=\"additionalOptionsText[i] && showAdditionalOptionsText\" class=\"additional-option-text\">\r\n {{ additionalOptionsText[i] }}\r\n </span>\r\n </label>\r\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Answer, Question, QuizData } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { UserAnswer } from 'herum-shared/herum-types';\r\nimport { IdentifiedEntity } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'quiz-one-answer-question',\r\n templateUrl: './quiz-one-answer-question.component.html',\r\n styleUrls: ['./quiz-one-answer-question.component.scss', '../quiz-pages.scss']\r\n})\r\nexport class QuizOneAnswerQuestionComponent implements OnInit, OnChanges {\r\n\r\n @Input() instructionTitle: string;\r\n @Input() question!: Question;\r\n @Input() userAnswers!: UserAnswer[];\r\n @Input() quizData: QuizData;\r\n @Input() areAnswersRevealed: boolean;\r\n @Input() areAnswersBlocked: boolean;\r\n @Input() isCheckingMode: boolean;\r\n\r\n @Output() onAnswersChange = new EventEmitter<UserAnswer[]>();\r\n\r\n convertedOptions!: { id: string; name: string; }[];\r\n selectedAnswer: FormControl = new FormControl({ type: '', id: '' }, Validators.required);\r\n destroySubject$ = new Subject<null>();\r\n answerNotes: string[] = [];\r\n correctAnswer: IdentifiedEntity;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['question']?.currentValue) {\r\n this.answerNotes = this.getAnswerNotes(this.question);\r\n this.convertedOptions = this.convertToOptions();\r\n this.changeDetectorRef.detectChanges();\r\n\r\n const chosenAnswer = this.userAnswers.find(userAnswer => userAnswer.isChosen);\r\n\r\n if (chosenAnswer && !this.quizData.isSubmitted)\r\n this.selectedAnswer.setValue({ id: chosenAnswer.id, type: this.environmentConfig?.radioButtonTypes?.checked }, { emitEvent: false });\r\n\r\n if (this.quizData.isSubmitted || this.areAnswersRevealed || this.isCheckingMode) {\r\n const userAnswers = this.quizData.userAnswers.find((userAnswer) => userAnswer.id === this.question.id);\r\n const chosenAnswerId = userAnswers.userAnswers.find((answer) => answer.isChosen)?.id;\r\n const type = this.isCheckedAnswerCorrect(chosenAnswerId, this.quizData) ? this.environmentConfig?.radioButtonTypes?.checked : this.environmentConfig?.radioButtonTypes?.error;\r\n\r\n if (type === this.environmentConfig?.radioButtonTypes?.error && (this.areAnswersRevealed || this.isCheckingMode)) {\r\n const correctAnswer = this.question.answers.find(answer => answer.isCorrect);\r\n if (correctAnswer)\r\n this.correctAnswer = { id: correctAnswer.id, name: correctAnswer.content };\r\n }\r\n\r\n this.selectedAnswer.setValue({ id: chosenAnswerId, type, isBlocked: true }, { emitEvent: false });\r\n }\r\n }\r\n }\r\n\r\n private getAnswerNotes(question: Question) {\r\n return question.answers.map(answer => {\r\n if (answer.note)\r\n return answer.note;\r\n })\r\n }\r\n\r\n private convertToOptions() {\r\n return this.question.answers.map(answer => {\r\n return { id: answer.id, name: answer.content }\r\n });\r\n }\r\n\r\n private isCheckedAnswerCorrect(answerId: string, quizData: QuizData) {\r\n return quizData.questions.find((question: Question) => question.answers?.find((answer: Answer) => answer.id === answerId)?.isCorrect);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.selectedAnswer.valueChanges.pipe(takeUntil(this.destroySubject$))\r\n .subscribe(result => {\r\n if (result)\r\n this.onAnswersChange.emit([{\r\n id: result.id,\r\n index: this.question.answers.findIndex(answer => answer.id == result.id),\r\n isChosen: true\r\n }]);\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n} ","<div *ngIf=\"instructionTitle\" class=\"instruction-title\">{{ instructionTitle }}</div>\r\n\r\n<herum-radio-button [options]=\"convertedOptions\" [secondarySelectedOption]=\"correctAnswer\"\r\n [showAdditionalOptionsText]=\"areAnswersRevealed || isCheckingMode\" [isBlocked]=\"areAnswersBlocked\"\r\n [isVertical]=\"true\" [formControl]=\"selectedAnswer\"\r\n [ngClass]=\"{'revealed-answers':areAnswersRevealed || isCheckingMode}\" [additionalOptionsText]=\"answerNotes\">\r\n</herum-radio-button>","import { Component, Input } from '@angular/core';\r\nimport { QuizData } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'quiz-submission',\r\n templateUrl: './quiz-submission.component.html',\r\n styleUrls: ['./quiz-submission.component.scss', '../quiz-pages.scss']\r\n})\r\nexport class QuizSubmissionComponent {\r\n\r\n @Input() quizData!: QuizData;\r\n @Input() quizValidation: boolean;\r\n\r\n get isAllQuestionsAnswered() {\r\n return this.quizData.questions.length == this.quizData.userAnswers?.length;\r\n }\r\n}","<div class=\"quiz-container\">\r\n <p class=\"quiz-title\">הנך עומד להגיש את המבחן</p>\r\n <br>\r\n <p>שים לב,</p>\r\n <p>הינך עומד להגיש את המבחן, לאחר ההגשה לא יהיה באפשרותך לערוך את התשובות שהגשת.</p>\r\n <p> האם ברצונך להגיש את המבחן?</p>\r\n <br>\r\n <p class=\"error-message\" *ngIf=\"!quizValidation\">\r\n לא ניתן להגיש מבחן זה ללא מענה על כל השאלות\r\n </p> \r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { QuizData, Resource } from 'herum-shared/herum-types';\r\n\r\n@Pipe({\r\n name: 'displayedSubmissionsCounter',\r\n standalone: false\r\n})\r\nexport class DisplayedSubmissionsCounterPipe implements PipeTransform {\r\n\r\n transform(resource: Resource, quizData: QuizData, areAnswersBlocked?: boolean): number {\r\n let submissionsCounter = quizData.submissionsCounter;\r\n\r\n if (!resource.quiz.maxSubmissions)\r\n return ++submissionsCounter;\r\n\r\n if (quizData.isSubmitted || areAnswersBlocked)\r\n return submissionsCounter || ++submissionsCounter;\r\n\r\n return submissionsCounter < resource.quiz.maxSubmissions ? ++submissionsCounter : submissionsCounter;\r\n }\r\n}","import { Component, Input } from '@angular/core';\r\nimport { defaultGrade } from 'herum-shared/constants';\r\nimport { QuizData, Resource } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'quiz-intro',\r\n templateUrl: './quiz-intro.component.html',\r\n styleUrls: ['./quiz-intro.component.scss', '../quiz-pages.scss']\r\n})\r\nexport class QuizIntroComponent {\r\n\r\n @Input() quizData!: QuizData;\r\n @Input() showSubmissionsCounter = true;\r\n @Input() allQuestionsRequired = true;\r\n @Input() resource: Resource;\r\n @Input() areAnswersBlocked: boolean;\r\n\r\n @Input() gradeTextPrefix = 'הציון הטוב ביותר שלך במבחן זה הוא:';\r\n\r\n get defaultGrade() {\r\n return defaultGrade;\r\n }\r\n}","<div *ngIf=\"quizData\" class=\"quiz-container\">\r\n <p>במבחן זה <b>{{ quizData.questions?.length }}</b> שאלות</p>\r\n\r\n <p *ngIf=\"quizData.minGrade > 0 && !quizData.isBinary\"><b>ציון מינימלי הנדרש למעבר: </b>{{ quizData.minGrade }}</p>\r\n\r\n <p *ngIf=\"quizData.grade && quizData.grade !== defaultGrade\">{{ gradeTextPrefix }} {{ quizData.grade }}</p>\r\n\r\n <p *ngIf=\"showSubmissionsCounter\">זהו <b>נסיון המענה ה\r\n - {{ resource | displayedSubmissionsCounter:quizData:areAnswersBlocked }}</b>\r\n שלך על מבחן.\r\n </p>\r\n\r\n <p *ngIf=\"allQuestionsRequired\">עליך לענות על כל השאלות</p>\r\n\r\n <p class=\"congrats-title\">בהצלחה!</p>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { QuizData } from 'herum-shared/herum-types';\r\nimport { ResourceSubscription } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'quiz-grade-sheet',\r\n templateUrl: './quiz-grade-sheet.component.html',\r\n styleUrls: ['./quiz-grade-sheet.component.scss', '../quiz-pages.scss']\r\n})\r\nexport class QuizGradeSheetComponent {\r\n\r\n @Input() resourceSubscription: ResourceSubscription;\r\n @Input() quizData: QuizData;\r\n\r\n get isUserPassTheQuiz() {\r\n if (!this.quizData.grade) return false;\r\n return this.quizData.grade > this.quizData.minGrade;;\r\n }\r\n\r\n get questionCount() {\r\n return this.quizData.questions.length;\r\n }\r\n\r\n get quizName() {\r\n return this.resourceSubscription.resourcePreview.title;\r\n }\r\n}\r\n","<div class=\"quiz-grade-sheet-container\">\r\n <div class=\"col-2\">\r\n <p class=\"quiz-title\">{{ quizName }}</p>\r\n <br>\r\n <div class=\"grid-container\">\r\n <div class=\"left-column\">כמות שאלות</div>\r\n <div class=\"right-column\">{{ questionCount }}</div>\r\n <div class=\"left-column\">ציון</div>\r\n <div class=\"right-column\">{{quizData.grade}}</div>\r\n </div>\r\n </div>\r\n <div class=\"col-10\">\r\n <div class=\"grade-image-container\">\r\n <ng-container *ngIf=\"isUserPassTheQuiz\">\r\n <img src=\"/assets/quiz/happyOwl.svg\">\r\n <p>כל הכבוד! סיימת את המבחן בהצלחה</p>\r\n </ng-container>\r\n <ng-container *ngIf=\"!isUserPassTheQuiz\">\r\n <img src=\"/assets/quiz/sadOwl.svg\">\r\n <p>לא עברת את המבחן בנסיון הזה</p>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, Output, EventEmitter, forwardRef, Inject, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { HerumTableParams } from 'herum-shared/herum-types';\r\nimport { HERUM_SHARED_CONFIG_TOKEN, EnvironmentConfig } from 'herum-shared/environment';\r\n\r\nconst CUSTOM_CHECKBOX_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumCheckboxComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-checkbox',\r\n templateUrl: './herum-checkbox.component.html',\r\n styleUrls: ['./herum-checkbox.component.scss'],\r\n providers: [CUSTOM_CHECKBOX_VALUE_ACCESSOR]\r\n})\r\nexport class HerumCheckboxComponent implements ControlValueAccessor, OnInit {\r\n\r\n @Input() type: 'checked' | 'indeterminate' | 'error' | 'disabled' | 'unchecked';\r\n @Input() isChecked: boolean = false;\r\n @Input() isBlocked: boolean = false;\r\n @Output() checkedEmitter = new EventEmitter<boolean>();\r\n\r\n indeterminate: string;\r\n checked: string;\r\n error: string;\r\n checkboxClasses: string = '';\r\n params: HerumTableParams;\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n ngOnInit(): void {\r\n this.indeterminate = this.environmentConfig.checkboxTypes.indeterminate;\r\n this.checked = this.environmentConfig.checkboxTypes.checked;\r\n this.error = this.environmentConfig.checkboxTypes.error;\r\n }\r\n\r\n _onClick() {\r\n if (this.isBlocked)\r\n return;\r\n\r\n if (this.type === this.environmentConfig.checkboxTypes.indeterminate || this.type === this.environmentConfig.checkboxTypes.checked) {\r\n this.type = undefined;\r\n this.isChecked = false;\r\n }\r\n else if (this.type === this.environmentConfig.checkboxTypes.unchecked)\r\n this.isChecked = false;\r\n else\r\n this.isChecked = !this.isChecked;\r\n\r\n if (this.params) {\r\n this.params.value = this.isChecked;\r\n this.params.context.componentParent.selectedRowByChildComponent(this.params);\r\n }\r\n\r\n this.checkedEmitter.emit(this.isChecked); // it has to be refactor - working with object\r\n this.onChange(this.isChecked);// it has to be refactor - working with object\r\n }\r\n\r\n getCheckboxClasses(): string {\r\n let classes: string = ``;\r\n\r\n if (this.type)\r\n classes += `${this.type} `;\r\n\r\n if (this.type !== this.environmentConfig.checkboxTypes.disabled)\r\n classes += 'full-opacity '\r\n\r\n if (this.isChecked && !this.type)\r\n classes += `checked `;\r\n\r\n return classes.trim();\r\n }\r\n\r\n onChange: (value: any) => void = () => { }\r\n\r\n onTouched: () => void = () => { }\r\n\r\n writeValue(value: { type: any, isChecked: boolean } | boolean): void {\r\n if (value === null || value === undefined)\r\n return;\r\n\r\n if (typeof value === 'boolean') {\r\n this.isChecked = value;\r\n return;\r\n }\r\n\r\n this.type = value.type;\r\n this.isChecked = value.isChecked;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n}","<label class=\"custom-checkbox-container\" [ngClass]=\"isBlocked ? 'not-clickable' : 'cursor-pointer'\"\r\n (click)=\"_onClick()\">\r\n <span class=\"unchecked\" [ngClass]=\"getCheckboxClasses()\">\r\n <img *ngIf=\"(isChecked && !type) || type===checked\" class=\"custom-checkmark-image\"\r\n src=\"assets/shared/icons/V.svg\" alt=\"Custom Checkmark\">\r\n\r\n <img class=\"custom-checkmark-image d-block\" *ngIf=\"type===error\" src=\"assets/shared/icons/X.svg\"\r\n alt=\"Custom Checkmark\">\r\n\r\n <div *ngIf=\"type===indeterminate\" class=\"indeterminate-shape\"></div>\r\n </span>\r\n</label>","import { Component, EventEmitter, Inject, Input, Output, QueryList, SimpleChanges, ViewChildren } from '@angular/core';\r\nimport { FormControl, FormGroup, FormBuilder } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { HerumCheckboxComponent } from '../../../atoms/herum-checkbox/herum-checkbox.component';\r\nimport { Question, Answer, QuizData } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { UserAnswer } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'quiz-multi-answer-question',\r\n templateUrl: './quiz-multi-answer-question.component.html',\r\n styleUrls: ['./quiz-multi-answer-question.component.scss', '../quiz-pages.scss']\r\n})\r\nexport class QuizMultiAnswerQuestionComponent {\r\n\r\n @Input() question!: Question;\r\n @Input() quizData: QuizData;\r\n @Input() userAnswers: UserAnswer[] = [];\r\n\r\n @Input() isCheckingMode: boolean;\r\n @Input() areAnswersRevealed: boolean;\r\n @Input() areAnswersBlocked: boolean;\r\n @Input() correctAnswerCount: number;\r\n\r\n @Output() onAnswersChange = new EventEmitter<UserAnswer[]>();\r\n @Output() onValidationChange = new EventEmitter<boolean>();\r\n\r\n @ViewChildren(HerumCheckboxComponent) checkboxes: QueryList<HerumCheckboxComponent>;\r\n\r\n isValid: boolean = false;\r\n selectedAnswers: FormControl[] = [];\r\n answersForm: FormGroup;\r\n destroySubject$ = new Subject<null>();\r\n answerTypeAttributes: string[];\r\n\r\n constructor(private fb: FormBuilder, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n this.answersForm = this.fb.group({});\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['question'] && this.question) {\r\n if (!Object.keys(this.answersForm.controls).length) {\r\n this.question.answers.forEach((answer, index) => {\r\n const controlName = `${this.controlNamePrefix}${index}`;\r\n\r\n this.answersForm.addControl(controlName, new FormControl(this.getFormControlValue(index)));\r\n this.answersForm.get(controlName).valueChanges\r\n .pipe(takeUntil(this.destroySubject$))\r\n .subscribe((isChosen: boolean) => this._onAnswersChange(this.question.answers[index], isChosen))\r\n });\r\n }\r\n else {\r\n this.question.answers.forEach((answer, index) => {\r\n const controlName = `${this.controlNamePrefix}${index}`;\r\n this.answersForm.controls[controlName].setValue(this.getFormControlValue(index), { emitEvent: false });\r\n })\r\n }\r\n\r\n if (this.areAnswersRevealed || this.isCheckingMode)\r\n this.setAnswerTypeAttributes();\r\n\r\n if (this.correctAnswerCount === null || this.correctAnswerCount === undefined)\r\n this.correctAnswerCount = this.question.answers.filter(answer => answer.isCorrect).length;\r\n }\r\n }\r\n\r\n private setAnswerTypeAttributes() {\r\n this.answerTypeAttributes = this.question.answers.map((answer, index) => {\r\n const answerForm = this.answersForm.value[`${this.controlNamePrefix}` + index];\r\n\r\n return (!answerForm.type && this.iAnswerCorrect(answer.id, this.quizData)) ?\r\n 'correct-not-selected' :\r\n answerForm.type + '-' + (answerForm.isChecked ? 'selected' : '')\r\n });\r\n }\r\n\r\n _onAnswerClicked(index: number): void {\r\n const currentCheckbox = this.checkboxes.toArray()[index];\r\n currentCheckbox._onClick();\r\n }\r\n\r\n _isAnswerChecked(answerId: string) {\r\n return this.userAnswers.find(userAnswer => userAnswer.id == answerId)?.isChosen;\r\n }\r\n\r\n getTypeCheckbox(answerId: string) {\r\n if (!this._isAnswerChecked(answerId))\r\n return undefined;\r\n\r\n if (this._isAnswerChecked(answerId) && !(this.quizData.isSubmitted || this.areAnswersRevealed || this.isCheckingMode))\r\n return this.environmentConfig?.checkboxTypes?.checked;\r\n\r\n if (this.quizData.isSubmitted || this.areAnswersRevealed || this.isCheckingMode)\r\n return this.iAnswerCorrect(answerId, this.quizData) ? this.environmentConfig?.checkboxTypes?.checked : this.environmentConfig?.checkboxTypes?.error;\r\n }\r\n\r\n private iAnswerCorrect(answerId: string, quizData: QuizData) {\r\n return quizData.questions.find((question: Question) => question.answers?.find((answer: Answer) => answer.id === answerId)?.isCorrect);\r\n }\r\n\r\n _onAnswersChange(answer: Answer, isChosen: boolean) {\r\n let userAnswer = this.userAnswers.find(userAnswer => userAnswer.id == answer.id);\r\n\r\n userAnswer ? (userAnswer.isChosen = isChosen) :\r\n this.userAnswers.push({\r\n id: answer.id,\r\n index: answer.index,\r\n isChosen\r\n });\r\n\r\n this.isValid = this.userAnswers.length == this.correctAnswerCount;\r\n\r\n this.onAnswersChange.emit(this.userAnswers);\r\n this.onValidationChange.emit(this.isValid);\r\n }\r\n\r\n private getFormControlValue(index: number) {\r\n return {\r\n type: this.getTypeCheckbox(this.question.answers[index].id),\r\n isChecked: this._isAnswerChecked(this.question.answers[index].id)\r\n };\r\n }\r\n\r\n get controlNamePrefix() {\r\n return 'controlName';\r\n };\r\n\r\n get isBlocked() {\r\n return this.quizData?.isSubmitted || this.areAnswersBlocked || this.areAnswersRevealed\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n}","<div class=\"main-container\">\r\n <p class=\"correct-answer-count\">יש לסמן {{ correctAnswerCount }} תשובות</p>\r\n\r\n <form *ngIf=\"question.answers\" [formGroup]=\"answersForm\" class=\"answers-container\">\r\n <div class=\"answer-item\" *ngFor=\"let answer of question.answers;let i=index\">\r\n <div class=\"answer-container\" [ngClass]=\"{'revealed-answers':(areAnswersRevealed || isCheckingMode)}\"\r\n [attr.type]=\"(areAnswersRevealed || isCheckingMode) ? answerTypeAttributes[i] : ''\"\r\n [attr.includes-additional-option-text]=\"(additionalOptionsText && additionalOptionsText[i]) ? 'true' : 'false'\">\r\n <herum-checkbox [isBlocked]=\"isBlocked\" [formControlName]=\"controlNamePrefix + i\"\r\n [id]=\"controlNamePrefix + i\">\r\n </herum-checkbox>\r\n\r\n <p class=\"answer-text cursor-pointer\" [ngClass]=\"{'cursor-pointer':!isBlocked}\"\r\n (click)=\"_onAnswerClicked(i)\">{{ answer.content }}</p>\r\n </div>\r\n\r\n <span *ngIf=\"answer.note && (areAnswersRevealed || isCheckingMode)\" class=\"answer-note\">\r\n {{ answer.note }}\r\n </span>\r\n </div>\r\n </form>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'quiz-loader',\r\n templateUrl: './quiz-loader.component.html',\r\n styleUrls: ['./quiz-loader.component.scss']\r\n})\r\nexport class QuizLoaderComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"skeleton-conatiner\">\r\n <div class=\"d-flex\">\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n <div class=\"skeleton skeleton-text skeleton-question-index-header\"></div>\r\n </div>\r\n \r\n <div>\r\n <div class=\"skeleton skeleton-text skeleton-question\"></div>\r\n <br>\r\n <div class=\"skeleton skeleton-text skeleton-sub-question\"></div>\r\n </div>\r\n \r\n <div class=\"d-flex\">\r\n <div class=\"skeleton skeleton-text skeleton-checkbox\"></div><div class=\"skeleton skeleton-text skeleton-answer\"></div>\r\n </div>\r\n <div class=\"d-flex\">\r\n <div class=\"skeleton skeleton-text skeleton-checkbox\"></div><div class=\"skeleton skeleton-text skeleton-answer\"></div>\r\n </div>\r\n <div class=\"d-flex\">\r\n <div class=\"skeleton skeleton-text skeleton-checkbox\"></div><div class=\"skeleton skeleton-text skeleton-answer\"></div>\r\n </div>\r\n <div class=\"d-flex\">\r\n <div class=\"skeleton skeleton-text skeleton-checkbox\"></div><div class=\"skeleton skeleton-text skeleton-answer\"></div>\r\n </div>\r\n\r\n <div class=\"action-button-container w-100\">\r\n <div class=\"skeleton-button skeleton skeleton-text\"></div>\r\n <div class=\"skeleton-button skeleton skeleton-text\"></div>\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { Resource, Question, QuizData } from 'herum-shared/herum-types';\r\nimport { ResourceSubscription, UserAnswer } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-quiz',\r\n templateUrl: './herum-quiz.component.html',\r\n styleUrls: ['./herum-quiz.component.scss'],\r\n})\r\nexport class HerumQuizComponent implements OnChanges {\r\n\r\n @Input() resourceSubscription: ResourceSubscription;\r\n @Input() isLoading: boolean = false;\r\n @Input() isResourceInWideMode: boolean = false;\r\n @Input() resource: Resource;\r\n @Input() quizData: QuizData = {\r\n minGrade: 66,\r\n submissionsCounter: 2,\r\n isSubmitted: false,\r\n currentQuestion: 0,\r\n resourceName: 'מבחן לדוגמא',\r\n questions: [\r\n {\r\n id: '1',\r\n isSkipped: false,\r\n text: 'מי חיפף בעיצוב של המבחנים?',\r\n index: 0,\r\n answers: [\r\n {\r\n id: '1',\r\n content: 'אביקס',\r\n isCorrect: true,\r\n index: 1\r\n }\r\n ]\r\n }\r\n ]\r\n };\r\n @Output() onGradeUpdate = new EventEmitter<any>();\r\n\r\n isCurrentQuestionValid: boolean = true;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // if (changes['resource']?.currentValue && this.resource?.quiz)\r\n // this.quizData = this.resource?.quiz;\r\n\r\n this.mergeQuizUserDataIntoQuizData();\r\n this.quizData.currentQuestion = this.quizData.isSubmitted ? this.quizData.questions.length + 2 : this.quizData.currentQuestion ? this.quizData.currentQuestion : 0;\r\n }\r\n\r\n get currentQuestionIndex() {\r\n return this.quizData.currentQuestion - 1;\r\n\r\n }\r\n get currentQuestionValidation() {\r\n if (this.quizData.isSubmitted || this.currentQuestionIndex < 0)\r\n return true;\r\n\r\n if (this.currentQuestionIndex >= this.quizData.questions.length)\r\n return this.isValidQuiz\r\n\r\n return this._getUserAnswers(this.quizData.questions[this.currentQuestionIndex]?.id).length == this.getCorrectAnswersCount(\r\n this.quizData.questions?.find((userAnswer) => userAnswer.id == this.quizData.questions[this.currentQuestionIndex]?.id))\r\n }\r\n\r\n get nextButtonText() {\r\n switch (this.quizData.currentQuestion) {\r\n case 0:\r\n return 'התחל מבחן';\r\n\r\n case this.quizData.questions.length:\r\n return (this.quizData.isSubmitted ? 'חזרה למסך סיכום' : 'סיים מבחן');\r\n\r\n case this.quizData.questions.length + 1:\r\n return (this.quizData.isSubmitted ? 'חזרה למסך סיכום' : 'הגשת מבחן');\r\n\r\n case this.quizData.questions.length + 2:\r\n return 'נסיון חוזר';\r\n\r\n default:\r\n return 'לשאלה הבאה';\r\n }\r\n }\r\n\r\n _previousQuestion() {\r\n this.quizData.currentQuestion !== this.quizData.questions.length + 2 ? this.quizData.currentQuestion-- : this.quizData.currentQuestion = 1;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n get previousButtonText() {\r\n return this.quizData.currentQuestion !== this.quizData.questions.length + 2 ? 'לשאלה הקודמת' : 'חזרה לשאלה הראשונה';\r\n }\r\n\r\n get isValidQuiz() {\r\n if (!this.quizData?.userAnswers) return false;\r\n return this.quizData.questions.length == this.quizData.userAnswers\r\n .filter(userQuestionAnswer => userQuestionAnswer.userAnswers\r\n .some(userAnswer => userAnswer.isChosen))!.length;\r\n }\r\n\r\n get isLastQuestion() {\r\n return this.quizData.currentQuestion == this.quizData.questions.length + 1;\r\n }\r\n\r\n getCorrectAnswersCount(question: Question) {\r\n return question?.answers.filter((answer) => answer.isCorrect).length;\r\n }\r\n\r\n _nextQuestion(isSkipped: boolean = false) {\r\n this.isCurrentQuestionValid = false;\r\n\r\n if (this.quizData.questions[this.quizData.currentQuestion - 1])\r\n this.quizData.questions[this.quizData.currentQuestion - 1].isSkipped =\r\n isSkipped;\r\n\r\n if (this.quizData.currentQuestion == this.quizData.questions.length + 2) {\r\n this.startNewQuiz();\r\n this.isLoading = true;\r\n }\r\n\r\n if (this.quizData.isSubmitted && (this.quizData.currentQuestion == this.quizData.questions.length ||\r\n this.quizData.currentQuestion == this.quizData.questions.length + 1))\r\n this.quizData.currentQuestion = this.quizData.questions.length + 1\r\n\r\n if (!this.quizData.isSubmitted && this.quizData.currentQuestion == this.quizData.questions.length + 1) {\r\n this.isLoading = true;\r\n this.quizData.isSubmitted = true;\r\n this.updateQuizUserAnswer(this.quizData.isSubmitted);\r\n }\r\n\r\n this.quizData.currentQuestion++;\r\n\r\n this.quizData = { ...this.quizData };\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n _getUserAnswers(questionId: string) {\r\n let res = this.quizData.userAnswers?.find((userAnswer) => userAnswer.id == questionId);\r\n return res ? res.userAnswers : [];\r\n }\r\n\r\n _selectQuestion(questionIndex: number) {\r\n this.quizData.currentQuestion = questionIndex + 1;\r\n }\r\n\r\n _onAnswersChange(userAnswers: UserAnswer[], questionId: string) {\r\n if (!this.quizData.userAnswers) {\r\n this.quizData.userAnswers = [];\r\n }\r\n\r\n let question = this.quizData.userAnswers?.find(\r\n (userAnswer) => userAnswer.id == questionId\r\n );\r\n\r\n if (question) {\r\n question.userAnswers = userAnswers?.filter(userAnswer => userAnswer.isChosen);\r\n\r\n }\r\n else {\r\n this.quizData.userAnswers.push({\r\n id: questionId,\r\n userAnswers,\r\n index: 0,\r\n areAnswersCorrect: false\r\n });\r\n }\r\n }\r\n\r\n private updateQuizUserAnswer(isSubmitted: boolean) {\r\n let questionIdsToAnswersIds: { [key: string]: string[] } = {}\r\n this.quizData.userAnswers.forEach(userQuestionAnswer => {\r\n questionIdsToAnswersIds[userQuestionAnswer.id] = userQuestionAnswer.userAnswers.map(userAnswer => userAnswer.id)\r\n });\r\n\r\n this.onGradeUpdate.emit({\r\n resourceId: this.resourceSubscription.resourcePreview.id,\r\n userQuizUpdateData: {\r\n questionIdToAnswersIds: questionIdsToAnswersIds,\r\n isSubmitted\r\n }\r\n });\r\n }\r\n\r\n private startNewQuiz() {\r\n let questionIdsToAnswersIds: { [key: string]: string[] } = {}\r\n this.quizData.isSubmitted = false;\r\n this.quizData.currentQuestion = 0;\r\n\r\n this.onGradeUpdate.emit({\r\n resourceId: this.resourceSubscription.resourcePreview.id,\r\n userQuizUpdateData: {\r\n questionIdToAnswersIds: questionIdsToAnswersIds,\r\n isSubmitted: this.quizData.isSubmitted\r\n }\r\n });\r\n }\r\n\r\n private mergeQuizUserDataIntoQuizData() {\r\n if (!this.resourceSubscription?.quizData) return;\r\n this.quizData.submissionsCounter = this.resourceSubscription.quizData.submissionsCounter;\r\n this.quizData.minGrade = this.resourceSubscription.resourcePreview.gradingMethodData.minimumGradeToPass;\r\n this.quizData.userAnswers = this.resourceSubscription.quizData.userQuestionsData;\r\n this.quizData.isSubmitted = this.resourceSubscription.quizData.isSubmitted;\r\n this.quizData.grade = this.resourceSubscription.grade;\r\n this.quizData.questions = this.quizData.questions\r\n .filter(question => this.resourceSubscription.quizData.userQuestionsData.some(userQuestionData => userQuestionData.id === question.id))\r\n .map((question, index) => { return { ...question, index: index }; })\r\n }\r\n}","<div class=\"quiz-container herum-card\">\r\n <ng-container *ngIf=\"!isLoading\">\r\n\r\n <quiz-intro class=\"quiz-padding\" [quizData]=\"quizData\" [resource]=\"resource\"\r\n *ngIf=\"quizData.currentQuestion == 0\">\r\n </quiz-intro>\r\n\r\n <div class=\"herum-card w-100\" *ngIf=\"quizData.currentQuestion > 0\">\r\n <quiz-header [quizData]=\"quizData\" (onSelectQuestion)=\"_selectQuestion($event)\"></quiz-header>\r\n </div>\r\n\r\n <div class=\"quiz-inner-content\" [ngClass]=\"{'justify-content-end':quizData.currentQuestion == 0}\">\r\n <div class=\"question-container quiz-padding\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length + 1\">\r\n <p class=\"question-text\">{{ quizData.questions[currentQuestionIndex]?.text }}</p>\r\n\r\n <ng-container *ngIf=\"quizData.questions[currentQuestionIndex].answers.length != 2\">\r\n <quiz-one-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) == 1\"\r\n [quizData]=\"quizData\" [question]=\"quizData.questions[currentQuestionIndex]\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-one-answer-question>\r\n\r\n <quiz-multi-answer-question\r\n *ngIf=\"getCorrectAnswersCount(quizData.questions[currentQuestionIndex]) > 1\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [quizData]=\"quizData\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-multi-answer-question>\r\n </ng-container>\r\n\r\n <quiz-two-answers-question *ngIf=\"quizData.questions[currentQuestionIndex].answers.length == 2\"\r\n [question]=\"quizData.questions[currentQuestionIndex]\" [isSubmitted]=\"quizData.isSubmitted\"\r\n [userAnswers]=\"_getUserAnswers(quizData.questions[currentQuestionIndex].id)\"\r\n (onAnswersChange)=\"_onAnswersChange($event, quizData.questions[currentQuestionIndex].id)\">\r\n </quiz-two-answers-question>\r\n </div>\r\n\r\n <quiz-submission class=\"quiz-padding\" *ngIf=\"quizData.currentQuestion == quizData.questions.length + 1\"\r\n [quizData]=\"quizData\" [quizValidation]=\"isValidQuiz\">\r\n </quiz-submission>\r\n\r\n <quiz-grade-sheet *ngIf=\"quizData.currentQuestion == quizData.questions.length + 2\" [quizData]=\"quizData\"\r\n [resourceSubscription]=\"resourceSubscription\">\r\n </quiz-grade-sheet>\r\n\r\n <div class=\"actions-buttons-container quiz-padding\">\r\n <div class=\"left-action-buttons\">\r\n <herum-button [type]=\"'secondary'\" (click)=\"_nextQuestion(true)\" id=\"skip\"\r\n *ngIf=\"quizData.currentQuestion > 0 && quizData.currentQuestion < quizData.questions.length && !this.quizData.isSubmitted \">\r\n דלג על השאלה\r\n </herum-button>\r\n\r\n <herum-button id=\"next\" [disabled]=\"!currentQuestionValidation\" [type]=\"'primary'\"\r\n (click)=\"_nextQuestion()\">\r\n {{ nextButtonText }}\r\n </herum-button>\r\n </div>\r\n\r\n <herum-button id=\"prev\" *ngIf=\"quizData.currentQuestion > 1 \" [type]=\"'ghost'\"\r\n (click)=\"_previousQuestion()\">\r\n {{ previousButtonText }}\r\n </herum-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <quiz-loader *ngIf=\"isLoading\"></quiz-loader>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-local-loader',\r\n templateUrl: './herum-local-loader.component.html',\r\n styleUrls: ['./herum-local-loader.component.scss']\r\n})\r\nexport class HerumLocalLoaderComponent {\r\n\r\n @Input() percentage: number = -1;\r\n}","<div class=\"loader loader-container\">\r\n <div>\r\n <ul>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n <li>\r\n <svg fill=\"currentColor\" viewBox=\"0 0 90 120\">\r\n <path\r\n d=\"M90,0 L90,120 L11,120 C4.92486775,120 0,115.075132 0,109 L0,11 C0,4.92486775 4.92486775,0 11,0 L90,0 Z M71.5,81 L18.5,81 C17.1192881,81 16,82.1192881 16,83.5 C16,84.8254834 17.0315359,85.9100387 18.3356243,85.9946823 L18.5,86 L71.5,86 C72.8807119,86 74,84.8807119 74,83.5 C74,82.1745166 72.9684641,81.0899613 71.6643757,81.0053177 L71.5,81 Z M71.5,57 L18.5,57 C17.1192881,57 16,58.1192881 16,59.5 C16,60.8254834 17.0315359,61.9100387 18.3356243,61.9946823 L18.5,62 L71.5,62 C72.8807119,62 74,60.8807119 74,59.5 C74,58.1192881 72.8807119,57 71.5,57 Z M71.5,33 L18.5,33 C17.1192881,33 16,34.1192881 16,35.5 C16,36.8254834 17.0315359,37.9100387 18.3356243,37.9946823 L18.5,38 L71.5,38 C72.8807119,38 74,36.8807119 74,35.5 C74,34.1192881 72.8807119,33 71.5,33 Z\">\r\n </path>\r\n </svg>\r\n </li>\r\n </ul>\r\n </div>\r\n <span>בדרך אליך...</span>\r\n <span *ngIf=\"percentage > -1\">{{percentage}}</span>\r\n</div>","import { AsyncValidatorFn, FormControl, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nexport class HerumFormControl extends FormControl {\r\n\r\n errorMessages: { [key: string]: string } = {};\r\n currentErrorMessage: string = '';\r\n destroySubject$: Subject<null> = new Subject<null>();\r\n\r\n /**\r\n @comment The component that creates this class should have destroySubject$ so you can listen to its ngOnDestroy life cycle hook so you can unsubscribe statusChangesSubscription \r\n */\r\n constructor(\r\n formState: any,\r\n validatorOrOpts: ValidatorFn | ValidatorFn[] | null,\r\n asyncValidator: AsyncValidatorFn | AsyncValidatorFn[] | null,\r\n errorMessages: { [key: string]: string },\r\n componentReference: any\r\n ) {\r\n super(formState, validatorOrOpts, asyncValidator);\r\n\r\n if (errorMessages)\r\n this.errorMessages = errorMessages;\r\n\r\n this.statusChanges.pipe(takeUntil(this.destroySubject$)).subscribe(() => this.setCurrentErrorMessage());\r\n\r\n componentReference.destroySubject$.pipe(takeUntil(this.destroySubject$)).subscribe(\r\n () => {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n );\r\n }\r\n\r\n private setCurrentErrorMessage(): void {\r\n this.currentErrorMessage = this.errors ? this.errorMessages[Object.keys(this.errors)[0]] : null;\r\n }\r\n}","import { Component, EventEmitter, Input, OnInit, Output, HostListener, ViewChild, ElementRef, Optional, Self, ChangeDetectorRef, HostBinding } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, FormControlName, NgControl, Validators } from '@angular/forms';\r\nimport { defaultPlaceholder, formStatuses, keyboardAsciiCodes, types, regexExpressions, svgsStrings } from 'herum-shared/constants';\r\nimport { HerumFormControl } from '../herum-form-control/herum-form-control';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\n\r\nconst emptyNumberInputValue: string = '0';\r\nconst numericTextType: string = 'numeric-text';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-input-field',\r\n templateUrl: './herum-input-field.component.html',\r\n styleUrls: [\r\n './herum-input-field.component.scss',\r\n '../../assets/shared/atoms/inputs/herum-inputs.component.scss'],\r\n host: { '[class.required-control]': 'isRequired' }\r\n})\r\nexport class HerumInputFieldComponent implements OnInit, ControlValueAccessor {\r\n\r\n @Input() type: 'number' | 'text' | 'search' | 'textBox' | 'search-blur' | 'numeric-text' | 'password' = 'text';\r\n @Input() placeholder: string = defaultPlaceholder;\r\n @Input() disabled: boolean = false;\r\n @Input() isBlocked: boolean = false;\r\n @Input() isValid: boolean = true;\r\n @Input() errorMsg: string = '';\r\n @Input() showErrorMsgGap: boolean = true;\r\n @Input() inputValue: string = '';\r\n @Input() isLoading: boolean = false;\r\n @Input() id: string = '';\r\n @Input() debounceTime: number = 0;\r\n @Input() minValue: number;\r\n @Input() maxValue: number;\r\n @Input() isBlurred: boolean = false;\r\n @Input() touched: boolean = false;\r\n @Input() ltrMode: boolean = false;\r\n @Input() preventMacroKeysPressEvent: number[] = [keyboardAsciiCodes.space, keyboardAsciiCodes.right, keyboardAsciiCodes.left];\r\n\r\n @Output() inputValueEmitter = new EventEmitter<string | number>();\r\n\r\n @ViewChild('inputElement') inputElement!: ElementRef<HTMLInputElement>;\r\n\r\n @HostListener('keypress', ['$event'])\r\n onKeyPress(event: KeyboardEvent) {\r\n const alt: string = (event.target as HTMLInputElement).alt;\r\n\r\n if ((alt === types.number || alt === numericTextType) && !(event.keyCode >= 48 && event.keyCode <= 57))\r\n event.preventDefault();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent) {\r\n const alt: string = (event.target as HTMLInputElement).alt;\r\n\r\n if (alt === types.number || alt === numericTextType) {\r\n let pastedText = '';\r\n\r\n if (event.clipboardData && event.clipboardData.getData)\r\n pastedText = event.clipboardData.getData('text/plain');\r\n else if (window['clipboardData'] && window['clipboardData']['getData'])\r\n pastedText = window['clipboardData']['getData']('Text');\r\n\r\n const numbersOnly = /^[0-9]*$/.test(pastedText);\r\n if (!numbersOnly)\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n formControlName: string = '';\r\n isPasswordVisible: boolean = false;\r\n\r\n inputSubject$ = new Subject<string>();\r\n destroySubject$ = new Subject<null>();\r\n\r\n constructor(@Optional() @Self() private ngControl: NgControl, private cdr: ChangeDetectorRef) {\r\n if (this.ngControl)\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initInputSubject$();\r\n this.setInputsByFormControl();\r\n }\r\n\r\n private initInputSubject$() {\r\n this.inputSubject$.pipe(\r\n takeUntil(this.destroySubject$),\r\n debounceTime(this.debounceTime),\r\n tap(value => {\r\n this.inputValue = value;\r\n const valueToEmit = this.type === types.number ? Number(value) : this.inputValue;\r\n\r\n this.onChange(valueToEmit);\r\n this.inputValueEmitter.emit(valueToEmit);\r\n })\r\n ).subscribe();\r\n }\r\n\r\n private setInputsByFormControl() {\r\n if (!this.ngControl)\r\n return;\r\n\r\n if (this.ngControl instanceof FormControlName)\r\n this.formControlName = this.ngControl.name?.toString() || '';\r\n\r\n this.ngControl.control.statusChanges.pipe(takeUntil(this.destroySubject$)).subscribe(status => {\r\n if (this.ngControl.control instanceof HerumFormControl)\r\n this.errorMsg = this.ngControl.control.currentErrorMessage;\r\n\r\n const controlStatus: string = this.ngControl.control.status;\r\n this.isValid = controlStatus === formStatuses.valid;\r\n this.isLoading = controlStatus === formStatuses.pending;\r\n });\r\n }\r\n\r\n clearInput() {\r\n const isTypeNumber: boolean = this.type === types.number;\r\n this.inputValue = isTypeNumber ? this.minValue !== undefined ? this.minValue.toString() : emptyNumberInputValue : '';\r\n const valueToEmit = isTypeNumber ? Number(this.inputValue) : this.inputValue;\r\n\r\n this.inputValueEmitter.emit(valueToEmit);\r\n this.onChange(valueToEmit);\r\n }\r\n\r\n _onInput(freeText: string) {\r\n this.touched = true;\r\n\r\n let value: string = freeText;\r\n\r\n if (this.type == types.number) {\r\n if (!freeText) {\r\n this.cdr.detectChanges();\r\n this.inputValue = value = emptyNumberInputValue;\r\n }\r\n\r\n if (!freeText.match(regexExpressions.digitsOnly))\r\n value = value.replace(/[^0-9]/g, '');\r\n\r\n this.errorMsg = this.getRangeErrorMessage(freeText);\r\n this.isValid = !this.errorMsg;\r\n\r\n if (this.ngControl)\r\n this.setNgControlRangeValidator();\r\n\r\n if (!this.isValid)\r\n return;\r\n }\r\n\r\n this.inputSubject$.next(value);\r\n }\r\n\r\n private setNgControlRangeValidator() {\r\n const inputNumberRangeValidatorName: string = 'inputNumberRangeValidator';\r\n\r\n if (!this.isValid) {\r\n this.ngControl.control.setErrors({ [inputNumberRangeValidatorName]: this.isValid });\r\n return;\r\n }\r\n\r\n if (this.ngControl.control.errors)\r\n delete this.ngControl.control.errors[inputNumberRangeValidatorName];\r\n }\r\n\r\n private getRangeErrorMessage(freeText: string) {\r\n const parsedValue = parseFloat(freeText);\r\n const hasMinValue = Number.isFinite(this.minValue);\r\n const hasMaxValue = Number.isFinite(this.maxValue);\r\n const insertValue: string = 'נא להזין ערך';\r\n\r\n if (hasMinValue && hasMaxValue && (parsedValue < this.minValue || parsedValue > this.maxValue))\r\n return (this.minValue === this.maxValue) ? `הערך שניתן להזין הוא${this.maxValue}` : `${insertValue} מ ${this.minValue} עד ${this.maxValue}`;\r\n else if (hasMinValue && !hasMaxValue && parsedValue <= this.minValue - 1)\r\n return `${insertValue} גדול מ${this.minValue - 1}`;\r\n else if (!hasMinValue && hasMaxValue && parsedValue >= this.maxValue + 1)\r\n return `${insertValue} קטן מ${this.maxValue + 1}`;\r\n else\r\n return '';\r\n }\r\n\r\n onChange: (value: any) => void = () => { };\r\n\r\n onTouched: () => void = () => { };\r\n\r\n writeValue(value: string): void {\r\n if (this.inputValue !== value)\r\n this.inputValue = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n _setBlurred() {\r\n this.isBlurred = true;\r\n }\r\n\r\n _onTogglePasswordVisibility(event?: MouseEvent): void {\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n\r\n this.isPasswordVisible = !this.isPasswordVisible;\r\n }\r\n\r\n get searchImageSvg() {\r\n return svgsStrings.search;\r\n }\r\n\r\n get whiteSearchImageSvg() {\r\n return svgsStrings.search;\r\n }\r\n\r\n get xImageSvg() {\r\n return svgsStrings.X;\r\n }\r\n\r\n get inputHtmlType(): string {\r\n if (this.type === 'password')\r\n return this.isPasswordVisible ? 'text' : 'password';\r\n\r\n if (this.type === 'number') return 'number';\r\n\r\n return 'text';\r\n }\r\n\r\n get passwordEyeSource(): string {\r\n return `/assets/loginPage/icons/eye-${this.isPasswordVisible ? 'open' : 'closed'}.svg`;\r\n }\r\n\r\n get isRequired(): boolean {\r\n const control = this.ngControl?.control;\r\n if (!control) return false;\r\n\r\n const anyControl = control as any;\r\n if (typeof anyControl.hasValidator === 'function'){\r\n return anyControl.hasValidator(Validators.required);\r\n }\r\n\r\n if (!control.validator) return false;\r\n const result = control.validator({} as AbstractControl);\r\n return !!result['required'];\r\n }\r\n\r\n get shouldShowClearIcon(): boolean {\r\n return !!this.inputValue && !this.disabled && !this.isBlocked && this.type !== 'password';\r\n }\r\n\r\n get shouldShowPasswordToggle(): boolean {\r\n return this.type === 'password' && !this.disabled && !this.isBlocked;\r\n }\r\n\r\n get shouldShowErrorMsg(): boolean {\r\n return (!this.isValid && this.touched && this.isBlurred && this.showErrorMsgGap && !!this.errorMsg);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.ngControl) {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n }\r\n}","<div class=\"input-container\" [class]=\"type\">\r\n <input [type]=\"inputHtmlType\" dir=\"rtl\" class=\"w-100 input-field\"\r\n [ngClass]=\"{'error-input':!isValid && !isLoading && touched && isBlurred , 'transparent-text': isLoading, 'ltr':ltrMode}\"\r\n [ngStyle]=\"{'resize': type == 'textBox' ? 'vertical' : 'none'}\" [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled || isBlocked || isLoading\" [(ngModel)]=\"inputValue\" [alt]=\"type\"\r\n [id]=\"id ? id :formControlName\" [attr.prevent-macro-keys-press-event]=\"preventMacroKeysPressEvent\"\r\n (ngModelChange)=\"_onInput($event)\" (blur)=\"_setBlurred()\" />\r\n\r\n <ng-container *ngIf=\"!isLoading\">\r\n <ng-container *ngIf=\"type=='search' || type=='search-blur'\">\r\n <span class=\"icon\" [innerHTML]=\"searchImageSvg | safeHtml\" *ngIf=\"!inputValue && !disabled\">\r\n </span>\r\n\r\n <span class=\"icon\" *ngIf=\"disabled\">\r\n <img src=\"assets/shared/icons/input/grey-search.png\" />\r\n </span>\r\n </ng-container>\r\n\r\n <span class=\"icon clickable small-icon\" *ngIf=\"shouldShowClearIcon\" (click)=\"clearInput()\">\r\n <span class=\"small-icon\" [innerHTML]=\"xImageSvg | safeHtml\"></span>\r\n </span>\r\n\r\n <span class=\"icon clickable eye-icon\" *ngIf=\"shouldShowPasswordToggle\"\r\n (mousedown)=\"$event.preventDefault()\" (click)=\"_onTogglePasswordVisibility($event)\">\r\n <img [src]=\"passwordEyeSource\">\r\n </span>\r\n </ng-container>\r\n\r\n <div *ngIf=\"isLoading\" class=\"skeleton skeleton-text input-skeleton\"></div>\r\n</div>\r\n\r\n<label class=\"error-msg right\" *ngIf=\"shouldShowErrorMsg\">\r\n {{errorMsg}}\r\n</label>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'app-herum-user-progress',\r\n templateUrl: './herum-user-progress.component.html',\r\n styleUrls: ['./herum-user-progress.component.scss']\r\n})\r\nexport class HerumUserProgressComponent {\r\n\r\n @Input() title: string = 'מדד כשירות כללי';\r\n @Input() percentage: number = 65;\r\n @Input() type: 'gradient' | 'solid' = 'gradient';\r\n\r\n get percentageLabel() {\r\n return this.percentage < 40 ?\r\n 'כשירות נמוכה' : this.percentage < 80 ?\r\n 'כשירות בינונית' : this.percentage < 99 ?\r\n 'כשירות טובה מאוד' : 'כשירות מושלמת! כל הכבוד!';\r\n }\r\n}","<div class=\"user-progress-container\" [ngClass]=\"{'p-0':type == 'solid'}\">\r\n <div class=\"mb-2 row\">\r\n <div class=\"col-7 section-title\">{{ title }}</div>\r\n <div class=\"col-5 section-title left\">{{ percentageLabel }}</div>\r\n </div>\r\n\r\n <herum-progress-bar [percentage]=\"percentage\" [type]=\"'solid'\"></herum-progress-bar>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { ViewModelType } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'blocked-form',\r\n templateUrl: './blocked-form.component.html',\r\n styleUrls: ['./blocked-form.component.scss']\r\n})\r\nexport class BlockedFormComponent {\r\n\r\n @Input() inputs: { label: string, value: string }[] = [];\r\n @Input() progressBars: { label: string, value: number }[] = [];\r\n @Input() view: ViewModelType = 'wide';\r\n}","<div class=\"grid-container\">\r\n <div class=\"input-container text-input\" *ngFor=\"let input of inputs\">\r\n <p>{{ input.label }}</p>\r\n\r\n <herum-input-field [inputValue]=\"input.value\" [isBlocked]=\"true\" [placeholder]=\"''\"></herum-input-field>\r\n </div>\r\n</div>\r\n\r\n<div class=\"progress-bar-container\">\r\n <div class=\"w-100\" *ngFor=\"let progressBar of progressBars\">\r\n <app-herum-user-progress [percentage]=\"progressBar.value\" [title]=\"progressBar.label\"></app-herum-user-progress>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\nconst upPosition: string = 'up';\r\nconst leftPosition: string = 'left';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-progress-bar',\r\n templateUrl: './herum-progress-bar.component.html',\r\n styleUrls: ['./herum-progress-bar.component.scss']\r\n})\r\nexport class HerumProgressBarComponent {\r\n\r\n @Input() percentage: number = 65;\r\n @Input() invalidPercentage: number = 0;\r\n @Input() showPercentage: boolean = true;\r\n @Input() percentagePosition: string = 'up';\r\n @Input() type: 'gradient' | 'solid' = 'gradient';\r\n @Input() size: 'tight' | 'regular' = 'regular';\r\n @Input() color: string = \"#26C593\";\r\n @Input() borderRadius: \"none\" | \"right\" | \"left\" | \"both\" = \"both\";\r\n @Input() total: string = \"100\";\r\n @Input() showBorder: boolean = true;\r\n @Input() thickness: 'thin' | 'thick' = 'thick';\r\n\r\n getPercentageFormat(): string {\r\n return this.percentagePosition === upPosition || this.percentagePosition === leftPosition ?\r\n (!this.invalidPercentage ? 0 + this.percentage + '%' : `${!this.isInfinity ? Math.floor(this.invalidPercentage + this.percentage) + '%' : '∞'}`) :\r\n `${this.percentage}/${this.total}`;\r\n }\r\n\r\n get invalidPercentageCalculation() {\r\n let sum = Math.floor(this.percentage + this.invalidPercentage);\r\n return !sum ? 0 : sum <= 100 ? this.invalidPercentage : 100 - this.percentage;\r\n }\r\n\r\n get isInfinity() {\r\n return this.percentage + this.invalidPercentage > 3000\r\n }\r\n}","<div class=\"container p-0\" [ngClass]=\"percentagePosition + '-container'\" [ngClass]=\"borderRadius + '-radius'\">\r\n <div class=\"progress-bar\" [ngClass]=\"{ 'colored-empty-bar': type == 'solid', 'tight': size=='tight', 'thin': thickness == 'thin', 'thick': thickness == 'thick' }\" \r\n [ngStyle]=\"{ 'border': showBorder ? '1px solid var(--chips-divider-color)' : 'unset' }\">\r\n <div class=\"progress-bar-fill\" [ngClass]=\"type\" [ngStyle]=\"{'width':percentage + '%', 'background':color}\" ></div>\r\n <div class=\"invalid-progress-bar-fill\" [ngStyle]=\"{'width':invalidPercentageCalculation + '%'}\" ></div>\r\n </div>\r\n\r\n <div *ngIf=\"showPercentage\" class=\"percentage\" [ngClass]=\"percentagePosition + ' ' + size\" [class.big-font]=\"isInfinity\" [ngStyle]=\"{'width':invalidPercentageCalculation + percentage + '%'}\">\r\n {{ getPercentageFormat() }}\r\n </div>\r\n</div>","import { Component, forwardRef, Output, EventEmitter, Input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nconst CUSTOM_SWITCH_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumSwitchComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-switch',\r\n templateUrl: './herum-switch.component.html',\r\n styleUrls: ['./herum-switch.component.scss'],\r\n providers: [CUSTOM_SWITCH_CONTROL_VALUE_ACCESSOR]\r\n\r\n})\r\nexport class HerumSwitchComponent implements ControlValueAccessor {\r\n\r\n @Input() isChecked: boolean = false;\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() checked = new EventEmitter<boolean>();\r\n\r\n _onCheck() {\r\n this.isChecked = !this.isChecked;\r\n this.checked.emit(this.isChecked);\r\n this.onChange(this.isChecked);\r\n }\r\n\r\n onChange: (value: any) => void = () => { }\r\n\r\n onTouched: () => void = () => { }\r\n\r\n writeValue(isChecked: any): void {\r\n this.isChecked = isChecked;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n}","<label class=\"switch\" [class.disabled]=\"disabled\">\r\n <input [checked]=\"isChecked\" type=\"checkbox\" (click)=\"_onCheck()\" [disabled]=\"disabled\">\r\n <span class=\"slider round\"></span>\r\n</label>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { convertToDate } from 'herum-shared/utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-mini-table',\r\n templateUrl: './herum-mini-table.component.html',\r\n styleUrls: ['./herum-mini-table.component.scss']\r\n})\r\nexport class HerumMiniTableComponent {\r\n\r\n @Input() view: \"wide\" | \"narrow\" | \"herum-table\" = \"wide\";\r\n @Input() height: \"short\" | \"long\" = \"short\";\r\n @Input() rows: {\r\n listPath: string[],\r\n itemsPaths: {\r\n paths: string[],\r\n label: string | boolean,\r\n type: 'bar' | 'text' | 'date' | 'checkbox' | 'toggle'\r\n }[]\r\n } = {\r\n listPath: [],\r\n itemsPaths: [\r\n {\r\n label: \"אשרה\",\r\n paths: [\"acception\"],\r\n type: 'text'\r\n },\r\n {\r\n label: \"סוג\",\r\n paths: [\"type\"],\r\n type: 'text'\r\n },\r\n {\r\n label: \"פריט כשירות\",\r\n paths: [\"name\"],\r\n type: 'text'\r\n },\r\n {\r\n label: \"משקל\",\r\n paths: [\"weight\"],\r\n type: 'text'\r\n },\r\n {\r\n label: \"תאריך התחלה\",\r\n paths: [\"startDate\"],\r\n type: 'text'\r\n },\r\n {\r\n label: \"תאריך סיום\",\r\n paths: [\"endDate\"],\r\n type: 'text'\r\n },\r\n {\r\n label: \"ציון\",\r\n paths: [\"grade\"],\r\n type: 'bar'\r\n }\r\n ]\r\n }\r\n @Input() object: any = [{\r\n type: 'משמרת תרגילית',\r\n name: 'אור הדגן',\r\n weight: '2',\r\n startDate: '02/04/16',\r\n endDate: '05/04/16',\r\n grade: 69,\r\n acception: '4156א'\r\n }, {\r\n type: 'משמרת מבצעית',\r\n name: 'שום כתוש',\r\n weight: '4',\r\n startDate: '12/11/16',\r\n endDate: '12/11/16',\r\n grade: 100,\r\n acception: '12755'\r\n },\r\n {\r\n type: 'משמרת מבצעית',\r\n name: 'פג הקסם',\r\n weight: '3',\r\n startDate: '23/05/19',\r\n endDate: '23/05/19',\r\n grade: 92,\r\n acception: '21358'\r\n },\r\n {\r\n type: 'הכשרה',\r\n name: 'השתלמות מס\"מים',\r\n weight: '1',\r\n startDate: '31/01/23',\r\n endDate: '02/02/23',\r\n grade: 73,\r\n acception: '12755'\r\n }, {\r\n type: 'משמרת מבצעית',\r\n name: 'חרבות ברזל',\r\n weight: '3',\r\n startDate: '07/10/23',\r\n endDate: '5/11/23',\r\n grade: 100,\r\n acception: '42377'\r\n }\r\n ];\r\n\r\n @Output() onCellEdit = new EventEmitter<any>()\r\n\r\n items: any[] = [];\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.items = this.getItems(this.object, this.rows?.listPath);\r\n }\r\n\r\n ngOnInit() {\r\n this.items = this.getItems(this.object, this.rows?.listPath);\r\n }\r\n\r\n getItems(object: any, pathParts: string[]) {\r\n if (!pathParts || !object)\r\n return [];\r\n\r\n let list: any = object;\r\n\r\n pathParts.forEach(part => {\r\n if (!list) return [];\r\n list = list[part]\r\n });\r\n return list;\r\n }\r\n\r\n updateItems(object: any, pathParts: string[], updatedValue: any) {\r\n if (!pathParts || !object) return [];\r\n let list: any = object;\r\n\r\n pathParts.slice(0, -1).forEach(part => {\r\n if (!list) return [];\r\n list = list[part];\r\n });\r\n list[pathParts[pathParts.length - 1]] = updatedValue;\r\n }\r\n\r\n getCellItem(object: any, cell: { paths: string[], label: string, type: string }) {\r\n let value = this.getItems(object, cell.paths);\r\n if (cell.type == 'date')\r\n return convertToDate(value);\r\n if (cell.paths[0] === 'dayCount')\r\n return value = this.displayedDayCount(Number(value));\r\n\r\n return value;\r\n }\r\n\r\n private displayedDayCount(numberOfDays: number): string {\r\n return numberOfDays > 0 && numberOfDays < 10\r\n ? numberOfDays.toString() + ' יום'\r\n : numberOfDays.toString() + ' ימים';\r\n }\r\n\r\n _onPermissionChange(item: any, itemPath, permission: boolean) {\r\n this.updateItems(item, itemPath.paths, permission);\r\n this.onCellEdit.emit(item);\r\n }\r\n}","<div class=\"table-container\" [ngClass]=\"[view,height]\">\r\n <div class=\"item header-item\">\r\n <div class=\"item-column\" [ngClass]=\"item.type\" *ngFor=\"let item of rows?.itemsPaths\">\r\n <b>{{ item.label }}</b>\r\n </div>\r\n </div>\r\n\r\n <div class=\"scroll-container\">\r\n <div class=\"item\" *ngFor=\"let item of items\">\r\n <div class=\"item-column\" [ngClass]=\"itemPath.type\" *ngFor=\"let itemPath of rows.itemsPaths\">\r\n <span *ngIf=\"itemPath.type == 'date' || itemPath.type == 'text'\" class=\"text-cell\">\r\n {{ getCellItem(item,itemPath) }}\r\n </span>\r\n\r\n <herum-progress-bar *ngIf=\"itemPath.type == 'bar'\" [percentage]=\"getItems(item,itemPath.paths)\"\r\n [type]=\"'solid'\" [percentagePosition]=\"'left'\">\r\n </herum-progress-bar>\r\n\r\n <herum-checkbox [isChecked]=\"getCellItem(item,itemPath)\"\r\n [type]=\"getCellItem(item,itemPath) == undefined ? 'disabled':''\"\r\n [isBlocked]=\"getCellItem(item,itemPath) == undefined\"\r\n (checkedEmitter)=\"_onPermissionChange(item,itemPath,$event)\" *ngIf=\"itemPath.type == 'checkbox'\">\r\n </herum-checkbox>\r\n\r\n <herum-switch [isChecked]=\"getCellItem(item,itemPath)\" *ngIf=\"itemPath.type == 'switch'\"\r\n (checked)=\"_onPermissionChange(item,itemPath,$event)\"></herum-switch>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Inject, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { svgsStrings, system } from 'herum-shared/constants';\r\nimport { NodeMenuItem, SystemTreeNodeData, TreeNodeAssignmentsData } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { isTruncatedTitleElement } from 'herum-shared/utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-hierarchy-tree-node',\r\n templateUrl: './herum-hierarchy-tree-node.component.html',\r\n styleUrls: ['./herum-hierarchy-tree-node.component.scss'],\r\n})\r\nexport class HerumHierarchyTreeNodeComponent {\r\n\r\n @Input() treeNodeData: TreeNodeAssignmentsData;\r\n @Input() size: \"small\" | \"regular\" = 'regular';\r\n @Input() expandedMode: \"open\" | \"close\" | \"none\" = 'none';\r\n @Input() showArrow: boolean = true;\r\n @Input() showAssignmentsDetails: boolean = true;\r\n @Input() nodeMenuItems: NodeMenuItem<SystemTreeNodeData>[] = [];\r\n\r\n @Output() onNodeSelected = new EventEmitter<boolean>()\r\n @Output() onMenuItemSelected = new EventEmitter<NodeMenuItem<SystemTreeNodeData>>()\r\n @Output() onExpand = new EventEmitter<boolean>();\r\n\r\n isExpand: boolean = true\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['treeNodeData']?.currentValue)\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n _isTruncatedTitleElement(element: HTMLElement): boolean {\r\n return isTruncatedTitleElement(element);\r\n }\r\n\r\n _onExpand() {\r\n this.isExpand = !this.isExpand;\r\n this.onExpand.emit(this.isExpand);\r\n }\r\n\r\n _onNodeSelected() {\r\n this.onNodeSelected.emit(true);\r\n }\r\n\r\n _onMenuItemSelected(item: NodeMenuItem<SystemTreeNodeData>) {\r\n item.additionalData = this.treeNodeData;\r\n this.onMenuItemSelected.emit(item);\r\n }\r\n\r\n get toRPActualAssignmentsDisplayText() {\r\n return 'תקנים בפועל'\r\n }\r\n\r\n get expectedAssignmentsDisplayText() {\r\n return 'פוטנציאל אג\"תי'\r\n }\r\n\r\n get invalidAssignmentsDisplayText() {\r\n return 'תקנים אכ\"אים'\r\n }\r\n\r\n get negativePercentage() {\r\n if (!this.showAssignmentsDetails) return 0;\r\n return (this.treeNodeData.totals?.invalidAssignments / this.treeNodeData.totals?.toRPExpectedAssignments) * 100;\r\n }\r\n\r\n get smallChevronSvg() {\r\n return svgsStrings.smallChevron;\r\n }\r\n\r\n get systemIdentifier() {\r\n return this.environmentConfig?.environment?.systemIdentifier\r\n }\r\n\r\n get isHerum() {\r\n return this.environmentConfig?.environment?.systemIdentifier == system.herum;\r\n }\r\n\r\n get isHadracha() {\r\n return this.environmentConfig?.environment?.systemIdentifier == system.hadracha;\r\n }\r\n}","<div class=\"node-container\" [class]=\"systemIdentifier\" [id]=\"'tree-node-container-' + treeNodeData.id\"\r\n *ngIf=\"treeNodeData\" [ngClass]=\"treeNodeData.status + ' ' + size + ' ' + expandedMode\" #nodeTitle appHerumToolTip>\r\n <div class=\"decorative-line\"></div>\r\n\r\n <div class=\"menu-icon-container\" *ngIf=\"nodeMenuItems?.length > 0\">\r\n <img src=\"/assets/hadracha/general/menu-button.svg\" [matMenuTriggerFor]=\"menu\">\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item *ngFor=\"let nodeMenuItem of nodeMenuItems\"\r\n (click)=\"_onMenuItemSelected(nodeMenuItem)\">\r\n <img src=\"/assets/hadracha/structs/{{nodeMenuItem.iconName}}.svg\">\r\n {{ nodeMenuItem.displayText }}\r\n </button>\r\n </mat-menu>\r\n </div>\r\n\r\n <p #treeNodeDataTitle [id]=\"'tree-node-title-' + treeNodeData.id\"\r\n [matTooltip]=\"_isTruncatedTitleElement(nodeTitle) ? treeNodeData.title : ''\" (click)=\"_onNodeSelected()\">\r\n {{treeNodeData.title | ellipsis:treeNodeDataTitle }}\r\n </p>\r\n\r\n <p class=\"totals\" *ngIf=\"showAssignmentsDetails\">\r\n <ng-container *ngIf=\"isHerum\">\r\n <span [matTooltip]='toRPActualAssignmentsDisplayText'> {{this.treeNodeData.totals?.toRPActualAssignments}}\r\n </span> /\r\n <span [matTooltip]='expectedAssignmentsDisplayText'> {{this.treeNodeData.totals?.toRPExpectedAssignments}}\r\n </span>\r\n <span class=\"invalid-assignments\" [ngClass]=\"{'green':this.treeNodeData.totals?.invalidAssignments == 0}\"\r\n [matTooltip]='invalidAssignmentsDisplayText'>\r\n +{{this.treeNodeData.totals?.invalidAssignments}}\r\n </span>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isHadracha\">\r\n <div class=\"total-value\">\r\n {{this.treeNodeData.totals.total}}\r\n </div>\r\n <p class=\"total-text\">חניכים</p>\r\n </ng-container>\r\n </p>\r\n\r\n <br *ngIf=\"!showAssignmentsDetails\">\r\n\r\n <div class=\"row\">\r\n <herum-progress-bar *ngIf=\"!isHadracha\" [percentage]=\"treeNodeData.percentage ? treeNodeData.percentage:0 \"\r\n [negativePercentage]=\"negativePercentage\" [type]=\"'solid'\" [size]=\"'tight'\">\r\n </herum-progress-bar>\r\n\r\n <span class=\"chevron\" *ngIf=\"showArrow\" [ngStyle]=\"{transform: isExpand ? 'rotate(180deg)' : 'none'}\"\r\n [innerHTML]=\"smallChevronSvg | safeHtml\" (click)=\"_onExpand()\">\r\n </span>\r\n </div>\r\n</div>","import { Component, ElementRef, EventEmitter, Inject, Input, OnChanges, Output, ViewChild } from '@angular/core';\r\nimport { openClose } from 'herum-shared/animations';\r\nimport { NodeMenuItem, SystemTreeNodeData, TreeNode } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-hierarchy-tree',\r\n templateUrl: './herum-hierarchy-tree.component.html',\r\n styleUrls: ['./herum-hierarchy-tree.component.scss'],\r\n animations: [openClose]\r\n})\r\nexport class HerumHierarchyTreeComponent implements OnChanges {\r\n\r\n @Input() treeNode: TreeNode;\r\n @Input() showAssignmentsDetails: boolean = true;\r\n @Input() nodeMenuItems: NodeMenuItem<SystemTreeNodeData>[] = [];\r\n\r\n @Output() onMenuItemSelected = new EventEmitter<NodeMenuItem<SystemTreeNodeData>>()\r\n @Output() onNodeSelected = new EventEmitter<TreeNode>();\r\n @Output() onCreateNewChildren = new EventEmitter<TreeNode>();\r\n\r\n topParent: TreeNode;\r\n @Input() left: number;\r\n @Input() top: number;\r\n @ViewChild('host') elementRef: ElementRef;\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {}\r\n\r\n ngOnChanges() {\r\n this.topParent = this.treeNode;\r\n }\r\n\r\n _onNodeSelected(node: TreeNode) {\r\n this.onNodeSelected.emit(node);\r\n }\r\n\r\n _displayNode(node: TreeNode) {\r\n let isNodeShouldBeDisplayed = this.treeNode.childernDisplayLogic(node ?? this.treeNode, this.treeNode);\r\n return isNodeShouldBeDisplayed;\r\n }\r\n\r\n isLastHierarchy(treeNode: TreeNode) {\r\n return treeNode?.height - this.topParent?.height == this.heightForVerticalView\r\n }\r\n\r\n _onCreateNewStruct(node: TreeNode) {\r\n this.onCreateNewChildren.emit(node);\r\n }\r\n\r\n _onMenuItemSelected(item: NodeMenuItem<SystemTreeNodeData>) {\r\n this.onMenuItemSelected.emit(item);\r\n }\r\n\r\n get heightForVerticalView() {\r\n return this.environmentConfig?.maxTreeHeight;\r\n }\r\n}","<div class=\"tree\">\r\n <ul>\r\n <li *ngIf=\"treeNode?.parent?.data\">\r\n <herum-hierarchy-tree-node class=\"parent-opacity\" [treeNodeData]=\"treeNode.parent?.data\"\r\n [expandedMode]=\"'none'\" [showAssignmentsDetails]=\"showAssignmentsDetails\"\r\n [nodeMenuItems]=\"nodeMenuItems\" (onMenuItemSelected)=\"_onMenuItemSelected($event)\"\r\n (click)=\"_onNodeSelected(treeNode.parent)\">\r\n </herum-hierarchy-tree-node>\r\n <ul>\r\n <ng-container *ngTemplateOutlet=\"treeTemplate; context:{children:treeNode, isLastChild:false}\">\r\n </ng-container>\r\n </ul>\r\n </li>\r\n\r\n <div *ngIf=\"!treeNode?.parent\">\r\n <ng-container *ngTemplateOutlet=\"treeTemplate; context:{children:treeNode, isLastChild:false}\">\r\n </ng-container>\r\n </div>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #treeTemplate let-treeNode=\"children\" let-isLast=\"isLastChild\">\r\n <li>\r\n <herum-hierarchy-tree-node [treeNodeData]=\"treeNode?.data\" [showAssignmentsDetails]=\"showAssignmentsDetails\"\r\n [expandedMode]=\"(topParent?.data.id == treeNode?.data?.id || !(treeNode?.childrens || _displayNode(treeNode?.childrens[0]) )) ? 'none' : treeNode?.isExpended ? 'open':'close'\"\r\n (onNodeSelected)=\"_onNodeSelected(treeNode)\" [showArrow]=\"treeNode?.childrens?.length\"\r\n [nodeMenuItems]=\"nodeMenuItems\" (onMenuItemSelected)=\"_onMenuItemSelected($event)\"\r\n (onExpand)=\"treeNode.isExpended=$event\">\r\n </herum-hierarchy-tree-node>\r\n\r\n <ul\r\n *ngIf=\"(treeNode?.childrens && treeNode.childrens?.length > 0)|| treeNode?.data?.loggedUserPermissions.changeStruct\">\r\n <ng-container *ngIf=\"_displayNode(treeNode.childrens[0])\">\r\n <ng-container *ngFor=\"let children of treeNode.childrens; let isLastChild = last\">\r\n <ng-container\r\n *ngTemplateOutlet=\"treeTemplate; context: {children:children, isLastChild:isLastChild}\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div class=\"colored-last-node-hierarchy-container\"\r\n *ngIf=\"(treeNode.data.loggedUserPermissions.changeStruct || treeNode?.childrens) && isLastHierarchy(treeNode.childrens[0]) else newNode\">\r\n <div class=\"last-node-hierarchy\" [@openClose]=\"treeNode.isExpended ? 'openDown' : 'closeUp'\">\r\n <herum-hierarchy-tree-node *ngFor=\"let children of treeNode.childrens\"\r\n [showAssignmentsDetails]=\"showAssignmentsDetails\" [treeNodeData]=\"children?.data\"\r\n [size]=\"'small'\" (click)=\"_onNodeSelected(children)\" [nodeMenuItems]=\"nodeMenuItems\"\r\n (onMenuItemSelected)=\"_onMenuItemSelected($event)\">\r\n </herum-hierarchy-tree-node>\r\n\r\n <div class=\"add-new-inner-node\" (click)=\"_onCreateNewStruct(treeNode)\"\r\n *ngIf=\"treeNode.data.loggedUserPermissions.changeStruct\">\r\n <div> + </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-template #newNode>\r\n <li *ngIf=\"treeNode.data.loggedUserPermissions.changeStruct\">\r\n <div class=\"add-new-node\" (click)=\"_onCreateNewStruct(treeNode)\">\r\n <div> + </div>\r\n </div>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n </li>\r\n</ng-template>","import { Component, Input } from '@angular/core';\r\nimport { TreeNode } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'recursive-tree',\r\n templateUrl: './recursive-tree.component.html',\r\n styleUrls: ['./recursive-tree.component.scss', '../herum-hierarchy-tree.component.scss']\r\n})\r\nexport class RecursiveTreeComponent {\r\n\r\n @Input() treeNode: TreeNode;\r\n @Input() showAssignmentsDetails: boolean = true;\r\n\r\n constructor() { }\r\n\r\n}","<li><herum-hierarchy-tree-node [title]=\"treeNode?.data?.title\" [showAssignmentsDetails]=\"showAssignmentsDetails\"></herum-hierarchy-tree-node> {{treeNode?.data?.title + treeNode?.childrens?.length}}\r\n <ul *ngFor=\"let children of treeNode?.childrens\">\r\n <recursive-tree [treeNode]=\"children\" [showAssignmentsDetails]=\"showAssignmentsDetails\"></recursive-tree>\r\n </ul>\r\n</li>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { TreeNode } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-textual-vertical-tree',\r\n templateUrl: './herum-textual-vertical-tree.component.html',\r\n styleUrls: ['./herum-textual-vertical-tree.component.scss']\r\n})\r\nexport class HerumTextualVerticalTreeComponent implements OnInit {\r\n\r\n @Input() treesNodes: TreeNode[] = [];\r\n @Input() selectedNode: TreeNode;\r\n @Input() hierarchySvg: string;\r\n @Input() resourceSvg: string;\r\n @Input() selectedTypeToShow: string = undefined\r\n\r\n @Output() onNodeSelected = new EventEmitter<TreeNode>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n _onStructSelection(treeNode: TreeNode) {\r\n this.onNodeSelected.emit(treeNode);\r\n this.selectedNode = treeNode;\r\n }\r\n\r\n _onExpandNode(treeNode: TreeNode) {\r\n treeNode.isExpended = !treeNode.isExpended;\r\n }\r\n}","<ng-container *ngIf=\"treesNodes\">\r\n <ul class=\"vertical-tree\" *ngFor=\"let treeNode of treesNodes\">\r\n <ng-container *ngTemplateOutlet=\"treeTemplate; context:{ $implicit: treeNode }\"></ng-container>\r\n </ul>\r\n</ng-container>\r\n\r\n<ng-template #treeTemplate let-treeNode>\r\n <li [ngClass]=\"{'hidden':selectedTypeToShow && selectedTypeToShow != treeNode.data.type}\">\r\n <div class=\"truncate\" (click)=\"_onStructSelection(treeNode)\" [ngClass]=\"{'active-node':selectedNode?.data.id === treeNode?.data.id}\">\r\n <ng-container *ngIf=\"!hierarchySvg\">\r\n <img src=\"/assets/structs/hierarchy.png\" (click)=\"_onExpandNode(treeNode)\"\r\n *ngIf=\"treeNode?.childrens && treeNode.childrens?.length > 0\" class=\"inline-text-icon\">\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"hierarchySvg\">\r\n <span (click)=\"_onExpandNode(treeNode)\" [innerHTML]=\"(treeNode?.data.type == 'learningUnit' ? \r\n hierarchySvg : resourceSvg) | safeHtml\" class=\"hierarchy-icon\">\r\n </span>\r\n </ng-container>\r\n\r\n {{ treeNode?.data?.title }}\r\n </div>\r\n\r\n <ul *ngIf=\"treeNode?.childrens && treeNode.childrens?.length > 0 && treeNode?.isExpended\">\r\n <ng-container *ngFor=\"let children of treeNode.childrens\">\r\n <ng-container *ngTemplateOutlet=\"treeTemplate; context:{ $implicit: children }\"></ng-container>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n</ng-template>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { DateRange } from '@angular/material/datepicker';\r\nimport { regexExpressions, startEndDateError, minDateError, formatError, timestampError } from \"herum-shared/constants\";\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-date-time-input',\r\n templateUrl: './herum-date-time-input.component.html'\r\n})\r\nexport class HerumDateTimeInputComponent {\r\n\r\n @Input() placeholder: string = '';\r\n @Input() inputValue: string = '';\r\n @Input() minDate: Date;\r\n @Input() showSeconds: boolean;\r\n @Input() rangeMode: boolean;\r\n\r\n @Output() dateChange = new EventEmitter<Date | DateRange<Date>>();\r\n @Output() timeChange = new EventEmitter<string>();\r\n @Output() disableChange = new EventEmitter<boolean>();\r\n\r\n errorMessage: string = '';\r\n isValid: boolean = true;\r\n debounceTime: number = 300;\r\n ltrMode: boolean = true;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['inputValue']?.currentValue)\r\n this._valueChange(this.inputValue);\r\n }\r\n\r\n _valueChange(dateString: string) {\r\n this.isValid = true;\r\n\r\n if (this.rangeMode) {\r\n this.handleDateRangeTimeRangeMode(dateString);\r\n return;\r\n }\r\n\r\n this.handleDateTimeMode(dateString);\r\n }\r\n\r\n private handleDateRangeTimeRangeMode(dateString: string) {\r\n const pattern = this.showSeconds ? regexExpressions.fullRangeDateTime : regexExpressions.rangeDateTimeWithoutSeconds;\r\n this.isValid = this.patternValidation(dateString, pattern);\r\n\r\n if (!this.isValid) {\r\n this.disableChange.emit(true);\r\n return;\r\n }\r\n\r\n const splittedDate = dateString.split('-');\r\n const startDateString = splittedDate[0];\r\n const endDateString = splittedDate[1];\r\n\r\n this.handleDateRangeTimeRangeValidations(startDateString, endDateString);\r\n\r\n if (!this.isValid) {\r\n this.disableChange.emit(true);\r\n return;\r\n }\r\n\r\n const startDate = this.createDateTime(startDateString).date;\r\n const endDate = this.createDateTime(endDateString).date;\r\n\r\n const dateRange = new DateRange(startDate, endDate);\r\n this.dateChange.emit(dateRange);\r\n this.disableChange.emit(false);\r\n }\r\n\r\n private handleDateRangeTimeRangeValidations(startDateString: string, endDateString: string) {\r\n this.isValid = this.timestampValidation(startDateString) && this.timestampValidation(endDateString) &&\r\n this.minDateValidation(startDateString) && this.startEndDateValidation(startDateString, endDateString);\r\n };\r\n\r\n private startEndDateValidation(startDateString: string, endDateString: string) {\r\n const startDate = this.createDateTime(startDateString).date;\r\n const endDate = this.createDateTime(endDateString).date;\r\n const isStartEndDateValid = endDate.getTime() >= startDate.getTime();\r\n\r\n if (!isStartEndDateValid)\r\n this.errorMessage = startEndDateError;\r\n\r\n return isStartEndDateValid;\r\n }\r\n\r\n private handleDateTimeMode(dateString: string) {\r\n this.handleDateTimeValidations(dateString);\r\n\r\n if (!this.isValid) {\r\n this.disableChange.emit(true);\r\n return;\r\n }\r\n\r\n const { date, time } = this.createDateTime(dateString);\r\n\r\n this.dateChange.emit(date);\r\n this.timeChange.emit(time);\r\n this.disableChange.emit(false);\r\n }\r\n\r\n private createDateTime(dateString: string) {\r\n const dateParts = dateString.split(' ');\r\n const year = dateParts[0].split('/').reverse().join('-');\r\n const time = dateParts[1];\r\n\r\n const dateTime = `${year}T${time}`;\r\n const date = new Date(dateTime);\r\n\r\n return { date, time };\r\n }\r\n\r\n private handleDateTimeValidations(value: string) {\r\n const pattern = this.showSeconds ? regexExpressions.fullDateTime : regexExpressions.dateTimeWithoutSeconds;\r\n\r\n this.isValid = this.patternValidation(value, pattern) && this.timestampValidation(value) && this.minDateValidation(value);\r\n }\r\n\r\n private minDateValidation(value: string) {\r\n if (!this.minDate)\r\n return true;\r\n\r\n const parts = value.split(' ');\r\n const year = parts[0].split('/').reverse().join('-');\r\n const isDateValid = new Date(year).getTime() >= this.minDate.getTime();\r\n\r\n if (!isDateValid)\r\n this.errorMessage = minDateError;\r\n\r\n return isDateValid;\r\n }\r\n\r\n private patternValidation(value: string, pattern: RegExp) {\r\n const isPatternValid = pattern.test(value);\r\n\r\n if (!isPatternValid)\r\n this.errorMessage = formatError + ' ' + this.placeholder;\r\n\r\n return isPatternValid;\r\n }\r\n\r\n private timestampValidation(date: string) {\r\n const dateTimeParts = date.split(' ');\r\n const timeParts = dateTimeParts[1].split(':');\r\n const dateParts = dateTimeParts[0].split('/');\r\n\r\n const year = parseInt(dateParts[2]);\r\n const month = parseInt(dateParts[1]);\r\n const day = parseInt(dateParts[0]);\r\n const hours = parseInt(timeParts[0]);\r\n\r\n const minutes = parseInt(timeParts[1]);\r\n const seconds = timeParts[2] !== undefined ? parseInt(timeParts[2]) : 0;\r\n const lastDayInMonth = new Date(year, month, 0).getDate();\r\n\r\n const isValidDate = month >= 1 && month <= 12 && day >= 1 && day <= lastDayInMonth;\r\n const isValidTime = hours >= 0 && hours <= 24 && minutes >= 0 && minutes <= 60 && seconds >= 0 && seconds <= 60;\r\n\r\n if (!isValidDate || !isValidTime)\r\n this.errorMessage = timestampError;\r\n\r\n return isValidDate && isValidTime;\r\n }\r\n}","<herum-input-field [placeholder]=\"placeholder\" [errorMsg]=\"errorMessage\" [isValid]=\"isValid\" [isBlurred]=\"true\"\r\n [inputValue]=\"inputValue\" [debounceTime]=\"debounceTime\" [ltrMode]=\"ltrMode\"\r\n (inputValueEmitter)=\"_valueChange($event)\">\r\n</herum-input-field>","import { Component, ElementRef, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { DateRange } from '@angular/material/datepicker';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-date-time-picker',\r\n templateUrl: './herum-date-time-picker.component.html',\r\n styleUrls: ['./herum-date-time-picker.component.scss']\r\n})\r\nexport class HerumDateTimePickerComponent {\r\n\r\n @Input() showDatePicker: boolean = true;\r\n @Input() showTimePicker: boolean = true;\r\n @Input() showTimeSelect: boolean = false;\r\n\r\n @Input() selectedTime: string;\r\n @Input() selectedDate: Date | DateRange<Date>;\r\n @Input() rangeMode: boolean = false;\r\n @Input() minDate: Date;\r\n\r\n @Input() timePickerHoverColor: string = '';\r\n @Input() timePickerActiveColor: string = '';\r\n\r\n @Input() widthDatePicker: string = '';\r\n @Input() heightTimePicker: string = '';\r\n\r\n @Input() datePickerHoverColor: string = '';\r\n @Input() datePickerActiveColor: string = '';\r\n @Input() showSeconds: boolean = true;\r\n @Input() timePickerItemSize: string = '39px';\r\n\r\n @Output() timeChange = new EventEmitter<string>();\r\n @Output() dateChange = new EventEmitter<Date | DateRange<Date>>();\r\n\r\n hostElement!: HTMLElement;\r\n\r\n constructor(private elementRef: ElementRef) {\r\n this.hostElement = this.elementRef.nativeElement;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.hostElement) {\r\n if (changes['widthDatePicker']?.currentValue)\r\n this.hostElement.style.setProperty('--width-date-picker', this.widthDatePicker);\r\n\r\n if (changes['heightTimePicker']?.currentValue)\r\n this.hostElement.style.setProperty('--height-time-picker', this.heightTimePicker);\r\n }\r\n }\r\n\r\n _timeChange(time: string) {\r\n this.timeChange.emit(time);\r\n }\r\n\r\n _dateChange(date: Date | DateRange<any>) {\r\n this.dateChange.emit(date);\r\n }\r\n}","<div class=\"date-time-picker\" [ngClass]=\"{'flex-column':showTimeSelect && rangeMode}\">\r\n <herum-date-picker *ngIf=\"showDatePicker\" [rangeMode]=\"rangeMode\" [minDate]=\"minDate\"\r\n [hoverColor]=\"datePickerHoverColor\" [activeColor]=\"datePickerActiveColor\" [selectedDate]=\"selectedDate\"\r\n (dateChange)=\"_dateChange($event)\"></herum-date-picker>\r\n\r\n <herum-time-picker *ngIf=\"showTimePicker\" [ngClass]=\"{'me-5':showDatePicker}\" [selectedTime]=\"selectedTime\"\r\n [showSeconds]=\"showSeconds\" [itemSize]=\"timePickerItemSize\" [hoverColor]=\"timePickerHoverColor\"\r\n [activeColor]=\"timePickerActiveColor\" (timeChange)=\"_timeChange($event)\"></herum-time-picker>\r\n</div>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { IdentifiedEntity } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-time-select',\r\n templateUrl: './herum-time-select.component.html',\r\n styleUrls: ['./herum-time-select.component.scss']\r\n})\r\nexport class HerumTimeSelectComponent {\r\n\r\n @Input() showSeconds: boolean = true;\r\n @Input() minutesPlaceholder: string = 'דקות';\r\n @Input() secondsPlaceholder: string = 'שניות';\r\n @Input() hoursPlaceholder: string = 'שעות';\r\n @Input() selectedTime: string = '00:00:00';\r\n @Input() label: string = '';\r\n\r\n @Output() timeChange = new EventEmitter<string>();\r\n\r\n selectedHour!: IdentifiedEntity;\r\n selectedMinute!: IdentifiedEntity;\r\n selectedSecond!: IdentifiedEntity;\r\n\r\n hours: IdentifiedEntity[] = this.generateIdentifiedEntityTimeArray(24);\r\n minutes: IdentifiedEntity[] = this.generateIdentifiedEntityTimeArray(60);\r\n seconds: IdentifiedEntity[] = this.generateIdentifiedEntityTimeArray(60);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectedTime'].currentValue)\r\n this.selectedTimeToSelectedIdentifiedEntities(this.selectedTime);\r\n }\r\n\r\n _selectedSecondOptionChange(updatedSecond: IdentifiedEntity) {\r\n this.selectedSecond = updatedSecond;\r\n this.emitSelectedTime();\r\n }\r\n\r\n _selectedMinuteOptionChange(updatedMinute: IdentifiedEntity) {\r\n this.selectedMinute = updatedMinute;\r\n this.emitSelectedTime();\r\n }\r\n\r\n _selectedHourOptionChange(updatedHour: IdentifiedEntity) {\r\n this.selectedHour = updatedHour;\r\n this.emitSelectedTime();\r\n }\r\n\r\n private emitSelectedTime() {\r\n const formattedTime = this.formatTime(this.selectedHour.name, this.selectedMinute.name, this.selectedSecond?.name);\r\n this.selectedTime = formattedTime;\r\n this.timeChange.emit(formattedTime);\r\n }\r\n\r\n private formatTime(hours: string, minutes: string, seconds: string | undefined): string {\r\n const hoursAndMinutes = `${hours.padStart(2, '0')}:${minutes.padStart(2, '0')}`;\r\n\r\n return !this.showSeconds ? hoursAndMinutes : hoursAndMinutes + `:${seconds?.padStart(2, '0')}`;\r\n }\r\n\r\n private selectedTimeToSelectedIdentifiedEntities(selectedTime: string) {\r\n [this.selectedHour, this.selectedMinute, this.selectedSecond] = selectedTime.split(':').map((value) => ({ id: value, name: value }));\r\n }\r\n\r\n private generateIdentifiedEntityTimeArray(length: number): IdentifiedEntity[] {\r\n return Array.from({ length }, (_, index) => ({\r\n id: String(index).padStart(2, '0'),\r\n name: String(index).padStart(2, '0')\r\n }));\r\n }\r\n}","<div>\r\n <label class=\"input-title\">{{label}}</label>\r\n\r\n <div class=\"time-container\">\r\n <ng-container *ngIf=\"showSeconds\">\r\n <herum-select [options]=\"seconds\" [selectedOption]=\"selectedSecond\" size='min'\r\n [placeholder]=\"secondsPlaceholder\" [label]=\"start\"\r\n (selectedOptionEmitter)=\"_selectedSecondOptionChange($event)\"></herum-select>\r\n\r\n <span class=\"seperator\">:</span>\r\n </ng-container>\r\n\r\n <herum-select [options]=\"minutes\" size='min' [selectedOption]=\"selectedMinute\"\r\n [placeholder]=\"minutesPlaceholder\"\r\n (selectedOptionEmitter)=\"_selectedMinuteOptionChange($event)\"></herum-select>\r\n\r\n <span class=\"seperator\">:</span>\r\n\r\n <herum-select [options]=\"hours\" size='min' [selectedOption]=\"selectedHour\" [placeholder]=\"hoursPlaceholder\"\r\n (selectedOptionEmitter)=\"_selectedHourOptionChange($event)\"></herum-select>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TimeRange } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-time-range-select',\r\n templateUrl: './herum-time-range-select.component.html',\r\n styleUrls: ['./herum-time-range-select.component.scss']\r\n})\r\nexport class HerumTimeRangeSelectComponent {\r\n\r\n @Input() showSeconds: boolean = true;\r\n @Input() selectedTime: TimeRange;\r\n\r\n @Output() timeChange = new EventEmitter<TimeRange>();\r\n\r\n startLabel: string = 'שעת התחלה';\r\n endLabel: string = 'שעת סיום';\r\n\r\n _startTimeChange(startTime: string) {\r\n this.selectedTime.start = startTime;\r\n this.emitSelectedTimeRange();\r\n }\r\n\r\n _endTimeChange(endTime: string) {\r\n this.selectedTime.end = endTime;\r\n this.emitSelectedTimeRange();\r\n }\r\n\r\n private emitSelectedTimeRange() {\r\n const isSelectedRangeTimeValid = !!this.selectedTime.start && !!this.selectedTime.end;\r\n\r\n if (isSelectedRangeTimeValid)\r\n this.timeChange.emit(this.selectedTime);\r\n }\r\n}","<div class=\"time-range-container\">\r\n <herum-time-select [showSeconds]=\"showSeconds\" [selectedTime]=\"selectedTime?.start\" [label]=\"startLabel\"\r\n (timeChange)=\"_startTimeChange($event)\"></herum-time-select>\r\n\r\n <herum-time-select [showSeconds]=\"showSeconds\" [selectedTime]=\"selectedTime?.end\" [label]=\"endLabel\"\r\n (timeChange)=\"_endTimeChange($event)\"></herum-time-select>\r\n</div>","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { openClose } from 'herum-shared/animations';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DateRange } from '@angular/material/datepicker';\r\nimport {\r\n types, dayInMilliSeconds, timePattern, svgsStrings, dateTimePlaceHolder, dateTimeWithoutSecondsPlaceHolder,\r\n dateRangePlaceHolder, dateRangeTimeRangePlaceHolder, dateRangeTimeRangeWithoutSecondsPlaceHolder, timePlaceHolder, datePlaceHolder, timeWithoutSecondsPlaceHolder\r\n} from 'herum-shared/constants';\r\nimport { formatDate } from '@angular/common';\r\nimport { DateTimePicker, TimeRange } from 'herum-shared/herum-types';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { getDropdownAnimationStates, updateFullYear } from 'herum-shared/utils';\r\n\r\nconst CUSTOM_PICKER_SELECT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumDateTimePickerSelectComponent),\r\n multi: true\r\n};\r\n\r\nconst selectedTimeInput: string = 'selectedTime';\r\nconst selectedDateInput: string = 'selectedDate';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-date-time-picker-select',\r\n templateUrl: './herum-date-time-picker-select.component.html',\r\n styleUrls: ['./herum-date-time-picker-select.component.scss',\r\n '../../assets/shared/atoms/selects/herum-selects.component.scss',\r\n '../../styles/dialogs.scss'],\r\n providers: [CUSTOM_PICKER_SELECT_CONTROL_VALUE_ACCESSOR],\r\n animations: [openClose]\r\n})\r\nexport class HerumDateTimePickerSelectComponent implements ControlValueAccessor {\r\n\r\n @Input() size: 'fit' | 'default' | 'big' | 'responsive' | 'button-size' = 'default';\r\n @Input() dropDownDirection: 'upwards' | 'downwards' = 'downwards';\r\n @Input() isDropDownInPositionFixed: boolean = false;\r\n\r\n @Input() selectedDate: Date | DateRange<Date> = new Date();\r\n @Input() rangeMode: boolean = false;\r\n @Input() minDate: Date | undefined;\r\n\r\n @Input() datePickerActiveColor: string = '';\r\n @Input() datePickerHoverColor: string = '';\r\n @Input() widthDatePicker: string = '';\r\n\r\n @Input() showTimePicker: boolean = true;\r\n @Input() showDatePicker: boolean = true;\r\n @Input() showDateTimeInput: boolean = false;\r\n @Input() showTimeSelect: boolean = false;\r\n\r\n @Input() selectedTime: string | TimeRange = formatDate(new Date(), timePattern, 'en');\r\n @Input() showSeconds: boolean = true;\r\n\r\n @Input() timePickerItemSize: string | undefined;\r\n @Input() timePickerActiveColor: string = '';\r\n @Input() timePickerHoverColor: string = '';\r\n @Input() heightTimePicker: string = '';\r\n\r\n @Input() showButtonText: boolean = true;\r\n @Input() buttonMode: boolean = false;\r\n\r\n @Output() dateTimeValueChange = new EventEmitter<DateTimePicker>();\r\n\r\n @HostListener('window:click', ['$event'])\r\n onClick(event: MouseEvent) { this.closeDropdown(event); }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.narrowSelect = window.innerWidth < 1300;\r\n }\r\n\r\n @ViewChild('dropContainer') dropContainer: ElementRef;\r\n\r\n dateTimeToDisplay: string = '';\r\n buttonText: string = '';\r\n dateTimeValue!: DateTimePicker;\r\n disabled: boolean = true;\r\n\r\n isDropdownOpen: boolean = false;\r\n narrowSelect: boolean = false;\r\n componentId: string = '';\r\n placeholder: string = '';\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes[selectedDateInput] || changes[selectedTimeInput]) {\r\n this.disabled = true;\r\n this.setDisabled();\r\n }\r\n\r\n if (changes[selectedTimeInput]?.currentValue) {\r\n this.setDateTimeToDisplay();\r\n this.buttonText = this.dateTimeToDisplay;\r\n }\r\n\r\n if (changes[selectedDateInput]?.currentValue) {\r\n if (this.showTimeSelect && this.rangeMode)\r\n this.setRangeSelectedTime((this.selectedDate as DateRange<Date>).start!, (this.selectedDate as DateRange<Date>).end!);\r\n\r\n if (this.showTimePicker)\r\n this.selectedTime = formatDate(this.selectedDate as Date, timePattern, 'en');\r\n\r\n this.rangeMode ? this.buildRangeDateTimeToDisplay(this.selectedDate as DateRange<Date>) : this.setDateTimeToDisplay();\r\n this.buttonText = this.dateTimeToDisplay;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.dateTimeToDisplay)\r\n this.rangeMode ? this.buildRangeDateTimeToDisplay(this.selectedDate as DateRange<Date>) : this.setDateTimeToDisplay();\r\n\r\n const today = new Date();\r\n const tomorrow = new Date(today.getTime() + dayInMilliSeconds);\r\n\r\n this.placeholder = this.getPlaceholder();\r\n this.narrowSelect = window.innerWidth < 1300;\r\n\r\n if (typeof this.selectedTime === types.string)\r\n this.setRangeSelectedTime(today, tomorrow);\r\n\r\n this.setRangeDate(today, tomorrow);\r\n this.resetSeconds();\r\n this.setDisabled();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentId = uuidv4();\r\n this.dropContainer.nativeElement.id += `component-id - ${this.componentId}`;\r\n }\r\n\r\n _onToggleDropdown() {\r\n this.isDropdownOpen = !this.isDropdownOpen;\r\n }\r\n\r\n _onSubmit() {\r\n this.buttonText = this.dateTimeToDisplay;\r\n this.dateTimeValue = (this.showTimePicker && !this.showDatePicker) ? this.selectedTime as string : this.selectedDate;\r\n this.dateTimeValueChange.emit(this.dateTimeValue);\r\n this.onChange(this.dateTimeValue);\r\n this._onToggleDropdown();\r\n }\r\n\r\n _onClear() {\r\n this.selectedDate = new Date();\r\n\r\n if (this.showTimeSelect && this.rangeMode) {\r\n const tomorrow = new Date(new Date().getTime() + 86400000);\r\n this.selectedDate = new DateRange(new Date(), tomorrow);\r\n this.setRangeSelectedTime((this.selectedDate as DateRange<Date>).start!, (this.selectedDate as DateRange<Date>).end!);\r\n }\r\n\r\n if (this.showTimePicker)\r\n this.selectedTime = formatDate(this.selectedDate as Date, timePattern, 'en');\r\n\r\n this.rangeMode ? this.buildRangeDateTimeToDisplay(this.selectedDate as DateRange<Date>) : this.setDateTimeToDisplay();\r\n\r\n this.buttonText = this.getPlaceholder();\r\n this.dateTimeValue = undefined;\r\n this.dateTimeValueChange.emit(this.dateTimeValue);\r\n this.onChange(this.dateTimeValue);\r\n this._onToggleDropdown();\r\n }\r\n\r\n _timeChange(time: string | TimeRange) {\r\n this.selectedTime = time;\r\n\r\n if (typeof time !== types.string) {\r\n this.handleRangeTimeChange(time as TimeRange);\r\n return;\r\n }\r\n\r\n this.setDateTimeToDisplay();\r\n }\r\n\r\n private handleRangeTimeChange(time: TimeRange) {\r\n if (!(this.selectedDate instanceof DateRange))\r\n return;\r\n\r\n this.setSelectedTimeInDateRange(this.selectedDate, time);\r\n this.dateTimeToDisplay = `${this.formateDate(this.selectedDate?.start as Date)}-${this.formateDate(this.selectedDate?.end as Date)}`;\r\n }\r\n\r\n _disableChange(disabled: boolean) {\r\n this.disabled = disabled;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n _dateChange(date: Date | DateRange<Date>, dateTimePickerEvent = false) {\r\n const dateRangeTimeRange = this.rangeMode && this.showDateTimeInput;\r\n\r\n if (!dateRangeTimeRange)\r\n this.selectedDate = date;\r\n\r\n this.selectedDate = dateRangeTimeRange && dateTimePickerEvent ? this.updateFullYearRangeDate(this.selectedDate as DateRange<Date>, date as DateRange<Date>) : date;\r\n\r\n if (dateRangeTimeRange)\r\n this.updateRangeTime();\r\n\r\n if (date instanceof Date) {\r\n this.setDateTimeToDisplay();\r\n return;\r\n }\r\n\r\n this.buildRangeDateTimeToDisplay(this.selectedDate as DateRange<Date>);\r\n }\r\n\r\n private updateRangeTime() {\r\n this.selectedTime = {\r\n start: this.extractTimeFromDate((this.selectedDate as DateRange<Date>).start as Date),\r\n end: this.extractTimeFromDate((this.selectedDate as DateRange<Date>).end as Date),\r\n };\r\n }\r\n\r\n private updateFullYearRangeDate(dateToUpdate: DateRange<Date>, date: DateRange<Date>) {\r\n const updatedStartDate = updateFullYear(dateToUpdate.start as Date, date.start as Date);\r\n const updatedEndDate = updateFullYear(dateToUpdate.end as Date, date.end as Date);\r\n\r\n return new DateRange(updatedStartDate, updatedEndDate);\r\n }\r\n\r\n private buildRangeDateTimeToDisplay(dateRange: DateRange<Date>) {\r\n if (!dateRange || !dateRange.end || !dateRange.start)\r\n return '';\r\n\r\n const startDateTimeToDisplay = this.formateDate(dateRange.start);\r\n const endDateTimeToDisplay = this.formateDate(dateRange.end);\r\n\r\n this.dateTimeToDisplay = `${startDateTimeToDisplay}-${endDateTimeToDisplay}`;\r\n }\r\n\r\n private formateDate(date: Date) {\r\n if (!date)\r\n return '';\r\n\r\n const day = date.getDate().toString().padStart(2, '0');\r\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n const formattedDate = `${day}/${month}/${year}`;\r\n\r\n const isDateRangeMode = !this.showTimePicker && this.showDatePicker && !this.showDateTimeInput;\r\n\r\n if (isDateRangeMode)\r\n return formattedDate;\r\n\r\n let formattedTime = this.extractTimeFromDate(date);\r\n\r\n return `${formattedDate} ${formattedTime}`;\r\n }\r\n\r\n private extractTimeFromDate(date: Date): string {\r\n const hoursAndMinutes = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;\r\n\r\n if (!this.showSeconds)\r\n return hoursAndMinutes;\r\n\r\n return `${hoursAndMinutes}:${date.getSeconds().toString().padStart(2, '0')}`;\r\n }\r\n\r\n private setDateTimeToDisplay() {\r\n if (this.showTimePicker && !this.showDatePicker) {\r\n this.dateTimeToDisplay = this.selectedTime as string || '';\r\n return;\r\n }\r\n\r\n if (!this.showTimePicker && this.showDatePicker) {\r\n this.dateTimeToDisplay = this.selectedDate instanceof DateRange ?\r\n `${this.formateDate(this.selectedDate?.start as Date)}-${this.formateDate(this.selectedDate?.end as Date)}`\r\n : this.formateDate(this.selectedDate);\r\n return;\r\n }\r\n\r\n if (this.showTimePicker && this.showDatePicker) {\r\n if (this.selectedDate instanceof Date) {\r\n this.updateTimeInDate(this.selectedDate, this.selectedTime as string)\r\n this.dateTimeToDisplay = this.formateDate(this.selectedDate);\r\n return;\r\n }\r\n\r\n this.buildRangeDateTimeToDisplay(this.selectedDate);\r\n }\r\n }\r\n\r\n private updateTimeInDate(dateToUpdate: Date, time: string) {\r\n if (!dateToUpdate)\r\n return;\r\n\r\n const [hours, minutes, seconds] = time.split(':').map(Number);\r\n\r\n dateToUpdate.setHours(hours);\r\n dateToUpdate.setMinutes(minutes);\r\n\r\n if (this.showSeconds)\r\n dateToUpdate.setSeconds(seconds);\r\n }\r\n\r\n private getPlaceholder() {\r\n const isDateRangeTimeRange = this.rangeMode && this.showTimeSelect && this.showDatePicker;\r\n\r\n if (isDateRangeTimeRange)\r\n return this.showSeconds ? dateRangeTimeRangePlaceHolder : dateRangeTimeRangeWithoutSecondsPlaceHolder;\r\n\r\n if (this.showDatePicker && this.rangeMode && !this.showTimePicker)\r\n return dateRangePlaceHolder;\r\n\r\n if (this.showDatePicker && this.showTimePicker && !this.rangeMode)\r\n return this.showSeconds ? dateTimePlaceHolder : dateTimeWithoutSecondsPlaceHolder;\r\n\r\n if (this.showDatePicker && !this.showTimePicker && !this.rangeMode)\r\n return datePlaceHolder;\r\n\r\n if (this.showTimePicker && !this.showDatePicker)\r\n return this.showSeconds ? timePlaceHolder : timeWithoutSecondsPlaceHolder;\r\n\r\n return this.placeholder;\r\n }\r\n\r\n private removeSecondsUnits(time: string) {\r\n const [hours, minutes] = time.split(':');\r\n\r\n return `${hours}:${minutes}`;\r\n }\r\n\r\n private setDisabled() {\r\n if (!this.disabled)\r\n return;\r\n\r\n const hasTime = !!this.selectedTime;\r\n\r\n if (this.showTimePicker && !this.showDatePicker) {\r\n this.disabled = !hasTime;\r\n return;\r\n }\r\n\r\n const hasDate = this.selectedDate instanceof Date ? !!this.selectedDate : (!!this.selectedDate?.start && !!this.selectedDate?.end);\r\n\r\n if (this.showDatePicker && !this.showTimePicker) {\r\n this.disabled = !hasDate;\r\n return;\r\n }\r\n\r\n if (this.showDatePicker && this.showTimePicker) {\r\n this.disabled = !(hasDate && hasTime);\r\n return;\r\n }\r\n }\r\n\r\n private setRangeDate(start: Date, end: Date) {\r\n if (!this.rangeMode)\r\n return;\r\n\r\n if (!this.selectedDate || this.selectedDate instanceof Date)\r\n this.selectedDate = new DateRange(start, end);\r\n\r\n this.buildRangeDateTimeToDisplay(this.selectedDate as DateRange<Date>);\r\n }\r\n\r\n private setSelectedTimeInDateRange(selectedDate: DateRange<Date>, selectedTime: TimeRange) {\r\n if (!this.showTimeSelect || !this.rangeMode)\r\n return;\r\n\r\n this.updateTimeInDate(selectedDate?.start as Date, selectedTime?.start);\r\n this.updateTimeInDate(selectedDate?.end as Date, selectedTime?.end);\r\n }\r\n\r\n private resetSeconds() {\r\n if (this.showSeconds || this.showDatePicker)\r\n return;\r\n\r\n this.selectedTime = this.dateTimeToDisplay = this.removeSecondsUnits(this.selectedTime as string);\r\n }\r\n\r\n private setRangeSelectedTime(start: Date, end: Date) {\r\n if (!this.showTimeSelect || !this.rangeMode || !start || !end)\r\n return;\r\n\r\n this.selectedTime = {\r\n start: formatDate(start, timePattern, 'en'),\r\n end: formatDate(end, timePattern, 'en')\r\n };\r\n }\r\n\r\n private closeDropdown(event: MouseEvent) {\r\n if (!this.isDropdownOpen)\r\n return;\r\n\r\n const isClickedOutsideComponent: boolean = !event.composedPath().some(path => (path as HTMLElement).id?.includes(this.componentId));\r\n\r\n if (isClickedOutsideComponent) {\r\n this.isDropdownOpen = false;\r\n return;\r\n }\r\n\r\n const isClickedInsideDateTimePickerDropdown: boolean = event.composedPath().some(path => (path as HTMLElement).id === this.dateTimepickerDropdownId);\r\n const isClickedToggleDropdownButton = !isClickedInsideDateTimePickerDropdown && !isClickedOutsideComponent;\r\n\r\n if (isClickedToggleDropdownButton)\r\n return;\r\n\r\n if (!isClickedInsideDateTimePickerDropdown)\r\n this.isDropdownOpen = false;\r\n }\r\n\r\n onChange: (dateTimeValue: DateTimePicker) => void = () => { }\r\n\r\n onTouched: () => void = () => { }\r\n\r\n writeValue(value: Date | string | DateRange<Date>): void {\r\n if (!value)\r\n return;\r\n\r\n this.dateTimeValue = value;\r\n\r\n if (typeof value === types.string)\r\n this.selectedTime = value as string;\r\n else {\r\n this.selectedDate = value as Date | DateRange<Date>;\r\n\r\n if (this.showTimeSelect || this.showTimePicker)\r\n this.setSelectedTimeByDate()\r\n }\r\n\r\n this.setDateTimeToDisplay();\r\n this.buttonText = this.dateTimeToDisplay;\r\n }\r\n\r\n private setSelectedTimeByDate() {\r\n this.rangeMode ?\r\n this.setRangeSelectedTime((this.selectedDate as DateRange<Date>).start!, (this.selectedDate as DateRange<Date>).end!)\r\n :\r\n this.selectedTime = formatDate(this.selectedDate as Date, timePattern, 'en');\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n get dateTimepickerDropdownId() {\r\n return 'date-time-picker-dropdown';\r\n }\r\n\r\n get dropdownClasses(): string {\r\n let classes = `dropdown-content dropdown-${this.dropDownDirection} ${this.size}-dropdown overflow-y-hidden`;\r\n\r\n // if (this.showDatePicker)\r\n // return classes;\r\n if (this.isDropDownInPositionFixed)\r\n classes += ' fixed';\r\n\r\n\r\n return classes;\r\n }\r\n\r\n get _getDropdownStates() {\r\n return getDropdownAnimationStates(this.isDropdownOpen, this.dropDownDirection);\r\n }\r\n\r\n get calendarImageSrc() {\r\n return svgsStrings.calendar;\r\n }\r\n\r\n get timePickerImageSrc() {\r\n return svgsStrings.clock;\r\n }\r\n}","<div #dropContainer class=\"dropdown\" dir=\"rtl\" [ngClass]=\"{'w-100': size === 'responsive'}\">\r\n <button class=\"drop-button\" [class]=\"narrowSelect ? 'narrow' : size\"\r\n [ngClass]=\"(isDropdownOpen ? 'open-drop-button-' + dropDownDirection : '')\" (click)=\"_onToggleDropdown()\">\r\n <span *ngIf=\"showButtonText\" class=\"selected-option ltr\">\r\n {{ buttonText ? buttonText : placeholder }}\r\n </span>\r\n \r\n <span class=\"icon\" [innerHTML]=\"(showDatePicker ? calendarImageSrc : timePickerImageSrc) | safeHtml\"></span>\r\n </button>\r\n\r\n <div [class]=\"dropdownClasses\" [id]=\"dateTimepickerDropdownId\" [@openClose]=\"_getDropdownStates\">\r\n <div class=\"picker-dropdown-container\">\r\n <herum-date-time-picker [showDatePicker]=\"showDatePicker\" [showTimeSelect]=\"showTimeSelect\"\r\n [selectedTime]=\"selectedTime\" [timePickerItemSize]=\"timePickerItemSize\" [showSeconds]=\"showSeconds\"\r\n [widthDatePicker]=\"widthDatePicker\" [heightTimePicker]=\"heightTimePicker\" [rangeMode]=\"rangeMode\"\r\n [timePickerActiveColor]=\"timePickerActiveColor\" [timePickerHoverColor]=\"timePickerHoverColor\"\r\n [datePickerActiveColor]=\"datePickerActiveColor\" [datePickerHoverColor]=\"datePickerHoverColor\"\r\n [showTimePicker]=\"showTimePicker\" [selectedDate]=\"selectedDate\" [minDate]=\"minDate\"\r\n (timeChange)=\"_timeChange($event)\" (dateChange)=\"_dateChange($event, true)\">\r\n </herum-date-time-picker>\r\n\r\n <div class=\"time-range-select\">\r\n <herum-time-range-select *ngIf=\"showTimeSelect && rangeMode\" [selectedTime]=\"selectedTime\"\r\n [showSeconds]=\"showSeconds\" (timeChange)=\"_timeChange($event)\">\r\n </herum-time-range-select>\r\n </div>\r\n\r\n <div [ngClass]=\"{'date-time-input-container':!showTimeSelect}\" *ngIf=\"showDateTimeInput\">\r\n <herum-date-time-input [placeholder]=\"placeholder\" [inputValue]=\"dateTimeToDisplay\"\r\n [showSeconds]=\"showSeconds\" [rangeMode]=\"rangeMode\" [minDate]=\"minDate\"\r\n (timeChange)=\"_timeChange($event)\" (dateChange)=\"_dateChange($event)\"\r\n (disableChange)=\"_disableChange($event)\">\r\n </herum-date-time-input>\r\n </div>\r\n\r\n <div class=\"dialog-buttons-actions-container\">\r\n <herum-button size=\"fit\" type=\"secondary\" (click)=\"_onClear()\">נקה</herum-button>\r\n <herum-button size=\"fit\" type=\"secondary\" (click)=\"_onToggleDropdown()\">בטל</herum-button>\r\n <herum-button size=\"fit\" [disabled]=\"disabled\" (click)=\"_onSubmit()\">שמור</herum-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { InjectionToken } from \"@angular/core\";\r\nimport { ISystemUserService } from 'herum-shared/herum-types';\r\nimport { AudioVisualConfiguration, SystemIdentifier } from 'herum-shared/herum-types';\r\n\r\nexport const SYSTEM_IDENTIFIER = new InjectionToken<SystemIdentifier>('SystemIdentifier');\r\nexport const SYSTEM_USER_SERVICE = new InjectionToken<ISystemUserService>('SystemUserService');\r\nexport const SYSTEM_TRACK_TEXT_CHANGES_SERVICE = new InjectionToken<ISystemUserService>('SystemTrackTextChangesService');\r\nexport const SYSTEM_AUDIO_VISUAL_CONFIGURATION = new InjectionToken<AudioVisualConfiguration>('SystemAudioVisualConfiguration');","import { Inject, Injectable } from '@angular/core';\r\nimport { SYSTEM_AUDIO_VISUAL_CONFIGURATION } from '../../tokens/tokens';\r\nimport { AudioVisualConfiguration } from 'herum-shared/herum-types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AudioVisualizationService {\r\n\r\n constructor(@Inject(SYSTEM_AUDIO_VISUAL_CONFIGURATION) private audioVisualConfiguration: AudioVisualConfiguration){}\r\n\r\n clearCanvas(canvasCtx: CanvasRenderingContext2D, canvas: HTMLCanvasElement): void {\r\n canvasCtx.clearRect(0, 0, canvas.width, canvas.height);\r\n canvasCtx.fillStyle = this.audioVisualConfiguration.canvasBackgroundColor;\r\n canvasCtx.fill();\r\n }\r\n\r\n drawWaveform(ctx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, audioBuffer: AudioBuffer, currentTime: number, duration: number): void {\r\n const { leftChannelData, rightChannelData } = this.getChannelData(audioBuffer);\r\n const { width, height, centerY } = this.getCanvasDimensions(canvas);\r\n const { barRadius, barWidth, gap } = this.barSettings;\r\n\r\n // Determine how many bars and how many samples each bar represents.\r\n const totalBars = Math.floor(width / (barWidth + gap));\r\n const samplesPerBar = Math.floor(leftChannelData.length / totalBars) || 1;\r\n const playedBarIndex = this.getPlayedBarIndex(width, barWidth, gap, currentTime, duration);\r\n\r\n // Loop through each bar and draw it.\r\n for (let barIndex = 0; barIndex < totalBars; barIndex++) {\r\n const x = barIndex * (barWidth + gap);\r\n const { startSample, endSample } = this.getSampleRange(barIndex, samplesPerBar, leftChannelData.length);\r\n const { leftMax, rightMax } = this.computeMaxAmplitudes(leftChannelData, rightChannelData, startSample, endSample);\r\n const maxBarHeight = height / 3;\r\n const leftBarHeight = leftMax * maxBarHeight;\r\n const rightBarHeight = rightMax * maxBarHeight;\r\n const isPlayed = barIndex <= playedBarIndex;\r\n\r\n this.drawBar(ctx, x, centerY, leftBarHeight, rightBarHeight, isPlayed, barWidth, barRadius);\r\n }\r\n }\r\n\r\n private getChannelData(audioBuffer: AudioBuffer): { leftChannelData: Float32Array; rightChannelData: Float32Array } {\r\n const leftChannelData = audioBuffer.getChannelData(0);\r\n const rightChannelData =\r\n audioBuffer.numberOfChannels > 1 ? audioBuffer.getChannelData(1) : leftChannelData;\r\n return { leftChannelData, rightChannelData };\r\n }\r\n\r\n /**\r\n * Determine the canvas dimensions, using 3/4 of the canvas height for the waveform.\r\n */\r\n getCanvasDimensions(canvas: HTMLCanvasElement): { width: number; height: number; centerY: number } {\r\n const width = canvas.width;\r\n const height = (canvas.height * 3) / 4;\r\n const centerY = height / 2;\r\n return { width, height, centerY };\r\n }\r\n\r\n /**\r\n * Calculate the current played bar index based on current time.\r\n */\r\n getPlayedBarIndex(width: number, barWidth: number, gap: number, currentTime: number, duration: number): number {\r\n const currentX = (currentTime / duration) * width;\r\n return Math.floor(currentX / (barWidth + gap));\r\n }\r\n\r\n /**\r\n * Determine the sample range (start and end indices) for a given bar.\r\n */\r\n getSampleRange(barIndex: number, samplesPerBar: number, totalSamples: number): { startSample: number; endSample: number } {\r\n const startSample = barIndex * samplesPerBar;\r\n let endSample = startSample + samplesPerBar;\r\n if (endSample > totalSamples)\r\n endSample = totalSamples;\r\n\r\n return { startSample, endSample };\r\n }\r\n\r\n /**\r\n * Compute the maximum amplitude within the sample range for both channels.\r\n */\r\n computeMaxAmplitudes(\r\n leftChannelData: Float32Array,\r\n rightChannelData: Float32Array,\r\n startSample: number,\r\n endSample: number\r\n ): { leftMax: number; rightMax: number } {\r\n let leftMax = 0, rightMax = 0;\r\n for (let i = startSample; i < endSample; i++) {\r\n const leftVal = Math.abs(leftChannelData[i]);\r\n const rightVal = Math.abs(rightChannelData[i]);\r\n if (leftVal > leftMax) leftMax = leftVal;\r\n if (rightVal > rightMax) rightMax = rightVal;\r\n }\r\n return { leftMax, rightMax };\r\n }\r\n\r\n /**\r\n * Draw both the left (top) and right (bottom) bars with rounded corners.\r\n */\r\n drawBar(ctx: CanvasRenderingContext2D, x: number, centerY: number, leftBarHeight: number,\r\n rightBarHeight: number, isPlayed: boolean, barWidth: number, barRadius: number): void {\r\n ctx.fillStyle = isPlayed ? this.audioVisualConfiguration.leftNodePassiveColor : this.audioVisualConfiguration.leftNodeActiveColor;\r\n ctx.beginPath();\r\n (ctx as any).roundRect(x, centerY - leftBarHeight, barWidth, leftBarHeight, barRadius);\r\n ctx.fill();\r\n\r\n ctx.fillStyle = isPlayed ? this.audioVisualConfiguration.rightNodePassiveColor : this.audioVisualConfiguration.rightNodeActiveColor;\r\n ctx.beginPath();\r\n (ctx as any).roundRect(x, centerY + this.audioVisualConfiguration.gapBetweenBars, barWidth, rightBarHeight, barRadius);\r\n ctx.fill();\r\n }\r\n\r\n drawTimeLabels(canvasCtx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, duration: number): void {\r\n const intervals = 10;\r\n const labelInterval = duration / intervals;\r\n const pixelsPerSecond = canvas.width / duration;\r\n const height = canvas.height;\r\n\r\n canvasCtx.fillStyle = this.audioVisualConfiguration.timeLabelColor;\r\n canvasCtx.font = '12px Arial';\r\n\r\n for (let i = 0; i <= intervals; i++) {\r\n const time = i * labelInterval;\r\n const x = time * pixelsPerSecond;\r\n const label = this.formatTime(time);\r\n canvasCtx.fillText(label, x, height - this.audioVisualConfiguration.timeLabelPadding);\r\n }\r\n }\r\n\r\n drawCurrentTimeLine(canvasCtx: CanvasRenderingContext2D, canvas: HTMLCanvasElement, currentTime: number, duration: number): void {\r\n const currentX = (currentTime / duration) * canvas.width;\r\n canvasCtx.strokeStyle = this.audioVisualConfiguration.currentTimeIndicatorColor;\r\n canvasCtx.lineWidth = this.audioVisualConfiguration.currentTimeIndicatorWidth;\r\n canvasCtx.beginPath();\r\n canvasCtx.moveTo(currentX, 0);\r\n canvasCtx.lineTo(currentX, canvas.height);\r\n canvasCtx.stroke();\r\n }\r\n\r\n formatTime(seconds: number): string {\r\n const minutes = Math.floor(seconds / 60);\r\n if (isNaN(minutes)) return '0:00';\r\n\r\n const remainingSeconds = Math.floor(seconds % 60);\r\n return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;\r\n }\r\n\r\n get barSettings(): { barRadius: number; barWidth: number; gap: number } {\r\n return {\r\n barRadius: this.audioVisualConfiguration.barRadius,\r\n barWidth: this.audioVisualConfiguration.barWidth,\r\n gap: this.audioVisualConfiguration.gapBetweenBars\r\n };\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\nimport { GQLVariable, GraphQLFilter, GraphQlOffsetPaging, GraphQLOrder, GraphQlQuery, GraphQlResult } from 'herum-shared/herum-types';\r\n\r\nimport { regexExpressions } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\nexport const NestedConditionSigniture = \"filters\";\r\n\r\nconst defaultPagingDataFormat = \"pageInfo { hasNextPage, hasPreviousPage, startCursor, endCursor }\";\r\nconst offsetPagingDataFormat = \"pageInfo { hasNextPage, hasPreviousPage }\";\r\n\r\nconst DefaultQueryName = \"DefaultQueryName\"\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GraphQLService {\r\n\r\n constructor(private httpClient: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n executeQuery(gqlQuery: GraphQlQuery, isListQuery: boolean = true, isOffsetPagination: boolean = false): Observable<any> {\r\n let variablesObjectForBody: Record<string, string>;\r\n let variablesStringForQuerySignature: string;\r\n\r\n if (gqlQuery.variables) {\r\n variablesObjectForBody = this.generateVariablesObjectForBody(gqlQuery.variables);\r\n variablesStringForQuerySignature = this.generateVariablesStringForQuerySigniture(gqlQuery.variables, gqlQuery.queryName);\r\n }\r\n\r\n const query = this.generateQuery(\r\n gqlQuery.resolverName,\r\n gqlQuery.formatExample,\r\n gqlQuery.filters,\r\n gqlQuery.paging?.first,\r\n gqlQuery.paging?.after,\r\n gqlQuery.offsetPaging,\r\n gqlQuery.variables?.length > 0 ? variablesStringForQuerySignature : '',\r\n gqlQuery.order,\r\n gqlQuery.conditionPaths,\r\n gqlQuery.orderPaths,\r\n gqlQuery.offsetPagingPaths,\r\n isListQuery,\r\n isOffsetPagination\r\n ).replace(regexExpressions.curlyBraces, '');\r\n\r\n return this.httpClient.post<GraphQlResult>(\r\n this.environmentConfig?.graphQLConfiguration?.serverBasePath,\r\n { query: query, variables: variablesObjectForBody }, { headers: gqlQuery.headers })\r\n .pipe(shareReplay(1), map(res => {\r\n return res.data ? res.data[gqlQuery.resolverName] : null\r\n }));\r\n }\r\n\r\n getFreeTextCondition(freeText: string, orConditionKeys: string[]) {\r\n let filters = {\r\n and: []\r\n }\r\n\r\n freeText.split(\" \").forEach(substring => {\r\n let orIteration = []\r\n orConditionKeys.forEach(orConditionKey => {\r\n orIteration.push({\r\n [orConditionKey]: { contains: substring }\r\n })\r\n })\r\n\r\n filters.and.push({ or: orIteration });\r\n })\r\n\r\n return filters;\r\n }\r\n\r\n generateFilterStringDynamically(ids: string[], key: string, type: ('String' | 'Number')) {\r\n let filters = [];\r\n let variables: GQLVariable[] = [];\r\n\r\n ids.forEach((id, index) => {\r\n let newFilter = {}\r\n newFilter[key] = {\r\n eq: '$' + key + index\r\n };\r\n filters.push(newFilter);\r\n variables.push({\r\n name: key + index,\r\n value: id,\r\n type\r\n });\r\n });\r\n return { filters, variables };\r\n }\r\n\r\n convertToResolverNameFormat(mongoCollectionName: string) {\r\n return mongoCollectionName.charAt(0).toLowerCase() + mongoCollectionName.slice(1);\r\n }\r\n generateQuery(resolverName: string, formatExample: any, condition?: GraphQLFilter, first?: number, after?: string, offsetPaging?: GraphQlOffsetPaging, variablesStringForQuerySigniture?: string, order?: GraphQLOrder, conditionPaths?: { [path: string]: GraphQLFilter }, orderPaths?: { [path: string]: GraphQLOrder }, offsetPagingPaths?: { [path: string]: GraphQlOffsetPaging }, isListQuery?: boolean, isOffsetPagination?: boolean) {\r\n const conditionString = this.generateConditionString(condition);\r\n const returnFormat = this.getKeysString(formatExample, conditionPaths, orderPaths, offsetPagingPaths);\r\n\r\n let orderString = order ? `order:${this.generateOrderString(order)},` : '';\r\n\r\n let pagingString = '';\r\n\r\n if (isListQuery) {\r\n pagingString = isOffsetPagination\r\n ? (offsetPaging?.skip > -1 || offsetPaging?.take > -1 ? this.generateOffsetPagingString(offsetPaging) : '')\r\n : (first || after ? this.generatePagingString(first, after) : '');\r\n }\r\n\r\n if (after) pagingString += ','\r\n\r\n const resolverParameters = (orderString + pagingString + conditionString) == '' ? '' : '(' + orderString + pagingString + conditionString + ')';\r\n\r\n if (pagingString != '') pagingString += ',';\r\n\r\n const elementsName = isOffsetPagination ? 'items' : 'nodes';\r\n\r\n const query = `query ${variablesStringForQuerySigniture ? variablesStringForQuerySigniture : ''} { \r\n ${resolverName + resolverParameters} { ${isListQuery ? (isOffsetPagination ? offsetPagingDataFormat : defaultPagingDataFormat) + `,totalCount , ${elementsName} {` : ''} ${returnFormat} } ${isListQuery ? '}' : ''} }`\r\n return query;\r\n }\r\n\r\n private generateConditionString(condition?: GraphQLFilter, isRecursiveCall: boolean = false): string {\r\n let conditionString = \"\";\r\n\r\n if (!condition || (!condition.and || condition.and?.length == 0) && (!condition.or || condition.or?.length == 0))\r\n return conditionString;\r\n\r\n if (condition) {\r\n conditionString = isRecursiveCall ? \"\" : \"where: {\";\r\n if (condition?.and) {\r\n let andString = \"\"\r\n\r\n condition.and.forEach(filter => {\r\n (Object.keys(filter)[0] == 'or' || Object.keys(filter)[0] == 'and') ?\r\n andString += `{${this.generateConditionString(filter, true)}},` :\r\n andString += `{${this.getKeysString(filter, null, null, null, null, true)}},`\r\n })\r\n\r\n andString = andString.slice(0, -1);\r\n conditionString += `and: [${andString}]`;\r\n conditionString += condition.or ? ',' : '';\r\n }\r\n\r\n if (condition?.or) {\r\n let orString = \"\"\r\n\r\n condition.or.forEach(filter => orString += `{${this.getKeysString(filter, null, null, null, null, true)}},`)\r\n condition.or.forEach(filter => {\r\n (Object.keys(filter)[0] == 'or' || Object.keys(filter)[0] == 'and') ?\r\n orString += `{${this.generateConditionString(filter, true)}},` :\r\n orString += `{${this.getKeysString(filter, null, null, null, null, true)}},`\r\n })\r\n\r\n orString = orString.slice(0, -1);\r\n conditionString += `or: [${orString} ]`;\r\n }\r\n\r\n conditionString += isRecursiveCall ? \"\" : \"}\";\r\n }\r\n\r\n return conditionString;\r\n }\r\n\r\n private generatePagingString(first?: number, after?: string) {\r\n let result = ''\r\n\r\n result += first ? `first:${first},` : '';\r\n result += after ? ` after:\"${after}\"` : '';\r\n\r\n return result;\r\n }\r\n\r\n private generateOffsetPagingString(offsetPaging: GraphQlOffsetPaging) {\r\n const { skip, take } = offsetPaging;\r\n\r\n let result = ''\r\n\r\n result += skip > -1 ? `skip:${skip},` : '';\r\n result += take > -1 ? ` take:${take}, ` : '';\r\n\r\n return result;\r\n }\r\n private getKeysString(obj, conditionPaths?: { [path: string]: GraphQLFilter }, orderPaths?: { [path: string]: GraphQLOrder }, offsetPagingPaths?, parentKey = null, isConditionString = false): string {\r\n let result = '';\r\n\r\n for (const key in obj) {\r\n result += `${key}`;\r\n\r\n if (((conditionPaths && conditionPaths[key]) || (orderPaths && orderPaths[key])) && !isConditionString) {\r\n result += '(';\r\n if (conditionPaths && conditionPaths[key]) result += this.generateConditionString(conditionPaths[key])\r\n if (orderPaths && orderPaths[key]) result += this.getKeysString(orderPaths[key], null, null, null, null, true)\r\n if (offsetPagingPaths && offsetPagingPaths[key]) result += (offsetPagingPaths[key].skip > -1 || offsetPagingPaths[key].take > -1) ? `,${this.generateOffsetPagingString(offsetPagingPaths[key])}` : ''\r\n result += `)`;\r\n }\r\n\r\n if (offsetPagingPaths && offsetPagingPaths[key])\r\n result += '{items';\r\n\r\n if (obj[key]?.length > 0 && !isConditionString && obj[key] !== null && typeof obj[key] !== 'string') {\r\n result += isConditionString ? `: { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, key, isConditionString)} }` :\r\n ` { ${this.getKeysString(obj[key][0], conditionPaths, orderPaths, key, isConditionString)} }`;\r\n }\r\n\r\n else if (typeof obj[key] === 'object' && obj[key] !== null && typeof obj[key] !== 'string')\r\n result += isConditionString ? `: { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, key, isConditionString)} }` :\r\n ` { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, parentKey + '.' + key, isConditionString)} }`;\r\n\r\n else if (typeof obj[key] === 'string' && obj[key] !== null && isConditionString)\r\n result += (obj[key][0] == '$' || obj[key].includes('ASC') || obj[key].includes('DESC')) ? `: ${obj[key]}` : `: \"${obj[key]}\"`;\r\n\r\n else if (typeof obj[key] === 'number' && obj[key] !== null && isConditionString)\r\n result += `: ${JSON.stringify(obj[key])}`;\r\n\r\n else if (typeof obj[key] === 'boolean' && obj[key] !== null && isConditionString)\r\n result += `: ${obj[key]}`;\r\n\r\n if (offsetPagingPaths && offsetPagingPaths[key])\r\n result += '}';\r\n\r\n result += ', ';\r\n }\r\n\r\n return result.slice(0, -2);\r\n }\r\n\r\n private generateVariablesObjectForBody(variables: GQLVariable[]) {\r\n return variables.reduce((acc, obj) => {\r\n acc[obj.name] = obj.value;\r\n return acc;\r\n }, {} as Record<string, string>);\r\n }\r\n\r\n private generateVariablesStringForQuerySigniture(variables: GQLVariable[], queryName: string) {\r\n if (!queryName) queryName = DefaultQueryName;\r\n\r\n let result = (queryName ? queryName : DefaultQueryName) + '(';\r\n\r\n variables.forEach(variable => {\r\n result += \"$\" + variable.name + \":\" + variable.type + \",\";\r\n })\r\n result = result.slice(0, -1) + \")\";\r\n\r\n return result;\r\n }\r\n\r\n generateOrderString<T extends {}>(order: T) {\r\n let orderString = '{';\r\n\r\n Object.keys(order).forEach((key, index, keys) => {\r\n orderString += typeof order[key] === 'object' ?\r\n `${key}:${this.generateOrderString(order[key])}` :\r\n `${key}:${order[key]}`;\r\n\r\n if (index < keys.length - 1)\r\n orderString += ',';\r\n }\r\n );\r\n\r\n return orderString + '}';\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { SignUpFormData, SignInFormData } from 'herum-shared/herum-types'\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { StorageService } from 'herum-shared/static-services';\r\nimport { Router } from '@angular/router';\r\nimport { selfIsTeacherExample } from 'herum-shared/objectsExample';\r\nimport { GraphQLService } from './graph-ql.service';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { AuthenticationResponse, BackendLoginFormat } from 'herum-shared/herum-types';\r\nimport { SecurityQuestion } from 'herum-shared/herum-types';\r\nimport { toHash } from 'herum-shared/utils';\r\n\r\nconst AuthStorageKey = 'AUTH_SESSION_ID';\r\nconst headers = new HttpHeaders({ 'Content-Type': 'application/json' })\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n sessionId$: BehaviorSubject<string> = new BehaviorSubject('');\r\n isTeacher$: Subject<boolean> = new Subject();\r\n\r\n constructor(private http: HttpClient, private router: Router,\r\n private gql: GraphQLService, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n let sessionId = StorageService.getItem(AuthStorageKey);\r\n\r\n if (!sessionId)\r\n return;\r\n\r\n this.sessionId$.next(sessionId);\r\n }\r\n\r\n tryLogin(signInFormData: SignInFormData): Observable<AuthenticationResponse> {\r\n const personalId = signInFormData.personalId;\r\n\r\n let loginFormat: BackendLoginFormat = {\r\n identifier: personalId,\r\n hash: toHash(this.generateStringForAuthenticationHash(personalId, signInFormData.militaryId))\r\n };\r\n\r\n return this.http.post<AuthenticationResponse>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.tryLogin, loginFormat)\r\n .pipe(map((authenticationResponse) => this.handleNewSessionId(authenticationResponse)))\r\n }\r\n\r\n getUserIdentificationQuestions(personalId: string) {\r\n return this.http.get(this.environmentConfig?.environment?.siteServerPath + `/Authentication/SecurityQuestions/${personalId}`);\r\n }\r\n\r\n signUp(signUpData: SignUpFormData): Observable<AuthenticationResponse> {\r\n return this.http.post<AuthenticationResponse>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.signUp, signUpData)\r\n .pipe(map((authenticationResponse) => this.handleNewSessionId(authenticationResponse)));\r\n }\r\n\r\n logout() {\r\n this.clearSession()\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n clearSession() {\r\n StorageService.deleteAll();\r\n this.sessionId$.next('');\r\n }\r\n\r\n isValidSessionId(sessionId: string): Observable<boolean> {\r\n let jSessionId = JSON.stringify(sessionId ?? '');\r\n return this.http.post<boolean>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.isValidSessionId, jSessionId, { headers: headers });\r\n }\r\n\r\n isTeacher(): Observable<boolean> {\r\n let userQuery = {\r\n resolverName: 'self',\r\n formatExample: selfIsTeacherExample,\r\n conditionPaths: { collegeStudyingLessons: { and: [{ lesson: { isDeleted: { eq: false } } }] } }\r\n };\r\n\r\n return this.gql.executeQuery(userQuery, false).pipe(map(user => {\r\n const isTeacher = !(!user.collegeTeacherAssignments || user.collegeTeacherAssignments.length == 0) ||\r\n !(!user.collegeTeachingLessons || user.collegeTeachingLessons.length == 0) ||\r\n !(!user.collegeCheckingLessons || user.collegeCheckingLessons.length == 0) || user.isAdmin == true;\r\n\r\n this.isTeacher$.next(isTeacher);\r\n return isTeacher;\r\n }))\r\n }\r\n\r\n setIdentificationQuestions(password: string, questions: { question: string, answer: string }[]) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/UpdateLoginData', {\r\n password,\r\n securityQuestions: questions.map(question => ({ ...question, answer: toHash(question.answer) }))\r\n })\r\n }\r\n\r\n resetPassword(securityQuestions: SecurityQuestion[], personalId: string, newPassword: string) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/ResetPassword', {\r\n personalId: personalId,\r\n answers: securityQuestions.map(question => ({ questionId: question._id, answer: toHash(question.answer) })),\r\n newPassword: newPassword\r\n })\r\n }\r\n\r\n securityCheck(securityQuestions: SecurityQuestion[], personalId: string) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/SecurityCheck', {\r\n personalId: personalId,\r\n answers: securityQuestions.map(question => ({ questionId: question._id, answer: toHash(question.answer) }))\r\n })\r\n }\r\n\r\n handleNewSessionId(authenticationResponse: AuthenticationResponse): AuthenticationResponse {\r\n if (authenticationResponse.sessionId?.length > 0)\r\n this.updateSessionId(authenticationResponse.sessionId);\r\n\r\n return authenticationResponse;\r\n }\r\n\r\n private updateSessionId(newValue: string) {\r\n this.sessionId$.next(newValue);\r\n StorageService.setItem(AuthStorageKey, newValue);\r\n }\r\n\r\n private generateStringForAuthenticationHash(personalId: string, militaryId: string) {\r\n return personalId + militaryId;\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { permissionsTemplatesExample, closedListExample } from 'herum-shared/objectsExample';\r\nimport { User } from 'herum-shared/herum-types';\r\nimport { GraphQLService } from './graph-ql.service';\r\nimport { generalKeys } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { Group } from 'herum-shared/herum-types';\r\nimport { GraphQlQuery } from 'herum-shared/herum-types';\r\nimport { ClosedList } from 'herum-shared/herum-types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonGraphqlRequestsService {\r\n\r\n constructor(private gql: GraphQLService, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n getGroupsByIds(ids: string[], formatExample: Group): Observable<Group[]> {\r\n let filterQuery = this.gql.generateFilterStringDynamically(ids, 'id', 'String');\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.Groups),\r\n formatExample: formatExample,\r\n filters: {\r\n or: filterQuery.filters\r\n },\r\n variables: filterQuery.variables\r\n }\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlGroups => gqlGroups?.nodes));\r\n }\r\n\r\n getClosedLists(names?: string[]): Observable<ClosedList[] | ClosedList> {\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.ClosedLists),\r\n formatExample: closedListExample,\r\n filters: { and: [{ isDeleted: { eq: false } }] },\r\n variables: []\r\n };\r\n\r\n names?.forEach((name, i) => {\r\n if (query.filters.or)\r\n query.filters.or.push({\r\n name: {\r\n eq: '$name' + i\r\n },\r\n });\r\n else\r\n query.filters.or = [{\r\n name: {\r\n eq: '$name' + i\r\n },\r\n }];\r\n\r\n query.variables.push({\r\n name: 'name' + i,\r\n value: name,\r\n type: 'String'\r\n });\r\n });\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlResult => gqlResult.nodes));\r\n }\r\n\r\n getUsersByIds(usersIds: string[], formatExample: User): Observable<User[]> {\r\n let filterQuery = this.gql.generateFilterStringDynamically(usersIds, generalKeys.id, 'String');\r\n\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.Users),\r\n formatExample,\r\n filters: {\r\n or: filterQuery.filters\r\n },\r\n variables: filterQuery.variables\r\n };\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlResponse => gqlResponse?.nodes));\r\n }\r\n\r\n getPermissionsTemplates() {\r\n let query: GraphQlQuery = {\r\n resolverName: 'permissionsTemplates',\r\n formatExample: permissionsTemplatesExample,\r\n }\r\n return this.gql.executeQuery(query).pipe(map(gqlResponse => gqlResponse.nodes))\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { generalKeys } from 'herum-shared/constants';\r\n\r\nexport const innerUniqListItemKey = '_id';\r\nexport const emptyValueFlagForCreationUniqListItem = 'null';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DbActionsInnerIdManagerService {\r\n\r\n determineIfInnerIdIsNeeded(value: any[]) {\r\n if (!Array.isArray(value))\r\n return;\r\n\r\n if (value[0][innerUniqListItemKey])\r\n value[0].id = value[0][innerUniqListItemKey] == emptyValueFlagForCreationUniqListItem ? null : value[0][innerUniqListItemKey];\r\n }\r\n\r\n deleteInnerIdFieldIfExist(itemToAttach: { [key: string]: any }, itemValue: { [key: string]: any }) {\r\n if (itemValue.hasOwnProperty(innerUniqListItemKey)) {\r\n itemToAttach[Object.keys(itemToAttach)[0]][generalKeys.id] =\r\n itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey] == emptyValueFlagForCreationUniqListItem ?\r\n null :\r\n itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey];\r\n\r\n delete itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey];\r\n }\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { ModelInfo } from 'herum-shared/herum-types';\r\nimport { Observable } from 'rxjs';\r\nimport { generalKeys, uploadsManagerKeys, assignmentMetadata, skipToastHeader } from 'herum-shared/constants';\r\nimport { DbActionsInnerIdManagerService } from './db-actions-inner-id-manager.service';\r\nimport { DbActionResponse } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { buildPath, setHeaders } from 'herum-shared/utils';\r\nimport { remainJustWantedValueInDictionary } from 'herum-shared/utils';\r\n\r\nconst ATTACH: string = \"Attach\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DbActionRequestsService {\r\n\r\n constructor(private http: HttpClient, private dbActionsInnerIdManagerService: DbActionsInnerIdManagerService,\r\n @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig\r\n ) { }\r\n\r\n getFileRequest(request: any, file: File): FormData {\r\n const formData: FormData = new FormData();\r\n formData.append(generalKeys.newFileRequest, JSON.stringify(request));\r\n formData.append(generalKeys.file, file);\r\n return formData;\r\n }\r\n\r\n addOrUpdateAndAttachBulkWithFile(mongoCollectionName: string, fields: { [key: string]: any }, file: File, ids: string[], uploadsManagerTitle?: string, skipToast?: boolean) {\r\n let headers: HttpHeaders = this.setAddOrUpdateAndAttachBulkWithFileHeaders([uploadsManagerTitle, skipToast]);\r\n\r\n return this.getMongoCollectionModelInfo(mongoCollectionName).pipe(switchMap((modelInfo: { [key: string]: ModelInfo }) => {\r\n if (fields.files)\r\n delete fields.files;\r\n\r\n const splittedFields = this.splitFieldByType(fields, modelInfo);\r\n const request = {\r\n DbBasicActionRequest: {\r\n data: splittedFields.keysToUpdate,\r\n ids\r\n },\r\n DbAttachmentActionRequests: this.getFormattedAttachments(ids, splittedFields.keysToAttach, splittedFields.keysToAttachInDifferentModel, modelInfo)\r\n };\r\n\r\n return this.http.put(\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.AddOrUpdate,\r\n this.environmentConfig?.mongoUpdates?.Submethods?.AndAttach,\r\n this.environmentConfig?.mongoUpdates?.Options?.Bulk,\r\n this.environmentConfig?.mongoUpdates?.Options?.SetFile]),\r\n this.getFileRequest(request, file), { responseType: 'text', reportProgress: !!file, headers });\r\n }))\r\n }\r\n\r\n setAddOrUpdateAndAttachBulkWithFileHeaders(headerToSet: any[]) {\r\n let headers: HttpHeaders = null;\r\n const [uploadsManagerTitle, skipToast] = headerToSet;\r\n\r\n if (uploadsManagerTitle)\r\n headers = setHeaders(new HttpHeaders(), [{ key: uploadsManagerKeys.uploadsManagerTitleHeader, value: uploadsManagerTitle }], true);\r\n\r\n if (skipToast)\r\n headers = skipToastHeader;\r\n\r\n return headers;\r\n }\r\n\r\n AndAttachBulk(mongoCollectionName: string, fields: { [key: string]: any }, ids: string[], method: 'create' | 'addOrUpdate', attachmentsToUpdate?: { [key: string]: any }): Observable<DbActionResponse> {\r\n if (ids.every(id => !id))\r\n ids = undefined;\r\n\r\n return this.getMongoCollectionModelInfo(mongoCollectionName).pipe(switchMap((modelInfo: { [key: string]: ModelInfo }) => {\r\n const splittedFields = this.splitFieldByType(fields, modelInfo);\r\n\r\n const request = {\r\n DbBasicActionRequest: {\r\n data: Object.assign(splittedFields.keysToUpdate, attachmentsToUpdate),\r\n ids\r\n },\r\n DbAttachmentActionRequests: this.getFormattedAttachments(ids, splittedFields.keysToAttach, splittedFields.keysToAttachInDifferentModel, modelInfo)\r\n };\r\n\r\n if (method == 'create') delete request.DbBasicActionRequest.ids;\r\n\r\n return this.http.request<DbActionResponse>(\r\n method == 'create' ? 'post' : 'put',\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n method == 'addOrUpdate' ? this.environmentConfig?.mongoUpdates?.Methods?.AddOrUpdate : this.environmentConfig?.mongoUpdates?.Methods?.Create,\r\n this.environmentConfig?.mongoUpdates?.Submethods?.AndAttach,\r\n this.environmentConfig?.mongoUpdates?.Options?.Bulk]),\r\n { body: request });\r\n }))\r\n }\r\n\r\n basicBulk(mongoCollectionName: string, fields: { [key: string]: any }, ids: string[], requestType: string, skipToast?: boolean) {\r\n return this.getMongoCollectionModelInfo(mongoCollectionName).pipe(switchMap((modelInfo: { [key: string]: ModelInfo }) => {\r\n const updatedFields = remainJustWantedValueInDictionary(generalKeys.id, fields);\r\n const splitedFields = this.splitFieldByType(fields, modelInfo);\r\n\r\n const requests = Object.entries(updatedFields).map(([field, value]) => {\r\n const fieldModelInfo: ModelInfo = splitedFields.keysToAttachInDifferentModel[field];\r\n\r\n return fieldModelInfo?.sourceField ?\r\n this.buildMirrorSourceCollectionRequestsData(value as { id: string }[], fieldModelInfo.sourceField, fieldModelInfo.innerPreviewModelName, ids[0], requestType, fieldModelInfo.attachedToType)\r\n : this.buildSourceCollectionRequestsData(ids, { [field]: value }, requestType, mongoCollectionName);\r\n }\r\n );\r\n\r\n let headers: HttpHeaders = null;\r\n if (skipToast)\r\n headers = skipToastHeader;\r\n\r\n return this.http.post(\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.Basic,\r\n this.environmentConfig?.mongoUpdates?.Options?.Bulk,\r\n ]),\r\n { requests }, { headers });\r\n }));\r\n }\r\n\r\n private buildSourceCollectionRequestsData(mongoSourceCollectionIds: string[], data: { [key: string]: any }, requestType: string, mongoSourceCollectionName: string) {\r\n return {\r\n ids: mongoSourceCollectionIds,\r\n data,\r\n requestType,\r\n actOnType: mongoSourceCollectionName\r\n };\r\n }\r\n\r\n private buildMirrorSourceCollectionRequestsData(fieldValue: { id: string }[], sourceField: string, innerPreviewModelName: string, mongoSourceCollectionId: string, requestType: string, attachedToType: string) {\r\n return {\r\n ids: this.arrayOfIdObjectsToIdsArray(fieldValue),\r\n data: this.buildBasicBulkObjectData(sourceField, innerPreviewModelName, mongoSourceCollectionId),\r\n requestType,\r\n actOnType: attachedToType\r\n };\r\n }\r\n\r\n private arrayOfIdObjectsToIdsArray(array: { id: string }[]) {\r\n return array.map(object => object.id);\r\n }\r\n\r\n private buildBasicBulkObjectData(sourceField: string, innerPreviewModelName: string, mongoSourceCollectionId: string) {\r\n const value = innerPreviewModelName ? { [innerPreviewModelName]: { id: mongoSourceCollectionId } } : { id: mongoSourceCollectionId };\r\n\r\n return { [sourceField]: [value] };\r\n }\r\n\r\n deleteMongoDocument(mongoCollectionName: string, ids: string[]) {\r\n return this.http.post(\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.Delete,\r\n ]),\r\n ids);\r\n }\r\n\r\n deletePreviewItemsFromList(mongoCollectionName: string, fields: { [key: string]: any }, ids: string[]) {\r\n const request = {\r\n ids,\r\n data: fields\r\n };\r\n\r\n return this.http.put(\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.ListItemDeletion]),\r\n request);\r\n }\r\n\r\n getFormattedAttachments(ids: string[], objectsToAttach: { [key: string]: any }, keysToAttachInDifferentModel: { [key: string]: any }, modelInfo: { [key: string]: ModelInfo }) {\r\n let result = [];\r\n\r\n Object.keys(objectsToAttach).forEach(keyToAttach => {\r\n let attachments = {};\r\n\r\n if (Array.isArray(objectsToAttach[keyToAttach]))\r\n objectsToAttach[keyToAttach].forEach((itemToAttach: { [key: string]: any }) => {\r\n const itemKey: string = Object.keys(itemToAttach)[0];\r\n const itemValue: { [key: string]: any } = itemToAttach[itemKey];\r\n\r\n this.dbActionsInnerIdManagerService.deleteInnerIdFieldIfExist(itemToAttach, itemValue);\r\n\r\n if (itemValue.hasOwnProperty(generalKeys.id) && itemValue[generalKeys.id] !== null)\r\n delete itemToAttach[Object.keys(itemToAttach)[0]][generalKeys.id];\r\n\r\n Object.assign(attachments, itemToAttach);\r\n });\r\n else\r\n attachments[objectsToAttach[keyToAttach]] = {};\r\n\r\n objectsToAttach[keyToAttach].forEach((objectToAttach: { [key: string]: any }, index: number) => {\r\n if (objectsToAttach[keyToAttach] && Object.keys(objectsToAttach[keyToAttach][index]) && attachments[Object.keys(objectsToAttach[keyToAttach][index])[0]])\r\n Object.keys(attachments[Object.keys(objectsToAttach[keyToAttach][index])[0]]).forEach(keyOfObjectToAttachData => {\r\n if (modelInfo[keyToAttach].innerPreviewModelName == keyOfObjectToAttachData || !modelInfo[keyToAttach].innerProperties.hasOwnProperty(keyOfObjectToAttachData))\r\n delete attachments[Object.keys(objectsToAttach[keyToAttach][index])[0]][keyOfObjectToAttachData];\r\n })\r\n })\r\n\r\n result.push({\r\n field: keyToAttach.charAt(0).toUpperCase() + keyToAttach.slice(1),\r\n attachments,\r\n ids\r\n });\r\n });\r\n\r\n Object.keys(keysToAttachInDifferentModel).forEach(field => {\r\n const extensionValue = Object.values(DbActionsInconsistencyMap[field].extension)[0];\r\n const updatedExtensionInfo = { [ids[0]]: extensionValue };\r\n\r\n let request = {\r\n field: keysToAttachInDifferentModel[field].sourceField,\r\n attachments: updatedExtensionInfo,\r\n ids: keysToAttachInDifferentModel[field].values.map(value => value.id),\r\n attachedToType: keysToAttachInDifferentModel[field].attachedToType\r\n }\r\n\r\n result.push(request);\r\n })\r\n\r\n return result;\r\n }\r\n\r\n splitFieldByType(fields: { [key: string]: any }, modelInfo: { [key: string]: ModelInfo }): { keysToAttach: { [key: string]: any }, keysToUpdate: { [key: string]: any }, keysToAttachInDifferentModel: { [key: string]: any } } {\r\n return Object.entries(fields).reduce((acc, [key, value]) => {\r\n if (modelInfo[key] && (modelInfo[key].attachedToType == null || modelInfo[key].sourceField == null || modelInfo[key].sourceField == undefined)) {\r\n const group = modelInfo[key].propertyUpdateType === ATTACH ? 'keysToAttach' : 'keysToUpdate';\r\n if (value !== null && value !== undefined && (!Array.isArray(value) || value.length > 0)) {\r\n acc[group] = {\r\n ...acc[group], [key]: modelInfo[key].propertyUpdateType === ATTACH ?\r\n value?.map(value => {\r\n return { [value.id + '']: value }\r\n }) :\r\n value\r\n };\r\n\r\n this.dbActionsInnerIdManagerService.determineIfInnerIdIsNeeded(value);\r\n }\r\n }\r\n else {\r\n if (modelInfo[DbActionsInconsistencyMap[key]?.backendNaming])\r\n acc.keysToAttachInDifferentModel = {\r\n ...acc.keysToAttachInDifferentModel, [key]: {\r\n attachedToType: modelInfo[DbActionsInconsistencyMap[key].backendNaming]?.attachedToType,\r\n sourceField: modelInfo[DbActionsInconsistencyMap[key].backendNaming]?.sourceField,\r\n innerPreviewModelName: modelInfo[DbActionsInconsistencyMap[key].backendNaming]?.innerPreviewModelName,\r\n values: fields[key]\r\n }\r\n }\r\n else\r\n acc.keysToAttachInDifferentModel = {\r\n ...acc.keysToAttachInDifferentModel, [key]: {\r\n attachedToType: modelInfo[key]?.attachedToType,\r\n sourceField: modelInfo[key]?.sourceField,\r\n innerPreviewModelName: modelInfo[key]?.innerPreviewModelName,\r\n values: fields[key]\r\n }\r\n }\r\n }\r\n\r\n return acc;\r\n }, { keysToAttach: {}, keysToUpdate: {}, keysToAttachInDifferentModel: {} });\r\n }\r\n\r\n getMongoCollectionModelInfo(mongoCollectionName: string): Observable<{ [key: string]: ModelInfo }> {\r\n return this.http.get<{ [key: string]: ModelInfo }>(buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.ModelInfo]));\r\n }\r\n}\r\n\r\nconst DbActionsInconsistencyMap = {\r\n groups: {\r\n backendNaming: \"members\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n }\r\n },\r\n },\r\n groupsPermissions: {\r\n backendNaming: \"permittedGroups\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"permission\": {\r\n \"update\": true\r\n }\r\n }\r\n },\r\n },\r\n groupsViewPermissions: {\r\n backendNaming: \"permittedGroups\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"permission\": {\r\n \"update\": false\r\n }\r\n }\r\n }\r\n },\r\n assignments: {\r\n backendNaming: \"assignments\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"id\": null,\r\n assignmentMetadata\r\n }\r\n }\r\n },\r\n \"collegeTeacherAssignments\": {\r\n backendNaming: \"collegeTeacherAssignments\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"id\": null\r\n }\r\n }\r\n },\r\n \"collegeStudentAssignments\": {\r\n backendNaming: \"collegeStudentAssignments\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"id\": null\r\n }\r\n }\r\n }\r\n};","import { Inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { GlobalKeyboardEvent } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlobalKeyboardListenerService {\r\n\r\n globalKeyboardEvents$: Subject<GlobalKeyboardEvent> = new Subject<GlobalKeyboardEvent>();\r\n connection: WebSocket;\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n this.initGlobalSocket();\r\n }\r\n\r\n initGlobalSocket() {\r\n if (this.connection) return;\r\n\r\n this.connection = new WebSocket(this.environmentConfig?.environment?.keyboardEventsLocalSocketPath);\r\n this.connection.onmessage = (webSocketMessage) => {\r\n const event: GlobalKeyboardEvent = JSON.parse(webSocketMessage.data);\r\n if (event.state == 'UP')\r\n this.globalKeyboardEvents$.next(event)\r\n }\r\n }\r\n\r\n get globalKeysToChromeKeysNames() {\r\n return {\r\n 'NUMPAD 0': 'Insert',\r\n 'NUMPAD 1': 'End',\r\n 'NUMPAD 2': 'ArrowDown',\r\n 'NUMPAD 3': 'PageDown',\r\n 'NUMPAD 4': 'ArrowLeft',\r\n 'NUMPAD 5': 'Clear',\r\n 'NUMPAD 6': 'ArrowRight',\r\n 'NUMPAD 7': 'Home',\r\n 'NUMPAD 8': '',\r\n 'NUMPAD 9': 'PageUp',\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { attributes } from 'herum-shared/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class KeyPressService {\r\n\r\n shouldPreventMacroKeyPress(event: KeyboardEvent, macroKeysPress: number[]) {\r\n const eventTarget = event.target as HTMLInputElement;\r\n const targetMacroKeys = eventTarget.getAttribute(attributes.preventMacroKeysPressEvent)?.split(\",\").map(Number);\r\n const targetHasPreventMacroKeyPress = targetMacroKeys?.some(targetMacroKey => macroKeysPress.includes(targetMacroKey));\r\n\r\n return targetHasPreventMacroKeyPress || eventTarget.hasAttribute(attributes.contenteditable);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderManagerService {\r\n\r\n loadersIds: string[] = [];\r\n loadingDescription: string = '';\r\n\r\n addLoader(loaderId: string, description?: string) {\r\n this.loadersIds.push(loaderId);\r\n this.loadingDescription = description;\r\n }\r\n\r\n changeDescription(description: string) {\r\n this.loadingDescription = description;\r\n }\r\n\r\n clear() {\r\n this.loadersIds = [];\r\n this.loadingDescription = '';\r\n }\r\n\r\n removeLoaderId(loaderIdToRemove: string) {\r\n let indexToRemove = this.loadersIds.findIndex(loaderId => loaderId == loaderIdToRemove);\r\n\r\n if (indexToRemove != -1)\r\n this.loadersIds.splice(indexToRemove, 1);\r\n }\r\n\r\n get isFullScreenLoading() {\r\n return this.loadersIds.length > 0\r\n };\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { tap } from 'rxjs/operators';\r\nimport {\r\n Lesson, LessonResourceSubscription, LessonStudentSubscription,\r\n BackendMicroResourceAuthorization, MicroResourceAuthorizationBase\r\n} from 'herum-shared/herum-types';\r\nimport { MicroResourceAuthorizationType, MicroResourceFrontData, Question, Resource } from 'herum-shared/herum-types';\r\nimport { defaultAuthorizationObject, resourceIdPlaceholder, defaultGrade } from 'herum-shared/constants';\r\nimport { forkJoin } from 'rxjs';\r\nimport { cloneDeep } from 'lodash';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { ResourcePreview } from 'herum-shared/herum-types';\r\nimport { UsersLessonPermissionsDalResponse } from 'herum-shared/herum-types';\r\nimport { ResourceSubscription, UserQuestionData } from 'herum-shared/herum-types';\r\n\r\nexport const freeTextAnswerField: string = 'FreeTextAnswer';\r\nconst gradeField: string = 'Grade';\r\nconst answerNotesField: string = 'AnswerNotes[]';\r\nconst UserQuestionsDataPath: string = 'QuizData.UserQuestionsData';\r\n\r\nexport type studentInnerAuthorizationSubscription = { user?: { id: string }, innerAuthorizations?: BackendMicroResourceAuthorization[] };\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MicroResourcesService {\r\n\r\n constructor(private http: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n getAssignmentUpdateTimings(selectedResource: Partial<Resource & LessonResourceSubscription>, openingTime: Date, closingTime: Date) {\r\n return [{\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0]?.id, freeTextAnswerField),\r\n collectionItemType: '',\r\n openingTime,\r\n closingTime,\r\n authorizationType: MicroResourceAuthorizationType.update\r\n },\r\n {\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1]?.id, freeTextAnswerField),\r\n collectionItemType: '',\r\n openingTime,\r\n closingTime,\r\n authorizationType: MicroResourceAuthorizationType.update\r\n }]\r\n }\r\n\r\n getPublishGradeTimings(selectedResource: Partial<Resource & LessonResourceSubscription>, openingTime: Date = new Date(2999, 1, 1), closingTime?: Date) {\r\n return [{\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0].id, gradeField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1].id, gradeField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0].id, answerNotesField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1].id, answerNotesField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: `Grade`\r\n }]\r\n }\r\n\r\n updateUserMicroResourceAuthorizationLocally(currentLesson: Lesson, studentId: string, microResourceAuthorizations: MicroResourceAuthorizationBase[], selectedResource: ResourcePreview) {\r\n currentLesson.students.find(student => student.student.id == studentId)\r\n .resourceSubscriptions.find(resourceSubscription => resourceSubscription.resourcePreview.id == selectedResource.id)\r\n .microResourceAuthorizations = microResourceAuthorizations\r\n }\r\n\r\n updateUserMicroResourceVisibility(microResource: MicroResourceFrontData, resource: Resource & LessonResourceSubscription, lesson: Lesson, user: LessonStudentSubscription) {\r\n let propertyPath: string;\r\n propertyPath = this.resolvePropertyPath(microResource.propertyPath, resource.quiz.questions);\r\n\r\n resource.microResourceAuthorizations = resource.microResourceAuthorizations.filter(\r\n microResourceAuthorization => microResourceAuthorization.propertyPath != \"\" &&\r\n microResourceAuthorization.propertyPath != propertyPath);\r\n\r\n resource.microResourceAuthorizations.push({\r\n propertyPath: propertyPath,\r\n collectionItemType: microResource.collectionItemType,\r\n openingTime: microResource.openingTime,\r\n closingTime: microResource.closingTime,\r\n authorizationType: MicroResourceAuthorizationType.view\r\n })\r\n\r\n return this.updateUserMicroResourceAuthorization(user.student.id, lesson, resource as unknown as ResourcePreview, resource.microResourceAuthorizations);\r\n }\r\n\r\n updateUserMicroResourceAuthorization(studentId: string, lesson: Lesson, resource: ResourcePreview, authorizations: MicroResourceAuthorizationBase[]) {\r\n return this.http.post<UsersLessonPermissionsDalResponse>(this.environmentConfig?.environment?.siteServerPath + '/Activity/UpdateAuthorizations',\r\n {\r\n userIds: [studentId],\r\n lessonId: lesson.id,\r\n resourceId: resource.id,\r\n authorizations\r\n }\r\n ).pipe(tap(() => {\r\n this.updateUserMicroResourceAuthorizationLocally(lesson, studentId, authorizations, resource)\r\n }))\r\n }\r\n\r\n resolvePropertyPath(\r\n path: string | ((question: (Question | UserQuestionData)[]) => string),\r\n questions: (Question | UserQuestionData)[]\r\n ) {\r\n return typeof path === 'function' ? path(questions) : path\r\n }\r\n\r\n isTimePass(date: string | number | Date) {\r\n if (!date) return false;\r\n return new Date(date).getTime() < new Date().getTime();\r\n }\r\n\r\n isAuthenticated(microResource: MicroResourceAuthorizationBase) {\r\n return this.isTimePass(microResource.openingTime) && !this.isTimePass(microResource.closingTime);\r\n }\r\n\r\n isQuestionAssignment(resourceSubscription: ResourceSubscription, questionType: string) {\r\n const question = resourceSubscription?.quizData?.userQuestionsData.find(userQuestionData => userQuestionData.questionType === questionType);\r\n\r\n if (!question)\r\n return false;\r\n\r\n return !!resourceSubscription.microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(question.id, freeTextAnswerField));\r\n }\r\n\r\n isQuestionPendingForCheck(resourceSubscription: ResourceSubscription, questionData: UserQuestionData) {\r\n const microResourceAuthorizations = resourceSubscription.microResourceAuthorizations;\r\n const questionId = questionData.id;\r\n\r\n const questionClosingTime = microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(questionId, freeTextAnswerField) && microResourceAuthorization.authorizationType === MicroResourceAuthorizationType.update)?.closingTime;\r\n const gradePublishOpeningTime = microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(questionId, gradeField))?.openingTime;\r\n\r\n let isQuestionPendingForCheck: boolean = false;\r\n\r\n if (questionClosingTime && questionData.grade === defaultGrade) {\r\n isQuestionPendingForCheck = gradePublishOpeningTime ?\r\n new Date(questionClosingTime).getTime() < new Date().getTime() && new Date().getTime() < new Date(gradePublishOpeningTime).getTime() :\r\n new Date(questionClosingTime).getTime() < new Date().getTime();\r\n }\r\n\r\n return isQuestionPendingForCheck;\r\n }\r\n\r\n buildQuestionPropertyPath(id: string, field: string) {\r\n return `${UserQuestionsDataPath}[${id}].${field}`;\r\n }\r\n\r\n hasFillAuthorizationClosingTimePassed(innerAuthorizations: BackendMicroResourceAuthorization[], resource: Resource) {\r\n const fillAuthorizationPropertyPath = (defaultAuthorizationObject.fill().propertyPath as string).replace(resourceIdPlaceholder, resource.id);\r\n const fillAuthorization = innerAuthorizations?.find(auth => auth.propertyPath == fillAuthorizationPropertyPath && auth.authorizationType == MicroResourceAuthorizationType.fill);\r\n return this.isTimePass(fillAuthorization?.closingTime);\r\n }\r\n\r\n isPublishGradeAuthenticated(innerAuthorizations: BackendMicroResourceAuthorization[], resource: Resource) {\r\n const publishGradeInnerAuthorizations = this.getAuthorization(innerAuthorizations, defaultAuthorizationObject.resourceGrade(), MicroResourceAuthorizationType.view, resource);\r\n return publishGradeInnerAuthorizations ? this.isAuthenticated(publishGradeInnerAuthorizations) : false;\r\n }\r\n\r\n getAuthorization(innerAuthorizations: BackendMicroResourceAuthorization[], defaultAuthorizationObject: BackendMicroResourceAuthorization, MicroResourceAuthorizationType: MicroResourceAuthorizationType, resource: Resource) {\r\n const fillAuthorizationPropertyPath = defaultAuthorizationObject.propertyPath.replace(resourceIdPlaceholder, resource.id);\r\n return innerAuthorizations.find((innerAuthorization: BackendMicroResourceAuthorization) => innerAuthorization.propertyPath === fillAuthorizationPropertyPath && innerAuthorization.authorizationType === MicroResourceAuthorizationType);\r\n }\r\n\r\n createMultiResourceDefaultAuthorizations<T extends studentInnerAuthorizationSubscription>(students: T[], pageId: string, resourcesIds: string[], defaultAuthorizations: BackendMicroResourceAuthorization[], authorizations?: BackendMicroResourceAuthorization[]) {\r\n const updates = [];\r\n\r\n let microAuthorizations = [];\r\n\r\n if (authorizations) microAuthorizations = authorizations;\r\n else {\r\n resourcesIds.forEach(resourceId => {\r\n let defaultAuthorizationsCopy = cloneDeep(defaultAuthorizations);\r\n\r\n defaultAuthorizationsCopy.forEach(authorization => authorization.propertyPath = (authorization.propertyPath as string).replace(resourceIdPlaceholder, resourceId));\r\n\r\n microAuthorizations.push(...defaultAuthorizationsCopy);\r\n });\r\n }\r\n\r\n const parsedAuthorizations = microAuthorizations.map((authorization) => ({\r\n propertyPath: authorization.propertyPath,\r\n closingTime: authorization.closingTime,\r\n openingTime: authorization.openingTime,\r\n authorizationType: authorization.authorizationType,\r\n lastUpDateTime: new Date(),\r\n collectionItemType: authorization.collectionItemType\r\n }));\r\n\r\n students.forEach(student => {\r\n updates.push({\r\n userIds: [student.user?.id],\r\n hadrachaPageId: pageId,\r\n authorizations: [...(student.innerAuthorizations || []), ...parsedAuthorizations]\r\n });\r\n });\r\n\r\n return forkJoin(updates.map(request => {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.resourcePaths?.resourceUpdateAuthorizations, request);\r\n }))\r\n }\r\n}","import { Injectable } from '@angular/core';\nimport { Resource } from 'herum-shared/herum-types';\nimport { resourcesFilesSuffixes } from 'herum-shared/constants';\nimport { EnvironmentConfig } from 'herum-shared/environment';\nimport { getUrlFromFileData, getVersionPathParameter } from 'herum-shared/utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ResourceDataBuilderService {\n\n constructor(private environmentConfig: EnvironmentConfig) { }\n\n buildFilePath(resource: Resource) {\n return getUrlFromFileData(resource.resourceFile, this.environmentConfig?.environment?.s3ServerPath) + this.getVersionPathParameter(resource);\n }\n\n buildDirectoryPath(resource: Resource) {\n return getUrlFromFileData(resource.resourceFile, this.environmentConfig?.environment?.s3ServerPath) + resourcesFilesSuffixes[resource.resourceType] + this.getVersionPathParameter(resource);\n }\n\n private getVersionPathParameter(resource: Resource) {\n return getVersionPathParameter(new Date(resource.lastUpdateTime));\n }\n}","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { system } from 'herum-shared/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SystemStylingService {\r\n private renderer: Renderer2 | null = null\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: Document,\r\n private rendererFactory: RendererFactory2) {\r\n this.renderer = this.rendererFactory.createRenderer(null, null)\r\n }\r\n\r\n setHerumStyling() {\r\n this.renderer.removeClass(document.body, \"college-colors\");\r\n this.renderer.removeClass(document.body, \"hadracha-colors\");\r\n this.renderer.addClass(document.body, \"herum-colors\");\r\n this.setFavicon(\"/assets/college/pagesIcons/EchoIcon.svg\");\r\n }\r\n\r\n setCollegeStyling() {\r\n this.setCssVariable(\"--main-header-height\", \"0vh\");\r\n this.renderer.removeClass(document.body, \"hadracha-colors\");\r\n this.renderer.removeClass(document.body, \"herum-colors\");\r\n this.renderer.addClass(document.body, \"college-colors\");\r\n this.setFavicon(\"/assets/college/pagesIcons/EchoIcon.svg\");\r\n }\r\n\r\n setHadrachaStyling() {\r\n this.renderer.removeClass(document.body, \"college-colors\");\r\n this.renderer.removeClass(document.body, \"herum-colors\");\r\n this.renderer.addClass(document.body, \"hadracha-colors\");\r\n this.setFavicon(\"/assets/hadracha/general/hadracha-favicon.svg\");\r\n }\r\n\r\n private setCssVariable(name: string, value: string) {\r\n document.documentElement.style.setProperty(name, value);\r\n }\r\n\r\n private setFavicon(path: string) {\r\n const link: HTMLLinkElement = this.document.querySelector(\"link[rel*='icon']\");\r\n link.type = 'image/x-icon';\r\n link.rel = 'icon';\r\n link.href = path;\r\n this.document.head.appendChild(link);\r\n }\r\n}\r\n\r\nexport function systemStylingFactory(systemName: string, systemStylingService: SystemStylingService) {\r\n return () => {\r\n switch (systemName) {\r\n case system.college: systemStylingService.setCollegeStyling(); break;\r\n case system.herum: systemStylingService.setHerumStyling(); break;\r\n case system.hadracha: systemStylingService.setHadrachaStyling(); break;\r\n default:\r\n throw new Error(`Unsupported system:${systemName}`)\r\n }\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { ISystemTrackTextChangesService } from 'herum-shared/herum-types';\r\nimport { SYSTEM_TRACK_TEXT_CHANGES_SERVICE } from 'herum-shared/tokens';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TrackTextChangesService {\r\n\r\n constructor(@Inject(SYSTEM_TRACK_TEXT_CHANGES_SERVICE) private systemContextTrackTextChangesService: ISystemTrackTextChangesService) { }\r\n\r\n getStyle() {\r\n return this.systemContextTrackTextChangesService.getStyle();\r\n }\r\n}","export class StorageService {\r\n\r\n private static cache: { [key: string]: string | null } = {};\r\n\r\n public static getItem(key: string): string | null {\r\n const cachedValue = StorageService.cache[key];\r\n\r\n if (cachedValue)\r\n return cachedValue;\r\n\r\n else {\r\n let value: string | null = StorageService.getCookie(key);\r\n if (!value)\r\n value = localStorage.getItem(key);\r\n\r\n StorageService.cache[key] = value;\r\n return value;\r\n }\r\n }\r\n\r\n public static setItem(key: string, value: any): void {\r\n let stringifyValue = value;\r\n\r\n if (typeof value != \"string\")\r\n stringifyValue = JSON.stringify(value)\r\n\r\n StorageService.cache[key] = stringifyValue;\r\n try {\r\n StorageService.setCookie(key, stringifyValue);\r\n } catch (error) {\r\n localStorage.setItem(key, stringifyValue);\r\n }\r\n }\r\n\r\n public static removeItem(key: string): void {\r\n StorageService.cache[key] = null;\r\n localStorage.removeItem(key);\r\n StorageService.deleteCookie(key);\r\n }\r\n\r\n public static deleteAll() {\r\n StorageService.cache = {};\r\n const cookies = document.cookie.split(';');\r\n\r\n cookies.forEach((cookie) => {\r\n const equalsIndex = cookie.indexOf('=');\r\n const key = equalsIndex > -1 ? cookie.substring(0, equalsIndex) : cookie;\r\n this.deleteCookie(key);\r\n });\r\n }\r\n\r\n private static deleteCookie(key: string): void {\r\n document.cookie = key + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';\r\n }\r\n\r\n private static setCookie(cname: string, cvalue: string, exdays: number = 100) {\r\n StorageService.deleteCookie(cname);\r\n\r\n const date = new Date();\r\n date.setTime(date.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n const expires = 'expires=' + date.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n }\r\n\r\n private static getCookie(cname: string): string {\r\n const name = cname + '=';\r\n const ca = document.cookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let cookieChar = ca[i];\r\n while (cookieChar.charAt(0) === ' ') {\r\n cookieChar = cookieChar.substring(1);\r\n }\r\n if (cookieChar.indexOf(name) === 0) {\r\n return cookieChar.substring(name.length, cookieChar.length);\r\n }\r\n }\r\n return '';\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\nimport { getMongoMethodsDisplayedNamesMap } from 'herum-shared/constants';\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilsService {\n\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\n\n getDisplayedNameForMongoMethodByUserActivity(urlRequest: string): string | undefined {\n let mongoMethodDisplayedName!: string | undefined;\n\n const mongoMethodsDisplayedNamesMap = getMongoMethodsDisplayedNamesMap(\n this.environmentConfig?.mongoUpdates,\n this.environmentConfig?.authenticationPaths\n );\n\n Object.entries(mongoMethodsDisplayedNamesMap).forEach(([mongoMethod, displayedName]) => {\n const urlParts: string[] = urlRequest?.split('/');\n const matchedMethod: string | undefined = urlParts?.find(urlPart => urlPart === mongoMethod);\n\n if (matchedMethod)\n mongoMethodDisplayedName = displayedName;\n });\n\n return mongoMethodDisplayedName;\n }\n\n fetchFiles(fileId: string, resourceType: string, bucket?: string): Promise<Response> {\n if (!fileId)\n return Promise.reject();\n\n const bucketPath = bucket ? bucket : this.environmentConfig?.buckets[resourceType];\n\n if (fileId && fileId[0] != '/' && bucketPath[bucketPath.length - 1] != '/') fileId = \"/\" + fileId;\n\n const path = this.environmentConfig?.environment?.s3ServerPath + bucketPath + fileId;\n return fetch(path);\n }\n\n async initAudioFile(fileId: string, bucketName?: string, signal?: AbortSignal) {\n const audioBucketName = bucketName ? (bucketName + \"/\") : this.environmentConfig?.buckets.Audio;\n\n return fetch(this.environmentConfig?.environment?.s3ServerPath + audioBucketName + fileId, { signal: signal })\n .then(async (response) => {\n const arrayBuffer = await response.arrayBuffer();\n if (arrayBuffer.byteLength === 0) {\n const blob = await response.blob();\n const reader = new FileReader();\n reader.onload = () => {\n const arrayBuffer = reader.result as ArrayBuffer;\n const file = new File([arrayBuffer], fileId, {\n type: 'audio/mp3',\n });\n return file;\n };\n reader.readAsArrayBuffer(blob);\n } else {\n const file = new File([arrayBuffer], fileId, {\n type: 'audio/mpeg',\n });\n return file;\n }\n })\n }\n}\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-spinner',\r\n templateUrl: './herum-spinner.component.html',\r\n styleUrls: ['./herum-spinner.component.scss']\r\n})\r\nexport class HerumSpinnerComponent {\r\n\r\n @Input() size: 'default-size' = 'default-size';\r\n @Input() borderColor: 'default-border-color' = 'default-border-color';\r\n @Input() borderWidth: 'default-border-width' = 'default-border-width';\r\n @Input() borderTopColor: 'default-border-top-color' = 'default-border-top-color';\r\n @Input() shape: 'circle' = 'circle';\r\n}","<div class=\"spinner\" [ngClass]=\"[size,borderColor, borderTopColor,borderWidth,shape]\"></div>","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'audio-slider',\r\n templateUrl: './audio-slider.component.html',\r\n styleUrls: ['./audio-slider.component.scss']\r\n})\r\nexport class AudioSliderComponent {\r\n\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLInputElement>;\r\n @Input() sliderValue: number = 100;\r\n @Input() maxValue: number = 100;\r\n @Input() color: string = \"#2D7ABE\";\r\n @Input() id: string = 'range';\r\n @Output() sliderChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n ngAfterViewInit(): void {\r\n this.updateSliderBackground();\r\n }\r\n\r\n updateSliderBackground(): void {\r\n const progress = (this.sliderValue / this.maxValue) * 100;\r\n const slider = document.getElementById(this.id) as HTMLInputElement;\r\n if (slider) {\r\n slider.style.background = `linear-gradient(to right, ${this.color} ${progress}%, #ccc ${progress}%)`;\r\n }\r\n this.sliderChange.emit(this.sliderValue);\r\n }\r\n}","<div class=\"wrapper\">\r\n <div class=\"range\">\r\n <input [style.background]=\"'linear-gradient(to right, #f50 100%, #ccc 0%);'\" type=\"range\" [id]=\"id\" [min]=\"0\" [max]=\"maxValue\" [value]=\"100\" [(ngModel)]=\"sliderValue\"\r\n (input)=\"updateSliderBackground()\" />\r\n </div>\r\n</div>","import { Component, OnInit, ElementRef, ViewChild, Input, Output, EventEmitter, HostListener, SimpleChanges, Inject } from '@angular/core';\nimport { GlobalKeyboardListenerService, KeyPressService } from '../../services';\nimport { UtilsService } from '../../static-services';\nimport { AudioVisualizationService } from './audio-visualization.service';\r\nimport { keyboardAsciiCodes, regexExpressions } from 'herum-shared/constants';\r\nimport { speedOptions } from '../herum-video-player/video-speed-options';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { SYSTEM_AUDIO_VISUAL_CONFIGURATION } from 'herum-shared/tokens';\r\nimport { AudioVisualConfiguration, MediaSettings } from 'herum-shared/herum-types';\r\nimport { IMediaPlayer } from 'herum-shared/herum-types';\r\n\r\nconst id: string = 'id';\r\n\r\nconst ended: string = 'ended';\r\nconst loadeddata: string = 'loadeddata';\r\nconst timeupdate: string = 'timeupdate';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-audio-player',\r\n templateUrl: './audio-player.component.html',\r\n styleUrls: ['./audio-player.component.scss']\r\n})\r\nexport class AudioPlayerComponent implements OnInit, IMediaPlayer {\r\n\r\n @Input() showVolumeSliders: boolean = true;\r\n @Input() isPreview: boolean = false;\r\n @Input() getTimeUpdate: number = 0;\r\n @Input() playbackSpeed: number = 1;\r\n @Input() isBlock: boolean = false;\r\n @Input() currentTime: number = 0;\r\n @Input() isAudioPlaying = false;\r\n @Input() width: number = 900;\r\n @Input() id: string;\r\n @Input() audioFile: File;\r\n @Input() mediaSettings: MediaSettings;\r\n @Input() bucketName: string;\r\n\r\n @Output() periodicCurrentTime = new EventEmitter<number>();\r\n @Output() isLoadingChange = new EventEmitter<boolean>();\r\n @Output() timingUpdateByRequest = new EventEmitter();\r\n @Output() mediaSettingsUpdate = new EventEmitter<MediaSettings>();\r\n\r\n @ViewChild('audioCanvas', { static: false }) audioCanvas!: ElementRef<HTMLCanvasElement>;\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLInputElement>;\r\n @ViewChild('audioContainer', { static: false }) audioContainer!: ElementRef;\r\n\r\n sourceNode!: MediaElementAudioSourceNode;\r\n audioElement!: HTMLAudioElement;\r\n audioContext!: AudioContext;\r\n audioBuffer!: AudioBuffer;\r\n rightGainNode!: GainNode;\r\n leftGainNode!: GainNode;\r\n\r\n isGlobalKeyboardBindingActive: boolean = false;\r\n isFileLoaded: boolean = false;\r\n isLoading: boolean = false;\r\n\r\n sliderValue: number = 0;\r\n errorMessage: string = \"\";\r\n rightVolume: number = 1;\r\n leftVolume: number = 1;\r\n duration: number = 0;\r\n\r\n eventListenersMap = {\r\n ended: () => this.isAudioPlaying = false,\r\n loadeddata: () => this.audioLoadeddata(),\r\n timeupdate: () => this.updateWaveformProgress()\r\n };\r\n\r\n destroySubject$ = new Subject<null>();\n\n constructor(private visualizationService: AudioVisualizationService, private globalKeyboardListener: GlobalKeyboardListenerService,\n private keyPressService: KeyPressService, private utilsService: UtilsService,\n @Inject(SYSTEM_AUDIO_VISUAL_CONFIGURATION) private audioVisualConfiguration: AudioVisualConfiguration) { }\n\r\n async ngOnChanges(changes: SimpleChanges) {\r\n if (changes['mediaSettings']?.currentValue) {\r\n if (this.mediaSettings.id && this.mediaSettings.id !== this.audioFile?.name || this.mediaSettings.id && !this.audioFile) {\r\n this.id = this.mediaSettings.id;\r\n\r\n this.resetAudio();\r\n this.audioFile = await this.utilsService.initAudioFile(this.mediaSettings.id, this.bucketName);\n await this.loadFile(this.audioFile);\r\n }\r\n\r\n this.syncStateBasedOnMediaSettingsInput();\r\n }\r\n\r\n if (changes[id]?.currentValue !== changes[id]?.previousValue) {\r\n this.resetAudio();\r\n this.audioFile = await this.utilsService.initAudioFile(this.id, this.bucketName);\n await this.loadFile(this.audioFile);\r\n }\r\n\r\n if (changes['audioFile']?.currentValue)\r\n await this.loadFile(this.audioFile);\r\n\r\n this.resizeCanvas();\r\n\r\n if (changes.getTimeUpdate && !changes.getTimeUpdate.firstChange)\r\n this.timingUpdateByRequest.emit(this.currentTime);\r\n }\r\n\r\n private syncStateBasedOnMediaSettingsInput() {\r\n this.isAudioPlaying = this.mediaSettings.isPlaying;\r\n\r\n if (this.audioElement) {\r\n this.isAudioPlaying ? this.playAudio() : this.pauseAudio();\r\n this.audioElement.currentTime = this.currentTime = this.mediaSettings.currentTime;\r\n\r\n this.renderWaveform();\r\n this.updatePlaybackSpeed(this.mediaSettings.playbackSpeed);\r\n }\r\n }\r\n\r\n private resetAudio() {\r\n this.currentTime = 0;\r\n this.isAudioPlaying = false;\r\n this.playbackSpeed = 1;\r\n\r\n if (this.audioElement)\r\n this.audioElement.currentTime = 0\r\n }\r\n\r\n ngOnInit(): void {\r\n this.globalKeyboardListenerInitiation();\r\n\r\n this.audioContext = new AudioContext();\r\n this.updateSliderBackground();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.resizeCanvas();\r\n }\r\n\r\n private globalKeyboardListenerInitiation() {\r\n this.globalKeyboardListener.initGlobalSocket();\r\n this.globalKeyboardListener.globalKeyboardEvents$\r\n .pipe(takeUntil(this.destroySubject$))\r\n .subscribe(globalKeyboardEvent => {\r\n this.isGlobalKeyboardBindingActive = true;\r\n this.keysBinding(this.formatCode(globalKeyboardEvent.name));\r\n })\r\n }\r\n\r\n private resizeCanvas(): void {\r\n const canvas = this.audioCanvas?.nativeElement;\r\n if (!canvas) return;\r\n\r\n const parentEl = canvas.parentElement;\r\n if (!parentEl) return;\r\n\r\n const parentWidth = parentEl.clientWidth;\r\n canvas.width = parentWidth;\r\n canvas.height = 116;\r\n\r\n if (this.isFileLoaded)\r\n this.renderWaveform();\r\n }\r\n\r\n private async loadFile(file: File) {\r\n this.errorMessage = \"\";\r\n if (!file) return;\r\n\r\n this.isLoading = true;\r\n\r\n this.isLoadingChange.emit(this.isLoading);\r\n\r\n if (this.audioElement) this.audioElement.currentTime = this.currentTime;\r\n\r\n this.solidPauseAudio(this.isAudioPlaying);\r\n\r\n if (this.audioElement)\r\n this.audioElement.pause();\r\n\r\n if (this.audioContext)\r\n this.audioContext.suspend();\r\n\r\n const arrayBuffer = await file.arrayBuffer();\r\n\r\n try {\r\n await this.initAudioBuffer(arrayBuffer);\r\n this.initializeAudioElement(file);\r\n this.setupAudioNodes();\r\n this.renderWaveform();\r\n }\r\n catch (error) {\r\n console.error(\"unable to load audio\", error);\r\n this.errorMessage = \"לא ניתן לטעון את הקובץ \" + file.name;\r\n }\r\n\r\n this.isLoading = false;\r\n this.isLoadingChange.emit(this.isLoading);\r\n }\r\n\r\n private async initAudioBuffer(arrayBuffer: ArrayBuffer): Promise<void> {\r\n this.audioBuffer = await this.audioContext.decodeAudioData(arrayBuffer);\r\n this.duration = this.audioBuffer.duration;\r\n this.isFileLoaded = true;\r\n }\r\n\r\n private initializeAudioElement(file: File): void {\r\n this.pauseAudio();\r\n\r\n this.removeAudioElementEventListeners();\r\n\r\n this.audioElement = new Audio(URL.createObjectURL(file));\r\n this.audioElement.crossOrigin = 'anonymous';\r\n\r\n this.audioElement.addEventListener(ended, this.eventListenersMap[ended]);\r\n this.audioElement.addEventListener(loadeddata, this.eventListenersMap[loadeddata]);\r\n }\r\n\r\n private audioLoadeddata() {\r\n this.audioElement.currentTime = this.currentTime;\r\n this.isAudioPlaying ? this.playAudio() : this.pauseAudio();\r\n this.updatePlaybackSpeed(this.playbackSpeed);\r\n }\r\n\r\n private setupAudioNodes(): void {\r\n const channelsCount = this.audioBuffer.numberOfChannels ?? 1;\r\n\r\n this.sourceNode = this.audioContext.createMediaElementSource(this.audioElement);\r\n\r\n const splitterNode = this.audioContext.createChannelSplitter(Math.max(2,channelsCount));\r\n\r\n const mergerNode = this.audioContext.createChannelMerger(2);\r\n\r\n this.leftGainNode = this.audioContext.createGain();\r\n this.rightGainNode = this.audioContext.createGain();\r\n\r\n this.sourceNode.connect(splitterNode);\r\n\r\n if(channelsCount==1){\r\n splitterNode.connect(this.leftGainNode, 0);\r\n splitterNode.connect(this.rightGainNode, 0);\r\n }\r\n else {\r\n splitterNode.connect(this.leftGainNode, 0);\r\n splitterNode.connect(this.rightGainNode, 1);\r\n }\r\n\r\n this.rightGainNode.connect(mergerNode, 0, 1);\r\n this.leftGainNode.connect(mergerNode, 0, 0);\r\n\r\n mergerNode.connect(this.audioContext.destination);\r\n\r\n this._updateVolume();\r\n this.audioElement.addEventListener(timeupdate, this.eventListenersMap[timeupdate]);\r\n }\r\n\r\n private updateWaveformProgress(): void {\r\n this.periodicCurrentTime.emit(this.currentTime)\r\n\r\n this.currentTime = this.audioElement.currentTime;\r\n this.renderWaveform();\r\n }\r\n\r\n private formatCode(code: string) {\r\n return code.toLowerCase().replace(regexExpressions.removeSpacesRegex, \"\");\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize() {\r\n this.resizeCanvas();\r\n }\r\n\r\n @HostListener('document:keyup', ['$event'])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n if (event.code.toLowerCase().includes(\"numpad\"))\r\n event.preventDefault();\r\n\r\n if (!this.isGlobalKeyboardBindingActive)\r\n this.keysBinding(this.formatCode(event.code));\r\n }\r\n\r\n private keysBinding(keyName: string) {\r\n this.keysBindingToFunction[keyName]?.function();\r\n }\r\n\r\n get keysBindingToFunction() {\r\n return {\r\n numpad0: { keyNumber: keyboardAsciiCodes.insert, function: () => this._onTogglePlay() },\r\n numpad1: { keyNumber: keyboardAsciiCodes.end, function: () => this._updatePlaybackSpeed(Number((this.playbackSpeed - 0.1).toFixed(1))) },\r\n numpad3: { keyNumber: keyboardAsciiCodes.pageDown, function: () => this._updatePlaybackSpeed(Number((this.playbackSpeed + 0.1).toFixed(1))) },\r\n numpad2: { keyNumber: keyboardAsciiCodes.arrowDown, function: () => this._updatePlaybackSpeed(1) },\r\n numpad4: { keyNumber: keyboardAsciiCodes.left, function: () => this._skipBackward(3) },\r\n numpad5: { keyNumber: keyboardAsciiCodes.clear, function: () => this._skipBackward(0.7) },\r\n numpad6: { keyNumber: keyboardAsciiCodes.right, function: () => this._skipForward(3) },\r\n numpad7: { keyNumber: keyboardAsciiCodes.home, function: () => this._skipBackward(10) },\r\n numpad9: { keyNumber: keyboardAsciiCodes.pageUp, function: () => this._skipForward(10) }\r\n }\r\n }\r\n\r\n _updateVolume(): void {\r\n if (this.leftGainNode)\r\n this.leftGainNode.gain.value = this.leftVolume;\r\n\r\n if (this.rightGainNode)\r\n this.rightGainNode.gain.value = this.rightVolume;\r\n }\r\n\r\n _onTogglePlay(): void {\r\n if (this.isBlock || this.isLoading) return;\r\n\r\n this.isAudioPlaying ? this.pauseAudio() : this.playAudio();\r\n }\r\n\r\n _skipForward(seconds: number = this.audioVisualConfiguration.defaultSecondsSkip): void {\r\n if (this.isBlock || this.isLoading) return;\r\n\r\n if (this.audioElement) {\r\n const newTime = this.audioElement.currentTime + seconds;\r\n this.audioElement.currentTime = Math.min(newTime ?? 0, this.audioElement.duration ?? 0);\r\n\r\n this.currentTime = this.audioElement.currentTime;\r\n this.emitMediaSettingsUpdate();\r\n\r\n } else {\r\n console.warn('Audio element is not initialized.');\r\n }\r\n }\r\n\r\n private updateSliderBackground(): void {\r\n const progress = (this.sliderValue / this.audioVisualConfiguration.maxValue) * 100;\r\n const slider = document.getElementById('range') as HTMLInputElement;\r\n if (slider)\r\n slider.style.background = `linear-gradient(to right, #f50 ${progress}%, #ccc ${progress}%)`;\r\n }\r\n\r\n _skipBackward(seconds: number = this.audioVisualConfiguration.defaultSecondsSkip): void {\r\n if (this.isBlock || this.isLoading) return;\r\n\r\n if (this.audioElement) {\r\n const newTime = this.audioElement.currentTime - seconds;\r\n this.audioElement.currentTime = Math.max(newTime, 0);\r\n this.currentTime = this.audioElement.currentTime;\r\n this.emitMediaSettingsUpdate();\r\n } else\r\n console.warn('Audio element is not initialized.');\r\n }\r\n\r\n private playAudio(): void {\r\n if (this.audioContext.state === 'suspended') {\r\n this.audioElement.currentTime = this.currentTime;\r\n this.audioContext.resume().then(() => this.startAudioPlayback());\r\n } else\r\n this.startAudioPlayback();\r\n }\r\n\r\n private startAudioPlayback(): void {\r\n this.audioElement.play()\r\n .then(() => {\r\n this.isAudioPlaying = true;\r\n this.emitMediaSettingsUpdate();\r\n })\r\n .catch((error) => console.error('Error during audio playback:', error));\r\n }\r\n\r\n private pauseAudio(): void {\r\n this.solidPauseAudio();\r\n this.emitMediaSettingsUpdate();\r\n }\r\n\r\n private solidPauseAudio(isAudioPlaying: boolean = false) {\r\n if (this.audioElement)\r\n this.audioElement.pause();\r\n\r\n if (this.audioContext)\r\n this.audioContext.suspend();\r\n\r\n this.isAudioPlaying = isAudioPlaying;\r\n }\r\n\r\n _onCanvasClick(event: MouseEvent): void {\r\n if (this.isBlock || this.isLoading) return;\r\n\r\n const canvas = this.audioCanvas.nativeElement;\r\n const rect = canvas.getBoundingClientRect();\r\n const clickX = event.clientX - rect.left;\r\n const clickRatio = clickX / canvas.width;\r\n\r\n this.currentTime = clickRatio * this.duration;\r\n this.audioElement.currentTime = this.currentTime;\r\n\r\n this.emitMediaSettingsUpdate();\r\n this.renderWaveform();\r\n }\r\n\r\n renderWaveform(): void {\r\n const canvas = this.audioCanvas?.nativeElement;\r\n if (!canvas) return;\r\n\r\n const canvasCtx = canvas.getContext('2d');\r\n if (!canvasCtx) return;\r\n\r\n this.visualizationService.clearCanvas(canvasCtx, canvas);\r\n this.visualizationService.drawWaveform(canvasCtx, canvas, this.audioBuffer, this.currentTime, this.duration);\r\n this.visualizationService.drawTimeLabels(canvasCtx, canvas, this.duration);\r\n this.visualizationService.drawCurrentTimeLine(canvasCtx, canvas, this.currentTime, this.duration);\r\n }\r\n\r\n _updatePlaybackSpeed(selectedSpeed?: number): void {\r\n if (this.isBlock || this.isLoading) return;\r\n\r\n this.updatePlaybackSpeed(selectedSpeed);\r\n }\r\n\r\n private updatePlaybackSpeed(selectedSpeed?: number): void {\r\n if (selectedSpeed <= Math.max(...speedOptions) && selectedSpeed >= Math.min(...speedOptions))\r\n\r\n if (selectedSpeed) this.playbackSpeed = selectedSpeed;\r\n\r\n if (this.audioElement) this.audioElement.playbackRate = this.playbackSpeed;\r\n else console.warn('Audio element is not initialized.');\r\n\r\n this.emitMediaSettingsUpdate();\r\n }\r\n\r\n private emitMediaSettingsUpdate() {\r\n this.mediaSettingsUpdate.emit({\r\n currentTime: this.currentTime,\r\n isPlaying: this.isAudioPlaying,\r\n playbackSpeed: this.playbackSpeed,\r\n id: this.id\r\n })\r\n }\r\n\r\n private removeAudioElementEventListeners() {\r\n if (!this.audioElement)\r\n return;\r\n\r\n Object.keys(this.eventListenersMap).forEach(key => this.audioElement.removeEventListener(key, this.eventListenersMap[key]));\r\n }\r\n\r\n get speedOptions() {\r\n return speedOptions;\r\n }\r\n\r\n get currentTimeLabel() {\r\n return this.visualizationService.formatTime(this.audioBuffer?.duration) + \" / \" +\r\n this.visualizationService.formatTime(this.currentTime)\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n\r\n this.pauseAudio();\r\n this.removeAudioElementEventListeners();\r\n }\r\n}\r\n","<div class=\"audio-container\" #audioContainer>\r\n <p class=\"current-time\" *ngIf=\"!errorMessage\">{{ currentTimeLabel }}</p>\r\n\r\n <p *ngIf=\"errorMessage\" class=\"m-0 d-flex gap-2 align-items-center\">\r\n <img src=\"/assets/college/learningArea/error.svg\">\r\n {{ errorMessage }}\r\n </p>\r\n\r\n <div class=\"audio-loader-container\" [userAction]=\"'currentTime: ' + currentTime\">\r\n <canvas [class.transparent]=\"isLoading\" #audioCanvas (click)=\"_onCanvasClick($event)\"> </canvas>\r\n </div>\r\n\r\n <div class=\"audio-controls\">\r\n <div *ngIf=\"showVolumeSliders\" class=\"volume-container\">\r\n <div class=\"right slider-container\">\r\n <label>R</label>\r\n <audio-slider color=\"#3B2DBE\" [id]=\"'right'\" userAction\r\n (sliderChange)=\"rightVolume=$event/100; _updateVolume()\">\r\n </audio-slider>\r\n </div>\r\n\r\n <div class=\"left slider-container\">\r\n <label>L</label>\r\n <audio-slider color=\"#2D7ABE\" [id]=\"'left'\" userAction\r\n (sliderChange)=\"leftVolume=$event/100; _updateVolume()\">\r\n </audio-slider>\r\n </div>\r\n </div>\r\n\r\n <button class=\"control-button\" [userAction]=\"'currentTime: ' + currentTime\" (click)=\"_skipForward(15)\" userAction>\r\n <img src=\"assets/shared/audio-images/next15.svg\" alt=\"Fast Forward\" />\r\n </button>\r\n\r\n <button class=\"control-button play-button\" [userAction]=\"isAudioPlaying ? 'play' : 'pause'\"\r\n (click)=\"_onTogglePlay()\">\r\n <ng-container *ngIf=\"!isLoading\">\r\n <img *ngIf=\"!isBlock\"\r\n [src]=\"isAudioPlaying ? 'assets/shared/audio-images/pause.svg' : 'assets/shared/audio-images/play.svg'\"\r\n alt=\"Play/Pause\" />\r\n <img *ngIf=\"isBlock\"\r\n [src]=\"isAudioPlaying ? 'assets/shared/audio-images/gray-pause.svg' : 'assets/shared/audio-images/gray-play.svg'\"\r\n alt=\"Play/Pause\" />\r\n </ng-container>\r\n <herum-spinner *ngIf=\"isLoading\"></herum-spinner>\r\n </button>\r\n\r\n <button class=\"control-button\" (click)=\"_skipBackward(15)\" [userAction]=\"'currentTime: ' + currentTime\">\r\n <img src=\"assets/shared/audio-images/previous15.svg\" alt=\"Rewind\" />\r\n </button>\r\n\r\n <div class=\"speed-control\">\r\n <herum-video-select class=\"video-speed-select\" userAction [options]=\"speedOptions\"\r\n [currentVideoSpeed]=\"playbackSpeed\" (selectedOptionEmitter)=\"_updatePlaybackSpeed($event)\">\r\n </herum-video-select>\r\n </div>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output, forwardRef, HostListener, ViewChild, ElementRef, } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { defaultPlaceholder, keyboardAsciiCodes, svgsStrings } from 'herum-shared/constants';\r\n\r\nconst CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumTextAreaComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-text-area',\r\n templateUrl: './herum-text-area.component.html',\r\n styleUrls: [\r\n './herum-text-area.component.scss',\r\n '../../assets/shared/atoms/inputs/herum-inputs.component.scss'\r\n ],\r\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class HerumTextAreaComponent implements ControlValueAccessor {\r\n\r\n @Input() placeholder: string = defaultPlaceholder;\r\n @Input() disabled: boolean = false;\r\n @Input() formControlName: string = '';\r\n @Input() isValid: boolean = true;\r\n @Input() isLoading: boolean = false;\r\n @Input() errorMsg: string = '';\r\n @Input() showErrorMsgGap: boolean = true;\r\n @Input() id: string = '';\r\n @Input() preventMacroKeysPressEvent: number[] = [keyboardAsciiCodes.space, keyboardAsciiCodes.right, keyboardAsciiCodes.left];\r\n @Input() heightMode: 'regular' | 'max' = 'regular'\r\n @Input() fontSize: number;\r\n @Input() inputValue: string = '';\r\n @Input() maxLength: number;\r\n\r\n @Output() inputValueEmitter = new EventEmitter<string>();\r\n\r\n @HostListener('keypress', ['$event'])\r\n onKeyPress(event: KeyboardEvent) {\r\n if ((event.target as HTMLInputElement).alt == 'number' && !(event.keyCode >= 48 && event.keyCode <= 57)) {\r\n event.preventDefault();\r\n }\r\n }\r\n @ViewChild('textarea') textarea!: ElementRef;\r\n\r\n touched: boolean = false;\r\n isBlurred: boolean = false;\r\n\r\n ngAfterViewInit() {\r\n if (this.fontSize)\r\n this.textarea.nativeElement.style.fontSize = `${this.fontSize}px`;\r\n }\r\n\r\n _onClearTextArea() {\r\n this.inputValue = '';\r\n this.onChange(this.inputValue);\r\n }\r\n\r\n _onInput(event: string) {\r\n this.onChange(this.inputValue);\r\n this.inputValueEmitter.emit(this.inputValue);\r\n this.touched = true;\r\n }\r\n\r\n onChange: (value: any) => void = () => { };\r\n onTouched: () => void = () => { };\r\n\r\n writeValue(value: any): void {\r\n this.inputValue = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n showErrors() { }\r\n\r\n setBlurred() {\r\n this.isBlurred = true;\r\n }\r\n\r\n get xSvg() {\r\n return svgsStrings.X\r\n }\r\n}","<div class=\"input-container custom-resizer\" [ngClass]=\"heightMode\">\r\n <textarea #textarea class=\"input-field no-resizer min-height-input w-100\"\r\n [ngClass]=\"{'error-input':!isValid && touched && isBlurred}\" [placeholder]=\"placeholder\" [disabled]=\"disabled\" [maxlength]=\"maxLength\"\r\n [(ngModel)]=\"inputValue\" [id]=\"id ? id : formControlName\"\r\n [attr.prevent-macro-keys-press-event]=\"preventMacroKeysPressEvent\" (ngModelChange)=\"_onInput($event)\"\r\n (blur)=\"setBlurred()\">\r\n </textarea>\r\n\r\n <span class=\"icon clickable\" *ngIf=\"inputValue && !disabled && !isLoading\" (click)=\"_onClearTextArea()\">\r\n <span class=\"small-icon\" [innerHTML]=\"xSvg | safeHtml\"></span>\r\n </span>\r\n\r\n <herum-spinner class=\"small-icon\" *ngIf=\"isLoading\"></herum-spinner>\r\n</div>\r\n\r\n<ng-container *ngIf=\"!isValid && touched && isBlurred\">\r\n <label class=\"error-msg right\" *ngIf=\"showErrorMsgGap\">\r\n {{ errorMsg }}\r\n </label>\r\n</ng-container>","import { Component, AfterViewInit, ElementRef, ViewChild, ViewEncapsulation, Input, SimpleChanges, OnChanges, Output, EventEmitter, } from '@angular/core';\r\nimport { UserPreview } from 'herum-shared/herum-types';\r\nimport { TrackTextChangesService } from 'herum-shared/services';\r\nimport { svgsStrings } from 'herum-shared/constants';\r\nimport { TextChange, TextChangeStyle } from 'herum-shared/herum-types';\r\nimport { isTruncatedTitleElement } from 'herum-shared/utils';\r\n\r\nconst additionTagName: string = 'ins';\r\nconst editorContainerElementId: string = 'editor-container';\r\n\r\nconst mouseEnterHandlerKey: string = 'mouseEnterHandler';\r\nconst mouseLeaveHandlerKey: string = 'mouseLeaveHandler';\r\nconst mouseEnter: string = 'mouseenter';\r\nconst mouseLeave: string = 'mouseleave';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'track-text-changes',\r\n templateUrl: './track-text-changes.component.html',\r\n styleUrls: ['./track-text-changes.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TrackTextChangesComponent implements AfterViewInit, OnChanges {\r\n\r\n @Input() changes: TextChange[] = [];\r\n @Input() selectedChange: TextChange;\r\n\r\n @Input() currentUser: UserPreview;\r\n @Input() baseContent = '';\r\n @Input() isReadOnly = false;\r\n @Input() fontSize: number;\r\n @Input() showComments: boolean = true;\r\n\r\n @Output() changesEmitter = new EventEmitter<TextChange[]>();\r\n\r\n @ViewChild('editor') editor!: ElementRef;\r\n\r\n trackChangesEnabled = true;\r\n currentSelection: { range: Range; text: string } | null = null;\r\n showTooltip = false;\r\n showNotAllowedActionTooltip = false;\r\n showCommentBox = false;\r\n editCommentBox = false;\r\n tooltipPosition = { top: 0, left: 0 };\r\n commentBoxPosition = { top: 0, left: 0 };\r\n showNotAllowedActionTooltipPosition = { top: 0, left: 0 };\r\n newCommentText = '';\r\n isCursorInsideTooltip: boolean = false;\r\n isCursorInsideMarker: boolean = false;\r\n private editingCommentElement: HTMLElement | null = null;\r\n markerTimeoutId: any;\r\n\r\n textChangeStyle: TextChangeStyle;\r\n commentTextHoverColor: string;\r\n // #endregion\r\n\r\n // #region Lifecycle Methods\r\n constructor(private trackTextChangesService: TrackTextChangesService) {\r\n this.textChangeStyle = this.trackTextChangesService.getStyle();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!changes[\"changes\"]?.currentValue && !changes[\"selectedChange\"])\r\n this.changes = []\r\n else\r\n this.changes = this.changes?.filter(change => change.type != \"generalNote\")\r\n\r\n this.applyChangesToContent();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.applyChangesToContent();\r\n\r\n if (this.fontSize)\r\n this.editor.nativeElement.style.fontSize = `${this.fontSize}px`;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Event Handlers\r\n\r\n _onKeyDown(event: KeyboardEvent): void {\r\n this.showTooltip = false;\r\n\r\n if (event.code.toLowerCase().includes(\"numpad\")) return;\r\n\r\n if (event.key == 'Enter') event.preventDefault();\r\n\r\n const selection = window.getSelection();\r\n\r\n if (!selection || !selection.rangeCount) { return; }\r\n\r\n const isDeletionKey = event.key === 'Backspace' || event.key === 'Delete';\r\n const isSingleCharacterKey = event.key.length === 1;\r\n\r\n if (isDeletionKey || isSingleCharacterKey) {\r\n event.preventDefault();\r\n\r\n if (!this.isAdditionKeyPressValid(selection))\r\n return;\r\n\r\n const range = selection.getRangeAt(0);\r\n const isInsideInsTag = this.isInsideTag(range.startContainer, additionTagName);\r\n\r\n if (isInsideInsTag || this.isUpdateAdditionWhileSelectionIsNextToInsTag(selection)) {\r\n this.updateAddition(event, selection, isDeletionKey, isInsideInsTag);\r\n return;\r\n }\r\n\r\n if (isDeletionKey) {\r\n if (!this.isValidSelection(selection))\r\n return;\r\n\r\n this.handleDeletion(selection);\r\n }\r\n else {\r\n this.insertNewAddition(selection, event.key);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * handles text selection to show the tooltip for comments.\r\n * @param event mouse event from the text editor.\r\n */\r\n _onTextSelection(): void {\r\n if (this.showTooltip) {\r\n this.showTooltip = false;\r\n return;\r\n }\r\n\r\n const selection = window.getSelection();\r\n\r\n if (!selection)\r\n return;\r\n\r\n if (!this.isValidSelection(selection)) {\r\n this.handleShowNotAllowedActionTooltip(selection);\r\n return;\r\n }\r\n else\r\n this.showNotAllowedActionTooltip = false;\r\n\r\n if (!selection.isCollapsed) {\r\n this.tooltipPosition = this.getSelectionTooltipPosition(selection);\r\n this.showTooltip = true;\r\n this.showNotAllowedActionTooltip = this.showCommentBox = false;\r\n }\r\n else\r\n this.showTooltip = false;\r\n }\r\n\r\n private isAdditionKeyPressValid(selection: Selection) {\r\n const selectionType = selection?.anchorNode?.parentElement?.attributes['type']?.value;\r\n const keyPressIncludesTextChangeDeletionOrCommentType = ['deletion', 'comment'].includes(selectionType);\r\n\r\n if (keyPressIncludesTextChangeDeletionOrCommentType) {\r\n this.handleShowNotAllowedActionTooltip(selection);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private handleShowNotAllowedActionTooltip(selection: Selection) {\r\n this.showNotAllowedActionTooltip = true;\r\n this.showTooltip = this.showCommentBox = false;\r\n this.showNotAllowedActionTooltipPosition = this.getSelectionTooltipPosition(selection);\r\n }\r\n\r\n private isValidSelection(selection: Selection) {\r\n const selectionBreaksNodes = selection.anchorNode !== selection.focusNode;\r\n const selectionType = selection?.anchorNode?.parentElement?.attributes['type']?.value;\r\n let selectionIncludesTextChangeType = false;\r\n\r\n if (selectionType)\r\n selectionIncludesTextChangeType = ['addition', 'deletion', 'comment'].includes(selectionType);\r\n\r\n if (selectionType === 'addition' && !selection.toString().length)\r\n selectionIncludesTextChangeType = false;\r\n\r\n return !selectionBreaksNodes && !selectionIncludesTextChangeType;\r\n }\r\n\r\n private getSelectionTooltipPosition(selection: Selection) {\r\n const range = selection.getRangeAt(0);\r\n\r\n return this.getTooltipPosition(range);\r\n }\r\n\r\n private getTooltipPosition(element: Range | HTMLElement) {\r\n const clientRect = element.getBoundingClientRect();\r\n\r\n return {\r\n top: clientRect.top - 40 + window.scrollY,\r\n left: clientRect.left + clientRect.width / 2 + window.scrollX,\r\n };\r\n }\r\n\r\n private setElementPosition(element: HTMLElement, elementTarget: HTMLElement) {\r\n const clientRect = elementTarget.getBoundingClientRect();\r\n const elementHeight = 56;\r\n const rowHeight = 18;\r\n\r\n let { top, left } = this.getTooltipPosition(elementTarget);\r\n element.style.top = `${top + elementHeight + clientRect.height - rowHeight}px`;\r\n element.style.left = `${left - clientRect.width / 2 + window.scrollX}px`;\r\n }\r\n\r\n _onDropTextSelection(event: MouseEvent) {\r\n event.preventDefault();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Change Application\r\n\r\n /**\r\n * Applies external changes to the base content and updates the editor.\r\n */\r\n private applyChangesToContent(): void {\r\n if (!this.editor || !this.editor.nativeElement) { return; }\r\n\r\n this.editor.nativeElement.innerHTML = this.baseContent ?? '';\r\n\r\n if (!this.changes || !this.changes.length) { return; }\r\n\r\n let content = this.baseContent ?? '';\r\n\r\n const sortedChanges = this.changes.sort((a, b) => b.startOffset - a.startOffset);\r\n\r\n this.sortAdjacentChangesWhichOneOfThemIsAdditionType(sortedChanges);\r\n\r\n sortedChanges.forEach(change => {\r\n switch (change.type) {\r\n case 'addition':\r\n content = this.applyAdditionChange(content, change);\r\n break;\r\n case 'deletion':\r\n content = this.applyDeletionChange(content, change);\r\n break;\r\n case 'comment':\r\n content = this.applyCommentChange(content, change);\r\n break;\r\n }\r\n });\r\n\r\n this.editor.nativeElement.innerHTML = content;\r\n this.rebindCommentTooltips();\r\n }\r\n\r\n private sortAdjacentChangesWhichOneOfThemIsAdditionType(changes: TextChange[]) {\r\n changes.sort((a, b) => {\r\n const areAdjacentChanges = a.startOffset === b.startOffset;\r\n\r\n if (!areAdjacentChanges)\r\n return 0;\r\n\r\n if (a.type === 'addition' && b.type !== 'addition')\r\n return 1;\r\n\r\n if (a.type !== 'addition' && b.type === 'addition')\r\n return -1;\r\n\r\n return 0;\r\n });\r\n }\r\n\r\n /**\r\n * Applies an addition change by inserting an <ins> tag.\r\n * @param content The current content.\r\n * @param change The change record.\r\n * @returns The updated content.\r\n */\r\n private applyAdditionChange(content: string, change: TextChange): string {\r\n const hoverColor = (this.selectedChange?.id === change.id) ? this.textChangeStyle.insHoverColor : '';\r\n\r\n return content.slice(0, change.startOffset) +\r\n `<ins id=\"${change.id}\" type=\"${change.type}\" style=\"${this.textChangeStyle.ins + hoverColor}\">` +\r\n change.note +\r\n `</ins>` +\r\n content.slice(change.startOffset);\r\n }\r\n\r\n /**\r\n * Applies a deletion change by inserting a <del> tag.\r\n * @param content The current content.\r\n * @param change The change record.\r\n * @returns The updated content.\r\n */\r\n private applyDeletionChange(content: string, change: TextChange): string {\r\n const hoverColor = (this.selectedChange?.id === change.id) ? this.textChangeStyle.delHoverColor : '';\r\n const end = change.endOffset || change.startOffset;\r\n\r\n return content.slice(0, change.startOffset) +\r\n `<del type=\"${change.type}\" style=\"${this.textChangeStyle.del + hoverColor}\">` +\r\n change.note +\r\n `</del>` +\r\n content.slice(end + 1);\r\n }\r\n\r\n /**\r\n * Applies a comment change by inserting a comment marker with tooltip.\r\n * @param content The current content.\r\n * @param change The change record.\r\n * @returns The updated content.\r\n */\r\n private applyCommentChange(content: string, change: TextChange): string {\r\n const end = change.endOffset || change.startOffset;\r\n return content.slice(0, change.startOffset) +\r\n this.getCommentHTML(change) +\r\n content.slice(end + 1);\r\n }\r\n\r\n /**\r\n * Generates the HTML string for a comment change.\r\n * @param change The comment change record.\r\n * @returns The outerHTML string of the comment element.\r\n */\r\n private getCommentHTML(change: TextChange): string {\r\n const commentTag = this.createCommentTag(change, change.id);//change.commentText || ''\r\n commentTag.textContent = change.note;\r\n this.attachTooltipToComment(commentTag, change.commentText || '');\r\n return commentTag.outerHTML;\r\n }\r\n\r\n /**\r\n * Rebinds hover and click events for comment markers after updating the content.\r\n */\r\n\r\n private rebindCommentTooltips(): void {\r\n const commentMarkers: NodeListOf<HTMLElement> =\r\n this.editor.nativeElement.querySelectorAll('.comment-marker');\r\n\r\n commentMarkers.forEach((marker, index) => {\r\n const tooltip = marker.querySelector('.comment-tooltip') as HTMLElement;\r\n if (tooltip) {\r\n this.addEventListenerToMarkerAndTooltip(marker, tooltip, index);\r\n const editButton = tooltip.querySelector('img[src*=\"edit.svg\"]');\r\n const deleteButton = tooltip.querySelector('img[src*=\"trash.svg\"]');\r\n if (editButton) { editButton.addEventListener('click', () => this.editComment(marker, tooltip)); }\r\n if (deleteButton) { deleteButton.addEventListener('click', () => this.deleteComment(marker)); }\r\n }\r\n });\r\n }\r\n\r\n private addEventListenerToMarkerAndTooltip(marker: HTMLElement, tooltip: HTMLElement, index: number) {\r\n const mouseEnterHandler = () => {\r\n const currentIndexMarker = index;\r\n this.isCursorInsideMarker = true;\r\n this.setElementPosition(tooltip, marker);\r\n tooltip.style.display = 'flex';\r\n\r\n this.editor.nativeElement.querySelectorAll('.comment-marker').forEach((marker: HTMLElement, index: number) => {\r\n const tooltip = marker.querySelector('.comment-tooltip') as HTMLElement;\r\n\r\n if (tooltip && index !== currentIndexMarker && tooltip.style.display === 'flex') {\r\n tooltip.style.display = 'none';\r\n }\r\n\r\n if (index === currentIndexMarker && this.markerTimeoutId)\r\n clearTimeout(this.markerTimeoutId);\r\n });\r\n };\r\n\r\n const mouseLeaveMarkerHandler = () => {\r\n this.isCursorInsideMarker = false;\r\n\r\n this.markerTimeoutId = setTimeout(() => {\r\n if (!this.isCursorInsideTooltip && tooltip.style.display !== 'none')\r\n tooltip.style.display = 'none';\r\n\r\n this.markerTimeoutId = undefined;\r\n }, 500);\r\n };\r\n\r\n const mouseLeaveTooltipHandler = () =>\r\n this.isCursorInsideTooltip = false;\r\n\r\n const mouseEnterTooltipHandler = () => {\r\n this.isCursorInsideTooltip = true;\r\n tooltip.style.display = 'flex';\r\n };\r\n\r\n marker.addEventListener(mouseEnter, mouseEnterHandler);\r\n marker.addEventListener(mouseLeave, mouseLeaveMarkerHandler);\r\n tooltip.addEventListener(mouseLeave, mouseLeaveTooltipHandler);\r\n tooltip.addEventListener(mouseEnter, mouseEnterTooltipHandler);\r\n\r\n marker[mouseEnterHandlerKey] = mouseEnterHandler;\r\n marker[mouseLeaveHandlerKey] = mouseLeaveMarkerHandler;\r\n tooltip[mouseLeaveHandlerKey] = mouseLeaveTooltipHandler;\r\n tooltip[mouseEnterHandlerKey] = mouseEnterTooltipHandler;\r\n }\r\n\r\n private removeEventListenerFromMarkersAndTooltips() {\r\n const commentMarkers: NodeListOf<HTMLElement> =\r\n this.editor.nativeElement.querySelectorAll('.comment-marker');\r\n\r\n commentMarkers.forEach((marker, index) => {\r\n const tooltip = marker.querySelector('.comment-tooltip') as HTMLElement;\r\n\r\n if (marker[mouseEnterHandlerKey]) {\r\n marker.removeEventListener(mouseEnter, marker[mouseEnterHandlerKey]);\r\n delete marker[mouseEnterHandlerKey];\r\n }\r\n\r\n if (marker[mouseLeaveHandlerKey]) {\r\n marker.removeEventListener(mouseLeave, marker[mouseLeaveHandlerKey]);\r\n delete marker[mouseLeaveHandlerKey];\r\n }\r\n\r\n if (tooltip[mouseLeaveHandlerKey]) {\r\n tooltip.removeEventListener(mouseLeave, tooltip[mouseLeaveHandlerKey]);\r\n delete tooltip[mouseLeaveHandlerKey];\r\n }\r\n\r\n if (tooltip[mouseEnterHandlerKey]) {\r\n tooltip.removeEventListener(mouseEnter, tooltip[mouseEnterHandlerKey]);\r\n delete tooltip[mouseEnterHandlerKey];\r\n }\r\n })\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Insertion Logic\r\n\r\n private isUpdateAdditionWhileSelectionIsNextToInsTag(selection: Selection) {\r\n const range = selection.getRangeAt(0);\r\n const currentNodeAbsoluteOffset = selection.anchorOffset + this.getAbsoluteOffset(this.editor.nativeElement, range.startContainer);\r\n const nextSiblingInsertionElement = this.getNextSiblingSameTag(range.startContainer, additionTagName);\r\n\r\n if (!nextSiblingInsertionElement)\r\n return false\r\n\r\n const nextSiblingInsertionElementAbsoluteOffset = this.getAbsoluteOffset(this.editor.nativeElement, nextSiblingInsertionElement as Node);\r\n\r\n return nextSiblingInsertionElementAbsoluteOffset === currentNodeAbsoluteOffset;\r\n }\r\n\r\n private updateAddition(event: KeyboardEvent, selection: Selection, isDeletionKey: boolean, isInsideInsTag: boolean) {\r\n if (isInsideInsTag) {\r\n this.updateAdditionWhileSelectionIsInsideInsTag(selection, event, isDeletionKey);\r\n return;\r\n }\r\n\r\n this.updateAdditionWhileSelectionIsNextToInsTag(selection, event, isDeletionKey);\r\n }\r\n\r\n private updateAdditionWhileSelectionIsInsideInsTag(selection: Selection, event: KeyboardEvent, isDeletionKey: boolean) {\r\n const range = selection.getRangeAt(0);\r\n const currentNode = range.startContainer;\r\n const offset = range.startOffset;\r\n\r\n let text = (currentNode as HTMLElement).textContent as string;\r\n\r\n if (isDeletionKey && !offset)\r\n return;\r\n\r\n text = isDeletionKey ?\r\n text.slice(0, offset - 1) + text.slice(offset)\r\n :\r\n text.slice(0, offset) + event.key + text.slice(offset);\r\n\r\n const textChangeToUpdate = this.changes.find(change => change.id === (currentNode.parentNode as HTMLElement).id);\r\n\r\n if (!textChangeToUpdate)\r\n return;\r\n\r\n text ? textChangeToUpdate.note = (currentNode as HTMLElement).textContent = text : this.deleteChange(textChangeToUpdate);\r\n\r\n const caretDiffPosition = !isDeletionKey ? 1 : -1;\r\n this.updateSelection(selection, currentNode, offset + caretDiffPosition);\r\n\r\n if (text)\r\n this.changesEmitter.emit(this.changes);\r\n }\r\n\r\n private updateAdditionWhileSelectionIsNextToInsTag(selection: Selection, event: KeyboardEvent, isDeletionKey: boolean) {\r\n const range = selection.getRangeAt(0);\r\n const nextSiblingInsertionElement = this.getNextSiblingSameTag(range.startContainer, additionTagName);\r\n\r\n if (isDeletionKey)\r\n return;\r\n\r\n const textChangeToUpdate = this.changes.find(change => change?.id === (nextSiblingInsertionElement as HTMLElement)?.id);\r\n if (!textChangeToUpdate)\r\n return;\r\n\r\n const textElement = nextSiblingInsertionElement as HTMLElement;\r\n\r\n textElement.textContent = event.key + textElement.textContent;\r\n textChangeToUpdate.note = textElement.textContent;\r\n\r\n const nextCharCaretDiffPosition = 1;\r\n this.updateSelection(selection, nextSiblingInsertionElement?.firstChild as Node, nextCharCaretDiffPosition);\r\n\r\n this.changesEmitter.emit(this.changes);\r\n }\r\n\r\n /**\r\n * Inserts a new addition by wrapping the inserted text in an <ins> tag.\r\n * @param selection The current selection.\r\n * @param text The text to insert.\r\n */\r\n private insertNewAddition(selection: Selection, text: string): void {\r\n const range = selection.getRangeAt(0);\r\n const newInsTag = this.createInsTag(text);\r\n range.insertNode(newInsTag);\r\n\r\n if (newInsTag.firstChild) {\r\n this.updateSelection(selection, newInsTag.firstChild, text.length);\r\n }\r\n else {\r\n range.setStartAfter(newInsTag);\r\n range.setEndAfter(newInsTag);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n\r\n const offset = this.getAbsoluteOffset(this.editor.nativeElement, newInsTag);\r\n\r\n const textChange: Partial<TextChange> = {\r\n id: newInsTag.id,\r\n type: 'addition',\r\n note: text,\r\n creatingUser: this.currentUser,\r\n timeStamp: new Date(),\r\n startOffset: offset\r\n };\r\n\r\n this.recordChange(textChange);\r\n }\r\n\r\n /**\r\n * Creates an <ins> tag element for added text.\r\n * @param text The text content.\r\n * @returns The created <ins> HTMLElement.\r\n */\r\n private createInsTag(text: string): HTMLElement {\r\n const tag = document.createElement(additionTagName);\r\n tag.textContent = text;\r\n tag.id = this.generateId();\r\n tag.setAttribute('style', this.textChangeStyle.ins);\r\n tag.setAttribute('type', 'addition');\r\n\r\n return tag;\r\n }\r\n\r\n /**\r\n * Updates the current selection to a new range.\r\n * @param selection The current selection.\r\n * @param node The node in which to set the caret.\r\n * @param offset The offset within the node.\r\n */\r\n private updateSelection(selection: Selection, node: Node, offset: number): void {\r\n const newRange = document.createRange();\r\n newRange.setStart(node, offset);\r\n newRange.setEnd(node, offset);\r\n selection.removeAllRanges();\r\n selection.addRange(newRange);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Deletion Logic\r\n\r\n /**\r\n * Handles deletion of selected text.\r\n * @param selection The current selection.\r\n */\r\n private handleDeletion(selection: Selection): void {\r\n const deletedText = window.getSelection().toString()\r\n\r\n if (deletedText) {\r\n const delTag = this.createDelTag(deletedText);\r\n const range = selection.getRangeAt(0);\r\n\r\n try { range.surroundContents(delTag); }\r\n catch (error) { return; }\r\n\r\n const targetNode = range.startContainer.childNodes[range.startOffset];\r\n const startOffset = this.getAbsoluteOffset(this.editor.nativeElement, targetNode);\r\n\r\n this.recordChange({\r\n type: 'deletion',\r\n note: deletedText,\r\n creatingUser: this.currentUser,\r\n timeStamp: new Date(),\r\n startOffset,\r\n endOffset: startOffset + deletedText?.length - 1\r\n });\r\n }\r\n }\r\n\r\n deleteChange(changeToDelete: TextChange) {\r\n const index = this.changes.findIndex(change => change === changeToDelete);\r\n\r\n if (index !== -1) { this.changes.splice(index, 1); }\r\n\r\n this.changesEmitter.emit(this.changes);\r\n this.applyChangesToContent();\r\n }\r\n\r\n /**\r\n * Creates a <del> tag element for deleted text.\r\n * @param text The text content.\r\n * @returns The created <del> HTMLElement.\r\n */\r\n private createDelTag(text: string): HTMLElement {\r\n const tag = document.createElement('del');\r\n tag.textContent = text;\r\n tag.id = this.generateId();\r\n tag.setAttribute('style', this.textChangeStyle.del);\r\n tag.setAttribute('type', 'deletion');\r\n\r\n return tag;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Comment Logic\r\n\r\n /**\r\n * Opens the comment box tooltip for the current selection.\r\n */\r\n openCommentBox(): void {\r\n const selection = window.getSelection();\r\n if (selection && selection.rangeCount > 0) {\r\n const range = selection.getRangeAt(0);\r\n this.currentSelection = { range: range.cloneRange(), text: selection.toString() };\r\n\r\n const rect = range.getBoundingClientRect();\r\n\r\n this.commentBoxPosition = this.calculateCommentBoxPosition(rect, this.showCommentBox);\r\n this.showTooltip = false;\r\n this.showCommentBox = true;\r\n } else {\r\n this.resetCommentUI();\r\n }\r\n }\r\n\r\n /**\r\n * Calculates the position for the comment box.\r\n * @param rect The bounding client rect.\r\n * @param isExisting Flag to adjust position if already open.\r\n * @returns The top and left coordinates.\r\n */\r\n private calculateCommentBoxPosition(rect: DOMRect, isExisting: boolean): { top: number; left: number } {\r\n return isExisting\r\n ? { top: this.commentBoxPosition.top + 50, left: this.commentBoxPosition.left - 200 }\r\n : { top: rect.bottom + 10 + window.scrollY, left: rect.left + window.scrollX };\r\n }\r\n\r\n /**\r\n * Adds a comment using a prompt (used by the toolbar).\r\n */\r\n addComment(): void {\r\n const selection = window.getSelection();\r\n\r\n if (selection && selection.rangeCount > 0) {\r\n const range = selection.getRangeAt(0);\r\n\r\n const selectedText = selection.toString();\r\n const comment = prompt('Enter your comment:');\r\n if (comment) {\r\n\r\n const startOffset = this.getAbsoluteOffset(this.editor.nativeElement, range.startContainer);\r\n const endOffset = this.getAbsoluteOffset(this.editor.nativeElement, range.endContainer);\r\n\r\n this.recordChange({\r\n type: 'comment',\r\n note: selectedText,\r\n commentText: comment,\r\n creatingUser: this.currentUser,\r\n timeStamp: new Date(),\r\n startOffset: startOffset,\r\n endOffset: endOffset,\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Saves a comment from the comment box. If editing, updates the existing comment.\r\n */\r\n saveComment(): void {\r\n if (this.editCommentBox && this.editingCommentElement) {\r\n this.editingCommentElement.setAttribute('data-comment', this.newCommentText);\r\n const tooltip = this.editingCommentElement.querySelector('.comment-tooltip') as HTMLElement;\r\n if (tooltip) {\r\n const commentTextP = tooltip.querySelector('p');\r\n if (commentTextP) { commentTextP.textContent = this.newCommentText; }\r\n }\r\n\r\n this.changes.find(change => change.id == this.editingCommentElement.id).commentText = this.newCommentText;\r\n\r\n\r\n this.changesEmitter.emit(this.changes);\r\n this.resetCommentUI();\r\n this.editCommentBox = false;\r\n this.editingCommentElement = null;\r\n }\r\n\r\n else if (this.currentSelection && this.newCommentText) {\r\n const range = this.currentSelection.range;\r\n\r\n if (!range) { return; }\r\n let id = this.generateId();\r\n const commentTag = this.createCommentTag(this.newCommentText, id, this.currentSelection.text);\r\n try { range.surroundContents(commentTag); }\r\n catch (error) { return; }\r\n this.attachTooltipToComment(commentTag, this.newCommentText);\r\n\r\n let targetNode = range.startContainer;\r\n\r\n if (targetNode.nodeType === Node.ELEMENT_NODE)\r\n targetNode = targetNode.childNodes[range.startOffset]\r\n\r\n this.recordChange({\r\n id: id,\r\n type: 'comment',\r\n note: this.currentSelection.text,\r\n commentText: this.newCommentText,\r\n creatingUser: this.currentUser,\r\n timeStamp: new Date(),\r\n startOffset: this.getAbsoluteOffset(this.editor.nativeElement, targetNode),\r\n endOffset: this.getAbsoluteOffset(this.editor.nativeElement, targetNode) + this.currentSelection.text.length - 1\r\n });\r\n this.resetCommentUI();\r\n }\r\n }\r\n\r\n /**\r\n * Creates a comment tag (<span>) for wrapping commented text.\r\n * @param comment The comment text.\r\n * @returns The created comment marker element.\r\n */\r\n private createCommentTag(change: TextChange | string, id: string, textSelection?: string): HTMLElement {\r\n let text;\r\n if (typeof change === \"string\") {\r\n text = change;\r\n }\r\n else {\r\n text = change.commentText;\r\n textSelection = change.note\r\n }\r\n\r\n const tag = document.createElement('span');\r\n tag.className = 'comment-marker';\r\n tag.id = id;\r\n (tag as any).ariaLabel = textSelection;\r\n tag.setAttribute('data-comment', text || '');\r\n\r\n let style = this.textChangeStyle.commentMarker\r\n\r\n if (this.selectedChange?.id === id)\r\n style += this.textChangeStyle.commentMarkerHoverColor\r\n\r\n tag.setAttribute('style', style);\r\n tag.setAttribute('type', 'comment');\r\n\r\n return tag;\r\n }\r\n\r\n /**\r\n * Attaches a tooltip (with edit and delete buttons) to a comment element.\r\n * @param commentTag The comment marker element.\r\n * @param comment The comment text.\r\n */\r\n private attachTooltipToComment(commentTag: HTMLElement, comment: string): void {\r\n const tooltip = document.createElement('span');\r\n tooltip.className = 'comment-tooltip comment-view-container';\r\n tooltip.setAttribute('style', this.textChangeStyle.tooltip);\r\n const commentText = document.createElement('p');\r\n commentText.setAttribute('style', this.textChangeStyle.tooltipText);\r\n commentText.textContent = comment;\r\n tooltip.appendChild(commentText);\r\n const buttonsContainer = document.createElement('div');\r\n buttonsContainer.setAttribute('style', this.textChangeStyle.tooltipButtonsContainer);\r\n if (!this.isReadOnly) {\r\n const editButton = document.createElement('img');\r\n editButton.style.marginRight = '10px';\r\n editButton.style.cursor = 'pointer';\r\n editButton.src = 'assets/shared/trackChanges/edit.svg';\r\n editButton.addEventListener('click', () => this.editComment(commentTag, tooltip));\r\n buttonsContainer.appendChild(editButton);\r\n\r\n const deleteButton = document.createElement('img');\r\n deleteButton.style.marginRight = '10px';\r\n deleteButton.style.padding = '10px';\r\n deleteButton.style.cursor = 'pointer';\r\n deleteButton.src = 'assets/shared/trackChanges/trash.svg';\r\n deleteButton.addEventListener('click', () => this.deleteComment(commentTag));\r\n buttonsContainer.appendChild(deleteButton);\r\n }\r\n\r\n tooltip.appendChild(buttonsContainer);\r\n commentTag.appendChild(tooltip);\r\n\r\n this.updateListenersForMarksAndTooltips();\r\n }\r\n\r\n updateListenersForMarksAndTooltips() {\r\n this.removeEventListenerFromMarkersAndTooltips();\r\n const commentMarkers: NodeListOf<HTMLElement> =\r\n this.editor.nativeElement.querySelectorAll('.comment-marker');\r\n\r\n commentMarkers.forEach((marker, index) => {\r\n const tooltip = marker.querySelector('.comment-tooltip') as HTMLElement;\r\n this.addEventListenerToMarkerAndTooltip(marker, tooltip, index);\r\n })\r\n }\r\n /**\r\n * Opens the edit comment mode by showing the comment tooltip pre-filled with the existing comment.\r\n * @param commentTag The comment marker element.\r\n * @param tooltip The tooltip element.\r\n */\r\n editComment(commentTag: HTMLElement, tooltip: HTMLElement): void {\r\n this.editingCommentElement = commentTag;\r\n const currentComment = commentTag.getAttribute('data-comment') || '';\r\n this.newCommentText = currentComment;\r\n this.editCommentBox = true;\r\n const rect = commentTag.getBoundingClientRect();\r\n this.commentBoxPosition = { top: rect.bottom + window.scrollY, left: rect.left + window.scrollX };\r\n tooltip.style.display = 'none';\r\n // tooltip.style.fontSize = '0';\r\n // tooltip.querySelector('p').style.fontSize = '0';\r\n // tooltip.style.top = '0';\r\n // tooltip.style.left = '0';\r\n\r\n }\r\n\r\n /**\r\n * Deletes a comment from the DOM and removes its change record.\r\n * @param commentTag The comment marker element.\r\n */\r\n deleteComment(commentTag: HTMLElement): void {\r\n const parent = commentTag.parentElement;\r\n if (parent) {\r\n parent.replaceChild(document.createTextNode((commentTag as any).ariaLabel || ''), commentTag);\r\n }\r\n\r\n const index = this.changes.findIndex(change => change.id === commentTag.id);\r\n\r\n if (index !== -1) { this.changes.splice(index, 1); }\r\n\r\n this.changesEmitter.emit(this.changes);\r\n\r\n this.applyChangesToContent();\r\n this.updateListenersForMarksAndTooltips();\r\n }\r\n\r\n cancelComment(): void {\r\n this.resetCommentUI();\r\n }\r\n\r\n private resetCommentUI(): void {\r\n this.showCommentBox = this.showTooltip = this.showNotAllowedActionTooltip = this.editCommentBox = false;\r\n this.newCommentText = '';\r\n this.currentSelection = null;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Helper Methods\r\n\r\n private generateId(): string {\r\n const timeStamp = new Date().getTime();\r\n const random = Math.floor(Math.random() * 1000000);\r\n return `${timeStamp}-${random}`;\r\n }\r\n\r\n /**\r\n * Calculates the absolute offset of a node within the editor.\r\n * @param root The root node (editor element).\r\n * @param node The target node.\r\n * @param offset The offset within the target node.\r\n * @returns The absolute offset.\r\n */\r\n\r\n private getAbsoluteOffset(root: Node, node: Node): number {\r\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {\r\n acceptNode: (node) => {\r\n // Ignore comment markers and other non-text nodes\r\n if (node.parentElement?.tagName === 'P') {\r\n return NodeFilter.FILTER_REJECT;\r\n }\r\n return NodeFilter.FILTER_ACCEPT;\r\n }\r\n });\r\n\r\n let currentOffset = 0;\r\n let currentNode = walker.nextNode();\r\n while (currentNode) {\r\n\r\n const isInsElement = (currentNode.parentNode as HTMLElement).tagName.toLowerCase() === additionTagName;\r\n if ((currentNode.parentNode === node || currentNode === node)) { return currentOffset; }\r\n if (!isInsElement)\r\n currentOffset += currentNode.textContent?.length || 0;\r\n currentNode = walker.nextNode();\r\n }\r\n\r\n return currentOffset;\r\n }\r\n\r\n /**\r\n * Determines if a node is inside a given tag.\r\n * @param node The starting node.\r\n * @param tagName The tag name to check.\r\n * @returns True if inside the tag; otherwise, false.\r\n */\r\n private isInsideTag(node: Node, tagName: string): boolean {\r\n while (node) {\r\n\r\n if (node.nodeType === Node.ELEMENT_NODE && (node as HTMLElement).tagName.toLowerCase() === tagName) {\r\n return true;\r\n }\r\n\r\n node = node.parentNode!;\r\n if ((node as HTMLElement).id === editorContainerElementId)\r\n return false;\r\n }\r\n return false;\r\n }\r\n\r\n private getNextSiblingSameTag(node: Node, tagName: string): HTMLElement | null {\r\n let nextSibling = (node as HTMLElement).nextElementSibling;\r\n\r\n if (!nextSibling)\r\n return null;\r\n\r\n return nextSibling.nodeType === Node.ELEMENT_NODE && (nextSibling as HTMLElement).tagName.toLowerCase() === tagName ?\r\n (nextSibling as HTMLElement) : null;\r\n }\r\n\r\n /**\r\n * Records a change in the changes list.\r\n * @param change A partial change object.\r\n */\r\n private recordChange(change: Partial<TextChange>): void {\r\n this.changes.push({\r\n id: change.id ?? this.generateId(),\r\n type: change.type!,\r\n note: change.note || '',\r\n commentText: change.commentText,\r\n creatingUser: change.creatingUser || this.currentUser,\r\n timeStamp: change.timeStamp || new Date(),\r\n startOffset: change.startOffset || 0,\r\n endOffset: change.endOffset,\r\n });\r\n this.changes.sort((a, b) => a.startOffset - b.startOffset)\r\n this.changesEmitter.emit(this.changes);\r\n }\r\n\r\n /**\r\n * Toggles the track changes feature.\r\n */\r\n toggleTrackChanges(): void {\r\n this.trackChangesEnabled = !this.trackChangesEnabled;\r\n }\r\n\r\n // #endregion\r\n _isTruncatedElement(element: HTMLElement): boolean {\r\n return isTruncatedTitleElement(element);\r\n }\r\n\r\n get informationIconSvgString() {\r\n return svgsStrings.information;\r\n }\r\n\r\n get messagePlusIconSvgString() {\r\n return svgsStrings.messagePlus;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.removeEventListenerFromMarkersAndTooltips();\r\n }\r\n}","<div id=\"editor-container\" class=\"editor-container\" dir=\"rtl\" [ngClass]=\"{'editor-container-with-grid':showComments}\">\r\n <div #editor class=\"text-editor\" [attr.contenteditable]=\"!isReadOnly\" (keydown)=\"_onKeyDown($event)\"\r\n (mouseup)=\"_onTextSelection()\" (drop)=\"_onDropTextSelection($event)\">\r\n </div>\r\n\r\n <div *ngIf=\"showComments\" class=\"comments-panel\">\r\n <h3>הערות:</h3>\r\n <div *ngFor=\"let change of changes\">\r\n <div class=\"comment\">\r\n <div class=\"comment-header align-items-center\">\r\n <strong><img [src]=\"change?.creatingUser?.pictureUrl\">{{ change?.creatingUser?.firstName + ' ' +\r\n change?.creatingUser?.lastName }}</strong>\r\n <span>{{ change.timestamp | date:'dd/MM/yy' }}</span>\r\n </div>\r\n\r\n <p #commentRef class=\"reference-text\" appHerumToolTip\r\n [matTooltip]=\"_isTruncatedElement(commentRef) ? change.note : ''\">\r\n <img src=\"assets/shared/trackChanges/text-reference.svg\">\r\n {{ change.note| ellipsis:commentRef }}\r\n </p>\r\n\r\n <div class=\"d-flex flex-cloumn justify-content-between w-100\">\r\n <span class=\"d-flex gap-3 align-items-center w-100\">\r\n\r\n <p class=\"comment-text m-0\">\r\n {{ change.commentText }}\r\n </p>\r\n </span>\r\n\r\n <button class=\"cancel-deletion\" (click)=\"deleteChange(change)\" *ngIf=\"!isReadOnly\">\r\n <img src=\"assets/shared/trackChanges/trash.svg\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showTooltip && !isReadOnly\" class=\"comment-tooltip\" [style.top.px]=\"tooltipPosition.top\"\r\n [style.left.px]=\"tooltipPosition.left\">\r\n <button (click)=\"openCommentBox()\">\r\n <span class=\"icon\" [innerHTML]=\"messagePlusIconSvgString | safeHtml\"></span>\r\n הוסף הערה\r\n </button>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"showNotAllowedActionTooltip && !isReadOnly\" class=\"comment-tooltip\"\r\n [style.top.px]=\"showNotAllowedActionTooltipPosition.top\" [style.left.px]=\"showNotAllowedActionTooltipPosition.left\">\r\n <span>\r\n <span class=\"icon\" [innerHTML]=\"informationIconSvgString | safeHtml\"></span>\r\n לא ניתן לבצע פעולה על הערה קיימת\r\n </span>\r\n </div>\r\n\r\n <div *ngIf=\"showCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"הוסף הערה\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">בטל</button>\r\n <button class=\"save\" (click)=\"saveComment()\">הוסף הערה</button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"editCommentBox && !isReadOnly\" class=\"comment-box\" [style.top.px]=\"commentBoxPosition.top\"\r\n [style.left.px]=\"commentBoxPosition.left\">\r\n <herum-text-area [(ngModel)]=\"newCommentText\" placeholder=\"הוסף הערה\">\r\n </herum-text-area>\r\n\r\n <div class=\"comment-actions\">\r\n <button class=\"cancel\" (click)=\"cancelComment()\">בטל</button>\r\n <button class=\"save\" (click)=\"saveComment()\">שמור</button>\r\n </div>\r\n </div>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TextChange } from 'herum-shared/herum-types';\r\nimport { AnswerNote } from 'herum-shared/herum-types';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'answerNotesToTextChanges'\r\n})\r\nexport class AnswerNotesToTextChangesPipe implements PipeTransform {\r\n\r\n transform(answerNotes: AnswerNote[]): TextChange[] {\r\n return answerNotes?.map(answerNote =>\r\n ({\r\n type: answerNote.type,\r\n creatingUser: answerNote.creatingUser,\r\n id: answerNote.id,\r\n note: answerNote.note,\r\n timeStamp: answerNote.timeStamp,\r\n startOffset: answerNote.startIndex,\r\n endOffset: answerNote.endIndex,\r\n commentText: answerNote.commentText\r\n })\r\n )\r\n .sort((a, b) => new Date(a.startOffset).getTime() - new Date(b.startOffset).getTime());\r\n }\r\n}","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Question } from 'herum-shared/herum-types';\r\nimport { AnswerNotesToTextChangesPipe } from '../../../pipes/answer-notes-to-text-changes.pipe';\r\nimport { UserQuestionData } from 'herum-shared/herum-types';\r\nimport { TextChange } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'quiz-open-answer-question',\r\n templateUrl: './quiz-open-answer-question.component.html',\r\n styleUrls: ['./quiz-open-answer-question.component.scss']\r\n})\r\nexport class QuizOpenAnswerQuestionComponent {\r\n\r\n @Input() previewMode: boolean = false;\r\n @Input() question!: Question;\r\n @Input() userQuestion!: UserQuestionData;\r\n @Input() areAnswersRevealed!: boolean;\r\n @Input() areAnswersBlocked!: boolean;\r\n @Input() isCheckingMode!: boolean;\r\n @Input() selectedTextChange!: TextChange;\r\n\r\n @Output() freeTextCorrectAnswerChange = new EventEmitter<string>();\r\n @Output() notesChange = new EventEmitter<TextChange[]>();\r\n\r\n freeTextCorrectAnswerControl = new FormControl('');\r\n notes: TextChange[];\r\n\r\n destroySubject$ = new Subject<null>();\r\n\r\n constructor(private answerNotesToTextChangesPipe: AnswerNotesToTextChangesPipe) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['userQuestion']?.currentValue) {\r\n this.freeTextCorrectAnswerControl.setValue(this.userQuestion.freeTextAnswer ?? '', { emitEvent: false });\r\n\r\n if (this.isCheckingMode || this.areAnswersRevealed)\r\n this.notes = this.answerNotesToTextChangesPipe.transform(this.userQuestion.answerNotes ?? []);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.freeTextCorrectAnswerControl.valueChanges.pipe(takeUntil(this.destroySubject$))\r\n .subscribe(freeText => this.freeTextCorrectAnswerChange.emit(freeText));\r\n }\r\n\r\n _notesChange(notes: TextChange[]) {\r\n this.notesChange.emit(notes);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n}\r\n","<span class=\"answer-title\">{{ isCheckingMode ? 'תשובת החניך' : 'כתוב תשובתך' }}\r\n <span *ngIf=\"!isCheckingMode && question?.charactersLimit > 0\">\r\n (עד {{ question?.charactersLimit }} תווים)\r\n </span>\r\n</span>\r\n\r\n<herum-text-area *ngIf=\"!areAnswersRevealed && !isCheckingMode\" [disabled]=\"previewMode || areAnswersBlocked\"\r\n [maxLength]=\"question?.charactersLimit\" [formControl]=\"freeTextCorrectAnswerControl\" heightMode=\"max\">\r\n</herum-text-area>\r\n\r\n<track-text-changes *ngIf=\"isCheckingMode || areAnswersRevealed\"\r\n [isReadOnly]=\"areAnswersRevealed && !isCheckingMode || !isCheckingMode\" [fontSize]=\"14\"\r\n [selectedChange]=\"selectedTextChange\" [showComments]=\"false\" [baseContent]=\"freeTextCorrectAnswerControl.value\"\r\n [changes]=\"notes\" (changesEmitter)=\"_notesChange($event)\">\r\n</track-text-changes>","import { Directive, ElementRef, Input, Renderer2, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[herumHighlight]'\r\n})\r\nexport class HerumHighlightDirective {\r\n\r\n @Input() highlightText: string | null | undefined = '';\r\n @Input('herumHighlight') highlightQuery: string | null | undefined = '';\r\n\r\n constructor(private el: ElementRef<HTMLElement>, private renderer: Renderer2) { }\r\n\r\n ngOnChanges(): void {\r\n const text = this.highlightText ?? '';\r\n const query = (this.highlightQuery ?? '').trim();\r\n\r\n if (!query) {\r\n this.renderer.setProperty(this.el.nativeElement, 'textContent', text);\r\n return;\r\n }\r\n\r\n const lowerText = text.toLowerCase();\r\n const lowerQuery = query.toLowerCase();\r\n const start = lowerText.indexOf(lowerQuery);\r\n\r\n if (start === -1) {\r\n this.renderer.setProperty(this.el.nativeElement, 'textContent', text);\r\n return;\r\n }\r\n\r\n const end = start + query.length;\r\n\r\n const before = this.escapeHtml(text.slice(0, start));\r\n const match = this.escapeHtml(text.slice(start, end));\r\n const after = this.escapeHtml(text.slice(end));\r\n\r\n const html = `${before}<strong>${match}</strong>${after}`;\r\n this.renderer.setProperty(this.el.nativeElement, 'innerHTML', html);\r\n }\r\n\r\n private escapeHtml(value: string): string {\r\n return value\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#39;');\r\n }\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DialogConfig } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'app-insurance-dialog',\r\n templateUrl: './insurance-dialog.component.html',\r\n styleUrls: ['./insurance-dialog.component.scss', '../../styles/dialogs.scss']\r\n})\r\nexport class InsuranceDialogComponent {\r\n\r\n constructor(public dialogRef: MatDialogRef<InsuranceDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: DialogConfig,\r\n @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n _onSubmit() {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n _onClose() {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n get systemIdentifier() {\r\n return this.environmentConfig?.environment?.systemIdentifier;\r\n }\r\n\r\n get isWarning() {\r\n return this.data.type == 'warning';\r\n }\r\n}","<div class=\"dialog-container cubes-background\" [class]=\"systemIdentifier\">\r\n <div class=\"title-container\">\r\n <img class=\"warning-icon\" *ngIf=\"isWarning\" src=\"assets/hadracha/general/warningDialog.svg\" alt=\"close-icon\">\r\n <p class=\"section-title\">{{data.title}}</p>\r\n <img class=\"close-button\" src=\"assets/shared/icons/secondary-x.svg\" alt=\"close-icon\" (click)=\"_onClose()\">\r\n </div>\r\n\r\n <p class=\"description\">{{ data.description }}</p>\r\n\r\n <p *ngIf=\"data.note\" class=\"note\">{{ data.note }}</p>\r\n\r\n <div class=\"dialog-buttons-actions-container\" *ngIf=\"!!data.submitActionButton\">\r\n <herum-button (click)=\"_onClose()\" [type]=\"'ghost'\">{{ data.closeActionButton ?? 'בטל' }}</herum-button>\r\n <herum-button [color]=\"isWarning ? 'error' : 'regular'\" (click)=\"_onSubmit()\">{{ data.submitActionButton }}</herum-button>\r\n </div>\r\n</div>","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { FileData } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-files-viewer-dialog',\r\n templateUrl: './herum-files-viewer-dialog.component.html',\r\n styleUrls: ['./herum-files-viewer-dialog.component.scss']\r\n})\r\nexport class HerumFilesViewerDialogComponent implements OnInit {\r\n\r\n fileData: FileData;\r\n\r\n constructor(private dialogRef: MatDialogRef<FileData>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit(): void {\r\n this.fileData = this.data;\r\n }\r\n\r\n _downloadFile() {\r\n this.dialogRef.close(this.fileData);\r\n }\r\n}","<herum-files-viewer [fileData]=\"fileData\" (downloadFile)=\"_downloadFile()\">\r\n</herum-files-viewer>","import { NgModule } from '@angular/core';\r\nimport { InsuranceDialogComponent } from './insurance-dialog/insurance-dialog.component';\r\nimport { HerumFilesViewerDialogComponent } from './herum-files-viewer-dialog/herum-files-viewer-dialog.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AtomsModule } from 'herum-shared/atoms';\r\nimport { PipesModule } from 'herum-shared/pipes';\r\nimport { MoleculesModule } from 'herum-shared/molecules';\r\n\r\n@NgModule({\r\n declarations: [\r\n InsuranceDialogComponent,\r\n HerumFilesViewerDialogComponent,\r\n],\r\nimports: [\r\n CommonModule,\r\n AtomsModule,\r\n PipesModule,\r\n MoleculesModule\r\n],\r\nexports: [\r\n InsuranceDialogComponent,\r\n HerumFilesViewerDialogComponent,\r\n ]\r\n})\r\nexport class DialogsModule { }","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'college-loader',\r\n templateUrl: './college-loader.component.html',\r\n styleUrls: ['./college-loader.component.scss']\r\n})\r\nexport class CollegeLoaderComponent implements OnInit {\r\n\r\n bars = new Array(8).fill(8);\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n}","<div class=\"container\">\r\n <div class=\"bar\" *ngFor=\"let bar of bars\"></div>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { IdentifiedEntity } from 'herum-shared/herum-types';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'sliceBreadcrumbs'\r\n})\r\nexport class SliceBreadcrumbsPipe implements PipeTransform {\r\n\r\n transform(items: IdentifiedEntity[], ...args: unknown[]): IdentifiedEntity[] {\r\n if (!items) return [];\r\n\r\n items = [...items]\r\n\r\n if (items?.length > 4)\r\n items = items.slice(items?.length - 4, items?.length);\r\n\r\n return items;\r\n }\r\n}","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { IdentifiedEntity } from 'herum-shared/herum-types';\r\n\r\nconst itemInput: string = 'item';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-breadcrumbs',\r\n templateUrl: './herum-breadcrumbs.component.html',\r\n styleUrls: ['./herum-breadcrumbs.component.scss']\r\n})\r\nexport class HerumBreadcrumbsComponent {\r\n\r\n @Input() items!: IdentifiedEntity[];\r\n @Input() itemToSet!: IdentifiedEntity;\r\n @Output() itemEmitter = new EventEmitter<IdentifiedEntity[]>();\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes[itemInput]?.currentValue && changes[itemInput].firstChange)\r\n this.handleItemInput(this.itemToSet);\r\n }\r\n\r\n _onClick(itemIndex: number, isLastItem: boolean) {\r\n if (isLastItem || this.items.length === 1)\r\n return;\r\n\r\n const numberOfItemForRemoval = this.items.length - itemIndex - 1;\r\n const startIndexForRemoval = itemIndex + 1;\r\n\r\n this.items.splice(startIndexForRemoval, numberOfItemForRemoval);\r\n this.itemEmitter.emit(this.items);\r\n }\r\n\r\n private handleItemInput(itemInput: IdentifiedEntity) {\r\n this.items.some(item => item.id === itemInput.id) ? this.updateCurrentItem(itemInput) : this.addItem(itemInput);\r\n }\r\n\r\n private updateCurrentItem(updatedItem: IdentifiedEntity) {\r\n const updatedItemIndex = this.items.findIndex(item => item.id === updatedItem.id);\r\n\r\n if (updatedItemIndex !== (this.items.length - 1))\r\n this._onClick(updatedItemIndex, false);\r\n }\r\n\r\n private addItem(item: IdentifiedEntity) {\r\n this.items.push(item);\r\n }\r\n}","<div class=\"d-flex\">\r\n <li *ngFor=\"let item of (items | sliceBreadcrumbs), let index = index, let last = last\">\r\n <span class=\"item clickable-text\" [ngClass]=\"{'last-item':last}\"\r\n (click)=\"_onClick(index,last)\">{{item.name}}</span>\r\n\r\n <img class=\"chevron\" *ngIf=\"!last\" src=\"../../assets/general/grey-chevron.svg\">\r\n </li>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nconst splitKey: string = 'וגם';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-chip',\r\n templateUrl: './herum-chip.component.html',\r\n styleUrls: ['./herum-chip.component.scss']\r\n})\r\nexport class HerumChipComponent {\r\n\r\n @Input() title: string = '';\r\n @Input() isDeleteButtonNeeded: boolean = true;\r\n @Input() isActive = false;\r\n @Input() isMenuMode: boolean = false;\r\n @Input() type: 'positive' | 'negative' | 'regular' = 'regular';\r\n\r\n @Output() remove = new EventEmitter<boolean>();\r\n @Output() chipsActivation = new EventEmitter<boolean>();\r\n\r\n _onRemove() {\r\n this.remove.emit(true);\r\n }\r\n\r\n _onChipsSelect() {\r\n if (this.isMenuMode)\r\n this.isActive = !this.isActive;\r\n\r\n this.chipsActivation.emit(this.isActive);\r\n }\r\n\r\n get splittedTitle() {\r\n if (!this.isTitleToBeSplitted)\r\n return null;\r\n\r\n const titleParts = this.title.split(' ');\r\n const splitKeyIndices = [];\r\n\r\n titleParts.forEach((part, index) => {\r\n if (part === splitKey)\r\n splitKeyIndices.push(index);\r\n });\r\n\r\n let html: string = '';\r\n let lastIndex: number = 0;\r\n\r\n splitKeyIndices.forEach((index) => {\r\n html += `<span>${titleParts.slice(lastIndex, index).join(' ')}</span>`;\r\n html += ` <b>${titleParts[index]}</b> `;\r\n lastIndex = index + 1;\r\n });\r\n\r\n html += `<span>${titleParts.slice(lastIndex).join(' ')}</span>`;\r\n\r\n return html;\r\n }\r\n\r\n\r\n get isTitleToBeSplitted() {\r\n return this.title?.includes(splitKey);\r\n }\r\n}","<div class=\"herum-chip-container\" [class]=\"type\" [ngClass]=\"{'active':isActive, 'menu-chip':isMenuMode}\" (click)=\"_onChipsSelect()\"\r\n dir=\"rtl\">\r\n\r\n <ng-container *ngIf=\"isTitleToBeSplitted; else defaultTitle\">\r\n <span [innerHTML]=\"splittedTitle | safeHtml\"></span>\r\n </ng-container>\r\n\r\n <ng-template #defaultTitle>{{title}}</ng-template>\r\n\r\n <img *ngIf=\"isDeleteButtonNeeded\" src=\"../../assets/general/secondary-x.svg\" (click)=\"_onRemove()\">\r\n</div>","import { Component, Input, SimpleChanges } from '@angular/core';\r\n\r\nconst defaultFirstGradient: string = 'var(--icons-color)';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-circular-progress-bar',\r\n templateUrl: './herum-circular-progress-bar.component.html',\r\n styleUrls: ['./herum-circular-progress-bar.component.scss']\r\n})\r\nexport class HerumCircularProgressBarComponent {\r\n\r\n @Input() percentage: number = 65;\r\n @Input() fill: boolean = false;\r\n @Input() size: 'default-size' | 'big-size' = 'default-size';\r\n @Input() firstGradient = defaultFirstGradient;\r\n @Input() fillColor = 'white';\r\n @Input() showPercentage: boolean = false;\r\n @Input() displayedContent: number | string;\r\n @Input() displayedContentColorMatchesGradientColor: boolean = false;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['percentage'])\r\n this.displayedContent = this.displayedContent || this.percentage;\r\n\r\n if (changes['firstGradient'])\r\n this.firstGradient = this.firstGradient || defaultFirstGradient;\r\n }\r\n\r\n getGradientStyle() {\r\n return this.fill ?\r\n `radial-gradient(closest-side, transparent 79%, transparent 80% 100%), conic-gradient(${this.firstGradient} ${this.percentage}%, #1609291F 80%)` :\r\n `radial-gradient(closest-side, ${this.fillColor} 79%, transparent 80% 100%), conic-gradient(${this.firstGradient} ${this.percentage}%, #1609291F 0)`;\r\n }\r\n\r\n get percentageText() {\r\n return this.percentage >=0 ? this.percentage : '-';\r\n }\r\n}","<div class=\"progress-bar\" [ngClass]=\"size\" [style.background-image]=\"getGradientStyle()\">\r\n <span *ngIf=\"showPercentage\" class=\"percentage-text\"\r\n [style.color]=\"displayedContentColorMatchesGradientColor ? firstGradient : null\">{{ displayedContent }}</span>\r\n <progress value=\"38\" min=\"0\" max=\"100\" style=\"visibility:hidden;height:0;width:0;\"></progress>\r\n</div>","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { DateAdapter } from '@angular/material/core';\r\nimport { DateRange, MatCalendar } from '@angular/material/datepicker';\r\nimport { calendarActiveColorCssVariable, calendarHoverColorCssVariable, calendarLibrarySelector, calendarLibraryBodyCellSelector } from 'herum-shared/constants';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-date-picker',\r\n templateUrl: './herum-date-picker.component.html',\r\n styleUrls: ['./herum-date-picker.component.scss']\r\n})\r\nexport class HerumDatePickerComponent {\r\n\r\n @Input() activeColor: string = 'green';\r\n @Input() hoverColor: string = 'yellow';\r\n\r\n @Input() minDate!: Date;\r\n @Input() rangeMode: boolean = false;\r\n @Input() selectedDate: Date | DateRange<Date> = new Date();\r\n\r\n @Output() dateChange = new EventEmitter<Date | DateRange<Date>>();\r\n @ViewChild('calendar') calendar!: MatCalendar<Date | DateRange<Date>>;\r\n\r\n hostElement!: HTMLElement;\r\n startDate!: Date;\r\n endDate: Date | null;\r\n matCalendarContainerHeight: number;\r\n\r\n constructor(private elementRef: ElementRef, private dateAdapter: DateAdapter<Date>, private changeDetectorRef: ChangeDetectorRef) {\r\n this.hostElement = this.elementRef.nativeElement;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.hostElement)\r\n this.setStyleProperties(changes);\r\n\r\n if (changes['selectedDate']?.currentValue)\r\n this.handleSelectedDateChange();\r\n }\r\n\r\n private setStyleProperties(changes: SimpleChanges) {\r\n if (changes['activeColor']?.currentValue)\r\n this.hostElement.style.setProperty(calendarActiveColorCssVariable, this.activeColor);\r\n\r\n if (changes['hoverColor']?.currentValue)\r\n this.hostElement.style.setProperty(calendarHoverColorCssVariable, this.hoverColor);\r\n }\r\n\r\n private handleSelectedDateChange() {\r\n if (this.calendar && this.selectedDate instanceof Date)\r\n this.calendar.activeDate = this.selectedDate;\r\n\r\n if (this.selectedDate instanceof DateRange) {\r\n this.setRangeDates(this.selectedDate.start);\r\n this.setRangeDates(this.selectedDate.end);\r\n\r\n if (this.calendar)\r\n this.calendar.activeDate = this.startDate;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setMatCalendarContainerHeight();\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n private setMatCalendarContainerHeight() {\r\n const calendarHeight = this.hostElement.querySelector(calendarLibrarySelector)?.clientHeight;\r\n const cellHeight = this.hostElement.querySelector(calendarLibraryBodyCellSelector)?.clientHeight;\r\n\r\n // if (calendarHeight && cellHeight)\r\n // this.matCalendarContainerHeight = calendarHeight + cellHeight;\r\n }\r\n\r\n _onSelectedDateChange(date: Date): void {\r\n if (!this.rangeMode) {\r\n this.handleSingleDateMode(date)\r\n return;\r\n }\r\n\r\n this.handleRangeMode(date);\r\n }\r\n\r\n private handleSingleDateMode(date: Date) {\r\n this.selectedDate = date;\r\n this.dateChange.emit(date);\r\n }\r\n\r\n private handleRangeMode(date: Date) {\r\n this.setRangeDates(date);\r\n\r\n this.selectedDate = new DateRange(this.startDate, this.endDate);\r\n\r\n if (this.startDate && this.endDate)\r\n this.dateChange.emit(this.selectedDate);\r\n }\r\n\r\n private setRangeDates(date: Date | null) {\r\n if (!date)\r\n return;\r\n\r\n if (!this.startDate) {\r\n this.startDate = date;\r\n return;\r\n };\r\n\r\n if (!this.endDate && this.dateAdapter.compareDate(date, this.startDate) >= 0) {\r\n this.endDate = date;\r\n return;\r\n };\r\n\r\n this.startDate = date;\r\n this.endDate = null;\r\n }\r\n\r\n _minDateFilter = (date: Date): boolean => {\r\n if (!this.minDate)\r\n return true;\r\n\r\n return date >= this.minDate;\r\n }\r\n}","<div [ngStyle]=\"{ 'height.px': matCalendarContainerHeight }\">\r\n <mat-calendar #calendar [dateFilter]=\"_minDateFilter\" [selected]=\"selectedDate\"\r\n (selectedChange)=\"_onSelectedDateChange($event)\">\r\n </mat-calendar>\r\n</div>","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { svgsStrings } from 'herum-shared/constants';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-download-file',\r\n templateUrl: './herum-download-file.component.html',\r\n styleUrls: ['./herum-download-file.component.scss']\r\n})\r\nexport class HerumDownloadFileComponent {\r\n\r\n @Input() fileId: string;\r\n @Input() filePath: string = '';\r\n @Input() linkText: string = 'להורדת הקובץ';\r\n\r\n @Output() downloadFile = new EventEmitter<string>();\r\n\r\n @ViewChild('downloadFile') downloadFileElement: ElementRef;\r\n\r\n ngAfterViewInit() {\r\n if (this.downloadFileElement && this.filePath)\r\n this.downloadFileElement.nativeElement.setAttribute('href', this.filePath);\r\n }\r\n\r\n _onDownloadFile(fileId: string) {\r\n if (this.filePath)\r\n return;\r\n\r\n this.downloadFile.emit(fileId);\r\n }\r\n\r\n get downloadFileSvgString() {\r\n return svgsStrings.downloadFile;\r\n }\r\n}","<a #downloadFile class=\"download-file\" (click)=\"_onDownloadFile(fileId)\">\r\n <span class=\"download-file-icon\" [innerHTML]=\"downloadFileSvgString | safeHtml\"></span>\r\n <span class=\"clickable-text\">{{ linkText }}</span>\r\n</a>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-ellipsis-loader',\r\n templateUrl: './herum-ellipsis-loader.component.html',\r\n styleUrls: ['./herum-ellipsis-loader.component.scss']\r\n})\r\nexport class HerumEllipsisLoaderComponent { }","<div class=\"herum-ellipsis\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-icon-label',\r\n templateUrl: './herum-icon-label.component.html',\r\n styleUrls: ['./herum-icon-label.component.scss']\r\n})\r\nexport class HerumIconLabelComponent {\r\n\r\n @Input() iconPath: string = '';\r\n @Input() isLoading: boolean = false;\r\n}","<div class=\"label-container\">\r\n <img [src]=\"iconPath\">\r\n <p class=\"m-0\" [ngClass]=\"{'content-skeleton': isLoading, 'skeleton': isLoading}\">\r\n <ng-content *ngIf=\"!isLoading\"></ng-content>\r\n </p>\r\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'app-herum-indeterminate',\r\n templateUrl: './herum-indeterminate.component.html',\r\n styleUrls: ['./herum-indeterminate.component.scss']\r\n})\r\nexport class HerumIndeterminateComponent { }","<div class=\"checkbox-wrapper-48\">\r\n <label><input type=\"checkbox\" name=\"cb\"></label>\r\n</div>","import { Directive, Input, ElementRef, Renderer2 } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[appConditionalFormControlName]'\r\n})\r\nexport class ConditionalFormControlNameDirective {\r\n\r\n @Input('appConditionalFormControlName') set formControlName(value: string) {\r\n this.controlName = value;\r\n this.updateFormControlName();\r\n }\r\n\r\n private controlName!: string;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private ngControl: NgControl\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.updateFormControlName();\r\n }\r\n\r\n private updateFormControlName() {\r\n if (this.controlName && this.ngControl) {\r\n this.renderer.setAttribute(this.el.nativeElement, 'formControlName', this.controlName);\r\n } else {\r\n this.renderer.removeAttribute(this.el.nativeElement, 'formControlName');\r\n }\r\n }\r\n}","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-logo',\r\n templateUrl: './herum-logo.component.html',\r\n styleUrls: ['./herum-logo.component.scss']\r\n})\r\nexport class HerumLogoComponent {\r\n\r\n @Input() logoTextSize: 'bigSize' | 'defaultSize' = 'defaultSize';\r\n @Input() logoTextColor: 'primaryColor' | 'secondaryColor' = 'primaryColor';\r\n @Input() logoText: string = 'בית הספר הדיגיטלי לחירום';\r\n\r\n get logoTextWidth() {\r\n return this.logoTextSize === 'defaultSize' ? 'default-text-size-width' : 'big-text-size-width';\r\n }\r\n}","<div class=\"logo-container\">\r\n <img src=\"/lib/assets/general/owl-logo.svg\" id=\"logo\">\r\n <span class=\"logo-text\" [ngClass]=\"[logoTextSize, logoTextColor, logoTextWidth]\">{{logoText}}</span>\r\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IdentifiedEntity } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-options-list',\r\n templateUrl: './herum-options-list.component.html',\r\n styleUrls: [\r\n './herum-options-list.component.scss',\r\n '../../assets/shared/atoms/selects/herum-selects.component.scss'\r\n ]\r\n})\r\nexport class HerumOptionsListComponent {\r\n\r\n @Input() options!: IdentifiedEntity[];\r\n @Input() selectedOptions!: IdentifiedEntity[];\r\n @Input() isContentInsideExpendablePanel: boolean = false;\r\n @Input() isInternalMode: boolean = true;\r\n\r\n @Output() selectedOptionsEmitter = new EventEmitter<IdentifiedEntity>();\r\n\r\n _onSelect(option: IdentifiedEntity) {\r\n this.selectedOptionsEmitter.emit(option);\r\n }\r\n\r\n isOptionSelected(option: IdentifiedEntity) {\r\n if (!option)\r\n return false;\r\n\r\n return this.selectedOptions.some(selectedOption => selectedOption.id === option.id);\r\n }\r\n}","<a class=\"option\" *ngFor=\"let option of options\" (click)=\"_onSelect(option)\"\r\n [ngClass]=\"{\r\n 'selected': isOptionSelected(option),\r\n 'expendable-panel-content': isContentInsideExpendablePanel,\r\n 'internal': isInternalMode}\">\r\n {{ option?.name }}\r\n</a>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { IdentifiedEntity, RecursiveTitledOption } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-recursive-hierarchy-options-list',\r\n templateUrl: './herum-recursive-hierarchy-options-list.component.html',\r\n styleUrls: ['./herum-recursive-hierarchy-options-list.component.scss']\r\n})\r\nexport class HerumRecursiveHierarchyOptionsListComponent {\r\n\r\n @Input() options!: IdentifiedEntity[];\r\n @Input() selectedOptions!: IdentifiedEntity[];\r\n @Input() recursiveTitledOption!: RecursiveTitledOption;\r\n\r\n @Output() selectedOptionsEmitter = new EventEmitter<IdentifiedEntity>();\r\n @Output() selectedRecursiveOptionsEmitter = new EventEmitter<RecursiveTitledOption>();\r\n\r\n _onSelect(option: RecursiveTitledOption) {\r\n this.selectedOptionsEmitter.emit(option.data);\r\n this.selectedRecursiveOptionsEmitter.emit(option)\r\n }\r\n\r\n _isOptionSelected(option: IdentifiedEntity) {\r\n return this.selectedOptions.some(selectedOption => selectedOption.id === option.id);\r\n }\r\n}","<ng-container *ngTemplateOutlet=\"recursiveTitledOptionTemplate; context:{ $implicit: recursiveTitledOption }\">\r\n</ng-container>\r\n\r\n<ng-template #recursiveTitledOptionTemplate let-recursiveTitledOption>\r\n <ng-container>\r\n <div class=\"option-container internal\">\r\n <img src=\"../../assets/general/chevron.svg\" class=\"internal\"\r\n *ngIf=\"recursiveTitledOption.childrens.length > 0\"\r\n [class]=\"recursiveTitledOption.isExpended ? 'open' : 'closed'\"\r\n (click)=\"recursiveTitledOption.isExpended=!recursiveTitledOption.isExpended\">\r\n <a class=\"option internal w-100\" (click)=\"_onSelect(recursiveTitledOption)\"\r\n [ngClass]=\"{'selected': _isOptionSelected(recursiveTitledOption)}\">\r\n {{recursiveTitledOption.data.name}}\r\n </a>\r\n </div>\r\n\r\n <ng-container *ngIf=\"recursiveTitledOption.isExpended\">\r\n <div class=\"childrens\">\r\n <ng-container *ngFor=\"let children of recursiveTitledOption.childrens\">\r\n <ng-container *ngTemplateOutlet=\"recursiveTitledOptionTemplate; context:{ $implicit: children }\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>","import { Component, EventEmitter, Input, Output, SimpleChanges, forwardRef, ViewChild, HostListener, ElementRef } from '@angular/core';\r\nimport { HerumInputFieldComponent } from '../herum-input-field/herum-input-field.component';\r\nimport { openClose } from 'herum-shared/animations';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdentifiedEntity, RecursiveTitledOption } from 'herum-shared/herum-types';\r\nimport { getDropdownAnimationStates } from 'herum-shared/utils';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nconst CUSTOM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumMultiSelectComponent),\r\n multi: true,\r\n};\r\n\r\nconst selectedOptionsInput: string = 'selectedOptionsInput';\r\nconst optionsInput: string = 'options';\r\nconst titledOptionsList: string = 'titledOptionsList';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-multi-select',\r\n templateUrl: './herum-multi-select.component.html',\r\n styleUrls: ['./herum-multi-select.component.scss',\r\n '../../assets/shared/atoms/selects/herum-selects.component.scss'],\r\n providers: [CUSTOM_MULTI_SELECT_CONTROL_VALUE_ACCESSOR],\r\n animations: [openClose]\r\n})\r\nexport class HerumMultiSelectComponent implements ControlValueAccessor {\r\n\r\n @HostListener('window:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n this.closeDropdown(event);\r\n }\r\n\r\n @Input() placeholder: string = 'בחר/י...';\r\n\r\n @Input() options!: IdentifiedEntity[];\r\n @Input() titledOptionsList!: { title: string, options: IdentifiedEntity[] }[];\r\n @Input() recursiveTitledOption!: RecursiveTitledOption[] | RecursiveTitledOption;\r\n\r\n @Input() selectedOptionsInput!: IdentifiedEntity[];\r\n @Input() maxChips: number = 2;\r\n @Input() disabled: boolean = false;\r\n @Input() size: 'fit' | 'default' | 'responsive' = 'default';\r\n @Input() isDropDownInPositionFixed: boolean = false;\r\n @Input() dropDownDirection: 'upwards' | 'downwards' = 'downwards';\r\n @Input() isMultiHeads: boolean = false;\r\n\r\n @Output() selectedOptions = new EventEmitter<IdentifiedEntity[]>();\r\n @Output() selectedRecursiveOptions = new EventEmitter<RecursiveTitledOption>();\r\n\r\n @ViewChild('filterInput') filterInput: HerumInputFieldComponent;\r\n @ViewChild('dropContainer') dropContainer: ElementRef;\r\n\r\n filteredOptions!: IdentifiedEntity[];\r\n filteredTitledOptionsList!: { title: string, options: IdentifiedEntity[] }[];\r\n\r\n selectedOptionsValue: IdentifiedEntity[] = [];\r\n isDropdownOpen = false;\r\n isShowAll: boolean = false;\r\n currentDropdownId: string = '';\r\n destroySubject$ = new Subject<null>();\r\n componentId: string = '';\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes[selectedOptionsInput] && changes[selectedOptionsInput].currentValue?.length && !this.selectedOptionsValue.length)\r\n this.selectedOptionsValue = changes[selectedOptionsInput].currentValue;\r\n\r\n if (changes[optionsInput] && changes[optionsInput].currentValue?.length && !this.filteredOptions)\r\n this.filteredOptions = changes[optionsInput].currentValue;\r\n\r\n if (changes[titledOptionsList] && changes[titledOptionsList].currentValue?.length)\r\n this.filteredTitledOptionsList = changes[titledOptionsList].currentValue;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentId = uuidv4();\r\n this.dropContainer.nativeElement.id += `component-id-${this.componentId}`;\r\n }\r\n\r\n _onStopPropagation(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n\r\n _onFilterDropDown(text: string) {\r\n if (!text) {\r\n this.setFilteredOptionsTypes()\r\n return;\r\n }\r\n\r\n this.getFilteredOptions(text);\r\n }\r\n\r\n private setFilteredOptionsTypes() {\r\n if (this.options)\r\n this.filteredOptions = this.options;\r\n else if (this.filteredTitledOptionsList) {\r\n this.filteredTitledOptionsList = this.titledOptionsList.map(titledOptions => ({\r\n title: titledOptions.title,\r\n options: titledOptions.options\r\n }));\r\n }\r\n }\r\n\r\n private getFilteredOptions(text: string) {\r\n if (this.titledOptionsList) {\r\n this.filteredTitledOptionsList = this.titledOptionsList.map(titledOptions => ({\r\n title: titledOptions.title,\r\n options: this.getFilteredList(titledOptions.options, text)\r\n }));\r\n }\r\n else\r\n this.filteredOptions = this.options.filter(filteredOption => filteredOption.name.includes(text));\r\n }\r\n\r\n private getFilteredList(options: IdentifiedEntity[], text: string) {\r\n return options.filter(option => option?.name.includes(text));\r\n }\r\n\r\n _select(option: IdentifiedEntity): void {\r\n this.resetFiltering();\r\n\r\n if (this.selectedOptionsValue.find((selectedOption) => selectedOption.id === option.id))\r\n this.removeSelectedOption(option);\r\n else\r\n this.selectedOptionsValue.push(option);\r\n\r\n this.onChange(this.selectedOptionsValue);\r\n this.selectedOptions.emit(this.selectedOptionsValue);\r\n }\r\n\r\n _selectRecursive(selectedRecursiveOptions: RecursiveTitledOption) {\r\n this.selectedRecursiveOptions.emit(selectedRecursiveOptions)\r\n }\r\n\r\n private removeSelectedOption(option: IdentifiedEntity): void {\r\n const index = this.selectedOptionsValue.findIndex(((selectedOption) => selectedOption.id === option.id));\r\n\r\n if (index >= 0)\r\n this.selectedOptionsValue.splice(index, 1);\r\n\r\n this.onChange(this.selectedOptionsValue);\r\n this.selectedOptions.emit(this.selectedOptionsValue);\r\n }\r\n\r\n getLimitedList() {\r\n if (this.selectedOptionsValue?.length < this.maxChips)\r\n return this.selectedOptionsValue;\r\n\r\n return this.selectedOptionsValue.slice(0, this.maxChips);\r\n }\r\n\r\n _getHiddenOptions() {\r\n return this.selectedOptionsValue.map(selectedOptionValue => selectedOptionValue.name).slice(this.maxChips).join(',');\r\n }\r\n\r\n showAll() {\r\n this.isShowAll = !this.isShowAll;\r\n }\r\n\r\n isOptionSelected(option: IdentifiedEntity) {\r\n return this.selectedOptionsValue.find((selectedOption) => selectedOption.id === option.id);\r\n }\r\n\r\n toggleDropdown() {\r\n this.isDropdownOpen = !this.isDropdownOpen;\r\n }\r\n\r\n closeDropdown(event: MouseEvent) {\r\n if (!this.isDropdownOpen)\r\n return;\r\n\r\n const isClickedOutsideComponent: boolean = event.composedPath().some(path => (path as HTMLElement).id?.includes(this.componentId));\r\n\r\n if (!(event.target as HTMLElement).matches('.internal') || !isClickedOutsideComponent) {\r\n this.isDropdownOpen = false;\r\n\r\n if (this.filterInput)\r\n this.resetFiltering();\r\n }\r\n }\r\n\r\n private resetFiltering() {\r\n this.filterInput?.clearInput();\r\n this.filteredOptions = this.options;\r\n }\r\n\r\n get dropdownClasses(): string {\r\n let classes = `dropdown-content dropdown-${this.dropDownDirection} ${this.size}-dropdown`;\r\n\r\n if (this.isDropDownInPositionFixed)\r\n classes += ' fixed';\r\n\r\n classes += (this.filteredOptions?.length || this.filteredTitledOptionsList?.length) ? ' scrollable-settings' :\r\n (Array.isArray(this.recursiveTitledOption) && this.recursiveTitledOption?.length) ? ' big-scroll-view' : ' overflow-hidden';\r\n\r\n return classes;\r\n }\r\n\r\n hasNoResults(): boolean {\r\n if (this.titledOptionsList)\r\n return this.filteredTitledOptionsList?.every(filteredTitledOptions => filteredTitledOptions.options.length === 0);\r\n\r\n return !this.filteredOptions?.length && !this.recursiveTitledOption;\r\n }\r\n\r\n get optionsLength(): number {\r\n if (this.titledOptionsList) {\r\n let optionsList = this.titledOptionsList?.map(titledOptions => titledOptions.options)\r\n return optionsList.reduce((total, currentArray) => { return total + currentArray.length; }, 0);\r\n }\r\n\r\n return this.options?.length;\r\n }\r\n\r\n get _getDropdownStates() {\r\n return getDropdownAnimationStates(this.isDropdownOpen, this.dropDownDirection);\r\n }\r\n\r\n onChange: (value: any) => void = () => { }\r\n\r\n onTouched: () => void = () => { }\r\n\r\n writeValue(selectedOptionsValue: IdentifiedEntity[]): void {\r\n this.selectedOptionsValue = selectedOptionsValue || [];\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n showErrors() { }\r\n\r\n ngOnDestroy() {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n}","<div #dropContainer class=\"dropdown\" dir=\"rtl\" [ngClass]=\"{'w-100': size === 'responsive'}\">\r\n <button class=\"drop-button internal\" [class]=\"size\"\r\n [ngClass]=\"(isDropdownOpen ? 'open-drop-button-' + dropDownDirection : '')\" (click)=\"toggleDropdown()\">\r\n <span class=\"button-placeholder internal\" *ngIf=\"!selectedOptionsValue?.length\">{{placeholder}}</span>\r\n\r\n <div class=\"herum-chips-container\">\r\n <herum-chip *ngFor=\"let option of getLimitedList()\" [title]=\"option.name\"\r\n (remove)=\"removeSelectedOption(option)\"></herum-chip>\r\n\r\n <ng-container *ngIf=\"selectedOptionsValue && selectedOptionsValue.length > maxChips\">\r\n <herum-chip class=\"last-chip\" [matTooltip]=\"_getHiddenOptions()\"\r\n [title]=\"(selectedOptionsValue.length - maxChips) + '+'\" [isDeleteButtonNeeded]=\"false\">\r\n </herum-chip>\r\n </ng-container>\r\n </div>\r\n\r\n <span class=\"shevron-icon internal\" [ngClass]=\"{'rotate-chevron': isDropdownOpen}\">\r\n <svg class=\"internal\" xmlns=\"http://www.w3.org/2000/svg\" width=\"11.299\" height=\"6.649\" viewBox=\"0 0 11.299 6.649\">\r\n <path id=\"Vector_43-2\" data-name=\"Vector 43-2\" d=\"M1006.235,549.5,1002,553.735l-4.236-4.235\"\r\n transform=\"translate(-996.35 -548.086)\" fill=\"none\" stroke=\"var(--icons-color)\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" />\r\n </svg>\r\n </span>\r\n </button>\r\n\r\n <div id=\"myDropdown\" class=\"internal\" [ngClass]=\"dropdownClasses\" [@openClose]=\"_getDropdownStates\">\r\n <herum-input-field #filterInput *ngIf=\"optionsLength>2\" class=\"input-filter\" [type]=\"'search'\"\r\n [placeholder]=\"'חפש/י ערך מבוקש...'\" (click)=\"_onStopPropagation($event)\"\r\n (inputValueEmitter)=\"_onFilterDropDown($event)\"></herum-input-field>\r\n\r\n <ng-container *ngIf=\"options\">\r\n <herum-options-list [options]=\"filteredOptions\" [selectedOptions]=\"selectedOptionsValue\"\r\n (selectedOptionsEmitter)=\"_select($event)\">\r\n </herum-options-list>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"titledOptionsList\">\r\n <ng-container *ngFor=\"let filteredTitledOptions of filteredTitledOptionsList\">\r\n <herum-expendable-panel [title]=\"filteredTitledOptions.title\" [isBoldTitle]=\"true\">\r\n <herum-options-list [options]=\"filteredTitledOptions.options\"\r\n [isContentInsideExpendablePanel]=\"true\" [selectedOptions]=\"selectedOptionsValue\"\r\n (selectedOptionsEmitter)=\"_select($event)\"></herum-options-list>\r\n </herum-expendable-panel>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"recursiveTitledOption\">\r\n <ng-container *ngIf=\"isMultiHeads\">\r\n <herum-recursive-hierarchy-options-list *ngFor=\"let treeHead of recursiveTitledOption\"\r\n [recursiveTitledOption]=\"treeHead\" [selectedOptions]=\"selectedOptionsValue\"\r\n (selectedOptionsEmitter)=\"_select($event)\"\r\n (selectedRecursiveOptionsEmitter)=\"_selectRecursive($event)\">\r\n </herum-recursive-hierarchy-options-list>\r\n </ng-container>\r\n\r\n <herum-recursive-hierarchy-options-list *ngIf=\"!isMultiHeads\"\r\n [recursiveTitledOption]=\"recursiveTitledOption\" [selectedOptions]=\"selectedOptionsValue\"\r\n (selectedOptionsEmitter)=\"_select($event)\">\r\n </herum-recursive-hierarchy-options-list>\r\n </ng-container>\r\n\r\n <a class=\"text-center\" *ngIf=\"hasNoResults()\">לא נמצאו תוצאות</a>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { ResourceState } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-narrow-collection-menu-item',\r\n templateUrl: './herum-narrow-collection-menu-item.component.html',\r\n styleUrls: ['./herum-narrow-collection-menu-item.component.scss']\r\n})\r\nexport class HerumNarrowCollectionMenuItemComponent {\r\n\r\n @Input() index!: string;\r\n @Input() item!: {};\r\n @Input() itemState!: {};\r\n\r\n @Output() itemEmitter = new EventEmitter();\r\n\r\n isAvailable!: boolean;\r\n isActive!: boolean;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['itemState'])\r\n this.setItemState();\r\n }\r\n\r\n _onSelectItem() {\r\n this.itemEmitter.emit(this.item);\r\n }\r\n\r\n setItemState() {\r\n switch (this.itemState) {\r\n case ResourceState.default:\r\n break;\r\n case ResourceState.isActive:\r\n this.isActive = true;\r\n break;\r\n case ResourceState.isAvailable:\r\n this.isAvailable = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}","<div class=\"item\" (click)=\"_onSelectItem()\" [ngClass]=\"{'not-seen': isAvailable,'active-item': isActive}\">\r\n {{index}}\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-no-result-message',\r\n templateUrl: './herum-no-result-message.component.html',\r\n styleUrls: ['./herum-no-result-message.component.scss']\r\n})\r\nexport class HerumNoResultMessageComponent {\r\n\r\n @Input() mainTitle: string = 'לא נמצאו תוצאות לחיפוש שלך';\r\n @Input() secondaryTitle: string = 'ניתן לנסות לחפש משהו אחר שיניב אולי תוצאות';\r\n @Input() alignItems: 'center' | 'right' = 'center';\r\n @Input() iconSize: 'small' | 'big' = 'small';\r\n}","<div class=\"no-result-container\" [ngClass]=\"alignItems\">\r\n <img [ngClass]=\"iconSize\" src=\"assets/shared/icons/no-result-owl.png\">\r\n\r\n <div class=\"titles-container\" [ngClass]=\"alignItems\">\r\n <h1 class=\"section-big-title\">{{ mainTitle }}</h1>\r\n <h2 class=\"section-title\"> {{ secondaryTitle }}</h2>\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { types, svgsStrings } from 'herum-shared/constants';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-paginator',\r\n templateUrl: './herum-paginator.component.html',\r\n styleUrls: ['./herum-paginator.component.scss']\r\n})\r\nexport class HerumPaginatorComponent {\r\n\r\n @Input() numberOfSlots: number = 7;\r\n @Input() elementsToSlice!: Array<unknown>;\r\n @Input() numberOfElementsInPage!: number;\r\n @Input() currentPage: number = 1;\r\n @Input() totalPages!: number;\r\n @Input() showArrows: boolean = true;\r\n @Input() slicerMode: boolean = false;\r\n\r\n @Output() slicedElements = new EventEmitter<Array<unknown>>();\r\n @Output() currentPageChange = new EventEmitter<number>();\r\n @Output() paginatorRenderChange = new EventEmitter();\r\n\r\n @ViewChild('element') element!: ElementRef;\r\n\r\n visiblePages: Array<number | string> = [];\r\n\r\n startEllipsisPosition: number = 4;\r\n endEllipsisPosition: number = -3;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['elementsToSlice']?.currentValue && !this.totalPages && this.numberOfElementsInPage)\r\n this.totalPages = Math.ceil((this.elementsToSlice.length / this.numberOfElementsInPage));\r\n\r\n if (changes['totalPages']?.currentValue || changes['elementsToSlice']?.currentValue || changes['numberOfElementsInPage']?.currentValue)\r\n this.updateVisiblePages();\r\n\r\n if (changes['totalPages']?.currentValue) {\r\n this.changeDetectorRef.detectChanges();\r\n\r\n window.requestAnimationFrame(_ => {\r\n if (this.totalPages > 1)\r\n this.paginatorRenderChange.emit();\r\n });\r\n }\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.updateVisiblePages();\r\n this.numberOfSlotsValidation();\r\n this.showArrowsValidation();\r\n }\r\n\r\n private showArrowsValidation() {\r\n const isOneMiddleSlot = this.numberOfSlots < 6;\r\n\r\n if (isOneMiddleSlot && !this.showArrows)\r\n this.showArrows = true;\r\n }\r\n\r\n private numberOfSlotsValidation() {\r\n if (this.numberOfSlots < 5)\r\n this.numberOfSlots = 5;\r\n }\r\n\r\n _onChangePage(page: number | string): void {\r\n if (!this.isValidPageNumber(page))\r\n return;\r\n\r\n this.currentPage = page as number;\r\n this.currentPageChange.emit(this.currentPage);\r\n this.updateVisiblePages();\r\n }\r\n\r\n private updateVisiblePages(): void {\r\n this.visiblePages = [];\r\n\r\n if (this.shouldShowAllPages()) {\r\n this.displayAllPages();\r\n return;\r\n }\r\n\r\n this.addFirstPage();\r\n this.addStartEllipsis();\r\n this.addMiddlePagesSlots();\r\n this.addEndEllipsis();\r\n this.addLastPage();\r\n this.emitElementsPerCurrentPage();\r\n }\r\n\r\n private shouldShowAllPages(): boolean {\r\n return this.totalPages <= this.numberOfSlots;\r\n }\r\n\r\n private displayAllPages(): void {\r\n this.visiblePages = Array.from({ length: this.totalPages }, (_, index) => index + 1);\r\n this.emitElementsPerCurrentPage();\r\n }\r\n\r\n private addFirstPage(): void {\r\n this.visiblePages.push(1);\r\n }\r\n\r\n private addStartEllipsis(): void {\r\n if (this.currentPage >= this.startEllipsisPosition)\r\n this.visiblePages.push('...');\r\n }\r\n\r\n private addMiddlePagesSlots(): void {\r\n const { start, end } = this.calculateMiddlePageSlots();\r\n const middlePages = Array.from({ length: end - start + 1 }, (_, index) => start + index);\r\n\r\n middlePages.forEach(page => this.visiblePages.push(page));\r\n }\r\n\r\n private calculateMiddlePageSlots(): { start: number, end: number } {\r\n const middleStartPageNumber = Math.max(2, this.currentPage - 1);\r\n const middleEndPageNumber = Math.min(this.totalPages - 1, this.currentPage + 1);\r\n\r\n const availableMiddleSlots = this.calculateAvailableMiddleSlots();\r\n const currentMiddleItemsCount = middleEndPageNumber - middleStartPageNumber + 1;\r\n\r\n if (currentMiddleItemsCount < availableMiddleSlots)\r\n return this.expandMiddleRange(middleStartPageNumber, middleEndPageNumber, availableMiddleSlots, currentMiddleItemsCount);\r\n\r\n if (currentMiddleItemsCount > availableMiddleSlots)\r\n return this.shrinkMiddleRange(middleStartPageNumber, middleEndPageNumber, availableMiddleSlots, currentMiddleItemsCount);\r\n\r\n return { start: middleStartPageNumber, end: middleEndPageNumber };\r\n }\r\n\r\n private calculateAvailableMiddleSlots(): number {\r\n const startEllipsisCount = this.currentPage >= this.startEllipsisPosition ? 1 : 0;\r\n const endEllipsisCount = this.currentPage <= this.totalPages + this.endEllipsisPosition ? 1 : 0;\r\n const firstPageCount = 1;\r\n const lastPageCount = 1;\r\n\r\n return this.numberOfSlots - firstPageCount - lastPageCount - startEllipsisCount - endEllipsisCount;\r\n }\r\n\r\n private expandMiddleRange(start: number, end: number, availableSlots: number, currentMiddleItemsCount: number): { start: number, end: number } {\r\n const slotsToAdd = availableSlots - currentMiddleItemsCount;\r\n const isExpandFromStart = start === 2;\r\n const isExpandFromEnd = end === this.totalPages - 1;\r\n\r\n if (isExpandFromStart)\r\n return { start, end: Math.min(this.totalPages - 1, end + slotsToAdd) };\r\n\r\n if (isExpandFromEnd)\r\n return { start: Math.max(2, start - slotsToAdd), end };\r\n\r\n const startExpand = Math.floor(slotsToAdd / 2);\r\n const endExpand = slotsToAdd - startExpand;\r\n\r\n return {\r\n start: Math.max(2, start - startExpand),\r\n end: Math.min(this.totalPages - 1, end + endExpand)\r\n };\r\n }\r\n\r\n private shrinkMiddleRange(start: number, end: number, availableSlots: number, currentMiddleItemsCount: number): { start: number, end: number } {\r\n if (availableSlots === 1)\r\n return { start: this.currentPage, end: this.currentPage };\r\n\r\n const slotsToRemove = currentMiddleItemsCount - availableSlots;\r\n const distanceToStart = this.currentPage - start;\r\n const distanceToEnd = end - this.currentPage;\r\n\r\n if (distanceToStart > distanceToEnd)\r\n return { start: start + slotsToRemove, end };\r\n\r\n return { start, end: end - slotsToRemove };\r\n }\r\n\r\n private addEndEllipsis(): void {\r\n if (this.currentPage < this.totalPages - 2)\r\n this.visiblePages.push('...');\r\n }\r\n\r\n private addLastPage(): void {\r\n this.visiblePages.push(this.totalPages);\r\n }\r\n\r\n private emitElementsPerCurrentPage(): void {\r\n if (!this.slicerMode || !this.elementsToSlice)\r\n return;\r\n\r\n const startIndex = this.numberOfElementsInPage * (this.currentPage - 1);\r\n const endIndex = this.numberOfElementsInPage * this.currentPage;\r\n const slicedItems = this.elementsToSlice.slice(startIndex, endIndex);\r\n\r\n this.slicedElements.emit(slicedItems);\r\n }\r\n\r\n private isValidPageNumber(page: number | string): boolean {\r\n return (typeof page === types.number) && page as number >= 1 && page as number <= this.totalPages;\r\n }\r\n\r\n _isNumber(value: any): boolean {\r\n return typeof value === types.number;\r\n }\r\n\r\n get chevronIcon() {\r\n return svgsStrings.chevron;\r\n }\r\n}\r\n","<div #element *ngIf=\"totalPages > 1\" class=\"paginator-container\">\r\n <span *ngIf=\"showArrows\" [ngClass]=\"{'cursor-not-allowed': currentPage === 1}\" class=\"item chevron right-chevron\"\r\n [innerHTML]=\"chevronIcon | safeHtml\" (click)=\"_onChangePage(currentPage -1)\">\r\n </span>\r\n\r\n <ng-container *ngFor=\"let item of visiblePages\">\r\n <span class=\"item\" *ngIf=\"_isNumber(item); else ellipsis\" (click)=\"_onChangePage(item)\"\r\n [ngClass]=\"{'herum-card': currentPage === item}\">\r\n {{ item }}\r\n </span>\r\n\r\n <ng-template #ellipsis>\r\n <span class=\"ellipsis\">{{ item }}</span>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <span *ngIf=\"showArrows\" [ngClass]=\"{'cursor-not-allowed': currentPage === totalPages}\"\r\n class=\"item chevron left-chevron\" [innerHTML]=\"chevronIcon | safeHtml\"\r\n (click)=\"_onChangePage(currentPage + 1)\">\r\n </span>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { IdentifiedEntity } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-panel-links',\r\n templateUrl: './herum-panel-links.component.html',\r\n styleUrls: ['./herum-panel-links.component.scss']\r\n})\r\nexport class HerumPanelLinksComponent {\r\n\r\n @Input() selectedLink!: IdentifiedEntity;\r\n @Input() links!: IdentifiedEntity[];\r\n @Output() linkEmitter = new EventEmitter<IdentifiedEntity>();\r\n\r\n _onClick(link: IdentifiedEntity) {\r\n this.selectedLink = link;\r\n this.linkEmitter.emit(link);\r\n }\r\n\r\n _isActiveLink(linkId: string) {\r\n return this.selectedLink?.id === linkId;\r\n }\r\n}","<div class=\"links-container\">\r\n <a *ngFor=\"let link of links\" class=\"link-item\" [ngClass]=\"{'active-link':_isActiveLink(link.id)}\"\r\n (click)=\"_onClick(link)\">\r\n\r\n <span class=\"link-text\">\r\n {{link.name}}\r\n </span>\r\n </a>\r\n</div>","import { Component, Input, EventEmitter, Output, ViewChild, forwardRef, SimpleChanges, ElementRef, HostListener } from '@angular/core';\r\nimport { HerumInputFieldComponent } from '../herum-input-field/herum-input-field.component';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { openClose } from 'herum-shared/animations';\r\nimport { Subject } from 'rxjs';\r\nimport { IdentifiedEntity } from 'herum-shared/herum-types';\r\nimport { getDropdownAnimationStates } from 'herum-shared/utils';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nconst dummySkeletonArray = [1, 2, 3, 4];\r\n\r\nconst CUSTOM_SELECT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumSelectComponent),\r\n multi: true,\r\n};\r\nconst optionsInput: string = 'options';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-select',\r\n templateUrl: './herum-select.component.html',\r\n styleUrls: [\r\n './herum-select.component.scss',\r\n '../../assets/shared/atoms/selects/herum-selects.component.scss'\r\n ],\r\n providers: [CUSTOM_SELECT_CONTROL_VALUE_ACCESSOR],\r\n animations: [openClose]\r\n})\r\nexport class HerumSelectComponent implements ControlValueAccessor {\r\n\r\n @Input() options: IdentifiedEntity[] = [];\r\n @Input() displayBy: string = 'name';\r\n @Input() placeholder: string = 'בחר/י...';\r\n @Input() selectedOption!: IdentifiedEntity;\r\n @Input() disabled: boolean = false;\r\n @Input() isDropDownInPositionFixed: boolean = false;\r\n @Input() iconPath: string = '';\r\n @Input() isAutoComplete: boolean = false;\r\n @Input() title: string = '';\r\n @Input() size: 'min' | 'fit' | 'default' | 'big' | 'responsive' | 'fill-container' = 'default';\r\n @Input() displayLoadingMode: boolean = false;\r\n @Input() isLoadingInput: boolean = false;\r\n @Input() dropDownDirection: 'upwards' | 'downwards' = 'downwards';\r\n @Input() filterPlaceholder = \"חפש/י...\"\r\n @Input() debounceTime: number = 0;\r\n\r\n @Output() selectedOptionEmitter = new EventEmitter<IdentifiedEntity>();\r\n @Output() filterTextEmitter = new EventEmitter<string>();\r\n\r\n @ViewChild('filterInput') filterInput: HerumInputFieldComponent;\r\n @ViewChild('dropContainer') dropContainer: ElementRef;\r\n @ViewChild('dropdown') dropdown: ElementRef;\r\n\r\n @HostListener('window:click', ['$event'])\r\n onClick(event: MouseEvent) {\r\n this.closeDropdown(event);\r\n }\r\n\r\n narrowSelect: boolean = false\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: Event) {\r\n this.narrowSelect = window.innerWidth < 1300 && !!this.iconPath;\r\n }\r\n\r\n filteredOptions: IdentifiedEntity[] = [];\r\n isDropdownOpen: boolean = false;\r\n destroySubject$ = new Subject<null>();\r\n componentId: string = '';\r\n\r\n get errorOccurred() {\r\n this.placeholder = 'התרחשה שגיאה בקבלת פרטי המשתמש';\r\n return false;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.narrowSelect = window.innerWidth < 1300 && !!this.iconPath;\r\n if (this.isAutoComplete && !this.isLoadingInput || changes[optionsInput]?.currentValue?.length && !this.filteredOptions?.length)\r\n this.filteredOptions = changes[optionsInput]?.currentValue;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.componentId = uuidv4();\r\n this.dropContainer.nativeElement.id += `component-id-${this.componentId}`;\r\n }\r\n\r\n _onSelectOption(selectedOption: IdentifiedEntity) {\r\n this.resetFiltering();\r\n this.selectedOption = selectedOption;\r\n this.onChange(selectedOption);\r\n this.selectedOptionEmitter.emit(selectedOption);\r\n }\r\n\r\n _onStopPropagation(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n\r\n _onFilterDropDown(text: string) {\r\n this.filteredOptions = this.options;\r\n if (!text && !this.isAutoComplete)\r\n return;\r\n\r\n if (!this.isAutoComplete)\r\n this.filteredOptions = this.options.filter(filteredOption => filteredOption[this.displayBy].includes(text));\r\n\r\n this.filterTextEmitter.emit(text);\r\n }\r\n\r\n toggleDropdown() {\r\n this.isDropdownOpen = !this.isDropdownOpen;\r\n }\r\n\r\n closeDropdown(event: MouseEvent) {\r\n if (!this.isDropdownOpen)\r\n return;\r\n\r\n const isClickedOutsideComponent: boolean = !event.composedPath().some(path => (path as HTMLElement).id?.includes(this.componentId));\r\n\r\n if (!(event.target as HTMLElement).matches('.internal') || isClickedOutsideComponent) {\r\n this.isDropdownOpen = false;\r\n this.resetFiltering();\r\n }\r\n }\r\n\r\n isSelectedOption(option: IdentifiedEntity) {\r\n if (!this.selectedOption)\r\n return false;\r\n\r\n return this.selectedOption.id === option.id;\r\n }\r\n\r\n private resetFiltering() {\r\n this.filterInput?.clearInput();\r\n this.filteredOptions = this.options;\r\n }\r\n\r\n _isLoading() {\r\n return (this.displayLoadingMode && !this.title?.length) || this.isLoadingInput;\r\n }\r\n\r\n\r\n onChange: (selectedOption: IdentifiedEntity) => void = () => { }\r\n\r\n onTouched: () => void = () => { }\r\n\r\n writeValue(selectedOption: IdentifiedEntity): void {\r\n this.selectedOption = selectedOption;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n\r\n get dropdownClasses(): string {\r\n let classes = `dropdown-content dropdown-${this.dropDownDirection} ${this.size}-dropdown`;\r\n\r\n if (this.isDropDownInPositionFixed)\r\n classes += ' fixed';\r\n\r\n if (this.filteredOptions?.length)\r\n classes += ' scrollable-settings';\r\n\r\n return classes;\r\n }\r\n\r\n get _getDropdownStates() {\r\n return getDropdownAnimationStates(this.isDropdownOpen, this.dropDownDirection);\r\n }\r\n\r\n get skeletonArray() {\r\n return dummySkeletonArray;\r\n }\r\n}","<div #dropContainer class=\"dropdown\" dir=\"rtl\"\r\n [ngClass]=\"{'w-100': size === 'responsive', 'fill-container':size === 'fill-container' }\"\r\n (click)=\"toggleDropdown()\">\r\n <button class=\"drop-button internal\" [class]=\"narrowSelect ? 'narrow' : size\"\r\n [ngClass]=\"(isDropdownOpen ? 'open-drop-button-' + dropDownDirection : '')\"\r\n [ngStyle]=\" {'padding': iconPath ? '4px 12px 4px 4px' : null }\">\r\n <div class=\"selected-option-container internal\" [ngClass]=\"{'skeleton-container':_isLoading()}\" *ngIf=\"iconPath\">\r\n <span class=\"title internal\">\r\n <img *ngIf=\"iconPath\" [src]=\"iconPath\" alt=\"icon\" class=\"icon\">\r\n\r\n <span *ngIf=\"!narrowSelect\" [ngClass]=\"{'skeleton':_isLoading(), 'skeleton-text':_isLoading()}\">\r\n {{errorOccurred ? 'התרחשה שגיאה' :title}}\r\n </span>\r\n </span>\r\n\r\n <br *ngIf=\"!_isLoading()\">\r\n\r\n <span class=\"selected-option internal\"\r\n [ngClass]=\"{'skeleton':_isLoading(),'skeleton-text':_isLoading(), 'skeleton-selected-option':_isLoading()}\">\r\n {{selectedOption ? selectedOption[displayBy] : title}}\r\n </span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"iconPath == ''\">\r\n {{selectedOption ? selectedOption[displayBy] : placeholder }}\r\n </ng-container>\r\n\r\n <span class=\"shevron-icon internal\" [ngClass]=\"{'rotate-chevron': isDropdownOpen}\">\r\n <svg class=\"internal\" xmlns=\"http://www.w3.org/2000/svg\" width=\"11.299\" height=\"6.649\"\r\n viewBox=\"0 0 11.299 6.649\">\r\n <path id=\"Vector_43-2\" data-name=\"Vector 43-2\" d=\"M1006.235,549.5,1002,553.735l-4.236-4.235\"\r\n transform=\"translate(-996.35 -548.086)\" fill=\"none\" stroke=\"var(--icons-color)\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" />\r\n </svg>\r\n </span>\r\n </button>\r\n\r\n <div #dropdown id=\"myDropdown\" [ngClass]=\"dropdownClasses\" [@openClose]=\"_getDropdownStates\">\r\n <herum-input-field #filterInput *ngIf=\"options?.length>2 || isAutoComplete\" class=\"input-filter\"\r\n [type]=\"'search'\" [placeholder]=\"filterPlaceholder\" [debounceTime]=\"debounceTime\"\r\n (click)=\"_onStopPropagation($event)\" (inputValueEmitter)=\"_onFilterDropDown($event)\"></herum-input-field>\r\n <ng-container *ngFor=\"let option of isLoadingInput ? skeletonArray : filteredOptions; let index = index\">\r\n <a (click)=\"_onSelectOption(option)\" id=\"select-{{index}}\"\r\n [ngClass]=\"{'selected': isSelectedOption(option), 'skeleton skeleton-text m-3':isLoadingInput}\">\r\n {{option[displayBy]}}</a>\r\n </ng-container>\r\n\r\n <a class=\"text-center\" *ngIf=\"!filteredOptions?.length && !isLoadingInput\">לא נמצאו תוצאות</a>\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { timerActiveColorCssVariable, timerHoverColorCssVariable, timerItemSizeColorCssVariable } from 'herum-shared/constants';\r\nimport { TimeUnit } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-time-picker',\r\n templateUrl: './herum-time-picker.component.html',\r\n styleUrls: ['./herum-time-picker.component.scss']\r\n})\r\nexport class HerumTimePickerComponent {\r\n\r\n @Input() activeColor: string = 'green';\r\n @Input() hoverColor: string = 'yellow';\r\n @Input() itemSize: string = '46px';\r\n @Input() selectedTime: string = '00:00:00';\r\n @Input() showSeconds: boolean = true;\r\n\r\n @Output() timeChange = new EventEmitter<string>();\r\n\r\n @ViewChild('hoursColumn') hoursColumn: ElementRef;\r\n @ViewChild('minutesColumn') minutesColumn: ElementRef;\r\n @ViewChild('secondsColumn') secondsColumn: ElementRef;\r\n\r\n hours: string[] = Array.from({ length: 24 }, (_, index) => String(index).padStart(2, '0'));\r\n minutes: string[] = Array.from({ length: 60 }, (_, index) => String(index).padStart(2, '0'));\r\n seconds: string[] = Array.from({ length: 60 }, (_, index) => String(index).padStart(2, '0'));\r\n\r\n selectedHour: number = 0;\r\n selectedMinute: number = 0;\r\n selectedSecond: number = 0;\r\n hostElement!: HTMLElement;\r\n columnHeight: string = '100%';\r\n\r\n constructor(private elementRef: ElementRef, private changeDetectorRef: ChangeDetectorRef) {\r\n this.hostElement = this.elementRef.nativeElement;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.hostElement) {\r\n if (changes['activeColor']?.currentValue)\r\n this.hostElement.style.setProperty(timerActiveColorCssVariable, this.activeColor);\r\n\r\n if (changes['hoverColor']?.currentValue)\r\n this.hostElement.style.setProperty(timerHoverColorCssVariable, this.hoverColor);\r\n\r\n if (changes['itemSize']?.currentValue) {\r\n this.hostElement.style.setProperty(timerItemSizeColorCssVariable, this.itemSize);\r\n this.calculateColumnHeight();\r\n }\r\n }\r\n\r\n if (changes['selectedTime']?.currentValue) {\r\n this.setTime(this.selectedTime);\r\n this.handleScrollToSelectedTime(this.selectedTime);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.handleScrollToSelectedTime(this.selectedTime);\r\n this.calculateColumnHeight();\r\n }\r\n\r\n _onSelectHour(index: number): void {\r\n this.selectedHour = index;\r\n this.emitSelectedTime();\r\n }\r\n\r\n _onSelectMinute(index: number): void {\r\n this.selectedMinute = index;\r\n this.emitSelectedTime();\r\n }\r\n\r\n _onSelectSecond(index: number): void {\r\n this.selectedSecond = index;\r\n this.emitSelectedTime();\r\n }\r\n\r\n private emitSelectedTime() {\r\n const formattedTime = this.formatTime(this.selectedHour, this.selectedMinute, this.selectedSecond);\r\n this.selectedTime = formattedTime;\r\n this.timeChange.emit(formattedTime);\r\n }\r\n\r\n private setTime(selectedTime: string) {\r\n [this.selectedHour, this.selectedMinute, this.selectedSecond] = selectedTime.split(':').map(Number);\r\n }\r\n\r\n private formatTime(hours: number, minutes: number, seconds: number): string {\r\n const hoursAndMinutes = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;\r\n return !this.showSeconds ? hoursAndMinutes : hoursAndMinutes + `:${seconds?.toString().padStart(2, '0')}`;\r\n }\r\n\r\n private scrollToSelectedTime(type: number, index: number) {\r\n let column!: ElementRef;\r\n\r\n switch (type) {\r\n case TimeUnit.hours:\r\n column = this.hoursColumn;\r\n this.selectedHour = index\r\n break;\r\n\r\n case TimeUnit.minutes:\r\n column = this.minutesColumn;\r\n this.selectedMinute = index\r\n break;\r\n\r\n case TimeUnit.seconds:\r\n column = this.secondsColumn;\r\n this.selectedSecond = index\r\n break;\r\n }\r\n\r\n if (column) {\r\n const columnHeight = column.nativeElement.getBoundingClientRect().height;\r\n const itemHeight = column.nativeElement.children[index].getBoundingClientRect().height;\r\n const itemDistanceFromColumnTop = Math.floor(itemHeight * index) - columnHeight * 0.5 + itemHeight * 0.5;\r\n column.nativeElement.scrollTo({ top: itemDistanceFromColumnTop, behavior: 'smooth' });\r\n }\r\n }\r\n\r\n private handleScrollToSelectedTime(selectedTime: string) {\r\n const [hours, minutes, seconds] = selectedTime.split(':').map(Number);\r\n\r\n this.scrollToSelectedTime(TimeUnit.minutes, minutes);\r\n this.scrollToSelectedTime(TimeUnit.hours, hours);\r\n\r\n if (this.showSeconds)\r\n this.scrollToSelectedTime(TimeUnit.seconds, seconds);\r\n }\r\n\r\n private calculateColumnHeight() {\r\n const randomColumnElement = this.hoursColumn?.nativeElement;\r\n\r\n if (!randomColumnElement)\r\n return;\r\n\r\n const randomColumnHeight = randomColumnElement.getBoundingClientRect().height;\r\n const items = randomColumnElement.children;\r\n const randomItemHeight = items[0].getBoundingClientRect().height;\r\n const calculatedHeight = Math.floor(randomColumnHeight / randomItemHeight) * randomItemHeight;\r\n this.columnHeight = `${calculatedHeight}px`;\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n}","<div class=\"time-picker\">\r\n <div *ngIf=\"showSeconds\" class=\"container\">\r\n <div class=\"units-title\">שניות</div>\r\n\r\n <div #secondsColumn class=\"column\" [ngStyle]=\"{ height: columnHeight }\">\r\n <div class=\"item\" *ngFor=\"let second of seconds; let index = index\" [class.active]=\"selectedSecond === index\"\r\n (click)=\"_onSelectSecond(index)\">\r\n {{ second }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"container\" [ngClass]=\"showSeconds ? 'container-border' : '' \">\r\n <span class=\"units-title\">דקות</span>\r\n\r\n <div #minutesColumn class=\"column\" [ngStyle]=\"{ height: columnHeight }\">\r\n <div class=\"item\" *ngFor=\"let minute of minutes; let index = index\" [class.active]=\"selectedMinute === index\"\r\n (click)=\"_onSelectMinute(index)\">\r\n {{ minute }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"container container-border\">\r\n <span class=\"units-title\">שעות</span>\r\n\r\n <div #hoursColumn class=\"column\" [ngStyle]=\"{ height: columnHeight }\">\r\n <div class=\"item\" *ngFor=\"let hour of hours; let index = index\" [class.active]=\"selectedHour === index\"\r\n (click)=\"_onSelectHour(index)\">\r\n {{ hour }}\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output, SimpleChanges, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { types } from 'herum-shared/constants';\r\n\r\nconst CUSTOM_TOGGLE_BUTTON_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumToggleButtonComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-toggle-button',\r\n templateUrl: './herum-toggle-button.component.html',\r\n styleUrls: ['./herum-toggle-button.component.scss', '../herum-button/herum-button.component.scss'],\r\n providers: [CUSTOM_TOGGLE_BUTTON_CONTROL_VALUE_ACCESSOR]\r\n\r\n})\r\nexport class HerumToggleButtonComponent implements ControlValueAccessor {\r\n\r\n @Input() options: string[] = [];\r\n @Input() selectedOption: string = 'none';\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() onSelectedOption = new EventEmitter<string>();\r\n selectedOptionIndex: number | undefined;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['selectedOption'])\r\n this.selectedOptionIndex = this.options.findIndex(option => option == this.selectedOption);\r\n }\r\n\r\n toggleOption(selectedOptionIndex: number) {\r\n this.selectedOption = this.options[selectedOptionIndex];\r\n this.selectedOptionIndex = selectedOptionIndex;\r\n\r\n this.onSelectedOption.emit(this.selectedOption);\r\n this.onChange(this.selectedOption);\r\n }\r\n\r\n isOptionSelected(selectedOptionIndex: number) {\r\n return this.selectedOptionIndex === selectedOptionIndex;\r\n }\r\n\r\n isBorderNeeded(elementIndex: number) {\r\n return elementIndex != this.options.length - 1 && !this.isOptionSelected(elementIndex + 1) && !this.isOptionSelected(elementIndex);\r\n }\r\n\r\n onChange: (value: any) => void = () => { }\r\n\r\n onTouched: () => void = () => { }\r\n\r\n writeValue(selectedOption: string): void {\r\n if (typeof selectedOption === types.string) {\r\n this.selectedOption = selectedOption;\r\n this.selectedOptionIndex = this.options.findIndex(option => option == this.selectedOption);\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n}\r\n","<div class=\"toggle-container\">\r\n <div *ngFor=\"let option of options; let i = index\">\r\n <button [value]=\"i\" (click)=\"toggleOption(i)\" class=\"small\" type=\"button\"\r\n [class.primary]=\"isOptionSelected(i)\" [disabled]=\"disabled\">\r\n {{option}}\r\n </button>\r\n </div>\r\n</div>","import { Component, Output, EventEmitter, Input, ViewChild, ElementRef, forwardRef, Inject, Optional, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ControlContainer } from '@angular/forms';\r\nimport { resourcesFilesSuffixes, anySubFileTypeWildCard, svgsStrings } from 'herum-shared/constants';\r\nimport { FileData } from 'herum-shared/herum-types';\r\n\r\nconst storyFile: string = 'story.html';\r\nconst defaultPlaceholder: string = 'העלה/י קבצי לומדה...';\r\nconst invalidUploadKey: string = 'invalid Upload';\r\nconst requiredErrorKey: string = 'required';\r\n\r\nconst CUSTOM_UPLOAD_FILE_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumUploadFileComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-upload-file',\r\n templateUrl: './herum-upload-file.component.html',\r\n styleUrls: ['./herum-upload-file.component.scss'],\r\n providers: [CUSTOM_UPLOAD_FILE_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class HerumUploadFileComponent implements ControlValueAccessor {\r\n\r\n @Input() size: 'default' | 'responsive' = 'default';\r\n @Input() placeholder: string = defaultPlaceholder;\r\n @Input() isDirectoryMode: boolean = false;\r\n @Input() allowedFileTypes: string[] = [];\r\n @Input() selectedFile: FileData;\r\n @Input() formControlName!: string;\r\n @Input() isEditMode!: boolean;\r\n\r\n @Output() uploadFile = new EventEmitter<File[]>();\r\n @ViewChild('fileInput') fileInput: ElementRef;\r\n\r\n files!: File[];\r\n uploadName!: string;\r\n filesSuffixes: { [key: string]: string } = resourcesFilesSuffixes;\r\n fileSuffix!: string;\r\n isValidirectory: boolean = true;\r\n hasTouched: boolean = false;\r\n uploadFileSvg: string = svgsStrings.greyUploadFile;\r\n\r\n constructor(@Optional() @Inject(ControlContainer) private parentForm: ControlContainer) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.selectedFile && this.selectedFile)\r\n this.setExistingFile();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.fileInput.nativeElement.setAttribute('title', '');\r\n }\r\n\r\n _onPreventDefault(event: DragEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n _onDrop(event: DragEvent): void {\r\n this._onPreventDefault(event);\r\n event.stopPropagation();\r\n const fileList = Array.from(event.dataTransfer.files);\r\n this.uploadName = event.dataTransfer?.files[0]?.name;\r\n this._onUploadFile(fileList);\r\n }\r\n\r\n _onUploadFile(files: File[]): void {\r\n if (!files.length)\r\n return;\r\n\r\n this.files = [];\r\n\r\n if (!this.isDirectoryMode) {\r\n this.fileSuffix = '.' + files[0]?.name.split('.').pop();\r\n\r\n if (!this.isFileTypeAllowed()) {\r\n this.formControl?.setErrors({ [invalidUploadKey]: true })\r\n return;\r\n }\r\n\r\n this.uploadName = files[0]?.name.split('.')[0];\r\n }\r\n else {\r\n this.directoryValidation(Array.from(files));\r\n if (!this.isValidirectory) {\r\n this.formControl?.setErrors({ [invalidUploadKey]: true })\r\n return;\r\n }\r\n else\r\n this.uploadName = (files[0] as any)?.webkitRelativePath?.split('/')[0] || '';\r\n }\r\n\r\n this.getIconPath();\r\n this.files = files;\r\n this.uploadFile.emit(this.files);\r\n this.onChange(this.files);\r\n this.formControl?.setErrors(null);\r\n }\r\n\r\n private setExistingFile() {\r\n if (!this.files) this.files = [];\r\n\r\n this.files.push({\r\n name: this.selectedFile.name,\r\n lastModified: new Date(this.selectedFile.uploadTime).getTime(),\r\n type: this.selectedFile.type,\r\n } as File);\r\n\r\n this.uploadName = this.selectedFile.name\r\n }\r\n\r\n private isFileTypeAllowed(): boolean {\r\n return (this.fileSuffix && this.allowedFileTypes?.length && !this.allowedFileTypes.some(value => value === undefined)) ? this.allowedFileTypes.includes(this.fileSuffix) : true;\r\n }\r\n\r\n private directoryValidation(files: File[]) {\r\n this.isValidirectory = files.some((file) => { return file.name === storyFile; });\r\n }\r\n\r\n private getIconPath(): void {\r\n if (this.isDirectoryMode) {\r\n this.uploadFileSvg = svgsStrings.story;\r\n return;\r\n }\r\n\r\n let hasFileSuffixFound = false;\r\n\r\n Object.values(resourcesFilesSuffixes).forEach(fileSuffix => {\r\n if (fileSuffix === this.fileSuffix) {\r\n this.uploadFileSvg = svgsStrings[fileSuffix];\r\n hasFileSuffixFound = true;\r\n }\r\n })\r\n\r\n if (!hasFileSuffixFound)\r\n this.uploadFileSvg = svgsStrings.greyUploadFile;\r\n }\r\n\r\n _onRemoveFiles(event: MouseEvent) {\r\n event.stopPropagation();\r\n this.fileInput.nativeElement.value = '';\r\n this.files = null;\r\n this.uploadFile.emit([]);\r\n this.onChange([]);\r\n this.uploadFileSvg = svgsStrings.greyUploadFile;\r\n\r\n if (this.isDirectoryMode) {\r\n this.fileSuffix = '';\r\n this.uploadName = '';\r\n }\r\n else\r\n this.isValidirectory = true;\r\n }\r\n\r\n _onCancelUploadFile() {\r\n this.hasTouched = true;\r\n this.onTouched();\r\n if (!this.files && !this.files?.length && this.formControl)\r\n this.formControl.hasError(requiredErrorKey)\r\n }\r\n\r\n getAcceptValue(allowedFileTypes: string[]): string {\r\n if (!allowedFileTypes && !allowedFileTypes?.length)\r\n return anySubFileTypeWildCard;\r\n\r\n return allowedFileTypes.join(', ');\r\n }\r\n\r\n _isTruncatedTitleElement(element: HTMLElement): boolean {\r\n return element.innerText.includes('...');\r\n }\r\n\r\n onChange: (value: any) => void = () => { };\r\n\r\n onTouched: () => void = () => { };\r\n\r\n writeValue(value: any): void {\r\n if (value) {\r\n !value.length ? this.resetData() : this._onUploadFile(value);\r\n if (value.length > 1)\r\n this.isDirectoryMode = true;\r\n }\r\n }\r\n\r\n private resetData() {\r\n this.files = undefined;\r\n this.fileSuffix = undefined;\r\n this.hasTouched = false;\r\n this.uploadFileSvg = svgsStrings.greyUploadFile;\r\n\r\n if (this.fileInput)\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n get directoryName() {\r\n return this.isEditMode ? this.uploadName : `${this.uploadName}- נבחרו ${this.files?.length} קבצים`;\r\n }\r\n\r\n get formControl() {\r\n return this.parentForm?.control.get(this.formControlName);\r\n }\r\n}","<button svgOnHover class=\"upload-file-button upload-file-border\" [class]=\"size\" (click)=\"fileInput.click()\"\r\n (drop)=\"_onDrop($event)\" (dragover)=\"_onPreventDefault($event)\">\r\n <ng-container *ngIf=\"!hasTouched && !files\">\r\n <div class=\"placeholder-container\">\r\n <span class=\"upload-file-icon\" [innerHTML]=\"uploadFileSvg | safeHtml\"></span>\r\n <span dir=\"rtl\" class=\"button-placeholder\">{{placeholder}}</span>\r\n </div>\r\n </ng-container>\r\n\r\n <span class=\"error\" *ngIf=\"hasTouched && !files\">\r\n חובה להעלות קובץ\r\n </span>\r\n\r\n <div svgOnHover *ngIf=\"files?.length>=0\" class=\"file-container\">\r\n <span *ngIf=\"files?.length>0\" class=\"upload-file-icon\" [innerHTML]=\"uploadFileSvg | safeHtml\"></span>\r\n\r\n <ng-container *ngIf=\"!isDirectoryMode\">\r\n <span #fileName class=\"file-name\" *ngIf=\"files?.length\"\r\n [matTooltip]=\"_isTruncatedTitleElement(fileName) ? uploadName : ''\">\r\n {{uploadName | ellipsis:fileName}}\r\n </span>\r\n\r\n <img class=\"delete-button\" *ngIf=\"files?.length\" src=\"../../assets/general/secondary-x.svg\"\r\n (click)=\"_onRemoveFiles($event)\">\r\n\r\n <span class=\"error\" *ngIf=\"!isFileTypeAllowed()\">סוג הקובץ אינו מורשה/תקין</span>\r\n </ng-container>\r\n\r\n <ng-container class=\"cursor-pointer\" *ngIf=\"isDirectoryMode\">\r\n <span class=\"directory-name-upload\" #directoryNameUpload *ngIf=\"files?.length\"\r\n [matTooltip]=\"_isTruncatedTitleElement(directoryNameUpload) ? directoryName : ''\">\r\n {{directoryName | ellipsis:directoryNameUpload}}\r\n </span>\r\n\r\n <img *ngIf=\"files?.length\" class=\"delete-button\" src=\"../../assets/general/secondary-x.svg\"\r\n (click)=\"_onRemoveFiles($event)\">\r\n\r\n <span class=\"error\" *ngIf=\"!isValidirectory\">התייקיה אינה סטורי</span>\r\n </ng-container>\r\n </div>\r\n</button>\r\n\r\n<input #fileInput class=\"d-none\" type=\"file\" [accept]=\"getAcceptValue(allowedFileTypes)\"\r\n [attr.webkitDirectory]=\"isDirectoryMode ? '' : null\" (change)=\"_onUploadFile($event.target.files)\"\r\n (cancel)=\"_onCancelUploadFile()\">","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { User } from 'herum-shared/herum-types';\r\nimport { MenuItem } from 'herum-shared/herum-types';\r\n\r\ntype MenuItemWithDisabled = MenuItem & { disabled: boolean, disabledTooltip?: string };\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'rounded-vertical-menu',\r\n templateUrl: './rounded-vertical-menu.component.html',\r\n styleUrls: ['./rounded-vertical-menu.component.scss']\r\n})\r\nexport class RoundedVerticalMenuComponent implements OnInit, OnChanges {\r\n @Input() menuItems: MenuItemWithDisabled[] = [];\r\n @Input() currentItem?: MenuItemWithDisabled;\r\n @Input() currentUser: User;\r\n\r\n @Output() itemSelected = new EventEmitter<MenuItem>();\r\n\r\n ngOnInit(): void {\r\n if (!this.currentItem) this.currentItem = this.menuItems[0];\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.menuItems || changes.currentUser) {\r\n this.updateDisabledMenuItems();\r\n\r\n this.currentItem = this.menuItems.find(menuItem => menuItem.id === this.currentItem?.id);\r\n }\r\n\r\n if (this.currentItem.disabled) {\r\n this.currentItem = this.menuItems.find(menuItem => !menuItem.disabled);\r\n this._onSelectItem(this.currentItem);\r\n }\r\n }\r\n\r\n _onSelectItem(item: MenuItemWithDisabled) {\r\n if (item.disabled) return;\r\n\r\n this.itemSelected.next(item);\r\n }\r\n\r\n private updateDisabledMenuItems() {\r\n this.menuItems = this.menuItems.map(menuItem => {\r\n if (!!menuItem.accessValidator) {\r\n const result = menuItem.accessValidator(this.currentUser);\r\n\r\n if (result) return { ...menuItem, disabledTooltip: result.error, disabled: true };\r\n \r\n return { ...menuItem, disabledTooltip: null, disabled: false };\r\n }\r\n\r\n return menuItem;\r\n })\r\n }\r\n}\r\n","<ul class=\"nav-list\">\r\n <li *ngFor=\"let item of menuItems\" [class.active]=\"item === currentItem\" (click)=\"_onSelectItem(item)\"\r\n [class.disabled]=\"item.disabled\" appHerumToolTip [matTooltip]=\"item.disabledTooltip\">\r\n <img src=\"assets/hadracha/creation-icons/{{item.disabled ? 'disabled' : item === currentItem ? 'active' : 'regular'}}/{{ item.iconName }}.svg\"\r\n alt=\"{{ item.label }} icon\">\r\n <a>{{ item.label }}</a>\r\n </li>\r\n</ul>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { svgsStrings } from 'herum-shared/constants';\r\nimport { TextChange } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'track-text-changes-notes',\r\n templateUrl: './track-text-changes-notes.component.html',\r\n styleUrls: ['./track-text-changes-notes.component.scss']\r\n})\r\nexport class TrackTextChangesNotesComponent {\r\n\r\n @Input() textChanges: TextChange[];\r\n @Input() enableDeleteNote: boolean = true;\r\n\r\n @Output() deleteNoteChange = new EventEmitter<TextChange[]>();\r\n @Output() hoverNote = new EventEmitter<TextChange>();\r\n\r\n noteTypesToDisplay: string[];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['textChanges']?.currentValue)\r\n this.setNoteTypesToDisplay();\r\n }\r\n\r\n private setNoteTypesToDisplay() {\r\n this.noteTypesToDisplay = this.textChanges.map(textChange => {\r\n switch (textChange.type) {\r\n case 'addition':\r\n return 'טקסט שנוסף';\r\n case 'deletion':\r\n return 'טקסט שנמחק';\r\n case 'comment':\r\n return 'טקסט מסומן';\r\n case 'generalNote':\r\n return 'הערה כללית';\r\n }\r\n });\r\n }\r\n\r\n _onDeleteTextChange(textChangeToDelete: TextChange) {\r\n const index = this.textChanges.findIndex(textChange => textChange === textChangeToDelete);\r\n\r\n if (index !== -1)\r\n this.textChanges.splice(index, 1);\r\n\r\n this.deleteNoteChange.emit(this.textChanges);\r\n this.setNoteTypesToDisplay();\r\n }\r\n\r\n _onHoverNote(hoveredTextChange: TextChange) {\r\n this.hoverNote.emit(hoveredTextChange);\r\n }\r\n\r\n _trackNote(index: number, textChange: TextChange) {\r\n return textChange.id || index;\r\n }\r\n\r\n get deleteSvgString() {\r\n return svgsStrings.X;\r\n }\r\n}\r\n","<div class=\"notes-title\">הערות</div>\r\n\r\n<div *ngIf=\"textChanges?.length; else noNotes\" class=\"notes\">\r\n <div class=\"note\" *ngFor=\"let textChange of textChanges; let index=index; trackBy:_trackNote\">\r\n <button *ngIf=\"enableDeleteNote\" class=\"delete-button\" (click)=\"_onDeleteTextChange(textChange)\">\r\n <span class=\"delete-icon\" [innerHTML]=\"deleteSvgString | safeHtml\"> </span>\r\n </button>\r\n\r\n <div class=\"note-card\" (mouseenter)=\"_onHoverNote(textChange)\" (mouseleave)=\"_onHoverNote(undefined)\">\r\n <ng-container *ngIf=\"textChange.type!=='generalNote'; else generalNote\">\r\n <p class=\"note-header\" [ngClass]=\"[textChange.type]\">\r\n <span [class]=\"textChange.type+'-note'\">{{ textChange.note }}</span>\r\n <span>{{ noteTypesToDisplay[index] }}</span>\r\n </p>\r\n\r\n <p class=\"comment-text\">\r\n {{ textChange.commentText ? textChange.commentText : 'ללא הערה' }}\r\n </p>\r\n </ng-container>\r\n\r\n <ng-template #generalNote>\r\n <p class=\"general-note comment-text\">\r\n {{ textChange.note }}\r\n </p>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #noNotes>\r\n <div>אין הערות</div>\r\n</ng-template>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { femaleAvatarPath, maleAvatarPath } from 'herum-shared/constants';\r\nimport { Gender } from 'herum-shared/herum-types';\r\nimport { UserPreview } from 'herum-shared/herum-types';\r\nimport { User } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'user-profile-image',\r\n templateUrl: './user-profile-image.component.html',\r\n styleUrls: ['./user-profile-image.component.scss']\r\n})\r\nexport class UserProfileImageComponent {\r\n\r\n @Input() imageSize: 'image-default-size' | 'image-small-size' | 'responsive' = 'image-default-size';\r\n @Input() mode: 'vertical' | 'horizontal' = 'horizontal';\r\n\r\n @Input() user: User | UserPreview;\r\n @Input() isLoadingUser: boolean;\r\n @Input() isUserClickAble: boolean = false;\r\n\r\n @Output() userClicked = new EventEmitter<User | UserPreview>();\r\n\r\n imagePath: string = '';\r\n isLoadingImage: boolean = true;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['user']?.currentValue && !this.isLoadingUser)\r\n this.imagePath = this.userProfileImage;\r\n }\r\n\r\n _onUserClicked() {\r\n if (!this.isUserClickAble)\r\n return;\r\n\r\n this.userClicked.emit(this.user)\r\n }\r\n\r\n _useFallbackProfileImage(event: Event) {\r\n event.preventDefault();\r\n this.imagePath = this.fallbackProfileImage;\r\n }\r\n\r\n _loadComplete() {\r\n this.isLoadingImage = false;\r\n }\r\n\r\n get userProfileImage() {\r\n if (this.user.pictureUrl)\r\n return this.user.pictureUrl;\r\n\r\n if (!('gender' in this.user))\r\n return maleAvatarPath;\r\n\r\n return (this.user.gender == Gender.Male ? maleAvatarPath : femaleAvatarPath);\r\n }\r\n\r\n get fallbackProfileImage() {\r\n if (!this.user)\r\n return maleAvatarPath;\r\n\r\n if (!('gender' in this.user))\r\n return maleAvatarPath;\r\n\r\n return this.user.gender == Gender.Male ? maleAvatarPath : femaleAvatarPath;\r\n }\r\n}\r\n","<div class=\"profile-image-container\" [ngClass]=\"[mode]\">\r\n <div class=\"profile-image\"\r\n [ngClass]=\"[imageSize, isLoadingImage || isLoadingUser ? 'skeleton' : '',isUserClickAble ? 'cursor-pointer':'']\"\r\n [style.background-image]=\"'url(' + imagePath + ')'\" (click)=\"_onUserClicked()\"></div>\r\n\r\n <img *ngIf=\"!isLoadingUser\" [src]=\"imagePath\" class=\"profile-image-for-fallback\" [ngClass]=\"[imageSize ]\"\r\n (error)=\"_useFallbackProfileImage($event)\" (load)=\"_loadComplete()\">\r\n <ng-content></ng-content>\r\n</div>","import { Component, Input, SimpleChanges } from '@angular/core';\r\nimport { femaleAvatarPath, maleAvatarPath } from 'herum-shared/constants';\r\nimport { Gender } from 'herum-shared/herum-types';\r\nimport { User } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'users-profile-preview',\r\n templateUrl: './users-profile-preview.component.html',\r\n styleUrls: ['./users-profile-preview.component.scss']\r\n})\r\nexport class UsersProfilePreviewComponent {\r\n\r\n @Input() users: Partial<User>[] = [];\r\n @Input() title: string = '';\r\n @Input() searchFields: (keyof User)[] = ['militaryId', 'firstName'];\r\n @Input() placeholder: string = 'חפש לפי שם / מ.א';\r\n\r\n filteredUsers: Partial<User>[] = [];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['users']?.currentValue)\r\n this.filteredUsers = this.users;\r\n }\r\n\r\n _filterUsers(freeText: string) {\r\n this.filteredUsers = this.users.filter(user => this.searchFields.some((field: string) => user[field]?.includes(freeText)));\r\n }\r\n\r\n fallbackProfileImage(user: Partial<User>) {\r\n return user.gender == Gender.Male ? maleAvatarPath : femaleAvatarPath;\r\n }\r\n}","<div *ngIf=\"users?.length\" class=\"users-profile-preview\">\r\n <herum-input-field type=\"search\" [placeholder]=\"placeholder\"\r\n (inputValueEmitter)=\"_filterUsers($event)\"></herum-input-field>\r\n\r\n <div class=\"users-container\">\r\n <div class=\"user\" *ngFor=\"let user of filteredUsers\">\r\n <div class=\"details\">\r\n <div class=\"profile-image-container\">\r\n <user-profile-image [user]=\"user\" imageSize=\"image-small-size\"></user-profile-image>\r\n\r\n <h2 class=\"user-name section-title m-0\">\r\n {{ user.firstName }} {{ user.lastName }}\r\n </h2>\r\n </div>\r\n\r\n <div class=\"d-flex\">\r\n <p class=\"user-id section-title\">{{user.militaryId}}</p>\r\n\r\n <!-- uncomment when its connected -->\r\n <!-- <img src=\"assets/college/learningArea/menu-button.svg\"> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { MAT_DATE_LOCALE, MatNativeDateModule } from '@angular/material/core';\r\nimport { CollegeLoaderComponent } from './college-loader/college-loader.component';\r\nimport { HerumBreadcrumbsComponent } from './herum-breadcrumbs/herum-breadcrumbs.component';\r\nimport { SliceBreadcrumbsPipe } from './herum-breadcrumbs/slice-breadcrumbs.pipe';\r\nimport { HerumButtonComponent } from './herum-button/herum-button.component';\r\nimport { HerumCheckboxComponent } from './herum-checkbox/herum-checkbox.component';\r\nimport { HerumChipComponent } from './herum-chip/herum-chip.component';\r\nimport { HerumCircularProgressBarComponent } from './herum-circular-progress-bar/herum-circular-progress-bar.component';\r\nimport { HerumDatePickerComponent } from './herum-date-picker/herum-date-picker.component';\r\nimport { HerumDownloadFileComponent } from './herum-download-file/herum-download-file.component';\r\nimport { HerumEllipsisLoaderComponent } from './herum-ellipsis-loader/herum-ellipsis-loader.component';\r\nimport { HerumIconLabelComponent } from './herum-icon-label/herum-icon-label.component';\r\nimport { HerumIndeterminateComponent } from './herum-indeterminate/herum-indeterminate.component';\r\nimport { ConditionalFormControlNameDirective } from './herum-input-field/conditional-form-control-name.directive';\r\nimport { HerumInputFieldComponent } from './herum-input-field/herum-input-field.component';\r\nimport { HerumLogoComponent } from './herum-logo/herum-logo.component';\r\nimport { HerumMultiSelectComponent } from './herum-multi-select/herum-multi-select.component';\r\nimport { HerumNarrowCollectionMenuItemComponent } from './herum-narrow-collection-menu-item/herum-narrow-collection-menu-item.component';\r\nimport { HerumNoResultMessageComponent } from './herum-no-result-message/herum-no-result-message.component';\r\nimport { HerumOptionsListComponent } from './herum-options-list/herum-options-list.component';\r\nimport { HerumPaginatorComponent } from './herum-paginator/herum-paginator.component';\r\nimport { HerumPanelLinksComponent } from './herum-panel-links/herum-panel-links.component';\r\nimport { HerumProgressBarComponent } from './herum-progress-bar/herum-progress-bar.component';\r\nimport { HerumQuizHeaderItemComponent } from './herum-quiz-header-item/herum-quiz-header-item.component';\r\nimport { HerumRecursiveHierarchyOptionsListComponent } from './herum-recursive-hierarchy-options-list/herum-recursive-hierarchy-options-list.component';\r\nimport { HerumSelectComponent } from './herum-select/herum-select.component';\r\nimport { HerumSliderComponent } from './herum-slider/herum-slider.component';\r\nimport { HerumSpinnerComponent } from './herum-spinner/herum-spinner.component';\r\nimport { HerumSwitchComponent } from './herum-switch/herum-switch.component';\r\nimport { HerumTextAreaComponent } from './herum-text-area/herum-text-area.component';\r\nimport { HerumTimePickerComponent } from './herum-time-picker/herum-time-picker.component';\r\nimport { HerumToggleButtonComponent } from './herum-toggle-button/herum-toggle-button.component';\r\nimport { HerumUploadFileComponent } from './herum-upload-file/herum-upload-file.component';\r\nimport { HerumVideoSelectComponent } from './herum-video-select/herum-video-select.component';\r\nimport { HerumRadioButtonComponent } from './radio-button/radio-button.component';\r\nimport { RoundedVerticalMenuComponent } from './rounded-vertical-menu/rounded-vertical-menu.component';\r\nimport { TrackTextChangesNotesComponent } from './track-text-changes-notes/track-text-changes-notes.component';\r\nimport { UserProfileImageComponent } from './user-profile-image/user-profile-image.component';\r\nimport { UsersProfilePreviewComponent } from './users-profile-preview/users-profile-preview.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { PipesModule } from 'herum-shared/pipes';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CollegeLoaderComponent,\r\n UsersProfilePreviewComponent,\r\n HerumBreadcrumbsComponent,\r\n SliceBreadcrumbsPipe,\r\n HerumButtonComponent,\r\n HerumCheckboxComponent,\r\n HerumChipComponent,\r\n HerumCircularProgressBarComponent,\r\n HerumDatePickerComponent,\r\n HerumDownloadFileComponent,\r\n HerumEllipsisLoaderComponent,\r\n HerumIconLabelComponent,\r\n HerumIndeterminateComponent,\r\n ConditionalFormControlNameDirective,\r\n HerumInputFieldComponent,\r\n HerumLogoComponent,\r\n HerumMultiSelectComponent,\r\n HerumNarrowCollectionMenuItemComponent,\r\n HerumNoResultMessageComponent,\r\n HerumOptionsListComponent,\r\n HerumPaginatorComponent,\r\n HerumPanelLinksComponent,\r\n HerumProgressBarComponent,\r\n HerumQuizHeaderItemComponent,\r\n HerumRecursiveHierarchyOptionsListComponent,\r\n HerumSelectComponent,\r\n HerumSliderComponent,\r\n HerumSpinnerComponent,\r\n HerumSwitchComponent,\r\n HerumTextAreaComponent,\r\n HerumTimePickerComponent,\r\n HerumToggleButtonComponent,\r\n HerumUploadFileComponent,\r\n HerumVideoSelectComponent,\r\n HerumRadioButtonComponent,\r\n RoundedVerticalMenuComponent,\r\n TrackTextChangesNotesComponent,\r\n UserProfileImageComponent\r\n ],\r\n exports: [\r\n CollegeLoaderComponent,\r\n UsersProfilePreviewComponent,\r\n HerumBreadcrumbsComponent,\r\n SliceBreadcrumbsPipe,\r\n HerumButtonComponent,\r\n HerumCheckboxComponent,\r\n HerumChipComponent,\r\n HerumCircularProgressBarComponent,\r\n HerumDatePickerComponent,\r\n HerumDownloadFileComponent,\r\n HerumEllipsisLoaderComponent,\r\n HerumIconLabelComponent,\r\n HerumIndeterminateComponent,\r\n ConditionalFormControlNameDirective,\r\n HerumInputFieldComponent,\r\n HerumLogoComponent,\r\n HerumMultiSelectComponent,\r\n HerumNarrowCollectionMenuItemComponent,\r\n HerumNoResultMessageComponent,\r\n HerumOptionsListComponent,\r\n HerumPaginatorComponent,\r\n HerumPanelLinksComponent,\r\n HerumProgressBarComponent,\r\n HerumQuizHeaderItemComponent,\r\n HerumRecursiveHierarchyOptionsListComponent,\r\n HerumSelectComponent,\r\n HerumSliderComponent,\r\n HerumSpinnerComponent,\r\n HerumSwitchComponent,\r\n HerumTextAreaComponent,\r\n HerumTimePickerComponent,\r\n HerumToggleButtonComponent,\r\n HerumUploadFileComponent,\r\n HerumVideoSelectComponent,\r\n HerumRadioButtonComponent,\r\n RoundedVerticalMenuComponent,\r\n TrackTextChangesNotesComponent,\r\n UserProfileImageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatMenuModule,\r\n ClipboardModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatFormFieldModule,\r\n MatTooltipModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n MatCheckboxModule,\r\n MatSliderModule,\r\n DragDropModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n PipesModule\r\n ],\r\n providers: [\r\n { provide: MAT_DATE_LOCALE, useValue: 'he-IL' },\r\n ]\r\n})\r\nexport class AtomsModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { CollectionBase } from 'herum-shared/herum-types';\r\nimport { CollectionSubscription } from 'herum-shared/herum-types';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'collectionSubscriptionToCollectionBase'\r\n})\r\nexport class CollectionSubscriptionToCollectionBasePipe implements PipeTransform {\r\n\r\n transform(collectionSubscription: CollectionSubscription, ...args: unknown[]): CollectionBase {\r\n let collectionBase: CollectionBase = {\r\n ...collectionSubscription.collectionPreview,\r\n resources: collectionSubscription.resourceSubscriptions.map(resourceSubscription => resourceSubscription.resourcePreview),\r\n grade: collectionSubscription.grade,\r\n };\r\n\r\n return collectionBase;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Collection, CollectionBase } from 'herum-shared/herum-types';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'collectionToCollectionBase'\r\n})\r\nexport class CollectionToCollectionBasePipe implements PipeTransform {\r\n\r\n transform(collection: Collection, ...args: unknown[]): CollectionBase {\r\n let collectionBase: CollectionBase = {\r\n ...collection,\r\n resources: collection.resources.map(resource => resource.resourcePreview)\r\n }\r\n\r\n return collectionBase;\r\n }\r\n\r\n transformMulti(collections: Collection[]): CollectionBase[] {\r\n let collectionsBase: CollectionBase[] = collections.map(collection => this.transform(collection))\r\n return collectionsBase;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ModifiedResource } from 'herum-shared/herum-types';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'resourceSubscriptionToResource'\r\n})\r\nexport class ResourceSubscriptionToResourcePipe implements PipeTransform {\r\n transform(resourceSubscription: any, ...args: unknown[]): ModifiedResource {\r\n let resource: ModifiedResource = {\r\n positionInCollection: resourceSubscription.positionInCollection,\r\n description: resourceSubscription.resourcePreview.description,\r\n title: resourceSubscription.resourcePreview.title,\r\n resourceType: resourceSubscription.resourcePreview.resourceType,\r\n files: resourceSubscription.resourcePreview.files\r\n };\r\n\r\n return resource;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ModifiedResource } from 'herum-shared/herum-types';\r\nimport { ResourceSubscription } from 'herum-shared/herum-types';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'resourceToResourceSubscription'\r\n})\r\nexport class ResourceToResourceSubscriptionPipe implements PipeTransform {\r\n\r\n transform(resource: ModifiedResource, ...args: unknown[]): ResourceSubscription {\r\n let resourceSubscription: ResourceSubscription = {\r\n subscriptionStatus: 0,\r\n positionInCollection: resource.positionInCollection,\r\n resourcePreview: {\r\n ...resource\r\n }\r\n };\r\n\r\n return resourceSubscription;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { signUpFormKeys } from 'herum-shared/constants';\r\nimport { IdentifiedEntity, SectionListItem, DbListItem } from 'herum-shared/herum-types';\r\nimport { User } from 'herum-shared/herum-types';\r\n\r\nconst userFieldsToValueFormatters = {\r\n [signUpFormKeys.sections]: { valueFormatter: (sections: IdentifiedEntity[]) => identifiedEntityToSectionListItem(sections) },\r\n [signUpFormKeys.sagahs]: { valueFormatter: (sagahs: IdentifiedEntity[]) => identifiedEntityToDbListItem(sagahs) },\r\n [signUpFormKeys.subjectAreas]: { valueFormatter: (subjectAreas: IdentifiedEntity[]) => identifiedEntityToDbListItem(subjectAreas) }\r\n};\r\n\r\nfunction identifiedEntityToDbListItem(items: IdentifiedEntity[]): DbListItem<string>[] {\r\n return items.map(item => ({ id: item.id, value: item.name }));\r\n}\r\n\r\nfunction identifiedEntityToSectionListItem(items: IdentifiedEntity[]): SectionListItem[] {\r\n return items.map(item => ({ id: item.id, section: item.name }));\r\n}\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'userIdentifiedEntitiesToBackendModels'\r\n})\r\nexport class UserIdentifiedEntitiesToBackendModelsPipe implements PipeTransform {\r\n\r\n transform(user: User) {\r\n Object.keys(userFieldsToValueFormatters).forEach(key => {\r\n if (user[key])\r\n user[key] = userFieldsToValueFormatters[key].valueFormatter(user[key]);\r\n });\r\n\r\n return user;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SignUpField } from 'herum-shared/herum-types';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'stringArrayToSignUpFieldArray'\r\n})\r\nexport class StringArrayToSignUpFieldArrayPipe implements PipeTransform {\r\n\r\n transform(fields: string[] | null | undefined): SignUpField[] {\r\n if (!Array.isArray(fields)) return [];\r\n\r\n return fields.map((field) => ({\r\n field, \r\n showSeparator: false\r\n }));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'toInteger',\r\n standalone: false\r\n})\r\nexport class ToIntegerPipe implements PipeTransform {\r\n\r\n transform(number: number): number {\r\n return Number.isInteger(number) ? number : Number(number.toFixed(0));\r\n }\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { SafePipe } from './safe.pipe';\r\nimport { CollectionSubscriptionToCollectionBasePipe } from './collection-subscription-to-collection-base.pipe';\r\nimport { CollectionToCollectionBasePipe } from './collection-to-collection-base.pipe';\r\nimport { SafeHtmlPipe } from './safe-html.pipe';\r\nimport { ResourceSubscriptionToResourcePipe } from './resource-subscription-to-resource.pipe';\r\nimport { ResourceToResourceSubscriptionPipe } from './resource-to-resource-subscription.pipe';\r\nimport { EllipsisPipe } from './ellipsis.pipe';\r\nimport { UserIdentifiedEntitiesToBackendModelsPipe } from './user-identified-entities-to-backend-models.pipe';\r\nimport { AnswerNotesToTextChangesPipe } from './answer-notes-to-text-changes.pipe';\r\nimport { StringArrayToSignUpFieldArrayPipe } from './sign-up-fields-to-sign-up-field-config.pipe';\r\nimport { ToIntegerPipe } from './to-integer.pipe';\r\nimport { DisplayedSubmissionsCounterPipe } from './displayed-submissions-counter-pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n SafePipe,\r\n CollectionSubscriptionToCollectionBasePipe,\r\n CollectionToCollectionBasePipe,\r\n SafeHtmlPipe,\r\n ResourceSubscriptionToResourcePipe,\r\n ResourceToResourceSubscriptionPipe,\r\n EllipsisPipe,\r\n UserIdentifiedEntitiesToBackendModelsPipe,\r\n AnswerNotesToTextChangesPipe,\r\n StringArrayToSignUpFieldArrayPipe,\r\n ToIntegerPipe,\r\n DisplayedSubmissionsCounterPipe,\r\n ],\r\n exports: [\r\n SafePipe,\r\n CollectionSubscriptionToCollectionBasePipe,\r\n CollectionToCollectionBasePipe,\r\n SafeHtmlPipe,\r\n ResourceSubscriptionToResourcePipe,\r\n ResourceToResourceSubscriptionPipe,\r\n EllipsisPipe,\r\n UserIdentifiedEntitiesToBackendModelsPipe,\r\n AnswerNotesToTextChangesPipe,\r\n StringArrayToSignUpFieldArrayPipe,\r\n ToIntegerPipe,\r\n DisplayedSubmissionsCounterPipe,\r\n ],\r\n providers: [\r\n SafePipe,\r\n CollectionSubscriptionToCollectionBasePipe,\r\n CollectionToCollectionBasePipe,\r\n SafeHtmlPipe,\r\n ResourceSubscriptionToResourcePipe,\r\n ResourceToResourceSubscriptionPipe,\r\n EllipsisPipe,\r\n UserIdentifiedEntitiesToBackendModelsPipe,\r\n AnswerNotesToTextChangesPipe,\r\n StringArrayToSignUpFieldArrayPipe,\r\n ToIntegerPipe,\r\n DisplayedSubmissionsCounterPipe,\r\n ]\r\n})\r\nexport class PipesModule { }","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'app-herum-active-link',\r\n templateUrl: './herum-active-link.component.html',\r\n styleUrls: ['./herum-active-link.component.scss']\r\n})\r\nexport class HerumActiveLinkComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p>herum-active-link works!</p>\r\n","import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, Output, QueryList, SimpleChanges, ViewChild, ViewChildren } from '@angular/core';\r\nimport { SplitGutterInteractionEvent } from 'angular-split';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-active-menu',\r\n templateUrl: './herum-active-menu.component.html',\r\n styleUrls: ['./herum-active-menu.component.scss']\r\n})\r\nexport class HerumActiveMenuComponent {\r\n\r\n @Input() useIcons: boolean = true;\r\n\r\n @Input() view: \"wide\" | \"narrow\" = \"wide\";\r\n\r\n @Input() activeColor: string = \"\";\r\n @Input() activeTextColor: string = \"\";\r\n @Input() secondaryTextColor: string = \"\";\r\n\r\n @Input() menuItems: any[] = [];\r\n @Input() selectedItem: any;\r\n @Input() selectById: boolean = false;\r\n @Input() isBlock: boolean = false;\r\n @Input() dragEvent: SplitGutterInteractionEvent;\r\n\r\n @Output() selectionIndex: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @ViewChild('tabsContainer') tabsContainer!: ElementRef;\r\n @ViewChildren('tabs') tabsElement!: QueryList<ElementRef>;\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.setTabElementWidth();\r\n }\r\n\r\n currentItemIndex: number = 0;\r\n hostElement!: HTMLElement;\r\n\r\n constructor(private elementRef: ElementRef, private changeDetectorRef: ChangeDetectorRef) { this.hostElement = this.elementRef.nativeElement; }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['activeColor']?.currentValue)\r\n this.setCSSVariable('--active-menu-background', this.activeColor);\r\n\r\n if (changes['activeTextColor']?.currentValue)\r\n this.setCSSVariable('--active-menu-text-color', this.activeTextColor);\r\n\r\n if (changes['secondaryTextColor']?.currentValue)\r\n this.setCSSVariable('--active-menu-secondary-text-color', this.secondaryTextColor);\r\n\r\n if (changes['menuItems']?.currentValue.length) {\r\n this.changeDetectorRef.detectChanges();\r\n this.setTabElementWidth();\r\n }\r\n\r\n if (changes['dragEvent']?.currentValue)\r\n this.setTabElementWidth();\r\n }\r\n\r\n private setCSSVariable(variable: string, value: string): void {\r\n this.hostElement.style.setProperty(variable, value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setTabElementWidth();\r\n }\r\n\r\n _onSelectTab(selection: number) {\r\n this.currentItemIndex = selection;\r\n if (!this.isBlock)\r\n this.selectionIndex.emit(selection);\r\n }\r\n\r\n\r\n private setTabElementWidth() {\r\n if (!this.tabsElement?.length || !this.menuItems.length)\r\n return;\r\n\r\n const tabsContainerWidth = this.tabsContainer.nativeElement.clientWidth;\r\n\r\n this.tabsElement.forEach(tab => {\r\n const width = (tabsContainerWidth / this.menuItems.length) > 150 ? '150px' : `${tabsContainerWidth / this.menuItems.length}px`;\r\n tab.nativeElement.style.width = width;\r\n });\r\n }\r\n}","<ul #tabsContainer class=\"tabs group\" [ngClass]=\"view\" [class.isBlock]=\"isBlock\">\r\n <li #tabs *ngFor=\"let menuItem of menuItems; let i = index\"\r\n [class.active]=\"selectById ? menuItem?.id === selectedItem?.id : (currentItemIndex === i || menuItem === selectedItem)\">\r\n <a (click)=\"_onSelectTab(i)\" [userAction]=\"menuItem.label\">\r\n <span *ngIf=\"useIcons\" [innerHTML]=\"menuItem.icon | safeHtml\"\r\n [ngClass]=\"i == currentItemIndex ? 'active-icon' : 'non-active-icon'\">\r\n </span>\r\n\r\n <p class=\"m-0 truncate\" [matTooltip]=\"menuItem.label\">\r\n {{ menuItem.label }}\r\n </p>\r\n </a>\r\n </li>\r\n</ul>","import { Component, ElementRef, EventEmitter, HostListener, Input, Optional, Output, Self, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { HerumInputFieldComponent } from 'herum-shared/atoms';\r\nimport { openClose } from 'herum-shared/animations';\r\nimport { DisplayIdentifiedEntity } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-autocomplete',\r\n templateUrl: './herum-autocomplete.component.html',\r\n styleUrls: ['./herum-autocomplete.component.scss'],\r\n animations: [openClose]\r\n})\r\nexport class HerumAutocompleteComponent implements ControlValueAccessor {\r\n\r\n @Input() options: DisplayIdentifiedEntity[] = [];\r\n @Input() displayBy: string = 'name';\r\n @Input() subTitleBy: string;\r\n @Input() placeholder: string = 'הקלד/י לחיפוש...';\r\n @Input() noResultsText: string = 'אויש, נראה שאין תוצאות מתאימות...'\r\n @Input() disabled: boolean = false;\r\n @Input() isLoadingInput: boolean = false;\r\n @Input() debounceTime: number = 0;\r\n @Input() selectedOption: DisplayIdentifiedEntity | null = null;\r\n @Input() isBlurred = false;\r\n\r\n @Output() filterTextEmitter = new EventEmitter<string>();\r\n @Output() selectedOptionEmitter = new EventEmitter<DisplayIdentifiedEntity>();\r\n\r\n @ViewChild('filterInput') filterInput: HerumInputFieldComponent;\r\n @ViewChild('container') containerRef: ElementRef<HTMLDivElement>;\r\n\r\n @HostListener('window:click', ['$event'])\r\n onWindowClick(event: MouseEvent): void {\r\n if (!this.isDropdownOpen) return;\r\n\r\n const target = event.target as HTMLElement;\r\n const host = this.containerRef?.nativeElement;\r\n\r\n if (host && !host.contains(target))\r\n this.isDropdownOpen = false;\r\n }\r\n\r\n currentSearchedItem: string = '';\r\n filteredOptions: DisplayIdentifiedEntity[] = [];\r\n isDropdownOpen: boolean = false;\r\n isWaitingForResults = false;\r\n\r\n readonly skeletonRows: number[] = [1, 2, 3, 4, 5];\r\n readonly skeletonWidths: number[] = [200, 180, 160, 180, 170];\r\n\r\n constructor(@Optional() @Self() private ngControl: NgControl) {\r\n if (this.ngControl)\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options']) {\r\n this.filterOptions(this.currentSearchedItem);\r\n this.isWaitingForResults = false;\r\n }\r\n\r\n if (changes['selectedOption'] && this.selectedOption) {\r\n const displayText = this.selectedOption?.[this.displayBy]?.toString() ?? '';\r\n this.currentSearchedItem = displayText;\r\n this.onChange(displayText);\r\n\r\n if (this.filterInput)\r\n this.filterInput.inputValue = displayText;\r\n }\r\n }\r\n\r\n _onInputClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) this.isDropdownOpen = true;\r\n }\r\n\r\n _inputChange(rawText: string): void {\r\n if (!this.disabled) this.isDropdownOpen = true;\r\n\r\n const text = !!rawText ? rawText.toString().trim() : '';\r\n this.currentSearchedItem = text;\r\n\r\n this.isWaitingForResults = true;\r\n\r\n this.onChange(this.currentSearchedItem);\r\n this.filterTextEmitter.emit(text);\r\n this.filterOptions(text);\r\n }\r\n\r\n _onSelectOption(option: DisplayIdentifiedEntity): void {\r\n const selectedDisplayText = (option?.[this.displayBy] ?? '').toString();\r\n\r\n this.currentSearchedItem = '';\r\n\r\n this.onChange(this.currentSearchedItem);\r\n this.onTouched();\r\n\r\n this.selectedOptionEmitter.emit(option);\r\n this.isDropdownOpen = false;\r\n\r\n if (this.filterInput) this.filterInput!.inputValue = selectedDisplayText;\r\n }\r\n\r\n _getSkeletonWidth(index: number): number {\r\n return this.skeletonWidths[index % this.skeletonWidths.length];\r\n }\r\n\r\n onChange: (value: string) => void = () => { };\r\n\r\n onTouched: () => void = () => { };\r\n\r\n writeValue(value: string | null): void {\r\n this.currentSearchedItem = value || '';\r\n this.filterOptions(this.currentSearchedItem);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n private filterOptions(text: string): void {\r\n const options = Array.isArray(this.options) ? this.options : [];\r\n\r\n if (!options?.length) {\r\n this.filteredOptions = [];\r\n return;\r\n }\r\n\r\n if (!text) {\r\n this.filteredOptions = [...options];\r\n return;\r\n }\r\n\r\n const normalizedSearchText = (text || '').toString().toLocaleLowerCase();\r\n\r\n this.filteredOptions = options.filter(option => {\r\n const optionDisplayValue = option[this.displayBy];\r\n\r\n if (!optionDisplayValue) return false;\r\n\r\n const normalizedOptionText = optionDisplayValue.toString().toLowerCase();\r\n return normalizedOptionText.includes(normalizedSearchText);\r\n });\r\n }\r\n}\r\n","<div #container class=\"autocomplete-container\" dir=\"rtl\" [class.disabled]=\"disabled\">\r\n <herum-input-field #filterInput class=\"autocomplete-input internal\" \r\n [type]=\"isBlurred ? 'search-blur' : 'search'\" [placeholder]=\"placeholder\"\r\n [debounceTime]=\"debounceTime\" [disabled]=\"disabled\" [inputValue]=\"currentSearchedItem\"\r\n (click)=\"_onInputClick($event)\" (inputValueEmitter)=\"_inputChange($event)\">\r\n </herum-input-field>\r\n\r\n <div class=\"autocomplete-dropdown\" [@openClose]=\"isDropdownOpen ? 'openDown' : 'closeUp'\" \r\n [class.hidden]=\"!isDropdownOpen\" [class.glass]=\"isBlurred\">\r\n <ng-container *ngIf=\"isLoadingInput || isWaitingForResults; else optionsList\">\r\n <div *ngFor=\"let _ of skeletonRows; let i = index\" class=\"autocomplete-option loading-state\">\r\n <span class=\"skeleton-text skeleton\" [ngStyle]=\"{width: _getSkeletonWidth(i) + 'px'}\">&nbsp;</span>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #optionsList>\r\n <ng-container *ngIf=\"filteredOptions?.length; else noResults\">\r\n <a class=\"autocomplete-option\" *ngFor=\"let option of filteredOptions\" (click)=\"_onSelectOption(option)\">\r\n <div class=\"option-main\">\r\n <ng-container *ngIf=\"option.iconUrl; else defaultLeadingIcon\">\r\n <img [src]=\"option.iconUrl\" class=\"option-icon-img\" />\r\n </ng-container>\r\n \r\n <ng-template #defaultLeadingIcon>\r\n <img src=\"assets/hadracha/general/plus.svg\" class=\"option-icon\">\r\n </ng-template>\r\n\r\n <span [highlightText]=\"option[displayBy]\" [herumHighlight]=\"currentSearchedItem\"></span>\r\n </div>\r\n\r\n <span class=\"option-subtitle\" *ngIf=\"subTitleBy && option[subTitleBy]\">\r\n {{ option[subTitleBy] }}\r\n </span>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #noResults>\r\n <a *ngIf=\"!(isLoadingInput || isWaitingForResults)\"\r\n class=\"autocomplete-option text-center no-results-blurred\">\r\n {{ noResultsText }}\r\n </a>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n</div>","import { Component, EventEmitter, forwardRef, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CommonGraphqlRequestsService } from 'herum-shared/services';\r\nimport { ClosedList, IdentifiedEntity } from 'herum-shared/herum-types';\r\n\r\nconst CUSTOM_CLOSED_LIST_MULTI_SELECT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumClosedListMultiSelectComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-closed-list-multi-select',\r\n templateUrl: './herum-closed-list-multi-select.component.html',\r\n styleUrls: ['./herum-closed-list-multi-select.component.scss'],\r\n providers: [CUSTOM_CLOSED_LIST_MULTI_SELECT_CONTROL_VALUE_ACCESSOR]\r\n})\r\nexport class HerumClosedListMultiSelectComponent {\r\n\r\n @Input() closedListName: string;\r\n @Input() placeholder: string = 'בחר/י...';\r\n @Input() disabled: boolean = false;\r\n @Input() isDropDownInPositionFixed: boolean = false;\r\n @Input() size: 'fit' | 'default' | 'big' | 'responsive' = 'default';\r\n @Input() dropDownDirection: 'upwards' | 'downwards' = 'downwards';\r\n @Input() selectedClosedListOptionalValues!: IdentifiedEntity[];\r\n\r\n @Output() selectedClosedListValueEmitter = new EventEmitter<IdentifiedEntity[]>();\r\n\r\n closedListValues: IdentifiedEntity[] = [];\r\n\r\n constructor(private commonGraphqlRequestsService: CommonGraphqlRequestsService) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['closedListName']?.currentValue)\r\n this.setClosedListValues();\r\n }\r\n\r\n private setClosedListValues() {\r\n this.commonGraphqlRequestsService.getClosedLists([this.closedListName])\r\n .subscribe((closedList: ClosedList) => {\r\n this.closedListValues = closedList[0].optionalValues?.map(optionalValue => ({ name: optionalValue.displayName, id: optionalValue.id }));\r\n this.syncIdsBetweenSelectedValuesToValues();\r\n });\r\n }\r\n\r\n _selectedOptionsEmitter(selectedClosedListValue: IdentifiedEntity[]) {\r\n this.selectedClosedListValueEmitter.emit(selectedClosedListValue);\r\n this.onChange(selectedClosedListValue);\r\n }\r\n\r\n onChange: (selectedClosedListValue: IdentifiedEntity[]) => void = () => { }\r\n\r\n onTouched: () => void = () => { }\r\n\r\n writeValue(selectedClosedListOptionalValues: IdentifiedEntity[]): void {\r\n if (!selectedClosedListOptionalValues)\r\n return;\r\n\r\n this.selectedClosedListOptionalValues = selectedClosedListOptionalValues;\r\n this.syncIdsBetweenSelectedValuesToValues();\r\n }\r\n\r\n private syncIdsBetweenSelectedValuesToValues() {\r\n if (!this.closedListValues?.length || !this.selectedClosedListOptionalValues)\r\n return;\r\n\r\n this.closedListValues.forEach(closedListValue => {\r\n const selectedClosedListOptionalValue = this.selectedClosedListOptionalValues.find(section => (section as IdentifiedEntity).name === closedListValue.name) as IdentifiedEntity;\r\n\r\n if (selectedClosedListOptionalValue)\r\n closedListValue.id = selectedClosedListOptionalValue.id;\r\n });\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n}","<herum-multi-select [placeholder]=\"placeholder\" [options]=\"closedListValues\"\r\n [selectedOptionsInput]=\"selectedClosedListOptionalValues\" [disabled]=\"disabled\"\r\n [isDropDownInPositionFixed]=\"isDropDownInPositionFixed\" [size]=\"size\" [dropDownDirection]=\"dropDownDirection\"\r\n (selectedOptions)=\"_selectedOptionsEmitter($event)\">\r\n</herum-multi-select>","import { Component, EventEmitter, Input, Output, SimpleChanges, forwardRef } from '@angular/core';\r\nimport { CommonGraphqlRequestsService } from 'herum-shared/services';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ClosedList, IdentifiedEntity } from 'herum-shared/herum-types';\r\n\r\nconst CUSTOM_CLOSED_LIST_SELECT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => HerumClosedListSelectComponent),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-closed-list-select',\r\n templateUrl: './herum-closed-list-select.component.html',\r\n providers: [CUSTOM_CLOSED_LIST_SELECT_CONTROL_VALUE_ACCESSOR]\r\n})\r\n\r\nexport class HerumClosedListSelectComponent implements ControlValueAccessor {\r\n\r\n @Input('formControlName') closedListName: string;\r\n @Input() placeholder: string = 'בחר/י...';\r\n @Input() closedListOptionalValueName!: string;\r\n @Input() disabled: boolean = false;\r\n @Input() isDropDownInPositionFixed: boolean = false;\r\n @Input() iconPath: string = '';\r\n @Input() isAutoComplete: boolean = false;\r\n @Input() title: string = '';\r\n @Input() size: 'fit' | 'default' | 'big' | 'responsive' = 'default';\r\n @Input() displayLoadingMode: boolean = false;\r\n @Input() isLoadingInput: boolean = false;\r\n @Input() dropDownDirection: 'upwards' | 'downwards' = 'downwards';\r\n @Input() filterPlaceholder = \"חפש/י...\"\r\n\r\n @Output() selectedClosedListValueEmitter = new EventEmitter<IdentifiedEntity>();\r\n @Output() filterTextEmitter = new EventEmitter<string>();\r\n\r\n closedListValues: IdentifiedEntity[] = [];\r\n selectedClosedListOptionalValue!: IdentifiedEntity;\r\n\r\n constructor(private commonGraphqlRequestsService: CommonGraphqlRequestsService) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['closedListName']?.currentValue)\r\n this.setClosedListValues();\r\n\r\n if (changes['closedListOptionalValueName']?.currentValue)\r\n this.handleClosedListValueId();\r\n }\r\n\r\n private setClosedListValues() {\r\n this.commonGraphqlRequestsService.getClosedLists([this.closedListName])\r\n .subscribe((closedList: ClosedList) => {\r\n this.closedListValues = closedList[0].optionalValues?.map(optionalValue => ({ name: optionalValue.displayName, id: optionalValue.id }));\r\n this.handleClosedListValueId();\r\n });\r\n }\r\n\r\n private handleClosedListValueId() {\r\n if (!this.closedListOptionalValueName) {\r\n this.selectedClosedListOptionalValue = undefined;\r\n return;\r\n }\r\n\r\n this.selectedClosedListOptionalValue = { name: this.closedListOptionalValueName, id: this.closedListValues?.find(closedListValue => closedListValue.name === this.closedListOptionalValueName)?.id };\r\n }\r\n\r\n _selectedOptionEmitter(selectedClosedListValue: IdentifiedEntity) {\r\n this.selectedClosedListValueEmitter.emit(selectedClosedListValue);\r\n this.onChange(selectedClosedListValue);\r\n }\r\n\r\n _filterTextEmitter(text: string) {\r\n this.filterTextEmitter.emit(text);\r\n }\r\n\r\n onChange: (selectedClosedListValue: IdentifiedEntity) => void = () => { }\r\n\r\n onTouched: () => void = () => { }\r\n\r\n writeValue(closedListOptionalValueName: string): void {\r\n if (!closedListOptionalValueName)\r\n return;\r\n\r\n this.closedListOptionalValueName = closedListOptionalValueName;\r\n this.handleClosedListValueId();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n}","<herum-select\r\n[options]=\"closedListValues\"\r\n[placeholder]=\"placeholder\"\r\n[selectedOption]=\"selectedClosedListOptionalValue\"\r\n[disabled]=\"disabled\"\r\n[isDropDownInPositionFixed]=\"isDropDownInPositionFixed\"\r\n[iconPath]=\"iconPath\"\r\n[isAutoComplete]=\"isAutoComplete\"\r\n[title]=\"title\"\r\n[size]=\"size\"\r\n[displayLoadingMode]=\"displayLoadingMode\"\r\n[isLoadingInput]=\"isLoadingInput\"\r\n[dropDownDirection]=\"dropDownDirection\"\r\n[filterPlaceholder]=\"filterPlaceholder\"\r\n(selectedOptionEmitter)=\"_selectedOptionEmitter($event)\"\r\n(filterTextEmitter)=\"_filterTextEmitter($event)\"\r\n>\r\n</herum-select>","import { Component, ElementRef, EventEmitter, Inject, Input, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { svgsStrings, filesSuffixes, resourcesFilesSuffixes, anySubFileTypeWildCard } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\nconst iconsFolderPath: string = 'assets/files-icons/';\r\nconst defaultFileIconPath: string = iconsFolderPath + 'generic-file.svg';\r\nconst requiredFieldMessage = 'חובה לעלות קובץ';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-drop-zone',\r\n templateUrl: './herum-drop-zone.component.html',\r\n styleUrls: ['./herum-drop-zone.component.scss']\r\n})\r\nexport class HerumDropZoneComponent {\r\n\r\n @Input() selectedFiles: File[] = [];\r\n @Input() placeholder: string = 'העלה או גרור לכאן קובץ';\r\n @Input() numberOfAllowedFiles: number = 1;\r\n @Input() allowedFileTypes = [];\r\n @Input() supportedFilesMimes = [];\r\n @Input() supportedFilesTypes = [];\r\n @Input() requiredField = false;\r\n @Input() directionPreview: 'row' | 'column' = 'column';\r\n\r\n @Input() type: 'row' | 'column' = 'column';\r\n @Input() grow: boolean = false;\r\n @Input() fillContainer: boolean = false;\r\n @Input() uploadFileSvg: string = svgsStrings.greyUploadFile;\r\n @Input() previewImageUrl?: string;\r\n @Input() allowToDeleteImage: boolean = true;\r\n\r\n @Output() filesDataEvent = new EventEmitter<File[]>();\r\n\r\n @ViewChild('fileInput') fileInput: ElementRef<HTMLInputElement>;\r\n\r\n filesList: File[] = [];\r\n isLoading: boolean = false;\r\n isDownloadInProgress: boolean = false;\r\n hasExceededNumberOfAllowedFiles: boolean = false;\r\n filesSuffixes: { [key: string]: string } = resourcesFilesSuffixes;\r\n isValidUpload: boolean = true;\r\n isSupportedFileType: boolean = true;\r\n parsedAllowedFileTypes: string = '';\r\n\r\n errorMessages = [\r\n { condition: () => !this.isSupportedFileType && this.isValidUpload, message: 'סוג הקובץ אינו נתמך' },\r\n { condition: () => !this.isValidUpload, message: 'סוג הקובץ אינו תקין' },\r\n {\r\n condition: () => this.hasExceededNumberOfAllowedFiles && this.numberOfAllowedFiles > 1,\r\n message: `ניתן להעלות עד ${this.numberOfAllowedFiles} קבצים`\r\n },\r\n ];\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['selectedFiles'] && Array.isArray(this.selectedFiles))\r\n this.filesList = this.selectedFiles;\r\n\r\n if (changes['requiredField'])\r\n this.addOrRemoveRequiredFieldError();\r\n\r\n if (changes['allowedFileTypes'])\r\n this.parsedAllowedFileTypes = this.parseAllowedFileTypes(this.allowedFileTypes);\r\n }\r\n\r\n _onRemoveFile(index: number, event: MouseEvent) {\r\n event.stopPropagation();\r\n this.filesList.splice(index, 1);\r\n if (this.filesList.length <= this.numberOfAllowedFiles)\r\n this.hasExceededNumberOfAllowedFiles = false;\r\n\r\n this.filesDataEvent.emit(this.filesList);\r\n }\r\n\r\n _onRemoveImage(): void {\r\n if (this.allowToDeleteImage) {\r\n this.filesDataEvent.emit([]);\r\n return;\r\n }\r\n\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n _onUploadDroppedFiles(event: DragEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n const files = Array.from(event.dataTransfer.files);\r\n this.uploadFiles(files);\r\n }\r\n\r\n _onPreventDefault(event: DragEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n _onDownloadMediaConvertor(event: MouseEvent) {\r\n event.stopPropagation();\r\n }\r\n\r\n _onUploadFiles(event: Event): void {\r\n event.preventDefault();\r\n\r\n const files = (event.target as HTMLInputElement).files;\r\n\r\n if (!files.length)\r\n return;\r\n\r\n this.uploadFiles(Array.from(files));\r\n }\r\n\r\n _onClickFileInput() {\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n private uploadFiles(files: File[]) {\r\n if (this.allowedFileTypes?.length)\r\n this.isValidUpload = this.filesTypeValidation(files);\r\n\r\n if (this.supportedFilesMimes?.length)\r\n this.isSupportedFileType = this.supportedFilesValidation(files);\r\n\r\n if (!this.isValidUpload || !this.isSupportedFileType)\r\n return;\r\n\r\n this.isExceededFilesLength(files);\r\n\r\n if (this.filesList.length === this.numberOfAllowedFiles && files.length < this.numberOfAllowedFiles)\r\n this.filesList = [...files, ...this.filesList.slice(files.length)];\r\n else if (files.length === this.numberOfAllowedFiles)\r\n this.filesList = files;\r\n else if (files.length > this.numberOfAllowedFiles) {\r\n this.filesList = [];\r\n this.filesList.push(...files.slice(0, this.numberOfAllowedFiles));\r\n }\r\n else\r\n files.forEach((file) => this.filesList.push(file));\r\n\r\n this.filesDataEvent.emit(this.filesList);\r\n }\r\n\r\n private supportedFilesValidation(files: File[]) {\r\n return files.some((file) => this.supportedFilesMimes.some(supportedFileType => file.type.includes(supportedFileType)));\r\n }\r\n\r\n private filesTypeValidation(files: File[]) {\r\n if (files.some((file) => file.type === '' || file.type === undefined))\r\n return false;\r\n\r\n return files.some((file) => this.allowedFileTypes.some((splitFileType) => file.type.includes(splitFileType)));\r\n }\r\n\r\n private isExceededFilesLength(files: File[]) {\r\n if (files.length + this.filesList.length > this.numberOfAllowedFiles)\r\n this.hasExceededNumberOfAllowedFiles = true;\r\n else\r\n this.hasExceededNumberOfAllowedFiles = false;\r\n }\r\n\r\n getIconPath(file: File): string {\r\n let filePath: string = '';\r\n const uploadedFileSuffix: string = '.' + file?.name.split('.').pop();\r\n\r\n Object.values(resourcesFilesSuffixes).forEach(fileSuffix => {\r\n if (fileSuffix === uploadedFileSuffix)\r\n filePath = iconsFolderPath + fileSuffix + '.svg';\r\n })\r\n\r\n for (const [fileSuffixKey, fileSuffixValue] of Object.entries(filesSuffixes))\r\n if (fileSuffixValue.includes(uploadedFileSuffix.slice(1)))\r\n filePath = iconsFolderPath + '.' + fileSuffixKey + '.svg'\r\n\r\n return filePath ? filePath : defaultFileIconPath;\r\n }\r\n\r\n get convertorMediaPath() {\r\n return `${this.environmentConfig?.environment?.s3ServerPath}${this.environmentConfig?.buckets?.GeneralFiles}XMediaRecode.exe`;\r\n }\r\n\r\n private parseAllowedFileTypes(allowedFileTypes: string[]): string {\r\n if (!allowedFileTypes || !allowedFileTypes?.length)\r\n return '';\r\n\r\n return allowedFileTypes.map(allowedFileType => allowedFileType + anySubFileTypeWildCard).join(', ');\r\n }\r\n\r\n private addOrRemoveRequiredFieldError() {\r\n if (this.requiredField) {\r\n this.errorMessages.push(\r\n {\r\n condition: () => !this.filesList.length,\r\n message: requiredFieldMessage\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.errorMessages = this.errorMessages.filter(errorMessage => errorMessage.message !== requiredFieldMessage);\r\n }\r\n}","<button class=\"dropzone\" [class.not-displayed]=\"previewImageUrl\" [class.fill-container]=\"fillContainer\"\r\n [style.height]=\"grow ? '100%' : ''\" (drop)=\"_onUploadDroppedFiles($event)\" (click)=\"_onClickFileInput()\"\r\n (dragover)=\"_onPreventDefault($event)\">\r\n <div svgOnHover class=\"dropzone-content upload-file-border\" [style.height]=\"grow ? '100%' : '130px'\"\r\n [ngClass]=\"{'row-dropzone':type=='row'}\"\r\n [ngStyle]=\"{'justify-content': (filesList?.length || type == 'row') ? 'start' : 'center'}\">\r\n <div class=\"center-icon\" [ngClass]=\"{'upload-file-row-preview':directionPreview==='row' }\"\r\n *ngIf=\"!filesList?.length\">\r\n <span class=\"upload-file-image mb-2\" [style.height]=\"grow ? '60px' : ''\" [style.width]=\"grow ? '60px' : ''\"\r\n [innerHTML]=\"uploadFileSvg | safeHtml\">\r\n </span>\r\n\r\n <div class=\"dropzone-text\" [style.fontSize]=\"grow ? 'large' : ''\"> {{ placeholder }} </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"filesList?.length > 0\">\r\n <div class=\"files-container\" *ngFor=\"let file of filesList; index as i\">\r\n <img [src]=\"getIconPath(file)\" alt=\"#{{i+1}} picture\" />\r\n\r\n <span class=\"file-name truncate\"> {{ file?.name }}</span>\r\n\r\n <div class=\"delete-container\" (click)=\"_onRemoveFile(i, $event)\">\r\n <img class=\"delete-button\" src=\"assets/general/secondary-x.svg\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let error of errorMessages\">\r\n <span *ngIf=\"error.condition()\" class=\"error-msg\"\r\n [matTooltip]=\"!isSupportedFileType ? 'סוגי הקבצים הנתמכים: ' + supportedFilesTypes : ''\">\r\n {{ error.message }}\r\n </span>\r\n </div>\r\n\r\n <span (click)=\"$event.stopPropagation()\">\r\n <herum-download-file *ngIf=\"!isSupportedFileType\" [filePath]=\"convertorMediaPath\"\r\n linkText=\"להורדה תוכנת המרת מדיה\">\r\n </herum-download-file>\r\n </span>\r\n </div>\r\n</button>\r\n\r\n<div *ngIf=\"previewImageUrl\" class=\"preview-wrapper\">\r\n <div class=\"image-container\">\r\n <img [src]=\"previewImageUrl\" alt=\"Preview\" class=\"preview-image\">\r\n\r\n <button type=\"button\" class=\"remove-btn\" aria-label=\"Remove image\" (click)=\"_onRemoveImage()\">\r\n <img class=\"remove-icon\" src=\"assets/general/secondary-x.svg\" alt=Remove />\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<input #fileInput class=\"d-none\" type=\"file\" [accept]=\"parsedAllowedFileTypes\" (change)=\"_onUploadFiles($event)\"\r\n multiple>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-expendable-panel',\r\n templateUrl: './herum-expendable-panel.component.html',\r\n styleUrls: ['./herum-expendable-panel.component.scss']\r\n})\r\nexport class HerumExpendablePanelComponent {\r\n\r\n @Input() title!: string;\r\n @Input() isBoldTitle: boolean = false;\r\n\r\n isContentDisplayed: boolean = true;\r\n\r\n _onToggleContentDisplay(event: MouseEvent) {\r\n event.stopPropagation();\r\n this.isContentDisplayed = !this.isContentDisplayed;\r\n }\r\n}","<div class=\"collection-priority-expendable-panel-container\">\r\n <p class=\"expendable-panel-title m-0\"\r\n [ngClass]=\"{'displayed': isContentDisplayed, 'not-displayed': !isContentDisplayed,'bold': isBoldTitle}\"\r\n (click)=\"_onToggleContentDisplay($event)\">\r\n {{title}}\r\n </p>\r\n\r\n <ng-content *ngIf=\"isContentDisplayed\"></ng-content>\r\n</div>","import { Component, EventEmitter, Inject, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { FileData } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-files-viewer',\r\n templateUrl: './herum-files-viewer.component.html',\r\n styleUrls: ['./herum-files-viewer.component.scss']\r\n})\r\nexport class HerumFilesViewerComponent {\r\n\r\n @Input() fileData: FileData;\r\n @Input() showDeleteFileButton: boolean = false;\r\n\r\n @Output() downloadFile = new EventEmitter<FileData>();\r\n @Output() deleteFile = new EventEmitter<FileData>();\r\n\r\n srcPath!: string;\r\n fileType!: string;\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['fileData']?.currentValue) {\r\n const fileToDisplay = this.fileData.file?.size === 0;\r\n\r\n if (this.fileData.file && !fileToDisplay) {\r\n const type = this.fileData.file.type;\r\n const typeIndex = type.includes('pdf') ? 1 : 0;\r\n this.fileType = type.split(\"/\")[typeIndex];\r\n this.srcPath = URL.createObjectURL(this.fileData.file);\r\n return;\r\n }\r\n\r\n const type = this.fileData.type;\r\n const typeIndex = type?.includes('pdf') ? 1 : 0;\r\n this.fileType = type?.split(\"/\")[typeIndex];\r\n this.srcPath = this.environmentConfig?.environment?.s3ServerPath + this.fileData.bucket + \"/\" + this.fileData.key;\r\n }\r\n }\r\n\r\n _onDeleteFile() {\r\n this.deleteFile.emit(this.fileData);\r\n }\r\n\r\n _downloadFile() {\r\n this.downloadFile.emit(this.fileData);\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"fileType\">\r\n <div class=\"image-container\" *ngSwitchCase=\"'image'\">\r\n <img [style.background-image]=\"'url(' + srcPath + ')'\" [class.image-hover]=\"showDeleteFileButton\">\r\n </div>\r\n\r\n <herum-video-player *ngSwitchCase=\"'video'\" [srcPath]=\"srcPath\" [isResourceInWideMode]=\"true\"></herum-video-player>\r\n\r\n <herum-pdf-viewer *ngSwitchCase=\"'pdf'\" [srcPath]=\"srcPath\" [isResourceInWideMode]=\"true\"></herum-pdf-viewer>\r\n\r\n <herum-audio-player *ngSwitchCase=\"'audio'\" [id]=\"fileData.key\" [bucketName]=\"fileData.bucket\"\r\n [audioFile]=\"fileData.file\">\r\n </herum-audio-player>\r\n\r\n <herum-download-file *ngSwitchDefault linkText=\"הקובץ אינו נתמך, ניתן להורדו\" (downloadFile)=\"_downloadFile()\">\r\n </herum-download-file>\r\n</ng-container>\r\n\r\n<button *ngIf=\"showDeleteFileButton\" class=\"delete-file-button\" (click)=\"_onDeleteFile()\">\r\n <img src=\"assets/general/secondary-x.svg\" />\r\n</button>","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-multi-progress-bar',\r\n templateUrl: './herum-multi-progress-bar.component.html',\r\n styleUrls: ['./herum-multi-progress-bar.component.scss']\r\n})\r\nexport class HerumMultiProgressBarComponent implements OnInit {\r\n\r\n @Input() progressBarsSections: {\r\n label: string,\r\n percentage: number,\r\n progressBars: {\r\n label: string,\r\n value: number,\r\n percentage: number,\r\n color: string,\r\n }[]\r\n }[]\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n getBorderRadius(sectionIndex: number, progressBarIndex: number) {\r\n if (this.progressBarsSections.length == 1 && this.progressBarsSections[0].progressBars.length == 1)\r\n return 'both';\r\n\r\n switch (sectionIndex) {\r\n case 0:\r\n return progressBarIndex == 0 ? 'left' : 'none';\r\n case this.progressBarsSections.length - 1:\r\n return progressBarIndex == this.progressBarsSections[sectionIndex].progressBars.length - 1 ? 'right' : 'none';\r\n default:\r\n return 'none';\r\n }\r\n }\r\n}","<div class=\"sections-bars-container\">\r\n <div class=\"progress-bars-container\" *ngFor=\"let section of progressBarsSections; let sectionIndex = index\"\r\n [ngStyle]=\"{'width':(section.percentage + '%')}\">\r\n <herum-progress-bar *ngFor=\"let progressBar of section.progressBars; let progressBarIndex = index\"\r\n [color]=\"progressBar.color\" [percentage]=\"progressBar.value\" [borderRadius]=\"getBorderRadius(sectionIndex,progressBarIndex)\"\r\n [ngStyle]=\"{'width':(progressBar.percentage + '%')}\"></herum-progress-bar>\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-navigator',\r\n templateUrl: './herum-navigator.component.html',\r\n styleUrls: ['./herum-navigator.component.scss']\r\n})\r\nexport class HerumNavigatorComponent {\r\n\r\n @Input() isFirstItem: boolean = false;\r\n @Input() isLastItem: boolean = false;\r\n\r\n @Input() nextButtonText: string = 'לשיעור הבא';\r\n @Input() previousButtonText: string = 'לשיעור הקודם';\r\n\r\n @Input() isNextButtonDisable: boolean = false;\r\n @Input() isBackButtonDisable: boolean = false;\r\n\r\n @Input() currentItemIndex!: number;\r\n\r\n @Output() updatedItemIndex = new EventEmitter<number>();\r\n\r\n _onPreviousItem(currentItemIndex: number) {\r\n this.updatedItemIndex.emit(--currentItemIndex);\r\n }\r\n\r\n _onNextItem(currentItemIndex: number) {\r\n this.updatedItemIndex.emit(++currentItemIndex);\r\n }\r\n}","<div class=\"buttons-container\">\r\n <herum-button *ngIf=\"!isFirstItem\" [size]=\"'medium'\" [type]=\"'ghost'\" [disabled]=\"isBackButtonDisable\" id=\"prev\"\r\n (click)=\"_onPreviousItem(currentItemIndex)\">\r\n {{previousButtonText}}\r\n </herum-button>\r\n\r\n <herum-button *ngIf=\"!isLastItem\" [size]=\"'medium'\" [disabled]=\"isNextButtonDisable\" id=\"next\"\r\n (click)=\"_onNextItem(currentItemIndex)\">\r\n {{nextButtonText}}\r\n </herum-button>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { Step } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-step-navigator',\r\n templateUrl: './herum-step-navigator.component.html',\r\n styleUrls: ['./herum-step-navigator.component.scss']\r\n})\r\nexport class HerumStepNavigatorComponent {\r\n\r\n @Input() steps: Step[];\r\n}","<div class=\"steps\">\r\n <div *ngFor=\"let step of steps\" class=\"stepper-item\"\r\n [ngClass]=\"{'completed-step': step.status === 0, 'active-step': step.status === 1}\">\r\n <herum-radio-button [options]=\"[{id:step.index, name:step.label}]\" [selectedOption]=\"step.index\"\r\n [isBlocked]=\"true\" [type]=\"step.status === 0 ? 'completed' : step.status === 2 ? 'disabled' :'checked'\">\r\n </herum-radio-button>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { Step, StepStatus } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-stepper',\r\n templateUrl: './herum-stepper.component.html',\r\n styleUrls: ['./herum-stepper.component.scss']\r\n})\r\nexport class HerumStepperComponent {\r\n\r\n @Input() color: 'primary' | 'white' = 'primary';\r\n @Input() useDymanicSize: boolean = false;\r\n @Input() steps: Step[] = [\r\n {\r\n index: 1,\r\n label: \"פרטים\",\r\n status: StepStatus.Complete,\r\n },\r\n {\r\n index: 2,\r\n label: \"שיוך מארזים\",\r\n status: StepStatus.Complete,\r\n },\r\n {\r\n index: 1,\r\n label: \"הנוכחי\",\r\n status: StepStatus.Current,\r\n },\r\n {\r\n index: 1,\r\n label: \"סיכום\",\r\n status: StepStatus.Incomplete,\r\n }\r\n ];\r\n @Input() current: number = this.steps.length;\r\n\r\n getStepItemStyle(index: number) {\r\n if (!this.useDymanicSize)\r\n return null;\r\n\r\n if (index > this.current)\r\n return { 'opacity': Math.max((1 - (index - this.current) / index) + 0.1, 1 - (index / this.steps.length)) };\r\n\r\n if (index < this.current)\r\n return { 'opacity': Math.max((index / this.current) + 0.1, (index / this.steps.length)) };\r\n }\r\n}","<div class=\"stepper-wrapper\" [ngStyle]=\"{'gap': color=='white' ? '24px' : '0', 'margin-bottom': color=='white' ? '0' : '20px'}\">\r\n <ng-container *ngFor=\"let step of steps; let i = index\">\r\n <ng-container *ngIf=\"!step.iconPath\">\r\n <ng-container [ngSwitch]=\"step.status\">\r\n <div *ngSwitchCase=\"0\" class=\"stepper-item completed\">\r\n <div class=\"step-counter\">\r\n <img src=\"assets/shared/icons/stepper/white-v.svg\" width=\"15px\" alt=\"checked\" />\r\n </div>\r\n <div class=\"step-name\">{{step.label}}</div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"1\" class=\"stepper-item active\">\r\n <div class=\"step-counter\">\r\n <div class=\"current-inner-circle\"></div>\r\n </div>\r\n <div class=\"step-name\">{{step.label}}</div>\r\n </div>\r\n\r\n <div *ngSwitchCase=\"2\" class=\"stepper-item\">\r\n <div class=\"step-counter\">\r\n <div class=\"current-inner-circle\"></div>\r\n </div>\r\n <div class=\"step-name\">{{step.label}}</div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"step.iconPath\">\r\n <div class=\"stepper-item white\" [ngStyle]=\"getStepItemStyle(i)\">\r\n <div class=\"step-counter\" [ngStyle]=\"{ 'transform': i == current ? 'scale(1.5)' : '' }\">\r\n <img [src]=\"step.iconPath\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { User } from 'herum-shared/herum-types';\r\nimport { getAssignmentStateDisplayName } from 'herum-shared/utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-user-profile',\r\n templateUrl: './herum-user-profile.component.html',\r\n styleUrls: ['./herum-user-profile.component.scss']\r\n})\r\nexport class HerumUserProfileComponent {\r\n\r\n @Input() userData: User;\r\n @Input() mode: 'vertical' | 'horizontal' = 'vertical';\r\n @Input() titleSize: 'big' | 'medium' | 'small' = 'big';\r\n @Input() imageSize: 'image-default-size' | 'image-small-size' = 'image-default-size';\r\n\r\n get userFullName() {\r\n return this.userData?.firstName + ' ' + this.userData?.lastName;\r\n }\r\n\r\n get fullHierarchyName() {\r\n if (!this.userData.assignments || !this.userData.assignments.length)\r\n return this.userData.profession;\r\n\r\n return this.userData.assignments[0].structPreview.fullHierarchyName;\r\n }\r\n\r\n get assignmentStateDisplayName() {\r\n if (!this.userData.assignments || this.userData.assignments.length == 0) return ''\r\n return getAssignmentStateDisplayName(this.userData.assignments[0].assignmentMetadata.state);\r\n }\r\n}","<div class=\"profile-top-conatiner\" [ngClass]=\"mode\" *ngIf=\"userData\">\r\n <user-profile-image [user]=\"userData\" [imageSize]=\"imageSize\" [mode]=\"mode\"></user-profile-image>\r\n\r\n <div class=\"profile-name-container\">\r\n <p\r\n [ngClass]=\"{'section-header-title': titleSize === 'medium','profile-title': titleSize === 'big','section-title': titleSize === 'small'}\">\r\n {{userFullName}}\r\n\r\n <herum-chip *ngIf=\"userData.assignments?.length > 0\"\r\n [type]=\"userData.assignments[0].assignmentMetadata?.state == 2 ? 'negative':'positive'\"\r\n [title]=\"assignmentStateDisplayName\" [isDeleteButtonNeeded]=\"false\"></herum-chip>\r\n </p>\r\n <p class=\"profile-subtitle\">{{fullHierarchyName}}</p>\r\n <p class=\"profile-description\" *ngIf=\"mode=='horizontal'\">{{userData.profession}}</p>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { KeyValue } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'key-value-list',\r\n templateUrl: './key-value-list.component.html',\r\n styleUrls: ['./key-value-list.component.scss']\r\n})\r\nexport class KeyValueListComponent {\r\n\r\n @Input() items: KeyValue[] = [];\r\n}","\r\n<div class=\"item-contianer mb-1\" *ngFor=\"let item of items\">\r\n <div *ngIf=\"item.iconPath\" class=\"col-1\">\r\n <img *ngIf=\"item.iconPath\" [src]=\"item.iconPath\">\r\n </div>\r\n <div class=\"key col-4 bold\">{{item.key}}</div>\r\n <div class=\"value col-7 truncate\" [matTooltip]=\"item.value\">{{item.value}}</div>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'labels-with-icons-list',\r\n templateUrl: './labels-with-icons-list.component.html',\r\n styleUrls: ['./labels-with-icons-list.component.scss']\r\n})\r\nexport class LabelsWithIconsListComponent {\r\n\r\n @Input() items: { iconPath: string, label: string }[] = [];\r\n}","<div class=\"label-item\" *ngFor=\"let item of items\">\r\n <img [src]=\"item.iconPath\" alt=\" \" />\r\n <p>{{ item.label }}</p>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { ProgressOverView } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'progresses-over-view',\r\n templateUrl: './progresses-over-view.component.html',\r\n styleUrls: ['./progresses-over-view.component.scss']\r\n})\r\nexport class ProgressesOverViewComponent {\r\n\r\n @Input() titleSize: 'section-title' | 'section-header-title' = 'section-header-title';\r\n @Input() circularProgressSize: 'default-size' | 'big-size' = 'big-size';\r\n @Input() progressesOverView: ProgressOverView[] = [];\r\n @Input() progressOverViewDirection: 'column' | 'row' = 'row';\r\n @Input() containerProgressesOverViewDirection: 'column' | 'row' = 'column';\r\n}","<div class=\"layout\">\r\n <div class=\"progresses-container\"\r\n [ngClass]=\"{'row-progresses-container':containerProgressesOverViewDirection === 'row'}\">\r\n <div class=\"progress-over-view\" [ngClass]=\"{'flex-direction-column':progressOverViewDirection === 'column'}\"\r\n *ngFor=\"let progressOverView of progressesOverView\">\r\n <herum-circular-progress-bar [fill]=\"false\" [showPercentage]=\"progressOverView.showPercentage\"\r\n [percentage]=\"progressOverView.progress\" [displayedContent]=\"progressOverView.displayedContent\"\r\n [displayedContentColorMatchesGradientColor]=\"progressOverView.displayedContentColorMatchesGradientColor\"\r\n [firstGradient]=\"progressOverView.firstGradient\" [size]=\"circularProgressSize\">\r\n </herum-circular-progress-bar>\r\n\r\n <div class=\"progress-labels\" [ngClass]=\"{'align-items-center':progressOverViewDirection === 'column'}\">\r\n <h2 class=\"section-header-title m-0 p-0\" [ngClass]=\"[titleSize]\">\r\n {{ progressOverView.title }}\r\n </h2>\r\n\r\n <span *ngIf=\"progressOverView.description\" class=\"w-100 text-align-right\">\r\n {{ progressOverView.description }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { MAT_DATE_LOCALE, MatNativeDateModule } from '@angular/material/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { PipesModule } from 'herum-shared/pipes';\r\nimport { AtomsModule } from 'herum-shared/atoms';\r\n\r\nimport { HerumActiveLinkComponent } from './herum-active-link/herum-active-link.component';\r\nimport { HerumActiveMenuComponent } from './herum-active-menu/herum-active-menu.component';\r\nimport { HerumAutocompleteComponent } from './herum-autocomplete/herum-autocomplete.component';\r\nimport { HerumClosedListMultiSelectComponent } from './herum-closed-list-multi-select/herum-closed-list-multi-select.component';\r\nimport { HerumClosedListSelectComponent } from './herum-closed-list-select/herum-closed-list-select.component';\r\nimport { HerumDateTimeInputComponent } from './herum-date-time-input/herum-date-time-input.component';\r\nimport { HerumDateTimePickerComponent } from './herum-date-time-picker/herum-date-time-picker.component';\r\nimport { HerumDropZoneComponent } from './herum-drop-zone/herum-drop-zone.component';\r\nimport { HerumExpendablePanelComponent } from './herum-expendable-panel/herum-expendable-panel.component';\r\nimport { HerumFilesViewerComponent } from './herum-files-viewer/herum-files-viewer.component';\r\nimport { HerumHierarchyTreeNodeComponent } from './herum-hierarchy-tree-node/herum-hierarchy-tree-node.component';\r\nimport { HerumMultiProgressBarComponent } from './herum-multi-progress-bar/herum-multi-progress-bar.component';\r\nimport { HerumNavigatorComponent } from './herum-navigator/herum-navigator.component';\r\nimport { HerumStepNavigatorComponent } from './herum-step-navigator/herum-step-navigator.component';\r\nimport { HerumStepperComponent } from './herum-stepper/herum-stepper.component';\r\nimport { HerumTimeSelectComponent } from './herum-time-select/herum-time-select.component';\r\nimport { HerumUserProfileComponent } from './herum-user-profile/herum-user-profile.component';\r\nimport { HerumUserProgressComponent } from './herum-user-progress/herum-user-progress.component';\r\nimport { KeyValueListComponent } from './key-value-list/key-value-list.component';\r\nimport { LabelsWithIconsListComponent } from './labels-with-icons-list/labels-with-icons-list.component';\r\nimport { ProgressesOverViewComponent } from './progresses-over-view/progresses-over-view.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n HerumActiveLinkComponent,\r\n HerumActiveMenuComponent,\r\n HerumAutocompleteComponent,\r\n HerumClosedListMultiSelectComponent,\r\n HerumClosedListSelectComponent,\r\n HerumDateTimeInputComponent,\r\n HerumDateTimePickerComponent,\r\n HerumDropZoneComponent,\r\n HerumExpendablePanelComponent,\r\n HerumFilesViewerComponent,\r\n HerumHierarchyTreeNodeComponent,\r\n HerumMultiProgressBarComponent,\r\n HerumNavigatorComponent,\r\n HerumStepNavigatorComponent,\r\n HerumStepperComponent,\r\n HerumTimeSelectComponent,\r\n HerumUserProfileComponent,\r\n HerumUserProgressComponent,\r\n KeyValueListComponent,\r\n LabelsWithIconsListComponent,\r\n ProgressesOverViewComponent\r\n ],\r\n exports: [\r\n HerumActiveLinkComponent,\r\n HerumActiveMenuComponent,\r\n HerumAutocompleteComponent,\r\n HerumClosedListMultiSelectComponent,\r\n HerumClosedListSelectComponent,\r\n HerumDateTimeInputComponent,\r\n HerumDateTimePickerComponent,\r\n HerumDropZoneComponent,\r\n HerumExpendablePanelComponent,\r\n HerumFilesViewerComponent,\r\n HerumHierarchyTreeNodeComponent,\r\n HerumMultiProgressBarComponent,\r\n HerumNavigatorComponent,\r\n HerumStepNavigatorComponent,\r\n HerumStepperComponent,\r\n HerumTimeSelectComponent,\r\n HerumUserProfileComponent,\r\n HerumUserProgressComponent,\r\n KeyValueListComponent,\r\n LabelsWithIconsListComponent,\r\n ProgressesOverViewComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatMenuModule,\r\n ClipboardModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatFormFieldModule,\r\n MatTooltipModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n MatCheckboxModule,\r\n MatSliderModule,\r\n DragDropModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n PipesModule,\r\n AtomsModule\r\n ],\r\n providers: [\r\n { provide: MAT_DATE_LOCALE, useValue: 'he-IL' },\r\n ]\r\n})\r\nexport class MoleculesModule { }","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { system } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'error-message-dialog',\r\n templateUrl: './error-message-dialog.component.html',\r\n styleUrls: ['./error-message-dialog.component.scss']\r\n})\r\nexport class ErrorMessageDialogComponent implements OnInit {\r\n\r\n errorImagePath: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<ErrorMessageDialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n ngOnInit(): void {\r\n this.errorImagePath = {\r\n [system.herum]: 'assets/general/errorOwl.png',\r\n [system.college]: 'assets/college/pagesIcons/EchoIcon.svg',\r\n [system.hadracha]: 'assets/hadracha/general/shapes.svg'\r\n }[this.environmentConfig?.environment?.systemIdentifier];\r\n }\r\n _onSubmit() {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n _onClose() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","<div class=\"error-dialog-container\">\r\n <div class=\"w-100 d-flex justify-content-center\">\r\n <img [src]=\"errorImagePath\">\r\n </div>\r\n\r\n <p class=\"title\">{{ data.title }}</p>\r\n <p class=\"description\">{{ data.description }}</p>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ErrorMessageDialogComponent } from './error-message-dialog/error-message-dialog.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n ErrorMessageDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [\r\n ErrorMessageDialogComponent\r\n ]\r\n})\r\nexport class ErrorsModule { }","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { replaceInterpolateKeysWithObjectProperties } from 'herum-shared/utils';\r\nimport { FetchedMessage } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'fetched-message-dialog',\r\n templateUrl: './fetched-message-dialog.component.html',\r\n styleUrls: ['./fetched-message-dialog.component.scss', '../../styles/dialogs.scss']\r\n})\r\nexport class FetchedMessageDialog {\r\n\r\n message!: FetchedMessage;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<FetchedMessageDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: { fetchedMessage: FetchedMessage, recipient: Object }) { }\r\n\r\n ngOnInit() {\r\n if (this.data) {\r\n const parsedMessage = {};\r\n Object.entries(this.data.fetchedMessage).forEach(([key, value]) => parsedMessage[key] = replaceInterpolateKeysWithObjectProperties(value as string, this.data.recipient));\r\n this.message = (parsedMessage as FetchedMessage);\r\n }\r\n }\r\n\r\n _onCloseDialog() {\r\n this.dialogRef.close();\r\n }\r\n}","<div class=\"fetched-message-dialog-container\">\r\n <div class=\"message-content\">\r\n <div [innerHTML]=\"message?.image | safeHtml\"></div>\r\n\r\n <div>\r\n <div [innerHTML]=\"message?.title | safeHtml\"></div>\r\n <div [innerHTML]=\"message?.subTitle | safeHtml\"></div>\r\n <div [innerHTML]=\"message?.content | safeHtml\"></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"dialog-buttons-actions-container\">\r\n <herum-button [name]=\"'fetched-messsage-dialog-submission'\" (click)=\"_onCloseDialog()\">\r\n {{message?.actionButtonText}}\r\n </herum-button>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FetchedMessageDialog } from './fetched-message-dialog/fetched-message-dialog.component';\r\nimport { AtomsModule } from 'herum-shared/atoms';\r\nimport { PipesModule } from 'herum-shared/pipes';\r\n\r\n@NgModule({\r\n declarations: [\r\n FetchedMessageDialog\r\n ],\r\n imports: [\r\n CommonModule,\r\n AtomsModule,\r\n PipesModule\r\n ],\r\n exports: [\r\n FetchedMessageDialog\r\n ]\r\n})\r\nexport class FetchedMessageModule { }","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { HerumTableParams, AlignDir } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n selector: 'app-checkbox-cell',\r\n standalone: false,\r\n templateUrl: './checkbox-cell.html',\r\n styleUrl: './checkbox-cell.scss',\r\n})\r\nexport class CheckboxCellComponent implements ICellRendererAngularComp {\r\n\r\n isChecked: boolean = false;\r\n blocked: boolean = false;\r\n align?: AlignDir;\r\n params: HerumTableParams;\r\n\r\n _checked(checked: boolean) {\r\n this.params.value = checked;\r\n this.params.context.componentParent.selectedRowByChildComponent(this.params);\r\n }\r\n\r\n agInit(params: HerumTableParams) {\r\n this.setParams(params);\r\n }\r\n\r\n refresh(params: HerumTableParams): boolean {\r\n this.setParams(params);\r\n return true;\r\n }\r\n\r\n private setParams(params: HerumTableParams) {\r\n this.isChecked = params.valueFormatted ?? params.value;\r\n this.align = params.align;\r\n // this.blocked = params.blocked; todo\r\n this.blocked = params.disabled;\r\n this.params = params;\r\n }\r\n}\r\n","<div class=\"checkbox-container\" [ngClass]=\"align\">\r\n <herum-checkbox [isChecked]=\"isChecked\" [isBlocked]=\"blocked\" (checkedEmitter)=\"_checked($event)\"></herum-checkbox>\r\n</div>","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { HerumTableParams } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'app-chips-cell',\r\n templateUrl: './chips-cell.component.html',\r\n styleUrls: ['./chips-cell.component.scss']\r\n})\r\nexport class ChipsCellComponent implements ICellRendererAngularComp {\r\n\r\n params!: ICellRendererParams;\r\n value!: any;\r\n\r\n agInit(params: HerumTableParams): void {\r\n this.params = params;\r\n this.value = params.value;\r\n }\r\n\r\n refresh(params: HerumTableParams): boolean {\r\n return true;\r\n }\r\n}","<!-- <div class=\"herum-chips-container\">\r\n <herum-chip *ngFor=\"let chip of getLimitedList()\" [title]=\"chip.name\" [isDeleteButtonNeeded]=\"false\">sdfsfd</herum-chip>\r\n\r\n <ng-container *ngIf=\"selectedOptionsValue && selectedOptionsValue.length > maxChips\">\r\n <herum-chip class=\"last-chip\" [matTooltip]=\"_getHiddenOptions()\"\r\n [title]=\"(selectedOptionsValue.length - maxChips) + '+'\" [isDeleteButtonNeeded]=\"false\"></herum-chip>\r\n </ng-container>\r\n</div> -->","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { HerumTableParams } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'app-copyable-cell',\r\n templateUrl: './copyable-cell.component.html',\r\n styleUrls: ['./copyable-cell.component.scss']\r\n})\r\nexport class CopyableCellComponent implements ICellRendererAngularComp {\r\n\r\n params!: ICellRendererParams;\r\n value!: any;\r\n\r\n agInit(params: HerumTableParams): void {\r\n this.params = params;\r\n this.value = params.value;\r\n }\r\n\r\n refresh(params: HerumTableParams): boolean {\r\n return true;\r\n }\r\n}","<span class=\"text\" [cdkCopyToClipboard]=\"value\" matTooltip=\"לחץ להעתקה\" matTooltipShowDelay=\"300\">\r\n {{value}}\r\n</span>","import { Component, Input } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { HerumTableParams, TableActions } from 'herum-shared/herum-types';\r\nimport { svgsStrings } from 'herum-shared/constants';\r\nimport { isTruncatedTitleElement } from 'herum-shared/utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'delete-row',\r\n templateUrl: './delete-row.component.html',\r\n styleUrls: ['./delete-row.component.scss']\r\n})\r\nexport class DeleteRowComponent implements ICellRendererAngularComp {\r\n\r\n @Input() isRowHovered = false;\r\n @Input() params!: HerumTableParams;\r\n value!: any;\r\n garbageSvg: string = svgsStrings.garbage;\r\n\r\n agInit(params: HerumTableParams): void {\r\n this.params = params;\r\n this.value = params.value;\r\n this.params.context.componentParent.setChildComponentRef(this);\r\n }\r\n\r\n _onDelete(event: MouseEvent) {\r\n event.stopPropagation();\r\n this.params.context.componentParent.selectedRowByChildComponent({ ...this.params, action: TableActions.delete });\r\n }\r\n\r\n _isTruncatedTitleElement(element: HTMLElement): boolean {\r\n return isTruncatedTitleElement(element);\r\n }\r\n\r\n refresh(params: HerumTableParams): boolean {\r\n return false;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.params?.context.componentParent.deleteChildComponentReference(this);\r\n }\r\n}","<div class=\"cell-container\">\r\n <div #cellValue class=\"cell-value\" [matTooltip]=\"_isTruncatedTitleElement(cellValue)? value : ''\">\r\n {{value | ellipsis:cellValue}}\r\n </div>\r\n\r\n <img class=\"cursor-pointer\" *ngIf=\"isRowHovered\" src=\"assets/feed/icons/garbage.svg\"\r\n (click)=\"_onDelete($event)\" alt=\"delete\">\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\nimport { HerumTableParams, HoveredHerumRowTable, TableActions } from 'herum-shared/herum-types';\r\nimport { svgsStrings } from 'herum-shared/constants';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'edit-row',\r\n templateUrl: './edit-row.component.html',\r\n styleUrls: ['./edit-row.component.scss']\r\n})\r\nexport class EditRowComponent implements ICellRendererAngularComp, HoveredHerumRowTable {\r\n\r\n @Input() isRowHovered: boolean = false;\r\n @Input() params!: ICellRendererParams;\r\n value!: any;\r\n action!: number;\r\n isCopyableToClipboard: boolean = false;\r\n\r\n constructor(private clipboard: Clipboard) { }\r\n\r\n agInit(params: HerumTableParams): void {\r\n this.params = params;\r\n this.value = params.valueFormatted ?? params.value;\r\n this.params.context.componentParent.setChildComponentRef(this);\r\n\r\n if (params.action !== undefined)\r\n this.action = params.action;\r\n\r\n if (params.isCopyableToClipboard !== undefined)\r\n this.isCopyableToClipboard = params.isCopyableToClipboard;\r\n }\r\n\r\n _onEdit(event: MouseEvent) {\r\n event.stopPropagation();\r\n this.params.context.componentParent.selectedRowByChildComponent({ ...this.params, action: TableActions.edit });\r\n }\r\n\r\n _onCopyToClipboard(event: MouseEvent) {\r\n if (!this.isCopyableToClipboard)\r\n return;\r\n\r\n event.stopPropagation();\r\n this.clipboard.copy(this.value);\r\n }\r\n\r\n refresh(params: HerumTableParams): boolean {\r\n return true;\r\n }\r\n\r\n get editIcon() {\r\n return svgsStrings.edit;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.params?.context.componentParent.deleteChildComponentReference(this);\r\n }\r\n}","<div class=\"cell-container\">\r\n <span class=\"text\" (click)=\"_onCopyToClipboard($event)\" [matTooltip]=\"isCopyableToClipboard? 'לחץ להעתקה' : ''\"\r\n matTooltipShowDelay=\"600\">{{value}}</span>\r\n\r\n <span class=\"edit-button\" *ngIf=\"isRowHovered\" [innerHTML]=\"editIcon | safeHtml\" (click)=\"_onEdit($event)\"\r\n alt=\"edit\"></span>\r\n</div>","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { HerumTableParams, AlignDir } from 'herum-shared/herum-types';\r\nimport { TableRowHeight } from 'herum-shared/decorators';\r\nimport { tableRowHeights } from 'herum-shared/constants';\r\n\r\n@TableRowHeight(tableRowHeights.switchCell)\r\n@Component({\r\n standalone: false,\r\n selector: 'input-cell',\r\n templateUrl: './input-cell.component.html',\r\n styleUrls: ['./input-cell.component.scss']\r\n})\r\nexport class InputCellComponent implements ICellRendererAngularComp {\r\n align?: AlignDir;\r\n params: HerumTableParams;\r\n inputValue: number;\r\n\r\n _input(value: number) {\r\n this.inputValue = value;\r\n this.params.value = value;\r\n this.params.context.componentParent.selectedRowByChildComponent(this.params);\r\n }\r\n\r\n agInit(params: HerumTableParams) {\r\n this.setParams(params);\r\n }\r\n\r\n refresh(params: HerumTableParams): boolean {\r\n this.setParams(params);\r\n\r\n return true;\r\n }\r\n\r\n private setParams(params: HerumTableParams) {\r\n this.inputValue = params.valueFormatted ?? params.value;\r\n this.params = params;\r\n this.align = params.align;\r\n }\r\n}","<div class=\"input-cell-container\" [ngClass]=\"align\">\r\n <herum-input-field type=\"number\" (inputValueEmitter)=\"_input($event)\" [inputValue]=\"inputValue\" placeholder=\"\"></herum-input-field>\r\n</div>","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { HerumTableParams } from 'herum-shared/herum-types';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'row-action-buttons',\r\n templateUrl: './row-action-buttons.component.html',\r\n styleUrls: ['./row-action-buttons.component.scss']\r\n})\r\nexport class RowActionButtonsComponent implements ICellRendererAngularComp {\r\n\r\n isRowHovered: boolean = false;\r\n value!: any;\r\n params!: ICellRendererParams;\r\n\r\n agInit(params: HerumTableParams): void {\r\n this.params = params;\r\n this.value = params.value;\r\n this.params.context.componentParent.setChildComponentRef(this);\r\n }\r\n\r\n refresh(params: HerumTableParams): boolean {\r\n return true;\r\n }\r\n}","<div class=\"cell-container\">\r\n <span class=\"text\">{{value}}</span>\r\n\r\n <div *ngIf=\"isRowHovered\" class=\"buttons-container\">\r\n <edit-row [isRowHovered]=\"isRowHovered\" [params]=\"params\"></edit-row>\r\n <delete-row [isRowHovered]=\"isRowHovered\" [params]=\"params\"></delete-row>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { HerumTableParams, AlignDir } from 'herum-shared/herum-types';\r\nimport { TableRowHeight } from 'herum-shared/decorators';\r\nimport { tableRowHeights } from 'herum-shared/constants';\r\n\r\n@TableRowHeight(tableRowHeights.switchCell)\r\n@Component({\r\n standalone: false,\r\n selector: 'switch-cell',\r\n templateUrl: './switch-cell.component.html',\r\n styleUrls: ['./switch-cell.component.scss']\r\n})\r\nexport class SwitchCellComponent implements ICellRendererAngularComp {\r\n @Input() isChecked?: boolean;\r\n @Input() align?: AlignDir;\r\n @Input() disabled: boolean = false;\r\n\r\n params: HerumTableParams;\r\n\r\n _checked(isChecked: boolean) {\r\n this.params.value = isChecked;\r\n this.params.context.componentParent.selectedRowByChildComponent(this.params);\r\n }\r\n\r\n agInit(params: HerumTableParams) {\r\n this.isChecked = params.valueFormatted ?? params.value;\r\n this.params = params;\r\n\r\n this.align = params.align;\r\n this.disabled = params.disabled;\r\n }\r\n\r\n refresh(params: HerumTableParams): boolean {\r\n return true;\r\n }\r\n}\r\n","<div class=\"switch-container\" [ngClass]=\"align\">\r\n <herum-switch [isChecked]=\"isChecked\" (checked)=\"_checked($event)\" [disabled]=\"disabled\"></herum-switch>\r\n</div>","import { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { AgFilterComponent } from 'ag-grid-angular';\r\nimport { IDoesFilterPassParams, IFilterParams, RowNode, } from 'ag-grid-community';\r\nimport { Subject, BehaviorSubject, Observable } from \"rxjs\";\r\nimport { debounceTime, takeUntil, tap } from \"rxjs/operators\";\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from \"herum-shared/environment\";\r\nimport { isTruncatedTitleElement } from 'herum-shared/utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'app-herum-ag-grid-filter',\r\n templateUrl: './herum-ag-grid-filter.component.html',\r\n styleUrls: ['./herum-ag-grid-filter.component.scss']\r\n})\r\nexport class HerumAgGridFilterComponent implements AgFilterComponent, OnInit {\r\n\r\n private static readonly rowHeight: number = 28;\r\n private model!: Array<string>;\r\n private uniqueCheck!: object;\r\n private filterParams!: IFilterParams;\r\n private fieldId!: string;\r\n private filterList!: Array<string>;\r\n\r\n isEverythingSelected!: boolean;\r\n isToggleAllCheckBoxBlocked: boolean = false;\r\n containerHeight!: number;\r\n selectedValuesMap!: object;\r\n checkBoxType: string;\r\n\r\n onFilterListChange$!: BehaviorSubject<string[]>;\r\n onFilterValuesChanged$!: Observable<string[]>;\r\n destroySubject$ = new Subject<null>();\r\n selectedFilter: FormControl = new FormControl('');\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private envConfig: EnvironmentConfig) { }\r\n\r\n ngOnInit(): void {\r\n this.checkBoxType = this.envConfig?.checkboxTypes?.checked;\r\n }\r\n\r\n agInit(params: IFilterParams): void {\r\n this.filterParams = params;\r\n this.uniqueCheck = {};\r\n this.selectedValuesMap = {};\r\n this.filterList = new Array<string>();\r\n\r\n if (params.colDef.field !== undefined)\r\n this.fieldId = params.colDef.field;\r\n\r\n this.onFilterListChange$ = new BehaviorSubject<string[]>([]);\r\n\r\n this.selectedFilter.valueChanges\r\n .pipe(takeUntil(this.destroySubject$))\r\n .subscribe(text => {\r\n let filterListToEmit = this.filterList.filter(filter => filter.includes(text));\r\n this.onFilterListChange$.next([...filterListToEmit]);\r\n\r\n if (!text) {\r\n if (this.isToggleAllCheckBoxBlocked)\r\n this.isToggleAllCheckBoxBlocked = false;\r\n\r\n this.setCheckBoxType();\r\n return;\r\n }\r\n\r\n this.handleChekedValuesWhenfiltering();\r\n })\r\n\r\n this.onFilterValuesChanged$ = this.onFilterListChange$\r\n .pipe(\r\n debounceTime(250),\r\n tap(values => {\r\n this.sortValues(values);\r\n this.setContainerHeight();\r\n }),\r\n );\r\n\r\n this.setUniqueValues();\r\n this.selectEverything();\r\n this.isEverythingSelected = Object.keys(this.selectedValuesMap).length === this.filterList.length;\r\n }\r\n\r\n private handleChekedValuesWhenfiltering() { //Todo-restruct to else if\r\n let filteredValuesWhichAreSelected = this.onFilterListChange$.value.filter(value => this.selectedValuesMap.hasOwnProperty(value));\r\n\r\n if (this.checkBoxType === 'disabled')\r\n this.isToggleAllCheckBoxBlocked = false;\r\n\r\n if (filteredValuesWhichAreSelected.length > 0 && filteredValuesWhichAreSelected.length < Object.keys(this.selectedValuesMap).length)\r\n this.checkBoxType = this.envConfig?.checkboxTypes?.indeterminate;\r\n\r\n if (!this.onFilterListChange$.value.length) {\r\n this.checkBoxType = 'disabled';\r\n this.isToggleAllCheckBoxBlocked = true;\r\n }\r\n\r\n if (filteredValuesWhichAreSelected.length === this.onFilterListChange$.value.length && filteredValuesWhichAreSelected.length > 0 && this.onFilterListChange$.value.length > 0)\r\n this.checkBoxType = this.envConfig?.checkboxTypes?.checked;\r\n\r\n if (!filteredValuesWhichAreSelected.length && this.onFilterListChange$.value.length)\r\n this.checkBoxType = this.envConfig?.checkboxTypes?.unchecked;\r\n }\r\n\r\n setUniqueValues() {\r\n this.filterParams.rowModel.forEachNode((node: RowNode) => {\r\n if (!node.data)\r\n return;\r\n\r\n let value = node.data[this.fieldId];\r\n this.addUniqueValueIfMissing(value);\r\n });\r\n }\r\n\r\n toggleItem(value: string, updateMetadata: boolean = true) {\r\n const selectedValuesMapLength = Object.keys(this.selectedValuesMap).length;\r\n\r\n if ((this.selectedValuesMap as { [key: string]: number })[value])\r\n delete (this.selectedValuesMap as { [key: string]: number })[value];\r\n else\r\n (this.selectedValuesMap as { [key: string]: number })[value] = 1;\r\n\r\n const updatedSelectedValuesMap = Object.keys(this.selectedValuesMap).length;\r\n\r\n if (updateMetadata) {\r\n this.isEverythingSelected = Object.keys(this.selectedValuesMap).length === this.filterList.length;\r\n this.setCheckBoxType();\r\n }\r\n\r\n if (this.onFilterListChange$.value.length !== this.filterList.length)\r\n this.handleChekedValuesWhenfiltering();\r\n\r\n if (updatedSelectedValuesMap !== selectedValuesMapLength)\r\n this.onFilterChanged();\r\n }\r\n\r\n setCheckBoxType() {\r\n if (Object.keys(this.selectedValuesMap).filter(item => item != 'null').length == this.filterList.filter(item => item != 'null').length) {\r\n this.checkBoxType = this.envConfig?.checkboxTypes?.checked;\r\n this.isEverythingSelected = true;\r\n }\r\n else if (Object.keys(this.selectedValuesMap).filter(item => item != 'null').length < this.filterList.filter(item => item != 'null').length && (Object.keys(this.selectedValuesMap).length > 1 || (Object.keys(this.selectedValuesMap).length == 1 && Object.keys(this.selectedValuesMap)[0] != 'null'))) {\r\n this.checkBoxType = this.envConfig?.checkboxTypes?.indeterminate;\r\n this.isEverythingSelected = false;\r\n }\r\n else {\r\n this.checkBoxType = undefined;\r\n this.isEverythingSelected = false;\r\n }\r\n }\r\n\r\n toggleEverything() {\r\n if (this.onFilterListChange$.value.length === 1 && this.filterList.length > 1 && !this.isEverythingSelected) {\r\n this.toggleItem(this.onFilterListChange$.value[0])\r\n return;\r\n }\r\n\r\n if (this.checkBoxType === this.envConfig?.checkboxTypes?.indeterminate)\r\n this.isEverythingSelected = false;\r\n else\r\n this.isEverythingSelected = !this.isEverythingSelected;\r\n\r\n if (this.onFilterListChange$.value.length !== this.filterList.length) {\r\n if (this.checkBoxType !== this.envConfig?.checkboxTypes?.indeterminate)\r\n this.onFilterListChange$.value.forEach(value => this.toggleItem(value, this.isEverythingSelected));\r\n else {\r\n this.onFilterListChange$.value.forEach(value =>\r\n delete (this.selectedValuesMap as { [key: string]: number })[value]);\r\n this.onFilterChanged();\r\n this.checkBoxType = undefined;\r\n }\r\n }\r\n\r\n if (this.isEverythingSelected && this.onFilterListChange$.value.length === this.filterList.length) {\r\n this.onFilterListChange$.value.forEach(value => this.toggleItem(value, false));\r\n this.setCheckBoxType();\r\n }\r\n\r\n if (!this.isEverythingSelected && this.onFilterListChange$.value.length === this.filterList.length) {\r\n this.checkBoxType = undefined;\r\n this.unselectEverything();\r\n }\r\n }\r\n\r\n onNewRowsLoaded() {\r\n this.setUniqueValues();\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return Object.keys(this.selectedValuesMap).length > 0 && !this.isEverythingSelected;\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const node = params.node;\r\n if (!node.data) {\r\n return false;\r\n }\r\n\r\n const nodeValue = params.data[this.fieldId];\r\n if (!this.isValueValid(nodeValue)) {\r\n return false;\r\n }\r\n\r\n return Boolean((this.selectedValuesMap as { [key: string]: any })[nodeValue]);\r\n }\r\n\r\n getModel() {\r\n return this.model;\r\n }\r\n\r\n onFilterChanged() {\r\n this.filterParams.filterChangedCallback();\r\n }\r\n\r\n setModel(value: string) {\r\n this.unselectEverything();\r\n this.selectedValuesMap = { [value]: 1 };\r\n this.addUniqueValueIfMissing(value);\r\n }\r\n\r\n private setContainerHeight() {\r\n this.containerHeight =\r\n this.filterList.length * HerumAgGridFilterComponent.rowHeight;\r\n }\r\n\r\n private sortValues(values: string[]) {\r\n values.sort();\r\n }\r\n\r\n private selectEverything() {\r\n this.selectedValuesMap = this.onFilterListChange$.value.reduce((acc, value) => ({ ...acc, [value]: 1 }), {} as { [key: string]: number });\r\n this.setCheckBoxType();\r\n }\r\n\r\n private unselectEverything() {\r\n this.selectedValuesMap = {} as { [key: string]: number };\r\n this.toggleItem(null, false);\r\n }\r\n\r\n private addUniqueValueIfMissing(value: string) {\r\n if ((this.uniqueCheck as { [key: string]: number })[value])\r\n return;\r\n\r\n this.filterList.push(value);\r\n this.onFilterListChange$.next([...this.filterList]);\r\n (this.uniqueCheck as { [key: string]: number })[value] = 1;\r\n }\r\n\r\n private isValueValid(value: string) {\r\n if (value === undefined || value === null)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n isTruncatedTitleElement(element: HTMLElement): boolean {\r\n return isTruncatedTitleElement(element);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n}","<div class=\"ag-filter\">\r\n <herum-input-field [type]=\"'search'\" [placeholder]=\"'חפש ערך לפילטור'\" [showErrorMsgGap]=\"false\"\r\n [formControl]=\"selectedFilter\"></herum-input-field>\r\n <div>\r\n <div class=\"ag-filter-body-wrapper\">\r\n <div ref=\"ag-filter-loading\" class=\"loading-filter ag-hidden\">\r\n Loading...\r\n </div>\r\n <div>\r\n <div id=\"richList\" class=\"ag-set-filter-list\">\r\n <div class=\"ag-virtual-list-viewport\">\r\n <div class=\"ag-virtual-list-container\" [attr.style.height]=\"containerHeight\">\r\n <div style=\"line-height: 28px;\">\r\n <label class=\"ag-set-filter-item\">\r\n <div class=\"ag-filter-checkbox\">\r\n <herum-checkbox [isChecked]=\"isEverythingSelected\" [type]=\"checkBoxType\"\r\n [isBlocked]=\"isToggleAllCheckBoxBlocked\"\r\n (checkedEmitter)=\"toggleEverything()\"></herum-checkbox>\r\n </div>\r\n <span class=\"ag-filter-value select-all-bold\">בחר הכל</span>\r\n </label>\r\n </div>\r\n\r\n <div style=\"line-height: 28px;\" *ngFor=\"let item of (onFilterValuesChanged$ | async)\">\r\n <label class=\"ag-set-filter-item\">\r\n <div class=\"ag-filter-checkbox\">\r\n <herum-checkbox (checkedEmitter)=\"toggleItem(item)\"\r\n [isChecked]=\"selectedValuesMap.hasOwnProperty(item)\"></herum-checkbox>\r\n </div>\r\n\r\n <span #agFilterValue appHerumToolTip class=\"ag-filter-value w-100\"\r\n [matTooltip]=\"isTruncatedTitleElement(agFilterValue)? item : ''\">\r\n {{item === '' ? '(ריק)': item | ellipsis:agFilterValue}}\r\n </span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { AfterViewInit, Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { ColDef, ColumnApi, GridApi, GridReadyEvent, ModelUpdatedEvent, RowNode } from 'ag-grid-community';\r\nimport { HerumAgGridFilterComponent } from '../../molecules/herum-ag-grid-filter/herum-ag-grid-filter.component';\r\n\r\nimport { tableRowHeights } from 'herum-shared/constants';\r\nimport { CheckboxCellComponent } from '../../atoms/checkbox-cell/checkbox-cell';\r\nimport { BaseRowData, HoveredHerumRowTable, HerumTableParams } from 'herum-shared/herum-types';\r\n\r\nconst rowDataInput: string = 'rowData';\r\nconst pixelUnit: string = 'px';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-table',\r\n templateUrl: './herum-table.component.html',\r\n styleUrls: ['./herum-table.component.scss'],\r\n providers: [HerumAgGridFilterComponent]\r\n})\r\nexport class HerumTableComponent implements OnChanges, AfterViewInit {\r\n\r\n @Input() rowData: (unknown & BaseRowData)[];\r\n @Input() columnDefs: ColDef[] = [\r\n { checkboxSelection: true, headerCheckboxSelection: true, },\r\n { headerName: 'שם המארז', field: 'collectionName', filter: HerumAgGridFilterComponent },\r\n { headerName: 'נושא', field: 'subject', filter: HerumAgGridFilterComponent },\r\n {\r\n headerName: 'יוצר', field: 'creator',\r\n cellEditor: 'agRichSelectCellEditor',\r\n singleClickEdit: true,\r\n cellEditorParams: {\r\n values: ['Male', 'Female'],\r\n }, filter: HerumAgGridFilterComponent\r\n },\r\n { headerName: 'תאריך יצירה', field: 'creationDate', filter: HerumAgGridFilterComponent },\r\n { headerName: 'כמות משאבים', field: 'resourceCount', filter: HerumAgGridFilterComponent },\r\n {\r\n headerName: 'זמן צפייה משוער', field: 'watchTime',\r\n editable: true,\r\n cellEditor: 'agSelectCellEditor',\r\n singleClickEdit: true,\r\n cellEditorParams: {\r\n values: [5, 8, 12],\r\n },\r\n },\r\n ];\r\n @Input() selectedRowsIds: string[] = [];\r\n @Input() noResults!: number;\r\n @Input() overlayNoRowsTemplate: string = 'לא נמצאו תוצאות';\r\n @Input() rowsSelectionType: 'multiple' | 'single' = 'multiple';\r\n @Input() usePagination: boolean = false;\r\n @Input() suppressRowClickSelection: boolean = false;\r\n @Input() showExportToExcel: boolean = false;\r\n\r\n @Output() onCheckedRow = new EventEmitter<any>();\r\n @Output() onUncheckedRow = new EventEmitter<any>();\r\n @Output() selectedRowByChild = new EventEmitter<any>();\r\n @Output() cellValueChangeByChild = new EventEmitter<any>();\r\n @Output() cellMouseOver = new EventEmitter<any>();\r\n @Output() onPaginationChanged = new EventEmitter<any>();\r\n\r\n @ViewChild('tableContainer') tableContainer: ElementRef;\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize() {\r\n const newWidth = window.innerWidth;\r\n\r\n if (newWidth > this.windowWidth) {\r\n this.windowWidth = newWidth;\r\n this.resizeColumnsWidth();\r\n }\r\n }\r\n\r\n windowWidth: number = window.innerWidth;\r\n context: any;\r\n childComponentsReferences: HoveredHerumRowTable[] = [];\r\n isLoading: boolean = true;\r\n gridApi!: GridApi;\r\n isFirstDataRendered = false;\r\n\r\n defaultColDef = {\r\n resizable: false,\r\n sortable: true,\r\n flex: 1,\r\n minWidth: 100,\r\n maxWidth: 300,\r\n rowHeight: 20,\r\n };\r\n\r\n gridOptions = {\r\n groupSelectsFiltered: true,\r\n suppressCopyRowsToClipboard: false,\r\n rowClassRules: {\r\n 'selected-row': 'data.selected',\r\n },\r\n cellStyle: { 'user-select': 'text' },\r\n localeText: {\r\n filterOoo: \"בחר ערך פילטור...\",\r\n equals: \"שווה ל\",\r\n notEqual: \"לא שווה\",\r\n contains: \"מכיל\",\r\n notContains: \"לא מכיל\",\r\n startsWith: \"מתחיל ב\",\r\n endsWith: \"נגמר ב\",\r\n filter: \"פילטור\",\r\n applyFilter: \"אשר פילטור\",\r\n resetFilter: \"אפס פילטור\",\r\n },\r\n } as any;\r\n\r\n frameworkComponents = { customCheckboxRenderer: CheckboxCellComponent };\r\n\r\n rowHeight: number = tableRowHeights.default;\r\n tableWidth: string = '100%';\r\n gridColumnApi!: ColumnApi;\r\n params: HerumTableParams;\r\n hoveredRowId!: string;\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes[rowDataInput]) {\r\n this.isLoading = true;\r\n\r\n if (changes[rowDataInput]?.currentValue) {\r\n this.childComponentsReferences = [];\r\n this.isLoading = false;\r\n\r\n if (!!this.selectedRowsIds.length)\r\n this.sortBySelectedRows();\r\n\r\n if (this.tableContainer)\r\n this.tableContainer.nativeElement.style.height = this.setTableHeight(changes[rowDataInput].currentValue.length);\r\n }\r\n }\r\n\r\n if (changes['columnDefs']) this.updateRowHeight();\r\n\r\n this.context = { componentParent: this };\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (!this.tableContainer.nativeElement.style.height)\r\n this.tableContainer.nativeElement.style.height = this.setTableHeight(this.rowData?.length);\r\n }\r\n\r\n _onExportCsv() {\r\n this.gridApi.exportDataAsCsv();\r\n }\r\n\r\n _onFirstDataRendered(params: HerumTableParams) {\r\n this.isFirstDataRendered = true;\r\n this.params = params;\r\n\r\n if (!this.selectedRowsIds?.length)\r\n return;\r\n\r\n this.updateSelectedRows(params);\r\n }\r\n\r\n _onGridReady(params: GridReadyEvent) {\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi = params.api;\r\n this.resizeColumnsWidth();\r\n }\r\n\r\n _onModelUpdated(modelUpdatedEvent: ModelUpdatedEvent) {\r\n if (this.isLoading || !this.selectedRowsIds?.length)\r\n return;\r\n\r\n this.updateSelectedRows(modelUpdatedEvent);\r\n }\r\n\r\n _onSelectionChanged(event: any) {\r\n event.api.getSelectedRows();\r\n }\r\n\r\n _onPaginationChanged(event) {\r\n if (this.isFirstDataRendered)\r\n this.onPaginationChanged.emit(event);\r\n }\r\n\r\n _onCellMouseOver(event: any) {\r\n this.toggleHoverIcon(event.data.id);\r\n }\r\n\r\n _onFilterChanged(params: HerumTableParams): void {\r\n this.tableContainer.nativeElement.style.height = this.setTableHeight(params.api.getDisplayedRowCount());\r\n }\r\n\r\n _onRowSelected(row: any) {\r\n row.node.selected ?\r\n this.onCheckedRow.emit(row.data) :\r\n this.onUncheckedRow.emit(row.data);\r\n }\r\n\r\n _onGridMouseLeave() {\r\n this.hoveredRowId = '';\r\n this.childComponentsReferences.forEach((component) => {\r\n if (component.isRowHovered)\r\n component.isRowHovered = false;\r\n });\r\n }\r\n\r\n selectedRowByChildComponent(params: HerumTableParams) {\r\n this.selectedRowByChild.emit(params);\r\n }\r\n\r\n deleteChildComponentReference(componentReference: HoveredHerumRowTable) {\r\n const componentIndex = this.getExistingComponentReferenceIndex(componentReference);\r\n\r\n if (componentIndex !== -1)\r\n this.childComponentsReferences.splice(componentIndex, 1);\r\n }\r\n\r\n setChildComponentRef(componentReference: HoveredHerumRowTable) {\r\n const componentIndex = this.getExistingComponentReferenceIndex(componentReference);\r\n\r\n if (componentIndex === -1)\r\n this.childComponentsReferences.push(componentReference);\r\n }\r\n\r\n private setTableHeight(numberOfRows: number): string {\r\n const overlayNoRowsTemplateHeight = 350;\r\n const headerRowHeight: number = 48;\r\n const tableHeight: number = headerRowHeight + numberOfRows * this.rowHeight;\r\n const minTableHeight = headerRowHeight + 7 * this.rowHeight;\r\n\r\n if (!numberOfRows)\r\n return `${overlayNoRowsTemplateHeight}px`;\r\n\r\n if (tableHeight < minTableHeight)\r\n return minTableHeight + pixelUnit;\r\n\r\n return 'calc(100% - var(--export-buttons-margin) - var(--export-buttons-container-height))';\r\n }\r\n\r\n private updateSelectedRows(params: HerumTableParams | ModelUpdatedEvent) {\r\n params.api.forEachNode((node: RowNode) => {\r\n if (this.selectedRowsIds?.includes(node.data.id))\r\n node.setSelected(true);\r\n });\r\n\r\n params.api.redrawRows();\r\n }\r\n\r\n private sortBySelectedRows() {\r\n this.rowData.sort((a, b) => {\r\n if (this.selectedRowsIds?.includes(a.id) && !this.selectedRowsIds?.includes(b.id))\r\n return -1;\r\n else if (!this.selectedRowsIds?.includes(a.id) && this.selectedRowsIds?.includes(b.id))\r\n return 1;\r\n else\r\n return 0;\r\n });\r\n }\r\n\r\n private resizeColumnsWidth() {\r\n const webkitScrollbarWidth: number = 6;\r\n const widthGapBetweenAgBodyViewportAndTableContainer: number = 2;\r\n\r\n this.gridApi?.getColumns()?.forEach((column: any) => {\r\n column.maxWidth = column.minWidth = ((this.tableContainer.nativeElement.clientWidth - webkitScrollbarWidth - widthGapBetweenAgBodyViewportAndTableContainer) / this.gridApi?.getColumns()!.length);\r\n });\r\n }\r\n\r\n private toggleHoverIcon(rowId: string) {\r\n if (this.hoveredRowId && rowId === this.hoveredRowId)\r\n return;\r\n\r\n this.childComponentsReferences.forEach((component) => {\r\n if (component.isRowHovered)\r\n component.isRowHovered = false;\r\n });\r\n\r\n if (!rowId) {\r\n console.error(\"got no rowId for hover\");\r\n return;\r\n }\r\n\r\n const componentsReferences = this.childComponentsReferences.filter((component) => component.params.data.id === rowId);\r\n\r\n if (componentsReferences.length) {\r\n this.hoveredRowId = rowId;\r\n componentsReferences.forEach(component => component.isRowHovered = true);\r\n }\r\n }\r\n\r\n private getExistingComponentReferenceIndex(component: HoveredHerumRowTable): number {\r\n const id = component.params.data.id;\r\n const headerName = component.params.column?.getColDef().headerName;\r\n\r\n return this.childComponentsReferences.findIndex((component) =>\r\n component.params.data.id === id && component.params.column?.getColDef().headerName === headerName);\r\n }\r\n\r\n private updateRowHeight() {\r\n const maxHeight = this.getMaxRowHeightFromColumns();\r\n\r\n if (maxHeight) this.rowHeight = maxHeight;\r\n\r\n this.setRowheightStyleProperty();\r\n }\r\n\r\n private setRowheightStyleProperty() {\r\n document.documentElement.style.setProperty('--table-row-line-height', `${this.rowHeight + pixelUnit}`);\r\n }\r\n\r\n private getMaxRowHeightFromColumns() {\r\n const rowHeights: number[] = this.columnDefs.map(column => column?.cellRenderer?.tableRowHeight).filter(height => !!height) || [];\r\n\r\n const maxHeight = Math.max(...rowHeights, 0);\r\n\r\n return maxHeight;\r\n }\r\n}","<div class=\"table-layout-container\" [class.show-export-button]=\"showExportToExcel\">\r\n <div #tableContainer class=\"table-container\">\r\n <ag-grid-angular style=\"height: 100% ;width: 100%\" class=\"ag-theme-alpine ag-rtl\" [rowData]=\"rowData\"\r\n [rowSelection]=\"rowsSelectionType\" [rowMultiSelectWithClick]=\"true\" [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\" [context]=\"context\" [components]=\"frameworkComponents\"\r\n [overlayNoRowsTemplate]=\"overlayNoRowsTemplate\" [enableRtl]=\"true\" [rowHeight]=\"rowHeight\"\r\n [pagination]=\"usePagination\" [paginationAutoPageSize]=\"usePagination\" [tooltipShowDelay]=\"0\"\r\n [gridOptions]=\"gridOptions\" [suppressRowClickSelection]=\"suppressRowClickSelection\"\r\n (cellMouseOver)=\"_onCellMouseOver($event)\" (paginationChanged)=\"_onPaginationChanged($event)\"\r\n (rowSelected)=\"_onRowSelected($event)\" (firstDataRendered)=\"_onFirstDataRendered($event)\"\r\n (filterChanged)=\"_onFilterChanged($event)\" (gridReady)=\"_onGridReady($event)\"\r\n (modelUpdated)=\"_onModelUpdated($event)\" (mouseleave)=\"_onGridMouseLeave()\">\r\n </ag-grid-angular>\r\n <ng-container *ngIf=\"isLoading\"><herum-loader></herum-loader></ng-container>\r\n </div>\r\n\r\n <div class=\"export-button-container\">\r\n <herum-button [type]=\"'secondary'\" (click)=\"_onExportCsv()\">ייצוא לאקסל</herum-button>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { AtomsModule } from 'herum-shared/atoms';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\n\r\nimport { CheckboxCellComponent } from './atoms/checkbox-cell/checkbox-cell';\r\nimport { ChipsCellComponent } from './atoms/chips-cell/chips-cell.component';\r\nimport { CopyableCellComponent } from './atoms/copyable-cell/copyable-cell.component';\r\nimport { DeleteRowComponent } from './atoms/delete-row/delete-row.component';\r\nimport { EditRowComponent } from './atoms/edit-row/edit-row.component';\r\nimport { InputCellComponent } from './atoms/input-cell/input-cell.component';\r\nimport { RowActionButtonsComponent } from './atoms/row-action-buttons/row-action-buttons.component';\r\nimport { SwitchCellComponent } from './atoms/switch-cell/switch-cell.component';\r\nimport { HerumTableComponent } from './organisms/heurm-table/herum-table.component';\r\nimport { HerumAgGridFilterComponent } from './molecules/herum-ag-grid-filter/herum-ag-grid-filter.component'\r\nimport { PipesModule } from 'herum-shared/pipes';\r\n\r\n@NgModule({\r\n declarations: [\r\n CheckboxCellComponent,\r\n ChipsCellComponent,\r\n CopyableCellComponent,\r\n DeleteRowComponent,\r\n EditRowComponent,\r\n InputCellComponent,\r\n RowActionButtonsComponent,\r\n SwitchCellComponent,\r\n HerumTableComponent,\r\n HerumAgGridFilterComponent\r\n ],\r\n exports: [\r\n CheckboxCellComponent,\r\n ChipsCellComponent,\r\n CopyableCellComponent,\r\n DeleteRowComponent,\r\n EditRowComponent,\r\n InputCellComponent,\r\n RowActionButtonsComponent,\r\n SwitchCellComponent,\r\n HerumTableComponent,\r\n HerumAgGridFilterComponent,\r\n AgGridModule\r\n ],\r\n imports: [\r\n CommonModule,\r\n AtomsModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatTooltipModule,\r\n AgGridModule,\r\n PipesModule,\r\n ClipboardModule\r\n ],\r\n})\r\nexport class TableModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HerumToolTipDirective } from './directives/herum-tool-tip.directive';\r\nimport { HerumVideoPlayerComponent } from './organisms/herum-video-player/herum-video-player.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { HerumVideoRangeBarComponent } from './organisms/herum-video-player/herum-video-range-bar/herum-video-range-bar.component';\r\nimport { HerumPdfViewerComponent } from './organisms/herum-pdf-viewer/herum-pdf-viewer.component';\r\nimport { HerumStoryViewerComponent } from './organisms/herum-story-viewer/herum-story-viewer.component';\r\nimport { UserActionDirective } from './directives/user-action.directive';\r\nimport { HerumPresentationViewerComponent } from './organisms/herum-presentation-viewer/herum-presentation-viewer.component';\r\nimport { HerumLoaderComponent } from './organisms/herum-loader/herum-loader.component';\r\nimport { SvgOnHoverDirective } from './directives/svg-on-hover.directive';\r\nimport { DatePipe } from '@angular/common';\r\nimport { HerumQuizComponent } from './organisms/herum-quiz/herum-quiz.component';\r\nimport { QuizHeaderComponent } from './organisms/herum-quiz/quiz-header/quiz-header.component';\r\nimport { QuizTwoAnswersQuestionComponent } from './organisms/herum-quiz/quiz-two-answers-question/quiz-two-answers-question.component';\r\nimport { QuizOneAnswerQuestionComponent } from './organisms/herum-quiz/quiz-one-answer-question/quiz-one-answer-question.component';\r\nimport { QuizSubmissionComponent } from './organisms/herum-quiz/quiz-submission/quiz-submission.component';\r\nimport { QuizIntroComponent } from './organisms/herum-quiz/quiz-intro/quiz-intro.component';\r\nimport { QuizGradeSheetComponent } from './organisms/herum-quiz/quiz-grade-sheet/quiz-grade-sheet.component';\r\nimport { QuizMultiAnswerQuestionComponent } from './organisms/herum-quiz/quiz-multi-answer-question/quiz-multi-answer-question.component';\r\nimport { QuizLoaderComponent } from './organisms/herum-quiz/quiz-loader/quiz-loader.component';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { HerumListCentralizerComponent } from './organisms/herum-list-centralizer/herum-list-centralizer.component';\r\nimport { HerumLocalLoaderComponent } from './organisms/herum-local-loader/herum-local-loader.component';\r\nimport { BlockedFormComponent } from './organisms/blocked-form/blocked-form.component';\r\nimport { HerumMiniTableComponent } from './organisms/herum-mini-table/herum-mini-table.component';\r\nimport { HerumHierarchyTreeComponent } from './organisms/herum-hierarchy-tree/herum-hierarchy-tree.component';\r\nimport { RecursiveTreeComponent } from './organisms/herum-hierarchy-tree/recursive-tree/recursive-tree.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { HerumTextualVerticalTreeComponent } from './organisms/herum-hierarchy-tree/herum-textual-vertical-tree/herum-textual-vertical-tree.component';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MAT_DATE_LOCALE, MatNativeDateModule } from '@angular/material/core';\r\nimport { HerumDateTimePickerSelectComponent } from './organisms/herum-date-time-picker-select/herum-date-time-picker-select.component';\r\nimport { HerumTimeRangeSelectComponent } from './organisms/herum-time-range-select/herum-time-range-select.component';\r\nimport { AudioPlayerComponent } from './organisms/audio-player/audio-player.component'\r\nimport { AudioSliderComponent } from './organisms/audio-player/audio-slider/audio-slider.component';\r\nimport { TrackTextChangesComponent } from './organisms/track-text-changes/track-text-changes.component';\r\nimport { QuizOpenAnswerQuestionComponent } from './organisms/herum-quiz/quiz-open-answer-question/quiz-open-answer-question.component';\r\nimport { HerumHighlightDirective } from './directives/herum-highlight.directive';\r\nimport { DialogsModule } from './dialogs/dialogs-module';\r\nimport { AtomsModule } from './atoms/atoms-module';\r\nimport { PipesModule } from './pipes/pipes-module';\r\nimport { MoleculesModule } from './molecules/molecules-module';\r\nimport { ErrorsModule } from './errors/errors-module';\r\nimport { FetchedMessageModule } from './fetched-message/fetched-message-module';\r\nimport { TableModule } from './table/table-module';\r\n\r\n@NgModule({\r\n declarations: [\r\n HerumToolTipDirective,\r\n HerumVideoPlayerComponent,\r\n TrackTextChangesComponent,\r\n HerumVideoRangeBarComponent,\r\n HerumPdfViewerComponent,\r\n HerumStoryViewerComponent,\r\n UserActionDirective,\r\n HerumPresentationViewerComponent,\r\n HerumLoaderComponent,\r\n SvgOnHoverDirective,\r\n\r\n HerumQuizComponent,\r\n QuizHeaderComponent,\r\n QuizTwoAnswersQuestionComponent,\r\n QuizOneAnswerQuestionComponent,\r\n QuizSubmissionComponent,\r\n QuizIntroComponent,\r\n QuizGradeSheetComponent,\r\n QuizMultiAnswerQuestionComponent,\r\n QuizLoaderComponent,\r\n\r\n HerumListCentralizerComponent,\r\n HerumLocalLoaderComponent,\r\n BlockedFormComponent,\r\n AudioPlayerComponent,\r\n HerumMiniTableComponent,\r\n HerumHierarchyTreeComponent,\r\n RecursiveTreeComponent,\r\n HerumTextualVerticalTreeComponent,\r\n HerumDateTimePickerSelectComponent,\r\n HerumTimeRangeSelectComponent,\r\n AudioSliderComponent,\r\n QuizOpenAnswerQuestionComponent,\r\n HerumHighlightDirective,\r\n ],\r\n exports: [\r\n TrackTextChangesComponent,\r\n HerumToolTipDirective,\r\n UserActionDirective,\r\n HerumVideoPlayerComponent,\r\n HerumPdfViewerComponent,\r\n HerumStoryViewerComponent,\r\n HerumLoaderComponent,\r\n HerumLocalLoaderComponent,\r\n HerumQuizComponent,\r\n SvgOnHoverDirective,\r\n HerumHighlightDirective,\r\n CommonModule,\r\n HerumListCentralizerComponent,\r\n BlockedFormComponent,\r\n HerumMiniTableComponent,\r\n HerumHierarchyTreeComponent,\r\n HerumTextualVerticalTreeComponent,\r\n AudioPlayerComponent,\r\n HerumDateTimePickerSelectComponent,\r\n HerumTimeRangeSelectComponent,\r\n QuizIntroComponent,\r\n QuizOneAnswerQuestionComponent,\r\n QuizMultiAnswerQuestionComponent,\r\n QuizOpenAnswerQuestionComponent,\r\n DialogsModule,\r\n AtomsModule,\r\n MoleculesModule,\r\n PipesModule,\r\n ErrorsModule,\r\n FetchedMessageModule,\r\n TableModule,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatMenuModule,\r\n ClipboardModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatFormFieldModule,\r\n MatTooltipModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n MatCheckboxModule,\r\n MatSliderModule,\r\n DragDropModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n DialogsModule,\r\n AtomsModule,\r\n PipesModule,\r\n MoleculesModule,\r\n ErrorsModule,\r\n FetchedMessageModule,\r\n TableModule\r\n ],\r\n providers: [\r\n DatePipe,\r\n { provide: MAT_DATE_LOCALE, useValue: 'he-IL' },\r\n ]\r\n})\r\nexport class HerumSharedModule { }","import { trigger, state, style, animate, transition } from '@angular/animations'; \r\n \r\nexport const openClose = trigger('openClose', [ \r\n state('openUp', style({ \r\n opacity: 1, \r\n transform: 'translateY(-100%)' \r\n })), \r\n \r\n state('openDown', style({ \r\n opacity: 1 \r\n })), \r\n \r\n state('closeDown', style({ \r\n top: 0, \r\n transform: 'translateY(-100%)', \r\n opacity: 0, \r\n height: '0px' ,\r\n })), \r\n \r\n state('closeUp', style({ \r\n opacity: 0, \r\n height: '0px' ,\r\n padding:0\r\n })), \r\n \r\n transition('openUp => closeDown', [ \r\n animate('350ms ease-in') \r\n ]), \r\n \r\n transition('closeDown => openUp', [ \r\n animate('350ms ease-out') \r\n ]), \r\n \r\n transition('openDown => closeUp', [ \r\n animate('350ms ease-out') \r\n ]), \r\n \r\n transition('closeUp => openDown', [ \r\n animate('350ms ease-in') \r\n ]) \r\n])","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { StorageService } from 'herum-shared/static-services';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FetchedMessageDialog } from './fetched-message-dialog/fetched-message-dialog.component';\r\nimport { FetchedMessage } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { buildPath } from 'herum-shared/utils';\r\n\r\nconst suffixStorageKey: string = 'FETCHED_MESSAGE_HAS_SHOWN';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FetchedMessageService {\r\n\r\n private recipient!: Object;\r\n private messageKey!: string;\r\n\r\n constructor(private http: HttpClient, private dialog: MatDialog, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n handleFetchedMessage(recipient: Object, messageKey: string, condition = true) {\r\n this.setMessageKey(messageKey);\r\n this.setRecipient(recipient);\r\n\r\n const fetchedMessageHasShownStorageKey = messageKey.toUpperCase() + '_' + suffixStorageKey;\r\n\r\n if (condition && !StorageService.getItem(fetchedMessageHasShownStorageKey)) {\r\n this.fetchedMessageData().subscribe((fetchedMessage: FetchedMessage) => this.dialog.open(FetchedMessageDialog, { data: { fetchedMessage, recipient: this.recipient } }));\r\n StorageService.setItem(fetchedMessageHasShownStorageKey, fetchedMessageHasShownStorageKey);\r\n }\r\n }\r\n\r\n private setMessageKey(messageKey: string) {\r\n this.messageKey = messageKey;\r\n }\r\n\r\n private setRecipient(recipient: Object) {\r\n this.recipient = recipient;\r\n }\r\n\r\n fetchedMessageData(): Observable<Object> {\r\n return this.http.get(buildPath([this.environmentConfig?.environment?.siteServerPath, 'Messages', this.messageKey]));\r\n }\r\n}","import { HttpClient, HttpErrorResponse, HttpRequest } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ErrorMessageDialogComponent } from 'herum-shared/errors';\r\nimport { dialogsDescriptions, dialogsTitles } from 'herum-shared/constants';\r\nimport { Subject } from 'rxjs';\r\nimport { CommonDependentsToast, ToastHttpResponseDependencies } from 'herum-shared/herum-types';\r\nimport { FailedDependentsRequestsContext, ComplexObservableArrowFunctions } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { UtilsService } from 'herum-shared/static-services';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorsHandlerService {\r\n\r\n isErrorPopupCurrentlyOpened: boolean = false;\r\n\r\n failedReportUploadProgressRequests: HttpRequest<any>[] = [];\r\n failedDependentsRequestsContext: FailedDependentsRequestsContext = {};\r\n\r\n dependentRequestId$: Subject<string> = new Subject();\r\n reportUploadProgressRequest$: Subject<string> = new Subject();\r\n\r\n commonDependentsErrorToast$: Subject<CommonDependentsToast> = new Subject();\r\n errorToast$: Subject<ToastHttpResponseDependencies> = new Subject();\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private http: HttpClient,\r\n private utilsService: UtilsService,\r\n @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n handleError(errorStatus: number, errorData?: any) {\r\n if (!errorData)\r\n return;\r\n\r\n let url: string = errorData?.url;\r\n\r\n if (errorData.headers?.dependentId) {\r\n const commonDependentsErrorToast: CommonDependentsToast = { commonDependentsId: errorData.commonDependentsId, numberOfObservableArrowFunctions: errorData.numberOfObservableArrowFunctions, errorStatus }\r\n this.handleDependentRequestError(commonDependentsErrorToast, errorData.headers?.dependentId);\r\n }\r\n\r\n if (errorData.headers?.reportUploadProgressId)\r\n this.handleReportUploadProgressRequestError(errorData.headers.reportUploadProgressId);\r\n\r\n const isErrorToastNeeded: boolean = this.isErrorToastNeeded(errorData, errorStatus);\r\n\r\n if (isErrorToastNeeded)\r\n this.handleErrorToast(errorData)\r\n\r\n if (errorData == 'CRITICAL')\r\n this.handleInternalServerError(true);\r\n\r\n switch (errorStatus) {\r\n case 401: this.handleUnauthorizedError(); break;\r\n case 403: this.handleForbiddenError(!isErrorToastNeeded); break;\r\n case 409: this.handleConflictError(); break;\r\n case 500: this.handleInternalServerError(); break;\r\n case 504: this.handleTimeoutError(!isErrorToastNeeded); break;\r\n default: break;\r\n }\r\n\r\n if (!url?.includes('Activity'))\r\n this.http.post(this.environmentConfig?.environment?.userAction, errorData).subscribe();\r\n }\r\n\r\n setFailedReportUploadProgressRequests(failedReportUploadProgressRequest: HttpRequest<any>) {\r\n this.failedReportUploadProgressRequests.push(failedReportUploadProgressRequest);\r\n }\r\n\r\n private handleUnauthorizedError() {\r\n console.error(\"Unauthorized error\");\r\n }\r\n\r\n private handleConflictError() {\r\n console.error(\"Conflict error\");\r\n }\r\n\r\n private handleForbiddenError(isErrorPopupNeeded: boolean) {\r\n if (this.isErrorPopupCurrentlyOpened || !isErrorPopupNeeded) return;\r\n this.isErrorPopupCurrentlyOpened = true;\r\n\r\n const dialogRef = this.dialog.open(ErrorMessageDialogComponent, {\r\n data: { title: dialogsTitles.userError, description: dialogsDescriptions.forbiddenServerError }\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => this.isErrorPopupCurrentlyOpened = false);\r\n }\r\n\r\n private handleTimeoutError(isErrorPopupNeeded: boolean) {\r\n if (this.isErrorPopupCurrentlyOpened || !isErrorPopupNeeded) return;\r\n this.isErrorPopupCurrentlyOpened = true;\r\n\r\n const dialogRef = this.dialog.open(ErrorMessageDialogComponent, {\r\n data: { title: dialogsTitles.timeoutError, description: dialogsDescriptions.timeoutError }\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => this.isErrorPopupCurrentlyOpened = false);\r\n }\r\n\r\n private handleInternalServerError(isCritical: boolean = false) {\r\n if (this.isErrorPopupCurrentlyOpened)\r\n return;\r\n\r\n this.isErrorPopupCurrentlyOpened = true;\r\n\r\n const dialogRef = this.dialog.open(ErrorMessageDialogComponent, {\r\n data: {\r\n title: dialogsTitles.serverError, description: isCritical ?\r\n dialogsDescriptions.criticalServerError : dialogsDescriptions.serverError\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n this.isErrorPopupCurrentlyOpened = false;\r\n });\r\n }\r\n\r\n private handleDependentRequestError(commonDependentsErrorToast: CommonDependentsToast, dependentRequestId: string) {\r\n this.dependentRequestId$.next(dependentRequestId);\r\n this.commonDependentsErrorToast$.next(commonDependentsErrorToast);\r\n }\r\n\r\n private handleReportUploadProgressRequestError(reportUploadProgressRequestId: string) {\r\n this.reportUploadProgressRequest$.next(reportUploadProgressRequestId);\r\n }\r\n\r\n private isErrorToastNeeded(errorData: any, errorCode: number): boolean {\r\n if (errorData === 'CRITICAL' || errorCode === 500 || errorData.headers?.skipToast)\r\n return false;\r\n\r\n return !!this.utilsService.getDisplayedNameForMongoMethodByUserActivity(errorData.url);\r\n }\r\n\r\n private handleErrorToast(errorData: any) {\r\n if (errorData.headers?.dependentId) {\r\n this.commonDependentsErrorToast$.next({\r\n commonDependentsId: errorData.headers.commonDependentsId,\r\n numberOfObservableArrowFunctions: Number(errorData.headers.numberOfObservableArrowFunctions),\r\n errorStatus: errorData.status\r\n })\r\n return;\r\n }\r\n this.errorToast$.next({\r\n url: errorData.url,\r\n status: errorData.status\r\n })\r\n }\r\n\r\n setChainedFailedObservableFunctions(dependentId: string, error: HttpErrorResponse, failedComplexObservableArrowFunctions: ComplexObservableArrowFunctions, initialValue?: any) {\r\n if (Array.isArray(failedComplexObservableArrowFunctions[0]) && this.failedDependentsRequestsContext[dependentId])\r\n this.failedDependentsRequestsContext[dependentId].failedComplexObservableArrowFunctions[0].push(failedComplexObservableArrowFunctions[0]);\r\n else\r\n this.failedDependentsRequestsContext[dependentId] = initialValue ? { error, failedComplexObservableArrowFunctions, initialValue } : { error, failedComplexObservableArrowFunctions };\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { EMPTY, Observable, forkJoin } from 'rxjs';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { ErrorsHandlerService } from './errors-handler.service';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { ComplexObservableArrowFunctions, ObservableArrowFunction, DependentMetadata } from 'herum-shared/herum-types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DependentsService {\r\n\r\n dependentMetadata: DependentMetadata = {\r\n dependentId: 0,\r\n commonDependentsId: 0,\r\n numberOfObservableArrowFunctions: 0\r\n };\r\n\r\n constructor(private errorsHandlerService: ErrorsHandlerService) { }\r\n\r\n chainObservableFunctions(complexFunctions: ComplexObservableArrowFunctions, initialValue?: any) {\r\n this.dependentMetadata.numberOfObservableArrowFunctions = 0;\r\n ++this.dependentMetadata.commonDependentsId;\r\n\r\n this.calculateNumberOfObservableFunctions(complexFunctions);\r\n\r\n if (!complexFunctions.length)\r\n return EMPTY;\r\n\r\n const initialFunction: ObservableArrowFunction[] | ObservableArrowFunction = complexFunctions[0];\r\n let initialObservable: Observable<any> = this.setInitialObservable(complexFunctions, initialFunction, initialValue);\r\n return this.chainObservables(complexFunctions, initialObservable);\r\n }\r\n\r\n private setInitialObservable(complexFunctions: ComplexObservableArrowFunctions, initialFunction: ObservableArrowFunction[] | ObservableArrowFunction, initialValue?: any) {\r\n return (Array.isArray(initialFunction)) ?\r\n this.handleInitialComplexFunction(complexFunctions, initialFunction, initialValue) :\r\n this.handleInitialFunction(complexFunctions, initialFunction, initialValue);\r\n }\r\n\r\n private handleInitialComplexFunction(complexFunctions: ComplexObservableArrowFunctions, initialFunctions: ObservableArrowFunction[], initialValue?: any): Observable<any[]> {\r\n let initialObservable: Observable<any>[] =\r\n initialFunctions.map((innerFunction: ObservableArrowFunction, initialFunctionIndex: number) => {\r\n const currentId: number = (++this.dependentMetadata.dependentId)\r\n const innerObservable: Observable<any> = initialValue ?\r\n innerFunction(initialValue, { ...this.dependentMetadata, dependentId: currentId })\r\n : innerFunction({ ...this.dependentMetadata, dependentId: currentId });\r\n\r\n return innerObservable.pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n const hasNextDependentFunctionsExist: boolean = complexFunctions.slice(initialFunctionIndex + 1).length > 0;\r\n const slicedFunctions = hasNextDependentFunctionsExist ? [[initialFunctions[initialFunctionIndex]], ...complexFunctions.slice(initialFunctionIndex + 1)] : [[initialFunctions[initialFunctionIndex]]];\r\n this.errorsHandlerService.setChainedFailedObservableFunctions(currentId.toString(), error, slicedFunctions, initialValue);\r\n return EMPTY;\r\n })\r\n )\r\n });\r\n return forkJoin(initialObservable);\r\n }\r\n\r\n private handleInitialFunction(complexFunctions: ComplexObservableArrowFunctions, initialFunction: ObservableArrowFunction, initialValue?: any): Observable<any> {\r\n return (initialValue && !Array.isArray(initialFunction)) ?\r\n\r\n initialFunction(initialValue, { ...this.dependentMetadata, dependentId: ++this.dependentMetadata.dependentId }\r\n )\r\n : initialFunction({ ...this.dependentMetadata, dependentId: ++this.dependentMetadata.dependentId }\r\n )\r\n .pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n initialValue ?\r\n this.errorsHandlerService.setChainedFailedObservableFunctions(this.dependentMetadata.dependentId.toString(), error, complexFunctions, initialValue) :\r\n this.errorsHandlerService.setChainedFailedObservableFunctions(this.dependentMetadata.dependentId.toString(), error, complexFunctions);\r\n return EMPTY;\r\n })\r\n )\r\n }\r\n\r\n private chainObservables(complexFunctions: ComplexObservableArrowFunctions, initialObservable: Observable<any>) {\r\n return complexFunctions.slice(1).reduce((acc, currentFunction, functionsIndex) => {\r\n return acc.pipe(\r\n switchMap((result: any) => {\r\n return (Array.isArray(currentFunction)) ?\r\n this.handleCurrentChainedComplexObservable(complexFunctions, currentFunction, result, functionsIndex)\r\n :\r\n this.handleCurrentChainedObservable(complexFunctions, currentFunction, result, functionsIndex);\r\n })\r\n );\r\n }, initialObservable);\r\n }\r\n\r\n private handleCurrentChainedComplexObservable(complexFunctions: ComplexObservableArrowFunctions, currentFunctions: ObservableArrowFunction[], result: any, functionsIndex: number) {\r\n const observables = currentFunctions.map((innerFunction: ObservableArrowFunction, innerFunctionIndex: number) => {\r\n const currentId: number = (++this.dependentMetadata.dependentId);\r\n return innerFunction(result, { ...this.dependentMetadata, dependentId: currentId }).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n const hasNextDependentFunctionsExist: boolean = complexFunctions.slice(functionsIndex + 2).length > 0;\r\n const slicedFunctions = hasNextDependentFunctionsExist ? [[currentFunctions[innerFunctionIndex]], ...complexFunctions.slice(functionsIndex + 2)] : [[currentFunctions[innerFunctionIndex]]];\r\n this.errorsHandlerService.setChainedFailedObservableFunctions(currentId.toString(), error, slicedFunctions, result);\r\n return EMPTY;\r\n })\r\n );\r\n });\r\n return forkJoin(observables);\r\n }\r\n\r\n handleCurrentChainedObservable(complexFunctions: ComplexObservableArrowFunctions, currentFunction: ObservableArrowFunction, result: any, functionsIndex: number) {\r\n return currentFunction(result, { ...this.dependentMetadata, dependentId: ++this.dependentMetadata.dependentId }).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n this.errorsHandlerService.setChainedFailedObservableFunctions(this.dependentMetadata.dependentId.toString(), error, complexFunctions.slice(functionsIndex + 1), result);\r\n return EMPTY;\r\n })\r\n );\r\n }\r\n\r\n private calculateNumberOfObservableFunctions(complexObservableArrowFunctions: ComplexObservableArrowFunctions) {\r\n complexObservableArrowFunctions.forEach(complexObservableArrowFunction => {\r\n if (!Array.isArray(complexObservableArrowFunction))\r\n ++this.dependentMetadata.numberOfObservableArrowFunctions;\r\n else\r\n this.calculateNumberOfObservableFunctions(complexObservableArrowFunction as ObservableArrowFunction[]);\r\n })\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { toastStates, toastStatuses, toastContext, getToastsTemplates } from 'herum-shared/constants';\r\nimport { Toast, ToastStatus, ToastHttpResponseDependencies, ToastTemplate } from 'herum-shared/herum-types';\r\nimport { StorageService, UtilsService } from 'herum-shared/static-services';\r\nimport { ErrorsHandlerService } from './errors-handler.service';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastsService {\r\n\r\n toast$: BehaviorSubject<Toast> = new BehaviorSubject<Toast>(undefined);\r\n toastId: number = 0;\r\n toastsTemplates: { [key: string]: ToastTemplate };\r\n\r\n constructor(\r\n private errorsHandlerService: ErrorsHandlerService,\r\n private utilsService: UtilsService,\r\n @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig\r\n ) {\r\n this.errorsHandlerService.errorToast$?.subscribe(toastHttpResponseDependencies => this.createToastBasedOnHttpResponse(toastHttpResponseDependencies));\r\n\r\n this.toastsTemplates = getToastsTemplates(this.environmentConfig?.mongoUpdates, this.environmentConfig?.authenticationPaths);\r\n }\r\n\r\n createToastBasedOnHttpResponse(toastHttpResponseDependencies: ToastHttpResponseDependencies) {\r\n if (!toastHttpResponseDependencies)\r\n return;\r\n\r\n let urlRequest: string = toastHttpResponseDependencies?.url;\r\n let mongoMethodDisplayedName: string | undefined = this.utilsService.getDisplayedNameForMongoMethodByUserActivity(urlRequest);\r\n\r\n if (!mongoMethodDisplayedName)\r\n return;\r\n\r\n let status: ToastStatus = this.setToastStatus(toastHttpResponseDependencies.status);\r\n let content: string = status === toastStatuses.success ?\r\n toastContext[status.toString()](mongoMethodDisplayedName) :\r\n this.findErrorMessageByStatusCode(toastHttpResponseDependencies.status.toString(), mongoMethodDisplayedName);\r\n\r\n this.showToast(toastContext.title(mongoMethodDisplayedName), content, status);\r\n }\r\n\r\n findErrorMessageByStatusCode(statusCode: string, mongoMethodDisplayedName: string): string {\r\n if (!toastContext.statusCodes[statusCode])\r\n statusCode = 'genericError'\r\n\r\n return toastContext.statusCodes[statusCode](mongoMethodDisplayedName);\r\n }\r\n\r\n showErrorToast(toastContextKey: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][toastStatuses.error];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, toastStatuses.error);\r\n }\r\n\r\n showSuccessToast(toastContextKey: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][toastStatuses.success];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, toastStatuses.success);\r\n }\r\n\r\n showInformationToast(toastContextKey: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][toastStatuses.information];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, toastStatuses.information);\r\n }\r\n\r\n showOnDemandToast(toastContextKey: string, status: ToastStatus, toastStorageKey?: string) {\r\n if (!this.toastsTemplates[toastContextKey])\r\n return;\r\n\r\n if (this.hasToastAlreadyShownAndShouldShowOnce(toastStorageKey))\r\n return;\r\n\r\n let content: string = this.toastsTemplates[toastContextKey][status];\r\n let title: string = this.toastsTemplates[toastContextKey].title;\r\n\r\n this.showToast(title, content, status);\r\n }\r\n\r\n private hasToastAlreadyShownAndShouldShowOnce(toastStorageKey: string): boolean {\r\n if (!toastStorageKey)\r\n return false;\r\n\r\n if (StorageService.getItem(toastStorageKey))\r\n return true;\r\n\r\n StorageService.setItem(toastStorageKey, toastStorageKey);\r\n return false;\r\n }\r\n\r\n showToast(title: string, content: string, status: ToastStatus) {\r\n this.toast$.next({ title, content, status, id: ++this.toastId, state: toastStates.preEnter });\r\n }\r\n\r\n private setToastStatus(statusCode: number): ToastStatus {\r\n if (statusCode >= 200 && statusCode < 299)\r\n return toastStatuses.success;\r\n if (statusCode >= 400 && statusCode < 599)\r\n return toastStatuses.error;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { ErrorsHandlerService } from './errors-handler.service';\r\nimport { DependentsService } from './dependents.service';\r\nimport { HttpClient, HttpRequest } from '@angular/common/http';\r\nimport {\r\n ToastStatus, CommonDependentsToast\r\n} from 'herum-shared/herum-types';\r\nimport { uploadStatuses, uploadsManagerKeys, toastStatuses } from 'herum-shared/constants';\r\nimport { ToastsService } from './toasts.service';\r\nimport { ComplexObservableArrowFunctions, FailedDependentsRequestMetadata, UploadProgressMetadata, UploadProgressStatus } from 'herum-shared/herum-types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UploadsManagerService {\r\n\r\n uploadsManagerTitle$: BehaviorSubject<string> = new BehaviorSubject<string>(uploadsManagerKeys.defaultUploadsManagerTitle);\r\n uploadsProgressMetadata$: BehaviorSubject<UploadProgressMetadata[]> = new BehaviorSubject<UploadProgressMetadata[]>([]);\r\n\r\n constructor(private errorsHandlerService: ErrorsHandlerService,\r\n private dependentsService: DependentsService,\r\n private http: HttpClient,\r\n private toastsService: ToastsService\r\n ) { this.setSubscriptions(); }\r\n\r\n private setSubscriptions() {\r\n this.errorsHandlerService.dependentRequestId$?.subscribe(dependentRequestId =>\r\n this.updateUploadProgressStatus(dependentRequestId, uploadStatuses.error)\r\n );\r\n\r\n this.errorsHandlerService.reportUploadProgressRequest$.subscribe(reportUploadProgressRequestId =>\r\n this.updateUploadProgressStatus(reportUploadProgressRequestId, uploadStatuses.error));\r\n\r\n this.errorsHandlerService.commonDependentsErrorToast$?.subscribe(commonDependentsErrorToast =>\r\n this.createNewToastBasedOnHttpRequest(commonDependentsErrorToast));\r\n }\r\n\r\n private updateUploadProgressStatus(uploadProgressId: string, status: UploadProgressStatus) {\r\n let uploadsProgressMetadata: UploadProgressMetadata[] = this.uploadsProgressMetadata$.getValue();\r\n uploadsProgressMetadata.find(uploadProgressMetadata => uploadProgressMetadata.id === uploadProgressId).status = status;\r\n this.uploadsProgressMetadata$.next(uploadsProgressMetadata);\r\n }\r\n\r\n retryFailedUploads(): Observable<any>[] {\r\n const uploadsProgressMetadata = this.uploadsProgressMetadata$.getValue();\r\n const failedUploadsProgressIds: string[] = uploadsProgressMetadata\r\n .filter(uploadProgressMetadata => uploadProgressMetadata.status === uploadStatuses.error)\r\n .map(uploadProgressMetadata => uploadProgressMetadata.id);\r\n\r\n return failedUploadsProgressIds.map(failedUploadProgressId => this.retryFailedUpload(failedUploadProgressId));\r\n }\r\n\r\n retryFailedUpload(uploadProgressId: string): Observable<any> {\r\n this.uploadsProgressMetadata$.next(this.uploadsProgressMetadata$.getValue().filter(uploadProgressMetadata => uploadProgressMetadata.id !== uploadProgressId));\r\n\r\n return this.errorsHandlerService.failedDependentsRequestsContext[uploadProgressId] ?\r\n this.handleFailedDependentRequest(uploadProgressId) :\r\n this.handleFailedReportUploadRequest(uploadProgressId);\r\n }\r\n\r\n private handleFailedDependentRequest(uploadProgressId: string) {\r\n const failedDependentRequestContext: FailedDependentsRequestMetadata = this.errorsHandlerService.failedDependentsRequestsContext[uploadProgressId];\r\n const initialValue: any = failedDependentRequestContext.initialValue;\r\n const failedObservableFunctions: ComplexObservableArrowFunctions = failedDependentRequestContext.failedComplexObservableArrowFunctions;\r\n\r\n return initialValue ? this.dependentsService.chainObservableFunctions(failedObservableFunctions, initialValue) :\r\n this.dependentsService.chainObservableFunctions(failedObservableFunctions);\r\n }\r\n\r\n private handleFailedReportUploadRequest(uploadProgressId: string): Observable<string> {\r\n const uploadProgressRequestIndex: number = this.errorsHandlerService.failedReportUploadProgressRequests.findIndex(request => request.headers?.get(uploadsManagerKeys.reportUploadProgressIdHeader) === uploadProgressId);\r\n\r\n if (uploadProgressRequestIndex !== -1) {\r\n const failedUploadProgressRequestRequest: HttpRequest<any> = this.errorsHandlerService.failedReportUploadProgressRequests[uploadProgressRequestIndex];\r\n this.errorsHandlerService.failedReportUploadProgressRequests.splice(uploadProgressRequestIndex, 1);\r\n\r\n return this.http.request(failedUploadProgressRequestRequest.method, failedUploadProgressRequestRequest.url,\r\n {\r\n body: failedUploadProgressRequestRequest.body,\r\n responseType: 'text',\r\n reportProgress: true\r\n }\r\n );\r\n }\r\n }\r\n\r\n addOrUpdateUploadProgressMetadata(uploadProgressMetadata: UploadProgressMetadata) {\r\n let uploadsProgressMetadata = this.uploadsProgressMetadata$.value;\r\n\r\n if (uploadsProgressMetadata.some(existedUploadProgressMetadata => existedUploadProgressMetadata.id == uploadProgressMetadata.id))\r\n uploadsProgressMetadata = uploadsProgressMetadata.filter(exitedUploadProgressMetadata => exitedUploadProgressMetadata.id != uploadProgressMetadata.id);\r\n\r\n uploadsProgressMetadata.push(uploadProgressMetadata);\r\n uploadsProgressMetadata.sort((a, b) => b.requestTime - a.requestTime);\r\n\r\n this.uploadsProgressMetadata$.next(uploadsProgressMetadata);\r\n }\r\n\r\n getUploadProgressById(uploadProgressId: string): UploadProgressMetadata {\r\n return this.uploadsProgressMetadata$.getValue().find(uploadsProgressMetadata => uploadsProgressMetadata.id === uploadProgressId);\r\n }\r\n\r\n createNewToastBasedOnHttpRequest(commonDependentsToast: CommonDependentsToast) {\r\n const { commonDependentsId, numberOfObservableArrowFunctions, errorStatus } = commonDependentsToast;\r\n\r\n if (!commonDependentsId)\r\n return;\r\n\r\n const commonUploadsProgress: UploadProgressMetadata[] = this.uploadsProgressMetadata$.getValue().filter(uploadProgress => uploadProgress.commonDependentsId === commonDependentsId);\r\n let areCommonUploadsProgressFinished: boolean = false;\r\n const areAllCommonUploadsProgressWereSent: boolean = commonUploadsProgress.length === numberOfObservableArrowFunctions;\r\n const areAllCommonUploadsProgressFinishedSuccesfully: boolean = commonUploadsProgress.every(commonUploadProgress => commonUploadProgress.status === uploadStatuses.success);\r\n\r\n if (commonUploadsProgress.every(commonUploadProgress => commonUploadProgress.status !== uploadStatuses.loading) && areAllCommonUploadsProgressWereSent)\r\n areCommonUploadsProgressFinished = true;\r\n\r\n if (!areCommonUploadsProgressFinished && !errorStatus)\r\n return;\r\n\r\n let title: string = this.uploadsManagerTitle$.getValue();\r\n let content: string = areAllCommonUploadsProgressFinishedSuccesfully ? `פעולת ${title} הצליחה.` : this.toastsService.findErrorMessageByStatusCode(errorStatus?.toString(), `${title}`);\r\n let status: ToastStatus = areAllCommonUploadsProgressFinishedSuccesfully ? toastStatuses.success : toastStatuses.error;\r\n\r\n this.toastsService.showToast(title, content, status);\r\n }\r\n}","import { Component, ElementRef, QueryList, ViewChildren, ChangeDetectorRef } from '@angular/core';\r\nimport { ToastsService } from 'herum-shared/mongo/services';\r\nimport { toastStates, toastStatuses, svgsStrings } from 'herum-shared/constants';\r\nimport { Toast, ToastStatus } from 'herum-shared/herum-types';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-toasts',\r\n templateUrl: './herum-toasts.component.html',\r\n styleUrls: ['./herum-toasts.component.scss']\r\n})\r\nexport class HerumToastsComponent {\r\n\r\n @ViewChildren('toast') toastElements: QueryList<ElementRef>;\r\n\r\n toasts: Toast[] = [];\r\n minimumOpacity: number = 0.7;\r\n transformDuration: number = 400;\r\n leavingDuration: number = 7000;\r\n gap: number = 16;\r\n\r\n constructor(private toastsService: ToastsService, private changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n this.toastsService.toast$.subscribe(newToast => this.handleNewToast(newToast));\r\n }\r\n\r\n handleNewToast(toast: Toast) {\r\n if (!toast)\r\n return;\r\n\r\n this.toasts.unshift(toast);\r\n this.changeDetectorRef.detectChanges();\r\n\r\n setTimeout(() => toast.state = toastStates.enter, 100);\r\n setTimeout(() => this._onHideToast(toast, false), this.leavingDuration);\r\n\r\n this.toastElements?.forEach((toastElement: ElementRef, index: number) => {\r\n const toastNativeElement = toastElement.nativeElement;\r\n if (toastNativeElement) {\r\n let gap = this.gap * index;\r\n\r\n if (index)\r\n toastNativeElement.style.transform = `translateY(calc(${-this.reduceToastHeights(index)}px - ${gap}px)) translateX(0)`;\r\n\r\n this.setToastLinearOpacity(index - 1, toastElement);\r\n }\r\n })\r\n }\r\n\r\n private reduceToastHeights(currentElementToastIndex: number): number {\r\n return this.toastElements?.toArray().reduce((totalHeight, toast, index) => {\r\n if (currentElementToastIndex > index) {\r\n return totalHeight + toast.nativeElement.offsetHeight;\r\n }\r\n return totalHeight;\r\n }, 0);\r\n }\r\n\r\n _onHideToast(currentToast: Toast, lowToasts: boolean) {\r\n const toastIndex: number = this.toasts.indexOf(currentToast);\r\n\r\n if (toastIndex === -1)\r\n return;\r\n\r\n const currentElementToast: ElementRef<any> = this.toastElements.toArray()[toastIndex];\r\n const layoutPadding: string = '24px';\r\n\r\n if (currentElementToast)\r\n currentElementToast.nativeElement.style.transform = `${currentElementToast.nativeElement.style.transform} translateX(calc(100% + ${layoutPadding}))`;\r\n\r\n if (lowToasts && (toastIndex !== this.toasts.length - 1)) {\r\n let filteredItems: ElementRef<any>[] = this.toastElements.toArray().filter((item, index) => index > toastIndex);\r\n\r\n if (!filteredItems.length)\r\n return;\r\n\r\n filteredItems.forEach((toastElement: ElementRef) => {\r\n let transformValue: string = toastElement.nativeElement.style.transform;\r\n let transformValueMatch: RegExpMatchArray = transformValue.match(/calc\\((.*)\\)\\)/);\r\n\r\n if (transformValueMatch) {\r\n let translateYValue: string = transformValueMatch[1];\r\n const updatedTranslateY: string = `translateY(calc(${translateYValue} + 100% + ${this.gap}px))`;\r\n\r\n setTimeout(() => {\r\n {\r\n toastElement.nativeElement.style.transform = `${updatedTranslateY}`;\r\n this.removeToast(currentToast);\r\n }\r\n }, 300);\r\n }\r\n })\r\n }\r\n else\r\n setTimeout(() => { this.removeToast(currentToast) }, this.transformDuration);\r\n }\r\n\r\n private removeToast(currentToast: Toast) {\r\n this.toasts = this.toasts.filter(toast => toast.id !== currentToast.id);\r\n }\r\n\r\n private setToastLinearOpacity(toastElementIndex: number, toastElement: ElementRef) {\r\n let toastStyle = toastElement.nativeElement.style;\r\n\r\n if (toastElementIndex === this.toastElements.toArray().length - 1)\r\n toastStyle.opacity = this.minimumOpacity.toString();\r\n else if (!toastElementIndex)\r\n toastStyle.opacity = (1 - (this.minimumOpacity / (this.toastElements.length))).toString();\r\n else\r\n toastStyle.opacity = (1 - ((toastElementIndex + 1) * this.minimumOpacity / (this.toastElements.length))).toString();\r\n }\r\n\r\n _toastStatusIcon(toastStatus: ToastStatus): string {\r\n return svgsStrings[toastStatus];\r\n }\r\n\r\n get successStatus() {\r\n return toastStatuses.success;\r\n }\r\n}","<ng-container *ngIf=\"toasts?.length\">\r\n <div #toast class=\"herum-toast d-flex\" [ngClass]=\"[toast?.state ?? '',toast?.status ?? '']\"\r\n *ngFor=\"let toast of toasts; trackBy: _trackByFn\">\r\n <span [ngClass]=\"{'icons-color':toast?.status===successStatus}\"\r\n [innerHTML]=\"_toastStatusIcon(toast?.status) | safeHtml\">\r\n </span>\r\n\r\n <div class=\"d-flex flex-column\">\r\n <div class=\"section-title\"> {{toast?.title}}</div>\r\n <div class='toast-content'> {{toast?.content}}</div>\r\n </div>\r\n\r\n <img class=\"close-button\" src=\"assets/shared/icons/secondary-x.svg\" alt=\"close-icon\"\r\n (click)=\"_onHideToast(toast,true)\">\r\n </div>\r\n</ng-container>","import { uploadStatuses, uploadsManagerKeys, svgsStrings } from 'herum-shared/constants';\r\nimport { Component, HostListener } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { shareReplay, takeUntil } from 'rxjs/operators';\r\nimport { UploadsManagerService } from 'herum-shared/mongo/services';\r\nimport { isTruncatedTitleElement } from 'herum-shared/utils';\r\n\r\nimport { UploadProgressMetadata, UploadProgressStatus, UploadProgressType } from 'herum-shared/herum-types';\r\n\r\nconst failedProgressBarColor: string = '#FF0A4D';\r\nconst partialSuccessProgressBarColor: string = '#f7ad00';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'herum-uploads-manager',\r\n templateUrl: './herum-uploads-manager.component.html',\r\n styleUrls: ['./herum-uploads-manager.component.scss']\r\n})\r\nexport class HerumUploadsManagerComponent {\r\n\r\n destroySubject$ = new Subject<null>();\r\n\r\n isContainerOpen: boolean = true;\r\n loadingStatus: UploadProgressStatus = uploadStatuses.loading;\r\n errorStatus: UploadProgressStatus = uploadStatuses.error;\r\n successStatus: UploadProgressStatus = uploadStatuses.success;\r\n\r\n uploadsProgressMetadata: UploadProgressMetadata[] = [];\r\n averageProgressSum: number = 0;\r\n hasUploadProgressFinished: boolean = false;\r\n numberOfFailedLoaders: number = 0;\r\n\r\n successProgressBarColor: string = '';\r\n progressBarColor: string = '';\r\n\r\n @HostListener('window:beforeunload', ['$event'])\r\n showConfirmationNativeMessage(event: any) {\r\n if (!this.hasUploadProgressFinished)\r\n event.returnValue = true;\r\n }\r\n\r\n constructor(private uploadsManagerService: UploadsManagerService) { }\r\n\r\n ngOnInit() {\r\n this.setSuccessProgressBarColor();\r\n this.uploadsProgressMetadataSubscription();\r\n }\r\n\r\n private setSuccessProgressBarColor() {\r\n this.successProgressBarColor = window.getComputedStyle(document.body).getPropertyValue('--icons-color');\r\n }\r\n\r\n private uploadsProgressMetadataSubscription() {\r\n this.uploadsManagerService.uploadsProgressMetadata$\r\n .pipe(takeUntil(this.destroySubject$))\r\n .subscribe(uploadsProgressMetadata => {\r\n this.uploadsProgressMetadata = uploadsProgressMetadata;\r\n this.averageProgressSum = this.calculateAverageProgressSum(uploadsProgressMetadata);\r\n this.hasUploadProgressFinished = this.calculateHasUploadProgressFinished(uploadsProgressMetadata);\r\n this.numberOfFailedLoaders = this.calculateNumberOfFailedLoaders(uploadsProgressMetadata);\r\n this.progressBarColor = this.calculateProgressBarColor(uploadsProgressMetadata);\r\n })\r\n }\r\n\r\n _onRetryFailedUploads() {\r\n this.uploadsManagerService.retryFailedUploads().forEach(httpRequest => httpRequest.subscribe());\r\n }\r\n\r\n _onRetryFailedUpload(uploadProgressId: string) {\r\n this.uploadsManagerService.retryFailedUpload(uploadProgressId).subscribe();\r\n }\r\n\r\n _onClose() {\r\n this.uploadsManagerService.uploadsProgressMetadata$.next([]);\r\n this.uploadsManagerService.uploadsManagerTitle$.next(uploadsManagerKeys.defaultUploadsManagerTitle);\r\n }\r\n\r\n _onToggleUploadsContainer() {\r\n this.isContainerOpen = !this.isContainerOpen;\r\n }\r\n\r\n _isTruncatedTitleElement(element: HTMLElement): boolean {\r\n return isTruncatedTitleElement(element);\r\n }\r\n\r\n _getUploadProgressDescription(uploadProgressMetadata: UploadProgressMetadata) {\r\n if (!uploadProgressMetadata.isUploadProgressInitiating && !(uploadProgressMetadata.status === uploadStatuses.error))\r\n return `${uploadProgressMetadata.currentSize} מתוך ${uploadProgressMetadata.totalSize} ${uploadProgressMetadata.units}`;\r\n\r\n if (uploadProgressMetadata.status === uploadStatuses.error)\r\n return 'התרחשה שגיאה בהעלאה';\r\n\r\n if (uploadProgressMetadata.isUploadProgressInitiating)\r\n return 'העלאה תחל בקרוב...';\r\n }\r\n\r\n _isUploadProgressStatusError(uploadProgressStatus: UploadProgressStatus) {\r\n return uploadProgressStatus === uploadStatuses.error;\r\n }\r\n\r\n _getFileIcon(uploadProgressType: UploadProgressType): string {\r\n return svgsStrings[uploadProgressType];\r\n }\r\n\r\n _getUploadStatusIcon(uploadProgressType: UploadProgressType): string {\r\n return svgsStrings[uploadProgressType];\r\n }\r\n\r\n _trackByFn(index: number, uploadProgressMetadata: UploadProgressMetadata) {\r\n return uploadProgressMetadata.id;\r\n }\r\n\r\n get containerTitle$(): Observable<string> {\r\n return this.uploadsManagerService.uploadsManagerTitle$.pipe(shareReplay(1));\r\n }\r\n\r\n calculateAverageProgressSum(uploadsProgressMetadata: UploadProgressMetadata[]): number {\r\n if (!uploadsProgressMetadata.length)\r\n return 0;\r\n\r\n const sum = uploadsProgressMetadata.reduce((sum, uploadProgressMetadata: UploadProgressMetadata) =>\r\n sum + (uploadProgressMetadata.currentSize / uploadProgressMetadata.totalSize) * 100, 0);\r\n return (sum / uploadsProgressMetadata.length);\r\n }\r\n\r\n calculateHasUploadProgressFinished(uploadsProgressMetadata: UploadProgressMetadata[]): boolean {\r\n return uploadsProgressMetadata.every(uploadProgressMetadata => uploadProgressMetadata.status !== uploadStatuses.loading)\r\n }\r\n\r\n calculateNumberOfFailedLoaders(uploadsProgressMetadata: UploadProgressMetadata[]): number {\r\n return uploadsProgressMetadata.filter(uploadProgressMetadata => uploadProgressMetadata.status === this.errorStatus).length;\r\n }\r\n\r\n calculateProgressBarColor(uploadsProgressMetadata: UploadProgressMetadata[]) {\r\n const numberOfFailedUploadsProgressMetadata: number = this.numberOfFailedLoaders;\r\n const numberOfUploadsProgressMetadata = uploadsProgressMetadata.length;\r\n\r\n return !numberOfFailedUploadsProgressMetadata ? this.successProgressBarColor :\r\n numberOfUploadsProgressMetadata === numberOfFailedUploadsProgressMetadata ? failedProgressBarColor :\r\n numberOfUploadsProgressMetadata > 0 ? partialSuccessProgressBarColor : this.successProgressBarColor;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroySubject$.next(null);\r\n this.destroySubject$.complete();\r\n }\r\n}","<div class=\"herum-uploads-layout shadow\" [ngClass]=\"{'open':isContainerOpen}\" *ngIf=\"uploadsProgressMetadata?.length\">\r\n <div class=\"herum-uploads-container-header\">\r\n <div class=\"herum-uploads-header\">\r\n <div class=\"herum-uploads-header-text\">\r\n <herum-ellipsis-loader *ngIf=\"!hasUploadProgressFinished\"></herum-ellipsis-loader>\r\n\r\n <p class=\"container-title\" #containerTitle\r\n [matTooltip]=\"_isTruncatedTitleElement(containerTitle)? (containerTitle$ | async) : '' \">\r\n {{containerTitle$ | async | ellipsis:containerTitle}}</p>\r\n </div>\r\n\r\n <div class=\"control-container\">\r\n <img class=\"control-button\"\r\n [ngClass]=\"{'open-chevron':isContainerOpen, 'closed-chevron':!isContainerOpen}\"\r\n src=\"assets/general/white-chevron.svg\" (click)=\"_onToggleUploadsContainer()\">\r\n\r\n <img class=\"control-button\" *ngIf=\"hasUploadProgressFinished\" src=\"assets/shared/icons/X.svg\"\r\n alt=\"close-icon\" (click)=\"_onClose()\">\r\n </div>\r\n </div>\r\n\r\n <herum-progress-bar [percentage]=\"averageProgressSum\" [percentagePosition]=\"'none'\" [borderRadius]=\"'none'\"\r\n [showBorder]=\"false\" [thickness]=\"'thin'\" [showPercentage]=\"false\" [color]=\"progressBarColor\">\r\n </herum-progress-bar>\r\n </div>\r\n\r\n <div class=\"herum-uploads-container\">\r\n <div *ngIf=\"numberOfFailedLoaders > 1\" class=\"upload-all upload-iteration cursor-pointer\"\r\n (click)=\"_onRetryFailedUploads()\">\r\n <div class=\"herum-upload-title w-100\">\r\n העלה מחדש קבצים שנכשלו\r\n </div>\r\n\r\n <div class=\"upload-file-image\">\r\n <img src=\"assets/files-icons/upload-file.svg\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"upload-iteration\"\r\n *ngFor=\"let uploadProgressMetadata of uploadsProgressMetadata; trackBy: _trackByFn\">\r\n <div class=\"herum-upload-container\">\r\n <span [ngClass]=\"_isUploadProgressStatusError(uploadProgressMetadata.status)? 'error' : 'icons-color'\"\r\n [innerHTML]=\"_getFileIcon(uploadProgressMetadata.type) | safeHtml\">\r\n </span>\r\n\r\n <div class=\"herum-upload-text-container\">\r\n <p #uploadTitle class=\"herum-upload-title\"\r\n [ngClass]=\"{'error-font-color':_isUploadProgressStatusError(uploadProgressMetadata.status)}\"\r\n [matTooltip]=\"_isTruncatedTitleElement(uploadTitle) ? uploadProgressMetadata.title : ''\">\r\n {{uploadProgressMetadata.title | ellipsis:uploadTitle}}\r\n </p>\r\n\r\n <p\r\n [ngClass]=\"[_isUploadProgressStatusError(uploadProgressMetadata.status)? 'error-font-color' :'disabled-text-color']\">\r\n {{_getUploadProgressDescription(uploadProgressMetadata)}}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"center\">\r\n <herum-circular-progress-bar [fill]=\"false\"\r\n [percentage]=\"(uploadProgressMetadata.currentSize/uploadProgressMetadata.totalSize)*100\"\r\n *ngIf=\"uploadProgressMetadata.status === loadingStatus\">\r\n </herum-circular-progress-bar>\r\n\r\n <div class=\"images-container\">\r\n <img class=\"cursor-pointer\" *ngIf=\"_isUploadProgressStatusError(uploadProgressMetadata.status)\"\r\n src=\"assets/files-icons/upload-file.svg\"\r\n (click)=\"_onRetryFailedUpload(uploadProgressMetadata.id)\">\r\n\r\n <span\r\n *ngIf=\"uploadProgressMetadata.status === errorStatus || uploadProgressMetadata.status === successStatus\"\r\n [ngClass]=\"{'icons-color':uploadProgressMetadata.status===successStatus}\"\r\n [innerHTML]=\"_getUploadStatusIcon(uploadProgressMetadata.status) | safeHtml\">\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HerumToastsComponent } from './herum-toasts/herum-toasts.component';\r\nimport { HerumUploadsManagerComponent } from './herum-uploads-manager/herum-uploads-manager.component';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { PipesModule } from 'herum-shared/pipes';\r\nimport { AtomsModule } from 'herum-shared/atoms';\r\n\r\n@NgModule({\r\n declarations: [\r\n HerumToastsComponent,\r\n HerumUploadsManagerComponent,\r\n ],\r\n exports: [\r\n HerumToastsComponent,\r\n HerumUploadsManagerComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n PipesModule,\r\n AtomsModule\r\n ],\r\n providers: [\r\n { provide: MAT_DATE_LOCALE, useValue: 'he-IL' },\r\n ]\r\n})\r\nexport class MongoMoleculesModule { }","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MongoMoleculesModule } from './molecules';\nimport {\n DependentsService,\n ErrorsHandlerService,\n ToastsService,\n UploadsManagerService\n} from './services';\n\n@NgModule({\n imports: [\n CommonModule,\n MongoMoleculesModule\n ],\n providers: [\n DependentsService,\n ErrorsHandlerService,\n ToastsService,\n UploadsManagerService\n ],\n exports: [\n MongoMoleculesModule\n ]\n})\nexport class MongoModule { }\n","import { AudioVisualConfiguration } from 'herum-shared/herum-types';\r\n\r\nexport module AudioConfigurationConstants {\r\n export const maxValue = 100;\r\n export const defaultSecondsSkip = 15;\r\n export const canvasBackgroundColor = '#FAFAFA'\r\n\r\n export const gapBetweenBars = 0;\r\n export const barWidth = 1;\r\n export const barRadius = 4;\r\n\r\n export const timeLabelPadding = 10;\r\n export const timeLabelColor = '#8d96a6'\r\n\r\n export const currentTimeIndicatorWidth = 2;\r\n export const currentTimeIndicatorColor = '#FF0A4D';\r\n\r\n export const leftNodePassiveColor = '#D7D6DA'\r\n export const leftNodeActiveColor = '#2D7ABE'\r\n export const rightNodePassiveColor = '#E4E4E4'\r\n export const rightNodeActiveColor = '#3B2DBE'\r\n}\r\n\r\n\r\nexport const CollegeAudioConfiguration: AudioVisualConfiguration = {\r\n maxValue: 100,\r\n defaultSecondsSkip: 15,\r\n canvasBackgroundColor: '#FAFAFA',\r\n gapBetweenBars: 0,\r\n barWidth: 1,\r\n barRadius: 4,\r\n timeLabelPadding: 10,\r\n timeLabelColor: '#8d96a6',\r\n currentTimeIndicatorWidth: 2,\r\n currentTimeIndicatorColor: '#FF0A4D',\r\n leftNodePassiveColor: '#D7D6DA',\r\n leftNodeActiveColor: '#2D7ABE',\r\n rightNodePassiveColor: '#E4E4E4',\r\n rightNodeActiveColor: '#3B2DBE'\r\n}\r\n\r\nexport const HadrachaAudioConfiguration:AudioVisualConfiguration = {\r\n maxValue: 100,\r\n defaultSecondsSkip: 15,\r\n canvasBackgroundColor: '#FAFAFA',\r\n gapBetweenBars: 2,\r\n barWidth: 4,\r\n barRadius: 4,\r\n timeLabelPadding: 10,\r\n timeLabelColor: '#8d96a6',\r\n currentTimeIndicatorWidth: 2,\r\n currentTimeIndicatorColor: '#FF0A4D',\r\n leftNodePassiveColor: '#D7D6DA',\r\n leftNodeActiveColor: '#A255FF',\r\n \r\n rightNodePassiveColor: '#E4E4E4',\r\n rightNodeActiveColor: '#A255FF'\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'timeFormat'\r\n})\r\nexport class TimeFormatPipe implements PipeTransform {\r\n\r\n transform(value: number): string {\r\n const minutes = Math.floor(value / 60);\r\n const seconds = Math.floor(value % 60);\r\n\r\n return `${this.padNumber(minutes)}:${this.padNumber(seconds)}`;\r\n }\r\n\r\n private padNumber(num: number): string {\r\n return num < 10 ? `0${num}` : `${num}`;\r\n }\r\n}","export function setDynamicElementStyle(readOnlyStylingObject: any, styleDictionary: { [key: string]: any }) {\r\n Object.keys(styleDictionary).forEach(key => {\r\n readOnlyStylingObject[key] = styleDictionary[key]\r\n });\r\n}\r\n\r\nexport const tooltipStyle = {\r\n position: 'absolute',\r\n top: '100%',\r\n left: '0',\r\n background: 'white',\r\n color: 'black',\r\n padding: '10px',\r\n borderRadius: '8px',\r\n boxShadow: '0px 2px 4px rgba(0,0,0,0.3)',\r\n display: 'none',\r\n zIndex: '1000',\r\n}\r\n\r\nexport const commentTextStyle = {\r\n width: '200px',\r\n margin: '0 0 5px 0'\r\n}\r\n\r\nexport const buttonsContainerStyle = {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n height: 'fit-content'\r\n}\r\n\r\nexport const editButtonStyle = {\r\n marginRight: '10px',\r\n cursor: 'pointer'\r\n}\r\n\r\nexport const deleteButtonStyle = {\r\n marginRight: '10px',\r\n padding: '10px',\r\n cursor: 'pointer'\r\n}","/*\n * Public API Surface of herum-shared\n */\n\nexport * from './herum-shared-module';\nexport * from './animations';\nexport * from './atoms';\nexport * from './dialogs';\nexport * from './directives';\nexport * from './errors';\nexport * from './fetched-message';\nexport * from './molecules';\nexport * from './mongo';\nexport * from './organisms';\nexport * from './pipes';\nexport * from './table';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.HerumSliderComponent","i4.HerumVideoSelectComponent","i5.SafePipe","i6.SafeHtmlPipe","i2.SafePipe","i2.HerumQuizHeaderItemComponent","i3.HerumListCentralizerComponent","i3.EllipsisPipe","i3.HerumRadioButtonComponent","i2.DisplayedSubmissionsCounterPipe","i3.HerumCheckboxComponent","i2.HerumButtonComponent","i3.QuizHeaderComponent","i4.QuizTwoAnswersQuestionComponent","i5.QuizOneAnswerQuestionComponent","i6.QuizSubmissionComponent","i7.QuizIntroComponent","i8.QuizGradeSheetComponent","i9.QuizMultiAnswerQuestionComponent","i10.QuizLoaderComponent","defaultPlaceholder","i3","i2.HerumInputFieldComponent","i3.HerumUserProgressComponent","i2.HerumCheckboxComponent","i3.HerumProgressBarComponent","i4.HerumSwitchComponent","i4","i5","i2.HerumHierarchyTreeNodeComponent","openClose","i2.SafeHtmlPipe","i1.HerumTimeSelectComponent","uuidv4","i3.HerumButtonComponent","i4.HerumDateTimeInputComponent","i5.HerumDateTimePickerComponent","i6.HerumTimeRangeSelectComponent","i7.SafeHtmlPipe","StorageService","SYSTEM_TRACK_TEXT_CHANGES_SERVICE","SYSTEM_AUDIO_VISUAL_CONFIGURATION","i5.HerumSpinnerComponent","i6.HerumVideoSelectComponent","i7.UserActionDirective","i8.AudioSliderComponent","i3.HerumSpinnerComponent","i6.HerumTextAreaComponent","i7.HerumToolTipDirective","i8.SafeHtmlPipe","i9.EllipsisPipe","i1.AnswerNotesToTextChangesPipe","i4.HerumTextAreaComponent","i5.TrackTextChangesComponent","AtomsModule","PipesModule","MoleculesModule","i2.SliceBreadcrumbsPipe","optionsInput","i4.HerumChipComponent","i5.HerumInputFieldComponent","i6.HerumOptionsListComponent","i7.HerumRecursiveHierarchyOptionsListComponent","i3.HerumInputFieldComponent","i3.UserProfileImageComponent","i2.DeleteRowComponent","i3.EditRowComponent","ErrorMessageDialogComponent","i1.ErrorsHandlerService","i2.DependentsService","i4.ToastsService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,qBAAqB,CAAA;AAMZ,IAAA,EAAA;IAJX,WAAW,GAAW,EAAE;AAEzB,IAAA,OAAO;AAEf,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAA,CAAA,EAAE,GAAF,EAAE;QACpB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS;IACpC;IAE4B,YAAY,GAAA;QACtC,IAAI,CAAC,WAAW,EAAE;IACpB;IAE4B,YAAY,GAAA;QACtC,IAAI,CAAC,WAAW,EAAE;IACpB;IAEQ,WAAW,GAAA;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAClE,QAAA,MAAM,eAAe,GAAG;AACtB,YAAA,GAAG,EAAE,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,EAAE;AACvE,YAAA,IAAI,EAAE,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC;SAClE;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;QAExD,IAAI,eAAe,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE;AACxC,YAAA,eAAe,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;QACtC;AAAO,aAAA,IAAI,eAAe,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE;YACpE,eAAe,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;QAC3D;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,eAAe,CAAC,GAAG,CAAA,EAAA,CAAI;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,eAAe,CAAC,IAAI,CAAA,EAAA,CAAI;QACrD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW;IAC3C;IAEQ,WAAW,GAAA;QACjB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;IACzC;wGA3CW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAGE;;sBASA,YAAY;uBAAC,YAAY;;sBAIzB,YAAY;uBAAC,YAAY;;;ACpB5B,MAAM,GAAG,GAAG,CAAC;AACb,MAAM,GAAG,GAAG,GAAG;AACf,MAAM,IAAI,GAAG,GAAG;AAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;AAE1C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,EAAC,CAAC,CAAC,EAAE,CAAQ,KAAK,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;;ACJ1G,MAAM,SAAS,GAAG,OAAO;MAQZ,oBAAoB,CAAA;IAEtB,IAAI,GAAW,SAAS;AACxB,IAAA,cAAc;AACd,IAAA,kBAAkB;AAClB,IAAA,UAAU;AACnB,IAAA,CAAC;AACS,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAW;AAC/C,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAU;AACpC,IAAA,MAAM;AAE3B,IAAA,QAAQ;IACR,UAAU,GAAY,KAAK;AAE3B,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE;AACjC,YAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,YAAY,KAAK,CAAC;AAClD,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;AAEjB,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,YAAY;QAC5F;IACF;AAEA,IAAA,6BAA6B,CAAC,KAAiB,EAAA;AAC7C,QAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;IACtC;AAEA,IAAA,0BAA0B,CAAC,KAAiB,EAAA;QAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AAEvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AAEjC,QAAA,MAAM,iBAAiB,GAAG,CAAC,KAAiB,KAAI,EAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1F,MAAM,eAAe,GAAG,MAAK;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1C,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAElC,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,iBAAiB,CAAC;AAC5D,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC;AAC1D,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC;AACrD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAC3D;IAEA,uBAAuB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ;IACpE;IAEA,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS;IAChC;AAEQ,IAAA,wBAAwB,CAAC,KAAiB,EAAA;QAChD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW;AAC5D,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;AACpF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;IAChF;wGA5DW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,+ZCVjC,8lBASM,EAAA,MAAA,EAAA,CAAA,uiBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,cAAc,EAAA,QAAA,EAAA,8lBAAA,EAAA,MAAA,EAAA,CAAA,uiBAAA,CAAA,EAAA;;sBAMvB;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA,SAAS;uBAAC,QAAQ;;;MEVR,yBAAyB,CAAA;AAE3B,IAAA,iBAAiB;IACjB,OAAO,GAAa,EAAE;AACrB,IAAA,qBAAqB,GAAG,IAAI,YAAY,EAAU;IAE5D,cAAc,GAAW,CAAC;IAC1B,wBAAwB,GAAW,CAAC,CAAC;IACrC,YAAY,GAAG,KAAK;AAEpB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,mBAAmB,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,YAAY;IACnE;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACtE;AAEA,IAAA,QAAQ,GAAyB,MAAK,EAAG,CAAC;AAE1C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,CAAE,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,WAAW,CAAC;AACrD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC7B;AAEA,IAAA,YAAY,CAAC,WAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,wBAAwB,GAAG,WAAW;AAC3C,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IACjD;AAEA,IAAA,gBAAgB,CAAC,WAAmB,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,wBAAwB,IAAI,WAAW;IACrD;IAEA,IAAI,GAAA;QACF,OAAO,IAAI,CAAC,YAAY;IAC1B;IAEA,WAAW,GAAA;AACT,QAAA,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACzE;wGA5DW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,yOCTtC,qmBAYM,EAAA,MAAA,EAAA,CAAA,q6BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDHO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,qmBAAA,EAAA,MAAA,EAAA,CAAA,q6BAAA,CAAA,EAAA;;sBAM7B;;sBACA;;sBACA;;;MENU,QAAQ,CAAA;AACC,IAAA,SAAA;AAApB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE/C,IAAA,SAAS,CAAC,GAAG,EAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC;IAC3D;wGALW,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAR,QAAQ,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA;;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCCY,YAAY,CAAA;AACH,IAAA,SAAA;AAApB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE/C,IAAA,SAAS,CAAC,KAAU,EAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC;IACtD;wGALW,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCYY,yBAAyB,CAAA;AAiDhB,IAAA,sBAAA;AAA+D,IAAA,eAAA;AA/C1E,IAAA,oBAAoB;AACpB,IAAA,OAAO;AACP,IAAA,UAAU;AACV,IAAA,oBAAoB;IACpB,MAAM,GAAwC,SAAS;AACvD,IAAA,aAAa;IACb,OAAO,GAAY,KAAK;AACxB,IAAA,EAAE;IACF,aAAa,GAAW,CAAC;AAExB,IAAA,aAAa,GAAG,IAAI,YAAY,EAAuB;AACvD,IAAA,eAAe,GAAG,IAAI,YAAY,EAAW;AAE7C,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAiB;AACvD,IAAA,4BAA4B,GAAG,IAAI,YAAY,EAAU;AAEzC,IAAA,WAAW;AAGrC,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,IAAI,IAAI,CAAC,OAAO;YAAE;QAElB,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7C,KAAK,CAAC,cAAc,EAAE;QAExB,IAAI,CAAC,IAAI,CAAC,6BAA6B;AACrC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD;IAEA,WAAW,GAAY,KAAK;IAC5B,WAAW,GAAW,OAAO;IAC7B,QAAQ,GAAW,OAAO;IAC1B,QAAQ,GAAW,CAAC;IACpB,UAAU,GAAY,KAAK;IAC3B,aAAa,GAAW,CAAC;IACzB,iBAAiB,GAAa,YAAY;IAC1C,YAAY,GAAW,CAAC;IACxB,sBAAsB,GAAY,KAAK;IACvC,6BAA6B,GAAY,KAAK;IAC9C,OAAO,GAAY,KAAK;AAExB,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ;AACtC,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AAErC,IAAA,mBAAmB;AACnB,IAAA,yBAAyB;IAEzB,WAAA,CAAoB,sBAAqD,EAAU,eAAgC,EAAA;QAA/F,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QAAyC,IAAA,CAAA,eAAe,GAAf,eAAe;IAAqB;AAEvH,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YACzB,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,aAAa;gBACrH,IAAI,CAAC,eAAe,EAAE;QAC1B;AAEA,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,aAAa;YAC5G,IAAI,CAAC,eAAe,EAAE;AAExB,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,WAAW;YAC9C,IAAI,CAAC,cAAc,EAAE;QAEvB,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW;AAC7D,YAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC;IAEvF;IAEQ,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,mBAAmB;AAC1B,YAAA,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAEzC,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC;QAEnE,IAAI,CAAC,WAAW,EAAE;IACpB;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC,MAAK,EAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IACjF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,gCAAgC,EAAE;AAEvC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,YAAY,CAAC,GAAG,CAAC;AAChB,aAAA,SAAS,CAAC,MAAK,EAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,EAAE;IACvB;IAEQ,cAAc,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,aAAa;YACrB;QAEF,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE;QAE/B,IAAI,IAAI,CAAC,WAAW;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;QAE7E,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;AAC7G,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa;QAElG,IAAI,CAAC,WAAW,EAAE;IACpB;IAEQ,gCAAgC,GAAA;AACtC,QAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE;AAC9C,QAAA,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,IAAG;AACtH,YAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAA,CAAC,CAAC;IACJ;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE;YACnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;YAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C;IACF;IAEQ,WAAW,CAAC,OAAe,EAAE,EAAA;QACnC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI;QAClD,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEQ,MAAM,CAAC,OAAe,EAAE,EAAA;QAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI;QAClD,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB;QAEF,IAAI,CAAC,SAAS,EAAE;IAClB;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;QACtH,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEQ,YAAY,GAAA;QAClB,OAAO,QAAQ,CAAC,iBAAiB,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa;IACtE;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;QACrC,OAAO,CAAA,EAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE;IACxF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;QAC9E,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;IAC9G;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK;AAC5E,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;IAC9H;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,iBAAiB,EAAE;IACpD;IAEQ,eAAe,GAAA;AACrB,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,IAAI,GAAG;IACrG;AAEQ,IAAA,WAAW,CAAC,QAAgB,EAAA;QAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAyB,CAAC;QAC/G,IAAI,CAAC,uBAAuB,EAAE;AAC9B,QAAA,OAAO,QAAQ;IACjB;IAEA,6BAA6B,GAAA;AAC3B,QAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB;AAC1D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AAEnD,QAAA,IAAI,YAAY,KAAM,QAAgB,CAAC,uBAAuB;YAC5D,YAAY,CAAC,uBAAuB,EAAE;;YAErC,QAAgB,CAAC,oBAAoB,EAAE;IAC5C;AAEA,IAAA,cAAc,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;IAC9B;AAEA,IAAA,0BAA0B,CAAC,WAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,WAAW;AACxD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;QAC5B,IAAI,CAAC,uBAAuB,EAAE;IAChC;AAEA,IAAA,qBAAqB,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,MAAM,IAAI,CAAC,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;QAC7C;aACK,IAAI,MAAM,GAAG,CAAC;YACjB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;aACtC;YACH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK;YAC5C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM;QAChD;IACF;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK;QAEnD,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAEhC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC;AACxE,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;AAEvK,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,WAAW;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;IAC/E;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;IACrB;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,SAAS,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM;AACjD,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;YACvD,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,EAAE,EAAE,IAAI,CAAC;AACV,SAAA,CAAC;IACJ;AAEQ,IAAA,WAAW,CAAC,OAAe,EAAA;QACjC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE;IACjD;AAEA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO;AACL,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE;AACnF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACxF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AAC5F,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;AAC3F,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC/E,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAClF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;AACrF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AAChF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;SACxF;IACH;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,CAAC;IAC3E;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,WAAW,CAAC,WAAW;IAChC;IAEA,WAAW,GAAA;AACT,QAAA,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACvC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;wGA1RW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,6BAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,ktBClBtC,46HAuEM,EAAA,MAAA,EAAA,CAAA,69DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDrDO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,46HAAA,EAAA,MAAA,EAAA,CAAA,69DAAA,CAAA,EAAA;;sBAM7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA;;sBACA;;sBAEA,SAAS;uBAAC,aAAa;;sBAEvB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ME9B/B,2BAA2B,CAAA;AAE7B,IAAA,UAAU;AACT,IAAA,iBAAiB,GAAyB,IAAI,YAAY,EAAE;AAEtE,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;IACR;IAEA,YAAY,GAAA;QACV,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9C;wGAZW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,6KCRxC,uHAEM,EAAA,MAAA,EAAA,CAAA,iKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDMO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,uHAAA,EAAA,MAAA,EAAA,CAAA,iKAAA,CAAA,EAAA;;sBAMhC;;sBACA;;;MEDU,uBAAuB,CAAA;AAEzB,IAAA,OAAO;AACP,IAAA,oBAAoB;AACpB,IAAA,UAAU;AACT,IAAA,aAAa,GAAG,IAAI,YAAY,EAAuB;AAE1C,IAAA,QAAQ;IAE/B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACvB;AAEQ,IAAA,WAAW,CAAC,QAAgB,EAAA;QAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAyB,CAAC;IACjH;IAEA,WAAW,CAAC,CAAM,EAAA,EAAI;AAEtB,IAAA,OAAO,KAAK;wGAnBD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,6VCVpC,iRAE2E,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FDQ9D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,kBAAkB,EAAA,QAAA,EAAA,iRAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;;sBAM3B;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,UAAU;;;MEPV,yBAAyB,CAAA;AAE3B,IAAA,OAAO;AACP,IAAA,oBAAoB;AACpB,IAAA,UAAU;AACT,IAAA,aAAa,GAAG,IAAI,YAAY,EAAuB;AAEjE,IAAA,WAAA,GAAA,EAAgB;IAEhB,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACvB;AAEQ,IAAA,WAAW,CAAC,QAAgB,EAAA;QAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAyB,CAAC;IACjH;wGAfW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,yPCVtC,gKAES,EAAA,MAAA,EAAA,CAAA,gFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FDQI,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,gKAAA,EAAA,MAAA,EAAA,CAAA,gFAAA,CAAA,EAAA;;sBAM7B;;sBACA;;sBACA;;sBACA;;;AEXH,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;MAM1B,mBAAmB,CAAA;AAIV,IAAA,EAAA;AAAwB,IAAA,IAAA;AAA6D,IAAA,iBAAA;AAFpF,IAAA,WAAW;AAEhC,IAAA,WAAA,CAAoB,EAAc,EAAU,IAAgB,EAA6C,iBAAoC,EAAA;QAAzH,IAAA,CAAA,EAAE,GAAF,EAAE;QAAsB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAyD,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAGjJ,IAAA,OAAO,CAAC,KAAK,EAAA;AACX,QAAA,IAAI,GAAG,GAAG;AACR,YAAA,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO;AACpD,YAAA,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU;AAC7C,YAAA,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS;YAC3C,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAc,MAAM;gBAChG,SAAS,EAAE,SAAS,CAAC,IAAI;gBACzB,KAAK,EAAE,SAAS,CAAC;AAClB,aAAA,CAAC,CAAC;AACH,YAAA,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO;AACxC,YAAA,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;YACrI,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,IAAI,CAAC;SACnB;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG,EAAG,CAAC,CAAC;IAC5F;AAxBW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,wEAIwC,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAJpF,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;0BAKgE,MAAM;2BAAC,yBAAyB;;sBAF9F,KAAK;uBAAC,YAAY;;sBAIlB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCNtB,gCAAgC,CAAA;AAElC,IAAA,OAAO;AACP,IAAA,UAAU;AACT,IAAA,aAAa,GAAG,IAAI,YAAY,EAAuB;AAEjE,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;IACvB;AAEQ,IAAA,WAAW,CAAC,QAAgB,EAAA;QAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAyB,CAAC;IACjH;wGAdW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,iMCV7C,6CACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDSa,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,+BAA+B,EAAA,QAAA,EAAA,6CAAA,EAAA;;sBAMxC;;sBACA;;sBACA;;;MEHU,oBAAoB,CAAA;AAKwB,IAAA,iBAAA;IAJ9C,UAAU,GAAG,WAAW;AACS,IAAA,SAAS;IACnD,UAAU,GAAY,IAAI;AAE1B,IAAA,WAAA,CAAuD,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;AACtE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,gBAAgB,IAAI,MAAM,CAAC,QAAQ;IAC3F;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,gBAAgB,IAAI,MAAM,CAAC,QAAQ;IAC3F;IAEA,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAClD,YAAA,IAAI;AACF,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,oBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;AACvC,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,IAAI,EAAE;AACP,iBAAA,CAAC;gBAEF,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAU,KAAI;AACjD,oBAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC;AACjD,gBAAA,CAAC,CAAC;YACJ;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC;YAC1D;QACF;aAAO;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC;QACrD;IACF;AAjCW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAKX,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AALlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,qOCXjC,0jNA0DM,EAAA,MAAA,EAAA,CAAA,65EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA;;4FD/CO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,cAAc,EAAA,QAAA,EAAA,0jNAAA,EAAA,MAAA,EAAA,CAAA,65EAAA,CAAA,EAAA;;0BASX,MAAM;2BAAC,yBAAyB;;sBAJ5C;;sBACA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AEX1C,MAAM,gBAAgB,GAAW,SAAS;AAE1C,MAAM,SAAS,GAAW,QAAQ;AAClC,MAAM,YAAY,GAAW,MAAM;AACnC,MAAM,WAAW,GAAW,KAAK;MAMpB,mBAAmB,CAAA;AA0BV,IAAA,OAAA;AAxBC,IAAA,cAAc;IAGnC,YAAY,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,cAAc;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC;AAEhG,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC;AACpG,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;;YAC3C;AACJ,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;IAChD;IAGA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC;AACpG,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;;AAE1C,YAAA,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;IAC/C;AAGA,IAAA,MAAM;AAEN,IAAA,WAAA,CAAoB,OAAmB,EAAA;QAAnB,IAAA,CAAA,OAAO,GAAP,OAAO;IAAgB;AAE3C,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC;AAClG,QAAA,OAAO,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;IACzC;AAEA,IAAA,oBAAoB,CAAC,KAAa,EAAA;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC;AACtG,QAAA,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACtE;wGApCW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAGE,KAAK;uBAAC,YAAY;;sBAElB,YAAY;uBAAC,YAAY;;sBAWzB,YAAY;uBAAC,YAAY;;sBAQzB;;;MC3BU,oBAAoB,CAAA;IAEtB,IAAI,GAAgD,SAAS;IAC7D,KAAK,GAAwB,SAAS;IACtC,IAAI,GAAyD,QAAQ;IACrE,cAAc,GAA8B,SAAS;IACrD,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAY,KAAK;AAC1B,IAAA,IAAI;wGARF,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,+NCRjC,iQAIS,EAAA,MAAA,EAAA,CAAA,uyEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDII,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,cAAc,EAAA,QAAA,EAAA,iQAAA,EAAA,MAAA,EAAA,CAAA,uyEAAA,CAAA,EAAA;;sBAMvB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEPU,4BAA4B,CAAA;AAE9B,IAAA,KAAK;AACL,IAAA,IAAI;AACJ,IAAA,SAAS;AACR,IAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AAE1C,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;AAEA,IAAA,YAAY,CAAC,SAAa,EAAA;QACxB,QAAQ,SAAS;YACf,KAAK,eAAe,CAAC,OAAO;AAC1B,gBAAA,OAAO,SAAS;YAClB,KAAK,eAAe,CAAC,OAAO;AAC1B,gBAAA,OAAO,SAAS;YAClB,KAAK,eAAe,CAAC,KAAK;AACxB,gBAAA,OAAO,OAAO;YAChB,KAAK,eAAe,CAAC,QAAQ;AAC3B,gBAAA,OAAO,UAAU;YACnB,KAAK,eAAe,CAAC,UAAU;AAC7B,gBAAA,OAAO,YAAY;YACrB,KAAK,eAAe,CAAC,OAAO;AAC1B,gBAAA,OAAO,SAAS;AAClB,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;wGA5BW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,8LCTzC,oKAGM,EAAA,MAAA,EAAA,CAAA,goCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDMO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wBAAwB,EAAA,QAAA,EAAA,oKAAA,EAAA,MAAA,EAAA,CAAA,goCAAA,CAAA,EAAA;;sBAMjC;;sBACA;;sBACA;;sBACA;;;AEZH,MAAM,qBAAqB,GAAW,kBAAkB;AACxD,MAAM,kBAAkB,GAAW,eAAe;MAQrC,6BAA6B,CAAA;AAE/B,IAAA,aAAa;AACb,IAAA,QAAQ;AACR,IAAA,gBAAgB;IAChB,gBAAgB,GAAY,KAAK;IACjC,cAAc,GAAY,KAAK;AAC/B,IAAA,YAAY;AACZ,IAAA,UAAU;AACV,IAAA,KAAK;AACL,IAAA,gBAAgB;AAEzB,IAAA,cAAc;AAEd,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,qBAAqB,CAAC,EAAE,YAAY,IAAI,OAAO,CAAC,qBAAqB,CAAC;AAChF,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;QAEnC,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE,YAAY;YAC5D,IAAI,CAAC,wBAAwB,EAAE;IACnC;AAEQ,IAAA,mBAAmB,CAAC,OAAsB,EAAA;QAChD,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACnF,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,YAAY;AAErE,QAAA,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,WAAW;YAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,YAAY;IACvE;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;IACtE;IAEA,2BAA2B,GAAA;QACzB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,uBAAuB,GAAA;QACrB,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;QACtB,IAAI,CAAC,IAAI,CAAC,mBAAmB;AAC3B,YAAA,OAAO,KAAK;AAEd,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG;AAEtD,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAAC,gBAAgB;AAC3J,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,IAAI,CAAC,gBAAgB;AAEnH,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,CAAC;IAChH;AAEA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;IACxD;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;IAC5E;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc;IACjD;wGAhEW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,sYCX1C,kwCAsBM,EAAA,MAAA,EAAA,CAAA,oJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDXO,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wBAAwB,EAAA,QAAA,EAAA,kwCAAA,EAAA,MAAA,EAAA,CAAA,oJAAA,CAAA,EAAA;;sBAMjC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEjBH,MAAM,UAAU,GAAW,OAAO;MAQrB,mBAAmB,CAAA;AAErB,IAAA,QAAQ;AACP,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AAC7C,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAW;AAC1B,IAAA,kBAAkB;IAEnD,kBAAkB,GAAW,EAAE;IAC/B,aAAa,GAAW,EAAE;AAE1B,IAAA,iBAAiB,CAAC,aAAqB,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;IAC3C;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5D;AAEQ,IAAA,kBAAkB,CAAC,QAAkB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC;IAClI;AAEQ,IAAA,qBAAqB,CAAC,QAAkB,EAAA;QAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,iBAAiB;IACrG;AAEA,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,aAAa,EAAE,WAAW;IAC5D;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAI;YAC9C,IAAI,aAAa,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE;AAE7C,YAAA,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;gBACxD,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,OAAO;AACrI,gBAAA,OAAO,aAAa;YACtB;AAEA,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAC7B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,KAAK;AAC9I,gBAAA,OAAO,aAAa;YACtB;AAEA,YAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;AACtB,gBAAA,aAAa,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,OAAO;AACnD,gBAAA,OAAO,aAAa;YACtB;YAEA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU;AAEjJ,YAAA,OAAO,aAAa;AACtB,QAAA,CAAC,CAAC;IACJ;wGAzDW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,mUCZhC,mxCAqBM,EAAA,MAAA,EAAA,CAAA,2WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDTO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,aAAa,EAAA,QAAA,EAAA,mxCAAA,EAAA,MAAA,EAAA,CAAA,2WAAA,CAAA,EAAA;;sBAMtB;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,oBAAoB;;;MEXpB,YAAY,CAAA;AACvB,IAAA,SAAS,CAAC,KAAa,EAAE,OAAoB,EAAE,eAAuB,CAAC,EAAA;QACrE,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,YAAY,GAAG,CAAC;AACxC,YAAA,OAAO,EAAE;QAEX,IAAI,CAAC,OAAO,CAAC,WAAW;AACtB,YAAA,OAAO,KAAK;QAEd,MAAM,KAAK,GAAwB,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACnE,MAAM,QAAQ,GAAW,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;AACnD,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,UAAU;AAC3C,QAAA,MAAM,cAAc,GAAW,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC;AAEtG,QAAA,OAAO,YAAY,GAAG,CAAC;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,WAAW,EAAE,cAAc;;gBAEnG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC;IAC9D;IAEQ,eAAe,CAAC,KAAa,EAAE,QAAgB,EAAE,UAAkB,EAAE,YAAoB,EAAE,WAAmB,EAAE,cAAsB,EAAA;QAC5I,MAAM,KAAK,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QACxC,IAAI,IAAI,GAAW,EAAE;QACrB,IAAI,eAAe,GAAW,CAAC;QAC/B,IAAI,WAAW,GAAW,CAAC;QAC3B,IAAI,SAAS,GAAY,KAAK;AAE9B,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACjD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC;YAEpH,KAAK,eAAe,GAAG,SAAS,IAAI,WAAW,GAAG;AAChD,gBAAA,WAAW,GAAG,WAAW,GAAG,CAAC;gBAC7B,eAAe,GAAG,CAAC;YACrB;AAEA,YAAA,SAAS,GAAG,WAAW,KAAK,YAAY;AAExC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,WAAW,KAAK,CAAC,SAAS,EAAE;gBACxE,eAAe,IAAI,SAAS;AAC5B,gBAAA,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG;YAC5B;YAEA,IAAI,SAAS,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;AACrC,gBAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7C,gBAAA,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC;gBACrE;YACF;QACF;AACA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,QAAQ,CAAC,IAAY,EAAE,QAAgB,EAAE,UAAkB,EAAE,cAAsB,EAAA;QACzF,IAAI,UAAU,GAAW,CAAC;QAC1B,IAAI,OAAO,GAAW,EAAE;AAExB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AAChD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC;YAElE,UAAU,IAAI,SAAS;AAEvB,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,cAAc;gBACzC,OAAO,OAAO,GAAG,KAAK;YAExB,OAAO,IAAI,IAAI;QACjB;AAEA,QAAA,OAAO,OAAO;IAChB;AAEQ,IAAA,eAAe,CAAC,QAAgB,EAAE,UAAkB,EAAE,OAAe,EAAA;QAC3E,MAAM,MAAM,GAAsB,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;QAClE,MAAM,OAAO,GAA6B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QACjE,OAAO,CAAC,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,UAAU,EAAE;QAC5C,MAAM,OAAO,GAAgB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;QAEzD,OAAO,OAAO,CAAC,KAAK;IACtB;wGA7EW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCMY,+BAA+B,CAAA;AAEjC,IAAA,QAAQ;AACR,IAAA,WAAW;IACX,WAAW,GAAY,KAAK;AAC3B,IAAA,eAAe,GAAG,IAAI,YAAY,EAAgB;IAE5D,cAAc,GAAW,EAAE;AAE3B,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,IAAI,IAAI,CAAC,WAAW;YAClB;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACzB,EAAE,EAAE,IAAI,CAAC,cAAc;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,gBAAA,QAAQ,EAAE;AACX,aAAA,CAAC,CAAC;IACL;AAEA,IAAA,eAAe,CAAC,MAAc,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC;AAC5F,gBAAA,CAAA,eAAA,EAAkB,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA,CAAE,GAAG,gBAAgB;QACjF;AAEA,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,iBAAiB,GAAG,EAAE;IACzH;AAEA,IAAA,wBAAwB,CAAC,OAAoB,EAAA;AAC3C,QAAA,OAAO,uBAAuB,CAAC,OAAO,CAAC;IACzC;wGAhCW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,iOCX5C,ubAOM,EAAA,MAAA,EAAA,CAAA,y1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAP,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAQ,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDIO,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,2BAA2B,EAAA,QAAA,EAAA,ubAAA,EAAA,MAAA,EAAA,CAAA,y1BAAA,CAAA,EAAA;;sBAMpC;;sBACA;;sBACA;;sBACA;;;AEXH,MAAM,0CAA0C,GAAQ;AACtD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,IAAA,KAAK,EAAE,IAAI;CACZ;MAUY,yBAAyB,CAAA;AAoBmB,IAAA,iBAAA;IAlB9C,OAAO,GAAuB,EAAE;IAChC,OAAO,GAAY,KAAK;IACxB,QAAQ,GAAW,EAAE;IACrB,UAAU,GAAY,KAAK;AAC1B,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU;IACjD,SAAS,GAAY,KAAK;AAC1B,IAAA,IAAI;AACJ,IAAA,cAAc;IACd,qBAAqB,GAAa,EAAE;IACpC,yBAAyB,GAAY,KAAK;AAE1C,IAAA,uBAAuB;AAEhC,IAAA,gBAAgB;IAChB,uBAAuB,GAAY,KAAK;IACxC,eAAe,GAAY,KAAK;AAChC,IAAA,eAAe;AAEf,IAAA,WAAA,CAAuD,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAsB;AAE9F,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY;YACzC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,YAAY;AAEhE,QAAA,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY;YAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI;IACtH;AAEA,IAAA,SAAS,CAAC,MAAwB,EAAA;QAChC,IAAI,IAAI,CAAC,SAAS;YAChB;AAEF,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,EAAE;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1C;AAEA,IAAA,qBAAqB,CAAC,EAAU,EAAA;AAC9B,QAAA,IAAI,OAAO,GAAW,IAAI,CAAC,SAAS,GAAG,gBAAgB,GAAG,EAAE;AAE5D,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc;YAC1F,OAAO,OAAO,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC;AAE7D,QAAA,IAAI,EAAE,KAAK,IAAI,CAAC,gBAAgB;AAC9B,YAAA,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAE5C,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,KAAK,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC;YAC9J,OAAO,IAAI,wBAAwB;AAErC,QAAA,OAAO,OAAO,CAAC,IAAI,EAAE;IACvB;IAEQ,uBAAuB,CAAC,OAAe,EAAE,EAAU,EAAA;AACzD,QAAA,OAAO,IAAI,CAAA,EAAG,IAAI,CAAC,IAAI,UAAU;AACjC,QAAA,OAAO,IAAI,CAAC,eAAe,KAAK,EAAE,GAAG,OAAO,IAAI,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,cAAA,CAAgB,GAAG,OAAO;IACxF;AAEQ,IAAA,iBAAiB,CAAC,OAAe,EAAA;AACvC,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,QAAA,CAAU,GAAG,iBAAiB;QAEjE,IAAI,IAAI,CAAC,uBAAuB;AAC9B,YAAA,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,eAAA,CAAiB,GAAG,wBAAwB;AAEjF,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,gCAAgC,CAAC,EAAU,EAAA;QACzC,IAAI,OAAO,GAAW,CAAA,CAAE;AAExB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc;YAC1F,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,eAAe,IAAI,CAAC,IAAI,CAAA,aAAA,CAAe;AAE5D,QAAA,IAAI,EAAE,KAAK,IAAI,CAAC,gBAAgB;AAC9B,YAAA,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,aAAA,CAAe,GAAG,qBAAqB;AAE5E,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,eAAA,CAAiB,GAAG,uBAAuB;AAE1M,QAAA,OAAO,OAAO,CAAC,IAAI,EAAE;IACvB;IAEA,qBAAqB,CAAC,EAAU,EAAE,KAAc,EAAA;AAC9C,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AAEzB,QAAA,IAAI,EAAE,KAAK,IAAI,CAAC,cAAc;AAC5B,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;;AAEpC,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;IAChC;AAEA,IAAA,QAAQ,GAAyB,MAAK,EAAG,CAAC;AAE1C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,KAAoD,EAAA;AAC7D,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,SAAS;YAAE;QAE1C,IAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAC;AACxD,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,EAAE;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;IACpD;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAlHW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAoBhB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AApBlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,SAAA,EAHzB,CAAC,0CAA0C,CAAC,+CChBzD,6pCAoBM,EAAA,MAAA,EAAA,CAAA,2kEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA,EAAA,CAAA;;4FDDO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,oBAAoB,EAAA,SAAA,EAGnB,CAAC,0CAA0C,CAAC,EAAA,QAAA,EAAA,6pCAAA,EAAA,MAAA,EAAA,CAAA,2kEAAA,CAAA,EAAA;;0BAuB1C,MAAM;2BAAC,yBAAyB;;sBAlB5C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MEjBU,8BAA8B,CAAA;AAkBrB,IAAA,iBAAA;AAAiF,IAAA,iBAAA;AAhB5F,IAAA,gBAAgB;AAChB,IAAA,QAAQ;AACR,IAAA,WAAW;AACX,IAAA,QAAQ;AACR,IAAA,kBAAkB;AAClB,IAAA,iBAAiB;AACjB,IAAA,cAAc;AAEb,IAAA,eAAe,GAAG,IAAI,YAAY,EAAgB;AAE5D,IAAA,gBAAgB;AAChB,IAAA,cAAc,GAAgB,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACxF,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;IACrC,WAAW,GAAa,EAAE;AAC1B,IAAA,aAAa;IAEb,WAAA,CAAoB,iBAAoC,EAA6C,iBAAoC,EAAA;QAArH,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAAgE,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAE7I,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrD,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC/C,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAEtC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC;AAE7E,YAAA,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW;AAC5C,gBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAEtI,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,EAAE;gBAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACtG,gBAAA,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpF,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,KAAK;gBAE7K,IAAI,IAAI,KAAK,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,KAAK,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;AAChH,oBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC;AAC5E,oBAAA,IAAI,aAAa;AACf,wBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE;gBAC9E;gBAEA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YACnG;QACF;IACF;AAEQ,IAAA,cAAc,CAAC,QAAkB,EAAA;QACvC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;YACnC,IAAI,MAAM,CAAC,IAAI;gBACb,OAAO,MAAM,CAAC,IAAI;AACtB,QAAA,CAAC,CAAC;IACJ;IAEQ,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;AACxC,YAAA,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE;AAChD,QAAA,CAAC,CAAC;IACJ;IAEQ,sBAAsB,CAAC,QAAgB,EAAE,QAAkB,EAAA;AACjE,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAkB,KAAK,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAc,KAAK,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,SAAS,CAAC;IACvI;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;aAClE,SAAS,CAAC,MAAM,IAAG;AAClB,YAAA,IAAI,MAAM;AACR,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;wBACzB,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC;AACxE,wBAAA,QAAQ,EAAE;AACX,qBAAA,CAAC,CAAC;AACP,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;AA/EW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,mDAkByB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAlBhF,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,yYCf3C,6fAMqB,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,ikBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAS,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDSR,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,0BAA0B,EAAA,QAAA,EAAA,6fAAA,EAAA,MAAA,EAAA,CAAA,ikBAAA,CAAA,EAAA;;0BAsBuB,MAAM;2BAAC,yBAAyB;;sBAhB1F;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MEhBU,uBAAuB,CAAA;AAEzB,IAAA,QAAQ;AACR,IAAA,cAAc;AAEvB,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5E;wGAPW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,gJCTpC,2lCAUM,EAAA,MAAA,EAAA,CAAA,EAAA,EAAA,ikBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA;;4FDDO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,iBAAiB,EAAA,QAAA,EAAA,2lCAAA,EAAA,MAAA,EAAA,CAAA,ikBAAA,CAAA,EAAA;;sBAM1B;;sBACA;;;MELU,+BAA+B,CAAA;AAE1C,IAAA,SAAS,CAAC,QAAkB,EAAE,QAAkB,EAAE,iBAA2B,EAAA;AAC3E,QAAA,IAAI,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB;AAEpD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc;YAC/B,OAAO,EAAE,kBAAkB;AAE7B,QAAA,IAAI,QAAQ,CAAC,WAAW,IAAI,iBAAiB;AAC3C,YAAA,OAAO,kBAAkB,IAAI,EAAE,kBAAkB;AAEnD,QAAA,OAAO,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,GAAG,EAAE,kBAAkB,GAAG,kBAAkB;IACtG;wGAZW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAA/B,+BAA+B,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,6BAAA,EAAA,CAAA;;4FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,6BAA6B;AACnC,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,kBAAkB,CAAA;AAEpB,IAAA,QAAQ;IACR,sBAAsB,GAAG,IAAI;IAC7B,oBAAoB,GAAG,IAAI;AAC3B,IAAA,QAAQ;AACR,IAAA,iBAAiB;IAEjB,eAAe,GAAG,oCAAoC;AAE/D,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,YAAY;IACrB;wGAZW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2SCV/B,klCAeM,EAAA,MAAA,EAAA,CAAA,2KAAA,EAAA,ikBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,MAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,IAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,CAAA;;4FDLO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,YAAY,EAAA,QAAA,EAAA,klCAAA,EAAA,MAAA,EAAA,CAAA,2KAAA,EAAA,ikBAAA,CAAA,EAAA;;sBAMrB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MERU,uBAAuB,CAAA;AAEzB,IAAA,oBAAoB;AACpB,IAAA,QAAQ;AAEjB,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK;AAAE,YAAA,OAAO,KAAK;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAC;IACtD;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM;IACvC;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,KAAK;IACxD;wGAhBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,6JCVpC,8wCAuBM,EAAA,MAAA,EAAA,CAAA,qrBAAA,EAAA,ikBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA;;4FDbO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,kBAAkB,EAAA,QAAA,EAAA,8wCAAA,EAAA,MAAA,EAAA,CAAA,qrBAAA,EAAA,ikBAAA,CAAA,EAAA;;sBAM3B;;sBACA;;;AERH,MAAM,8BAA8B,GAAQ;AAC1C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,IAAA,KAAK,EAAE,IAAI;CACZ;MASY,sBAAsB,CAAA;AAasB,IAAA,iBAAA;AAX9C,IAAA,IAAI;IACJ,SAAS,GAAY,KAAK;IAC1B,SAAS,GAAY,KAAK;AACzB,IAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAEtD,IAAA,aAAa;AACb,IAAA,OAAO;AACP,IAAA,KAAK;IACL,eAAe,GAAW,EAAE;AAC5B,IAAA,MAAM;AAEN,IAAA,WAAA,CAAuD,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;IAE/F,QAAQ,GAAA;QACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa;QACvE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO;QAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK;IACzD;IAEA,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,SAAS;YAChB;QAEF,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE;AAClI,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACxB;aACK,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS;AACnE,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;AAEtB,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;AAElC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9E;QAEA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC;IAEA,kBAAkB,GAAA;QAChB,IAAI,OAAO,GAAW,CAAA,CAAE;QAExB,IAAI,IAAI,CAAC,IAAI;AACX,YAAA,OAAO,IAAI,CAAA,EAAG,IAAI,CAAC,IAAI,GAAG;QAE5B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ;YAC7D,OAAO,IAAI,eAAe;AAE5B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI;YAC9B,OAAO,IAAI,UAAU;AAEvB,QAAA,OAAO,OAAO,CAAC,IAAI,EAAE;IACvB;AAEA,IAAA,QAAQ,GAAyB,MAAK,EAAG,CAAC;AAE1C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,KAAkD,EAAA;AAC3D,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YACvC;AAEF,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;IAClC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAjFW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAab,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAblC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAFtB,CAAC,8BAA8B,CAAC,0BChB7C,4oBAWQ,EAAA,MAAA,EAAA,CAAA,k1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDOK,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,gBAAgB,EAAA,SAAA,EAGf,CAAC,8BAA8B,CAAC,EAAA,QAAA,EAAA,4oBAAA,EAAA,MAAA,EAAA,CAAA,k1BAAA,CAAA,EAAA;;0BAe9B,MAAM;2BAAC,yBAAyB;;sBAX5C;;sBACA;;sBACA;;sBACA;;;MERU,gCAAgC,CAAA;AAsBvB,IAAA,EAAA;AAA4D,IAAA,iBAAA;AApBvE,IAAA,QAAQ;AACR,IAAA,QAAQ;IACR,WAAW,GAAiB,EAAE;AAE9B,IAAA,cAAc;AACd,IAAA,kBAAkB;AAClB,IAAA,iBAAiB;AACjB,IAAA,kBAAkB;AAEjB,IAAA,eAAe,GAAG,IAAI,YAAY,EAAgB;AAClD,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAW;AAEpB,IAAA,UAAU;IAEhD,OAAO,GAAY,KAAK;IACxB,eAAe,GAAkB,EAAE;AACnC,IAAA,WAAW;AACX,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AACrC,IAAA,oBAAoB;IAEpB,WAAA,CAAoB,EAAe,EAA6C,iBAAoC,EAAA;QAAhG,IAAA,CAAA,EAAE,GAAF,EAAE;QAA0D,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAC/F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IACtC;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE;AAClD,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;oBAC9C,MAAM,WAAW,GAAG,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,EAAG,KAAK,CAAA,CAAE;AAEvD,oBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/B,yBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;yBACpC,SAAS,CAAC,CAAC,QAAiB,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpG,gBAAA,CAAC,CAAC;YACJ;iBACK;AACH,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;oBAC9C,MAAM,WAAW,GAAG,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,EAAG,KAAK,CAAA,CAAE;oBACvD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACxG,gBAAA,CAAC,CAAC;YACJ;AAEA,YAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc;gBAChD,IAAI,CAAC,uBAAuB,EAAE;YAEhC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;gBAC3E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM;QAC7F;IACF;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AACtE,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,iBAAiB,CAAA,CAAE,GAAG,KAAK,CAAC;YAE9E,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC;AACvE,gBAAA,sBAAsB;AACtB,gBAAA,UAAU,CAAC,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,SAAS,GAAG,UAAU,GAAG,EAAE,CAAC;AACpE,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;QACxD,eAAe,CAAC,QAAQ,EAAE;IAC5B;AAEA,IAAA,gBAAgB,CAAC,QAAgB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,QAAQ;IACjF;AAEA,IAAA,eAAe,CAAC,QAAgB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAClC,YAAA,OAAO,SAAS;QAElB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC;AACnH,YAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,OAAO;AAEvD,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc;AAC7E,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,KAAK;IACvJ;IAEQ,cAAc,CAAC,QAAgB,EAAE,QAAkB,EAAA;AACzD,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAkB,KAAK,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAc,KAAK,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,SAAS,CAAC;IACvI;IAEA,gBAAgB,CAAC,MAAc,EAAE,QAAiB,EAAA;QAChD,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC;QAEhF,UAAU,IAAI,UAAU,CAAC,QAAQ,GAAG,QAAQ;AAC1C,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBACpB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB;AACD,aAAA,CAAC;AAEJ,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB;QAEjE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5C;AAEQ,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACvC,OAAO;AACL,YAAA,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAC3D,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;SACjE;IACH;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,aAAa;IACtB;;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,kBAAkB;IACxF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;AAzHW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,+CAsBE,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAtB3D,gCAAgC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAc7B,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BtC,w0CAqBM,EAAA,MAAA,EAAA,CAAA,+SAAA,EAAA,ikBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,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,EAAAA,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,EAAAD,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDNO,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAN5C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,4BAA4B,EAAA,QAAA,EAAA,w0CAAA,EAAA,MAAA,EAAA,CAAA,+SAAA,EAAA,ikBAAA,CAAA,EAAA;;0BA0BA,MAAM;2BAAC,yBAAyB;;sBApBrE;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA,YAAY;uBAAC,sBAAsB;;;MErBzB,mBAAmB,CAAA;AAE9B,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;IACR;wGALW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,wECRhC,i0FA8CM,EAAA,MAAA,EAAA,CAAA,0XAAA,CAAA,EAAA,CAAA;;4FDtCO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,aAAa,EAAA,QAAA,EAAA,i0FAAA,EAAA,MAAA,EAAA,CAAA,0XAAA,CAAA,EAAA;;;MEMZ,kBAAkB,CAAA;AAiCT,IAAA,iBAAA;AA/BX,IAAA,oBAAoB;IACpB,SAAS,GAAY,KAAK;IAC1B,oBAAoB,GAAY,KAAK;AACrC,IAAA,QAAQ;AACR,IAAA,QAAQ,GAAa;AAC5B,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,kBAAkB,EAAE,CAAC;AACrB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,eAAe,EAAE,CAAC;AAClB,QAAA,YAAY,EAAE,aAAa;AAC3B,QAAA,SAAS,EAAE;AACT,YAAA;AACE,gBAAA,EAAE,EAAE,GAAG;AACP,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,EAAE,EAAE,GAAG;AACP,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,SAAS,EAAE,IAAI;AACf,wBAAA,KAAK,EAAE;AACR;AACF;AACF;AACF;KACF;AACS,IAAA,aAAa,GAAG,IAAI,YAAY,EAAO;IAEjD,sBAAsB,GAAY,IAAI;AAEtC,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAE5D,IAAA,WAAW,CAAC,OAAsB,EAAA;;;QAIhC,IAAI,CAAC,6BAA6B,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC;IACpK;AAEA,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC;IAE1C;AACA,IAAA,IAAI,yBAAyB,GAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC;AAC5D,YAAA,OAAO,IAAI;QAEb,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM;YAC7D,OAAO,IAAI,CAAC,WAAW;QAEzB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,sBAAsB,CACvH,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3H;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe;AACnC,YAAA,KAAK,CAAC;AACJ,gBAAA,OAAO,WAAW;AAEpB,YAAA,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM;AACjC,gBAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,iBAAiB,GAAG,WAAW;YAErE,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACrC,gBAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,iBAAiB,GAAG,WAAW;YAErE,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AACrC,gBAAA,OAAO,YAAY;AAErB,YAAA;AACE,gBAAA,OAAO,YAAY;;IAEzB;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC;AAC1I,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;IACxC;AAEA,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,GAAG,oBAAoB;IACrH;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW;AAAE,YAAA,OAAO,KAAK;AAC7C,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC;AACpD,aAAA,MAAM,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;AAC9C,aAAA,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAE,CAAC,MAAM;IACvD;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;IAC5E;AAEA,IAAA,sBAAsB,CAAC,QAAkB,EAAA;AACvC,QAAA,OAAO,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM;IACtE;IAEA,aAAa,CAAC,YAAqB,KAAK,EAAA;AACtC,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;AAEnC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,SAAS;AAClE,gBAAA,SAAS;AAEb,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACvE,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM;AAC/F,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAEpE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACrG,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI;YAChC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;QAE/B,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;IACxC;AAEA,IAAA,eAAe,CAAC,UAAkB,EAAA;QAChC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,IAAI,UAAU,CAAC;QACtF,OAAO,GAAG,GAAG,GAAG,CAAC,WAAW,GAAG,EAAE;IACnC;AAEA,IAAA,eAAe,CAAC,aAAqB,EAAA;QACnC,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,aAAa,GAAG,CAAC;IACnD;IAEA,gBAAgB,CAAC,WAAyB,EAAE,UAAkB,EAAA;AAC5D,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE;QAChC;QAEA,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAC5C,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,IAAI,UAAU,CAC5C;QAED,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,WAAW,GAAG,WAAW,EAAE,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC;QAE/E;aACK;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;AAC7B,gBAAA,EAAE,EAAE,UAAU;gBACd,WAAW;AACX,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,iBAAiB,EAAE;AACpB,aAAA,CAAC;QACJ;IACF;AAEQ,IAAA,oBAAoB,CAAC,WAAoB,EAAA;QAC/C,IAAI,uBAAuB,GAAgC,EAAE;QAC7D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,kBAAkB,IAAG;YACrD,uBAAuB,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,CAAC;AAClH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,YAAA,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE;AACxD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,sBAAsB,EAAE,uBAAuB;gBAC/C;AACD;AACF,SAAA,CAAC;IACJ;IAEQ,YAAY,GAAA;QAClB,IAAI,uBAAuB,GAAgC,EAAE;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC;AAEjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,YAAA,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE;AACxD,YAAA,kBAAkB,EAAE;AAClB,gBAAA,sBAAsB,EAAE,uBAAuB;AAC/C,gBAAA,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC5B;AACF,SAAA,CAAC;IACJ;IAEQ,6BAA6B,GAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ;YAAE;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB;AACxF,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,iBAAiB,CAAC,kBAAkB;AACvG,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB;AAChF,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW;QAC1E,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK;QACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;aACrC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;aACrI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,OAAO,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE;wGAxMW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,qTCV/B,ssIAqEM,EAAA,MAAA,EAAA,CAAA,itBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA;;4FD3DO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,YAAY,EAAA,QAAA,EAAA,ssIAAA,EAAA,MAAA,EAAA,CAAA,itBAAA,CAAA,EAAA;;sBAMrB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAuBA;;;ME/BU,yBAAyB,CAAA;IAE3B,UAAU,GAAW,CAAC,CAAC;wGAFrB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,qHCRtC,miMAiDM,EAAA,MAAA,EAAA,CAAA,igEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA;;4FDzCO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,miMAAA,EAAA,MAAA,EAAA,CAAA,igEAAA,CAAA,EAAA;;sBAM7B;;;AENG,MAAO,gBAAiB,SAAQ,WAAW,CAAA;IAE/C,aAAa,GAA8B,EAAE;IAC7C,mBAAmB,GAAW,EAAE;AAChC,IAAA,eAAe,GAAkB,IAAI,OAAO,EAAQ;AAEpD;;AAEG;IACH,WAAA,CACE,SAAc,EACd,eAAmD,EACnD,cAA4D,EAC5D,aAAwC,EACxC,kBAAuB,EAAA;AAEvB,QAAA,KAAK,CAAC,SAAS,EAAE,eAAe,EAAE,cAAc,CAAC;AAEjD,QAAA,IAAI,aAAa;AACf,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa;QAEpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAEvG,QAAA,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAChF,MAAK;AACH,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;AACjC,QAAA,CAAC,CACF;IACH;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IACjG;AACD;;AC/BD,MAAM,qBAAqB,GAAW,GAAG;AACzC,MAAM,eAAe,GAAW,cAAc;MAWjC,wBAAwB,CAAA;AAwDK,IAAA,SAAA;AAA8B,IAAA,GAAA;IAtD7D,IAAI,GAA2F,MAAM;IACrG,WAAW,GAAWC,oBAAkB;IACxC,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAY,KAAK;IAC1B,OAAO,GAAY,IAAI;IACvB,QAAQ,GAAW,EAAE;IACrB,eAAe,GAAY,IAAI;IAC/B,UAAU,GAAW,EAAE;IACvB,SAAS,GAAY,KAAK;IAC1B,EAAE,GAAW,EAAE;IACf,YAAY,GAAW,CAAC;AACxB,IAAA,QAAQ;AACR,IAAA,QAAQ;IACR,SAAS,GAAY,KAAK;IAC1B,OAAO,GAAY,KAAK;IACxB,OAAO,GAAY,KAAK;AACxB,IAAA,0BAA0B,GAAa,CAAC,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC;AAEnH,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAmB;AAEtC,IAAA,YAAY;AAGvC,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,MAAM,GAAG,GAAY,KAAK,CAAC,MAA2B,CAAC,GAAG;QAE1D,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,IAAI,GAAG,KAAK,eAAe,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;YACpG,KAAK,CAAC,cAAc,EAAE;IAC1B;AAGA,IAAA,OAAO,CAAC,KAAqB,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAY,KAAK,CAAC,MAA2B,CAAC,GAAG;QAE1D,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM,IAAI,GAAG,KAAK,eAAe,EAAE;YACnD,IAAI,UAAU,GAAG,EAAE;YAEnB,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO;gBACpD,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;iBACnD,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC;gBACpE,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;YAEzD,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/C,YAAA,IAAI,CAAC,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;QAC1B;IACF;IAEA,eAAe,GAAW,EAAE;IAC5B,iBAAiB,GAAY,KAAK;AAElC,IAAA,aAAa,GAAG,IAAI,OAAO,EAAU;AACrC,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;IAErC,WAAA,CAAwC,SAAoB,EAAU,GAAsB,EAAA;QAApD,IAAA,CAAA,SAAS,GAAT,SAAS;QAAqB,IAAA,CAAA,GAAG,GAAH,GAAG;QACvE,IAAI,IAAI,CAAC,SAAS;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;IACvC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEQ,iBAAiB,GAAA;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAC/B,GAAG,CAAC,KAAK,IAAG;AACV,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU;AAEhF,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1C,QAAA,CAAC,CAAC,CACH,CAAC,SAAS,EAAE;IACf;IAEQ,sBAAsB,GAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;AAEF,QAAA,IAAI,IAAI,CAAC,SAAS,YAAY,eAAe;AAC3C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QAE9D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;AAC5F,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,YAAY,gBAAgB;gBACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB;YAE5D,MAAM,aAAa,GAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;YAC3D,IAAI,CAAC,OAAO,GAAG,aAAa,KAAK,YAAY,CAAC,KAAK;YACnD,IAAI,CAAC,SAAS,GAAG,aAAa,KAAK,YAAY,CAAC,OAAO;AACzD,QAAA,CAAC,CAAC;IACJ;IAEA,UAAU,GAAA;QACR,MAAM,YAAY,GAAY,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM;AACxD,QAAA,IAAI,CAAC,UAAU,GAAG,YAAY,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,qBAAqB,GAAG,EAAE;AACpH,QAAA,MAAM,WAAW,GAAG,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU;AAE5E,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;AACxC,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC5B;AAEA,IAAA,QAAQ,CAAC,QAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QAEnB,IAAI,KAAK,GAAW,QAAQ;QAE5B,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;YAC7B,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,GAAG,qBAAqB;YACjD;YAEA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAC9C,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;YAEtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACnD,YAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ;YAE7B,IAAI,IAAI,CAAC,SAAS;gBAChB,IAAI,CAAC,0BAA0B,EAAE;YAEnC,IAAI,CAAC,IAAI,CAAC,OAAO;gBACf;QACJ;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEQ,0BAA0B,GAAA;QAChC,MAAM,6BAA6B,GAAW,2BAA2B;AAEzE,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,6BAA6B,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACnF;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC;IACvE;AAEQ,IAAA,oBAAoB,CAAC,QAAgB,EAAA;AAC3C,QAAA,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,WAAW,GAAW,cAAc;AAE1C,QAAA,IAAI,WAAW,IAAI,WAAW,KAAK,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC5F,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,uBAAuB,IAAI,CAAC,QAAQ,CAAA,CAAE,GAAG,CAAA,EAAG,WAAW,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAA,IAAA,EAAO,IAAI,CAAC,QAAQ,EAAE;aACxI,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;YACtE,OAAO,CAAA,EAAG,WAAW,CAAA,OAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA,CAAE;aAC/C,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;YACtE,OAAO,CAAA,EAAG,WAAW,CAAA,MAAA,EAAS,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA,CAAE;;AAEjD,YAAA,OAAO,EAAE;IACb;AAEA,IAAA,QAAQ,GAAyB,MAAK,EAAG,CAAC;AAE1C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IAC3B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;AAEA,IAAA,2BAA2B,CAAC,KAAkB,EAAA;QAC5C,KAAK,EAAE,cAAc,EAAE;QACvB,KAAK,EAAE,eAAe,EAAE;AAExB,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB;IAClD;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,WAAW,CAAC,MAAM;IAC3B;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,WAAW,CAAC,MAAM;IAC3B;AAEA,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,WAAW,CAAC,CAAC;IACtB;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;YAC1B,OAAO,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,UAAU;AAErD,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;AAAE,YAAA,OAAO,QAAQ;AAE3C,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,CAAA,4BAAA,EAA+B,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,QAAQ,MAAM;IACxF;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO;AACvC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK;QAE1B,MAAM,UAAU,GAAG,OAAc;AACjC,QAAA,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,UAAU,EAAC;YAChD,OAAO,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;QACrD;QAEA,IAAI,CAAC,OAAO,CAAC,SAAS;AAAE,YAAA,OAAO,KAAK;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAqB,CAAC;AACvD,QAAA,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;IAC7B;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;IAC3F;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS;IACtE;AAEA,IAAA,IAAI,kBAAkB,GAAA;QACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ;IACpG;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;QACjC;IACF;wGArPW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtB,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,kzBCnBrC,wxDAiCQ,EAAA,MAAA,EAAA,CAAA,+uBAAA,EAAA,2wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,WAAA,EAAA,IAAA,EAAAuB,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDdK,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,IAAA,EAKvB,EAAE,0BAA0B,EAAE,YAAY,EAAE,EAAA,QAAA,EAAA,wxDAAA,EAAA,MAAA,EAAA,CAAA,+uBAAA,EAAA,2wBAAA,CAAA,EAAA;;0BA0DrC;;0BAAY;;sBAtDxB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,SAAS;uBAAC,cAAc;;sBAExB,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;sBAQnC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ME3CtB,0BAA0B,CAAA;IAE5B,KAAK,GAAW,iBAAiB;IACjC,UAAU,GAAW,EAAE;IACvB,IAAI,GAAyB,UAAU;AAEhD,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,EAAE;YACzB,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE;YACnC,gBAAgB,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE;AACrC,YAAA,kBAAkB,GAAG,0BAA0B;IACvD;wGAXW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,wJCRvC,0XAOM,EAAA,MAAA,EAAA,CAAA,4GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAtB,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,cAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCO,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,yBAAyB,EAAA,QAAA,EAAA,0XAAA,EAAA,MAAA,EAAA,CAAA,4GAAA,CAAA,EAAA;;sBAMlC;;sBACA;;sBACA;;;MEHU,oBAAoB,CAAA;IAEtB,MAAM,GAAuC,EAAE;IAC/C,YAAY,GAAuC,EAAE;IACrD,IAAI,GAAkB,MAAM;wGAJ1B,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,mJCTjC,yjBAYM,EAAA,MAAA,EAAA,CAAA,gWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAuB,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDHO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,cAAc,EAAA,QAAA,EAAA,yjBAAA,EAAA,MAAA,EAAA,CAAA,gWAAA,CAAA,EAAA;;sBAMvB;;sBACA;;sBACA;;;AEXH,MAAM,UAAU,GAAW,IAAI;AAC/B,MAAM,YAAY,GAAW,MAAM;MAQtB,yBAAyB,CAAA;IAE3B,UAAU,GAAW,EAAE;IACvB,iBAAiB,GAAW,CAAC;IAC7B,cAAc,GAAY,IAAI;IAC9B,kBAAkB,GAAW,IAAI;IACjC,IAAI,GAAyB,UAAU;IACvC,IAAI,GAAwB,SAAS;IACrC,KAAK,GAAW,SAAS;IACzB,YAAY,GAAuC,MAAM;IACzD,KAAK,GAAW,KAAK;IACrB,UAAU,GAAY,IAAI;IAC1B,SAAS,GAAqB,OAAO;IAE9C,mBAAmB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,kBAAkB,KAAK,UAAU,IAAI,IAAI,CAAC,kBAAkB,KAAK,YAAY;aACtF,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,CAAA,EAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA,CAAE;YAC/I,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,EAAE;IACtC;AAEA,IAAA,IAAI,4BAA4B,GAAA;AAC9B,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC9D,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,iBAAiB,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU;IAC/E;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI;IACxD;wGA3BW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,qXCXtC,u6BAUM,EAAA,MAAA,EAAA,CAAA,67BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,u6BAAA,EAAA,MAAA,EAAA,CAAA,67BAAA,CAAA,EAAA;;sBAM7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEpBH,MAAM,oCAAoC,GAAQ;AAChD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,IAAA,KAAK,EAAE,IAAI;CACZ;MAUY,oBAAoB,CAAA;IAEtB,SAAS,GAAY,KAAK;IAC1B,QAAQ,GAAY,KAAK;AAExB,IAAA,OAAO,GAAG,IAAI,YAAY,EAAW;IAE/C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;IAC/B;AAEA,IAAA,QAAQ,GAAyB,MAAK,EAAG,CAAC;AAE1C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,SAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;wGA3BW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,oCAAoC,CAAC,0BCdnD,wNAGQ,EAAA,MAAA,EAAA,CAAA,ukCAAA,CAAA,EAAA,CAAA;;4FDcK,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,cAAc,EAAA,SAAA,EAGb,CAAC,oCAAoC,CAAC,EAAA,QAAA,EAAA,wNAAA,EAAA,MAAA,EAAA,CAAA,ukCAAA,CAAA,EAAA;;sBAKhD;;sBACA;;sBAEA;;;MEbU,uBAAuB,CAAA;IAEzB,IAAI,GAAsC,MAAM;IAChD,MAAM,GAAqB,OAAO;AAClC,IAAA,IAAI,GAOT;AACA,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,UAAU,EAAE;AACV,YAAA;AACE,gBAAA,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,CAAC,WAAW,CAAC;AACpB,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,CAAC,MAAM,CAAC;AACf,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,CAAC,MAAM,CAAC;AACf,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,CAAC,QAAQ,CAAC;AACjB,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,CAAC,WAAW,CAAC;AACpB,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,CAAC,SAAS,CAAC;AAClB,gBAAA,IAAI,EAAE;AACP,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,CAAC,OAAO,CAAC;AAChB,gBAAA,IAAI,EAAE;AACP;AACF;KACF;AACM,IAAA,MAAM,GAAQ,CAAC;AACtB,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE;SACZ,EAAE;AACD,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,SAAS,EAAE;AACZ,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE;AACZ,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE;SACZ,EAAE;AACD,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,SAAS,EAAE;AACZ;KACA;AAES,IAAA,UAAU,GAAG,IAAI,YAAY,EAAO;IAE9C,KAAK,GAAU,EAAE;AAEjB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC9D;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC9D;IAEA,QAAQ,CAAC,MAAW,EAAE,SAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;AACvB,YAAA,OAAO,EAAE;QAEX,IAAI,IAAI,GAAQ,MAAM;AAEtB,QAAA,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;AACvB,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,EAAE;AACpB,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,WAAW,CAAC,MAAW,EAAE,SAAmB,EAAE,YAAiB,EAAA;AAC7D,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;QACpC,IAAI,IAAI,GAAQ,MAAM;AAEtB,QAAA,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACpC,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,EAAE;AACpB,YAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY;IACtD;IAEA,WAAW,CAAC,MAAW,EAAE,IAAsD,EAAA;AAC7E,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM;AACrB,YAAA,OAAO,aAAa,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU;YAC9B,OAAO,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEtD,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,iBAAiB,CAAC,YAAoB,EAAA;AAC5C,QAAA,OAAO,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG;AACxC,cAAE,YAAY,CAAC,QAAQ,EAAE,GAAG;AAC5B,cAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,OAAO;IACvC;AAEA,IAAA,mBAAmB,CAAC,IAAS,EAAE,QAAQ,EAAE,UAAmB,EAAA;QAC1D,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;AAClD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;wGAvJW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,qNCTpC,2kDA6BM,EAAA,MAAA,EAAA,CAAA,svBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,cAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDpBO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,kBAAkB,EAAA,QAAA,EAAA,2kDAAA,EAAA,MAAA,EAAA,CAAA,svBAAA,CAAA,EAAA;;sBAM3B;;sBACA;;sBACA;;sBA+CA;;sBA6CA;;;ME7FU,+BAA+B,CAAA;AAetB,IAAA,iBAAA;AAAiF,IAAA,iBAAA;AAb5F,IAAA,YAAY;IACZ,IAAI,GAAwB,SAAS;IACrC,YAAY,GAA8B,MAAM;IAChD,SAAS,GAAY,IAAI;IACzB,sBAAsB,GAAY,IAAI;IACtC,aAAa,GAAuC,EAAE;AAErD,IAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAC5C,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAoC;AACzE,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAW;IAEhD,QAAQ,GAAY,IAAI;IAExB,WAAA,CAAoB,iBAAoC,EAA6C,iBAAoC,EAAA;QAArH,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAAgE,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAE7I,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,YAAY;AACvC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;IAC1C;AAEA,IAAA,wBAAwB,CAAC,OAAoB,EAAA;AAC3C,QAAA,OAAO,uBAAuB,CAAC,OAAO,CAAC;IACzC;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC;AAEA,IAAA,mBAAmB,CAAC,IAAsC,EAAA;AACxD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY;AACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC;AAEA,IAAA,IAAI,gCAAgC,GAAA;AAClC,QAAA,OAAO,aAAa;IACtB;AAEA,IAAA,IAAI,8BAA8B,GAAA;AAChC,QAAA,OAAO,gBAAgB;IACzB;AAEA,IAAA,IAAI,6BAA6B,GAAA;AAC/B,QAAA,OAAO,cAAc;IACvB;AAEA,IAAA,IAAI,kBAAkB,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,sBAAsB;AAAE,YAAA,OAAO,CAAC;AAC1C,QAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,uBAAuB,IAAI,GAAG;IACjH;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,WAAW,CAAC,YAAY;IACjC;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,gBAAgB;IAC9D;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,IAAI,MAAM,CAAC,KAAK;IAC9E;AAEA,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,IAAI,MAAM,CAAC,QAAQ;IACjF;AAvEW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,mDAewB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAfhF,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,0ZCZ5C,kpFAmDM,EAAA,MAAA,EAAA,CAAA,gmFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3B,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,cAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDvCO,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,2BAA2B,EAAA,QAAA,EAAA,kpFAAA,EAAA,MAAA,EAAA,CAAA,gmFAAA,CAAA,EAAA;;0BAmBsB,MAAM;2BAAC,yBAAyB;;sBAb1F;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;;MEXU,2BAA2B,CAAA;AAeiB,IAAA,iBAAA;AAb9C,IAAA,QAAQ;IACR,sBAAsB,GAAY,IAAI;IACtC,aAAa,GAAuC,EAAE;AAErD,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAoC;AACzE,IAAA,cAAc,GAAG,IAAI,YAAY,EAAY;AAC7C,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAY;AAE5D,IAAA,SAAS;AACA,IAAA,IAAI;AACJ,IAAA,GAAG;AACO,IAAA,UAAU;AAE7B,IAAA,WAAA,CAAuD,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAsB;IAE9F,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ;IAChC;AAEA,IAAA,eAAe,CAAC,IAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC;AAEA,IAAA,YAAY,CAAC,IAAc,EAAA;AACzB,QAAA,IAAI,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;AACtG,QAAA,OAAO,uBAAuB;IAChC;AAEA,IAAA,eAAe,CAAC,QAAkB,EAAA;AAChC,QAAA,OAAO,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC,qBAAqB;IAChF;AAEA,IAAA,kBAAkB,CAAC,IAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;IACrC;AAEA,IAAA,mBAAmB,CAAC,IAAsC,EAAA;AACxD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC;AAEA,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,aAAa;IAC9C;AA5CW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,kBAelB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAflC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZxC,0rHAgEc,EAAA,MAAA,EAAA,CAAA,03EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,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,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EDtDA,CAACC,WAAS,CAAC,EAAA,CAAA;;4FAEZ,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,sBAAsB,EAAA,UAAA,EAGpB,CAACA,WAAS,CAAC,EAAA,QAAA,EAAA,0rHAAA,EAAA,MAAA,EAAA,CAAA,03EAAA,CAAA,EAAA;;0BAiBV,MAAM;2BAAC,yBAAyB;;sBAb5C;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBAGA;;sBACA;;sBACA,SAAS;uBAAC,MAAM;;;MEhBN,sBAAsB,CAAA;AAExB,IAAA,QAAQ;IACR,sBAAsB,GAAY,IAAI;AAE/C,IAAA,WAAA,GAAA,EAAgB;wGALL,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTnC,qZAIK,EAAA,MAAA,EAAA,CAAA,0jDAAA,EAAA,03EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAD,+BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,wBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDKQ,sBAAsB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,gBAAgB,EAAA,QAAA,EAAA,qZAAA,EAAA,MAAA,EAAA,CAAA,0jDAAA,EAAA,03EAAA,CAAA,EAAA;;sBAMzB;;sBACA;;;MEHU,iCAAiC,CAAA;IAEnC,UAAU,GAAe,EAAE;AAC3B,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,WAAW;IACX,kBAAkB,GAAW,SAAS;AAErC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAY;AAEvD,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;IACR;AAEA,IAAA,kBAAkB,CAAC,QAAkB,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;IAC9B;AAEA,IAAA,aAAa,CAAC,QAAkB,EAAA;AAC9B,QAAA,QAAQ,CAAC,UAAU,GAAG,CAAC,QAAQ,CAAC,UAAU;IAC5C;wGAtBW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,+SCT9C,olDA6Bc,EAAA,MAAA,EAAA,CAAA,ywDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,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,MAAA,EAAA,IAAA,EAAAE,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDpBD,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,6BAA6B,EAAA,QAAA,EAAA,olDAAA,EAAA,MAAA,EAAA,CAAA,ywDAAA,CAAA,EAAA;;sBAMtC;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MERU,2BAA2B,CAAA;IAE7B,WAAW,GAAW,EAAE;IACxB,UAAU,GAAW,EAAE;AACvB,IAAA,OAAO;AACP,IAAA,WAAW;AACX,IAAA,SAAS;AAER,IAAA,UAAU,GAAG,IAAI,YAAY,EAA0B;AACvD,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AACvC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAW;IAErD,YAAY,GAAW,EAAE;IACzB,OAAO,GAAY,IAAI;IACvB,YAAY,GAAW,GAAG;IAC1B,OAAO,GAAY,IAAI;AAEvB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY;AACrC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;IACtC;AAEA,IAAA,YAAY,CAAC,UAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AAEnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC;YAC7C;QACF;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;IACrC;AAEQ,IAAA,4BAA4B,CAAC,UAAkB,EAAA;AACrD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,2BAA2B;QACpH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC;AAE1D,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B;QACF;QAEA,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1C,QAAA,MAAM,eAAe,GAAG,YAAY,CAAC,CAAC,CAAC;AACvC,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC;AAErC,QAAA,IAAI,CAAC,mCAAmC,CAAC,eAAe,EAAE,aAAa,CAAC;AAExE,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B;QACF;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,IAAI;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI;QAEvD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;AACnD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;IAEQ,mCAAmC,CAAC,eAAuB,EAAE,aAAqB,EAAA;AACxF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;AACjG,YAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,aAAa,CAAC;IAC1G;;IAEQ,sBAAsB,CAAC,eAAuB,EAAE,aAAqB,EAAA;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,IAAI;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI;QACvD,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE;AAEpE,QAAA,IAAI,CAAC,mBAAmB;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,iBAAiB;AAEvC,QAAA,OAAO,mBAAmB;IAC5B;AAEQ,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AAC3C,QAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC;AAE1C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B;QACF;AAEA,QAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AAEtD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;AAEQ,IAAA,cAAc,CAAC,UAAkB,EAAA;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AACvC,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACxD,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;AAEzB,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,IAAI,EAAE;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;AAE/B,QAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;IACvB;AAEQ,IAAA,yBAAyB,CAAC,KAAa,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC,sBAAsB;QAE1G,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IAC3H;AAEQ,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO;AACf,YAAA,OAAO,IAAI;QAEb,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAEtE,QAAA,IAAI,CAAC,WAAW;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAElC,QAAA,OAAO,WAAW;IACpB;IAEQ,iBAAiB,CAAC,KAAa,EAAE,OAAe,EAAA;QACtD,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAE1C,QAAA,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,YAAY,GAAG,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW;AAE1D,QAAA,OAAO,cAAc;IACvB;AAEQ,IAAA,mBAAmB,CAAC,IAAY,EAAA;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACrC,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC7C,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAE7C,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACvE,QAAA,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AAEzD,QAAA,MAAM,WAAW,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,cAAc;QAClF,MAAM,WAAW,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,EAAE;AAE/G,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW;AAC9B,YAAA,IAAI,CAAC,YAAY,GAAG,cAAc;QAEpC,OAAO,WAAW,IAAI,WAAW;IACnC;wGAzJW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,kVCTxC,+RAGoB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDMP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,+RAAA,EAAA;;sBAKhC;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;;MEVU,4BAA4B,CAAA;AA2BnB,IAAA,UAAA;IAzBX,cAAc,GAAY,IAAI;IAC9B,cAAc,GAAY,IAAI;IAC9B,cAAc,GAAY,KAAK;AAE/B,IAAA,YAAY;AACZ,IAAA,YAAY;IACZ,SAAS,GAAY,KAAK;AAC1B,IAAA,OAAO;IAEP,oBAAoB,GAAW,EAAE;IACjC,qBAAqB,GAAW,EAAE;IAElC,eAAe,GAAW,EAAE;IAC5B,gBAAgB,GAAW,EAAE;IAE7B,oBAAoB,GAAW,EAAE;IACjC,qBAAqB,GAAW,EAAE;IAClC,WAAW,GAAY,IAAI;IAC3B,kBAAkB,GAAW,MAAM;AAElC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AACvC,IAAA,UAAU,GAAG,IAAI,YAAY,EAA0B;AAEjE,IAAA,WAAW;AAEX,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;IAClD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY;AAC1C,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,CAAC;AAEjF,YAAA,IAAI,OAAO,CAAC,kBAAkB,CAAC,EAAE,YAAY;AAC3C,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACrF;IACF;AAEA,IAAA,WAAW,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,WAAW,CAAC,IAA2B,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;wGA/CW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,+sBCTzC,kuBAQM,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wBAAwB,EAAA,QAAA,EAAA,kuBAAA,EAAA,MAAA,EAAA,CAAA,2NAAA,CAAA,EAAA;;sBAMjC;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;;MEvBU,wBAAwB,CAAA;IAE1B,WAAW,GAAY,IAAI;IAC3B,kBAAkB,GAAW,MAAM;IACnC,kBAAkB,GAAW,OAAO;IACpC,gBAAgB,GAAW,MAAM;IACjC,YAAY,GAAW,UAAU;IACjC,KAAK,GAAW,EAAE;AAEjB,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AAEjD,IAAA,YAAY;AACZ,IAAA,cAAc;AACd,IAAA,cAAc;AAEd,IAAA,KAAK,GAAuB,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC;AACtE,IAAA,OAAO,GAAuB,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC;AACxE,IAAA,OAAO,GAAuB,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC;AAExE,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,YAAY;AACtC,YAAA,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,YAAY,CAAC;IACpE;AAEA,IAAA,2BAA2B,CAAC,aAA+B,EAAA;AACzD,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;QACnC,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,2BAA2B,CAAC,aAA+B,EAAA;AACzD,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa;QACnC,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,yBAAyB,CAAC,WAA6B,EAAA;AACrD,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;QAC/B,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEQ,gBAAgB,GAAA;QACtB,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;AAClH,QAAA,IAAI,CAAC,YAAY,GAAG,aAAa;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;IACrC;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,OAA2B,EAAA;QAC5E,MAAM,eAAe,GAAG,CAAA,EAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE;QAE/E,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,eAAe,GAAG,eAAe,GAAG,CAAA,CAAA,EAAI,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE;IAChG;AAEQ,IAAA,wCAAwC,CAAC,YAAoB,EAAA;AACnE,QAAA,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtI;AAEQ,IAAA,iCAAiC,CAAC,MAAc,EAAA;AACtD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM;YAC3C,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;YAClC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG;AACpC,SAAA,CAAC,CAAC;IACL;wGA5DW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,0VCTrC,ohCAqBM,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDZO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,QAAA,EAAA,ohCAAA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA;;sBAM5B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;METU,6BAA6B,CAAA;IAE/B,WAAW,GAAY,IAAI;AAC3B,IAAA,YAAY;AAEX,IAAA,UAAU,GAAG,IAAI,YAAY,EAAa;IAEpD,UAAU,GAAW,WAAW;IAChC,QAAQ,GAAW,UAAU;AAE7B,IAAA,gBAAgB,CAAC,SAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS;QACnC,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,cAAc,CAAC,OAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,OAAO;QAC/B,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG;AAErF,QAAA,IAAI,wBAAwB;YAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAC3C;wGAzBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,iMCT1C,8aAMM,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDGO,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,yBAAyB,EAAA,QAAA,EAAA,8aAAA,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA;;sBAMlC;;sBACA;;sBAEA;;;AEDH,MAAM,2CAA2C,GAAQ;AACvD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kCAAkC,CAAC;AACjE,IAAA,KAAK,EAAE;CACR;AAED,MAAM,iBAAiB,GAAW,cAAc;AAChD,MAAM,iBAAiB,GAAW,cAAc;MAYnC,kCAAkC,CAAA;AAoDzB,IAAA,iBAAA;IAlDX,IAAI,GAA6D,SAAS;IAC1E,iBAAiB,GAA4B,WAAW;IACxD,yBAAyB,GAAY,KAAK;AAE1C,IAAA,YAAY,GAA2B,IAAI,IAAI,EAAE;IACjD,SAAS,GAAY,KAAK;AAC1B,IAAA,OAAO;IAEP,qBAAqB,GAAW,EAAE;IAClC,oBAAoB,GAAW,EAAE;IACjC,eAAe,GAAW,EAAE;IAE5B,cAAc,GAAY,IAAI;IAC9B,cAAc,GAAY,IAAI;IAC9B,iBAAiB,GAAY,KAAK;IAClC,cAAc,GAAY,KAAK;IAE/B,YAAY,GAAuB,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC;IAC5E,WAAW,GAAY,IAAI;AAE3B,IAAA,kBAAkB;IAClB,qBAAqB,GAAW,EAAE;IAClC,oBAAoB,GAAW,EAAE;IACjC,gBAAgB,GAAW,EAAE;IAE7B,cAAc,GAAY,IAAI;IAC9B,UAAU,GAAY,KAAK;AAE1B,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAkB;IAGlE,OAAO,CAAC,KAAiB,EAAA,EAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAGxD,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI;IAC9C;AAE4B,IAAA,aAAa;IAEzC,iBAAiB,GAAW,EAAE;IAC9B,UAAU,GAAW,EAAE;AACvB,IAAA,aAAa;IACb,QAAQ,GAAY,IAAI;IAExB,cAAc,GAAY,KAAK;IAC/B,YAAY,GAAY,KAAK;IAC7B,WAAW,GAAW,EAAE;IACxB,WAAW,GAAW,EAAE;AAExB,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAE5D,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE;AAC5D,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACpB,IAAI,CAAC,WAAW,EAAE;QACpB;AAEA,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE;YAC5C,IAAI,CAAC,oBAAoB,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB;QAC1C;AAEA,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE;AAC5C,YAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS;AACvC,gBAAA,IAAI,CAAC,oBAAoB,CAAE,IAAI,CAAC,YAAgC,CAAC,KAAM,EAAG,IAAI,CAAC,YAAgC,CAAC,GAAI,CAAC;YAEvH,IAAI,IAAI,CAAC,cAAc;AACrB,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,YAAoB,EAAE,WAAW,EAAE,IAAI,CAAC;YAE9E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAA+B,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACrH,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB;QAC1C;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,iBAAiB;YACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAA+B,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAEvH,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC;AAE9D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;QACxC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI;AAE5C,QAAA,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,MAAM;AAC3C,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC;AAE5C,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;QAClC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAGC,EAAM,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,CAAA,eAAA,EAAkB,IAAI,CAAC,WAAW,CAAA,CAAE;IAC7E;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc;IAC5C;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB;QACxC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,YAAsB,GAAG,IAAI,CAAC,YAAY;QACpH,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE;QAE9B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE;AACzC,YAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC;AAC1D,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC;AACvD,YAAA,IAAI,CAAC,oBAAoB,CAAE,IAAI,CAAC,YAAgC,CAAC,KAAM,EAAG,IAAI,CAAC,YAAgC,CAAC,GAAI,CAAC;QACvH;QAEA,IAAI,IAAI,CAAC,cAAc;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,YAAoB,EAAE,WAAW,EAAE,IAAI,CAAC;QAE9E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAA+B,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAErH,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;AACvC,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAC9B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA,IAAA,WAAW,CAAC,IAAwB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAExB,QAAA,IAAI,OAAO,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE;AAChC,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAiB,CAAC;YAC7C;QACF;QAEA,IAAI,CAAC,oBAAoB,EAAE;IAC7B;AAEQ,IAAA,qBAAqB,CAAC,IAAe,EAAA;AAC3C,QAAA,IAAI,EAAE,IAAI,CAAC,YAAY,YAAY,SAAS,CAAC;YAC3C;QAEF,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;QACxD,IAAI,CAAC,iBAAiB,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAW,CAAC,CAAA,CAAE;IACtI;AAEA,IAAA,cAAc,CAAC,QAAiB,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;IACxC;AAEA,IAAA,WAAW,CAAC,IAA4B,EAAE,mBAAmB,GAAG,KAAK,EAAA;QACnE,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB;AAEnE,QAAA,IAAI,CAAC,kBAAkB;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAE1B,IAAI,CAAC,YAAY,GAAG,kBAAkB,IAAI,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAA+B,EAAE,IAAuB,CAAC,GAAG,IAAI;AAElK,QAAA,IAAI,kBAAkB;YACpB,IAAI,CAAC,eAAe,EAAE;AAExB,QAAA,IAAI,IAAI,YAAY,IAAI,EAAE;YACxB,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAA+B,CAAC;IACxE;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,YAAY,GAAG;YAClB,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAE,IAAI,CAAC,YAAgC,CAAC,KAAa,CAAC;YACrF,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAE,IAAI,CAAC,YAAgC,CAAC,GAAW,CAAC;SAClF;IACH;IAEQ,uBAAuB,CAAC,YAA6B,EAAE,IAAqB,EAAA;AAClF,QAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,YAAY,CAAC,KAAa,EAAE,IAAI,CAAC,KAAa,CAAC;AACvF,QAAA,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC,GAAW,EAAE,IAAI,CAAC,GAAW,CAAC;AAEjF,QAAA,OAAO,IAAI,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IACxD;AAEQ,IAAA,2BAA2B,CAAC,SAA0B,EAAA;QAC5D,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;AAClD,YAAA,OAAO,EAAE;QAEX,MAAM,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;QAChE,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC;QAE5D,IAAI,CAAC,iBAAiB,GAAG,CAAA,EAAG,sBAAsB,CAAA,CAAA,EAAI,oBAAoB,EAAE;IAC9E;AAEQ,IAAA,WAAW,CAAC,IAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI;AACP,YAAA,OAAO,EAAE;AAEX,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACtD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;QAE/B,MAAM,aAAa,GAAG,CAAA,EAAG,GAAG,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;AAE/C,QAAA,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,iBAAiB;AAE9F,QAAA,IAAI,eAAe;AACjB,YAAA,OAAO,aAAa;QAEtB,IAAI,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAElD,QAAA,OAAO,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,aAAa,EAAE;IAC5C;AAEQ,IAAA,mBAAmB,CAAC,IAAU,EAAA;AACpC,QAAA,MAAM,eAAe,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QAEzH,IAAI,CAAC,IAAI,CAAC,WAAW;AACnB,YAAA,OAAO,eAAe;AAExB,QAAA,OAAO,GAAG,eAAe,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;IAC9E;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAsB,IAAI,EAAE;YAC1D;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;YAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,YAAY,SAAS;gBAC7D,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAa,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAW,CAAC,CAAA;kBACvG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;YACvC;QACF;QAEA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAA,IAAI,IAAI,CAAC,YAAY,YAAY,IAAI,EAAE;gBACrC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAsB,CAAC;gBACrE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC5D;YACF;AAEA,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC;QACrD;IACF;IAEQ,gBAAgB,CAAC,YAAkB,EAAE,IAAY,EAAA;AACvD,QAAA,IAAI,CAAC,YAAY;YACf;AAEF,QAAA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAE7D,QAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC5B,QAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;QAEhC,IAAI,IAAI,CAAC,WAAW;AAClB,YAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;IACpC;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;AAEzF,QAAA,IAAI,oBAAoB;YACtB,OAAO,IAAI,CAAC,WAAW,GAAG,6BAA6B,GAAG,2CAA2C;QAEvG,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc;AAC/D,YAAA,OAAO,oBAAoB;QAE7B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,SAAS;YAC/D,OAAO,IAAI,CAAC,WAAW,GAAG,mBAAmB,GAAG,iCAAiC;AAEnF,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,SAAS;AAChE,YAAA,OAAO,eAAe;AAExB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc;YAC7C,OAAO,IAAI,CAAC,WAAW,GAAG,eAAe,GAAG,6BAA6B;QAE3E,OAAO,IAAI,CAAC,WAAW;IACzB;AAEQ,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACrC,QAAA,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAExC,QAAA,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,OAAO,EAAE;IAC9B;IAEQ,WAAW,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAChB;AAEF,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY;QAEnC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC/C,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,OAAO;YACxB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,YAAY,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC;QAElI,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC/C,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,OAAO;YACxB;QACF;QAEA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;YAC9C,IAAI,CAAC,QAAQ,GAAG,EAAE,OAAO,IAAI,OAAO,CAAC;YACrC;QACF;IACF;IAEQ,YAAY,CAAC,KAAW,EAAE,GAAS,EAAA;QACzC,IAAI,CAAC,IAAI,CAAC,SAAS;YACjB;QAEF,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,YAAY,IAAI;YACzD,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC;AAE/C,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,YAA+B,CAAC;IACxE;IAEQ,0BAA0B,CAAC,YAA6B,EAAE,YAAuB,EAAA;QACvF,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,SAAS;YACzC;QAEF,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,KAAa,EAAE,YAAY,EAAE,KAAK,CAAC;QACvE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAW,EAAE,YAAY,EAAE,GAAG,CAAC;IACrE;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc;YACzC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAsB,CAAC;IACnG;IAEQ,oBAAoB,CAAC,KAAW,EAAE,GAAS,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG;YAC3D;QAEF,IAAI,CAAC,YAAY,GAAG;YAClB,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC;YAC3C,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI;SACvC;IACH;AAEQ,IAAA,aAAa,CAAC,KAAiB,EAAA;QACrC,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB;QAEF,MAAM,yBAAyB,GAAY,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,IAAK,IAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEnI,IAAI,yBAAyB,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC3B;QACF;QAEA,MAAM,qCAAqC,GAAY,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,IAAK,IAAoB,CAAC,EAAE,KAAK,IAAI,CAAC,wBAAwB,CAAC;AACpJ,QAAA,MAAM,6BAA6B,GAAG,CAAC,qCAAqC,IAAI,CAAC,yBAAyB;AAE1G,QAAA,IAAI,6BAA6B;YAC/B;AAEF,QAAA,IAAI,CAAC,qCAAqC;AACxC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC/B;AAEA,IAAA,QAAQ,GAA4C,MAAK,EAAG,CAAC;AAE7D,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,KAAsC,EAAA;AAC/C,QAAA,IAAI,CAAC,KAAK;YACR;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAE1B,QAAA,IAAI,OAAO,KAAK,KAAK,KAAK,CAAC,MAAM;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,KAAe;aAChC;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,KAA+B;AAEnD,YAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;gBAC5C,IAAI,CAAC,qBAAqB,EAAE;QAChC;QAEA,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB;IAC1C;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,CAAC,SAAS;AACZ,YAAA,IAAI,CAAC,oBAAoB,CAAE,IAAI,CAAC,YAAgC,CAAC,KAAM,EAAG,IAAI,CAAC,YAAgC,CAAC,GAAI;;AAEpH,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,YAAoB,EAAE,WAAW,EAAE,IAAI,CAAC;IAChF;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,2BAA2B;IACpC;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,IAAI,OAAO,GAAG,CAAA,0BAAA,EAA6B,IAAI,CAAC,iBAAiB,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAA,2BAAA,CAA6B;;;QAI3G,IAAI,IAAI,CAAC,yBAAyB;YAChC,OAAO,IAAI,QAAQ;AAGrB,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,0BAA0B,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;IAChF;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,WAAW,CAAC,QAAQ;IAC7B;AAEA,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,WAAW,CAAC,KAAK;IAC1B;wGArbW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlC,kCAAkC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAHlC,CAAC,2CAA2C,CAAC,+JC7B1D,s8FA0CM,EAAA,MAAA,EAAA,CAAA,6hBAAA,EAAA,i5DAAA,EAAA,weAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,WAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,UAAA,EDZQ,CAACR,WAAS,CAAC,EAAA,CAAA;;4FAEZ,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAV9C,SAAS;iCACI,KAAK,EAAA,QAAA,EACP,+BAA+B,EAAA,SAAA,EAK9B,CAAC,2CAA2C,CAAC,EAAA,UAAA,EAC5C,CAACA,WAAS,CAAC,EAAA,QAAA,EAAA,s8FAAA,EAAA,MAAA,EAAA,CAAA,6hBAAA,EAAA,i5DAAA,EAAA,weAAA,CAAA,EAAA;;sBAItB;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA;;sBAEA,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;;sBAGvC,YAAY;uBAAC,eAAe;;sBAK5B,SAAS;uBAAC,eAAe;;;AEpErB,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAmB,kBAAkB,CAAC;AAClF,MAAM,mBAAmB,GAAG,IAAI,cAAc,CAAqB,mBAAmB,CAAC;AACvF,MAAM,iCAAiC,GAAG,IAAI,cAAc,CAAqB,+BAA+B,CAAC;AACjH,MAAM,iCAAiC,GAAG,IAAI,cAAc,CAA2B,gCAAgC,CAAC;;MCAlH,yBAAyB,CAAA;AAE2B,IAAA,wBAAA;AAA/D,IAAA,WAAA,CAA+D,wBAAkD,EAAA;QAAlD,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;IAA4B;IAEnH,WAAW,CAAC,SAAmC,EAAE,MAAyB,EAAA;AACxE,QAAA,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACtD,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB;QACzE,SAAS,CAAC,IAAI,EAAE;IAClB;IAEA,YAAY,CAAC,GAA6B,EAAE,MAAyB,EAAE,WAAwB,EAAE,WAAmB,EAAE,QAAgB,EAAA;AACpI,QAAA,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;AAC9E,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QACnE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW;;AAGrD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,GAAG,GAAG,CAAC,CAAC;AACtD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;AACzE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC;;AAG1F,QAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,EAAE;YACvD,MAAM,CAAC,GAAG,QAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC;AACrC,YAAA,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC;AACvG,YAAA,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,CAAC;AAClH,YAAA,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC;AAC/B,YAAA,MAAM,aAAa,GAAG,OAAO,GAAG,YAAY;AAC5C,YAAA,MAAM,cAAc,GAAG,QAAQ,GAAG,YAAY;AAC9C,YAAA,MAAM,QAAQ,GAAG,QAAQ,IAAI,cAAc;AAE3C,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC7F;IACF;AAEQ,IAAA,cAAc,CAAC,WAAwB,EAAA;QAC7C,MAAM,eAAe,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;QACrD,MAAM,gBAAgB,GACpB,WAAW,CAAC,gBAAgB,GAAG,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,eAAe;AACpF,QAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE;IAC9C;AAEA;;AAEG;AACH,IAAA,mBAAmB,CAAC,MAAyB,EAAA;AAC3C,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;QAC1B,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;AACtC,QAAA,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC;AAC1B,QAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;IACnC;AAEA;;AAEG;IACH,iBAAiB,CAAC,KAAa,EAAE,QAAgB,EAAE,GAAW,EAAE,WAAmB,EAAE,QAAgB,EAAA;QACnG,MAAM,QAAQ,GAAG,CAAC,WAAW,GAAG,QAAQ,IAAI,KAAK;AACjD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,GAAG,GAAG,CAAC,CAAC;IAChD;AAEA;;AAEG;AACH,IAAA,cAAc,CAAC,QAAgB,EAAE,aAAqB,EAAE,YAAoB,EAAA;AAC1E,QAAA,MAAM,WAAW,GAAG,QAAQ,GAAG,aAAa;AAC5C,QAAA,IAAI,SAAS,GAAG,WAAW,GAAG,aAAa;QAC3C,IAAI,SAAS,GAAG,YAAY;YAC1B,SAAS,GAAG,YAAY;AAE1B,QAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE;IACnC;AAEA;;AAEG;AACH,IAAA,oBAAoB,CAClB,eAA6B,EAC7B,gBAA8B,EAC9B,WAAmB,EACnB,SAAiB,EAAA;AAEjB,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC;AAC7B,QAAA,KAAK,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,OAAO,GAAG,OAAO;gBAAE,OAAO,GAAG,OAAO;YACxC,IAAI,QAAQ,GAAG,QAAQ;gBAAE,QAAQ,GAAG,QAAQ;QAC9C;AACA,QAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;IAC9B;AAEA;;AAEG;AACH,IAAA,OAAO,CAAC,GAA6B,EAAE,CAAS,EAAE,OAAe,EAAE,aAAqB,EACtF,cAAsB,EAAE,QAAiB,EAAE,QAAgB,EAAE,SAAiB,EAAA;QAC9E,GAAG,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,CAAC,mBAAmB;QACjI,GAAG,CAAC,SAAS,EAAE;AACd,QAAA,GAAW,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC;QACtF,GAAG,CAAC,IAAI,EAAE;QAEV,GAAG,CAAC,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,oBAAoB;QACnI,GAAG,CAAC,SAAS,EAAE;AACd,QAAA,GAAW,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC;QACtH,GAAG,CAAC,IAAI,EAAE;IACZ;AAEA,IAAA,cAAc,CAAC,SAAmC,EAAE,MAAyB,EAAE,QAAgB,EAAA;QAC7F,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS;AAC1C,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,GAAG,QAAQ;AAC/C,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;QAE5B,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc;AAClE,QAAA,SAAS,CAAC,IAAI,GAAG,YAAY;AAE7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,MAAM,IAAI,GAAG,CAAC,GAAG,aAAa;AAC9B,YAAA,MAAM,CAAC,GAAG,IAAI,GAAG,eAAe;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACnC,YAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC;QACvF;IACF;AAEA,IAAA,mBAAmB,CAAC,SAAmC,EAAE,MAAyB,EAAE,WAAmB,EAAE,QAAgB,EAAA;QACvH,MAAM,QAAQ,GAAG,CAAC,WAAW,GAAG,QAAQ,IAAI,MAAM,CAAC,KAAK;QACxD,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,yBAAyB;QAC/E,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,yBAAyB;QAC7E,SAAS,CAAC,SAAS,EAAE;AACrB,QAAA,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7B,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QACzC,SAAS,CAAC,MAAM,EAAE;IACpB;AAEA,IAAA,UAAU,CAAC,OAAe,EAAA;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC;AAAE,YAAA,OAAO,MAAM;QAEjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACjD,QAAA,OAAO,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;IACrE;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO;AACL,YAAA,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS;AAClD,YAAA,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ;AAChD,YAAA,GAAG,EAAE,IAAI,CAAC,wBAAwB,CAAC;SACpC;IACH;AAnJW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAEhB,iCAAiC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAF1C,IAAA,OAAA,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;;4FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAGc,MAAM;2BAAC,iCAAiC;;;ACAhD,MAAM,wBAAwB,GAAG,SAAS;AAEjD,MAAM,uBAAuB,GAAG,mEAAmE;AACnG,MAAM,sBAAsB,GAAG,2CAA2C;AAE1E,MAAM,gBAAgB,GAAG,kBAAkB;MAK9B,cAAc,CAAA;AAEL,IAAA,UAAA;AAAmE,IAAA,iBAAA;IAAvF,WAAA,CAAoB,UAAsB,EAA6C,iBAAoC,EAAA;QAAvG,IAAA,CAAA,UAAU,GAAV,UAAU;QAAyD,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAE/H,IAAA,YAAY,CAAC,QAAsB,EAAE,cAAuB,IAAI,EAAE,qBAA8B,KAAK,EAAA;AACnG,QAAA,IAAI,sBAA8C;AAClD,QAAA,IAAI,gCAAwC;AAE5C,QAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;YACtB,sBAAsB,GAAG,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,SAAS,CAAC;AAChF,YAAA,gCAAgC,GAAG,IAAI,CAAC,wCAAwC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC1H;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAC9B,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,MAAM,EAAE,KAAK,EACtB,QAAQ,CAAC,MAAM,EAAE,KAAK,EACtB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,gCAAgC,GAAG,EAAE,EACtE,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,cAAc,EACvB,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,iBAAiB,EAC1B,WAAW,EACX,kBAAkB,CACnB,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC;AAE3C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAC5D,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;aACjF,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAG;AAC9B,YAAA,OAAO,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI;QAC1D,CAAC,CAAC,CAAC;IACP;IAEA,oBAAoB,CAAC,QAAgB,EAAE,eAAyB,EAAA;AAC9D,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,GAAG,EAAE;SACN;QAED,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,IAAG;YACtC,IAAI,WAAW,GAAG,EAAE;AACpB,YAAA,eAAe,CAAC,OAAO,CAAC,cAAc,IAAG;gBACvC,WAAW,CAAC,IAAI,CAAC;AACf,oBAAA,CAAC,cAAc,GAAG,EAAE,QAAQ,EAAE,SAAS;AACxC,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;AACvC,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,+BAA+B,CAAC,GAAa,EAAE,GAAW,EAAE,IAA2B,EAAA;QACrF,IAAI,OAAO,GAAG,EAAE;QAChB,IAAI,SAAS,GAAkB,EAAE;QAEjC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,KAAI;YACxB,IAAI,SAAS,GAAG,EAAE;YAClB,SAAS,CAAC,GAAG,CAAC,GAAG;AACf,gBAAA,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG;aACjB;AACD,YAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,GAAG,GAAG,KAAK;AACjB,gBAAA,KAAK,EAAE,EAAE;gBACT;AACD,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;IAC/B;AAEA,IAAA,2BAA2B,CAAC,mBAA2B,EAAA;AACrD,QAAA,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IACnF;IACA,aAAa,CAAC,YAAoB,EAAE,aAAkB,EAAE,SAAyB,EAAE,KAAc,EAAE,KAAc,EAAE,YAAkC,EAAE,gCAAyC,EAAE,KAAoB,EAAE,cAAkD,EAAE,UAA6C,EAAE,iBAA2D,EAAE,WAAqB,EAAE,kBAA4B,EAAA;QACza,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;AAC/D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,CAAC;AAErG,QAAA,IAAI,WAAW,GAAG,KAAK,GAAG,SAAS,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG,GAAG,EAAE;QAE1E,IAAI,YAAY,GAAG,EAAE;QAErB,IAAI,WAAW,EAAE;AACf,YAAA,YAAY,GAAG;AACb,mBAAG,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,GAAG,EAAE;mBACvG,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACrE;AAEA,QAAA,IAAI,KAAK;YAAE,YAAY,IAAI,GAAG;QAE9B,MAAM,kBAAkB,GAAG,CAAC,WAAW,GAAG,YAAY,GAAG,eAAe,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,GAAG;QAE/I,IAAI,YAAY,IAAI,EAAE;YAAE,YAAY,IAAI,GAAG;QAE3C,MAAM,YAAY,GAAG,kBAAkB,GAAG,OAAO,GAAG,OAAO;QAE3D,MAAM,KAAK,GAAG,CAAA,MAAA,EAAS,gCAAgC,GAAG,gCAAgC,GAAG,EAAE,CAAA;AAC3F,MAAA,EAAA,YAAY,GAAG,kBAAkB,CAAA,GAAA,EAAM,WAAW,GAAG,CAAC,kBAAkB,GAAG,sBAAsB,GAAG,uBAAuB,IAAI,CAAA,cAAA,EAAiB,YAAY,IAAI,GAAG,EAAE,CAAA,CAAA,EAAI,YAAY,CAAA,GAAA,EAAM,WAAW,GAAG,GAAG,GAAG,EAAE,IAAI;AACzN,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,uBAAuB,CAAC,SAAyB,EAAE,eAAA,GAA2B,KAAK,EAAA;QACzF,IAAI,eAAe,GAAG,EAAE;AAExB,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,CAAC;AAC9G,YAAA,OAAO,eAAe;QAExB,IAAI,SAAS,EAAE;YACb,eAAe,GAAG,eAAe,GAAG,EAAE,GAAG,UAAU;AACnD,YAAA,IAAI,SAAS,EAAE,GAAG,EAAE;gBAClB,IAAI,SAAS,GAAG,EAAE;AAElB,gBAAA,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAG;oBAC7B,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;AAChE,wBAAA,SAAS,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA,EAAA,CAAI;AAC/D,wBAAA,SAAS,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI;AACjF,gBAAA,CAAC,CAAC;gBAEF,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,gBAAA,eAAe,IAAI,CAAA,MAAA,EAAS,SAAS,CAAA,CAAA,CAAG;AACxC,gBAAA,eAAe,IAAI,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE;YAC5C;AAEA,YAAA,IAAI,SAAS,EAAE,EAAE,EAAE;gBACjB,IAAI,QAAQ,GAAG,EAAE;AAEjB,gBAAA,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA,EAAA,CAAI,CAAC;AAC5G,gBAAA,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,IAAG;oBAC5B,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;AAChE,wBAAA,QAAQ,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA,EAAA,CAAI;AAC9D,wBAAA,QAAQ,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI;AAChF,gBAAA,CAAC,CAAC;gBAEF,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChC,gBAAA,eAAe,IAAI,CAAA,KAAA,EAAQ,QAAQ,CAAA,EAAA,CAAI;YACzC;YAEA,eAAe,IAAI,eAAe,GAAG,EAAE,GAAG,GAAG;QAC/C;AAEA,QAAA,OAAO,eAAe;IACxB;IAEQ,oBAAoB,CAAC,KAAc,EAAE,KAAc,EAAA;QACzD,IAAI,MAAM,GAAG,EAAE;AAEf,QAAA,MAAM,IAAI,KAAK,GAAG,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA,CAAG,GAAG,EAAE;AACxC,QAAA,MAAM,IAAI,KAAK,GAAG,CAAA,QAAA,EAAW,KAAK,CAAA,CAAA,CAAG,GAAG,EAAE;AAE1C,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,0BAA0B,CAAC,YAAiC,EAAA;AAClE,QAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY;QAEnC,IAAI,MAAM,GAAG,EAAE;AAEf,QAAA,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAA,CAAG,GAAG,EAAE;AAC1C,QAAA,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAA,MAAA,EAAS,IAAI,CAAA,EAAA,CAAI,GAAG,EAAE;AAE5C,QAAA,OAAO,MAAM;IACf;AACQ,IAAA,aAAa,CAAC,GAAG,EAAE,cAAkD,EAAE,UAA6C,EAAE,iBAAkB,EAAE,SAAS,GAAG,IAAI,EAAE,iBAAiB,GAAG,KAAK,EAAA;QAC3L,IAAI,MAAM,GAAG,EAAE;AAEf,QAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACrB,YAAA,MAAM,IAAI,CAAA,EAAG,GAAG,CAAA,CAAE;YAElB,IAAI,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE;gBACtG,MAAM,IAAI,GAAG;AACb,gBAAA,IAAI,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC;oBAAE,MAAM,IAAI,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACtG,gBAAA,IAAI,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC;oBAAE,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAC9G,gBAAA,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,GAAG,CAAC;AAAE,oBAAA,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA,CAAE,GAAG,EAAE;gBACtM,MAAM,IAAI,GAAG;YACf;AAEA,YAAA,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,GAAG,CAAC;gBAC7C,MAAM,IAAI,QAAQ;YAEpB,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;gBACnG,MAAM,IAAI,iBAAiB,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAA,EAAA,CAAI;oBAC1I,CAAA,GAAA,EAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAA,EAAA,CAAI;YACjG;iBAEK,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ;gBACxF,MAAM,IAAI,iBAAiB,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAA,EAAA,CAAI;oBAC1I,CAAA,GAAA,EAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,GAAG,GAAG,GAAG,GAAG,EAAE,iBAAiB,CAAC,CAAA,EAAA,CAAI;AAE9H,iBAAA,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,iBAAiB;gBAC7E,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAA,EAAA,EAAK,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE,GAAG,CAAA,GAAA,EAAM,GAAG,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;AAE1H,iBAAA,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,iBAAiB;AAC7E,gBAAA,MAAM,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA,CAAE;AAEtC,iBAAA,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,iBAAiB;AAC9E,gBAAA,MAAM,IAAI,CAAA,EAAA,EAAK,GAAG,CAAC,GAAG,CAAC,EAAE;AAE3B,YAAA,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,GAAG,CAAC;gBAC7C,MAAM,IAAI,GAAG;YAEf,MAAM,IAAI,IAAI;QAChB;QAEA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B;AAEQ,IAAA,8BAA8B,CAAC,SAAwB,EAAA;QAC7D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;YACnC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK;AACzB,YAAA,OAAO,GAAG;QACZ,CAAC,EAAE,EAA4B,CAAC;IAClC;IAEQ,wCAAwC,CAAC,SAAwB,EAAE,SAAiB,EAAA;AAC1F,QAAA,IAAI,CAAC,SAAS;YAAE,SAAS,GAAG,gBAAgB;AAE5C,QAAA,IAAI,MAAM,GAAG,CAAC,SAAS,GAAG,SAAS,GAAG,gBAAgB,IAAI,GAAG;AAE7D,QAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;AAC3B,YAAA,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,GAAG;AAC3D,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AAElC,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,mBAAmB,CAAe,KAAQ,EAAA;QACxC,IAAI,WAAW,GAAG,GAAG;AAErB,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,KAAI;YAC9C,WAAW,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ;AAC3C,gBAAA,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA,CAAE;AAChD,gBAAA,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AAExB,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;gBACzB,WAAW,IAAI,GAAG;AACtB,QAAA,CAAC,CACA;QAED,OAAO,WAAW,GAAG,GAAG;IAC1B;AApPW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,8CAE2B,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAFlE,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAG8C,MAAM;2BAAC,yBAAyB;;;ACP/E,MAAM,cAAc,GAAG,iBAAiB;AACxC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;MAK1D,WAAW,CAAA;AAIF,IAAA,IAAA;AAA0B,IAAA,MAAA;AACpC,IAAA,GAAA;AAAgE,IAAA,iBAAA;AAJ1E,IAAA,UAAU,GAA4B,IAAI,eAAe,CAAC,EAAE,CAAC;AAC7D,IAAA,UAAU,GAAqB,IAAI,OAAO,EAAE;AAE5C,IAAA,WAAA,CAAoB,IAAgB,EAAU,MAAc,EAClD,GAAmB,EAA6C,iBAAoC,EAAA;QAD1F,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,MAAM,GAAN,MAAM;QAC1C,IAAA,CAAA,GAAG,GAAH,GAAG;QAA6D,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACzF,IAAI,SAAS,GAAGS,gBAAc,CAAC,OAAO,CAAC,cAAc,CAAC;AAEtD,QAAA,IAAI,CAAC,SAAS;YACZ;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC;AAEA,IAAA,QAAQ,CAAC,cAA8B,EAAA;AACrC,QAAA,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU;AAE5C,QAAA,IAAI,WAAW,GAAuB;AACpC,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC;SAC7F;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAyB,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW;AACnK,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,sBAAsB,KAAK,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC3F;AAEA,IAAA,8BAA8B,CAAC,UAAkB,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,GAAG,qCAAqC,UAAU,CAAA,CAAE,CAAC;IAC/H;AAEA,IAAA,MAAM,CAAC,UAA0B,EAAA;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAyB,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU;AAChK,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,sBAAsB,KAAK,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC3F;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClC;IAEA,YAAY,GAAA;QACVA,gBAAc,CAAC,SAAS,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1B;AAEA,IAAA,gBAAgB,CAAC,SAAiB,EAAA;QAChC,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACvL;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,SAAS,GAAG;AACd,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,aAAa,EAAE,oBAAoB;YACnC,cAAc,EAAE,EAAE,sBAAsB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE;SAC9F;AAED,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG;AAC7D,YAAA,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,IAAI,CAAC,CAAC;AAChG,gBAAA,EAAE,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,IAAI,CAAC,CAAC;gBAC1E,EAAE,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI;AAEpG,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/B,YAAA,OAAO,SAAS;QAClB,CAAC,CAAC,CAAC;IACL;IAEA,0BAA0B,CAAC,QAAgB,EAAE,SAAiD,EAAA;AAC5F,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,GAAG,iCAAiC,EAAE;YAC7G,QAAQ;YACR,iBAAiB,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAChG,SAAA,CAAC;IACJ;AAEA,IAAA,aAAa,CAAC,iBAAqC,EAAE,UAAkB,EAAE,WAAmB,EAAA;AAC1F,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,GAAG,+BAA+B,EAAE;AAC3G,YAAA,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3G,YAAA,WAAW,EAAE;AACd,SAAA,CAAC;IACJ;IAEA,aAAa,CAAC,iBAAqC,EAAE,UAAkB,EAAA;AACrE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,GAAG,+BAA+B,EAAE;AAC3G,YAAA,UAAU,EAAE,UAAU;YACtB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3G,SAAA,CAAC;IACJ;AAEA,IAAA,kBAAkB,CAAC,sBAA8C,EAAA;AAC/D,QAAA,IAAI,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC;AAC9C,YAAA,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,SAAS,CAAC;AAExD,QAAA,OAAO,sBAAsB;IAC/B;AAEQ,IAAA,eAAe,CAAC,QAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAAA,gBAAc,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC;IAClD;IAEQ,mCAAmC,CAAC,UAAkB,EAAE,UAAkB,EAAA;QAChF,OAAO,UAAU,GAAG,UAAU;IAChC;AAvGW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iGAKiB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AALrD,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA;;4FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAMiC,MAAM;2BAAC,yBAAyB;;;MCVrD,4BAA4B,CAAA;AAEnB,IAAA,GAAA;AAAgE,IAAA,iBAAA;IAApF,WAAA,CAAoB,GAAmB,EAA6C,iBAAoC,EAAA;QAApG,IAAA,CAAA,GAAG,GAAH,GAAG;QAA6D,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;IAE5H,cAAc,CAAC,GAAa,EAAE,aAAoB,EAAA;AAChD,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC;AAC/E,QAAA,IAAI,KAAK,GAAiB;AACxB,YAAA,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC;AAC7G,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,OAAO,EAAE;gBACP,EAAE,EAAE,WAAW,CAAC;AACjB,aAAA;YACD,SAAS,EAAE,WAAW,CAAC;SACxB;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9E;AAEA,IAAA,cAAc,CAAC,KAAgB,EAAA;AAC7B,QAAA,IAAI,KAAK,GAAiB;AACxB,YAAA,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC;AAClH,YAAA,aAAa,EAAE,iBAAiB;AAChC,YAAA,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE;AAChD,YAAA,SAAS,EAAE;SACZ;QAED,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;AACzB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;AAClB,gBAAA,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC;AACpB,oBAAA,IAAI,EAAE;wBACJ,EAAE,EAAE,OAAO,GAAG;AACf,qBAAA;AACF,iBAAA,CAAC;;AAEF,gBAAA,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;AAClB,wBAAA,IAAI,EAAE;4BACJ,EAAE,EAAE,OAAO,GAAG;AACf,yBAAA;AACF,qBAAA,CAAC;AAEJ,YAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,MAAM,GAAG,CAAC;AAChB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7E;IAEA,aAAa,CAAC,QAAkB,EAAE,aAAmB,EAAA;AACnD,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC;AAE9F,QAAA,IAAI,KAAK,GAAiB;AACxB,YAAA,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC;YAC5G,aAAa;AACb,YAAA,OAAO,EAAE;gBACP,EAAE,EAAE,WAAW,CAAC;AACjB,aAAA;YACD,SAAS,EAAE,WAAW,CAAC;SACxB;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,WAAW,EAAE,KAAK,CAAC,CAAC;IAClF;IAEA,uBAAuB,GAAA;AACrB,QAAA,IAAI,KAAK,GAAiB;AACxB,YAAA,YAAY,EAAE,sBAAsB;AACpC,YAAA,aAAa,EAAE,2BAA2B;SAC3C;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IACjF;AAvEW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,6CAEU,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAF/D,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAF3B,MAAM,EAAA,CAAA;;4FAEP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAG2C,MAAM;2BAAC,yBAAyB;;;ACdrE,MAAM,oBAAoB,GAAG,KAAK;AAClC,MAAM,qCAAqC,GAAG,MAAM;MAK9C,8BAA8B,CAAA;AAEzC,IAAA,0BAA0B,CAAC,KAAY,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACvB;AAEF,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAChC,YAAA,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,qCAAqC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACjI;IAEA,yBAAyB,CAAC,YAAoC,EAAE,SAAiC,EAAA;AAC/F,QAAA,IAAI,SAAS,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE;AAClD,YAAA,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;AACxD,gBAAA,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,qCAAqC;AACvG,oBAAA,IAAI;AACJ,oBAAA,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAEpE,YAAA,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACzE;IACF;wGAnBW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,cAF7B,MAAM,EAAA,CAAA;;4FAEP,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACID,MAAM,MAAM,GAAW,QAAQ;MAKlB,uBAAuB,CAAA;AAEd,IAAA,IAAA;AAA0B,IAAA,8BAAA;AACD,IAAA,iBAAA;AAD7C,IAAA,WAAA,CAAoB,IAAgB,EAAU,8BAA8D,EAC/D,iBAAoC,EAAA;QAD7D,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,8BAA8B,GAA9B,8BAA8B;QAC/B,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAC1D;IAEJ,cAAc,CAAC,OAAY,EAAE,IAAU,EAAA;AACrC,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;AACzC,QAAA,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;AACvC,QAAA,OAAO,QAAQ;IACjB;IAEA,gCAAgC,CAAC,mBAA2B,EAAE,MAA8B,EAAE,IAAU,EAAE,GAAa,EAAE,mBAA4B,EAAE,SAAmB,EAAA;AACxK,QAAA,IAAI,OAAO,GAAgB,IAAI,CAAC,0CAA0C,CAAC,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AAE5G,QAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAuC,KAAI;YACtH,IAAI,MAAM,CAAC,KAAK;gBACd,OAAO,MAAM,CAAC,KAAK;YAErB,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC;AAC/D,YAAA,MAAM,OAAO,GAAG;AACd,gBAAA,oBAAoB,EAAE;oBACpB,IAAI,EAAE,cAAc,CAAC,YAAY;oBACjC;AACD,iBAAA;AACD,gBAAA,0BAA0B,EAAE,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,4BAA4B,EAAE,SAAS;aAClJ;AAED,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,SAAS,CAAC;AACR,gBAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc;gBACnD,mBAAmB;AACnB,gBAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW;AAC1D,gBAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS;AAC3D,gBAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI;AACnD,gBAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE;aAAQ,CAAC,EAC1D,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QAClG,CAAC,CAAC,CAAC;IACL;AAEA,IAAA,0CAA0C,CAAC,WAAkB,EAAA;QAC3D,IAAI,OAAO,GAAgB,IAAI;AAC/B,QAAA,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAAG,WAAW;AAEpD,QAAA,IAAI,mBAAmB;YACrB,OAAO,GAAG,UAAU,CAAC,IAAI,WAAW,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,kBAAkB,CAAC,yBAAyB,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE,IAAI,CAAC;AAEpI,QAAA,IAAI,SAAS;YACX,OAAO,GAAG,eAAe;AAE3B,QAAA,OAAO,OAAO;IAChB;IAEA,aAAa,CAAC,mBAA2B,EAAE,MAA8B,EAAE,GAAa,EAAE,MAAgC,EAAE,mBAA4C,EAAA;QACtK,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;YACtB,GAAG,GAAG,SAAS;AAEjB,QAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAuC,KAAI;YACtH,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC;AAE/D,YAAA,MAAM,OAAO,GAAG;AACd,gBAAA,oBAAoB,EAAE;oBACpB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,mBAAmB,CAAC;oBACrE;AACD,iBAAA;AACD,gBAAA,0BAA0B,EAAE,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,4BAA4B,EAAE,SAAS;aAClJ;YAED,IAAI,MAAM,IAAI,QAAQ;AAAE,gBAAA,OAAO,OAAO,CAAC,oBAAoB,CAAC,GAAG;AAE/D,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CACtB,MAAM,IAAI,QAAQ,GAAG,MAAM,GAAG,KAAK,EACnC,SAAS,CAAC;AACR,gBAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc;gBACnD,mBAAmB;gBACnB,MAAM,IAAI,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;AAC5I,gBAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS;AAC3D,gBAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE;AAAK,aAAA,CAAC,EACvD,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL;IAEA,SAAS,CAAC,mBAA2B,EAAE,MAA8B,EAAE,GAAa,EAAE,WAAmB,EAAE,SAAmB,EAAA;AAC5H,QAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,SAAuC,KAAI;YACtH,MAAM,aAAa,GAAG,iCAAiC,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC;YAC/E,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC;AAE9D,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAI;gBACpE,MAAM,cAAc,GAAc,aAAa,CAAC,4BAA4B,CAAC,KAAK,CAAC;AAEnF,gBAAA,OAAO,cAAc,EAAE,WAAW;oBAChC,IAAI,CAAC,uCAAuC,CAAC,KAAyB,EAAE,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,cAAc;AAC5L,sBAAE,IAAI,CAAC,iCAAiC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,EAAE,WAAW,EAAE,mBAAmB,CAAC;AACvG,YAAA,CAAC,CACA;YAED,IAAI,OAAO,GAAgB,IAAI;AAC/B,YAAA,IAAI,SAAS;gBACX,OAAO,GAAG,eAAe;AAE3B,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,SAAS,CAAC;AACR,gBAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc;gBACnD,mBAAmB;AACnB,gBAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK;AACpD,gBAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI;aACpD,CAAC,EACF,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL;AAEQ,IAAA,iCAAiC,CAAC,wBAAkC,EAAE,IAA4B,EAAE,WAAmB,EAAE,yBAAiC,EAAA;QAChK,OAAO;AACL,YAAA,GAAG,EAAE,wBAAwB;YAC7B,IAAI;YACJ,WAAW;AACX,YAAA,SAAS,EAAE;SACZ;IACH;IAEQ,uCAAuC,CAAC,UAA4B,EAAE,WAAmB,EAAE,qBAA6B,EAAE,uBAA+B,EAAE,WAAmB,EAAE,cAAsB,EAAA;QAC5M,OAAO;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC;YAChD,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,qBAAqB,EAAE,uBAAuB,CAAC;YAChG,WAAW;AACX,YAAA,SAAS,EAAE;SACZ;IACH;AAEQ,IAAA,0BAA0B,CAAC,KAAuB,EAAA;AACxD,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC;IACvC;AAEQ,IAAA,wBAAwB,CAAC,WAAmB,EAAE,qBAA6B,EAAE,uBAA+B,EAAA;QAClH,MAAM,KAAK,GAAG,qBAAqB,GAAG,EAAE,CAAC,qBAAqB,GAAG,EAAE,EAAE,EAAE,uBAAuB,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,uBAAuB,EAAE;QAEpI,OAAO,EAAE,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,EAAE;IACnC;IAEA,mBAAmB,CAAC,mBAA2B,EAAE,GAAa,EAAA;AAC5D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACnB,SAAS,CAAC;AACR,YAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc;YACnD,mBAAmB;AACnB,YAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM;SACtD,CAAC,EACF,GAAG,CAAC;IACR;AAEA,IAAA,0BAA0B,CAAC,mBAA2B,EAAE,MAA8B,EAAE,GAAa,EAAA;AACnG,QAAA,MAAM,OAAO,GAAG;YACd,GAAG;AACH,YAAA,IAAI,EAAE;SACP;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,SAAS,CAAC;AACR,YAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc;YACnD,mBAAmB;AACnB,YAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE;SAAiB,CAAC,EACnE,OAAO,CAAC;IACZ;AAEA,IAAA,uBAAuB,CAAC,GAAa,EAAE,eAAuC,EAAE,4BAAoD,EAAE,SAAuC,EAAA;QAC3K,IAAI,MAAM,GAAG,EAAE;QAEf,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,WAAW,IAAG;YACjD,IAAI,WAAW,GAAG,EAAE;YAEpB,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBAC7C,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,YAAoC,KAAI;oBAC5E,MAAM,OAAO,GAAW,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACpD,oBAAA,MAAM,SAAS,GAA2B,YAAY,CAAC,OAAO,CAAC;oBAE/D,IAAI,CAAC,8BAA8B,CAAC,yBAAyB,CAAC,YAAY,EAAE,SAAS,CAAC;AAEtF,oBAAA,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,IAAI;AAChF,wBAAA,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;AAEnE,oBAAA,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;AAC1C,gBAAA,CAAC,CAAC;;gBAEF,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE;YAEhD,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,cAAsC,EAAE,KAAa,KAAI;AAC7F,gBAAA,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtJ,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,IAAG;wBAC9G,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,qBAAqB,IAAI,uBAAuB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,uBAAuB,CAAC;4BAC5J,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACpG,oBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC;AACV,gBAAA,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjE,WAAW;gBACX;AACD,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;AACxD,YAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnF,YAAA,MAAM,oBAAoB,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE;AAEzD,YAAA,IAAI,OAAO,GAAG;AACZ,gBAAA,KAAK,EAAE,4BAA4B,CAAC,KAAK,CAAC,CAAC,WAAW;AACtD,gBAAA,WAAW,EAAE,oBAAoB;AACjC,gBAAA,GAAG,EAAE,4BAA4B,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,CAAC;AACtE,gBAAA,cAAc,EAAE,4BAA4B,CAAC,KAAK,CAAC,CAAC;aACrD;AAED,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM;IACf;IAEA,gBAAgB,CAAC,MAA8B,EAAE,SAAuC,EAAA;AACtF,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACzD,YAAA,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,cAAc,IAAI,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,SAAS,CAAC,EAAE;AAC9I,gBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,kBAAkB,KAAK,MAAM,GAAG,cAAc,GAAG,cAAc;gBAC5F,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;oBACxF,GAAG,CAAC,KAAK,CAAC,GAAG;AACX,wBAAA,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,kBAAkB,KAAK,MAAM;AAChE,4BAAA,KAAK,EAAE,GAAG,CAAC,KAAK,IAAG;gCACjB,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE;4BACnC,CAAC,CAAC;4BACF;qBACH;AAED,oBAAA,IAAI,CAAC,8BAA8B,CAAC,0BAA0B,CAAC,KAAK,CAAC;gBACvE;YACF;iBACK;gBACH,IAAI,SAAS,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;oBAC1D,GAAG,CAAC,4BAA4B,GAAG;AACjC,wBAAA,GAAG,GAAG,CAAC,4BAA4B,EAAE,CAAC,GAAG,GAAG;4BAC1C,cAAc,EAAE,SAAS,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,cAAc;4BACvF,WAAW,EAAE,SAAS,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,WAAW;4BACjF,qBAAqB,EAAE,SAAS,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,qBAAqB;AACrG,4BAAA,MAAM,EAAE,MAAM,CAAC,GAAG;AACnB;qBACF;;oBAED,GAAG,CAAC,4BAA4B,GAAG;AACjC,wBAAA,GAAG,GAAG,CAAC,4BAA4B,EAAE,CAAC,GAAG,GAAG;AAC1C,4BAAA,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,cAAc;AAC9C,4BAAA,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW;AACxC,4BAAA,qBAAqB,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,qBAAqB;AAC5D,4BAAA,MAAM,EAAE,MAAM,CAAC,GAAG;AACnB;qBACF;YACL;AAEA,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,4BAA4B,EAAE,EAAE,EAAE,CAAC;IAC9E;AAEA,IAAA,2BAA2B,CAAC,mBAA2B,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA+B,SAAS,CAAC;AAC3D,YAAA,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc;YACnD,mBAAmB;AACnB,YAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE;AAAU,SAAA,CAAC,CAAC;IAC/D;AAvQW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,yFAGxB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAHxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA;;4FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAII,MAAM;2BAAC,yBAAyB;;AAuQrC,MAAM,yBAAyB,GAAG;AAChC,IAAA,MAAM,EAAE;AACN,QAAA,aAAa,EAAE,SAAS;AACxB,QAAA,SAAS,EAAE;AACT,YAAA,WAAW,EAAE;AAEd,SAAA;AACF,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,SAAS,EAAE;AACT,YAAA,WAAW,EAAE;AACX,gBAAA,YAAY,EAAE;AACZ,oBAAA,QAAQ,EAAE;AACX;AACF;AACF,SAAA;AACF,KAAA;AACD,IAAA,qBAAqB,EAAE;AACrB,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,SAAS,EAAE;AACT,YAAA,WAAW,EAAE;AACX,gBAAA,YAAY,EAAE;AACZ,oBAAA,QAAQ,EAAE;AACX;AACF;AACF;AACF,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,SAAS,EAAE;AACT,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE,IAAI;gBACV;AACD;AACF;AACF,KAAA;AACD,IAAA,2BAA2B,EAAE;AAC3B,QAAA,aAAa,EAAE,2BAA2B;AAC1C,QAAA,SAAS,EAAE;AACT,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE;AACP;AACF;AACF,KAAA;AACD,IAAA,2BAA2B,EAAE;AAC3B,QAAA,aAAa,EAAE,2BAA2B;AAC1C,QAAA,SAAS,EAAE;AACT,YAAA,WAAW,EAAE;AACX,gBAAA,IAAI,EAAE;AACP;AACF;AACF;CACF;;MCxUY,6BAA6B,CAAA;AAKe,IAAA,iBAAA;AAHvD,IAAA,qBAAqB,GAAiC,IAAI,OAAO,EAAuB;AACxF,IAAA,UAAU;AAEV,IAAA,WAAA,CAAuD,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACtE,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,UAAU;YAAE;AAErB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,6BAA6B,CAAC;QACnG,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,gBAAgB,KAAI;YAC/C,MAAM,KAAK,GAAwB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACpE,YAAA,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI;AACrB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,QAAA,CAAC;IACH;AAEA,IAAA,IAAI,2BAA2B,GAAA;QAC7B,OAAO;AACL,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,UAAU,EAAE,WAAW;AACvB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,UAAU,EAAE,WAAW;AACvB,YAAA,UAAU,EAAE,OAAO;AACnB,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,UAAU,EAAE,QAAQ;SACrB;IACH;AAjCW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,kBAKpB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AALlC,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cAF5B,MAAM,EAAA,CAAA;;4FAEP,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAMc,MAAM;2BAAC,yBAAyB;;;MCPlC,eAAe,CAAA;IAE1B,0BAA0B,CAAC,KAAoB,EAAE,cAAwB,EAAA;AACvE,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAA0B;QACpD,MAAM,eAAe,GAAG,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC/G,QAAA,MAAM,6BAA6B,GAAG,eAAe,EAAE,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAEtH,OAAO,6BAA6B,IAAI,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC;IAC9F;wGARW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCAY,oBAAoB,CAAA;IAE/B,UAAU,GAAa,EAAE;IACzB,kBAAkB,GAAW,EAAE;IAE/B,SAAS,CAAC,QAAgB,EAAE,WAAoB,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,kBAAkB,GAAG,WAAW;IACvC;AAEA,IAAA,iBAAiB,CAAC,WAAmB,EAAA;AACnC,QAAA,IAAI,CAAC,kBAAkB,GAAG,WAAW;IACvC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAC9B;AAEA,IAAA,cAAc,CAAC,gBAAwB,EAAA;AACrC,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,IAAI,QAAQ,IAAI,gBAAgB,CAAC;QAEvF,IAAI,aAAa,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5C;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;IACnC;;wGA5BW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,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;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACYM,MAAM,mBAAmB,GAAW,gBAAgB;AAC3D,MAAM,UAAU,GAAW,OAAO;AAClC,MAAM,gBAAgB,GAAW,eAAe;AAChD,MAAM,qBAAqB,GAAW,4BAA4B;MAOrD,qBAAqB,CAAA;AAEZ,IAAA,IAAA;AAA6D,IAAA,iBAAA;IAAjF,WAAA,CAAoB,IAAgB,EAA6C,iBAAoC,EAAA;QAAjG,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAyD,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAEzH,IAAA,0BAA0B,CAAC,gBAAgE,EAAE,WAAiB,EAAE,WAAiB,EAAA;AAC/H,QAAA,OAAO,CAAC;AACN,gBAAA,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC;AACzG,gBAAA,kBAAkB,EAAE,EAAE;gBACtB,WAAW;gBACX,WAAW;gBACX,iBAAiB,EAAE,8BAA8B,CAAC;AACnD,aAAA;AACD,YAAA;AACE,gBAAA,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,mBAAmB,CAAC;AACzG,gBAAA,kBAAkB,EAAE,EAAE;gBACtB,WAAW;gBACX,WAAW;gBACX,iBAAiB,EAAE,8BAA8B,CAAC;AACnD,aAAA,CAAC;IACJ;AAEA,IAAA,sBAAsB,CAAC,gBAAgE,EAAE,WAAA,GAAoB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,WAAkB,EAAA;AACnJ,QAAA,OAAO,CAAC;gBACN,iBAAiB,EAAE,8BAA8B,CAAC,IAAI;AACtD,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,kBAAkB,EAAE,EAAE;AACtB,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU;aAC/F,EAAE;gBACD,iBAAiB,EAAE,8BAA8B,CAAC,IAAI;AACtD,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,kBAAkB,EAAE,EAAE;AACtB,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU;aAC/F,EAAE;gBACD,iBAAiB,EAAE,8BAA8B,CAAC,IAAI;AACtD,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,kBAAkB,EAAE,EAAE;AACtB,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB;aACrG,EAAE;gBACD,iBAAiB,EAAE,8BAA8B,CAAC,IAAI;AACtD,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,kBAAkB,EAAE,EAAE;AACtB,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB;aACrG,EAAE;gBACD,iBAAiB,EAAE,8BAA8B,CAAC,IAAI;AACtD,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,kBAAkB,EAAE,EAAE;AACtB,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,YAAY,EAAE,CAAA,KAAA;AACf,aAAA,CAAC;IACJ;AAEA,IAAA,2CAA2C,CAAC,aAAqB,EAAE,SAAiB,EAAE,2BAA6D,EAAE,gBAAiC,EAAA;AACpL,QAAA,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,SAAS;AACnE,aAAA,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,eAAe,CAAC,EAAE,IAAI,gBAAgB,CAAC,EAAE;aACjH,2BAA2B,GAAG,2BAA2B;IAC9D;AAEA,IAAA,iCAAiC,CAAC,aAAqC,EAAE,QAA+C,EAAE,MAAc,EAAE,IAA+B,EAAA;AACvK,QAAA,IAAI,YAAoB;AACxB,QAAA,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;AAE5F,QAAA,QAAQ,CAAC,2BAA2B,GAAG,QAAQ,CAAC,2BAA2B,CAAC,MAAM,CAChF,0BAA0B,IAAI,0BAA0B,CAAC,YAAY,IAAI,EAAE;AACzE,YAAA,0BAA0B,CAAC,YAAY,IAAI,YAAY,CAAC;AAE5D,QAAA,QAAQ,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACxC,YAAA,YAAY,EAAE,YAAY;YAC1B,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;YACpD,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,iBAAiB,EAAE,8BAA8B,CAAC;AACnD,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAsC,EAAE,QAAQ,CAAC,2BAA2B,CAAC;IACzJ;AAEA,IAAA,oCAAoC,CAAC,SAAiB,EAAE,MAAc,EAAE,QAAyB,EAAE,cAAgD,EAAA;AACjJ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAoC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,GAAG,gCAAgC,EAC7I;YACE,OAAO,EAAE,CAAC,SAAS,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB;AACD,SAAA,CACF,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;YACd,IAAI,CAAC,2CAA2C,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC;QAC/F,CAAC,CAAC,CAAC;IACL;IAEA,mBAAmB,CACjB,IAAsE,EACtE,SAA0C,EAAA;AAE1C,QAAA,OAAO,OAAO,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI;IAC5D;AAEA,IAAA,UAAU,CAAC,IAA4B,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;AACvB,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;IACxD;AAEA,IAAA,eAAe,CAAC,aAA6C,EAAA;AAC3D,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;IAClG;IAEA,oBAAoB,CAAC,oBAA0C,EAAE,YAAoB,EAAA;QACnF,MAAM,QAAQ,GAAG,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,KAAK,YAAY,CAAC;AAE3I,QAAA,IAAI,CAAC,QAAQ;AACX,YAAA,OAAO,KAAK;QAEd,OAAO,CAAC,CAAC,oBAAoB,CAAC,2BAA2B,EAAE,IAAI,CAAC,0BAA0B,IAAI,0BAA0B,CAAC,YAAY,KAAK,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC7M;IAEA,yBAAyB,CAAC,oBAA0C,EAAE,YAA8B,EAAA;AAClG,QAAA,MAAM,2BAA2B,GAAG,oBAAoB,CAAC,2BAA2B;AACpF,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE;AAElC,QAAA,MAAM,mBAAmB,GAAG,2BAA2B,EAAE,IAAI,CAAC,0BAA0B,IAAI,0BAA0B,CAAC,YAAY,KAAK,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,mBAAmB,CAAC,IAAI,0BAA0B,CAAC,iBAAiB,KAAK,8BAA8B,CAAC,MAAM,CAAC,EAAE,WAAW;QAC/S,MAAM,uBAAuB,GAAG,2BAA2B,EAAE,IAAI,CAAC,0BAA0B,IAAI,0BAA0B,CAAC,YAAY,KAAK,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW;QAEhN,IAAI,yBAAyB,GAAY,KAAK;QAE9C,IAAI,mBAAmB,IAAI,YAAY,CAAC,KAAK,KAAK,YAAY,EAAE;YAC9D,yBAAyB,GAAG,uBAAuB;AACjD,gBAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE;AACpI,gBAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QAClE;AAEA,QAAA,OAAO,yBAAyB;IAClC;IAEA,yBAAyB,CAAC,EAAU,EAAE,KAAa,EAAA;AACjD,QAAA,OAAO,GAAG,qBAAqB,CAAA,CAAA,EAAI,EAAE,CAAA,EAAA,EAAK,KAAK,EAAE;IACnD;IAEA,qCAAqC,CAAC,mBAAwD,EAAE,QAAkB,EAAA;AAChH,QAAA,MAAM,6BAA6B,GAAI,0BAA0B,CAAC,IAAI,EAAE,CAAC,YAAuB,CAAC,OAAO,CAAC,qBAAqB,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC5I,MAAM,iBAAiB,GAAG,mBAAmB,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,6BAA6B,IAAI,IAAI,CAAC,iBAAiB,IAAI,8BAA8B,CAAC,IAAI,CAAC;QAChL,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC;IACxD;IAEA,2BAA2B,CAAC,mBAAwD,EAAE,QAAkB,EAAA;AACtG,QAAA,MAAM,+BAA+B,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,aAAa,EAAE,EAAE,8BAA8B,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC7K,QAAA,OAAO,+BAA+B,GAAG,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,GAAG,KAAK;IACxG;AAEA,IAAA,gBAAgB,CAAC,mBAAwD,EAAE,0BAA6D,EAAE,8BAA8D,EAAE,QAAkB,EAAA;AAC1N,QAAA,MAAM,6BAA6B,GAAG,0BAA0B,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,QAAQ,CAAC,EAAE,CAAC;QACzH,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,kBAAqD,KAAK,kBAAkB,CAAC,YAAY,KAAK,6BAA6B,IAAI,kBAAkB,CAAC,iBAAiB,KAAK,8BAA8B,CAAC;IAC1O;IAEA,wCAAwC,CAAkD,QAAa,EAAE,MAAc,EAAE,YAAsB,EAAE,qBAA0D,EAAE,cAAoD,EAAA;QAC/P,MAAM,OAAO,GAAG,EAAE;QAElB,IAAI,mBAAmB,GAAG,EAAE;AAE5B,QAAA,IAAI,cAAc;YAAE,mBAAmB,GAAG,cAAc;aACnD;AACH,YAAA,YAAY,CAAC,OAAO,CAAC,UAAU,IAAG;AAChC,gBAAA,IAAI,yBAAyB,GAAG,SAAS,CAAC,qBAAqB,CAAC;gBAEhE,yBAAyB,CAAC,OAAO,CAAC,aAAa,IAAI,aAAa,CAAC,YAAY,GAAI,aAAa,CAAC,YAAuB,CAAC,OAAO,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;AAElK,gBAAA,mBAAmB,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC;AACxD,YAAA,CAAC,CAAC;QACJ;QAEA,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,aAAa,MAAM;YACvE,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;YAClD,cAAc,EAAE,IAAI,IAAI,EAAE;YAC1B,kBAAkB,EAAE,aAAa,CAAC;AACnC,SAAA,CAAC,CAAC;AAEH,QAAA,QAAQ,CAAC,OAAO,CAAC,OAAO,IAAG;YACzB,OAAO,CAAC,IAAI,CAAC;AACX,gBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;AAC3B,gBAAA,cAAc,EAAE,MAAM;AACtB,gBAAA,cAAc,EAAE,CAAC,IAAI,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,GAAG,oBAAoB;AACjF,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAG;YACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,4BAA4B,EAAE,OAAO,CAAC;QAC3J,CAAC,CAAC,CAAC;IACL;AAhMW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,8CAEc,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAF5D,IAAA,OAAA,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;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAGwC,MAAM;2BAAC,yBAAyB;;;MCnB5D,0BAA0B,CAAA;AAEjB,IAAA,iBAAA;AAApB,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAE5D,IAAA,aAAa,CAAC,QAAkB,EAAA;QAC9B,OAAO,kBAAkB,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;IAC9I;AAEA,IAAA,kBAAkB,CAAC,QAAkB,EAAA;AACnC,QAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,YAAY,CAAC,GAAG,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;IAC9L;AAEQ,IAAA,uBAAuB,CAAC,QAAkB,EAAA;QAChD,OAAO,uBAAuB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnE;wGAdW,0BAA0B,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA;;4FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCDY,oBAAoB,CAAA;AAIH,IAAA,QAAA;AAClB,IAAA,eAAA;IAJF,QAAQ,GAAqB,IAAI;IAEzC,WAAA,CAC4B,QAAkB,EACpC,eAAiC,EAAA;QADf,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAC1B,IAAA,CAAA,eAAe,GAAf,eAAe;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;IACjE;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;AACrD,QAAA,IAAI,CAAC,UAAU,CAAC,yCAAyC,CAAC;IAC5D;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,KAAK,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;AACvD,QAAA,IAAI,CAAC,UAAU,CAAC,yCAAyC,CAAC;IAC5D;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;AACxD,QAAA,IAAI,CAAC,UAAU,CAAC,+CAA+C,CAAC;IAClE;IAEQ,cAAc,CAAC,IAAY,EAAE,KAAa,EAAA;QAChD,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;IACzD;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;QAC7B,MAAM,IAAI,GAAoB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC;AAC9E,QAAA,IAAI,CAAC,IAAI,GAAG,cAAc;AAC1B,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACtC;AAzCW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kBAIrB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAJP,IAAA,OAAA,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;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAKI,MAAM;2BAAC,QAAQ;;AAwCd,SAAU,oBAAoB,CAAC,UAAkB,EAAE,oBAA0C,EAAA;AACjG,IAAA,OAAO,MAAK;QACV,QAAQ,UAAU;YAChB,KAAK,MAAM,CAAC,OAAO;gBAAE,oBAAoB,CAAC,iBAAiB,EAAE;gBAAE;YAC/D,KAAK,MAAM,CAAC,KAAK;gBAAE,oBAAoB,CAAC,eAAe,EAAE;gBAAE;YAC3D,KAAK,MAAM,CAAC,QAAQ;gBAAE,oBAAoB,CAAC,kBAAkB,EAAE;gBAAE;AACjE,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,sBAAsB,UAAU,CAAA,CAAE,CAAC;;AAEzD,IAAA,CAAC;AACH;;MCtDa,uBAAuB,CAAA;AAE6B,IAAA,oCAAA;AAA/D,IAAA,WAAA,CAA+D,oCAAoE,EAAA;QAApE,IAAA,CAAA,oCAAoC,GAApC,oCAAoC;IAAoC;IAEvI,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,oCAAoC,CAAC,QAAQ,EAAE;IAC7D;AANW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAEdC,mCAAiC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAF1C,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA;;4FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAGc,MAAM;2BAACA,mCAAiC;;;MCT1C,cAAc,CAAA;AAEjB,IAAA,OAAO,KAAK,GAAqC,EAAE;IAEpD,OAAO,OAAO,CAAC,GAAW,EAAA;QAC/B,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;AAE7C,QAAA,IAAI,WAAW;AACb,YAAA,OAAO,WAAW;aAEf;YACH,IAAI,KAAK,GAAkB,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC;AACxD,YAAA,IAAI,CAAC,KAAK;AACR,gBAAA,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAEnC,YAAA,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK;AACjC,YAAA,OAAO,KAAK;QACd;IACF;AAEO,IAAA,OAAO,OAAO,CAAC,GAAW,EAAE,KAAU,EAAA;QAC3C,IAAI,cAAc,GAAG,KAAK;QAE1B,IAAI,OAAO,KAAK,IAAI,QAAQ;AAC1B,YAAA,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAExC,QAAA,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,cAAc;AAC1C,QAAA,IAAI;AACF,YAAA,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC;QAC/C;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC;QAC3C;IACF;IAEO,OAAO,UAAU,CAAC,GAAW,EAAA;AAClC,QAAA,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC;AAC5B,QAAA,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC;IAClC;AAEO,IAAA,OAAO,SAAS,GAAA;AACrB,QAAA,cAAc,CAAC,KAAK,GAAG,EAAE;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAE1C,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YACzB,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;YACvC,MAAM,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,MAAM;AACxE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACxB,QAAA,CAAC,CAAC;IACJ;IAEQ,OAAO,YAAY,CAAC,GAAW,EAAA;AACrC,QAAA,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,mDAAmD;IAC7E;IAEQ,OAAO,SAAS,CAAC,KAAa,EAAE,MAAc,EAAE,SAAiB,GAAG,EAAA;AAC1E,QAAA,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC;AAElC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/C,QAAA,QAAQ,CAAC,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,SAAS;IACpE;IAEQ,OAAO,SAAS,CAAC,KAAa,EAAA;AACpC,QAAA,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG;QACxB,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AACrC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,YAAA,IAAI,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;YACtB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACnC,gBAAA,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;YACtC;YACA,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAClC,gBAAA,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;YAC7D;QACF;AACA,QAAA,OAAO,EAAE;IACX;;;MCtEW,YAAY,CAAA;AAEgC,IAAA,iBAAA;AAAvD,IAAA,WAAA,CAAuD,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAE/F,IAAA,4CAA4C,CAAC,UAAkB,EAAA;AAC7D,QAAA,IAAI,wBAA6C;AAEjD,QAAA,MAAM,6BAA6B,GAAG,gCAAgC,CACpE,IAAI,CAAC,iBAAiB,EAAE,YAAY,EACpC,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CAC5C;AAED,QAAA,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,KAAI;YACrF,MAAM,QAAQ,GAAa,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC;AACjD,YAAA,MAAM,aAAa,GAAuB,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,WAAW,CAAC;AAE5F,YAAA,IAAI,aAAa;gBACf,wBAAwB,GAAG,aAAa;AAC5C,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,wBAAwB;IACjC;AAEE,IAAA,UAAU,CAAC,MAAc,EAAE,YAAoB,EAAE,MAAe,EAAA;AAChE,QAAA,IAAI,CAAC,MAAM;AACT,YAAA,OAAO,OAAO,CAAC,MAAM,EAAE;AAEzB,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,YAAY,CAAC;AAElF,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG;AAAE,YAAA,MAAM,GAAG,GAAG,GAAG,MAAM;AAEjG,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM;AACpF,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB;AAEA,IAAA,MAAM,aAAa,CAAC,MAAc,EAAE,UAAmB,EAAE,MAAoB,EAAA;QAC3E,MAAM,eAAe,GAAG,UAAU,IAAI,UAAU,GAAG,GAAG,IAAI,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,KAAK;AAE/F,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,YAAY,GAAG,eAAe,GAAG,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;AAC1G,aAAA,IAAI,CAAC,OAAO,QAAQ,KAAI;AACvB,YAAA,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE;AAChD,YAAA,IAAI,WAAW,CAAC,UAAU,KAAK,CAAC,EAAE;AAChC,gBAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAClC,gBAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,gBAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACnB,oBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAqB;oBAChD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE;AAC3C,wBAAA,IAAI,EAAE,WAAW;AAClB,qBAAA,CAAC;AACF,oBAAA,OAAO,IAAI;AACb,gBAAA,CAAC;AACD,gBAAA,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAChC;iBAAO;gBACL,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE;AAC3C,oBAAA,IAAI,EAAE,YAAY;AACnB,iBAAA,CAAC;AACF,gBAAA,OAAO,IAAI;YACb;AACF,QAAA,CAAC,CAAC;IACN;AA3DW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBAEH,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAFlC,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAGc,MAAM;2BAAC,yBAAyB;;;MCDlC,qBAAqB,CAAA;IAEvB,IAAI,GAAmB,cAAc;IACrC,WAAW,GAA2B,sBAAsB;IAC5D,WAAW,GAA2B,sBAAsB;IAC5D,cAAc,GAA+B,0BAA0B;IACvE,KAAK,GAAa,QAAQ;wGANxB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,8MCRlC,kGAA4F,EAAA,MAAA,EAAA,CAAA,0WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDQ/E,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,eAAe,EAAA,QAAA,EAAA,kGAAA,EAAA,MAAA,EAAA,CAAA,0WAAA,CAAA,EAAA;;sBAMxB;;sBACA;;sBACA;;sBACA;;sBACA;;;MENU,oBAAoB,CAAA;AAEQ,IAAA,MAAM;IACpC,WAAW,GAAW,GAAG;IACzB,QAAQ,GAAW,GAAG;IACtB,KAAK,GAAW,SAAS;IACzB,EAAE,GAAW,OAAO;AACnB,IAAA,YAAY,GAAyB,IAAI,YAAY,EAAU;IAEzE,eAAe,GAAA;QACb,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEA,sBAAsB,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG;QACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAqB;QACnE,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAA,0BAAA,EAA6B,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,QAAQ,CAAA,QAAA,EAAW,QAAQ,IAAI;QACtG;QACA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC1C;wGApBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,4TCRjC,qUAKM,EAAA,MAAA,EAAA,CAAA,q0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1C,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,CAAA,EAAA,CAAA;;4FDGO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,cAAc,EAAA,QAAA,EAAA,qUAAA,EAAA,MAAA,EAAA,CAAA,q0BAAA,CAAA,EAAA;;sBAMvB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACpC;;sBACA;;sBACA;;sBACA;;sBACA;;;AEHH,MAAM,EAAE,GAAW,IAAI;AAEvB,MAAM,KAAK,GAAW,OAAO;AAC7B,MAAM,UAAU,GAAW,YAAY;AACvC,MAAM,UAAU,GAAW,YAAY;MAQ1B,oBAAoB,CAAA;AAiDX,IAAA,oBAAA;AAAyD,IAAA,sBAAA;AACnE,IAAA,eAAA;AAA0C,IAAA,YAAA;AACC,IAAA,wBAAA;IAjD5C,iBAAiB,GAAY,IAAI;IACjC,SAAS,GAAY,KAAK;IAC1B,aAAa,GAAW,CAAC;IACzB,aAAa,GAAW,CAAC;IACzB,OAAO,GAAY,KAAK;IACxB,WAAW,GAAW,CAAC;IACvB,cAAc,GAAG,KAAK;IACtB,KAAK,GAAW,GAAG;AACnB,IAAA,EAAE;AACF,IAAA,SAAS;AACT,IAAA,aAAa;AACb,IAAA,UAAU;AAET,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU;AAChD,IAAA,eAAe,GAAG,IAAI,YAAY,EAAW;AAC7C,IAAA,qBAAqB,GAAG,IAAI,YAAY,EAAE;AAC1C,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAiB;AAEpB,IAAA,WAAW;AACjB,IAAA,MAAM;AACG,IAAA,cAAc;AAE9D,IAAA,UAAU;AACV,IAAA,YAAY;AACZ,IAAA,YAAY;AACZ,IAAA,WAAW;AACX,IAAA,aAAa;AACb,IAAA,YAAY;IAEZ,6BAA6B,GAAY,KAAK;IAC9C,YAAY,GAAY,KAAK;IAC7B,SAAS,GAAY,KAAK;IAE1B,WAAW,GAAW,CAAC;IACvB,YAAY,GAAW,EAAE;IACzB,WAAW,GAAW,CAAC;IACvB,UAAU,GAAW,CAAC;IACtB,QAAQ,GAAW,CAAC;AAEpB,IAAA,iBAAiB,GAAG;QAClB,KAAK,EAAE,MAAM,IAAI,CAAC,cAAc,GAAG,KAAK;AACxC,QAAA,UAAU,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE;AACxC,QAAA,UAAU,EAAE,MAAM,IAAI,CAAC,sBAAsB;KAC9C;AAED,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;IAErC,WAAA,CAAoB,oBAA+C,EAAU,sBAAqD,EACxH,eAAgC,EAAU,YAA0B,EACzB,wBAAkD,EAAA;QAFnF,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QAAqC,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;QACzF,IAAA,CAAA,eAAe,GAAf,eAAe;QAA2B,IAAA,CAAA,YAAY,GAAZ,YAAY;QACX,IAAA,CAAA,wBAAwB,GAAxB,wBAAwB;IAA8B;IAE3G,MAAM,WAAW,CAAC,OAAsB,EAAA;AACtC,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE;AAC1C,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACvH,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE;gBAE/B,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;gBAC9F,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YACrC;YAEA,IAAI,CAAC,kCAAkC,EAAE;QAC3C;AAEA,QAAA,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE;YAC5D,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC;YAChF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC;AAEA,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY;YACpC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;QAErC,IAAI,CAAC,YAAY,EAAE;QAEnB,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW;YAC7D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACrD;IAEQ,kCAAkC,GAAA;QACxC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS;AAElD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC1D,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;YAEjF,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAC5D;IACF;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC;QAEtB,IAAI,IAAI,CAAC,YAAY;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC;IACrC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,gCAAgC,EAAE;AAEvC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE;QACtC,IAAI,CAAC,sBAAsB,EAAE;IAC/B;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,EAAE;IACrB;IAEQ,gCAAgC,GAAA;AACtC,QAAA,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE;QAC9C,IAAI,CAAC,sBAAsB,CAAC;AACzB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;aACpC,SAAS,CAAC,mBAAmB,IAAG;AAC/B,YAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAA,CAAC,CAAC;IACN;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa;AAC9C,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa;AACrC,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW;AACxC,QAAA,MAAM,CAAC,KAAK,GAAG,WAAW;AAC1B,QAAA,MAAM,CAAC,MAAM,GAAG,GAAG;QAEnB,IAAI,IAAI,CAAC,YAAY;YACnB,IAAI,CAAC,cAAc,EAAE;IACzB;IAEQ,MAAM,QAAQ,CAAC,IAAU,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QAErB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QAEzC,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AAEvE,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;QAEzC,IAAI,IAAI,CAAC,YAAY;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QAE3B,IAAI,IAAI,CAAC,YAAY;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAE7B,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAE5C,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;AACvC,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACjC,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,cAAc,EAAE;QACvB;QACA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC;YAC5C,IAAI,CAAC,YAAY,GAAG,yBAAyB,GAAG,IAAI,CAAC,IAAI;QAC3D;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC3C;IAEQ,MAAM,eAAe,CAAC,WAAwB,EAAA;AACpD,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC;QACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;AAEQ,IAAA,sBAAsB,CAAC,IAAU,EAAA;QACvC,IAAI,CAAC,UAAU,EAAE;QAEjB,IAAI,CAAC,gCAAgC,EAAE;AAEvC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,WAAW;AAE3C,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACpF;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AAChD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC1D,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC;IAC9C;IAEQ,eAAe,GAAA;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,IAAI,CAAC;AAE5D,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC;AAE/E,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,aAAa,CAAC,CAAC;QAEvF,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAE3D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;QAClD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAEnD,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC;AAErC,QAAA,IAAG,aAAa,IAAE,CAAC,EAAC;YAClB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC1C,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7C;aACK;YACH,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC1C,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7C;QAEA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QAE3C,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAEjD,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACpF;IAEQ,sBAAsB,GAAA;QAC5B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAE/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW;QAChD,IAAI,CAAC,cAAc,EAAE;IACvB;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,CAAC;IAC3E;IAGA,cAAc,GAAA;QACZ,IAAI,CAAC,YAAY,EAAE;IACrB;AAGA,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QACtC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7C,KAAK,CAAC,cAAc,EAAE;QAExB,IAAI,CAAC,IAAI,CAAC,6BAA6B;AACrC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD;AAEQ,IAAA,WAAW,CAAC,OAAe,EAAA;QACjC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE;IACjD;AAEA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO;AACL,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE;AACvF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxI,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7I,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;AAClG,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AACtF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AACzF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;AACtF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;AACvF,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;SACvF;IACH;IAEA,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,YAAY;YACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;QAEhD,IAAI,IAAI,CAAC,aAAa;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW;IACpD;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS;YAAE;AAEpC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;IAC5D;AAEA,IAAA,YAAY,CAAC,OAAA,GAAkB,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAA;AAC7E,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS;YAAE;AAEpC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,OAAO;YACvD,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAC;YAEvF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW;YAChD,IAAI,CAAC,uBAAuB,EAAE;QAEhC;aAAO;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC;QACnD;IACF;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,IAAI,GAAG;QAClF,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAqB;AACnE,QAAA,IAAI,MAAM;YACR,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,kCAAkC,QAAQ,CAAA,QAAA,EAAW,QAAQ,CAAA,EAAA,CAAI;IAC/F;AAEA,IAAA,aAAa,CAAC,OAAA,GAAkB,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,EAAA;AAC9E,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS;YAAE;AAEpC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,OAAO;AACvD,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW;YAChD,IAAI,CAAC,uBAAuB,EAAE;QAChC;;AACE,YAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC;IACrD;IAEQ,SAAS,GAAA;QACf,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,WAAW,EAAE;YAC3C,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AAChD,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClE;;YACE,IAAI,CAAC,kBAAkB,EAAE;IAC7B;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI;aACnB,IAAI,CAAC,MAAK;AACT,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;YAC1B,IAAI,CAAC,uBAAuB,EAAE;AAChC,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;IAC3E;IAEQ,UAAU,GAAA;QAChB,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEQ,eAAe,CAAC,iBAA0B,KAAK,EAAA;QACrD,IAAI,IAAI,CAAC,YAAY;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QAE3B,IAAI,IAAI,CAAC,YAAY;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAE7B,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;IACtC;AAEA,IAAA,cAAc,CAAC,KAAiB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS;YAAE;AAEpC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AAC7C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;AACxC,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK;QAExC,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC,QAAQ;QAC7C,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QAEhD,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa;AAC9C,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;QACxD,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC5G,QAAA,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC1E,QAAA,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC;IACnG;AAEA,IAAA,oBAAoB,CAAC,aAAsB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS;YAAE;AAEpC,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;IACzC;AAEQ,IAAA,mBAAmB,CAAC,aAAsB,EAAA;AAChD,QAAA,IAAI,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;AAE1F,YAAA,IAAI,aAAa;AAAE,gBAAA,IAAI,CAAC,aAAa,GAAG,aAAa;QAEvD,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa;;AACrE,YAAA,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC;QAEtD,IAAI,CAAC,uBAAuB,EAAE;IAChC;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,cAAc;YAC9B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,EAAE,EAAE,IAAI,CAAC;AACV,SAAA,CAAC;IACJ;IAEQ,gCAAgC,GAAA;QACtC,IAAI,CAAC,IAAI,CAAC,YAAY;YACpB;AAEF,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7H;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,YAAY;IACrB;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,KAAK;YAC7E,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;IAC1D;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;QAE/B,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,gCAAgC,EAAE;IACzC;AA5aW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,uJAmDrB2C,mCAAiC,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAnDhC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,sgCCxBjC,w0FAwDM,EAAA,MAAA,EAAA,CAAA,87DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,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,EAAAe,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDhCO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,w0FAAA,EAAA,MAAA,EAAA,CAAA,87DAAA,CAAA,EAAA;;0BAuD3B,MAAM;2BAACJ,mCAAiC;;sBAjD1C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAC1C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACpC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBA0N7C,YAAY;uBAAC,eAAe;;sBAK5B,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AEzQ5C,MAAM,mCAAmC,GAAQ;AAC/C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,IAAA,KAAK,EAAE,IAAI;CACZ;MAYY,sBAAsB,CAAA;IAExB,WAAW,GAAWrB,oBAAkB;IACxC,QAAQ,GAAY,KAAK;IACzB,eAAe,GAAW,EAAE;IAC5B,OAAO,GAAY,IAAI;IACvB,SAAS,GAAY,KAAK;IAC1B,QAAQ,GAAW,EAAE;IACrB,eAAe,GAAY,IAAI;IAC/B,EAAE,GAAW,EAAE;AACf,IAAA,0BAA0B,GAAa,CAAC,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC;IACpH,UAAU,GAAsB,SAAS;AACzC,IAAA,QAAQ;IACR,UAAU,GAAW,EAAE;AACvB,IAAA,SAAS;AAER,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;AAGxD,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,IAAK,KAAK,CAAC,MAA2B,CAAC,GAAG,IAAI,QAAQ,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;YACvG,KAAK,CAAC,cAAc,EAAE;QACxB;IACF;AACuB,IAAA,QAAQ;IAE/B,OAAO,GAAY,KAAK;IACxB,SAAS,GAAY,KAAK;IAE1B,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,QAAQ;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI;IACrE;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;IAChC;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;IACrB;AAEA,IAAA,QAAQ,GAAyB,MAAK,EAAG,CAAC;AAC1C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IACzB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,UAAU,KAAK;IAEf,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;AAEA,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,WAAW,CAAC,CAAC;IACtB;wGApEW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAFtB,CAAC,mCAAmC,CAAC,gIClBlD,iiCAmBe,EAAA,MAAA,EAAA,CAAA,kpCAAA,EAAA,2wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,WAAA,EAAA,IAAA,EAAA+C,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDCF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,iBAAiB,EAAA,SAAA,EAMhB,CAAC,mCAAmC,CAAC,EAAA,QAAA,EAAA,iiCAAA,EAAA,MAAA,EAAA,CAAA,kpCAAA,EAAA,2wBAAA,CAAA,EAAA;;sBAI/C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;sBAMnC,SAAS;uBAAC,UAAU;;;AErCvB,MAAM,eAAe,GAAW,KAAK;AACrC,MAAM,wBAAwB,GAAW,kBAAkB;AAE3D,MAAM,oBAAoB,GAAW,mBAAmB;AACxD,MAAM,oBAAoB,GAAW,mBAAmB;AACxD,MAAM,UAAU,GAAW,YAAY;AACvC,MAAM,UAAU,GAAW,YAAY;MAS1B,yBAAyB,CAAA;AAmChB,IAAA,uBAAA;IAjCX,OAAO,GAAiB,EAAE;AAC1B,IAAA,cAAc;AAEd,IAAA,WAAW;IACX,WAAW,GAAG,EAAE;IAChB,UAAU,GAAG,KAAK;AAClB,IAAA,QAAQ;IACR,YAAY,GAAY,IAAI;AAE3B,IAAA,cAAc,GAAG,IAAI,YAAY,EAAgB;AAEtC,IAAA,MAAM;IAE3B,mBAAmB,GAAG,IAAI;IAC1B,gBAAgB,GAA0C,IAAI;IAC9D,WAAW,GAAG,KAAK;IACnB,2BAA2B,GAAG,KAAK;IACnC,cAAc,GAAG,KAAK;IACtB,cAAc,GAAG,KAAK;IACtB,eAAe,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IACrC,kBAAkB,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IACxC,mCAAmC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;IACzD,cAAc,GAAG,EAAE;IACnB,qBAAqB,GAAY,KAAK;IACtC,oBAAoB,GAAY,KAAK;IAC7B,qBAAqB,GAAuB,IAAI;AACxD,IAAA,eAAe;AAEf,IAAA,eAAe;AACf,IAAA,qBAAqB;;;AAIrB,IAAA,WAAA,CAAoB,uBAAgD,EAAA;QAAhD,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE;IAChE;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACjE,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;;AAEjB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,aAAa,CAAC;QAE7E,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE;QAE5B,IAAI,IAAI,CAAC,QAAQ;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI;IACnE;;;AAMA,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QAExB,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE;AAEjD,QAAA,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO;YAAE,KAAK,CAAC,cAAc,EAAE;AAEhD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;QAEvC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAAE;QAAQ;AAEnD,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;QACzE,MAAM,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;AAEnD,QAAA,IAAI,aAAa,IAAI,oBAAoB,EAAE;YACzC,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;gBAC1C;YAEF,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACrC,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC;YAE9E,IAAI,cAAc,IAAI,IAAI,CAAC,4CAA4C,CAAC,SAAS,CAAC,EAAE;gBAClF,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,CAAC;gBACpE;YACF;YAEA,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;oBACnC;AAEF,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YAChC;iBACK;gBACH,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC;YAC9C;QACF;IACF;AAEA;;;AAGG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;YACxB;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;AAEvC,QAAA,IAAI,CAAC,SAAS;YACZ;QAEF,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,iCAAiC,CAAC,SAAS,CAAC;YACjD;QACF;;AAEE,YAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK;AAE1C,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;AAClE,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK;QAChE;;AAEE,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC5B;AAEQ,IAAA,uBAAuB,CAAC,SAAoB,EAAA;AAClD,QAAA,MAAM,aAAa,GAAG,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK;AACrF,QAAA,MAAM,+CAA+C,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAEvG,IAAI,+CAA+C,EAAE;AACnD,YAAA,IAAI,CAAC,iCAAiC,CAAC,SAAS,CAAC;AACjD,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,iCAAiC,CAAC,SAAoB,EAAA;AAC5D,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK;QAC9C,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC;IACxF;AAEQ,IAAA,gBAAgB,CAAC,SAAoB,EAAA;QAC3C,MAAM,oBAAoB,GAAG,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,SAAS;AACzE,QAAA,MAAM,aAAa,GAAG,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK;QACrF,IAAI,+BAA+B,GAAG,KAAK;AAE3C,QAAA,IAAI,aAAa;AACf,YAAA,+BAA+B,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAE/F,IAAI,aAAa,KAAK,UAAU,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM;YAC9D,+BAA+B,GAAG,KAAK;AAEzC,QAAA,OAAO,CAAC,oBAAoB,IAAI,CAAC,+BAA+B;IAClE;AAEQ,IAAA,2BAA2B,CAAC,SAAoB,EAAA;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAErC,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;IACvC;AAEQ,IAAA,kBAAkB,CAAC,OAA4B,EAAA;AACrD,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAElD,OAAO;YACL,GAAG,EAAE,UAAU,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO;AACzC,YAAA,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO;SAC9D;IACH;IAEQ,kBAAkB,CAAC,OAAoB,EAAE,aAA0B,EAAA;AACzE,QAAA,MAAM,UAAU,GAAG,aAAa,CAAC,qBAAqB,EAAE;QACxD,MAAM,aAAa,GAAG,EAAE;QACxB,MAAM,SAAS,GAAG,EAAE;AAEpB,QAAA,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;AAC1D,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,IAAI;AAC9E,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI;IAC1E;AAEA,IAAA,oBAAoB,CAAC,KAAiB,EAAA;QACpC,KAAK,CAAC,cAAc,EAAE;IACxB;;;AAMA;;AAEG;IACK,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;YAAE;QAAQ;AAE1D,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE;AAE5D,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAAE;QAAQ;AAErD,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE;QAEpC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;AAEhF,QAAA,IAAI,CAAC,+CAA+C,CAAC,aAAa,CAAC;AAEnE,QAAA,aAAa,CAAC,OAAO,CAAC,MAAM,IAAG;AAC7B,YAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,gBAAA,KAAK,UAAU;oBACb,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;oBACnD;AACF,gBAAA,KAAK,UAAU;oBACb,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;oBACnD;AACF,gBAAA,KAAK,SAAS;oBACZ,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC;oBAClD;;AAEN,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,OAAO;QAC7C,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEQ,IAAA,+CAA+C,CAAC,OAAqB,EAAA;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACpB,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;AAE1D,YAAA,IAAI,CAAC,kBAAkB;AACrB,gBAAA,OAAO,CAAC;YAEV,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;AAChD,gBAAA,OAAO,CAAC;YAEV,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;gBAChD,OAAO,CAAC,CAAC;AAEX,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;AAKG;IACK,mBAAmB,CAAC,OAAe,EAAE,MAAkB,EAAA;QAC7D,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,EAAE;QAEpG,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;AACzC,YAAA,CAAA,SAAA,EAAY,MAAM,CAAC,EAAE,CAAA,QAAA,EAAW,MAAM,CAAC,IAAI,CAAA,SAAA,EAAY,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,UAAU,CAAA,EAAA,CAAI;AAChG,YAAA,MAAM,CAAC,IAAI;YACX,CAAA,MAAA,CAAQ;AACR,YAAA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;IACrC;AAEA;;;;;AAKG;IACK,mBAAmB,CAAC,OAAe,EAAE,MAAkB,EAAA;QAC7D,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,EAAE;QACpG,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW;QAElD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;YACzC,CAAA,WAAA,EAAc,MAAM,CAAC,IAAI,CAAA,SAAA,EAAY,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,UAAU,CAAA,EAAA,CAAI;AAC9E,YAAA,MAAM,CAAC,IAAI;YACX,CAAA,MAAA,CAAQ;AACR,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC1B;AAEA;;;;;AAKG;IACK,kBAAkB,CAAC,OAAe,EAAE,MAAkB,EAAA;QAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,WAAW;QAClD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;AACzC,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC3B,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC1B;AAEA;;;;AAIG;AACK,IAAA,cAAc,CAAC,MAAkB,EAAA;AACvC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5D,QAAA,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI;QACpC,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QACjE,OAAO,UAAU,CAAC,SAAS;IAC7B;AAEA;;AAEG;IAEK,qBAAqB,GAAA;AAC3B,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;QAE/D,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAgB;YACvE,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;gBAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC;gBAChE,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC;gBACnE,IAAI,UAAU,EAAE;AAAE,oBAAA,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAAE;gBACjG,IAAI,YAAY,EAAE;AAAE,oBAAA,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAAE;YAChG;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,kCAAkC,CAAC,MAAmB,EAAE,OAAoB,EAAE,KAAa,EAAA;QACjG,MAAM,iBAAiB,GAAG,MAAK;YAC7B,MAAM,kBAAkB,GAAG,KAAK;AAChC,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC;AACxC,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAE9B,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,MAAmB,EAAE,KAAa,KAAI;gBAC3G,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAgB;AAEvE,gBAAA,IAAI,OAAO,IAAI,KAAK,KAAK,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;AAC/E,oBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;gBAChC;AAEA,gBAAA,IAAI,KAAK,KAAK,kBAAkB,IAAI,IAAI,CAAC,eAAe;AACtD,oBAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AACtC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;QAED,MAAM,uBAAuB,GAAG,MAAK;AACnC,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AAEjC,YAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,MAAK;gBACrC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;AACjE,oBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAEhC,gBAAA,IAAI,CAAC,eAAe,GAAG,SAAS;YAClC,CAAC,EAAE,GAAG,CAAC;AACT,QAAA,CAAC;QAED,MAAM,wBAAwB,GAAG,MAC/B,IAAI,CAAC,qBAAqB,GAAG,KAAK;QAEpC,MAAM,wBAAwB,GAAG,MAAK;AACpC,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;AACjC,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AAChC,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,CAAC;AACtD,QAAA,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,uBAAuB,CAAC;AAC5D,QAAA,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,wBAAwB,CAAC;AAC9D,QAAA,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,wBAAwB,CAAC;AAE9D,QAAA,MAAM,CAAC,oBAAoB,CAAC,GAAG,iBAAiB;AAChD,QAAA,MAAM,CAAC,oBAAoB,CAAC,GAAG,uBAAuB;AACtD,QAAA,OAAO,CAAC,oBAAoB,CAAC,GAAG,wBAAwB;AACxD,QAAA,OAAO,CAAC,oBAAoB,CAAC,GAAG,wBAAwB;IAC1D;IAEQ,yCAAyC,GAAA;AAC/C,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;QAE/D,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAgB;AAEvE,YAAA,IAAI,MAAM,CAAC,oBAAoB,CAAC,EAAE;gBAChC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACpE,gBAAA,OAAO,MAAM,CAAC,oBAAoB,CAAC;YACrC;AAEA,YAAA,IAAI,MAAM,CAAC,oBAAoB,CAAC,EAAE;gBAChC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACpE,gBAAA,OAAO,MAAM,CAAC,oBAAoB,CAAC;YACrC;AAEA,YAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE;gBACjC,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACtE,gBAAA,OAAO,OAAO,CAAC,oBAAoB,CAAC;YACtC;AAEA,YAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE;gBACjC,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACtE,gBAAA,OAAO,OAAO,CAAC,oBAAoB,CAAC;YACtC;AACF,QAAA,CAAC,CAAC;IACJ;;;AAMQ,IAAA,4CAA4C,CAAC,SAAoB,EAAA;QACvE,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,MAAM,yBAAyB,GAAG,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC;AAClI,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC;AAErG,QAAA,IAAI,CAAC,2BAA2B;AAC9B,YAAA,OAAO,KAAK;AAEd,QAAA,MAAM,yCAAyC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,2BAAmC,CAAC;QAExI,OAAO,yCAAyC,KAAK,yBAAyB;IAChF;AAEQ,IAAA,cAAc,CAAC,KAAoB,EAAE,SAAoB,EAAE,aAAsB,EAAE,cAAuB,EAAA;QAChH,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,0CAA0C,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC;YAChF;QACF;QAEA,IAAI,CAAC,0CAA0C,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,CAAC;IAClF;AAEQ,IAAA,0CAA0C,CAAC,SAAoB,EAAE,KAAoB,EAAE,aAAsB,EAAA;QACnH,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACrC,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc;AACxC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW;AAEhC,QAAA,IAAI,IAAI,GAAI,WAA2B,CAAC,WAAqB;QAE7D,IAAI,aAAa,IAAI,CAAC,MAAM;YAC1B;QAEF,IAAI,GAAG,aAAa;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;;AAE7C,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAExD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAM,WAAW,CAAC,UAA0B,CAAC,EAAE,CAAC;AAEhH,QAAA,IAAI,CAAC,kBAAkB;YACrB;QAEF,IAAI,GAAG,kBAAkB,CAAC,IAAI,GAAI,WAA2B,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;AAExH,QAAA,MAAM,iBAAiB,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAAC;AAExE,QAAA,IAAI,IAAI;YACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1C;AAEQ,IAAA,0CAA0C,CAAC,SAAoB,EAAE,KAAoB,EAAE,aAAsB,EAAA;QACnH,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACrC,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,cAAc,EAAE,eAAe,CAAC;AAErG,QAAA,IAAI,aAAa;YACf;QAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,EAAE,KAAM,2BAA2C,EAAE,EAAE,CAAC;AACvH,QAAA,IAAI,CAAC,kBAAkB;YACrB;QAEF,MAAM,WAAW,GAAG,2BAA0C;QAE9D,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,WAAW;AAC7D,QAAA,kBAAkB,CAAC,IAAI,GAAG,WAAW,CAAC,WAAW;QAEjD,MAAM,yBAAyB,GAAG,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,2BAA2B,EAAE,UAAkB,EAAE,yBAAyB,CAAC;QAE3G,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACxC;AAEA;;;;AAIG;IACK,iBAAiB,CAAC,SAAoB,EAAE,IAAY,EAAA;QAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACzC,QAAA,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;AAE3B,QAAA,IAAI,SAAS,CAAC,UAAU,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;QACpE;aACK;AACH,YAAA,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;AAC9B,YAAA,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;YAC5B,SAAS,CAAC,eAAe,EAAE;AAC3B,YAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC3B;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC;AAE3E,QAAA,MAAM,UAAU,GAAwB;YACtC,EAAE,EAAE,SAAS,CAAC,EAAE;AAChB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;AACrB,YAAA,WAAW,EAAE;SACd;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;IAC/B;AAEA;;;;AAIG;AACK,IAAA,YAAY,CAAC,IAAY,EAAA;QAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC;AACnD,QAAA,GAAG,CAAC,WAAW,GAAG,IAAI;AACtB,QAAA,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;QAC1B,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AACnD,QAAA,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;AAEpC,QAAA,OAAO,GAAG;IACZ;AAEA;;;;;AAKG;AACK,IAAA,eAAe,CAAC,SAAoB,EAAE,IAAU,EAAE,MAAc,EAAA;AACtE,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE;AACvC,QAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;AAC/B,QAAA,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QAC7B,SAAS,CAAC,eAAe,EAAE;AAC3B,QAAA,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC9B;;;AAMA;;;AAGG;AACK,IAAA,cAAc,CAAC,SAAoB,EAAA;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE;QAEpD,IAAI,WAAW,EAAE;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;YAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAErC,YAAA,IAAI;AAAE,gBAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAAE;YACtC,OAAO,KAAK,EAAE;gBAAE;YAAQ;AAExB,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;AACrE,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC;YAEjF,IAAI,CAAC,YAAY,CAAC;AAChB,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,IAAI,EAAE,WAAW;gBACjB,YAAY,EAAE,IAAI,CAAC,WAAW;gBAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,WAAW;AACX,gBAAA,SAAS,EAAE,WAAW,GAAG,WAAW,EAAE,MAAM,GAAG;AAChD,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,YAAY,CAAC,cAA0B,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,KAAK,cAAc,CAAC;AAEzE,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAAE;QAEnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA;;;;AAIG;AACK,IAAA,YAAY,CAAC,IAAY,EAAA;QAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,QAAA,GAAG,CAAC,WAAW,GAAG,IAAI;AACtB,QAAA,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;QAC1B,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;AACnD,QAAA,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;AAEpC,QAAA,OAAO,GAAG;IACZ;;;AAMA;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;QACvC,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE;YACzC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE;AAEjF,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE;AAE1C,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;AACrF,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;aAAO;YACL,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAEA;;;;;AAKG;IACK,2BAA2B,CAAC,IAAa,EAAE,UAAmB,EAAA;AACpE,QAAA,OAAO;cACH,EAAE,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,GAAG;cACjF,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE;IAClF;AAEA;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;QAEvC,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE;YACzC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAErC,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,EAAE;AACzC,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;YAC7C,IAAI,OAAO,EAAE;AAEX,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC;AAC3F,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC;gBAEvF,IAAI,CAAC,YAAY,CAAC;AAChB,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,WAAW,EAAE,OAAO;oBACpB,YAAY,EAAE,IAAI,CAAC,WAAW;oBAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;AACrB,oBAAA,WAAW,EAAE,WAAW;AACxB,oBAAA,SAAS,EAAE,SAAS;AACrB,iBAAA,CAAC;YACJ;QACF;IACF;AAEA;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;YAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,kBAAkB,CAAgB;YAC3F,IAAI,OAAO,EAAE;gBACX,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;gBAC/C,IAAI,YAAY,EAAE;AAAE,oBAAA,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;gBAAE;YACtE;YAEA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc;YAGzG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACtC,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;QACnC;aAEK,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;AACrD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;YAEzC,IAAI,CAAC,KAAK,EAAE;gBAAE;YAAQ;AACtB,YAAA,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC1B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC7F,YAAA,IAAI;AAAE,gBAAA,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAAE;YAC1C,OAAO,KAAK,EAAE;gBAAE;YAAQ;YACxB,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC;AAE5D,YAAA,IAAI,UAAU,GAAG,KAAK,CAAC,cAAc;AAErC,YAAA,IAAI,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;gBAC3C,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;YAEvD,IAAI,CAAC,YAAY,CAAC;AAChB,gBAAA,EAAE,EAAE,EAAE;AACN,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI;gBAChC,WAAW,EAAE,IAAI,CAAC,cAAc;gBAChC,YAAY,EAAE,IAAI,CAAC,WAAW;gBAC9B,SAAS,EAAE,IAAI,IAAI,EAAE;AACrB,gBAAA,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC;gBAC1E,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,GAAG;AAChH,aAAA,CAAC;YACF,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAEA;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,MAA2B,EAAE,EAAU,EAAE,aAAsB,EAAA;AACtF,QAAA,IAAI,IAAI;AACR,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,IAAI,GAAG,MAAM;QACf;aACK;AACH,YAAA,IAAI,GAAG,MAAM,CAAC,WAAW;AACzB,YAAA,aAAa,GAAG,MAAM,CAAC,IAAI;QAC7B;QAEA,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC1C,QAAA,GAAG,CAAC,SAAS,GAAG,gBAAgB;AAChC,QAAA,GAAG,CAAC,EAAE,GAAG,EAAE;AACV,QAAA,GAAW,CAAC,SAAS,GAAG,aAAa;QACtC,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC;AAE5C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa;AAE9C,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE;AAChC,YAAA,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,uBAAuB;AAEvD,QAAA,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;AAChC,QAAA,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;AAEnC,QAAA,OAAO,GAAG;IACZ;AAEA;;;;AAIG;IACK,sBAAsB,CAAC,UAAuB,EAAE,OAAe,EAAA;QACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C,QAAA,OAAO,CAAC,SAAS,GAAG,wCAAwC;QAC5D,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QAC/C,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;AACnE,QAAA,WAAW,CAAC,WAAW,GAAG,OAAO;AACjC,QAAA,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC;QAChC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QACtD,gBAAgB,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC;AACpF,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAChD,YAAA,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM;AACrC,YAAA,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS;AACnC,YAAA,UAAU,CAAC,GAAG,GAAG,qCAAqC;AACtD,YAAA,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACjF,YAAA,gBAAgB,CAAC,WAAW,CAAC,UAAU,CAAC;YAExC,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAClD,YAAA,YAAY,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM;AACvC,YAAA,YAAY,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACnC,YAAA,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS;AACrC,YAAA,YAAY,CAAC,GAAG,GAAG,sCAAsC;AACzD,YAAA,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5E,YAAA,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAAC;QAC5C;AAEA,QAAA,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC;AACrC,QAAA,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,kCAAkC,EAAE;IAC3C;IAEA,kCAAkC,GAAA;QAChC,IAAI,CAAC,yCAAyC,EAAE;AAChD,QAAA,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;QAE/D,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAgB;YACvE,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;AACjE,QAAA,CAAC,CAAC;IACJ;AACA;;;;AAIG;IACH,WAAW,CAAC,UAAuB,EAAE,OAAoB,EAAA;AACvD,QAAA,IAAI,CAAC,qBAAqB,GAAG,UAAU;QACvC,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE;AACpE,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE;QAC/C,IAAI,CAAC,kBAAkB,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE;AACjG,QAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;;;;;IAMhC;AAEA;;;AAGG;AACH,IAAA,aAAa,CAAC,UAAuB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa;QACvC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAE,UAAkB,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC;QAC/F;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC;AAE3E,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAAE;QAEnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAEtC,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,kCAAkC,EAAE;IAC3C;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,cAAc,EAAE;IACvB;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK;AACvG,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;IAC9B;;;IAMQ,UAAU,GAAA;QAChB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;AAClD,QAAA,OAAO,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,MAAM,EAAE;IACjC;AAEA;;;;;;AAMG;IAEK,iBAAiB,CAAC,IAAU,EAAE,IAAU,EAAA;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE;AACnE,YAAA,UAAU,EAAE,CAAC,IAAI,KAAI;;gBAEnB,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,KAAK,GAAG,EAAE;oBACvC,OAAO,UAAU,CAAC,aAAa;gBACjC;gBACA,OAAO,UAAU,CAAC,aAAa;YACjC;AACD,SAAA,CAAC;QAEF,IAAI,aAAa,GAAG,CAAC;AACrB,QAAA,IAAI,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE;QACnC,OAAO,WAAW,EAAE;AAElB,YAAA,MAAM,YAAY,GAAI,WAAW,CAAC,UAA0B,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,eAAe;AACtG,YAAA,KAAK,WAAW,CAAC,UAAU,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,GAAG;AAAE,gBAAA,OAAO,aAAa;YAAE;AACvF,YAAA,IAAI,CAAC,YAAY;gBACf,aAAa,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;AACvD,YAAA,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE;QACjC;AAEA,QAAA,OAAO,aAAa;IACtB;AAEA;;;;;AAKG;IACK,WAAW,CAAC,IAAU,EAAE,OAAe,EAAA;QAC7C,OAAO,IAAI,EAAE;AAEX,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,IAAK,IAAoB,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;AAClG,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAI,GAAG,IAAI,CAAC,UAAW;AACvB,YAAA,IAAK,IAAoB,CAAC,EAAE,KAAK,wBAAwB;AACvD,gBAAA,OAAO,KAAK;QAChB;AACA,QAAA,OAAO,KAAK;IACd;IAEQ,qBAAqB,CAAC,IAAU,EAAE,OAAe,EAAA;AACvD,QAAA,IAAI,WAAW,GAAI,IAAoB,CAAC,kBAAkB;AAE1D,QAAA,IAAI,CAAC,WAAW;AACd,YAAA,OAAO,IAAI;AAEb,QAAA,OAAO,WAAW,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,IAAK,WAA2B,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO;AAChH,YAAA,WAA2B,GAAG,IAAI;IACvC;AAEA;;;AAGG;AACK,IAAA,YAAY,CAAC,MAA2B,EAAA;AAC9C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;YAClC,IAAI,EAAE,MAAM,CAAC,IAAK;AAClB,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;YACvB,WAAW,EAAE,MAAM,CAAC,WAAW;AAC/B,YAAA,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW;AACrD,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE;AACzC,YAAA,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,CAAC;YACpC,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B,SAAA,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;QAC1D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACxC;AAEA;;AAEG;IACH,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB;IACtD;;AAGA,IAAA,mBAAmB,CAAC,OAAoB,EAAA;AACtC,QAAA,OAAO,uBAAuB,CAAC,OAAO,CAAC;IACzC;AAEA,IAAA,IAAI,wBAAwB,GAAA;QAC1B,OAAO,WAAW,CAAC,WAAW;IAChC;AAEA,IAAA,IAAI,wBAAwB,GAAA;QAC1B,OAAO,WAAW,CAAC,WAAW;IAChC;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,yCAAyC,EAAE;IAClD;wGA57BW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhD,IAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,6bCtBtC,+qHA2EM,EAAA,MAAA,EAAA,CAAA,oqEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,EAAAA,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,EAAAsB,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,4BAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjD,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAkD,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDrDO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,+qHAAA,EAAA,MAAA,EAAA,CAAA,oqEAAA,CAAA,EAAA;;sBAIpC;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,SAAS;uBAAC,QAAQ;;;ME3BR,4BAA4B,CAAA;AAEvC,IAAA,SAAS,CAAC,WAAyB,EAAA;QACjC,OAAO,WAAW,EAAE,GAAG,CAAC,UAAU,KACjC;YACC,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,WAAW,EAAE,UAAU,CAAC,UAAU;YAClC,SAAS,EAAE,UAAU,CAAC,QAAQ;YAC9B,WAAW,EAAE,UAAU,CAAC;AACzB,SAAA,CAAC;AAEC,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1F;wGAhBW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAA5B,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCQY,+BAA+B,CAAA;AAkBtB,IAAA,4BAAA;IAhBX,WAAW,GAAY,KAAK;AAC5B,IAAA,QAAQ;AACR,IAAA,YAAY;AACZ,IAAA,kBAAkB;AAClB,IAAA,iBAAiB;AACjB,IAAA,cAAc;AACd,IAAA,kBAAkB;AAEjB,IAAA,2BAA2B,GAAG,IAAI,YAAY,EAAU;AACxD,IAAA,WAAW,GAAG,IAAI,YAAY,EAAgB;AAExD,IAAA,4BAA4B,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;AAClD,IAAA,KAAK;AAEL,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AAErC,IAAA,WAAA,CAAoB,4BAA0D,EAAA;QAA1D,IAAA,CAAA,4BAA4B,GAA5B,4BAA4B;IAAkC;AAElF,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,YAAY,EAAE;AACzC,YAAA,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAExG,YAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB;AAChD,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC;QACjG;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;AAChF,aAAA,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3E;AAEA,IAAA,YAAY,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;wGAzCW,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,0cCf5C,+/BAcqB,EAAA,MAAA,EAAA,CAAA,2PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApD,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,EAAAsB,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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+B,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,4BAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCR,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,2BAA2B,EAAA,QAAA,EAAA,+/BAAA,EAAA,MAAA,EAAA,CAAA,2PAAA,CAAA,EAAA;;sBAMpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;;MEpBU,uBAAuB,CAAA;AAKd,IAAA,EAAA;AAAqC,IAAA,QAAA;IAHhD,aAAa,GAA8B,EAAE;IAC7B,cAAc,GAA8B,EAAE;IAEvE,WAAA,CAAoB,EAA2B,EAAU,QAAmB,EAAA;QAAxD,IAAA,CAAA,EAAE,GAAF,EAAE;QAAmC,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAe;IAEhF,WAAW,GAAA;AACT,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE;AACrC,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,EAAE,IAAI,EAAE;QAEhD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;YACrE;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;AACpC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;AAE3C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;YACrE;QACF;AAEA,QAAA,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM;AAEhC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,CAAA,EAAG,MAAM,WAAW,KAAK,CAAA,SAAA,EAAY,KAAK,CAAA,CAAE;AACzD,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC;IACrE;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO;AACJ,aAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,aAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,aAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,aAAA,OAAO,CAAC,IAAI,EAAE,QAAQ;AACtB,aAAA,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;IAC3B;wGA1CW,uBAAuB,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;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAGE;;sBACA,KAAK;uBAAC,gBAAgB;;;MCEZ,wBAAwB,CAAA;AAEhB,IAAA,SAAA;AAAmF,IAAA,IAAA;AACzD,IAAA,iBAAA;AAD7C,IAAA,WAAA,CAAmB,SAAiD,EAAkC,IAAkB,EAC3E,iBAAoC,EAAA;QAD9D,IAAA,CAAA,SAAS,GAAT,SAAS;QAA0E,IAAA,CAAA,IAAI,GAAJ,IAAI;QAC7D,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;IAErF,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IAC5B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;IAC7B;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,gBAAgB;IAC9D;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS;IACpC;wGAnBW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvD,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAE2C,eAAe,EAAA,EAAA,EAAA,KAAA,EACnF,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAHxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,iFCXrC,28BAeM,EAAA,MAAA,EAAA,CAAA,iSAAA,EAAA,weAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,EAAAsB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDJO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,sBAAsB,EAAA,QAAA,EAAA,28BAAA,EAAA,MAAA,EAAA,CAAA,iSAAA,EAAA,weAAA,CAAA,EAAA;;0BAMuC,MAAM;2BAAC,eAAe;;0BAC1F,MAAM;2BAAC,yBAAyB;;;MEJxB,+BAA+B,CAAA;AAItB,IAAA,SAAA;AAAmE,IAAA,IAAA;AAFvF,IAAA,QAAQ;IAER,WAAA,CAAoB,SAAiC,EAAkC,IAAI,EAAA;QAAvE,IAAA,CAAA,SAAS,GAAT,SAAS;QAA0D,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAI;IAE/F,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI;IAC3B;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrC;AAZW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,gDAIqB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAJnE,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,sFCV5C,0GACqB,EAAA,MAAA,EAAA,CAAA,oHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDSR,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,2BAA2B,EAAA,QAAA,EAAA,0GAAA,EAAA,MAAA,EAAA,CAAA,oHAAA,CAAA,EAAA;;0BAQmB,MAAM;2BAAC,eAAe;;;MEUnE,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAdtB,wBAAwB;AACxB,YAAA,+BAA+B,aAG/B,YAAY;YACZuD,aAAW;YACXC,aAAW;AACX,YAAAC,iBAAe,aAGf,wBAAwB;YACxB,+BAA+B,CAAA,EAAA,CAAA;AAGtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAVtB,YAAY;YACZF,aAAW;YACXC,aAAW;YACXC,iBAAe,CAAA,EAAA,CAAA;;4FAON,aAAa,EAAA,UAAA,EAAA,CAAA;kBAhBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,wBAAwB;wBACxB,+BAA+B;AAClC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZF,aAAW;wBACXC,aAAW;wBACXC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,wBAAwB;wBACxB,+BAA+B;AAChC;AACF,iBAAA;;;MCfY,sBAAsB,CAAA;IAEjC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAE3B,IAAA,WAAA,GAAA,EAAgB;AAEhB,IAAA,QAAQ,KAAW;wGANR,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,2ECRnC,iGAEM,EAAA,MAAA,EAAA,CAAA,2wCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA,EAAA,CAAA;;4FDMO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,gBAAgB,EAAA,QAAA,EAAA,iGAAA,EAAA,MAAA,EAAA,CAAA,2wCAAA,CAAA,EAAA;;;MEGf,oBAAoB,CAAA;AAE/B,IAAA,SAAS,CAAC,KAAyB,EAAE,GAAG,IAAe,EAAA;AACrD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;AAErB,QAAA,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;AAElB,QAAA,IAAI,KAAK,EAAE,MAAM,GAAG,CAAC;AACnB,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;AAEvD,QAAA,OAAO,KAAK;IACd;wGAXW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;ACHD,MAAM,SAAS,GAAW,MAAM;MAQnB,yBAAyB,CAAA;AAE3B,IAAA,KAAK;AACL,IAAA,SAAS;AACR,IAAA,WAAW,GAAG,IAAI,YAAY,EAAsB;AAE9D,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW;AACpE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;IACxC;IAEA,QAAQ,CAAC,SAAiB,EAAE,UAAmB,EAAA;QAC7C,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YACvC;QAEF,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC;AAChE,QAAA,MAAM,oBAAoB,GAAG,SAAS,GAAG,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;QAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAEQ,IAAA,eAAe,CAAC,SAA2B,EAAA;AACjD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IACjH;AAEQ,IAAA,iBAAiB,CAAC,WAA6B,EAAA;QACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC;QAEjF,IAAI,gBAAgB,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9C,YAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAC1C;AAEQ,IAAA,OAAO,CAAC,IAAsB,EAAA;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACvB;wGAnCW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,gMCXtC,2YAOM,EAAA,MAAA,EAAA,CAAA,wIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,MAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA;;4FDIO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,QAAA,EAAA,2YAAA,EAAA,MAAA,EAAA,CAAA,wIAAA,CAAA,EAAA;;sBAM5B;;sBACA;;sBACA;;;AEbH,MAAM,QAAQ,GAAW,KAAK;MAQjB,kBAAkB,CAAA;IAEpB,KAAK,GAAW,EAAE;IAClB,oBAAoB,GAAY,IAAI;IACpC,QAAQ,GAAG,KAAK;IAChB,UAAU,GAAY,KAAK;IAC3B,IAAI,GAAwC,SAAS;AAEpD,IAAA,MAAM,GAAG,IAAI,YAAY,EAAW;AACpC,IAAA,eAAe,GAAG,IAAI,YAAY,EAAW;IAEvD,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;IAEA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,UAAU;AACjB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;QAEhC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC1C;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,IAAI,CAAC,IAAI,CAAC,mBAAmB;AAC3B,YAAA,OAAO,IAAI;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QACxC,MAAM,eAAe,GAAG,EAAE;QAE1B,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YACjC,IAAI,IAAI,KAAK,QAAQ;AACnB,gBAAA,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,CAAC,CAAC;QAEF,IAAI,IAAI,GAAW,EAAE;QACrB,IAAI,SAAS,GAAW,CAAC;AAEzB,QAAA,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAChC,YAAA,IAAI,IAAI,CAAA,MAAA,EAAS,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AACtE,YAAA,IAAI,IAAI,CAAA,IAAA,EAAO,UAAU,CAAC,KAAK,CAAC,OAAO;AACvC,YAAA,SAAS,GAAG,KAAK,GAAG,CAAC;AACvB,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAA,MAAA,EAAS,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS;AAE/D,QAAA,OAAO,IAAI;IACb;AAGA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACvC;wGAnDW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,kRCV/B,kgBAUM,EAAA,MAAA,EAAA,CAAA,6rBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApC,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDAO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,YAAY,EAAA,QAAA,EAAA,kgBAAA,EAAA,MAAA,EAAA,CAAA,6rBAAA,CAAA,EAAA;;sBAMrB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;;AEjBH,MAAM,oBAAoB,GAAW,oBAAoB;MAQ5C,iCAAiC,CAAA;IAEnC,UAAU,GAAW,EAAE;IACvB,IAAI,GAAY,KAAK;IACrB,IAAI,GAAgC,cAAc;IAClD,aAAa,GAAG,oBAAoB;IACpC,SAAS,GAAG,OAAO;IACnB,cAAc,GAAY,KAAK;AAC/B,IAAA,gBAAgB;IAChB,yCAAyC,GAAY,KAAK;AAEnE,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,YAAY,CAAC;YACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,UAAU;QAElE,IAAI,OAAO,CAAC,eAAe,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,oBAAoB;IACnE;IAEA,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI;YACd,CAAA,qFAAA,EAAwF,IAAI,CAAC,aAAa,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,CAAA,iBAAA,CAAmB;AAChJ,YAAA,CAAA,8BAAA,EAAiC,IAAI,CAAC,SAAS,CAAA,4CAAA,EAA+C,IAAI,CAAC,aAAa,CAAA,CAAA,EAAI,IAAI,CAAC,UAAU,CAAA,eAAA,CAAiB;IACxJ;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,IAAG,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG;IACpD;wGA3BW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,uYCV9C,6YAIM,EAAA,MAAA,EAAA,CAAA,ijBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDMO,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,6BAA6B,EAAA,QAAA,EAAA,6YAAA,EAAA,MAAA,EAAA,CAAA,ijBAAA,CAAA,EAAA;;sBAMtC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MERU,wBAAwB,CAAA;AAiBf,IAAA,UAAA;AAAgC,IAAA,WAAA;AAAwC,IAAA,iBAAA;IAfnF,WAAW,GAAW,OAAO;IAC7B,UAAU,GAAW,QAAQ;AAE7B,IAAA,OAAO;IACP,SAAS,GAAY,KAAK;AAC1B,IAAA,YAAY,GAA2B,IAAI,IAAI,EAAE;AAEhD,IAAA,UAAU,GAAG,IAAI,YAAY,EAA0B;AAC1C,IAAA,QAAQ;AAE/B,IAAA,WAAW;AACX,IAAA,SAAS;AACT,IAAA,OAAO;AACP,IAAA,0BAA0B;AAE1B,IAAA,WAAA,CAAoB,UAAsB,EAAU,WAA8B,EAAU,iBAAoC,EAAA;QAA5G,IAAA,CAAA,UAAU,GAAV,UAAU;QAAsB,IAAA,CAAA,WAAW,GAAX,WAAW;QAA6B,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAC3G,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;IAClD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,IAAI,CAAC,WAAW;AAClB,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;AAElC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,YAAY;YACvC,IAAI,CAAC,wBAAwB,EAAE;IACnC;AAEQ,IAAA,kBAAkB,CAAC,OAAsB,EAAA;AAC/C,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,YAAY;AACtC,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,8BAA8B,EAAE,IAAI,CAAC,WAAW,CAAC;AAEtF,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY;AACrC,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,6BAA6B,EAAE,IAAI,CAAC,UAAU,CAAC;IACtF;IAEQ,wBAAwB,GAAA;QAC9B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,YAAY,IAAI;YACpD,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY;AAE9C,QAAA,IAAI,IAAI,CAAC,YAAY,YAAY,SAAS,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;YAEzC,IAAI,IAAI,CAAC,QAAQ;gBACf,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS;QAC7C;IACF;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,6BAA6B,EAAE;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;IACxC;IACQ,6BAA6B,GAAA;AACnC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,uBAAuB,CAAC,EAAE,YAAY;AAC5F,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,+BAA+B,CAAC,EAAE,YAAY;;;IAIlG;AAEA,IAAA,qBAAqB,CAAC,IAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC/B;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5B;AAEQ,IAAA,oBAAoB,CAAC,IAAU,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AAEQ,IAAA,eAAe,CAAC,IAAU,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAExB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;AAE/D,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO;YAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAC3C;AAEQ,IAAA,aAAa,CAAC,IAAiB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI;YACP;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB;QACF;QAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAC5E,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB;QACF;QAAC;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;IACrB;AAEA,IAAA,cAAc,GAAG,CAAC,IAAU,KAAa;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO;AACf,YAAA,OAAO,IAAI;AAEb,QAAA,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO;AAC7B,IAAA,CAAC;wGA5GU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,4XCXrC,4PAIM,EAAA,MAAA,EAAA,CAAA,y9EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDOO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,QAAA,EAAA,4PAAA,EAAA,MAAA,EAAA,CAAA,y9EAAA,CAAA,EAAA;;sBAM5B;;sBACA;;sBAEA;;sBACA;;sBACA;;sBAEA;;sBACA,SAAS;uBAAC,UAAU;;;MEZV,0BAA0B,CAAA;AAE5B,IAAA,MAAM;IACN,QAAQ,GAAW,EAAE;IACrB,QAAQ,GAAW,cAAc;AAEhC,IAAA,YAAY,GAAG,IAAI,YAAY,EAAU;AAExB,IAAA,mBAAmB;IAE9C,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,QAAQ;AAC3C,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;IAC9E;AAEA,IAAA,eAAe,CAAC,MAAc,EAAA;QAC5B,IAAI,IAAI,CAAC,QAAQ;YACf;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;IAChC;AAEA,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,WAAW,CAAC,YAAY;IACjC;wGAxBW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,0TCTvC,sPAGI,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDMS,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,qBAAqB,EAAA,QAAA,EAAA,sPAAA,EAAA,MAAA,EAAA,CAAA,qLAAA,CAAA,EAAA;;sBAM9B;;sBACA;;sBACA;;sBAEA;;sBAEA,SAAS;uBAAC,cAAc;;;METd,4BAA4B,CAAA;wGAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,kFCRzC,sHAKM,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA,CAAA;;4FDGO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,sHAAA,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA;;;MEItB,uBAAuB,CAAA;IAEzB,QAAQ,GAAW,EAAE;IACrB,SAAS,GAAY,KAAK;wGAHxB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,uICRpC,+OAKM,EAAA,MAAA,EAAA,CAAA,6JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDGO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,kBAAkB,EAAA,QAAA,EAAA,+OAAA,EAAA,MAAA,EAAA,CAAA,6JAAA,CAAA,EAAA;;sBAM3B;;sBACA;;;MEHU,2BAA2B,CAAA;wGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,oFCRxC,2GAEM,EAAA,MAAA,EAAA,CAAA,+aAAA,CAAA,EAAA,CAAA;;4FDMO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,yBAAyB,EAAA,QAAA,EAAA,2GAAA,EAAA,MAAA,EAAA,CAAA,+aAAA,CAAA,EAAA;;;MEGxB,mCAAmC,CAAA;AAUpC,IAAA,EAAA;AACA,IAAA,QAAA;AACA,IAAA,SAAA;IAVV,IAA4C,eAAe,CAAC,KAAa,EAAA;AACvE,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEQ,IAAA,WAAW;AAEnB,IAAA,WAAA,CACU,EAAc,EACd,QAAmB,EACnB,SAAoB,EAAA;QAFpB,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,SAAS,GAAT,SAAS;IACf;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC;QACxF;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;QACzE;IACF;wGAzBW,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnC,mCAAmC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,+BAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAJ/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAGE,KAAK;uBAAC,+BAA+B;;;MCD3B,kBAAkB,CAAA;IAEpB,YAAY,GAA8B,aAAa;IACvD,aAAa,GAAsC,cAAc;IACjE,QAAQ,GAAW,0BAA0B;AAEtD,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,aAAa,GAAG,yBAAyB,GAAG,qBAAqB;IAChG;wGARW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,uKCR/B,4NAGM,EAAA,MAAA,EAAA,CAAA,qVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDKO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,YAAY,EAAA,QAAA,EAAA,4NAAA,EAAA,MAAA,EAAA,CAAA,qVAAA,CAAA,EAAA;;sBAMrB;;sBACA;;sBACA;;;MEAU,yBAAyB,CAAA;AAE3B,IAAA,OAAO;AACP,IAAA,eAAe;IACf,8BAA8B,GAAY,KAAK;IAC/C,cAAc,GAAY,IAAI;AAE7B,IAAA,sBAAsB,GAAG,IAAI,YAAY,EAAoB;AAEvE,IAAA,SAAS,CAAC,MAAwB,EAAA;AAChC,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C;AAEA,IAAA,gBAAgB,CAAC,MAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM;AACT,YAAA,OAAO,KAAK;AAEd,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;IACrF;wGAlBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,sTCZtC,6SAMI,EAAA,MAAA,EAAA,CAAA,iPAAA,EAAA,i5DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA,EAAA,CAAA;;4FDMS,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,6SAAA,EAAA,MAAA,EAAA,CAAA,iPAAA,EAAA,i5DAAA,CAAA,EAAA;;sBAS7B;;sBACA;;sBACA;;sBACA;;sBAEA;;;MEVU,2CAA2C,CAAA;AAE7C,IAAA,OAAO;AACP,IAAA,eAAe;AACf,IAAA,qBAAqB;AAEpB,IAAA,sBAAsB,GAAG,IAAI,YAAY,EAAoB;AAC7D,IAAA,+BAA+B,GAAG,IAAI,YAAY,EAAyB;AAErF,IAAA,SAAS,CAAC,MAA6B,EAAA;QACrC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC7C,QAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC;IACnD;AAEA,IAAA,iBAAiB,CAAC,MAAwB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;IACrF;wGAhBW,2CAA2C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,0VCTxD,g3CAyBc,EAAA,MAAA,EAAA,CAAA,2aAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDhBD,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBANvD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wCAAwC,EAAA,QAAA,EAAA,g3CAAA,EAAA,MAAA,EAAA,CAAA,2aAAA,CAAA,EAAA;;sBAMjD;;sBACA;;sBACA;;sBAEA;;sBACA;;;AEPH,MAAM,0CAA0C,GAAQ;AACtD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,yBAAyB,CAAC;AACxD,IAAA,KAAK,EAAE,IAAI;CACZ;AAED,MAAM,oBAAoB,GAAW,sBAAsB;AAC3D,MAAM4D,cAAY,GAAW,SAAS;AACtC,MAAM,iBAAiB,GAAW,mBAAmB;MAWxC,yBAAyB,CAAA;AAGpC,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAC3B;IAES,WAAW,GAAW,UAAU;AAEhC,IAAA,OAAO;AACP,IAAA,iBAAiB;AACjB,IAAA,qBAAqB;AAErB,IAAA,oBAAoB;IACpB,QAAQ,GAAW,CAAC;IACpB,QAAQ,GAAY,KAAK;IACzB,IAAI,GAAqC,SAAS;IAClD,yBAAyB,GAAY,KAAK;IAC1C,iBAAiB,GAA4B,WAAW;IACxD,YAAY,GAAY,KAAK;AAE5B,IAAA,eAAe,GAAG,IAAI,YAAY,EAAsB;AACxD,IAAA,wBAAwB,GAAG,IAAI,YAAY,EAAyB;AAEpD,IAAA,WAAW;AACT,IAAA,aAAa;AAEzC,IAAA,eAAe;AACf,IAAA,yBAAyB;IAEzB,oBAAoB,GAAuB,EAAE;IAC7C,cAAc,GAAG,KAAK;IACtB,SAAS,GAAY,KAAK;IAC1B,iBAAiB,GAAW,EAAE;AAC9B,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;IACrC,WAAW,GAAW,EAAE;AAExB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM;YAC1H,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,YAAY;AAExE,QAAA,IAAI,OAAO,CAACA,cAAY,CAAC,IAAI,OAAO,CAACA,cAAY,CAAC,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe;YAC9F,IAAI,CAAC,eAAe,GAAG,OAAO,CAACA,cAAY,CAAC,CAAC,YAAY;AAE3D,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,YAAY,EAAE,MAAM;YAC/E,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,YAAY;IAC5E;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAGzB,EAAM,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,CAAA,aAAA,EAAgB,IAAI,CAAC,WAAW,CAAA,CAAE;IAC3E;AAEA,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,KAAK,CAAC,eAAe,EAAE;IACzB;AAEA,IAAA,iBAAiB,CAAC,IAAY,EAAA;QAC5B,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,uBAAuB,EAAE;YAC9B;QACF;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IAC/B;IAEQ,uBAAuB,GAAA;QAC7B,IAAI,IAAI,CAAC,OAAO;AACd,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO;AAChC,aAAA,IAAI,IAAI,CAAC,yBAAyB,EAAE;AACvC,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,KAAK;gBAC5E,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,OAAO,EAAE,aAAa,CAAC;AACxB,aAAA,CAAC,CAAC;QACL;IACF;AAEQ,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,KAAK;gBAC5E,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI;AAC1D,aAAA,CAAC,CAAC;QACL;;YAEE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACpG;IAEQ,eAAe,CAAC,OAA2B,EAAE,IAAY,EAAA;AAC/D,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9D;AAEA,IAAA,OAAO,CAAC,MAAwB,EAAA;QAC9B,IAAI,CAAC,cAAc,EAAE;AAErB,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK,cAAc,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AACrF,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;;AAEjC,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AAExC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACtD;AAEA,IAAA,gBAAgB,CAAC,wBAA+C,EAAA;AAC9D,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,wBAAwB,CAAC;IAC9D;AAEQ,IAAA,oBAAoB,CAAC,MAAwB,EAAA;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,cAAc,KAAK,cAAc,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE;QAExG,IAAI,KAAK,IAAI,CAAC;YACZ,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACtD;IAEA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ;YACnD,OAAO,IAAI,CAAC,oBAAoB;AAElC,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;IAC1D;IAEA,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACtH;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;IAClC;AAEA,IAAA,gBAAgB,CAAC,MAAwB,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,cAAc,KAAK,cAAc,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;IAC5F;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc;IAC5C;AAEA,IAAA,aAAa,CAAC,KAAiB,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB;QAEF,MAAM,yBAAyB,GAAY,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,IAAK,IAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAElI,QAAA,IAAI,CAAE,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,EAAE;AACrF,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAE3B,IAAI,IAAI,CAAC,WAAW;gBAClB,IAAI,CAAC,cAAc,EAAE;QACzB;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO;IACrC;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,IAAI,OAAO,GAAG,CAAA,0BAAA,EAA6B,IAAI,CAAC,iBAAiB,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAA,SAAA,CAAW;QAEzF,IAAI,IAAI,CAAC,yBAAyB;YAChC,OAAO,IAAI,QAAQ;AAErB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,IAAI,CAAC,yBAAyB,EAAE,MAAM,IAAI,sBAAsB;YAC1G,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,MAAM,IAAI,kBAAkB,GAAG,kBAAkB;AAE7H,QAAA,OAAO,OAAO;IAChB;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,iBAAiB;AACxB,YAAA,OAAO,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,qBAAqB,IAAI,qBAAqB,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QAEnH,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB;IACrE;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC;YACrF,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,YAAY,KAAI,EAAG,OAAO,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChG;AAEA,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM;IAC7B;AAEA,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,0BAA0B,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;IAChF;AAEA,IAAA,QAAQ,GAAyB,MAAK,EAAG,CAAC;AAE1C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,oBAAwC,EAAA;AACjD,QAAA,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,IAAI,EAAE;IACxD;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,UAAU,KAAK;IAEf,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;wGArNW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAHzB,CAAC,0CAA0C,CAAC,4PCzBzD,+iIA+DM,EAAA,MAAA,EAAA,CAAA,8MAAA,EAAA,i5DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2CAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,EAAA,iCAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EDrCQ,CAAChC,WAAS,CAAC,EAAA,CAAA;;4FAEZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;iCACI,KAAK,EAAA,QAAA,EACP,oBAAoB,EAAA,SAAA,EAInB,CAAC,0CAA0C,CAAC,EAAA,UAAA,EAC3C,CAACA,WAAS,CAAC,EAAA,QAAA,EAAA,+iIAAA,EAAA,MAAA,EAAA,CAAA,8MAAA,EAAA,i5DAAA,CAAA,EAAA;;sBAItB,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;;sBAKvC;;sBAEA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,eAAe;;;ME5Cf,sCAAsC,CAAA;AAExC,IAAA,KAAK;AACL,IAAA,IAAI;AACJ,IAAA,SAAS;AAER,IAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AAE1C,IAAA,WAAW;AACX,IAAA,QAAQ;AAER,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,WAAW,CAAC;YACtB,IAAI,CAAC,YAAY,EAAE;IACvB;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;IAEA,YAAY,GAAA;AACV,QAAA,QAAQ,IAAI,CAAC,SAAS;YACpB,KAAK,aAAa,CAAC,OAAO;gBACxB;YACF,KAAK,aAAa,CAAC,QAAQ;AACzB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB;YACF,KAAK,aAAa,CAAC,WAAW;AAC5B,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;gBACvB;AACF,YAAA;gBACE;;IAEN;wGAjCW,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sCAAsC,8NCTnD,6IAEM,EAAA,MAAA,EAAA,CAAA,uRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDOO,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBANlD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mCAAmC,EAAA,QAAA,EAAA,6IAAA,EAAA,MAAA,EAAA,CAAA,uRAAA,CAAA,EAAA;;sBAM5C;;sBACA;;sBACA;;sBAEA;;;MEPU,6BAA6B,CAAA;IAE/B,SAAS,GAAW,4BAA4B;IAChD,cAAc,GAAW,4CAA4C;IACrE,UAAU,GAAuB,QAAQ;IACzC,QAAQ,GAAoB,OAAO;wGALjC,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,0MCR1C,+WAOM,EAAA,MAAA,EAAA,CAAA,qPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCO,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,yBAAyB,EAAA,QAAA,EAAA,+WAAA,EAAA,MAAA,EAAA,CAAA,qPAAA,CAAA,EAAA;;sBAMlC;;sBACA;;sBACA;;sBACA;;;MEJU,uBAAuB,CAAA;AAqBd,IAAA,iBAAA;IAnBX,aAAa,GAAW,CAAC;AACzB,IAAA,eAAe;AACf,IAAA,sBAAsB;IACtB,WAAW,GAAW,CAAC;AACvB,IAAA,UAAU;IACV,UAAU,GAAY,IAAI;IAC1B,UAAU,GAAY,KAAK;AAE1B,IAAA,cAAc,GAAG,IAAI,YAAY,EAAkB;AACnD,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;AAC9C,IAAA,qBAAqB,GAAG,IAAI,YAAY,EAAE;AAE9B,IAAA,OAAO;IAE7B,YAAY,GAA2B,EAAE;IAEzC,qBAAqB,GAAW,CAAC;IACjC,mBAAmB,GAAW,CAAC,CAAC;AAEhC,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAE5D,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,sBAAsB;AAC7F,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAE1F,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY,IAAI,OAAO,CAAC,wBAAwB,CAAC,EAAE,YAAY;YACpI,IAAI,CAAC,kBAAkB,EAAE;AAE3B,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE;AACvC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAEtC,YAAA,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAG;AAC/B,gBAAA,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC;AACrB,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE;AACrC,YAAA,CAAC,CAAC;QACJ;IAEF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC;AAE9C,QAAA,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,UAAU;AACrC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IAC1B;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC;IAC1B;AAEA,IAAA,aAAa,CAAC,IAAqB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAC/B;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAc;QACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAC7C,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AAEtB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B,IAAI,CAAC,eAAe,EAAE;YACtB;QACF;QAEA,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAEQ,kBAAkB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa;IAC9C;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;QACpF,IAAI,CAAC,0BAA0B,EAAE;IACnC;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3B;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,qBAAqB;AAChD,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;IAEQ,mBAAmB,GAAA;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,wBAAwB,EAAE;QACtD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC;AAExF,QAAA,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAC/D,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AAE/E,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,6BAA6B,EAAE;AACjE,QAAA,MAAM,uBAAuB,GAAG,mBAAmB,GAAG,qBAAqB,GAAG,CAAC;QAE/E,IAAI,uBAAuB,GAAG,oBAAoB;AAChD,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,uBAAuB,CAAC;QAE1H,IAAI,uBAAuB,GAAG,oBAAoB;AAChD,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,uBAAuB,CAAC;QAE1H,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,GAAG,EAAE,mBAAmB,EAAE;IACnE;IAEQ,6BAA6B,GAAA;AACnC,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,GAAG,CAAC;QACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC;QAC/F,MAAM,cAAc,GAAG,CAAC;QACxB,MAAM,aAAa,GAAG,CAAC;QAEvB,OAAO,IAAI,CAAC,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,kBAAkB,GAAG,gBAAgB;IACpG;AAEQ,IAAA,iBAAiB,CAAC,KAAa,EAAE,GAAW,EAAE,cAAsB,EAAE,uBAA+B,EAAA;AAC3G,QAAA,MAAM,UAAU,GAAG,cAAc,GAAG,uBAAuB;AAC3D,QAAA,MAAM,iBAAiB,GAAG,KAAK,KAAK,CAAC;QACrC,MAAM,eAAe,GAAG,GAAG,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC;AAEnD,QAAA,IAAI,iBAAiB;YACnB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,GAAG,UAAU,CAAC,EAAE;AAExE,QAAA,IAAI,eAAe;AACjB,YAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE;QAExD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;AAC9C,QAAA,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW;QAE1C,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC;AACvC,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS;SACnD;IACH;AAEQ,IAAA,iBAAiB,CAAC,KAAa,EAAE,GAAW,EAAE,cAAsB,EAAE,uBAA+B,EAAA;QAC3G,IAAI,cAAc,KAAK,CAAC;AACtB,YAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE;AAE3D,QAAA,MAAM,aAAa,GAAG,uBAAuB,GAAG,cAAc;AAC9D,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK;AAChD,QAAA,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW;QAE5C,IAAI,eAAe,GAAG,aAAa;YACjC,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,aAAa,EAAE,GAAG,EAAE;QAE9C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,EAAE;IAC5C;IAEQ,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;IAEQ,WAAW,GAAA;QACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IACzC;IAEQ,0BAA0B,GAAA;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,eAAe;YAC3C;AAEF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW;AAC/D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;AAEpE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;IACvC;AAEQ,IAAA,iBAAiB,CAAC,IAAqB,EAAA;AAC7C,QAAA,OAAO,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,MAAM,KAAK,IAAc,IAAI,CAAC,IAAI,IAAc,IAAI,IAAI,CAAC,UAAU;IACnG;AAEA,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,OAAO,OAAO,KAAK,KAAK,KAAK,CAAC,MAAM;IACtC;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,WAAW,CAAC,OAAO;IAC5B;wGAtMW,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,wjBCTpC,y+BAoBM,EAAA,MAAA,EAAA,CAAA,4fAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,MAAA,EAAA,IAAA,EAAA/B,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDXO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,iBAAiB,EAAA,QAAA,EAAA,y+BAAA,EAAA,MAAA,EAAA,CAAA,4fAAA,CAAA,EAAA;;sBAM1B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,SAAS;;;MEdT,wBAAwB,CAAA;AAE1B,IAAA,YAAY;AACZ,IAAA,KAAK;AACJ,IAAA,WAAW,GAAG,IAAI,YAAY,EAAoB;AAE5D,IAAA,QAAQ,CAAC,IAAsB,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;AAEA,IAAA,aAAa,CAAC,MAAc,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,MAAM;IACzC;wGAbW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,iLCTrC,wSAQM,EAAA,MAAA,EAAA,CAAA,0HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA,EAAA,CAAA;;4FDCO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,QAAA,EAAA,wSAAA,EAAA,MAAA,EAAA,CAAA,0HAAA,CAAA,EAAA;;sBAM5B;;sBACA;;sBACA;;;AEJH,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAEvC,MAAM,oCAAoC,GAAQ;AAChD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,IAAA,KAAK,EAAE,IAAI;CACZ;AACD,MAAM,YAAY,GAAW,SAAS;MAazB,oBAAoB,CAAA;IAEtB,OAAO,GAAuB,EAAE;IAChC,SAAS,GAAW,MAAM;IAC1B,WAAW,GAAW,UAAU;AAChC,IAAA,cAAc;IACd,QAAQ,GAAY,KAAK;IACzB,yBAAyB,GAAY,KAAK;IAC1C,QAAQ,GAAW,EAAE;IACrB,cAAc,GAAY,KAAK;IAC/B,KAAK,GAAW,EAAE;IAClB,IAAI,GAAwE,SAAS;IACrF,kBAAkB,GAAY,KAAK;IACnC,cAAc,GAAY,KAAK;IAC/B,iBAAiB,GAA4B,WAAW;IACxD,iBAAiB,GAAG,UAAU;IAC9B,YAAY,GAAW,CAAC;AAEvB,IAAA,qBAAqB,GAAG,IAAI,YAAY,EAAoB;AAC5D,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;AAE9B,IAAA,WAAW;AACT,IAAA,aAAa;AAClB,IAAA,QAAQ;AAG/B,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;IAC3B;IAEA,YAAY,GAAY,KAAK;AAE7B,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ;IACjE;IAEA,eAAe,GAAuB,EAAE;IACxC,cAAc,GAAY,KAAK;AAC/B,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;IACrC,WAAW,GAAW,EAAE;AAExB,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,gCAAgC;AACnD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ;QAC/D,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM;YAC7H,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY;IAC9D;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAGkC,EAAM,EAAE;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,CAAA,aAAA,EAAgB,IAAI,CAAC,WAAW,CAAA,CAAE;IAC3E;AAEA,IAAA,eAAe,CAAC,cAAgC,EAAA;QAC9C,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC7B,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC;IACjD;AAEA,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,KAAK,CAAC,eAAe,EAAE;IACzB;AAEA,IAAA,iBAAiB,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO;AACnC,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc;YAC/B;QAEF,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE7G,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc;IAC5C;AAEA,IAAA,aAAa,CAAC,KAAiB,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,cAAc;YACtB;QAEF,MAAM,yBAAyB,GAAY,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,IAAK,IAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEnI,QAAA,IAAI,CAAE,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,yBAAyB,EAAE;AACpF,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;YAC3B,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAEA,IAAA,gBAAgB,CAAC,MAAwB,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,cAAc;AACtB,YAAA,OAAO,KAAK;QAEd,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;IAC7C;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO;IACrC;IAEA,UAAU,GAAA;AACR,QAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,cAAc;IAChF;AAGA,IAAA,QAAQ,GAA+C,MAAK,EAAG,CAAC;AAEhE,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,cAAgC,EAAA;AACzC,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;IACtC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,IAAI,OAAO,GAAG,CAAA,0BAAA,EAA6B,IAAI,CAAC,iBAAiB,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAA,SAAA,CAAW;QAEzF,IAAI,IAAI,CAAC,yBAAyB;YAChC,OAAO,IAAI,QAAQ;AAErB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,MAAM;YAC9B,OAAO,IAAI,sBAAsB;AAEnC,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,0BAA0B,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;IAChF;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,kBAAkB;IAC3B;wGAvJW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAHpB,CAAC,oCAAoC,CAAC,mVC1BnD,moGAiDM,EAAA,MAAA,EAAA,CAAA,wrBAAA,EAAA,i5DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8B,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EDtBQ,CAACjC,WAAS,CAAC,EAAA,CAAA;;4FAEZ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;iCACI,KAAK,EAAA,QAAA,EACP,cAAc,EAAA,SAAA,EAMb,CAAC,oCAAoC,CAAC,EAAA,UAAA,EACrC,CAACA,WAAS,CAAC,EAAA,QAAA,EAAA,moGAAA,EAAA,MAAA,EAAA,CAAA,wrBAAA,EAAA,i5DAAA,CAAA,EAAA;;sBAItB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,eAAe;;sBACzB,SAAS;uBAAC,UAAU;;sBAEpB,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;;sBAMvC,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;MElD9B,wBAAwB,CAAA;AAwBf,IAAA,UAAA;AAAgC,IAAA,iBAAA;IAtB3C,WAAW,GAAW,OAAO;IAC7B,UAAU,GAAW,QAAQ;IAC7B,QAAQ,GAAW,MAAM;IACzB,YAAY,GAAW,UAAU;IACjC,WAAW,GAAY,IAAI;AAE1B,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AAEvB,IAAA,WAAW;AACT,IAAA,aAAa;AACb,IAAA,aAAa;AAEzC,IAAA,KAAK,GAAa,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1F,IAAA,OAAO,GAAa,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5F,IAAA,OAAO,GAAa,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE5F,YAAY,GAAW,CAAC;IACxB,cAAc,GAAW,CAAC;IAC1B,cAAc,GAAW,CAAC;AAC1B,IAAA,WAAW;IACX,YAAY,GAAW,MAAM;IAE7B,WAAA,CAAoB,UAAsB,EAAU,iBAAoC,EAAA;QAApE,IAAA,CAAA,UAAU,GAAV,UAAU;QAAsB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;IAClD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,YAAY;AACtC,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,IAAI,CAAC,WAAW,CAAC;AAEnF,YAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY;AACrC,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,0BAA0B,EAAE,IAAI,CAAC,UAAU,CAAC;AAEjF,YAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,6BAA6B,EAAE,IAAI,CAAC,QAAQ,CAAC;gBAChF,IAAI,CAAC,qBAAqB,EAAE;YAC9B;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,YAAY,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC;QACpD;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QACzB,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;AAClG,QAAA,IAAI,CAAC,YAAY,GAAG,aAAa;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;IACrC;AAEQ,IAAA,OAAO,CAAC,YAAoB,EAAA;QAClC,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IACrG;AAEQ,IAAA,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,OAAe,EAAA;QAChE,MAAM,eAAe,GAAG,CAAA,EAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE;QACrG,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,eAAe,GAAG,eAAe,GAAG,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE;IAC3G;IAEQ,oBAAoB,CAAC,IAAY,EAAE,KAAa,EAAA;AACtD,QAAA,IAAI,MAAmB;QAEvB,QAAQ,IAAI;YACV,KAAK,QAAQ,CAAC,KAAK;AACjB,gBAAA,MAAM,GAAG,IAAI,CAAC,WAAW;AACzB,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK;gBACzB;YAEF,KAAK,QAAQ,CAAC,OAAO;AACnB,gBAAA,MAAM,GAAG,IAAI,CAAC,aAAa;AAC3B,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;gBAC3B;YAEF,KAAK,QAAQ,CAAC,OAAO;AACnB,gBAAA,MAAM,GAAG,IAAI,CAAC,aAAa;AAC3B,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;gBAC3B;;QAGJ,IAAI,MAAM,EAAE;YACV,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM;AACxE,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM;AACtF,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,YAAY,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG;AACxG,YAAA,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,yBAAyB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACvF;IACF;AAEQ,IAAA,0BAA0B,CAAC,YAAoB,EAAA;AACrD,QAAA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAErE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QACpD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QAEhD,IAAI,IAAI,CAAC,WAAW;YAClB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IACxD;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa;AAE3D,QAAA,IAAI,CAAC,mBAAmB;YACtB;QAEF,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,qBAAqB,EAAE,CAAC,MAAM;AAC7E,QAAA,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ;QAC1C,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM;AAChE,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,GAAG,gBAAgB;AAC7F,QAAA,IAAI,CAAC,YAAY,GAAG,CAAA,EAAG,gBAAgB,IAAI;AAC3C,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;IACxC;wGArIW,wBAAwB,EAAA,IAAA,EAAA,CAAA,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;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,0kBCVrC,ggDAiCM,EAAA,MAAA,EAAA,CAAA,4nCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDvBO,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,QAAA,EAAA,ggDAAA,EAAA,MAAA,EAAA,CAAA,4nCAAA,CAAA,EAAA;;sBAM5B;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,eAAe;;sBACzB,SAAS;uBAAC,eAAe;;;AElB5B,MAAM,2CAA2C,GAAQ;AACvD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,IAAA,KAAK,EAAE,IAAI;CACZ;MAUY,0BAA0B,CAAA;IAE5B,OAAO,GAAa,EAAE;IACtB,cAAc,GAAW,MAAM;IAC/B,QAAQ,GAAY,KAAK;AAExB,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AACvD,IAAA,mBAAmB;AAEnB,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,gBAAgB,CAAC;AAC3B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC;IAC9F;AAEA,IAAA,YAAY,CAAC,mBAA2B,EAAA;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;AACvD,QAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;QAE9C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AAC/C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC;IACpC;AAEA,IAAA,gBAAgB,CAAC,mBAA2B,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,mBAAmB,KAAK,mBAAmB;IACzD;AAEA,IAAA,cAAc,CAAC,YAAoB,EAAA;QACjC,OAAO,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;IACpI;AAEA,IAAA,QAAQ,GAAyB,MAAK,EAAG,CAAC;AAE1C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,cAAsB,EAAA;AAC/B,QAAA,IAAI,OAAO,cAAc,KAAK,KAAK,CAAC,MAAM,EAAE;AAC1C,YAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC;QAC5F;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;wGA/CW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAH1B,CAAC,2CAA2C,CAAC,+CCf1D,mVAOM,EAAA,MAAA,EAAA,CAAA,qmBAAA,EAAA,uyEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA,EAAA,CAAA;;4FDWO,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,qBAAqB,EAAA,SAAA,EAGpB,CAAC,2CAA2C,CAAC,EAAA,QAAA,EAAA,mVAAA,EAAA,MAAA,EAAA,CAAA,qmBAAA,EAAA,uyEAAA,CAAA,EAAA;;sBAKvD;;sBACA;;sBACA;;sBAEA;;;AEnBH,MAAM,SAAS,GAAW,YAAY;AACtC,MAAM,kBAAkB,GAAW,sBAAsB;AACzD,MAAM,gBAAgB,GAAW,gBAAgB;AACjD,MAAM,gBAAgB,GAAW,UAAU;AAE3C,MAAM,yCAAyC,GAAQ;AACrD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,IAAA,KAAK,EAAE,IAAI;CACZ;MASY,wBAAwB,CAAA;AAqBuB,IAAA,UAAA;IAnBjD,IAAI,GAA6B,SAAS;IAC1C,WAAW,GAAW,kBAAkB;IACxC,eAAe,GAAY,KAAK;IAChC,gBAAgB,GAAa,EAAE;AAC/B,IAAA,YAAY;AACZ,IAAA,eAAe;AACf,IAAA,UAAU;AAET,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AACzB,IAAA,SAAS;AAEjC,IAAA,KAAK;AACL,IAAA,UAAU;IACV,aAAa,GAA8B,sBAAsB;AACjE,IAAA,UAAU;IACV,eAAe,GAAY,IAAI;IAC/B,UAAU,GAAY,KAAK;AAC3B,IAAA,aAAa,GAAW,WAAW,CAAC,cAAc;AAElD,IAAA,WAAA,CAA0D,UAA4B,EAAA;QAA5B,IAAA,CAAA,UAAU,GAAV,UAAU;IAAsB;AAE1F,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;YAC3C,IAAI,CAAC,eAAe,EAAE;IAC1B;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;IACxD;AAEA,IAAA,iBAAiB,CAAC,KAAgB,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;IACxB;AAEA,IAAA,OAAO,CAAC,KAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAC7B,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;AACrD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI;AACpD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IAC9B;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,IAAI,CAAC,KAAK,CAAC,MAAM;YACf;AAEF,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AAEf,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAEvD,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC,gBAAgB,GAAG,IAAI,EAAE,CAAC;gBACzD;YACF;AAEA,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChD;aACK;YACH,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC,gBAAgB,GAAG,IAAI,EAAE,CAAC;gBACzD;YACF;;AAEE,gBAAA,IAAI,CAAC,UAAU,GAAI,KAAK,CAAC,CAAC,CAAS,EAAE,kBAAkB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAChF;QAEA,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC;IACnC;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AAEhC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACd,YAAA,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;AAC5B,YAAA,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;AAC9D,YAAA,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;AACrB,SAAA,CAAC;QAEV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI;IAC1C;IAEQ,iBAAiB,GAAA;QACvB,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;IACjL;AAEQ,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACvC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC;IAClF;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,KAAK;YACtC;QACF;QAEA,IAAI,kBAAkB,GAAG,KAAK;QAE9B,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;AACzD,YAAA,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE;AAClC,gBAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC;gBAC5C,kBAAkB,GAAG,IAAI;YAC3B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,kBAAkB;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,cAAc;IACnD;AAEA,IAAA,cAAc,CAAC,KAAiB,EAAA;QAC9B,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;AACvC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,cAAc;AAE/C,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;QACtB;;AAEE,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;IAC/B;IAEA,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACtB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC,WAAW;AACxD,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC/C;AAEA,IAAA,cAAc,CAAC,gBAA0B,EAAA;AACvC,QAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,MAAM;AAChD,YAAA,OAAO,sBAAsB;AAE/B,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC;AAEA,IAAA,wBAAwB,CAAC,OAAoB,EAAA;QAC3C,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC1C;AAEA,IAAA,QAAQ,GAAyB,MAAK,EAAG,CAAC;AAE1C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,EAAE;AACT,YAAA,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5D,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAClB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC/B;IACF;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,cAAc;QAE/C,IAAI,IAAI,CAAC,SAAS;YAChB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;IAC3C;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,QAAA,EAAW,IAAI,CAAC,KAAK,EAAE,MAAM,CAAA,MAAA,CAAQ;IACpG;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;IAC3D;AA1LW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAqBH,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AArBrC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAFxB,CAAC,yCAAyC,CAAC,uJCrBxD,ukFA4CqC,EAAA,MAAA,EAAA,CAAA,m9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDrBxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,mBAAmB,EAAA,SAAA,EAGlB,CAAC,yCAAyC,CAAC,EAAA,QAAA,EAAA,ukFAAA,EAAA,MAAA,EAAA,CAAA,m9BAAA,CAAA,EAAA;;0BAuBzC;;0BAAY,MAAM;2BAAC,gBAAgB;;sBAnB/C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA,SAAS;uBAAC,WAAW;;;MEtBX,4BAA4B,CAAA;IAC9B,SAAS,GAA2B,EAAE;AACtC,IAAA,WAAW;AACX,IAAA,WAAW;AAEV,IAAA,YAAY,GAAG,IAAI,YAAY,EAAY;IAErD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE;YAC5C,IAAI,CAAC,uBAAuB,EAAE;YAE9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1F;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACtE,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;QACtC;IACF;AAEA,IAAA,aAAa,CAAC,IAA0B,EAAA;QACtC,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;IAEQ,uBAAuB,GAAA;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAG;AAC7C,YAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE;gBAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;AAEzD,gBAAA,IAAI,MAAM;AAAE,oBAAA,OAAO,EAAE,GAAG,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;AAEjF,gBAAA,OAAO,EAAE,GAAG,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;YAChE;AAEA,YAAA,OAAO,QAAQ;AACjB,QAAA,CAAC,CAAC;IACJ;wGA1CW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,8OCZzC,qfAOK,EAAA,MAAA,EAAA,CAAA,kuCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAtB,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDKQ,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,qfAAA,EAAA,MAAA,EAAA,CAAA,kuCAAA,CAAA,EAAA;;sBAKhC;;sBACA;;sBACA;;sBAEA;;;MEPU,8BAA8B,CAAA;AAEhC,IAAA,WAAW;IACX,gBAAgB,GAAY,IAAI;AAE/B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAgB;AACnD,IAAA,SAAS,GAAG,IAAI,YAAY,EAAc;AAEpD,IAAA,kBAAkB;AAElB,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,YAAY;YACtC,IAAI,CAAC,qBAAqB,EAAE;IAChC;IAEQ,qBAAqB,GAAA;QAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,IAAG;AAC1D,YAAA,QAAQ,UAAU,CAAC,IAAI;AACrB,gBAAA,KAAK,UAAU;AACb,oBAAA,OAAO,YAAY;AACrB,gBAAA,KAAK,UAAU;AACb,oBAAA,OAAO,YAAY;AACrB,gBAAA,KAAK,SAAS;AACZ,oBAAA,OAAO,YAAY;AACrB,gBAAA,KAAK,aAAa;AAChB,oBAAA,OAAO,YAAY;;AAEzB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,mBAAmB,CAAC,kBAA8B,EAAA;AAChD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,IAAI,UAAU,KAAK,kBAAkB,CAAC;QAEzF,IAAI,KAAK,KAAK,CAAC,CAAC;YACd,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEA,IAAA,YAAY,CAAC,iBAA6B,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACxC;IAEA,UAAU,CAAC,KAAa,EAAE,UAAsB,EAAA;AAC9C,QAAA,OAAO,UAAU,CAAC,EAAE,IAAI,KAAK;IAC/B;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,WAAW,CAAC,CAAC;IACtB;wGAlDW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,mQCV3C,wgDA+Bc,EAAA,MAAA,EAAA,CAAA,6+CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDrBD,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,0BAA0B,EAAA,QAAA,EAAA,wgDAAA,EAAA,MAAA,EAAA,CAAA,6+CAAA,CAAA,EAAA;;sBAMnC;;sBACA;;sBAEA;;sBACA;;;MEJU,yBAAyB,CAAA;IAE3B,SAAS,GAA6D,oBAAoB;IAC1F,IAAI,GAA8B,YAAY;AAE9C,IAAA,IAAI;AACJ,IAAA,aAAa;IACb,eAAe,GAAY,KAAK;AAE/B,IAAA,WAAW,GAAG,IAAI,YAAY,EAAsB;IAE9D,SAAS,GAAW,EAAE;IACtB,cAAc,GAAY,IAAI;AAE9B,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa;AACtD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB;IAC1C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,eAAe;YACvB;QAEF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,wBAAwB,CAAC,KAAY,EAAA;QACnC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB;IAC5C;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC7B;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;AACtB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU;AAE7B,QAAA,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;AAC1B,YAAA,OAAO,cAAc;AAEvB,QAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,cAAc,GAAG,gBAAgB;IAC7E;AAEA,IAAA,IAAI,oBAAoB,GAAA;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI;AACZ,YAAA,OAAO,cAAc;AAEvB,QAAA,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;AAC1B,YAAA,OAAO,cAAc;AAEvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,cAAc,GAAG,gBAAgB;IAC5E;wGArDW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,iRCZtC,ikBAQM,EAAA,MAAA,EAAA,CAAA,wqBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDIO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,ikBAAA,EAAA,MAAA,EAAA,CAAA,wqBAAA,CAAA,EAAA;;sBAM7B;;sBACA;;sBAEA;;sBACA;;sBACA;;sBAEA;;;MEVU,4BAA4B,CAAA;IAE9B,KAAK,GAAoB,EAAE;IAC3B,KAAK,GAAW,EAAE;AAClB,IAAA,YAAY,GAAmB,CAAC,YAAY,EAAE,WAAW,CAAC;IAC1D,WAAW,GAAW,kBAAkB;IAEjD,aAAa,GAAoB,EAAE;AAEnC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK;IACnC;AAEA,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAa,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5H;AAEA,IAAA,oBAAoB,CAAC,IAAmB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,cAAc,GAAG,gBAAgB;IACvE;wGApBW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,6MCXzC,4kCAwBM,EAAA,MAAA,EAAA,CAAA,kuBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAuB,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA0C,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDbO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,4kCAAA,EAAA,MAAA,EAAA,CAAA,kuBAAA,CAAA,EAAA;;sBAMhC;;sBACA;;sBACA;;sBACA;;;MEmJU,WAAW,CAAA;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBAvGpB,sBAAsB;YACtB,4BAA4B;YAC5B,yBAAyB;YACzB,oBAAoB;YACpB,oBAAoB;YACpB,sBAAsB;YACtB,kBAAkB;YAClB,iCAAiC;YACjC,wBAAwB;YACxB,0BAA0B;YAC1B,4BAA4B;YAC5B,uBAAuB;YACvB,2BAA2B;YAC3B,mCAAmC;YACnC,wBAAwB;YACxB,kBAAkB;YAClB,yBAAyB;YACzB,sCAAsC;YACtC,6BAA6B;YAC7B,yBAAyB;YACzB,uBAAuB;YACvB,wBAAwB;YACxB,yBAAyB;YACzB,4BAA4B;YAC5B,2CAA2C;YAC3C,oBAAoB;YACpB,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,sBAAsB;YACtB,wBAAwB;YACxB,0BAA0B;YAC1B,wBAAwB;YACxB,yBAAyB;YACzB,yBAAyB;YACzB,4BAA4B;YAC5B,8BAA8B;AAC9B,YAAA,yBAAyB,aA2CzB,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,aAAa;YACb,eAAe;YACf,qBAAqB;YACrB,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,mBAAmB;AACnB,YAAAT,aAAW,aAzDX,sBAAsB;YACtB,4BAA4B;YAC5B,yBAAyB;YACzB,oBAAoB;YACpB,oBAAoB;YACpB,sBAAsB;YACtB,kBAAkB;YAClB,iCAAiC;YACjC,wBAAwB;YACxB,0BAA0B;YAC1B,4BAA4B;YAC5B,uBAAuB;YACvB,2BAA2B;YAC3B,mCAAmC;YACnC,wBAAwB;YACxB,kBAAkB;YAClB,yBAAyB;YACzB,sCAAsC;YACtC,6BAA6B;YAC7B,yBAAyB;YACzB,uBAAuB;YACvB,wBAAwB;YACxB,yBAAyB;YACzB,4BAA4B;YAC5B,2CAA2C;YAC3C,oBAAoB;YACpB,oBAAoB;YACpB,qBAAqB;YACrB,oBAAoB;YACpB,sBAAsB;YACtB,wBAAwB;YACxB,0BAA0B;YAC1B,wBAAwB;YACxB,yBAAyB;YACzB,yBAAyB;YACzB,4BAA4B;YAC5B,8BAA8B;YAC9B,yBAAyB,CAAA,EAAA,CAAA;AA0BhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAAA,SAAA,EAJX;AACT,YAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAChD,SAAA,EAAA,OAAA,EAAA,CArBC,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,aAAa;YACb,eAAe;YACf,qBAAqB;YACrB,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,mBAAmB;YACnBA,aAAW,CAAA,EAAA,CAAA;;4FAMF,WAAW,EAAA,UAAA,EAAA,CAAA;kBAzGvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,sBAAsB;wBACtB,4BAA4B;wBAC5B,yBAAyB;wBACzB,oBAAoB;wBACpB,oBAAoB;wBACpB,sBAAsB;wBACtB,kBAAkB;wBAClB,iCAAiC;wBACjC,wBAAwB;wBACxB,0BAA0B;wBAC1B,4BAA4B;wBAC5B,uBAAuB;wBACvB,2BAA2B;wBAC3B,mCAAmC;wBACnC,wBAAwB;wBACxB,kBAAkB;wBAClB,yBAAyB;wBACzB,sCAAsC;wBACtC,6BAA6B;wBAC7B,yBAAyB;wBACzB,uBAAuB;wBACvB,wBAAwB;wBACxB,yBAAyB;wBACzB,4BAA4B;wBAC5B,2CAA2C;wBAC3C,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,sBAAsB;wBACtB,wBAAwB;wBACxB,0BAA0B;wBAC1B,wBAAwB;wBACxB,yBAAyB;wBACzB,yBAAyB;wBACzB,4BAA4B;wBAC5B,8BAA8B;wBAC9B;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBACtB,4BAA4B;wBAC5B,yBAAyB;wBACzB,oBAAoB;wBACpB,oBAAoB;wBACpB,sBAAsB;wBACtB,kBAAkB;wBAClB,iCAAiC;wBACjC,wBAAwB;wBACxB,0BAA0B;wBAC1B,4BAA4B;wBAC5B,uBAAuB;wBACvB,2BAA2B;wBAC3B,mCAAmC;wBACnC,wBAAwB;wBACxB,kBAAkB;wBAClB,yBAAyB;wBACzB,sCAAsC;wBACtC,6BAA6B;wBAC7B,yBAAyB;wBACzB,uBAAuB;wBACvB,wBAAwB;wBACxB,yBAAyB;wBACzB,4BAA4B;wBAC5B,2CAA2C;wBAC3C,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,sBAAsB;wBACtB,wBAAwB;wBACxB,0BAA0B;wBAC1B,wBAAwB;wBACxB,yBAAyB;wBACzB,yBAAyB;wBACzB,4BAA4B;wBAC5B,8BAA8B;wBAC9B;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,aAAa;wBACb,eAAe;wBACf,qBAAqB;wBACrB,cAAc;wBACd,kBAAkB;wBAClB,gBAAgB;wBAChB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,mBAAmB;wBACnBA;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAChD;AACF,iBAAA;;;MC1JY,0CAA0C,CAAA;AAErD,IAAA,SAAS,CAAC,sBAA8C,EAAE,GAAG,IAAe,EAAA;AAC1E,QAAA,IAAI,cAAc,GAAmB;YACnC,GAAG,sBAAsB,CAAC,iBAAiB;AAC3C,YAAA,SAAS,EAAE,sBAAsB,CAAC,qBAAqB,CAAC,GAAG,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,eAAe,CAAC;YACzH,KAAK,EAAE,sBAAsB,CAAC,KAAK;SACpC;AAED,QAAA,OAAO,cAAc;IACvB;wGAVW,0CAA0C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAA1C,0CAA0C,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,wCAAA,EAAA,CAAA;;4FAA1C,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBAJtD,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCAY,8BAA8B,CAAA;AAEzC,IAAA,SAAS,CAAC,UAAsB,EAAE,GAAG,IAAe,EAAA;AAClD,QAAA,IAAI,cAAc,GAAmB;AACnC,YAAA,GAAG,UAAU;AACb,YAAA,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,eAAe;SACzE;AAED,QAAA,OAAO,cAAc;IACvB;AAEA,IAAA,cAAc,CAAC,WAAyB,EAAA;AACtC,QAAA,IAAI,eAAe,GAAqB,WAAW,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACjG,QAAA,OAAO,eAAe;IACxB;wGAdW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAA9B,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,4BAAA,EAAA,CAAA;;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCCY,kCAAkC,CAAA;AAC7C,IAAA,SAAS,CAAC,oBAAyB,EAAE,GAAG,IAAe,EAAA;AACrD,QAAA,IAAI,QAAQ,GAAqB;YAC/B,oBAAoB,EAAE,oBAAoB,CAAC,oBAAoB;AAC/D,YAAA,WAAW,EAAE,oBAAoB,CAAC,eAAe,CAAC,WAAW;AAC7D,YAAA,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,KAAK;AACjD,YAAA,YAAY,EAAE,oBAAoB,CAAC,eAAe,CAAC,YAAY;AAC/D,YAAA,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC;SAC7C;AAED,QAAA,OAAO,QAAQ;IACjB;wGAXW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAlC,kCAAkC,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,gCAAA,EAAA,CAAA;;4FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCEY,kCAAkC,CAAA;AAE7C,IAAA,SAAS,CAAC,QAA0B,EAAE,GAAG,IAAe,EAAA;AACtD,QAAA,IAAI,oBAAoB,GAAyB;AAC/C,YAAA,kBAAkB,EAAE,CAAC;YACrB,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;AACnD,YAAA,eAAe,EAAE;AACf,gBAAA,GAAG;AACJ;SACF;AAED,QAAA,OAAO,oBAAoB;IAC7B;wGAZW,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAlC,kCAAkC,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,gCAAA,EAAA,CAAA;;4FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;ACFD,MAAM,2BAA2B,GAAG;AAClC,IAAA,CAAC,cAAc,CAAC,QAAQ,GAAG,EAAE,cAAc,EAAE,CAAC,QAA4B,KAAK,iCAAiC,CAAC,QAAQ,CAAC,EAAE;AAC5H,IAAA,CAAC,cAAc,CAAC,MAAM,GAAG,EAAE,cAAc,EAAE,CAAC,MAA0B,KAAK,4BAA4B,CAAC,MAAM,CAAC,EAAE;AACjH,IAAA,CAAC,cAAc,CAAC,YAAY,GAAG,EAAE,cAAc,EAAE,CAAC,YAAgC,KAAK,4BAA4B,CAAC,YAAY,CAAC;CAClI;AAED,SAAS,4BAA4B,CAAC,KAAyB,EAAA;IAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/D;AAEA,SAAS,iCAAiC,CAAC,KAAyB,EAAA;IAClE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACjE;MAMa,yCAAyC,CAAA;AAEpD,IAAA,SAAS,CAAC,IAAU,EAAA;QAClB,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;YACrD,IAAI,IAAI,CAAC,GAAG,CAAC;AACX,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1E,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI;IACb;wGATW,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAzC,yCAAyC,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,uCAAA,EAAA,CAAA;;4FAAzC,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAJrD,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCfY,iCAAiC,CAAA;AAE5C,IAAA,SAAS,CAAC,MAAmC,EAAA;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,EAAE;QAErC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;YAC5B,KAAK;AACL,YAAA,aAAa,EAAE;AAChB,SAAA,CAAC,CAAC;IACL;wGATW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAjC,iCAAiC,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,+BAAA,EAAA,CAAA;;4FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;MCAY,aAAa,CAAA;AAExB,IAAA,SAAS,CAAC,MAAc,EAAA;QACtB,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtE;wGAJW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCqDY,WAAW,CAAA;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBA1ChB,QAAQ;YACR,0CAA0C;YAC1C,8BAA8B;YAC9B,YAAY;YACZ,kCAAkC;YAClC,kCAAkC;YAClC,YAAY;YACZ,yCAAyC;YACzC,4BAA4B;YAC5B,iCAAiC;YACjC,aAAa;AACb,YAAA,+BAA+B,aAG/B,QAAQ;YACR,0CAA0C;YAC1C,8BAA8B;YAC9B,YAAY;YACZ,kCAAkC;YAClC,kCAAkC;YAClC,YAAY;YACZ,yCAAyC;YACzC,4BAA4B;YAC5B,iCAAiC;YACjC,aAAa;YACb,+BAA+B,CAAA,EAAA,CAAA;AAiB1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAAA,SAAA,EAfT;YACP,QAAQ;YACR,0CAA0C;YAC1C,8BAA8B;YAC9B,YAAY;YACZ,kCAAkC;YAClC,kCAAkC;YAClC,YAAY;YACZ,yCAAyC;YACzC,4BAA4B;YAC5B,iCAAiC;YACjC,aAAa;YACb,+BAA+B;AAClC,SAAA,EAAA,CAAA;;4FAEQ,WAAW,EAAA,UAAA,EAAA,CAAA;kBA5CvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,QAAQ;wBACR,0CAA0C;wBAC1C,8BAA8B;wBAC9B,YAAY;wBACZ,kCAAkC;wBAClC,kCAAkC;wBAClC,YAAY;wBACZ,yCAAyC;wBACzC,4BAA4B;wBAC5B,iCAAiC;wBACjC,aAAa;wBACb,+BAA+B;AAClC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,QAAQ;wBACR,0CAA0C;wBAC1C,8BAA8B;wBAC9B,YAAY;wBACZ,kCAAkC;wBAClC,kCAAkC;wBAClC,YAAY;wBACZ,yCAAyC;wBACzC,4BAA4B;wBAC5B,iCAAiC;wBACjC,aAAa;wBACb,+BAA+B;AAClC,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,QAAQ;wBACR,0CAA0C;wBAC1C,8BAA8B;wBAC9B,YAAY;wBACZ,kCAAkC;wBAClC,kCAAkC;wBAClC,YAAY;wBACZ,yCAAyC;wBACzC,4BAA4B;wBAC5B,iCAAiC;wBACjC,aAAa;wBACb,+BAA+B;AAClC;AACJ,iBAAA;;;MCjDY,wBAAwB,CAAA;AAEnC,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;IACR;wGALW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,kFCRrC,qCACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDOa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,qCAAA,EAAA;;;MEKtB,wBAAwB,CAAA;AA6Bf,IAAA,UAAA;AAAgC,IAAA,iBAAA;IA3B3C,QAAQ,GAAY,IAAI;IAExB,IAAI,GAAsB,MAAM;IAEhC,WAAW,GAAW,EAAE;IACxB,eAAe,GAAW,EAAE;IAC5B,kBAAkB,GAAW,EAAE;IAE/B,SAAS,GAAU,EAAE;AACrB,IAAA,YAAY;IACZ,UAAU,GAAY,KAAK;IAC3B,OAAO,GAAY,KAAK;AACxB,IAAA,SAAS;AAER,IAAA,cAAc,GAAyB,IAAI,YAAY,EAAU;AAE/C,IAAA,aAAa;AACnB,IAAA,WAAW;IAGjC,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,gBAAgB,GAAW,CAAC;AAC5B,IAAA,WAAW;IAEX,WAAA,CAAoB,UAAsB,EAAU,iBAAoC,EAAA;QAApE,IAAA,CAAA,UAAU,GAAV,UAAU;QAAsB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAAuB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;IAAE;AAE9I,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,YAAY;YACtC,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,IAAI,CAAC,WAAW,CAAC;AAEnE,QAAA,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,YAAY;YAC1C,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,CAAC;AAEvE,QAAA,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE,YAAY;YAC7C,IAAI,CAAC,cAAc,CAAC,oCAAoC,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAEpF,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE;AAC7C,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YACtC,IAAI,CAAC,kBAAkB,EAAE;QAC3B;AAEA,QAAA,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE,YAAY;YACpC,IAAI,CAAC,kBAAkB,EAAE;IAC7B;IAEQ,cAAc,CAAC,QAAgB,EAAE,KAAa,EAAA;QACpD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;IACrD;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;QACjC,IAAI,CAAC,IAAI,CAAC,OAAO;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;IACvC;IAGQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM;YACrD;QAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW;AAEvE,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAG;AAC7B,YAAA,MAAM,KAAK,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,GAAG,GAAG,OAAO,GAAG,CAAA,EAAG,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI;YAC9H,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK;AACvC,QAAA,CAAC,CAAC;IACJ;wGA3EW,wBAAwB,EAAA,IAAA,EAAA,CAAA,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;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,ypBCTrC,ouBAaK,EAAA,MAAA,EAAA,CAAA,ktEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAxD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDJQ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,QAAA,EAAA,ouBAAA,EAAA,MAAA,EAAA,CAAA,ktEAAA,CAAA,EAAA;;sBAM5B;;sBAEA;;sBAEA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,SAAS;uBAAC,eAAe;;sBACzB,YAAY;uBAAC,MAAM;;sBAEnB,YAAY;uBAAC,eAAe;;;MEjBlB,0BAA0B,CAAA;AAsCG,IAAA,SAAA;IApC/B,OAAO,GAA8B,EAAE;IACvC,SAAS,GAAW,MAAM;AAC1B,IAAA,UAAU;IACV,WAAW,GAAW,kBAAkB;IACxC,aAAa,GAAW,mCAAmC;IAC3D,QAAQ,GAAY,KAAK;IACzB,cAAc,GAAY,KAAK;IAC/B,YAAY,GAAW,CAAC;IACxB,cAAc,GAAmC,IAAI;IACrD,SAAS,GAAG,KAAK;AAEhB,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;AAC9C,IAAA,qBAAqB,GAAG,IAAI,YAAY,EAA2B;AAEnD,IAAA,WAAW;AACb,IAAA,YAAY;AAGpC,IAAA,aAAa,CAAC,KAAiB,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE;AAE1B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;QAE7C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChC,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;IAC/B;IAEA,mBAAmB,GAAW,EAAE;IAChC,eAAe,GAA8B,EAAE;IAC/C,cAAc,GAAY,KAAK;IAC/B,mBAAmB,GAAG,KAAK;AAElB,IAAA,YAAY,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACxC,IAAA,cAAc,GAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAE7D,IAAA,WAAA,CAAwC,SAAoB,EAAA;QAApB,IAAA,CAAA,SAAS,GAAT,SAAS;QAC/C,IAAI,IAAI,CAAC,SAAS;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;IACvC;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAC5C,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;QAClC;QAEA,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;AACpD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC3E,YAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAE1B,IAAI,IAAI,CAAC,WAAW;AAClB,gBAAA,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,WAAW;QAC7C;IACF;AAEA,IAAA,aAAa,CAAC,KAAiB,EAAA;QAC7B,KAAK,CAAC,eAAe,EAAE;QAEvB,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;IAChD;AAEA,IAAA,YAAY,CAAC,OAAe,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAE9C,QAAA,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE;AACvD,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAE/B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAE/B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B;AAEA,IAAA,eAAe,CAAC,MAA+B,EAAA;AAC7C,QAAA,MAAM,mBAAmB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE;AAEvE,QAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE;AAE7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;AACvC,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAE3B,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,IAAI,CAAC,WAAY,CAAC,UAAU,GAAG,mBAAmB;IAC1E;AAEA,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;IAChE;AAEA,IAAA,QAAQ,GAA4B,MAAK,EAAG,CAAC;AAE7C,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,KAAoB,EAAA;AAC7B,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,IAAI,EAAE;AACtC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC9C;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEQ,IAAA,aAAa,CAAC,IAAY,EAAA;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE;AAE/D,QAAA,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;YACzB;QACF;QAEA,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,OAAO,CAAC;YACnC;QACF;AAEA,QAAA,MAAM,oBAAoB,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE;QAExE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAG;YAC7C,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAEjD,YAAA,IAAI,CAAC,kBAAkB;AAAE,gBAAA,OAAO,KAAK;YAErC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;AACxE,YAAA,OAAO,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC;AAC5D,QAAA,CAAC,CAAC;IACJ;wGA5IW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvB,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbvC,i/EA4CM,EAAA,MAAA,EAAA,CAAA,smFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,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,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,GAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EDjCQ,CAACG,WAAS,CAAC,EAAA,CAAA;;4FAEZ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,oBAAoB,EAAA,UAAA,EAGlB,CAACA,WAAS,CAAC,EAAA,QAAA,EAAA,i/EAAA,EAAA,MAAA,EAAA,CAAA,smFAAA,CAAA,EAAA;;0BAwCV;;0BAAY;;sBApCxB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,WAAW;;sBAErB,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;;;AE3B1C,MAAM,sDAAsD,GAAQ;AAClE,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mCAAmC,CAAC;AAClE,IAAA,KAAK,EAAE,IAAI;CACZ;MASY,mCAAmC,CAAA;AAc1B,IAAA,4BAAA;AAZX,IAAA,cAAc;IACd,WAAW,GAAW,UAAU;IAChC,QAAQ,GAAY,KAAK;IACzB,yBAAyB,GAAY,KAAK;IAC1C,IAAI,GAA6C,SAAS;IAC1D,iBAAiB,GAA4B,WAAW;AACxD,IAAA,gCAAgC;AAE/B,IAAA,8BAA8B,GAAG,IAAI,YAAY,EAAsB;IAEjF,gBAAgB,GAAuB,EAAE;AAEzC,IAAA,WAAA,CAAoB,4BAA0D,EAAA;QAA1D,IAAA,CAAA,4BAA4B,GAA5B,4BAA4B;IAAkC;AAElF,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY;YACzC,IAAI,CAAC,mBAAmB,EAAE;IAC9B;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AACnE,aAAA,SAAS,CAAC,CAAC,UAAsB,KAAI;AACpC,YAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;YACvI,IAAI,CAAC,oCAAoC,EAAE;AAC7C,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,uBAAuB,CAAC,uBAA2C,EAAA;AACjE,QAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,uBAAuB,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACxC;AAEA,IAAA,QAAQ,GAA0D,MAAK,EAAG,CAAC;AAE3E,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,gCAAoD,EAAA;AAC7D,QAAA,IAAI,CAAC,gCAAgC;YACnC;AAEF,QAAA,IAAI,CAAC,gCAAgC,GAAG,gCAAgC;QACxE,IAAI,CAAC,oCAAoC,EAAE;IAC7C;IAEQ,oCAAoC,GAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,gCAAgC;YAC1E;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,IAAG;YAC9C,MAAM,+BAA+B,GAAG,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,OAAO,IAAK,OAA4B,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,CAAqB;AAE9K,YAAA,IAAI,+BAA+B;AACjC,gBAAA,eAAe,CAAC,EAAE,GAAG,+BAA+B,CAAC,EAAE;AAC3D,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;wGAhEW,mCAAmC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhC,IAAA,CAAA,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,IAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gCAAA,EAAA,kCAAA,EAAA,EAAA,OAAA,EAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,EAAA,SAAA,EAFnC,CAAC,sDAAsD,CAAC,+CChBrE,+XAIqB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDcR,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAP/C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,gCAAgC,EAAA,SAAA,EAG/B,CAAC,sDAAsD,CAAC,EAAA,QAAA,EAAA,+XAAA,EAAA;;sBAIlE;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;AEvBH,MAAM,gDAAgD,GAAQ;AAC5D,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,8BAA8B,CAAC;AAC7D,IAAA,KAAK,EAAE,IAAI;CACZ;MASY,8BAA8B,CAAA;AAsBrB,IAAA,4BAAA;AApBM,IAAA,cAAc;IAC/B,WAAW,GAAW,UAAU;AAChC,IAAA,2BAA2B;IAC3B,QAAQ,GAAY,KAAK;IACzB,yBAAyB,GAAY,KAAK;IAC1C,QAAQ,GAAW,EAAE;IACrB,cAAc,GAAY,KAAK;IAC/B,KAAK,GAAW,EAAE;IAClB,IAAI,GAA6C,SAAS;IAC1D,kBAAkB,GAAY,KAAK;IACnC,cAAc,GAAY,KAAK;IAC/B,iBAAiB,GAA4B,WAAW;IACxD,iBAAiB,GAAG,UAAU;AAE7B,IAAA,8BAA8B,GAAG,IAAI,YAAY,EAAoB;AACrE,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;IAExD,gBAAgB,GAAuB,EAAE;AACzC,IAAA,+BAA+B;AAE/B,IAAA,WAAA,CAAoB,4BAA0D,EAAA;QAA1D,IAAA,CAAA,4BAA4B,GAA5B,4BAA4B;IAAkC;AAElF,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY;YACzC,IAAI,CAAC,mBAAmB,EAAE;AAE5B,QAAA,IAAI,OAAO,CAAC,6BAA6B,CAAC,EAAE,YAAY;YACtD,IAAI,CAAC,uBAAuB,EAAE;IAClC;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AACnE,aAAA,SAAS,CAAC,CAAC,UAAsB,KAAI;AACpC,YAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;YACvI,IAAI,CAAC,uBAAuB,EAAE;AAChC,QAAA,CAAC,CAAC;IACN;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;AACrC,YAAA,IAAI,CAAC,+BAA+B,GAAG,SAAS;YAChD;QACF;AAEA,QAAA,IAAI,CAAC,+BAA+B,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,IAAI,KAAK,IAAI,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE;IACtM;AAEA,IAAA,sBAAsB,CAAC,uBAAyC,EAAA;AAC9D,QAAA,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,uBAAuB,CAAC;AACjE,QAAA,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACxC;AAEA,IAAA,kBAAkB,CAAC,IAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;IACnC;AAEA,IAAA,QAAQ,GAAwD,MAAK,EAAG,CAAC;AAEzE,IAAA,SAAS,GAAe,MAAK,EAAG,CAAC;AAEjC,IAAA,UAAU,CAAC,2BAAmC,EAAA;AAC5C,QAAA,IAAI,CAAC,2BAA2B;YAC9B;AAEF,QAAA,IAAI,CAAC,2BAA2B,GAAG,2BAA2B;QAC9D,IAAI,CAAC,uBAAuB,EAAE;IAChC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;wGA5EW,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,4BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAH9B,CAAC,gDAAgD,CAAC,+CCf/D,woBAiBe,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCF,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,0BAA0B,EAAA,SAAA,EAEzB,CAAC,gDAAgD,CAAC,EAAA,QAAA,EAAA,woBAAA,EAAA;;sBAK5D,KAAK;uBAAC,iBAAiB;;sBACvB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;;AE/BH,MAAM,eAAe,GAAW,qBAAqB;AACrD,MAAM,mBAAmB,GAAW,eAAe,GAAG,kBAAkB;AACxE,MAAM,oBAAoB,GAAG,iBAAiB;MAQjC,sBAAsB,CAAA;AAwCsB,IAAA,iBAAA;IAtC9C,aAAa,GAAW,EAAE;IAC1B,WAAW,GAAW,wBAAwB;IAC9C,oBAAoB,GAAW,CAAC;IAChC,gBAAgB,GAAG,EAAE;IACrB,mBAAmB,GAAG,EAAE;IACxB,mBAAmB,GAAG,EAAE;IACxB,aAAa,GAAG,KAAK;IACrB,gBAAgB,GAAqB,QAAQ;IAE7C,IAAI,GAAqB,QAAQ;IACjC,IAAI,GAAY,KAAK;IACrB,aAAa,GAAY,KAAK;AAC9B,IAAA,aAAa,GAAW,WAAW,CAAC,cAAc;AAClD,IAAA,eAAe;IACf,kBAAkB,GAAY,IAAI;AAEjC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAU;AAE7B,IAAA,SAAS;IAEjC,SAAS,GAAW,EAAE;IACtB,SAAS,GAAY,KAAK;IAC1B,oBAAoB,GAAY,KAAK;IACrC,+BAA+B,GAAY,KAAK;IAChD,aAAa,GAA8B,sBAAsB;IACjE,aAAa,GAAY,IAAI;IAC7B,mBAAmB,GAAY,IAAI;IACnC,sBAAsB,GAAW,EAAE;AAEnC,IAAA,aAAa,GAAG;AACd,QAAA,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,qBAAqB,EAAE;AACpG,QAAA,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,qBAAqB,EAAE;AACxE,QAAA;AACE,YAAA,SAAS,EAAE,MAAM,IAAI,CAAC,+BAA+B,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC;AACtF,YAAA,OAAO,EAAE,CAAA,eAAA,EAAkB,IAAI,CAAC,oBAAoB,CAAA,MAAA;AACrD,SAAA;KACF;AAED,IAAA,WAAA,CAAuD,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAsB;AAE9F,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAC/D,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa;QAErC,IAAI,OAAO,CAAC,eAAe,CAAC;YAC1B,IAAI,CAAC,6BAA6B,EAAE;QAEtC,IAAI,OAAO,CAAC,kBAAkB,CAAC;YAC7B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACnF;IAEA,aAAa,CAAC,KAAa,EAAE,KAAiB,EAAA;QAC5C,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB;AACpD,YAAA,IAAI,CAAC,+BAA+B,GAAG,KAAK;QAE9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;IACtC;AAEA,IAAA,qBAAqB,CAAC,KAAgB,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;AAClD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;AAEA,IAAA,iBAAiB,CAAC,KAAgB,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;IACxB;AAEA,IAAA,yBAAyB,CAAC,KAAiB,EAAA;QACzC,KAAK,CAAC,eAAe,EAAE;IACzB;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;QAEtD,IAAI,CAAC,KAAK,CAAC,MAAM;YACf;QAEF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;IACtC;AAEQ,IAAA,WAAW,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,MAAM;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAEtD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,MAAM;YAClC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;QAEjE,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAClD;AAEF,QAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAEjC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB;AACjG,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/D,aAAA,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,oBAAoB;AACjD,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;aACnB,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE;AACjD,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnE;;AAEE,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC1C;AAEQ,IAAA,wBAAwB,CAAC,KAAa,EAAA;AAC5C,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACxH;AAEQ,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACvC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;AACnE,YAAA,OAAO,KAAK;AAEd,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/G;AAEQ,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACzC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB;AAClE,YAAA,IAAI,CAAC,+BAA+B,GAAG,IAAI;;AAE3C,YAAA,IAAI,CAAC,+BAA+B,GAAG,KAAK;IAChD;AAEA,IAAA,WAAW,CAAC,IAAU,EAAA;QACpB,IAAI,QAAQ,GAAW,EAAE;AACzB,QAAA,MAAM,kBAAkB,GAAW,GAAG,GAAG,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;QAEpE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,UAAU,IAAG;YACzD,IAAI,UAAU,KAAK,kBAAkB;AACnC,gBAAA,QAAQ,GAAG,eAAe,GAAG,UAAU,GAAG,MAAM;AACpD,QAAA,CAAC,CAAC;AAEF,QAAA,KAAK,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;YAC1E,IAAI,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvD,QAAQ,GAAG,eAAe,GAAG,GAAG,GAAG,aAAa,GAAG,MAAM;QAE7D,OAAO,QAAQ,GAAG,QAAQ,GAAG,mBAAmB;IAClD;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,YAAY,CAAA,EAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,YAAY,kBAAkB;IAC/H;AAEQ,IAAA,qBAAqB,CAAC,gBAA0B,EAAA;AACtD,QAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,MAAM;AAChD,YAAA,OAAO,EAAE;AAEX,QAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,eAAe,IAAI,eAAe,GAAG,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACrG;IAEQ,6BAA6B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB;gBACE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM;AACvC,gBAAA,OAAO,EAAE;AACV,aAAA,CAAC;YAEJ;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,IAAI,YAAY,CAAC,OAAO,KAAK,oBAAoB,CAAC;IAC/G;AAzLW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAwCb,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAxClC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,4tBCdnC,q8FAqDa,EAAA,MAAA,EAAA,CAAA,8nEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDvCA,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,iBAAiB,EAAA,QAAA,EAAA,q8FAAA,EAAA,MAAA,EAAA,CAAA,8nEAAA,CAAA,EAAA;;0BA4Cd,MAAM;2BAAC,yBAAyB;;sBAtC5C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA,SAAS;uBAAC,WAAW;;;ME1BX,6BAA6B,CAAA;AAE/B,IAAA,KAAK;IACL,WAAW,GAAY,KAAK;IAErC,kBAAkB,GAAY,IAAI;AAElC,IAAA,uBAAuB,CAAC,KAAiB,EAAA;QACvC,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB;IACpD;wGAVW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,2ICR1C,yYAQM,EAAA,MAAA,EAAA,CAAA,8oBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDAO,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wBAAwB,EAAA,QAAA,EAAA,yYAAA,EAAA,MAAA,EAAA,CAAA,8oBAAA,CAAA,EAAA;;sBAMjC;;sBACA;;;MEDU,yBAAyB,CAAA;AAWmB,IAAA,iBAAA;AAT9C,IAAA,QAAQ;IACR,oBAAoB,GAAY,KAAK;AAEpC,IAAA,YAAY,GAAG,IAAI,YAAY,EAAY;AAC3C,IAAA,UAAU,GAAG,IAAI,YAAY,EAAY;AAEnD,IAAA,OAAO;AACP,IAAA,QAAQ;AAER,IAAA,WAAA,CAAuD,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAE/F,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC;YAEpD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;gBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;AACpC,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9C,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AAC1C,gBAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtD;YACF;AAEA,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI;AAC/B,YAAA,MAAM,SAAS,GAAG,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/C,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;YAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG;QACnH;IACF;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrC;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvC;AAtCW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,kBAWhB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAXlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,yPCVtC,knCAmBS,EAAA,MAAA,EAAA,CAAA,62BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtB,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDTI,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,knCAAA,EAAA,MAAA,EAAA,CAAA,62BAAA,CAAA,EAAA;;0BAejB,MAAM;2BAAC,yBAAyB;;sBAT5C;;sBACA;;sBAEA;;sBACA;;;MERU,8BAA8B,CAAA;AAEhC,IAAA,oBAAoB;AAW7B,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;IACR;IAEA,eAAe,CAAC,YAAoB,EAAE,gBAAwB,EAAA;AAC5D,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC;AAChG,YAAA,OAAO,MAAM;QAEf,QAAQ,YAAY;AAClB,YAAA,KAAK,CAAC;gBACJ,OAAO,gBAAgB,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM;AAChD,YAAA,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;gBACvC,OAAO,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM;AAC/G,YAAA;AACE,gBAAA,OAAO,MAAM;;IAEnB;wGA9BW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,+ICR3C,qlBAOM,EAAA,MAAA,EAAA,CAAA,uHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,cAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDCO,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,0BAA0B,EAAA,QAAA,EAAA,qlBAAA,EAAA,MAAA,EAAA,CAAA,uHAAA,CAAA,EAAA;;sBAMnC;;;MEFU,uBAAuB,CAAA;IAEzB,WAAW,GAAY,KAAK;IAC5B,UAAU,GAAY,KAAK;IAE3B,cAAc,GAAW,YAAY;IACrC,kBAAkB,GAAW,cAAc;IAE3C,mBAAmB,GAAY,KAAK;IACpC,mBAAmB,GAAY,KAAK;AAEpC,IAAA,gBAAgB;AAEf,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;AAEvD,IAAA,eAAe,CAAC,gBAAwB,EAAA;QACtC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAChD;AAEA,IAAA,WAAW,CAAC,gBAAwB,EAAA;QAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAChD;wGArBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2YCRpC,+fAUM,EAAA,MAAA,EAAA,CAAA,sEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDFO,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,iBAAiB,EAAA,QAAA,EAAA,+fAAA,EAAA,MAAA,EAAA,CAAA,sEAAA,CAAA,EAAA;;sBAM1B;;sBACA;;sBAEA;;sBACA;;sBAEA;;sBACA;;sBAEA;;sBAEA;;;MEZU,2BAA2B,CAAA;AAE7B,IAAA,KAAK;wGAFH,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,6GCTxC,8dAOM,EAAA,MAAA,EAAA,CAAA,+zCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDEO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,sBAAsB,EAAA,QAAA,EAAA,8dAAA,EAAA,MAAA,EAAA,CAAA,+zCAAA,CAAA,EAAA;;sBAM/B;;;MEFU,qBAAqB,CAAA;IAEvB,KAAK,GAAwB,SAAS;IACtC,cAAc,GAAY,KAAK;AAC/B,IAAA,KAAK,GAAW;AACvB,QAAA;AACE,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,UAAU,CAAC,QAAQ;AAC5B,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,UAAU,CAAC,QAAQ;AAC5B,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,UAAU,CAAC,OAAO;AAC3B,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,UAAU,CAAC,UAAU;AAC9B;KACF;AACQ,IAAA,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,MAAM;AAE5C,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,cAAc;AACtB,YAAA,OAAO,IAAI;AAEb,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO;AACtB,YAAA,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;AAE7G,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO;AACtB,YAAA,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE;IAC7F;wGArCW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,4KCTlC,+vDAmCM,EAAA,MAAA,EAAA,CAAA,qlEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FD1BO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,eAAe,EAAA,QAAA,EAAA,+vDAAA,EAAA,MAAA,EAAA,CAAA,qlEAAA,CAAA,EAAA;;sBAMxB;;sBACA;;sBACA;;sBAsBA;;;MEzBU,yBAAyB,CAAA;AAE3B,IAAA,QAAQ;IACR,IAAI,GAA8B,UAAU;IAC5C,SAAS,GAA+B,KAAK;IAC7C,SAAS,GAA8C,oBAAoB;AAEpF,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ;IACjE;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM;AACjE,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU;AAEjC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,iBAAiB;IACrE;AAEA,IAAA,IAAI,0BAA0B,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE;AAClF,QAAA,OAAO,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAC7F;wGArBW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,+KCVtC,u6BAeM,EAAA,MAAA,EAAA,CAAA,0qBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDLO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,u6BAAA,EAAA,MAAA,EAAA,CAAA,0qBAAA,CAAA,EAAA;;sBAM7B;;sBACA;;sBACA;;sBACA;;;MENU,qBAAqB,CAAA;IAEvB,KAAK,GAAe,EAAE;wGAFpB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,uGCTlC,wWAOM,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDEO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,gBAAgB,EAAA,QAAA,EAAA,wWAAA,EAAA,MAAA,EAAA,CAAA,8EAAA,CAAA,EAAA;;sBAMzB;;;MEHU,4BAA4B,CAAA;IAE9B,KAAK,GAA0C,EAAE;wGAF/C,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,+GCRzC,mJAGM,EAAA,MAAA,EAAA,CAAA,gMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,CAAA,EAAA,CAAA;;4FDKO,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wBAAwB,EAAA,QAAA,EAAA,mJAAA,EAAA,MAAA,EAAA,CAAA,gMAAA,CAAA,EAAA;;sBAMjC;;;MEDU,2BAA2B,CAAA;IAE7B,SAAS,GAA6C,sBAAsB;IAC5E,oBAAoB,GAAgC,UAAU;IAC9D,kBAAkB,GAAuB,EAAE;IAC3C,yBAAyB,GAAqB,KAAK;IACnD,oCAAoC,GAAqB,QAAQ;wGAN/D,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,mVCTxC,u4CAsBM,EAAA,MAAA,EAAA,CAAA,6ZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,2CAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDbO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,sBAAsB,EAAA,QAAA,EAAA,u4CAAA,EAAA,MAAA,EAAA,CAAA,6ZAAA,CAAA,EAAA;;sBAM/B;;sBACA;;sBACA;;sBACA;;sBACA;;;MEmGU,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAtEpB,wBAAwB;YACxB,wBAAwB;YACxB,0BAA0B;YAC1B,mCAAmC;YACnC,8BAA8B;YAC9B,2BAA2B;YAC3B,4BAA4B;YAC5B,sBAAsB;YACtB,6BAA6B;YAC7B,yBAAyB;YACzB,+BAA+B;YAC/B,8BAA8B;YAC9B,uBAAuB;YACvB,2BAA2B;YAC3B,qBAAqB;YACrB,wBAAwB;YACxB,yBAAyB;YACzB,0BAA0B;YAC1B,qBAAqB;YACrB,4BAA4B;AAC5B,YAAA,2BAA2B,aA0B3B,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,aAAa;YACb,eAAe;YACf,qBAAqB;YACrB,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,mBAAmB;YACnBwD,aAAW;AACX,YAAAD,aAAW,aAzCX,wBAAwB;YACxB,wBAAwB;YACxB,0BAA0B;YAC1B,mCAAmC;YACnC,8BAA8B;YAC9B,2BAA2B;YAC3B,4BAA4B;YAC5B,sBAAsB;YACtB,6BAA6B;YAC7B,yBAAyB;YACzB,+BAA+B;YAC/B,8BAA8B;YAC9B,uBAAuB;YACvB,2BAA2B;YAC3B,qBAAqB;YACrB,wBAAwB;YACxB,yBAAyB;YACzB,0BAA0B;YAC1B,qBAAqB;YACrB,4BAA4B;YAC5B,2BAA2B,CAAA,EAAA,CAAA;AA2BtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAAA,SAAA,EAJb;AACP,YAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAClD,SAAA,EAAA,OAAA,EAAA,CAtBG,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,aAAa;YACb,eAAe;YACf,qBAAqB;YACrB,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,mBAAmB;YACnBC,aAAW;YACXD,aAAW,CAAA,EAAA,CAAA;;4FAMN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAxE3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,wBAAwB;wBACxB,wBAAwB;wBACxB,0BAA0B;wBAC1B,mCAAmC;wBACnC,8BAA8B;wBAC9B,2BAA2B;wBAC3B,4BAA4B;wBAC5B,sBAAsB;wBACtB,6BAA6B;wBAC7B,yBAAyB;wBACzB,+BAA+B;wBAC/B,8BAA8B;wBAC9B,uBAAuB;wBACvB,2BAA2B;wBAC3B,qBAAqB;wBACrB,wBAAwB;wBACxB,yBAAyB;wBACzB,0BAA0B;wBAC1B,qBAAqB;wBACrB,4BAA4B;wBAC5B;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,wBAAwB;wBACxB,wBAAwB;wBACxB,0BAA0B;wBAC1B,mCAAmC;wBACnC,8BAA8B;wBAC9B,2BAA2B;wBAC3B,4BAA4B;wBAC5B,sBAAsB;wBACtB,6BAA6B;wBAC7B,yBAAyB;wBACzB,+BAA+B;wBAC/B,8BAA8B;wBAC9B,uBAAuB;wBACvB,2BAA2B;wBAC3B,qBAAqB;wBACrB,wBAAwB;wBACxB,yBAAyB;wBACzB,0BAA0B;wBAC1B,qBAAqB;wBACrB,4BAA4B;wBAC5B;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,aAAa;wBACb,eAAe;wBACf,qBAAqB;wBACrB,cAAc;wBACd,kBAAkB;wBAClB,gBAAgB;wBAChB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,mBAAmB;wBACnBC,aAAW;wBACXD;AACH,qBAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAClD;AACJ,iBAAA;;;MCtGY,2BAA2B,CAAA;AAInB,IAAA,SAAA;AAAsF,IAAA,IAAA;AAAsD,IAAA,iBAAA;AAF/J,IAAA,cAAc;AAEd,IAAA,WAAA,CAAmB,SAAoD,EAAkC,IAAS,EAA6C,iBAAoC,EAAA;QAAhL,IAAA,CAAA,SAAS,GAAT,SAAS;QAA6E,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAkD,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;IAEvM,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,GAAG;AACpB,YAAA,CAAC,MAAM,CAAC,KAAK,GAAG,6BAA6B;AAC7C,YAAA,CAAC,MAAM,CAAC,OAAO,GAAG,wCAAwC;AAC1D,YAAA,CAAC,MAAM,CAAC,QAAQ,GAAG;SACpB,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,CAAC;IAC1D;IACA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IAC5B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;wGAnBW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxD,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAI2C,eAAe,EAAA,EAAA,EAAA,KAAA,EAA4B,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAJ1I,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,iFCXxC,mRAOM,EAAA,MAAA,EAAA,CAAA,+UAAA,CAAA,EAAA,CAAA;;4FDIO,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,sBAAsB,EAAA,QAAA,EAAA,mRAAA,EAAA,MAAA,EAAA,CAAA,+UAAA,CAAA,EAAA;;0BAQ0C,MAAM;2BAAC,eAAe;;0BAAqB,MAAM;2BAAC,yBAAyB;;;MEA1I,YAAY,CAAA;wGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,CATjB,2BAA2B,CAAA,EAAA,OAAA,EAAA,CAG3B,YAAY,aAGZ,2BAA2B,CAAA,EAAA,CAAA;AAGtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YANjB,YAAY,CAAA,EAAA,CAAA;;4FAMP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH;AACJ,iBAAA;;;MCHY,oBAAoB,CAAA;AAKtB,IAAA,SAAA;AACyB,IAAA,IAAA;AAJlC,IAAA,OAAO;IAEP,WAAA,CACS,SAA6C,EACpB,IAA2D,EAAA;QADpF,IAAA,CAAA,SAAS,GAAT,SAAS;QACgB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAA2D;IAEjG,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,aAAa,GAAG,EAAE;AACxB,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,GAAG,0CAA0C,CAAC,KAAe,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzK,YAAA,IAAI,CAAC,OAAO,GAAI,aAAgC;QAClD;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;AAlBW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,gDAMrB,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AANd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,mFCXjC,sqBAgBM,EAAA,MAAA,EAAA,CAAA,kHAAA,EAAA,weAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDLO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,wBAAwB,EAAA,QAAA,EAAA,sqBAAA,EAAA,MAAA,EAAA,CAAA,kHAAA,EAAA,weAAA,CAAA,EAAA;;0BAU/B,MAAM;2BAAC,eAAe;;;MEEd,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAApB,oBAAoB,EAAA,YAAA,EAAA,CAXzB,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAGpB,YAAY;YACZiC,aAAW;AACX,YAAAC,aAAW,aAGX,oBAAoB,CAAA,EAAA,CAAA;AAGf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YARzB,YAAY;YACZD,aAAW;YACXC,aAAW,CAAA,EAAA,CAAA;;4FAMN,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZD,aAAW;wBACXC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH;AACJ,iBAAA;;;MCRY,qBAAqB,CAAA;IAEhC,SAAS,GAAY,KAAK;IAC1B,OAAO,GAAY,KAAK;AACxB,IAAA,KAAK;AACL,IAAA,MAAM;AAEN,IAAA,QAAQ,CAAC,OAAgB,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9E;AAEA,IAAA,MAAM,CAAC,MAAwB,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IACxB;AAEA,IAAA,OAAO,CAAC,MAAwB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACtB,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,SAAS,CAAC,MAAwB,EAAA;QACxC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;;AAEzB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;wGA3BW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,8ECVlC,mMAEM,EAAA,MAAA,EAAA,CAAA,woBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAxD,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDQO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cACjB,KAAK,EAAA,QAAA,EAAA,mMAAA,EAAA,MAAA,EAAA,CAAA,woBAAA,CAAA,EAAA;;;MEKN,kBAAkB,CAAA;AAE7B,IAAA,MAAM;AACN,IAAA,KAAK;AAEL,IAAA,MAAM,CAAC,MAAwB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;IAC3B;AAEA,IAAA,OAAO,CAAC,MAAwB,EAAA;AAC9B,QAAA,OAAO,IAAI;IACb;wGAZW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2ECX/B,mgBAOU,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDIG,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,gBAAgB,EAAA,QAAA,EAAA,mgBAAA,EAAA;;;MEIf,qBAAqB,CAAA;AAEhC,IAAA,MAAM;AACN,IAAA,KAAK;AAEL,IAAA,MAAM,CAAC,MAAwB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;IAC3B;AAEA,IAAA,OAAO,CAAC,MAAwB,EAAA;AAC9B,QAAA,OAAO,IAAI;IACb;wGAZW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,8ECXlC,qLAEO,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDSM,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,mBAAmB,EAAA,QAAA,EAAA,qLAAA,EAAA;;;MEKlB,kBAAkB,CAAA;IAEpB,YAAY,GAAG,KAAK;AACpB,IAAA,MAAM;AACf,IAAA,KAAK;AACL,IAAA,UAAU,GAAW,WAAW,CAAC,OAAO;AAExC,IAAA,MAAM,CAAC,MAAwB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAChE;AAEA,IAAA,SAAS,CAAC,KAAiB,EAAA;QACzB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,2BAA2B,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;IAClH;AAEA,IAAA,wBAAwB,CAAC,OAAoB,EAAA;AAC3C,QAAA,OAAO,uBAAuB,CAAC,OAAO,CAAC;IACzC;AAEA,IAAA,OAAO,CAAC,MAAwB,EAAA;AAC9B,QAAA,OAAO,KAAK;IACd;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC;IAC1E;wGA5BW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,mICZ/B,+WAOM,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDKO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,YAAY,EAAA,QAAA,EAAA,+WAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA;;sBAMrB;;sBACA;;;MEFU,gBAAgB,CAAA;AAQP,IAAA,SAAA;IANX,YAAY,GAAY,KAAK;AAC7B,IAAA,MAAM;AACf,IAAA,KAAK;AACL,IAAA,MAAM;IACN,qBAAqB,GAAY,KAAK;AAEtC,IAAA,WAAA,CAAoB,SAAoB,EAAA;QAApB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAe;AAE5C,IAAA,MAAM,CAAC,MAAwB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAE9D,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;AAE7B,QAAA,IAAI,MAAM,CAAC,qBAAqB,KAAK,SAAS;AAC5C,YAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB;IAC7D;AAEA,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,2BAA2B,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;IAChH;AAEA,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAC7B;QAEF,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;AAEA,IAAA,OAAO,CAAC,MAAwB,EAAA;AAC9B,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,WAAW,CAAC,IAAI;IACzB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC;IAC1E;wGA7CW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvB,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,iICb7B,0aAMM,EAAA,MAAA,EAAA,CAAA,6KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,EAAAsB,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDOO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,UAAU,EAAA,QAAA,EAAA,0aAAA,EAAA,MAAA,EAAA,CAAA,6KAAA,CAAA,EAAA;;sBAMnB;;sBACA;;;AEHI,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB,CAAA;AAC7B,IAAA,KAAK;AACL,IAAA,MAAM;AACN,IAAA,UAAU;AAEV,IAAA,MAAM,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9E;AAEA,IAAA,MAAM,CAAC,MAAwB,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IACxB;AAEA,IAAA,OAAO,CAAC,MAAwB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AAEtB,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,SAAS,CAAC,MAAwB,EAAA;QACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK;AACvD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;IAC3B;wGAzBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,uECb/B,uNAEM,EAAA,MAAA,EAAA,CAAA,grBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAtB,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;ADWO,kBAAkB,GAAA,UAAA,CAAA;AAP9B,IAAA,cAAc,CAAC,eAAe,CAAC,UAAU;AAO7B,CAAA,EAAA,kBAAkB,CA0B9B;4FA1BY,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,YAAY,EAAA,QAAA,EAAA,uNAAA,EAAA,MAAA,EAAA,CAAA,grBAAA,CAAA,EAAA;;;MEEX,yBAAyB,CAAA;IAEpC,YAAY,GAAY,KAAK;AAC7B,IAAA,KAAK;AACL,IAAA,MAAM;AAEN,IAAA,MAAM,CAAC,MAAwB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC;IAChE;AAEA,IAAA,OAAO,CAAC,MAAwB,EAAA;AAC9B,QAAA,OAAO,IAAI;IACb;wGAdW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,+ECXtC,uVAOM,EAAA,MAAA,EAAA,CAAA,+IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAAkE,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDIO,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,oBAAoB,EAAA,QAAA,EAAA,uVAAA,EAAA,MAAA,EAAA,CAAA,+IAAA,CAAA,EAAA;;;AEMzB,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB,CAAA;AACrB,IAAA,SAAS;AACT,IAAA,KAAK;IACL,QAAQ,GAAY,KAAK;AAElC,IAAA,MAAM;AAEN,IAAA,QAAQ,CAAC,SAAkB,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9E;AAEA,IAAA,MAAM,CAAC,MAAwB,EAAA;QAC7B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK;AACtD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AAEpB,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;IACjC;AAEA,IAAA,OAAO,CAAC,MAAwB,EAAA;AAC9B,QAAA,OAAO,IAAI;IACb;wGAtBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,kJCbhC,sLAEM,EAAA,MAAA,EAAA,CAAA,wlBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAnE,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;ADWO,mBAAmB,GAAA,UAAA,CAAA;AAP/B,IAAA,cAAc,CAAC,eAAe,CAAC,UAAU;AAO7B,CAAA,EAAA,mBAAmB,CAuB/B;4FAvBY,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,aAAa,EAAA,QAAA,EAAA,sLAAA,EAAA,MAAA,EAAA,CAAA,wlBAAA,CAAA,EAAA;;sBAKtB;;sBACA;;sBACA;;;MEDU,0BAA0B,CAAA;AAoBkB,IAAA,SAAA;AAlB/C,IAAA,OAAgB,SAAS,GAAW,EAAE;AACtC,IAAA,KAAK;AACL,IAAA,WAAW;AACX,IAAA,YAAY;AACZ,IAAA,OAAO;AACP,IAAA,UAAU;AAElB,IAAA,oBAAoB;IACpB,0BAA0B,GAAY,KAAK;AAC3C,IAAA,eAAe;AACf,IAAA,iBAAiB;AACjB,IAAA,YAAY;AAEZ,IAAA,mBAAmB;AACnB,IAAA,sBAAsB;AACtB,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AACrC,IAAA,cAAc,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC;AAEjD,IAAA,WAAA,CAAuD,SAA4B,EAAA;QAA5B,IAAA,CAAA,SAAS,GAAT,SAAS;IAAuB;IAEvF,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO;IAC5D;AAEA,IAAA,MAAM,CAAC,MAAqB,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,EAAU;AAErC,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;YACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK;QAEpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;QAE5D,IAAI,CAAC,cAAc,CAAC;AACjB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;aACpC,SAAS,CAAC,IAAI,IAAG;AAChB,YAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAEpD,IAAI,CAAC,IAAI,EAAE;gBACT,IAAI,IAAI,CAAC,0BAA0B;AACjC,oBAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK;gBAEzC,IAAI,CAAC,eAAe,EAAE;gBACtB;YACF;YAEA,IAAI,CAAC,+BAA+B,EAAE;AACxC,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;aAChC,IAAI,CACH,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,MAAM,IAAG;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACvB,IAAI,CAAC,kBAAkB,EAAE;QAC3B,CAAC,CAAC,CACH;QAEH,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM;IACnG;IAEQ,+BAA+B,GAAA;QACrC,IAAI,8BAA8B,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAEjI,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU;AAClC,YAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK;AAEzC,QAAA,IAAI,8BAA8B,CAAC,MAAM,GAAG,CAAC,IAAI,8BAA8B,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM;YACjI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa;QAElE,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE;AAC1C,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU;AAC9B,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;QACxC;QAEA,IAAI,8BAA8B,CAAC,MAAM,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,IAAI,8BAA8B,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC3K,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO;QAE5D,IAAI,CAAC,8BAA8B,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM;YACjF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS;IAChE;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAa,KAAI;YACvD,IAAI,CAAC,IAAI,CAAC,IAAI;gBACZ;YAEF,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,YAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACrC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,UAAU,CAAC,KAAa,EAAE,cAAA,GAA0B,IAAI,EAAA;AACtD,QAAA,MAAM,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM;AAE1E,QAAA,IAAK,IAAI,CAAC,iBAA+C,CAAC,KAAK,CAAC;AAC9D,YAAA,OAAQ,IAAI,CAAC,iBAA+C,CAAC,KAAK,CAAC;;AAElE,YAAA,IAAI,CAAC,iBAA+C,CAAC,KAAK,CAAC,GAAG,CAAC;AAElE,QAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM;QAE3E,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM;YACjG,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM;YAClE,IAAI,CAAC,+BAA+B,EAAE;QAExC,IAAI,wBAAwB,KAAK,uBAAuB;YACtD,IAAI,CAAC,eAAe,EAAE;IAC1B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,MAAM,EAAE;YACtI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO;AAC1D,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;QAClC;AACK,aAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE;YACvS,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa;AAChE,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;QACnC;aACK;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC7B,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;QACnC;IACF;IAEA,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC3G,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClD;QACF;QAEA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa;AACpE,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;;AAEjC,YAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,oBAAoB;AAExD,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACpE,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa;gBACpE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;iBAC/F;AACH,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAC1C,OAAQ,IAAI,CAAC,iBAA+C,CAAC,KAAK,CAAC,CAAC;gBACtE,IAAI,CAAC,eAAe,EAAE;AACtB,gBAAA,IAAI,CAAC,YAAY,GAAG,SAAS;YAC/B;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACjG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC9E,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAClG,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;YAC7B,IAAI,CAAC,kBAAkB,EAAE;QAC3B;IACF;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB;IACrF;AAEA,IAAA,cAAc,CAAC,MAA6B,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AACjC,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,OAAO,CAAE,IAAI,CAAC,iBAA4C,CAAC,SAAS,CAAC,CAAC;IAC/E;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE;IAC3C;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE;AACvC,QAAA,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;IACrC;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,eAAe;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,0BAA0B,CAAC,SAAS;IACjE;AAEQ,IAAA,UAAU,CAAC,MAAgB,EAAA;QACjC,MAAM,CAAC,IAAI,EAAE;IACf;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAA+B,CAAC;QACzI,IAAI,CAAC,eAAe,EAAE;IACxB;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAA+B;AACxD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;IAC9B;AAEQ,IAAA,uBAAuB,CAAC,KAAa,EAAA;AAC3C,QAAA,IAAK,IAAI,CAAC,WAAyC,CAAC,KAAK,CAAC;YACxD;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,WAAyC,CAAC,KAAK,CAAC,GAAG,CAAC;IAC5D;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AACvC,YAAA,OAAO,KAAK;AAEd,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,uBAAuB,CAAC,OAAoB,EAAA;AAC1C,QAAA,OAAO,uBAAuB,CAAC,OAAO,CAAC;IACzC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;AAvPW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAoBjB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AApBlC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,qFCfvC,+mFA0CM,EAAA,MAAA,EAAA,CAAA,gNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAM,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FD3BO,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,0BAA0B,EAAA,QAAA,EAAA,+mFAAA,EAAA,MAAA,EAAA,CAAA,gNAAA,CAAA,EAAA;;0BAwBvB,MAAM;2BAAC,yBAAyB;;;AE3B/C,MAAM,YAAY,GAAW,SAAS;AACtC,MAAM,SAAS,GAAW,IAAI;MASjB,mBAAmB,CAAA;AAErB,IAAA,OAAO;AACP,IAAA,UAAU,GAAa;AAC9B,QAAA,EAAE,iBAAiB,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,GAAG;QAC3D,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,0BAA0B,EAAE;QACvF,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,0BAA0B,EAAE;AAC5E,QAAA;AACE,YAAA,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS;AACpC,YAAA,UAAU,EAAE,wBAAwB;AACpC,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,gBAAgB,EAAE;AAChB,gBAAA,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;aAC3B,EAAE,MAAM,EAAE;AACZ,SAAA;QACD,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,0BAA0B,EAAE;QACxF,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,0BAA0B,EAAE;AACzF,QAAA;AACE,YAAA,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW;AACjD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,gBAAgB,EAAE;AAChB,gBAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACnB,aAAA;AACF,SAAA;KACF;IACQ,eAAe,GAAa,EAAE;AAC9B,IAAA,SAAS;IACT,qBAAqB,GAAW,iBAAiB;IACjD,iBAAiB,GAA0B,UAAU;IACrD,aAAa,GAAY,KAAK;IAC9B,yBAAyB,GAAY,KAAK;IAC1C,iBAAiB,GAAY,KAAK;AAEjC,IAAA,YAAY,GAAG,IAAI,YAAY,EAAO;AACtC,IAAA,cAAc,GAAG,IAAI,YAAY,EAAO;AACxC,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAO;AAC5C,IAAA,sBAAsB,GAAG,IAAI,YAAY,EAAO;AAChD,IAAA,aAAa,GAAG,IAAI,YAAY,EAAO;AACvC,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAO;AAE1B,IAAA,cAAc;IAG3C,QAAQ,GAAA;AACN,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU;AAElC,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,GAAG,QAAQ;YAC3B,IAAI,CAAC,kBAAkB,EAAE;QAC3B;IACF;AAEA,IAAA,WAAW,GAAW,MAAM,CAAC,UAAU;AACvC,IAAA,OAAO;IACP,yBAAyB,GAA2B,EAAE;IACtD,SAAS,GAAY,IAAI;AACzB,IAAA,OAAO;IACP,mBAAmB,GAAG,KAAK;AAE3B,IAAA,aAAa,GAAG;AACd,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,SAAS,EAAE,EAAE;KACd;AAED,IAAA,WAAW,GAAG;AACZ,QAAA,oBAAoB,EAAE,IAAI;AAC1B,QAAA,2BAA2B,EAAE,KAAK;AAClC,QAAA,aAAa,EAAE;AACb,YAAA,cAAc,EAAE,eAAe;AAChC,SAAA;AACD,QAAA,SAAS,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;AACpC,QAAA,UAAU,EAAE;AACV,YAAA,SAAS,EAAE,mBAAmB;AAC9B,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,WAAW,EAAE,YAAY;AAC1B,SAAA;KACK;AAER,IAAA,mBAAmB,GAAG,EAAE,sBAAsB,EAAE,qBAAqB,EAAE;AAEvE,IAAA,SAAS,GAAW,eAAe,CAAC,OAAO;IAC3C,UAAU,GAAW,MAAM;AAC3B,IAAA,aAAa;AACb,IAAA,MAAM;AACN,IAAA,YAAY;AAEZ,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,YAAA,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE;AACvC,gBAAA,IAAI,CAAC,yBAAyB,GAAG,EAAE;AACnC,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,gBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM;oBAC/B,IAAI,CAAC,kBAAkB,EAAE;gBAE3B,IAAI,IAAI,CAAC,cAAc;oBACrB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;YACnH;QACF;QAEA,IAAI,OAAO,CAAC,YAAY,CAAC;YAAE,IAAI,CAAC,eAAe,EAAE;QAEjD,IAAI,CAAC,OAAO,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE;IAC1C;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;IAC9F;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;IAChC;AAEA,IAAA,oBAAoB,CAAC,MAAwB,EAAA;AAC3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AAEpB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM;YAC/B;AAEF,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;IACjC;AAEA,IAAA,YAAY,CAAC,MAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG;QACzB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;AAEA,IAAA,eAAe,CAAC,iBAAoC,EAAA;QAClD,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM;YACjD;AAEF,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;IAC5C;AAEA,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAC5B,QAAA,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE;IAC7B;AAEA,IAAA,oBAAoB,CAAC,KAAK,EAAA;QACxB,IAAI,IAAI,CAAC,mBAAmB;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;IACxC;AAEA,IAAA,gBAAgB,CAAC,KAAU,EAAA;QACzB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IACrC;AAEA,IAAA,gBAAgB,CAAC,MAAwB,EAAA;QACvC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;IACzG;AAEA,IAAA,cAAc,CAAC,GAAQ,EAAA;AACrB,QAAA,GAAG,CAAC,IAAI,CAAC,QAAQ;YACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACtC;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QACtB,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YACnD,IAAI,SAAS,CAAC,YAAY;AACxB,gBAAA,SAAS,CAAC,YAAY,GAAG,KAAK;AAClC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,2BAA2B,CAAC,MAAwB,EAAA;AAClD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;IACtC;AAEA,IAAA,6BAA6B,CAAC,kBAAwC,EAAA;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,kCAAkC,CAAC,kBAAkB,CAAC;QAElF,IAAI,cAAc,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5D;AAEA,IAAA,oBAAoB,CAAC,kBAAwC,EAAA;QAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,kCAAkC,CAAC,kBAAkB,CAAC;QAElF,IAAI,cAAc,KAAK,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC3D;AAEQ,IAAA,cAAc,CAAC,YAAoB,EAAA;QACzC,MAAM,2BAA2B,GAAG,GAAG;QACvC,MAAM,eAAe,GAAW,EAAE;QAClC,MAAM,WAAW,GAAW,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC,SAAS;QAC3E,MAAM,cAAc,GAAG,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS;AAE3D,QAAA,IAAI,CAAC,YAAY;YACf,OAAO,CAAA,EAAG,2BAA2B,CAAA,EAAA,CAAI;QAE3C,IAAI,WAAW,GAAG,cAAc;YAC9B,OAAO,cAAc,GAAG,SAAS;AAEnC,QAAA,OAAO,oFAAoF;IAC7F;AAEQ,IAAA,kBAAkB,CAAC,MAA4C,EAAA;QACrE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAa,KAAI;YACvC,IAAI,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9C,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC1B,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;IACzB;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACzB,IAAI,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,OAAO,CAAC,CAAC;iBACN,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACpF,gBAAA,OAAO,CAAC;;AAER,gBAAA,OAAO,CAAC;AACZ,QAAA,CAAC,CAAC;IACJ;IAEQ,kBAAkB,GAAA;QACxB,MAAM,oBAAoB,GAAW,CAAC;QACtC,MAAM,8CAA8C,GAAW,CAAC;QAEhE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC,MAAW,KAAI;AAClD,YAAA,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,GAAG,oBAAoB,GAAG,8CAA8C,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,EAAG,CAAC,MAAM,CAAC;AACpM,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,eAAe,CAAC,KAAa,EAAA;QACnC,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY;YAClD;QAEF,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YACnD,IAAI,SAAS,CAAC,YAAY;AACxB,gBAAA,SAAS,CAAC,YAAY,GAAG,KAAK;AAClC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC;YACvC;QACF;QAEA,MAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC;AAErH,QAAA,IAAI,oBAAoB,CAAC,MAAM,EAAE;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,oBAAoB,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1E;IACF;AAEQ,IAAA,kCAAkC,CAAC,SAA+B,EAAA;QACxE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACnC,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,UAAU;AAElE,QAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,SAAS,KACxD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,UAAU,KAAK,UAAU,CAAC;IACtG;IAEQ,eAAe,GAAA;AACrB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAEnD,QAAA,IAAI,SAAS;AAAE,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;QAEzC,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAA,EAAG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA,CAAE,CAAC;IACxG;IAEQ,0BAA0B,GAAA;AAChC,QAAA,MAAM,UAAU,GAAa,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;QAEjI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC;AAE5C,QAAA,OAAO,SAAS;IAClB;wGArSW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAFnB,CAAC,0BAA0B,CAAC,iKChBzC,y+CAmBM,EAAA,MAAA,EAAA,CAAA,orMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,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,WAAA,EAAA,IAAA,EAAA7B,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,gCAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,wBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,mCAAA,EAAA,8BAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,qCAAA,EAAA,mCAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,kCAAA,EAAA,sCAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,sCAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,qBAAA,EAAA,+BAAA,EAAA,4BAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,wBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,2CAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,mCAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,iCAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,yBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,2CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,kCAAA,EAAA,uCAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iCAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,gCAAA,EAAA,qCAAA,EAAA,2BAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,qCAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,wBAAA,EAAA,4BAAA,EAAA,oCAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,6BAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,wBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,qCAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FDDO,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EAAA,QAAA,EACP,aAAa,EAAA,SAAA,EAGZ,CAAC,0BAA0B,CAAC,EAAA,QAAA,EAAA,y+CAAA,EAAA,MAAA,EAAA,CAAA,orMAAA,CAAA,EAAA;;sBAItC;;sBACA;;sBAwBA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,gBAAgB;;sBAE1B,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;MEL9B,WAAW,CAAA;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBAnChB,qBAAqB;YACrB,kBAAkB;YAClB,qBAAqB;YACrB,kBAAkB;YAClB,gBAAgB;YAChB,kBAAkB;YAClB,yBAAyB;YACzB,mBAAmB;YACnB,mBAAmB;AACnB,YAAA,0BAA0B,aAgB1B,YAAY;YACZiC,aAAW;YACX,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,YAAY;YACZC,aAAW;AACX,YAAA,eAAe,aApBf,qBAAqB;YACrB,kBAAkB;YAClB,qBAAqB;YACrB,kBAAkB;YAClB,gBAAgB;YAChB,kBAAkB;YAClB,yBAAyB;YACzB,mBAAmB;YACnB,mBAAmB;YACnB,0BAA0B;YAC1B,YAAY,CAAA,EAAA,CAAA;AAaP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAVhB,YAAY;YACZD,aAAW;YACX,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,YAAY;YACZC,aAAW;AACX,YAAA,eAAe,EAVf,YAAY,CAAA,EAAA,CAAA;;4FAaP,WAAW,EAAA,UAAA,EAAA,CAAA;kBArCvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,qBAAqB;wBACrB,kBAAkB;wBAClB,qBAAqB;wBACrB,kBAAkB;wBAClB,gBAAgB;wBAChB,kBAAkB;wBAClB,yBAAyB;wBACzB,mBAAmB;wBACnB,mBAAmB;wBACnB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,qBAAqB;wBACrB,kBAAkB;wBAClB,qBAAqB;wBACrB,kBAAkB;wBAClB,gBAAgB;wBAChB,kBAAkB;wBAClB,yBAAyB;wBACzB,mBAAmB;wBACnB,mBAAmB;wBACnB,0BAA0B;wBAC1B;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZD,aAAW;wBACX,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,YAAY;wBACZC,aAAW;wBACX;AACH,qBAAA;AACJ,iBAAA;;;MCuGY,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAnG1B,qBAAqB;YACrB,yBAAyB;YACzB,yBAAyB;YACzB,2BAA2B;YAC3B,uBAAuB;YACvB,yBAAyB;YACzB,mBAAmB;YACnB,gCAAgC;YAChC,oBAAoB;YACpB,mBAAmB;YAEnB,kBAAkB;YAClB,mBAAmB;YACnB,+BAA+B;YAC/B,8BAA8B;YAC9B,uBAAuB;YACvB,kBAAkB;YAClB,uBAAuB;YACvB,gCAAgC;YAChC,mBAAmB;YAEnB,6BAA6B;YAC7B,yBAAyB;YACzB,oBAAoB;YACpB,oBAAoB;YACpB,uBAAuB;YACvB,2BAA2B;YAC3B,sBAAsB;YACtB,iCAAiC;YACjC,kCAAkC;YAClC,6BAA6B;YAC7B,oBAAoB;YACpB,+BAA+B;AAC/B,YAAA,uBAAuB,aAoCvB,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,aAAa;YACb,eAAe;YACf,qBAAqB;YACrB,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,WAAW;YACX,eAAe;YACf,YAAY;YACZ,oBAAoB;AACpB,YAAA,WAAW,aAxDX,yBAAyB;YACzB,qBAAqB;YACrB,mBAAmB;YACnB,yBAAyB;YACzB,uBAAuB;YACvB,yBAAyB;YACzB,oBAAoB;YACpB,yBAAyB;YACzB,kBAAkB;YAClB,mBAAmB;YACnB,uBAAuB;YACvB,YAAY;YACZ,6BAA6B;YAC7B,oBAAoB;YACpB,uBAAuB;YACvB,2BAA2B;YAC3B,iCAAiC;YACjC,oBAAoB;YACpB,kCAAkC;YAClC,6BAA6B;YAC7B,kBAAkB;YAClB,8BAA8B;YAC9B,gCAAgC;YAChC,+BAA+B;YAC/B,aAAa;YACb,WAAW;YACX,eAAe;YACf,WAAW;YACX,YAAY;YACZ,oBAAoB;YACpB,WAAW,CAAA,EAAA,CAAA;AAiCF,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,SAAA,EALjB;YACT,QAAQ;AACR,YAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAChD,SAAA,EAAA,OAAA,EAAA,CA5BC,YAAY;YACZ,mBAAmB;YACnB,WAAW;YACX,aAAa;YACb,eAAe;YACf,qBAAqB;YACrB,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,mBAAmB;YACnB,aAAa;YACb,WAAW;YACX,WAAW;YACX,eAAe;YACf,YAAY;YACZ,oBAAoB;AACpB,YAAA,WAAW,EA7CX,YAAY;YAaZ,aAAa;YACb,WAAW;YACX,eAAe;YACf,WAAW;YACX,YAAY;YACZ,oBAAoB;YACpB,WAAW,CAAA,EAAA,CAAA;;4FAiCF,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArG7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,qBAAqB;wBACrB,yBAAyB;wBACzB,yBAAyB;wBACzB,2BAA2B;wBAC3B,uBAAuB;wBACvB,yBAAyB;wBACzB,mBAAmB;wBACnB,gCAAgC;wBAChC,oBAAoB;wBACpB,mBAAmB;wBAEnB,kBAAkB;wBAClB,mBAAmB;wBACnB,+BAA+B;wBAC/B,8BAA8B;wBAC9B,uBAAuB;wBACvB,kBAAkB;wBAClB,uBAAuB;wBACvB,gCAAgC;wBAChC,mBAAmB;wBAEnB,6BAA6B;wBAC7B,yBAAyB;wBACzB,oBAAoB;wBACpB,oBAAoB;wBACpB,uBAAuB;wBACvB,2BAA2B;wBAC3B,sBAAsB;wBACtB,iCAAiC;wBACjC,kCAAkC;wBAClC,6BAA6B;wBAC7B,oBAAoB;wBACpB,+BAA+B;wBAC/B,uBAAuB;AACxB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,yBAAyB;wBACzB,qBAAqB;wBACrB,mBAAmB;wBACnB,yBAAyB;wBACzB,uBAAuB;wBACvB,yBAAyB;wBACzB,oBAAoB;wBACpB,yBAAyB;wBACzB,kBAAkB;wBAClB,mBAAmB;wBACnB,uBAAuB;wBACvB,YAAY;wBACZ,6BAA6B;wBAC7B,oBAAoB;wBACpB,uBAAuB;wBACvB,2BAA2B;wBAC3B,iCAAiC;wBACjC,oBAAoB;wBACpB,kCAAkC;wBAClC,6BAA6B;wBAC7B,kBAAkB;wBAClB,8BAA8B;wBAC9B,gCAAgC;wBAChC,+BAA+B;wBAC/B,aAAa;wBACb,WAAW;wBACX,eAAe;wBACf,WAAW;wBACX,YAAY;wBACZ,oBAAoB;wBACpB,WAAW;AACZ,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,WAAW;wBACX,aAAa;wBACb,eAAe;wBACf,qBAAqB;wBACrB,cAAc;wBACd,kBAAkB;wBAClB,gBAAgB;wBAChB,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,mBAAmB;wBACnB,aAAa;wBACb,WAAW;wBACX,WAAW;wBACX,eAAe;wBACf,YAAY;wBACZ,oBAAoB;wBACpB;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,QAAQ;AACR,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAChD;AACF,iBAAA;;;AC5JM,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE;AAC1C,IAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC;AAClB,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,SAAS,EAAE;AACd,KAAA,CAAC,CAAC;AAEH,IAAA,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;AACpB,QAAA,OAAO,EAAE;AACZ,KAAA,CAAC,CAAC;AAEH,IAAA,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC;AACrB,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,SAAS,EAAE,mBAAmB;AAC9B,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,MAAM,EAAE,KAAK;AAChB,KAAA,CAAC,CAAC;AAEH,IAAA,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AACnB,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,OAAO,EAAC;AACX,KAAA,CAAC,CAAC;IAEH,UAAU,CAAC,qBAAqB,EAAE;QAC9B,OAAO,CAAC,eAAe;KAC1B,CAAC;IAEF,UAAU,CAAC,qBAAqB,EAAE;QAC9B,OAAO,CAAC,gBAAgB;KAC3B,CAAC;IAEF,UAAU,CAAC,qBAAqB,EAAE;QAC9B,OAAO,CAAC,gBAAgB;KAC3B,CAAC;IAEF,UAAU,CAAC,qBAAqB,EAAE;QAC9B,OAAO,CAAC,eAAe;KAC1B;AACJ,CAAA;;AC9BD,MAAM,gBAAgB,GAAW,2BAA2B;MAK/C,qBAAqB,CAAA;AAKZ,IAAA,IAAA;AAA0B,IAAA,MAAA;AAA8D,IAAA,iBAAA;AAHpG,IAAA,SAAS;AACT,IAAA,UAAU;AAElB,IAAA,WAAA,CAAoB,IAAgB,EAAU,MAAiB,EAA6C,iBAAoC,EAAA;QAA5H,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,MAAM,GAAN,MAAM;QAAwD,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;AAEpJ,IAAA,oBAAoB,CAAC,SAAiB,EAAE,UAAkB,EAAE,SAAS,GAAG,IAAI,EAAA;AAC1E,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAE5B,MAAM,gCAAgC,GAAG,UAAU,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,gBAAgB;QAE1F,IAAI,SAAS,IAAI,CAAChB,gBAAc,CAAC,OAAO,CAAC,gCAAgC,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC,cAA8B,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACxK,YAAAA,gBAAc,CAAC,OAAO,CAAC,gCAAgC,EAAE,gCAAgC,CAAC;QAC5F;IACF;AAEQ,IAAA,aAAa,CAAC,UAAkB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;IAC9B;AAEQ,IAAA,YAAY,CAAC,SAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;IAEA,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrH;AA7BW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,yEAKyC,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AALvF,IAAA,OAAA,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;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAMmE,MAAM;2BAAC,yBAAyB;;;MCNvF,oBAAoB,CAAA;AAcrB,IAAA,MAAA;AACA,IAAA,IAAA;AACA,IAAA,YAAA;AACmC,IAAA,iBAAA;IAf7C,2BAA2B,GAAY,KAAK;IAE5C,kCAAkC,GAAuB,EAAE;IAC3D,+BAA+B,GAAoC,EAAE;AAErE,IAAA,mBAAmB,GAAoB,IAAI,OAAO,EAAE;AACpD,IAAA,4BAA4B,GAAoB,IAAI,OAAO,EAAE;AAE7D,IAAA,2BAA2B,GAAmC,IAAI,OAAO,EAAE;AAC3E,IAAA,WAAW,GAA2C,IAAI,OAAO,EAAE;AAEnE,IAAA,WAAA,CACU,MAAiB,EACjB,IAAgB,EAChB,YAA0B,EACS,iBAAoC,EAAA;QAHvE,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,YAAY,GAAZ,YAAY;QACuB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;IAErF,WAAW,CAAC,WAAmB,EAAE,SAAe,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS;YACZ;AAEF,QAAA,IAAI,GAAG,GAAW,SAAS,EAAE,GAAG;AAEhC,QAAA,IAAI,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE;AAClC,YAAA,MAAM,0BAA0B,GAA0B,EAAE,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,EAAE,gCAAgC,EAAE,SAAS,CAAC,gCAAgC,EAAE,WAAW,EAAE;YACzM,IAAI,CAAC,2BAA2B,CAAC,0BAA0B,EAAE,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;QAC9F;AAEA,QAAA,IAAI,SAAS,CAAC,OAAO,EAAE,sBAAsB;YAC3C,IAAI,CAAC,sCAAsC,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,CAAC;QAEvF,MAAM,kBAAkB,GAAY,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC;AAEnF,QAAA,IAAI,kBAAkB;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAElC,IAAI,SAAS,IAAI,UAAU;AACzB,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;QAEtC,QAAQ,WAAW;AACjB,YAAA,KAAK,GAAG;gBAAE,IAAI,CAAC,uBAAuB,EAAE;gBAAE;AAC1C,YAAA,KAAK,GAAG;AAAE,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,kBAAkB,CAAC;gBAAE;AAC1D,YAAA,KAAK,GAAG;gBAAE,IAAI,CAAC,mBAAmB,EAAE;gBAAE;AACtC,YAAA,KAAK,GAAG;gBAAE,IAAI,CAAC,yBAAyB,EAAE;gBAAE;AAC5C,YAAA,KAAK,GAAG;AAAE,gBAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,kBAAkB,CAAC;gBAAE;YACxD,SAAS;;AAGX,QAAA,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,UAAU,CAAC;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,SAAS,EAAE;IAC1F;AAEA,IAAA,qCAAqC,CAAC,iCAAmD,EAAA;AACvF,QAAA,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,iCAAiC,CAAC;IACjF;IAEQ,uBAAuB,GAAA;AAC7B,QAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACrC;IAEQ,mBAAmB,GAAA;AACzB,QAAA,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACjC;AAEQ,IAAA,oBAAoB,CAAC,kBAA2B,EAAA;AACtD,QAAA,IAAI,IAAI,CAAC,2BAA2B,IAAI,CAAC,kBAAkB;YAAE;AAC7D,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC4B,6BAA2B,EAAE;AAC9D,YAAA,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC,oBAAoB;AAC9F,SAAA,CAAC;AAEF,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;IACvF;AAEQ,IAAA,kBAAkB,CAAC,kBAA2B,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,2BAA2B,IAAI,CAAC,kBAAkB;YAAE;AAC7D,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAACA,6BAA2B,EAAE;AAC9D,YAAA,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,YAAY,EAAE,WAAW,EAAE,mBAAmB,CAAC,YAAY;AACzF,SAAA,CAAC;AAEF,QAAA,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;IACvF;IAEQ,yBAAyB,CAAC,aAAsB,KAAK,EAAA;QAC3D,IAAI,IAAI,CAAC,2BAA2B;YAClC;AAEF,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAACA,6BAA2B,EAAE;AAC9D,YAAA,IAAI,EAAE;gBACJ,KAAK,EAAE,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU;AACvD,oBAAA,mBAAmB,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AACjE;AACF,SAAA,CAAC;QAEF,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;AACzC,YAAA,IAAI,CAAC,2BAA2B,GAAG,KAAK;AAC1C,QAAA,CAAC,CAAC;IACJ;IAEQ,2BAA2B,CAAC,0BAAiD,EAAE,kBAA0B,EAAA;AAC/G,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACjD,QAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,0BAA0B,CAAC;IACnE;AAEQ,IAAA,sCAAsC,CAAC,6BAAqC,EAAA;AAClF,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,6BAA6B,CAAC;IACvE;IAEQ,kBAAkB,CAAC,SAAc,EAAE,SAAiB,EAAA;AAC1D,QAAA,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS;AAC/E,YAAA,OAAO,KAAK;AAEd,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,4CAA4C,CAAC,SAAS,CAAC,GAAG,CAAC;IACxF;AAEQ,IAAA,gBAAgB,CAAC,SAAc,EAAA;AACrC,QAAA,IAAI,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE;AAClC,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;AACpC,gBAAA,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC,kBAAkB;gBACxD,gCAAgC,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,gCAAgC,CAAC;gBAC5F,WAAW,EAAE,SAAS,CAAC;AACxB,aAAA,CAAC;YACF;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,SAAS,CAAC,GAAG;YAClB,MAAM,EAAE,SAAS,CAAC;AACnB,SAAA,CAAC;IACJ;AAEA,IAAA,mCAAmC,CAAC,WAAmB,EAAE,KAAwB,EAAE,qCAAsE,EAAE,YAAkB,EAAA;AAC3K,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,+BAA+B,CAAC,WAAW,CAAC;AAC9G,YAAA,IAAI,CAAC,+BAA+B,CAAC,WAAW,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC;;YAEzI,IAAI,CAAC,+BAA+B,CAAC,WAAW,CAAC,GAAG,YAAY,GAAG,EAAE,KAAK,EAAE,qCAAqC,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,qCAAqC,EAAE;IACxL;AA9IW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,uGAiBrB,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAjBxB,IAAA,OAAA,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;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAkBI,MAAM;2BAAC,yBAAyB;;;MCpBxB,iBAAiB,CAAA;AAQR,IAAA,oBAAA;AANpB,IAAA,iBAAiB,GAAsB;AACrC,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,kBAAkB,EAAE,CAAC;AACrB,QAAA,gCAAgC,EAAE;KACnC;AAED,IAAA,WAAA,CAAoB,oBAA0C,EAAA;QAA1C,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;IAA0B;IAElE,wBAAwB,CAAC,gBAAiD,EAAE,YAAkB,EAAA;AAC5F,QAAA,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,GAAG,CAAC;AAC3D,QAAA,EAAE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB;AAE3C,QAAA,IAAI,CAAC,oCAAoC,CAAC,gBAAgB,CAAC;QAE3D,IAAI,CAAC,gBAAgB,CAAC,MAAM;AAC1B,YAAA,OAAO,KAAK;AAEd,QAAA,MAAM,eAAe,GAAwD,gBAAgB,CAAC,CAAC,CAAC;AAChG,QAAA,IAAI,iBAAiB,GAAoB,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC;QACnH,OAAO,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IACnE;AAEQ,IAAA,oBAAoB,CAAC,gBAAiD,EAAE,eAAoE,EAAE,YAAkB,EAAA;QACtK,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;YACpC,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC;YAClF,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC;IAC/E;AAEQ,IAAA,4BAA4B,CAAC,gBAAiD,EAAE,gBAA2C,EAAE,YAAkB,EAAA;QACrJ,IAAI,iBAAiB,GACnB,gBAAgB,CAAC,GAAG,CAAC,CAAC,aAAsC,EAAE,oBAA4B,KAAI;YAC5F,MAAM,SAAS,IAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAChE,YAAA,MAAM,eAAe,GAAoB,YAAY;AACnD,gBAAA,aAAa,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE;AACjF,kBAAE,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;YAExE,OAAO,eAAe,CAAC,IAAI,CACzB,UAAU,CAAC,CAAC,KAAwB,KAAI;AACtC,gBAAA,MAAM,8BAA8B,GAAY,gBAAgB,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;AAC3G,gBAAA,MAAM,eAAe,GAAG,8BAA8B,GAAG,CAAC,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACrM,gBAAA,IAAI,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC;AACzH,gBAAA,OAAO,KAAK;YACd,CAAC,CAAC,CACH;AACH,QAAA,CAAC,CAAC;AACJ,QAAA,OAAO,QAAQ,CAAC,iBAAiB,CAAC;IACpC;AAEQ,IAAA,qBAAqB,CAAC,gBAAiD,EAAE,eAAwC,EAAE,YAAkB,EAAA;AAC3I,QAAA,OAAO,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;AAErD,YAAA,eAAe,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;AAE9G,cAAE,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;AAE/F,iBAAA,IAAI,CACH,UAAU,CAAC,CAAC,KAAwB,KAAI;AACtC,gBAAA,YAAY;oBACV,IAAI,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,CAAC;AACnJ,oBAAA,IAAI,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC;AACvI,gBAAA,OAAO,KAAK;YACd,CAAC,CAAC,CACH;IACP;IAEQ,gBAAgB,CAAC,gBAAiD,EAAE,iBAAkC,EAAA;AAC5G,QAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,cAAc,KAAI;YAC/E,OAAO,GAAG,CAAC,IAAI,CACb,SAAS,CAAC,CAAC,MAAW,KAAI;gBACxB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;oBACpC,IAAI,CAAC,qCAAqC,CAAC,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc;;wBAEpG,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,CAAC;YAClG,CAAC,CAAC,CACH;QACH,CAAC,EAAE,iBAAiB,CAAC;IACvB;AAEQ,IAAA,qCAAqC,CAAC,gBAAiD,EAAE,gBAA2C,EAAE,MAAW,EAAE,cAAsB,EAAA;QAC/K,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,aAAsC,EAAE,kBAA0B,KAAI;YAC9G,MAAM,SAAS,IAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;YAChE,OAAO,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CACtF,UAAU,CAAC,CAAC,KAAwB,KAAI;AACtC,gBAAA,MAAM,8BAA8B,GAAY,gBAAgB,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;AACrG,gBAAA,MAAM,eAAe,GAAG,8BAA8B,GAAG,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC3L,gBAAA,IAAI,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC;AACnH,gBAAA,OAAO,KAAK;YACd,CAAC,CAAC,CACH;AACH,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,QAAQ,CAAC,WAAW,CAAC;IAC9B;AAEA,IAAA,8BAA8B,CAAC,gBAAiD,EAAE,eAAwC,EAAE,MAAW,EAAE,cAAsB,EAAA;AAC7J,QAAA,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CACnH,UAAU,CAAC,CAAC,KAAwB,KAAI;YACtC,IAAI,CAAC,oBAAoB,CAAC,mCAAmC,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;AACvK,YAAA,OAAO,KAAK;QACd,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,oCAAoC,CAAC,+BAAgE,EAAA;AAC3G,QAAA,+BAA+B,CAAC,OAAO,CAAC,8BAA8B,IAAG;AACvE,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC;AAChD,gBAAA,EAAE,IAAI,CAAC,iBAAiB,CAAC,gCAAgC;;AAEzD,gBAAA,IAAI,CAAC,oCAAoC,CAAC,8BAA2D,CAAC;AAC1G,QAAA,CAAC,CAAC;IACJ;wGA/GW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCCY,aAAa,CAAA;AAOd,IAAA,oBAAA;AACA,IAAA,YAAA;AACmC,IAAA,iBAAA;AAP7C,IAAA,MAAM,GAA2B,IAAI,eAAe,CAAQ,SAAS,CAAC;IACtE,OAAO,GAAW,CAAC;AACnB,IAAA,eAAe;AAEf,IAAA,WAAA,CACU,oBAA0C,EAC1C,YAA0B,EACS,iBAAoC,EAAA;QAFvE,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,YAAY,GAAZ,YAAY;QACuB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;AAE5D,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,6BAA6B,IAAI,IAAI,CAAC,8BAA8B,CAAC,6BAA6B,CAAC,CAAC;AAErJ,QAAA,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAC9H;AAEA,IAAA,8BAA8B,CAAC,6BAA4D,EAAA;AACzF,QAAA,IAAI,CAAC,6BAA6B;YAChC;AAEF,QAAA,IAAI,UAAU,GAAW,6BAA6B,EAAE,GAAG;QAC3D,IAAI,wBAAwB,GAAuB,IAAI,CAAC,YAAY,CAAC,4CAA4C,CAAC,UAAU,CAAC;AAE7H,QAAA,IAAI,CAAC,wBAAwB;YAC3B;QAEF,IAAI,MAAM,GAAgB,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC,MAAM,CAAC;QACnF,IAAI,OAAO,GAAW,MAAM,KAAK,aAAa,CAAC,OAAO;YACpD,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,wBAAwB,CAAC;AACzD,YAAA,IAAI,CAAC,4BAA4B,CAAC,6BAA6B,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,wBAAwB,CAAC;AAE9G,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC;IAC/E;IAEA,4BAA4B,CAAC,UAAkB,EAAE,wBAAgC,EAAA;AAC/E,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC;YACvC,UAAU,GAAG,cAAc;QAE7B,OAAO,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,wBAAwB,CAAC;IACvE;AAEA,IAAA,cAAc,CAAC,eAAuB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;YACxC;AAEF,QAAA,IAAI,OAAO,GAAW,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC;QAChF,IAAI,KAAK,GAAW,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,KAAK;QAE/D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC;IACrD;AAEA,IAAA,gBAAgB,CAAC,eAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;YACxC;AAEF,QAAA,IAAI,OAAO,GAAW,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;QAClF,IAAI,KAAK,GAAW,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,KAAK;QAE/D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;IACvD;AAEA,IAAA,oBAAoB,CAAC,eAAuB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;YACxC;AAEF,QAAA,IAAI,OAAO,GAAW,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC;QACtF,IAAI,KAAK,GAAW,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,KAAK;QAE/D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC;IAC3D;AAEA,IAAA,iBAAiB,CAAC,eAAuB,EAAE,MAAmB,EAAE,eAAwB,EAAA;AACtF,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;YACxC;AAEF,QAAA,IAAI,IAAI,CAAC,qCAAqC,CAAC,eAAe,CAAC;YAC7D;QAEF,IAAI,OAAO,GAAW,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;QACnE,IAAI,KAAK,GAAW,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,KAAK;QAE/D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;IACxC;AAEQ,IAAA,qCAAqC,CAAC,eAAuB,EAAA;AACnE,QAAA,IAAI,CAAC,eAAe;AAClB,YAAA,OAAO,KAAK;AAEd,QAAA,IAAI7B,gBAAc,CAAC,OAAO,CAAC,eAAe,CAAC;AACzC,YAAA,OAAO,IAAI;AAEb,QAAAA,gBAAc,CAAC,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC;AACxD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,MAAmB,EAAA;QAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC/F;AAEQ,IAAA,cAAc,CAAC,UAAkB,EAAA;AACvC,QAAA,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YACvC,OAAO,aAAa,CAAC,OAAO;AAC9B,QAAA,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG;YACvC,OAAO,aAAa,CAAC,KAAK;IAC9B;AAxGW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iFASd,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AATxB,IAAA,OAAA,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;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAUI,MAAM;2BAAC,yBAAyB;;;MCLxB,qBAAqB,CAAA;AAKZ,IAAA,oBAAA;AACV,IAAA,iBAAA;AACA,IAAA,IAAA;AACA,IAAA,aAAA;IANV,oBAAoB,GAA4B,IAAI,eAAe,CAAS,kBAAkB,CAAC,0BAA0B,CAAC;AAC1H,IAAA,wBAAwB,GAA8C,IAAI,eAAe,CAA2B,EAAE,CAAC;AAEvH,IAAA,WAAA,CAAoB,oBAA0C,EACpD,iBAAoC,EACpC,IAAgB,EAChB,aAA4B,EAAA;QAHlB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QAC9B,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,aAAa,GAAb,aAAa;QACnB,IAAI,CAAC,gBAAgB,EAAE;IAAE;IAErB,gBAAgB,GAAA;QACtB,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,SAAS,CAAC,kBAAkB,IACzE,IAAI,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,cAAc,CAAC,KAAK,CAAC,CAC1E;QAED,IAAI,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,SAAS,CAAC,6BAA6B,IAC5F,IAAI,CAAC,0BAA0B,CAAC,6BAA6B,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;AAEvF,QAAA,IAAI,CAAC,oBAAoB,CAAC,2BAA2B,EAAE,SAAS,CAAC,0BAA0B,IACzF,IAAI,CAAC,gCAAgC,CAAC,0BAA0B,CAAC,CAAC;IACtE;IAEQ,0BAA0B,CAAC,gBAAwB,EAAE,MAA4B,EAAA;QACvF,IAAI,uBAAuB,GAA6B,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE;AAChG,QAAA,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,EAAE,KAAK,gBAAgB,CAAC,CAAC,MAAM,GAAG,MAAM;AACtH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAC7D;IAEA,kBAAkB,GAAA;QAChB,MAAM,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE;QACxE,MAAM,wBAAwB,GAAa;AACxC,aAAA,MAAM,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,KAAK,cAAc,CAAC,KAAK;aACvF,GAAG,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,EAAE,CAAC;AAE3D,QAAA,OAAO,wBAAwB,CAAC,GAAG,CAAC,sBAAsB,IAAI,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;IAC/G;AAEA,IAAA,iBAAiB,CAAC,gBAAwB,EAAA;QACxC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,EAAE,KAAK,gBAAgB,CAAC,CAAC;QAE7J,OAAO,IAAI,CAAC,oBAAoB,CAAC,+BAA+B,CAAC,gBAAgB,CAAC;AAChF,YAAA,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,CAAC;AACnD,YAAA,IAAI,CAAC,+BAA+B,CAAC,gBAAgB,CAAC;IAC1D;AAEQ,IAAA,4BAA4B,CAAC,gBAAwB,EAAA;QAC3D,MAAM,6BAA6B,GAAoC,IAAI,CAAC,oBAAoB,CAAC,+BAA+B,CAAC,gBAAgB,CAAC;AAClJ,QAAA,MAAM,YAAY,GAAQ,6BAA6B,CAAC,YAAY;AACpE,QAAA,MAAM,yBAAyB,GAAoC,6BAA6B,CAAC,qCAAqC;AAEtI,QAAA,OAAO,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,yBAAyB,EAAE,YAAY,CAAC;AAC5G,YAAA,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,yBAAyB,CAAC;IAC9E;AAEQ,IAAA,+BAA+B,CAAC,gBAAwB,EAAA;QAC9D,MAAM,0BAA0B,GAAW,IAAI,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,KAAK,gBAAgB,CAAC;AAExN,QAAA,IAAI,0BAA0B,KAAK,CAAC,CAAC,EAAE;YACrC,MAAM,kCAAkC,GAAqB,IAAI,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,0BAA0B,CAAC;YACrJ,IAAI,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAElG,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kCAAkC,CAAC,MAAM,EAAE,kCAAkC,CAAC,GAAG,EACxG;gBACE,IAAI,EAAE,kCAAkC,CAAC,IAAI;AAC7C,gBAAA,YAAY,EAAE,MAAM;AACpB,gBAAA,cAAc,EAAE;AACjB,aAAA,CACF;QACH;IACF;AAEA,IAAA,iCAAiC,CAAC,sBAA8C,EAAA;AAC9E,QAAA,IAAI,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK;AAEjE,QAAA,IAAI,uBAAuB,CAAC,IAAI,CAAC,6BAA6B,IAAI,6BAA6B,CAAC,EAAE,IAAI,sBAAsB,CAAC,EAAE,CAAC;AAC9H,YAAA,uBAAuB,GAAG,uBAAuB,CAAC,MAAM,CAAC,4BAA4B,IAAI,4BAA4B,CAAC,EAAE,IAAI,sBAAsB,CAAC,EAAE,CAAC;AAExJ,QAAA,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC;AACpD,QAAA,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;AAErE,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAC7D;AAEA,IAAA,qBAAqB,CAAC,gBAAwB,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,uBAAuB,IAAI,uBAAuB,CAAC,EAAE,KAAK,gBAAgB,CAAC;IAClI;AAEA,IAAA,gCAAgC,CAAC,qBAA4C,EAAA;QAC3E,MAAM,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,WAAW,EAAE,GAAG,qBAAqB;AAEnG,QAAA,IAAI,CAAC,kBAAkB;YACrB;QAEF,MAAM,qBAAqB,GAA6B,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,cAAc,IAAI,cAAc,CAAC,kBAAkB,KAAK,kBAAkB,CAAC;QACnL,IAAI,gCAAgC,GAAY,KAAK;AACrD,QAAA,MAAM,mCAAmC,GAAY,qBAAqB,CAAC,MAAM,KAAK,gCAAgC;AACtH,QAAA,MAAM,8CAA8C,GAAY,qBAAqB,CAAC,KAAK,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO,CAAC;AAE3K,QAAA,IAAI,qBAAqB,CAAC,KAAK,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO,CAAC,IAAI,mCAAmC;YACpJ,gCAAgC,GAAG,IAAI;AAEzC,QAAA,IAAI,CAAC,gCAAgC,IAAI,CAAC,WAAW;YACnD;QAEF,IAAI,KAAK,GAAW,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;QACxD,IAAI,OAAO,GAAW,8CAA8C,GAAG,CAAA,MAAA,EAAS,KAAK,CAAA,QAAA,CAAU,GAAG,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC;AACtL,QAAA,IAAI,MAAM,GAAgB,8CAA8C,GAAG,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK;QAEtH,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;IACtD;wGA9GW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA6B,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAhD,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAiD,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,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;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCHY,oBAAoB,CAAA;AAUX,IAAA,aAAA;AAAsC,IAAA,iBAAA;AARnC,IAAA,aAAa;IAEpC,MAAM,GAAY,EAAE;IACpB,cAAc,GAAW,GAAG;IAC5B,iBAAiB,GAAW,GAAG;IAC/B,eAAe,GAAW,IAAI;IAC9B,GAAG,GAAW,EAAE;IAEhB,WAAA,CAAoB,aAA4B,EAAU,iBAAoC,EAAA;QAA1E,IAAA,CAAA,aAAa,GAAb,aAAa;QAAyB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;IAElG,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAChF;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK;YACR;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAEtC,QAAA,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC;AACtD,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;QAEvE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,YAAwB,EAAE,KAAa,KAAI;AACtE,YAAA,MAAM,kBAAkB,GAAG,YAAY,CAAC,aAAa;YACrD,IAAI,kBAAkB,EAAE;AACtB,gBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK;AAE1B,gBAAA,IAAI,KAAK;AACP,oBAAA,kBAAkB,CAAC,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA,KAAA,EAAQ,GAAG,oBAAoB;gBAExH,IAAI,CAAC,qBAAqB,CAAC,KAAK,GAAG,CAAC,EAAE,YAAY,CAAC;YACrD;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,kBAAkB,CAAC,wBAAgC,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,KAAI;AACxE,YAAA,IAAI,wBAAwB,GAAG,KAAK,EAAE;AACpC,gBAAA,OAAO,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY;YACvD;AACA,YAAA,OAAO,WAAW;QACpB,CAAC,EAAE,CAAC,CAAC;IACP;IAEA,YAAY,CAAC,YAAmB,EAAE,SAAkB,EAAA;QAClD,MAAM,UAAU,GAAW,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;QAE5D,IAAI,UAAU,KAAK,CAAC,CAAC;YACnB;QAEF,MAAM,mBAAmB,GAAoB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC;QACrF,MAAM,aAAa,GAAW,MAAM;AAEpC,QAAA,IAAI,mBAAmB;AACrB,YAAA,mBAAmB,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,mBAAmB,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAA,wBAAA,EAA2B,aAAa,IAAI;AAEtJ,QAAA,IAAI,SAAS,KAAK,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACxD,IAAI,aAAa,GAAsB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,GAAG,UAAU,CAAC;YAE/G,IAAI,CAAC,aAAa,CAAC,MAAM;gBACvB;AAEF,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,YAAwB,KAAI;gBACjD,IAAI,cAAc,GAAW,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS;gBACvE,IAAI,mBAAmB,GAAqB,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBAElF,IAAI,mBAAmB,EAAE;AACvB,oBAAA,IAAI,eAAe,GAAW,mBAAmB,CAAC,CAAC,CAAC;oBACpD,MAAM,iBAAiB,GAAW,CAAA,gBAAA,EAAmB,eAAe,aAAa,IAAI,CAAC,GAAG,CAAA,IAAA,CAAM;oBAE/F,UAAU,CAAC,MAAK;wBACd;4BACE,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,iBAAiB,CAAA,CAAE;AACnE,4BAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;wBAChC;oBACF,CAAC,EAAE,GAAG,CAAC;gBACT;AACF,YAAA,CAAC,CAAC;QACJ;;AAEE,YAAA,UAAU,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC;IAChF;AAEQ,IAAA,WAAW,CAAC,YAAmB,EAAA;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC;IACzE;IAEQ,qBAAqB,CAAC,iBAAyB,EAAE,YAAwB,EAAA;AAC/E,QAAA,IAAI,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,KAAK;QAEjD,IAAI,iBAAiB,KAAK,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC;YAC/D,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAChD,aAAA,IAAI,CAAC,iBAAiB;YACzB,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE;;AAEzF,YAAA,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE;IACvH;AAEA,IAAA,gBAAgB,CAAC,WAAwB,EAAA;AACvC,QAAA,OAAO,WAAW,CAAC,WAAW,CAAC;IACjC;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,aAAa,CAAC,OAAO;IAC9B;wGA5GW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAxE,IAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,oKCXjC,uwBAee,EAAA,MAAA,EAAA,CAAA,svBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAsB,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FDJF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,cAAc,EAAA,QAAA,EAAA,uwBAAA,EAAA,MAAA,EAAA,CAAA,svBAAA,CAAA,EAAA;;sBAMvB,YAAY;uBAAC,OAAO;;;AEJvB,MAAM,sBAAsB,GAAW,SAAS;AAChD,MAAM,8BAA8B,GAAW,SAAS;MAQ3C,4BAA4B,CAAA;AAuBnB,IAAA,qBAAA;AArBpB,IAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;IAErC,eAAe,GAAY,IAAI;AAC/B,IAAA,aAAa,GAAyB,cAAc,CAAC,OAAO;AAC5D,IAAA,WAAW,GAAyB,cAAc,CAAC,KAAK;AACxD,IAAA,aAAa,GAAyB,cAAc,CAAC,OAAO;IAE5D,uBAAuB,GAA6B,EAAE;IACtD,kBAAkB,GAAW,CAAC;IAC9B,yBAAyB,GAAY,KAAK;IAC1C,qBAAqB,GAAW,CAAC;IAEjC,uBAAuB,GAAW,EAAE;IACpC,gBAAgB,GAAW,EAAE;AAG7B,IAAA,6BAA6B,CAAC,KAAU,EAAA;QACtC,IAAI,CAAC,IAAI,CAAC,yBAAyB;AACjC,YAAA,KAAK,CAAC,WAAW,GAAG,IAAI;IAC5B;AAEA,IAAA,WAAA,CAAoB,qBAA4C,EAAA;QAA5C,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;IAA2B;IAEpE,QAAQ,GAAA;QACN,IAAI,CAAC,0BAA0B,EAAE;QACjC,IAAI,CAAC,mCAAmC,EAAE;IAC5C;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC;IACzG;IAEQ,mCAAmC,GAAA;QACzC,IAAI,CAAC,qBAAqB,CAAC;AACxB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;aACpC,SAAS,CAAC,uBAAuB,IAAG;AACnC,YAAA,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;YACtD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,2BAA2B,CAAC,uBAAuB,CAAC;YACnF,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,kCAAkC,CAAC,uBAAuB,CAAC;YACjG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,8BAA8B,CAAC,uBAAuB,CAAC;YACzF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC;AACjF,QAAA,CAAC,CAAC;IACN;IAEA,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;IACjG;AAEA,IAAA,oBAAoB,CAAC,gBAAwB,EAAA;QAC3C,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,SAAS,EAAE;IAC5E;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC;IACrG;IAEA,yBAAyB,GAAA;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe;IAC9C;AAEA,IAAA,wBAAwB,CAAC,OAAoB,EAAA;AAC3C,QAAA,OAAO,uBAAuB,CAAC,OAAO,CAAC;IACzC;AAEA,IAAA,6BAA6B,CAAC,sBAA8C,EAAA;AAC1E,QAAA,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,IAAI,EAAE,sBAAsB,CAAC,MAAM,KAAK,cAAc,CAAC,KAAK,CAAC;AACjH,YAAA,OAAO,CAAA,EAAG,sBAAsB,CAAC,WAAW,CAAA,MAAA,EAAS,sBAAsB,CAAC,SAAS,CAAA,CAAA,EAAI,sBAAsB,CAAC,KAAK,EAAE;AAEzH,QAAA,IAAI,sBAAsB,CAAC,MAAM,KAAK,cAAc,CAAC,KAAK;AACxD,YAAA,OAAO,qBAAqB;QAE9B,IAAI,sBAAsB,CAAC,0BAA0B;AACnD,YAAA,OAAO,oBAAoB;IAC/B;AAEA,IAAA,4BAA4B,CAAC,oBAA0C,EAAA;AACrE,QAAA,OAAO,oBAAoB,KAAK,cAAc,CAAC,KAAK;IACtD;AAEA,IAAA,YAAY,CAAC,kBAAsC,EAAA;AACjD,QAAA,OAAO,WAAW,CAAC,kBAAkB,CAAC;IACxC;AAEA,IAAA,oBAAoB,CAAC,kBAAsC,EAAA;AACzD,QAAA,OAAO,WAAW,CAAC,kBAAkB,CAAC;IACxC;IAEA,UAAU,CAAC,KAAa,EAAE,sBAA8C,EAAA;QACtE,OAAO,sBAAsB,CAAC,EAAE;IAClC;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7E;AAEA,IAAA,2BAA2B,CAAC,uBAAiD,EAAA;QAC3E,IAAI,CAAC,uBAAuB,CAAC,MAAM;AACjC,YAAA,OAAO,CAAC;AAEV,QAAA,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,sBAA8C,KAC7F,GAAG,GAAG,CAAC,sBAAsB,CAAC,WAAW,GAAG,sBAAsB,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;AACzF,QAAA,QAAQ,GAAG,GAAG,uBAAuB,CAAC,MAAM;IAC9C;AAEA,IAAA,kCAAkC,CAAC,uBAAiD,EAAA;AAClF,QAAA,OAAO,uBAAuB,CAAC,KAAK,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,KAAK,cAAc,CAAC,OAAO,CAAC;IAC1H;AAEA,IAAA,8BAA8B,CAAC,uBAAiD,EAAA;AAC9E,QAAA,OAAO,uBAAuB,CAAC,MAAM,CAAC,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM;IAC5H;AAEA,IAAA,yBAAyB,CAAC,uBAAiD,EAAA;AACzE,QAAA,MAAM,qCAAqC,GAAW,IAAI,CAAC,qBAAqB;AAChF,QAAA,MAAM,+BAA+B,GAAG,uBAAuB,CAAC,MAAM;QAEtE,OAAO,CAAC,qCAAqC,GAAG,IAAI,CAAC,uBAAuB;AAC1E,YAAA,+BAA+B,KAAK,qCAAqC,GAAG,sBAAsB;AAChG,gBAAA,+BAA+B,GAAG,CAAC,GAAG,8BAA8B,GAAG,IAAI,CAAC,uBAAuB;IACzG;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;IACjC;wGA/HW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvB,IAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,2KClBzC,g8IA8EU,EAAA,MAAA,EAAA,CAAA,qnEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,EAAAA,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,EAAAsB,IAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,eAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,2CAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,cAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAtB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA;;4FD5DG,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,uBAAuB,EAAA,QAAA,EAAA,g8IAAA,EAAA,MAAA,EAAA,CAAA,qnEAAA,CAAA,EAAA;;sBAqBhC,YAAY;uBAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC;;;METpC,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAhBzB,oBAAoB;AACpB,YAAA,4BAA4B,aAO5B,YAAY;YACZwD,aAAW;AACX,YAAAD,aAAW,aANX,oBAAoB;YACpB,4BAA4B,CAAA,EAAA,CAAA;AAWvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,SAAA,EAJlB;AACP,YAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAClD,SAAA,EAAA,OAAA,EAAA,CANG,YAAY;YACZC,aAAW;YACXD,aAAW,CAAA,EAAA,CAAA;;4FAMN,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,oBAAoB;wBACpB,4BAA4B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,oBAAoB;wBACpB,4BAA4B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZC,aAAW;wBACXD;AACH,qBAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;AAClD;AACJ,iBAAA;;;MCAY,WAAW,CAAA;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAbpB,YAAY;AACZ,YAAA,oBAAoB,aASpB,oBAAoB,CAAA,EAAA,CAAA;AAGX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAAA,SAAA,EAVX;YACT,iBAAiB;YACjB,oBAAoB;YACpB,aAAa;YACb;AACD,SAAA,EAAA,OAAA,EAAA,CARC,YAAY;AACZ,YAAA,oBAAoB,EASpB,oBAAoB,CAAA,EAAA,CAAA;;4FAGX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAfvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,iBAAiB;wBACjB,oBAAoB;wBACpB,aAAa;wBACb;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD;AACF,iBAAA;;;ACtBK,IAAQ;AAAd,CAAA,UAAc,2BAA2B,EAAA;IACxB,2BAAA,CAAA,QAAQ,GAAG,GAAG;IACd,2BAAA,CAAA,kBAAkB,GAAG,EAAE;IACvB,2BAAA,CAAA,qBAAqB,GAAG,SAAS;IAEjC,2BAAA,CAAA,cAAc,GAAG,CAAC;IAClB,2BAAA,CAAA,QAAQ,GAAG,CAAC;IACZ,2BAAA,CAAA,SAAS,GAAG,CAAC;IAEb,2BAAA,CAAA,gBAAgB,GAAG,EAAE;IACrB,2BAAA,CAAA,cAAc,GAAG,SAAS;IAE1B,2BAAA,CAAA,yBAAyB,GAAG,CAAC;IAC7B,2BAAA,CAAA,yBAAyB,GAAG,SAAS;IAErC,2BAAA,CAAA,oBAAoB,GAAG,SAAS;IAChC,2BAAA,CAAA,mBAAmB,GAAG,SAAS;IAC/B,2BAAA,CAAA,qBAAqB,GAAG,SAAS;IACjC,2BAAA,CAAA,oBAAoB,GAAG,SAAS;AACjD,CAAC,EAnBa,2BAA2B,KAA3B,2BAA2B,GAAA,EAAA,CAAA,CAAA;AAsBlC,MAAM,yBAAyB,GAA6B;AAC/D,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,qBAAqB,EAAE,SAAS;AAChC,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,cAAc,EAAE,SAAS;AACzB,IAAA,yBAAyB,EAAE,CAAC;AAC5B,IAAA,yBAAyB,EAAE,SAAS;AACpC,IAAA,oBAAoB,EAAE,SAAS;AAC/B,IAAA,mBAAmB,EAAE,SAAS;AAC9B,IAAA,qBAAqB,EAAE,SAAS;AAChC,IAAA,oBAAoB,EAAE;;AAGnB,MAAM,0BAA0B,GAA4B;AAC/D,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,kBAAkB,EAAE,EAAE;AACtB,IAAA,qBAAqB,EAAE,SAAS;AAChC,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,cAAc,EAAE,SAAS;AACzB,IAAA,yBAAyB,EAAE,CAAC;AAC5B,IAAA,yBAAyB,EAAE,SAAS;AACpC,IAAA,oBAAoB,EAAE,SAAS;AAC/B,IAAA,mBAAmB,EAAE,SAAS;AAE9B,IAAA,qBAAqB,EAAE,SAAS;AAChC,IAAA,oBAAoB,EAAE;;;MClDb,cAAc,CAAA;AAEzB,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;AAEtC,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;IAChE;AAEQ,IAAA,SAAS,CAAC,GAAW,EAAA;AAC3B,QAAA,OAAO,GAAG,GAAG,EAAE,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,CAAA,EAAG,GAAG,EAAE;IACxC;wGAXW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;ACLK,SAAU,sBAAsB,CAAC,qBAA0B,EAAE,eAAuC,EAAA;IACtG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;QACvC,qBAAqB,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC;AACrD,IAAA,CAAC,CAAC;AACN;AAEO,MAAM,YAAY,GAAG;AACxB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,GAAG,EAAE,MAAM;AACX,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,UAAU,EAAE,OAAO;AACnB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,SAAS,EAAE,6BAA6B;AACxC,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE,MAAM;;AAGX,MAAM,gBAAgB,GAAG;AAC5B,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE;;AAGL,MAAM,qBAAqB,GAAG;AACjC,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,cAAc,EAAE,eAAe;AAC/B,IAAA,MAAM,EAAE;;AAGL,MAAM,eAAe,GAAG;AAC3B,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,MAAM,EAAE;;AAGL,MAAM,iBAAiB,GAAG;AAC7B,IAAA,WAAW,EAAE,MAAM;AACnB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,MAAM,EAAE;;;ACtCZ;;AAEG;;ACFH;;AAEG;;;;"}