@naniteninja/dashboard-components-lib 1.0.3 → 1.0.4

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 (309) hide show
  1. package/esm2022/lib/components/auto-delegation/animations.mjs +20 -0
  2. package/esm2022/lib/components/auto-delegation/auto-delegation-modal.component.mjs +106 -0
  3. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.mjs +6 -0
  4. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.mjs +7 -0
  5. package/esm2022/lib/components/auto-delegation/interface/auto-delegation-data.interface.mjs +2 -0
  6. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.event.interface.mjs +2 -0
  7. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.mjs +2 -0
  8. package/esm2022/lib/components/auto-delegation/interface/preferences.interface.mjs +2 -0
  9. package/esm2022/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.mjs +37 -0
  10. package/esm2022/lib/components/calendar/agenda/agenda.component.mjs +120 -0
  11. package/esm2022/lib/components/calendar/agenda/agenda.module.mjs +23 -0
  12. package/esm2022/lib/components/calendar/agenda/enums/agenda-item-type.enum.mjs +6 -0
  13. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.day.interface.mjs +2 -0
  14. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.mjs +2 -0
  15. package/esm2022/lib/components/calendar/agenda/types/agenda-item.type.mjs +2 -0
  16. package/esm2022/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.mjs +40 -0
  17. package/esm2022/lib/components/calendar/components/event-form/event-form.component.mjs +275 -0
  18. package/esm2022/lib/components/calendar/components/event-form/event-form.module.mjs +89 -0
  19. package/esm2022/lib/components/calendar/components/event-info/event-info.component.mjs +40 -0
  20. package/esm2022/lib/components/calendar/enums/calendar.account.enum.mjs +6 -0
  21. package/esm2022/lib/components/calendar/enums/calendar.account.icons.enum.mjs +6 -0
  22. package/esm2022/lib/components/calendar/enums/event-type.enum.mjs +10 -0
  23. package/esm2022/lib/components/calendar/enums/recurring.edit.options.enum.mjs +7 -0
  24. package/esm2022/lib/components/calendar/enums/recurring.type.enum.mjs +8 -0
  25. package/esm2022/lib/components/calendar/interfaces/calendar.account.interface.mjs +2 -0
  26. package/esm2022/lib/components/calendar/interfaces/calendar.account.theme.interface.mjs +2 -0
  27. package/esm2022/lib/components/calendar/interfaces/event.form.interface.mjs +2 -0
  28. package/esm2022/lib/components/calendar/interfaces/event.form.output.interface.mjs +2 -0
  29. package/esm2022/lib/components/calendar/interfaces/event.interface.mjs +2 -0
  30. package/esm2022/lib/components/calendar/interfaces/event.time.interface.mjs +2 -0
  31. package/esm2022/lib/components/calendar/interfaces/recurring.event.interface.mjs +2 -0
  32. package/esm2022/lib/components/calendar/interfaces/recurring.exception.interface.mjs +2 -0
  33. package/esm2022/lib/components/calendar/interfaces/recurring.pattern.interface.mjs +2 -0
  34. package/esm2022/lib/components/calendar/lookups/recurring.options.lookup.mjs +30 -0
  35. package/esm2022/lib/components/calendar/scheduler/enums/schedule-date-status.enum.mjs +7 -0
  36. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.mjs +2 -0
  37. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.mjs +2 -0
  38. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.mjs +2 -0
  39. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.mjs +2 -0
  40. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.mjs +2 -0
  41. package/esm2022/lib/components/calendar/scheduler/mock-schedule.mjs +80 -0
  42. package/esm2022/lib/components/calendar/scheduler/scheduler.component.mjs +144 -0
  43. package/esm2022/lib/components/calendar/services/calendar-utils.service.mjs +211 -0
  44. package/esm2022/lib/components/chat/chat.component.mjs +308 -0
  45. package/esm2022/lib/components/chat/chat.component.module.mjs +85 -0
  46. package/esm2022/lib/components/chat/chat.service.mjs +63 -0
  47. package/esm2022/lib/components/chat/enums/sender-types.enum.mjs +6 -0
  48. package/esm2022/lib/components/chat/gif-selector/gif-selector.component.mjs +77 -0
  49. package/esm2022/lib/components/chat/gif-selector/gif-selector.service.mjs +41 -0
  50. package/esm2022/lib/components/chat/gif-selector/tenor-media-format.interface.mjs +2 -0
  51. package/esm2022/lib/components/chat/gif-selector/tenor-object.interface.mjs +2 -0
  52. package/esm2022/lib/components/chat/gif-selector/tenor-result.interface.mjs +2 -0
  53. package/esm2022/lib/components/chat/interfaces/date-messages.interface.mjs +2 -0
  54. package/esm2022/lib/components/chat/interfaces/message-attachment.interface.mjs +2 -0
  55. package/esm2022/lib/components/chat/interfaces/message.interface.mjs +2 -0
  56. package/esm2022/lib/components/chat/interfaces/send-options-message.interface.mjs +2 -0
  57. package/esm2022/lib/components/chat/interfaces/type-send-message.enum.mjs +7 -0
  58. package/esm2022/lib/components/chat-suggestion/chat-suggestion.component.mjs +21 -0
  59. package/esm2022/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.mjs +2 -0
  60. package/esm2022/lib/components/circle-progress/circle-progress.component.mjs +143 -0
  61. package/esm2022/lib/components/circle-progress/circle-progress.module.mjs +18 -0
  62. package/esm2022/lib/components/circle-progress/enums/circle-variable.enum.mjs +6 -0
  63. package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs +2 -0
  64. package/esm2022/lib/components/client-home/client-home.component.mjs +123 -0
  65. package/esm2022/lib/components/client-home/enums/client-home-component.enum.mjs +9 -0
  66. package/esm2022/lib/components/client-home/interfaces/chat-meta.interface.mjs +2 -0
  67. package/esm2022/lib/components/client-home/interfaces/home-dashboard-inputs.interface.mjs +2 -0
  68. package/esm2022/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.mjs +2 -0
  69. package/esm2022/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.mjs +2 -0
  70. package/esm2022/lib/components/client-home/lookup/client-home.config.mjs +30 -0
  71. package/esm2022/lib/components/client-home/lookup/inner-progress-default-colors.config.mjs +6 -0
  72. package/esm2022/lib/components/client-home/lookup/inner-progress-pink-colors.config.mjs +6 -0
  73. package/esm2022/lib/components/client-home/lookup/inner-progress-purple-colors.config.mjs +6 -0
  74. package/esm2022/lib/components/client-home/lookup/inner-progress-teal-colors.config.mjs +6 -0
  75. package/esm2022/lib/components/client-home/lookup/inner-progress-white-colors.config.mjs +10 -0
  76. package/esm2022/lib/components/client-home/lookup/progress-default-colors.config.mjs +10 -0
  77. package/esm2022/lib/components/client-home/lookup/progress-white-colors.config.mjs +10 -0
  78. package/esm2022/lib/components/client-home/pipes/chat-meta.pipe.mjs +60 -0
  79. package/esm2022/lib/components/client-home/pipes/get-color-by-matcher.pipe.mjs +33 -0
  80. package/esm2022/lib/components/client-match-overview/client-match-overview.component.mjs +300 -0
  81. package/esm2022/lib/components/client-match-overview/enums/conversation-flag.enum.mjs +6 -0
  82. package/esm2022/lib/components/client-match-overview/enums/counter-flag-base.enum.mjs +6 -0
  83. package/esm2022/lib/components/client-match-overview/enums/inner-circle-state.enum.mjs +8 -0
  84. package/esm2022/lib/components/client-match-overview/interfaces/client-match-overview.interface.mjs +2 -0
  85. package/esm2022/lib/components/client-match-overview/interfaces/conversation-flag.interface.mjs +2 -0
  86. package/esm2022/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.mjs +2 -0
  87. package/esm2022/lib/components/client-match-overview/interfaces/progress-decision.interface.mjs +2 -0
  88. package/esm2022/lib/components/client-match-overview/interfaces/progress-facts.interface.mjs +2 -0
  89. package/esm2022/lib/components/client-match-overview/lookups/computer-inner-state.lookup.mjs +81 -0
  90. package/esm2022/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.mjs +8 -0
  91. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-gap.config.mjs +4 -0
  92. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.config.mjs +3 -0
  93. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.service.mjs +43 -0
  94. package/esm2022/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.mjs +113 -0
  95. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.mjs +11 -0
  96. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.mjs +27 -0
  97. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.mjs +19 -0
  98. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.mjs +21 -0
  99. package/esm2022/lib/components/lib-client-dashboard/client-dashboard.component.mjs +173 -0
  100. package/esm2022/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.mjs +11 -0
  101. package/esm2022/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.mjs +7 -0
  102. package/esm2022/lib/components/lib-client-dashboard/interfaces/ads.interface.mjs +2 -0
  103. package/esm2022/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.mjs +2 -0
  104. package/esm2022/lib/components/lib-client-dashboard/lookups/client-dashboard.config.mjs +15 -0
  105. package/esm2022/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.mjs +146 -0
  106. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.mjs +2 -0
  107. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.mjs +2 -0
  108. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.mjs +2 -0
  109. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.mjs +2 -0
  110. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.mjs +2 -0
  111. package/esm2022/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.mjs +21 -0
  112. package/esm2022/lib/components/matcher-statuses/enums/matcher-statuses.enum.mjs +15 -0
  113. package/esm2022/lib/components/matcher-statuses/interfaces/status.interface.mjs +2 -0
  114. package/esm2022/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.mjs +54 -0
  115. package/esm2022/lib/components/matcher-statuses/matcher-statuses.component.mjs +58 -0
  116. package/esm2022/lib/components/matcher-statuses/pipes/is-status-included.pipe.mjs +19 -0
  117. package/esm2022/lib/components/profile-card/profile-card.component.mjs +35 -0
  118. package/esm2022/lib/components/profile-card/profile-card.module.mjs +19 -0
  119. package/esm2022/lib/components/spider-chart/interfaces/chart-data-circle.interface.mjs +2 -0
  120. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.mjs +2 -0
  121. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.mjs +2 -0
  122. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.mjs +2 -0
  123. package/esm2022/lib/components/spider-chart/interfaces/config.interface.mjs +2 -0
  124. package/esm2022/lib/components/spider-chart/interfaces/dataset.interface.mjs +2 -0
  125. package/esm2022/lib/components/spider-chart/interfaces/polygon-color.interface.mjs +2 -0
  126. package/esm2022/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.mjs +2 -0
  127. package/esm2022/lib/components/spider-chart/lookup/default-spider-config.mjs +67 -0
  128. package/esm2022/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.mjs +11 -0
  129. package/esm2022/lib/components/spider-chart/lookup/svg-config.lookup.mjs +277 -0
  130. package/esm2022/lib/components/spider-chart/spider-chart.component.mjs +235 -0
  131. package/esm2022/lib/enums/direction.enum.mjs +6 -0
  132. package/esm2022/lib/enums/form-field-type.mjs +30 -0
  133. package/esm2022/lib/enums/local-storage-keys.enum.mjs +5 -0
  134. package/esm2022/lib/enums/status-types.mjs +8 -0
  135. package/esm2022/lib/model/select-option-template.mjs +2 -0
  136. package/esm2022/lib/operations/operations.mjs +19 -0
  137. package/esm2022/lib/pipes/array-sort/array.sort.pipe.mjs +49 -0
  138. package/esm2022/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.mjs +17 -0
  139. package/esm2022/lib/pipes/date-localization/date-localization.pipe.mjs +31 -0
  140. package/esm2022/lib/pipes/fallback-translate/fallback-translate.pipe.mjs +28 -0
  141. package/esm2022/lib/pipes/get-display-value/get-display-value.pipe.mjs +59 -0
  142. package/esm2022/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.mjs +22 -0
  143. package/esm2022/lib/pipes/initials/initials.pipe.mjs +25 -0
  144. package/esm2022/lib/pipes/round/round.pipe.mjs +17 -0
  145. package/esm2022/lib/pipes/update-llm-preference/update-llm-preference.pipe.mjs +25 -0
  146. package/esm2022/lib/services/abstract-cache.service.mjs +10 -0
  147. package/esm2022/lib/shared/shared/alert-popup/alert-popup.component.mjs +38 -0
  148. package/esm2022/lib/shared/shared/message-modal/message-modal.component.mjs +95 -0
  149. package/esm2022/lib/shared/shared/status-icon/status-icon.component.mjs +14 -0
  150. package/esm2022/lib/shared/shared.module.mjs +23 -0
  151. package/esm2022/naniteninja-dashboard-components-lib.mjs +5 -0
  152. package/esm2022/public-api.mjs +123 -0
  153. package/fesm2022/naniteninja-dashboard-components-lib.mjs +202 -178
  154. package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -1
  155. package/index.d.ts +3 -1669
  156. package/lib/components/auto-delegation/animations.d.ts +1 -0
  157. package/lib/components/auto-delegation/auto-delegation-modal.component.d.ts +29 -0
  158. package/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.d.ts +4 -0
  159. package/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.d.ts +5 -0
  160. package/lib/components/auto-delegation/interface/auto-delegation-data.interface.d.ts +31 -0
  161. package/lib/components/auto-delegation/interface/auto-delegation.event.interface.d.ts +6 -0
  162. package/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.d.ts +8 -0
  163. package/lib/components/auto-delegation/interface/preferences.interface.d.ts +17 -0
  164. package/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.d.ts +12 -0
  165. package/lib/components/calendar/agenda/agenda.component.d.ts +27 -0
  166. package/lib/components/calendar/agenda/agenda.module.d.ts +12 -0
  167. package/lib/components/calendar/agenda/enums/agenda-item-type.enum.d.ts +4 -0
  168. package/lib/components/calendar/agenda/interfaces/agenda.day.interface.d.ts +7 -0
  169. package/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.d.ts +9 -0
  170. package/lib/components/calendar/agenda/types/agenda-item.type.d.ts +7 -0
  171. package/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.d.ts +19 -0
  172. package/lib/components/calendar/components/event-form/event-form.component.d.ts +67 -0
  173. package/lib/components/calendar/components/event-form/event-form.module.d.ts +20 -0
  174. package/lib/components/calendar/components/event-info/event-info.component.d.ts +24 -0
  175. package/lib/components/calendar/enums/calendar.account.enum.d.ts +4 -0
  176. package/lib/components/calendar/enums/calendar.account.icons.enum.d.ts +4 -0
  177. package/lib/components/calendar/enums/event-type.enum.d.ts +8 -0
  178. package/lib/components/calendar/enums/recurring.edit.options.enum.d.ts +5 -0
  179. package/lib/components/calendar/enums/recurring.type.enum.d.ts +6 -0
  180. package/lib/components/calendar/interfaces/calendar.account.interface.d.ts +14 -0
  181. package/lib/components/calendar/interfaces/calendar.account.theme.interface.d.ts +5 -0
  182. package/lib/components/calendar/interfaces/event.form.interface.d.ts +22 -0
  183. package/lib/components/calendar/interfaces/event.form.output.interface.d.ts +10 -0
  184. package/lib/components/calendar/interfaces/event.interface.d.ts +33 -0
  185. package/lib/components/calendar/interfaces/event.time.interface.d.ts +4 -0
  186. package/lib/components/calendar/interfaces/recurring.event.interface.d.ts +16 -0
  187. package/lib/components/calendar/interfaces/recurring.exception.interface.d.ts +14 -0
  188. package/lib/components/calendar/interfaces/recurring.pattern.interface.d.ts +16 -0
  189. package/lib/components/calendar/lookups/recurring.options.lookup.d.ts +2 -0
  190. package/lib/components/calendar/scheduler/enums/schedule-date-status.enum.d.ts +5 -0
  191. package/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.d.ts +10 -0
  192. package/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.d.ts +5 -0
  193. package/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.d.ts +26 -0
  194. package/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.d.ts +13 -0
  195. package/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.d.ts +6 -0
  196. package/lib/components/calendar/scheduler/mock-schedule.d.ts +9 -0
  197. package/lib/components/calendar/scheduler/scheduler.component.d.ts +36 -0
  198. package/lib/components/calendar/services/calendar-utils.service.d.ts +39 -0
  199. package/lib/components/chat/chat.component.d.ts +70 -0
  200. package/lib/components/chat/chat.component.module.d.ts +22 -0
  201. package/lib/components/chat/chat.service.d.ts +15 -0
  202. package/lib/components/chat/enums/sender-types.enum.d.ts +4 -0
  203. package/lib/components/chat/gif-selector/gif-selector.component.d.ts +25 -0
  204. package/lib/components/chat/gif-selector/gif-selector.service.d.ts +15 -0
  205. package/lib/components/chat/gif-selector/tenor-media-format.interface.d.ts +7 -0
  206. package/lib/components/chat/gif-selector/tenor-object.interface.d.ts +5 -0
  207. package/lib/components/chat/gif-selector/tenor-result.interface.d.ts +16 -0
  208. package/lib/components/chat/interfaces/date-messages.interface.d.ts +6 -0
  209. package/lib/components/chat/interfaces/message-attachment.interface.d.ts +6 -0
  210. package/lib/components/chat/interfaces/message.interface.d.ts +11 -0
  211. package/lib/components/chat/interfaces/send-options-message.interface.d.ts +5 -0
  212. package/lib/components/chat/interfaces/type-send-message.enum.d.ts +5 -0
  213. package/lib/components/chat-suggestion/chat-suggestion.component.d.ts +9 -0
  214. package/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.d.ts +4 -0
  215. package/lib/components/circle-progress/circle-progress.component.d.ts +31 -0
  216. package/lib/components/circle-progress/circle-progress.module.d.ts +8 -0
  217. package/lib/components/circle-progress/enums/circle-variable.enum.d.ts +4 -0
  218. package/lib/components/circle-progress/interfaces/circle-progress-config.interface.d.ts +29 -0
  219. package/lib/components/client-home/client-home.component.d.ts +44 -0
  220. package/lib/components/client-home/enums/client-home-component.enum.d.ts +7 -0
  221. package/lib/components/client-home/interfaces/chat-meta.interface.d.ts +7 -0
  222. package/lib/components/client-home/interfaces/home-dashboard-inputs.interface.d.ts +45 -0
  223. package/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.d.ts +5 -0
  224. package/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.d.ts +9 -0
  225. package/lib/components/client-home/lookup/client-home.config.d.ts +2 -0
  226. package/lib/components/client-home/lookup/inner-progress-default-colors.config.d.ts +2 -0
  227. package/lib/components/client-home/lookup/inner-progress-pink-colors.config.d.ts +2 -0
  228. package/lib/components/client-home/lookup/inner-progress-purple-colors.config.d.ts +2 -0
  229. package/lib/components/client-home/lookup/inner-progress-teal-colors.config.d.ts +2 -0
  230. package/lib/components/client-home/lookup/inner-progress-white-colors.config.d.ts +2 -0
  231. package/lib/components/client-home/lookup/progress-default-colors.config.d.ts +2 -0
  232. package/lib/components/client-home/lookup/progress-white-colors.config.d.ts +2 -0
  233. package/lib/components/client-home/pipes/chat-meta.pipe.d.ts +10 -0
  234. package/lib/components/client-home/pipes/get-color-by-matcher.pipe.d.ts +10 -0
  235. package/lib/components/client-match-overview/client-match-overview.component.d.ts +55 -0
  236. package/lib/components/client-match-overview/enums/conversation-flag.enum.d.ts +4 -0
  237. package/lib/components/client-match-overview/enums/counter-flag-base.enum.d.ts +4 -0
  238. package/lib/components/client-match-overview/enums/inner-circle-state.enum.d.ts +6 -0
  239. package/lib/components/client-match-overview/interfaces/client-match-overview.interface.d.ts +19 -0
  240. package/lib/components/client-match-overview/interfaces/conversation-flag.interface.d.ts +8 -0
  241. package/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.d.ts +7 -0
  242. package/lib/components/client-match-overview/interfaces/progress-decision.interface.d.ts +10 -0
  243. package/lib/components/client-match-overview/interfaces/progress-facts.interface.d.ts +11 -0
  244. package/lib/components/client-match-overview/lookups/computer-inner-state.lookup.d.ts +7 -0
  245. package/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.d.ts +5 -0
  246. package/lib/components/client-match-overview/progress-ticker/progress-gap.config.d.ts +2 -0
  247. package/lib/components/client-match-overview/progress-ticker/progress-ticker.config.d.ts +2 -0
  248. package/lib/components/client-match-overview/progress-ticker/progress-ticker.service.d.ts +11 -0
  249. package/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.d.ts +29 -0
  250. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.d.ts +2 -0
  251. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.d.ts +2 -0
  252. package/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.d.ts +2 -0
  253. package/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.d.ts +2 -0
  254. package/lib/components/lib-client-dashboard/client-dashboard.component.d.ts +75 -0
  255. package/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.d.ts +9 -0
  256. package/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.d.ts +5 -0
  257. package/lib/components/lib-client-dashboard/interfaces/ads.interface.d.ts +14 -0
  258. package/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.d.ts +29 -0
  259. package/lib/components/lib-client-dashboard/lookups/client-dashboard.config.d.ts +2 -0
  260. package/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.d.ts +48 -0
  261. package/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.d.ts +5 -0
  262. package/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.d.ts +5 -0
  263. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.d.ts +26 -0
  264. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.d.ts +8 -0
  265. package/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.d.ts +24 -0
  266. package/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.d.ts +9 -0
  267. package/lib/components/matcher-statuses/enums/matcher-statuses.enum.d.ts +13 -0
  268. package/lib/components/matcher-statuses/interfaces/status.interface.d.ts +6 -0
  269. package/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.d.ts +2 -0
  270. package/lib/components/matcher-statuses/matcher-statuses.component.d.ts +23 -0
  271. package/lib/components/matcher-statuses/pipes/is-status-included.pipe.d.ts +8 -0
  272. package/lib/components/profile-card/profile-card.component.d.ts +11 -0
  273. package/lib/components/profile-card/profile-card.module.d.ts +9 -0
  274. package/lib/components/spider-chart/interfaces/chart-data-circle.interface.d.ts +10 -0
  275. package/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.d.ts +11 -0
  276. package/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.d.ts +11 -0
  277. package/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.d.ts +10 -0
  278. package/lib/components/spider-chart/interfaces/config.interface.d.ts +19 -0
  279. package/lib/components/spider-chart/interfaces/dataset.interface.d.ts +7 -0
  280. package/lib/components/spider-chart/interfaces/polygon-color.interface.d.ts +4 -0
  281. package/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.d.ts +6 -0
  282. package/lib/components/spider-chart/lookup/default-spider-config.d.ts +2 -0
  283. package/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.d.ts +2 -0
  284. package/lib/components/spider-chart/lookup/svg-config.lookup.d.ts +8 -0
  285. package/lib/components/spider-chart/spider-chart.component.d.ts +52 -0
  286. package/lib/enums/direction.enum.d.ts +4 -0
  287. package/lib/enums/form-field-type.d.ts +28 -0
  288. package/lib/enums/local-storage-keys.enum.d.ts +3 -0
  289. package/lib/enums/status-types.d.ts +6 -0
  290. package/lib/model/select-option-template.d.ts +5 -0
  291. package/lib/operations/operations.d.ts +19 -0
  292. package/lib/pipes/array-sort/array.sort.pipe.d.ts +7 -0
  293. package/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.d.ts +7 -0
  294. package/lib/pipes/date-localization/date-localization.pipe.d.ts +8 -0
  295. package/lib/pipes/fallback-translate/fallback-translate.pipe.d.ts +11 -0
  296. package/lib/pipes/get-display-value/get-display-value.pipe.d.ts +13 -0
  297. package/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.d.ts +8 -0
  298. package/lib/pipes/initials/initials.pipe.d.ts +7 -0
  299. package/lib/pipes/round/round.pipe.d.ts +7 -0
  300. package/lib/pipes/update-llm-preference/update-llm-preference.pipe.d.ts +8 -0
  301. package/lib/services/abstract-cache.service.d.ts +9 -0
  302. package/lib/shared/shared/alert-popup/alert-popup.component.d.ts +14 -0
  303. package/lib/shared/shared/message-modal/message-modal.component.d.ts +29 -0
  304. package/lib/shared/shared/status-icon/status-icon.component.d.ts +7 -0
  305. package/lib/shared/shared.module.d.ts +13 -0
  306. package/naniteninja-dashboard-components-lib-1.0.4.tgz +0 -0
  307. package/package.json +29 -25
  308. package/public-api.d.ts +122 -0
  309. package/src/lib/shared-styles/common/theme.scss +3 -3
@@ -0,0 +1,300 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, inject, Input, NgZone, Output, ViewEncapsulation, } from '@angular/core';
3
+ import { TranslateModule } from '@ngx-translate/core';
4
+ import { SkeletonModule } from 'primeng/skeleton';
5
+ import { BehaviorSubject, concatMap, from, Observable, Subject, takeUntil } from 'rxjs';
6
+ import { CommonOperations } from '../../operations/operations';
7
+ import { CircleProgressModule } from '../circle-progress/circle-progress.module';
8
+ import { CircleVariable } from '../circle-progress/enums/circle-variable.enum';
9
+ import { innerProgressDefaultColors } from '../client-home/lookup/inner-progress-default-colors.config';
10
+ import { innerProgressTealColors } from '../client-home/lookup/inner-progress-teal-colors.config';
11
+ import { innerProgressWhiteColors } from '../client-home/lookup/inner-progress-white-colors.config';
12
+ import { progressDefaultColors } from '../client-home/lookup/progress-default-colors.config';
13
+ import { innerProgressPinkColors } from './../client-home/lookup/inner-progress-pink-colors.config';
14
+ import { CONVERSATION_FLAG } from './enums/conversation-flag.enum';
15
+ import { INNER_CIRCLE_STATE } from './enums/inner-circle-state.enum';
16
+ import { computeInnerState } from './lookups/computer-inner-state.lookup';
17
+ import { PROGRESS_GAP_MINUTES } from './progress-ticker/progress-gap.config';
18
+ import { ProgressTickerService } from './progress-ticker/progress-ticker.service';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "@angular/common";
21
+ import * as i2 from "../circle-progress/circle-progress.component";
22
+ import * as i3 from "@ngx-translate/core";
23
+ import * as i4 from "primeng/skeleton";
24
+ export class LibClientMatchOverviewComponent {
25
+ constructor() {
26
+ this.expand = false;
27
+ this.loading = false;
28
+ this.default = false;
29
+ this.hideProgressBar = false;
30
+ this.partialColors = progressDefaultColors;
31
+ this.showExternalPartialCircleProgress = true;
32
+ this.maxValue = 100;
33
+ this.enableChangeOverview = false;
34
+ this.sendConversationFlag = new EventEmitter();
35
+ this.circleVariable = CircleVariable;
36
+ this.innerMaxValue = 1_440;
37
+ this.innerValue = 0;
38
+ this.showIllumination = false;
39
+ this.showValueProportionLabel = true;
40
+ this.innerPartialColors = innerProgressDefaultColors;
41
+ this.innerState = INNER_CIRCLE_STATE.Quiet;
42
+ this.basedOn = null;
43
+ this.imageLoader$ = new BehaviorSubject(false);
44
+ this.cdr = inject(ChangeDetectorRef);
45
+ this.ngZone = inject(NgZone);
46
+ this.ticker = inject(ProgressTickerService);
47
+ this.progressGap = inject(PROGRESS_GAP_MINUTES);
48
+ this.componentDestroyed$ = new Subject();
49
+ this.tickerSub = null;
50
+ }
51
+ ngOnInit() {
52
+ if (!this.default && this.overview.primary) {
53
+ this.imagePathId = CommonOperations.randomString(100);
54
+ this.loadProfileImage();
55
+ }
56
+ }
57
+ ngAfterViewInit() {
58
+ if (this.hideProgressBar || !this.meta)
59
+ return;
60
+ this.setInnerState();
61
+ }
62
+ ngOnChanges(changes) {
63
+ const expandChange = changes['expand'];
64
+ if (expandChange) {
65
+ this.buildCircleOpts();
66
+ return;
67
+ }
68
+ const overviewChange = changes['overview'];
69
+ if (this.enableChangeOverview && overviewChange?.currentValue) {
70
+ this.overview = overviewChange.currentValue;
71
+ this.setInnerState();
72
+ return;
73
+ }
74
+ const metaChange = changes['meta'];
75
+ if (!metaChange || metaChange.isFirstChange() || this.hideProgressBar) {
76
+ return;
77
+ }
78
+ else {
79
+ const prev = metaChange.previousValue;
80
+ const curr = metaChange.currentValue;
81
+ if (prev.waitingAnswer !== curr.waitingAnswer) {
82
+ if (curr?.waitingAnswer === true) {
83
+ // new response from prospect/ red dot was added
84
+ // if the prospect has answered and the client hasn't send a single message yet
85
+ if (this.meta.firstAnswer) {
86
+ this.setInnerCircleState(INNER_CIRCLE_STATE.Waiting);
87
+ this.startTicker();
88
+ }
89
+ }
90
+ else {
91
+ // propect answered/ red dot was removed
92
+ this.setInnerCircleState(INNER_CIRCLE_STATE.Quiet);
93
+ this.stopTicker();
94
+ }
95
+ }
96
+ if (prev.firstAnswer !== curr.firstAnswer && curr.firstAnswer) {
97
+ // prospect has answered for the first time
98
+ this.setInnerCircleState(INNER_CIRCLE_STATE.Quiet);
99
+ this.stopTicker();
100
+ }
101
+ this.buildCircleOpts();
102
+ return;
103
+ }
104
+ }
105
+ ngOnDestroy() {
106
+ this.componentDestroyed$.next();
107
+ this.componentDestroyed$.complete();
108
+ this.imageLoader$.complete();
109
+ }
110
+ setInnerState() {
111
+ const decision = computeInnerState({
112
+ createdAt: this.overview.createdAt,
113
+ lastMessageTimestamp: this.meta.lastResponseTimestamp,
114
+ firstAnswer: this.meta.firstAnswer,
115
+ waitingAnswer: this.meta.waitingAnswer,
116
+ innerMax: this.innerMaxValue,
117
+ conversationFlags: this.meta.conversationFlags,
118
+ });
119
+ if (!decision)
120
+ return;
121
+ this.setInnerCircleState(decision.state, decision.innerValue, decision.basedOn);
122
+ if (decision.tick === 'start') {
123
+ this.startTicker();
124
+ }
125
+ else {
126
+ this.stopTicker();
127
+ }
128
+ this.buildCircleOpts();
129
+ }
130
+ stepProgress() {
131
+ if (this.innerValue <= this.innerMaxValue && (this.innerState === INNER_CIRCLE_STATE.Waiting || this.innerState === INNER_CIRCLE_STATE.Unresponsive)) {
132
+ this.innerValue = Math.max(this.innerValue - this.progressGap, 0);
133
+ this.buildCircleOpts();
134
+ }
135
+ if (this.innerValue === 0 && this.innerState === INNER_CIRCLE_STATE.Waiting) {
136
+ this.setInnerCircleState(INNER_CIRCLE_STATE.Unresponsive);
137
+ }
138
+ if (this.innerValue === 0 && this.innerState === INNER_CIRCLE_STATE.Unresponsive) {
139
+ this.setInnerCircleState(INNER_CIRCLE_STATE.Redelegation);
140
+ this.stopTicker();
141
+ }
142
+ }
143
+ loadProfileImage() {
144
+ from([this.overview.primary.src, this.overview.secondary.src])
145
+ .pipe(takeUntil(this.componentDestroyed$), concatMap((imageSrc) => {
146
+ return new Observable((imageObserver) => {
147
+ const image = new Image();
148
+ image.src = imageSrc;
149
+ image.onload = () => {
150
+ imageObserver.next(true);
151
+ imageObserver.complete();
152
+ };
153
+ image.onerror = () => {
154
+ imageObserver.error(false);
155
+ };
156
+ });
157
+ }))
158
+ .subscribe({
159
+ complete: () => {
160
+ this.imageLoader$.next(true);
161
+ },
162
+ error: () => {
163
+ this.imageLoader$.next(false);
164
+ },
165
+ });
166
+ }
167
+ startTicker() {
168
+ // guard: if already active, do nothing
169
+ if (this.tickerSub)
170
+ return;
171
+ // 🚫 'runOutsideAngular()' ensures Angular doesn’t trigger global change detection
172
+ // on every timer emission (which can happen every minute or less).
173
+ // Without it, Angular would run 'ApplicationRef.tick()' and walk the entire component tree,
174
+ // even if only one component actually needs to update.
175
+ //
176
+ // By running the ticking logic outside Angular’s zone,
177
+ // we keep the main thread lighter and avoid unnecessary DOM checks.
178
+ // Then, we re-enter Angular manually using 'run()'
179
+ // and call 'markForCheck()' to update this component only.
180
+ //
181
+ // This pattern is ideal when using 'ChangeDetectionStrategy.OnPush'
182
+ // and gives us precise, efficient rendering control.
183
+ this.ngZone.runOutsideAngular(() => {
184
+ this.tickerSub = this.ticker.tick$.pipe(takeUntil(this.componentDestroyed$)).subscribe((n) => {
185
+ this.stepProgress();
186
+ this.ngZone.run(() => this.cdr.markForCheck());
187
+ });
188
+ });
189
+ }
190
+ stopTicker() {
191
+ this.tickerSub?.unsubscribe();
192
+ this.tickerSub = null;
193
+ }
194
+ setInnerCircleState(preset, innerValue = null, basedOn = null) {
195
+ const lookUpMap = {
196
+ waiting: {
197
+ innerValue: this.innerMaxValue,
198
+ showIllumination: false,
199
+ showValueProportionLabel: true,
200
+ innerPartialColors: innerProgressWhiteColors,
201
+ basedOn: this.basedOn,
202
+ },
203
+ quiet: {
204
+ innerValue: this.innerMaxValue,
205
+ showIllumination: false,
206
+ showValueProportionLabel: false,
207
+ innerPartialColors: innerProgressDefaultColors,
208
+ basedOn: null,
209
+ },
210
+ unresponsive: {
211
+ innerValue: this.innerMaxValue,
212
+ showIllumination: true,
213
+ showValueProportionLabel: true,
214
+ innerPartialColors: innerProgressPinkColors,
215
+ basedOn: this.basedOn,
216
+ },
217
+ redelegation: {
218
+ innerValue: this.innerMaxValue,
219
+ showIllumination: false,
220
+ showValueProportionLabel: false,
221
+ innerPartialColors: innerProgressTealColors,
222
+ basedOn: this.basedOn,
223
+ },
224
+ };
225
+ const map = lookUpMap[preset];
226
+ this.innerValue = innerValue ?? map.innerValue;
227
+ this.showIllumination = map.showIllumination;
228
+ this.showValueProportionLabel = map.showValueProportionLabel;
229
+ this.innerPartialColors = map.innerPartialColors;
230
+ this.basedOn = basedOn ?? map.basedOn;
231
+ this.innerState = preset;
232
+ if (preset === INNER_CIRCLE_STATE.Unresponsive) {
233
+ this.sendConversationFlag.emit({
234
+ timestamp: new Date(),
235
+ prospectId: this.overview._id,
236
+ basedOn: this.basedOn,
237
+ flag: CONVERSATION_FLAG.UNRESPONSIVE,
238
+ });
239
+ }
240
+ else if (preset === INNER_CIRCLE_STATE.Redelegation) {
241
+ this.sendConversationFlag.emit({
242
+ timestamp: new Date(),
243
+ prospectId: this.overview._id,
244
+ basedOn: this.basedOn,
245
+ flag: CONVERSATION_FLAG.REDELEGATION,
246
+ });
247
+ }
248
+ this.buildCircleOpts();
249
+ }
250
+ buildCircleOpts() {
251
+ this.circleOpts = {
252
+ value: this.overview.preferences + this.overview.personality,
253
+ max: this.maxValue,
254
+ partialColors: this.partialColors,
255
+ showExternalPartialCircleProgress: this.showExternalPartialCircleProgress && this.expand,
256
+ showValueProportionLabel: this.showValueProportionLabel,
257
+ hasNotification: this.meta?.waitingAnswer,
258
+ inner: {
259
+ value: this.innerValue,
260
+ max: this.innerMaxValue,
261
+ colors: this.innerPartialColors,
262
+ state: this.innerState,
263
+ showIllumination: this.showIllumination,
264
+ },
265
+ imageUrl: this.overview.primary?.src,
266
+ suffix: '',
267
+ prefix: '',
268
+ };
269
+ }
270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibClientMatchOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LibClientMatchOverviewComponent, isStandalone: true, selector: "lib-client-match-overview", inputs: { overview: "overview", meta: "meta", expand: "expand", loading: "loading", default: "default", hideProgressBar: "hideProgressBar", partialColors: "partialColors", showExternalPartialCircleProgress: "showExternalPartialCircleProgress", maxValue: "maxValue", enableChangeOverview: "enableChangeOverview" }, outputs: { sendConversationFlag: "sendConversationFlag" }, usesOnChanges: true, ngImport: i0, template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CircleProgressModule }, { kind: "component", type: i2.CircleProgressComponent, selector: "lib-circle-progress", inputs: ["variable", "config"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i4.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.ShadowDom }); }
272
+ }
273
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibClientMatchOverviewComponent, decorators: [{
274
+ type: Component,
275
+ args: [{ selector: 'lib-client-match-overview', encapsulation: ViewEncapsulation.ShadowDom, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, CircleProgressModule, TranslateModule, SkeletonModule], template: "@if (!default && imageLoader$ | async) {\n <div class=\"overview\" [ngClass]=\"{ overview__expand: expand, overview__collapse: !expand }\">\n <div class=\"overview__container\">\n <lib-circle-progress\n class=\"overview__progress-bar\"\n [ngClass]=\"{ 'overview__progress-bar--hidden': hideProgressBar && !expand }\"\n [variable]=\"circleVariable.Partial\"\n [config]=\"circleOpts\"\n ></lib-circle-progress>\n <!-- details next to the circle image -->\n @if (expand) {\n <div class=\"overview__comparison comparison\">\n <div class=\"comparison__entity secondary-profile\">\n <div class=\"secondary-profile__image\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\">\n <circle r=\"50\" cx=\"50\" cy=\"50\" fill=\"#28252D\" />\n <image [attr.mask]=\"'url(#' + imagePathId + ')'\" [attr.href]=\"overview.secondary.src\" height=\"80\" width=\"80\" x=\"10\" y=\"10\" />\n <defs>\n <mask [attr.id]=\"imagePathId\">\n <rect x=\"0\" y=\"0\" height=\"100\" width=\"100\" fill=\"black\" />\n <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"white\" />\n </mask>\n </defs>\n </svg>\n </div>\n <div class=\"comparison__label\">{{ overview.secondary.name }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"preferences\">{{ overview.preferences }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PREFERENCES_MATCH' | translate }}</div>\n </div>\n <div class=\"comparison__entity\">\n <div class=\"comparison__value\">\n <span class=\"personality\">{{ overview.personality }}%</span>\n </div>\n <div class=\"comparison__label\">{{ 'CLIENT_MATCH_OVERVIEW.PERSONALITY_MATCH' | translate }}</div>\n </div>\n </div>\n }\n </div>\n <!-- shadow on all the component (circle image and texts) -->\n @if (expand) {\n <div class=\"overview__back-shadow\">\n <img src=\"assets/client-match-overview/background-eclipse.svg\" />\n </div>\n }\n </div>\n} @else if (loading) {\n <div class=\"overview\" part=\"loading\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <p-skeleton shape=\"circle\" size=\"3rem\" class=\"loading-skeleton\" />\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n} @else if (default || !overview.primary) {\n <div class=\"overview\">\n <div class=\"overview__container\">\n <div class=\"default-empty-profile\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"34\" height=\"35\" viewBox=\"0 0 34 35\" fill=\"none\">\n <circle cx=\"17.0096\" cy=\"17.5439\" r=\"16.5945\" fill=\"#29252D\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.4843 18.2501C13.5008 18.2493 13.5174 18.2489 13.5339 18.2489H20.1384C20.1549 18.2489 20.1714 18.2493 20.188 18.2501C22.501 18.3649 24.5513 19.7726 25.4901 21.8878C26.1644 23.2368 25.7884 24.5724 24.9275 25.4921C24.0937 26.3827 22.802 26.9145 21.4595 26.9145H12.2127C10.8707 26.9145 9.57941 26.3825 8.74582 25.4921C7.88499 24.5726 7.50858 23.2372 8.182 21.888C9.12087 19.7726 11.1712 18.365 13.4843 18.2501ZM13.56 20.2486C12.0044 20.3346 10.6283 21.2884 10.0022 22.7165C9.99443 22.7342 9.98617 22.7517 9.97741 22.7689C9.72674 23.2609 9.82034 23.7138 10.2057 24.1253C10.6239 24.5721 11.367 24.9147 12.2127 24.9147H21.4595C22.3061 24.9147 23.0495 24.572 23.4675 24.1253C23.8527 23.7141 23.9461 23.2616 23.6951 22.7694C23.6863 22.7521 23.6779 22.7343 23.67 22.7165C23.044 21.2884 21.6679 20.3346 20.1122 20.2486H13.56Z\"\n fill=\"#5E5E5E\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M16.836 8.24993C15.1794 8.24993 13.8364 9.5929 13.8364 11.2495C13.8364 12.9062 15.1794 14.2492 16.836 14.2492C18.4927 14.2492 19.8356 12.9062 19.8356 11.2495C19.8356 10.454 19.5197 9.69103 18.9571 9.12849C18.3945 8.56595 17.6315 8.24993 16.836 8.24993ZM11.8367 11.2495C11.8367 8.48847 14.075 6.25018 16.836 6.25018C18.162 6.25018 19.4335 6.7769 20.3712 7.71446C21.3086 8.65202 21.8354 9.92363 21.8354 11.2495C21.8354 14.0107 19.5971 16.2489 16.836 16.2489C14.075 16.2489 11.8367 14.0107 11.8367 11.2495Z\"\n fill=\"#5E5E5E\"\n />\n </svg>\n </div>\n </div>\n </div>\n}\n", styles: [".zoom-in{animation:fadeZoomIn .5s ease-in-out}.zoom-out{animation:fadeZoomOut .5s ease-in-out}.zoom-out.collapse{display:none!important}@keyframes fadeZoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}@keyframes fadeZoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.hide{max-height:0;overflow:hidden;opacity:0;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}.show{max-height:200px;opacity:1;transition:max-height .8s ease-in-out,opacity .8s ease-in-out}:host{font-size:clamp(0px,var(--component-size, 1.5dvw),.75rem)}.overview{overflow:hidden;width:100%;max-width:var(--card-width, 100%);display:block;position:relative}.overview__collapse{--card-width: 15em}.overview__expand{--card-width: 100%}.overview__back-shadow{position:absolute;top:-15%;left:0%;height:130%;width:120%;display:flex;justify-content:center;z-index:0}.overview__back-shadow img{height:100%;width:100%;flex-shrink:0}.overview__container{z-index:2;position:relative;display:flex;align-items:center}.overview__progress-bar{height:var(--primary-profile-height, 15em)!important;width:var(--primary-profile-width, 15em)!important;flex-shrink:0;transition:all .5s}.overview__progress-bar--hidden .circle-progress__svg,.overview__progress-bar--hidden .circle-progress__image{opacity:0}.overview__comparison{display:flex;flex-direction:column;flex-grow:1;transform-origin:left center;margin:var(--secondary-profile-margin, 0 0 0 -10px)}.comparison__entity{font-family:Gilroy-Medium;display:flex;gap:1em}.comparison__label{display:flex;justify-content:center;align-items:center;max-width:10ch}.comparison__value{height:var(--match-percentage-value-height, 4em);width:var(--match-percentage-value-width, \"auto\");display:flex;align-items:center;justify-content:center}.comparison__value>span{font-size:var(--match-percentage-font-size, 3em)}.comparison__value>span.preferences{color:#fe3c72}.comparison__value>span.personality{color:#9c2b4b}.secondary-profile{margin-bottom:-5px}.secondary-profile__image{height:var(--secondary-profile-height, 7rem);width:var(--secondary-profile-width, 7rem);display:flex;align-items:center;margin-left:-3px}.default-empty-profile{padding:1px;border-radius:50%;background:radial-gradient(circle,#acacac 79%,#fff);display:flex;justify-content:center;align-items:center;position:relative;margin:0 10px}.default-empty-profile .loading-skeleton{position:absolute;top:0}.default-empty-profile .p-skeleton:after{background:linear-gradient(90deg,#fff0,#fff6,#fff0)}\n"] }]
276
+ }], propDecorators: { overview: [{
277
+ type: Input,
278
+ args: [{ required: true }]
279
+ }], meta: [{
280
+ type: Input
281
+ }], expand: [{
282
+ type: Input
283
+ }], loading: [{
284
+ type: Input
285
+ }], default: [{
286
+ type: Input
287
+ }], hideProgressBar: [{
288
+ type: Input
289
+ }], partialColors: [{
290
+ type: Input
291
+ }], showExternalPartialCircleProgress: [{
292
+ type: Input
293
+ }], maxValue: [{
294
+ type: Input
295
+ }], enableChangeOverview: [{
296
+ type: Input
297
+ }], sendConversationFlag: [{
298
+ type: Output
299
+ }] } });
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LW1hdGNoLW92ZXJ2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xpZW50LW1hdGNoLW92ZXJ2aWV3L2NsaWVudC1tYXRjaC1vdmVydmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NsaWVudC1tYXRjaC1vdmVydmlldy9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBSU4sTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBSS9FLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FB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UUFBUTtzQkFBekMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csaUNBQWlDO3NCQUF6QyxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2tlbGV0b24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb25jYXRNYXAsIGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21tb25PcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zJztcbmltcG9ydCB7IENpcmNsZVByb2dyZXNzTW9kdWxlIH0gZnJvbSAnLi4vY2lyY2xlLXByb2dyZXNzL2NpcmNsZS1wcm9ncmVzcy5tb2R1bGUnO1xuaW1wb3J0IHsgQ2lyY2xlVmFyaWFibGUgfSBmcm9tICcuLi9jaXJjbGUtcHJvZ3Jlc3MvZW51bXMvY2lyY2xlLXZhcmlhYmxlLmVudW0nO1xuaW1wb3J0IHsgQ2lyY2xlUHJvZ3Jlc3NDb25maWcgfSBmcm9tICcuLi9jaXJjbGUtcHJvZ3Jlc3MvaW50ZXJmYWNlcy9jaXJjbGUtcHJvZ3Jlc3MtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJQ2hhdE1ldGEgfSBmcm9tICcuLi9jbGllbnQtaG9tZS9pbnRlcmZhY2VzL2NoYXQtbWV0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVBhcnRpYWxDaXJjbGVQcm9ncmVzc0NvbG9ycyB9IGZyb20gJy4uL2NsaWVudC1ob21lL2ludGVyZmFjZXMvcGFydGlhbC1jaXJjbGUtcHJvZ3Jlc3MtY29sb3JzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBpbm5lclByb2dyZXNzRGVmYXVsdENvbG9ycyB9IGZyb20gJy4uL2NsaWVudC1ob21lL2xvb2t1cC9pbm5lci1wcm9ncmVzcy1kZWZhdWx0LWNvbG9ycy5jb25maWcnO1xuaW1wb3J0IHsgaW5uZXJQcm9ncmVzc1RlYWxDb2xvcnMgfSBmcm9tICcuLi9jbGllbnQtaG9tZS9sb29rdXAvaW5uZXItcHJvZ3Jlc3MtdGVhbC1jb2xvcnMuY29uZmlnJztcbmltcG9ydCB7IGlubmVyUHJvZ3Jlc3NXaGl0ZUNvbG9ycyB9IGZyb20gJy4uL2NsaWVudC1ob21lL2xvb2t1cC9pbm5lci1wcm9ncmVzcy13aGl0ZS1jb2xvcnMuY29uZmlnJztcbmltcG9ydCB7IHByb2dyZXNzRGVmYXVsdENvbG9ycyB9IGZyb20gJy4uL2NsaWVudC1ob21lL2xvb2t1cC9wcm9ncmVzcy1kZWZhdWx0LWNvbG9ycy5jb25maWcnO1xuaW1wb3J0IHsgSUlubmVyUGFydGlhbENpcmNsZVByb2dyZXNzQ29sb3JzIH0gZnJvbSAnLi8uLi9jbGllbnQtaG9tZS9pbnRlcmZhY2VzL2lubmVyLXBhcnRpYWwtY2lyY2xlLXByb2dyZXNzLWNvbG9ycy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaW5uZXJQcm9ncmVzc1BpbmtDb2xvcnMgfSBmcm9tICcuLy4uL2NsaWVudC1ob21lL2xvb2t1cC9pbm5lci1wcm9ncmVzcy1waW5rLWNvbG9ycy5jb25maWcnO1xuaW1wb3J0IHsgQ09OVkVSU0FUSU9OX0ZMQUcgfSBmcm9tICcuL2VudW1zL2NvbnZlcnNhdGlvbi1mbGFnLmVudW0nO1xuaW1wb3J0IHsgQ09VTlRFUl9GTEFHX0JBU0UgfSBmcm9tICcuL2VudW1zL2NvdW50ZXItZmxhZy1iYXNlLmVudW0nO1xuaW1wb3J0IHsgSU5ORVJfQ0lSQ0xFX1NUQVRFIH0gZnJvbSAnLi9lbnVtcy9pbm5lci1jaXJjbGUtc3RhdGUuZW51bSc7XG5pbXBvcnQgeyBJTGliQ2xpZW50TWF0Y2hPdmVydmlldyB9IGZyb20gJy4vaW50ZXJmYWNlcy9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcuaW50ZXJmYWNlJztcbmltcG9ydCB7IElDb252ZXJzYXRpb25GbGFnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbnZlcnNhdGlvbi1mbGFnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQcm9ncmVzc0RlY2lzaW9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3Byb2dyZXNzLWRlY2lzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjb21wdXRlSW5uZXJTdGF0ZSB9IGZyb20gJy4vbG9va3Vwcy9jb21wdXRlci1pbm5lci1zdGF0ZS5sb29rdXAnO1xuaW1wb3J0IHsgUFJPR1JFU1NfR0FQX01JTlVURVMgfSBmcm9tICcuL3Byb2dyZXNzLXRpY2tlci9wcm9ncmVzcy1nYXAuY29uZmlnJztcbmltcG9ydCB7IFByb2dyZXNzVGlja2VyU2VydmljZSB9IGZyb20gJy4vcHJvZ3Jlc3MtdGlja2VyL3Byb2dyZXNzLXRpY2tlci5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jbGllbnQtbWF0Y2gtb3ZlcnZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2xpZW50LW1hdGNoLW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2xpZW50LW1hdGNoLW92ZXJ2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENpcmNsZVByb2dyZXNzTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIFNrZWxldG9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgTGliQ2xpZW50TWF0Y2hPdmVydmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwdWJsaWMgb3ZlcnZpZXc6IElMaWJDbGllbnRNYXRjaE92ZXJ2aWV3O1xuICBASW5wdXQoKSBtZXRhITogSUNoYXRNZXRhO1xuICBASW5wdXQoKSBleHBhbmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbG9hZGluZz86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZGVmYXVsdD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGlkZVByb2dyZXNzQmFyPzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwYXJ0aWFsQ29sb3JzOiBJUGFydGlhbENpcmNsZVByb2dyZXNzQ29sb3JzID0gcHJvZ3Jlc3NEZWZhdWx0Q29sb3JzO1xuICBASW5wdXQoKSBzaG93RXh0ZXJuYWxQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3M6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBtYXhWYWx1ZTogbnVtYmVyID0gMTAwO1xuICBASW5wdXQoKSBlbmFibGVDaGFuZ2VPdmVydmlldzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBzZW5kQ29udmVyc2F0aW9uRmxhZzogRXZlbnRFbWl0dGVyPElDb252ZXJzYXRpb25GbGFnPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvbnZlcnNhdGlvbkZsYWc+KCk7XG5cbiAgcHVibGljIGNpcmNsZVZhcmlhYmxlID0gQ2lyY2xlVmFyaWFibGU7XG4gIHB1YmxpYyBpbm5lck1heFZhbHVlOiBudW1iZXIgPSAxXzQ0MDtcbiAgcHVibGljIGlubmVyVmFsdWU6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBzaG93SWxsdW1pbmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93VmFsdWVQcm9wb3J0aW9uTGFiZWw6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgaW5uZXJQYXJ0aWFsQ29sb3JzOiBJSW5uZXJQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3NDb2xvcnMgPSBpbm5lclByb2dyZXNzRGVmYXVsdENvbG9ycztcblxuICBwdWJsaWMgaW5uZXJTdGF0ZTogSU5ORVJfQ0lSQ0xFX1NUQVRFID0gSU5ORVJfQ0lSQ0xFX1NUQVRFLlF1aWV0O1xuICBwdWJsaWMgYmFzZWRPbjogQ09VTlRFUl9GTEFHX0JBU0UgPSBudWxsO1xuICBwdWJsaWMgaW1hZ2VMb2FkZXIkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGltYWdlUGF0aElkOiBzdHJpbmc7XG5cbiAgcHVibGljIGNpcmNsZU9wdHM6IENpcmNsZVByb2dyZXNzQ29uZmlnO1xuXG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0aWNrZXIgPSBpbmplY3QoUHJvZ3Jlc3NUaWNrZXJTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2dyZXNzR2FwID0gaW5qZWN0KFBST0dSRVNTX0dBUF9NSU5VVEVTKTtcblxuICBwcml2YXRlIGNvbXBvbmVudERlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHRpY2tlclN1YjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRlZmF1bHQgJiYgdGhpcy5vdmVydmlldy5wcmltYXJ5KSB7XG4gICAgICB0aGlzLmltYWdlUGF0aElkID0gQ29tbW9uT3BlcmF0aW9ucy5yYW5kb21TdHJpbmcoMTAwKTtcbiAgICAgIHRoaXMubG9hZFByb2ZpbGVJbWFnZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oaWRlUHJvZ3Jlc3NCYXIgfHwgIXRoaXMubWV0YSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zZXRJbm5lclN0YXRlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgZXhwYW5kQ2hhbmdlID0gY2hhbmdlc1snZXhwYW5kJ107XG4gICAgaWYgKGV4cGFuZENoYW5nZSkge1xuICAgICAgdGhpcy5idWlsZENpcmNsZU9wdHMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvdmVydmlld0NoYW5nZSA9IGNoYW5nZXNbJ292ZXJ2aWV3J107XG5cbiAgICBpZiAodGhpcy5lbmFibGVDaGFuZ2VPdmVydmlldyAmJiBvdmVydmlld0NoYW5nZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm92ZXJ2aWV3ID0gb3ZlcnZpZXdDaGFuZ2UuY3VycmVudFZhbHVlO1xuXG4gICAgICB0aGlzLnNldElubmVyU3RhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhQ2hhbmdlID0gY2hhbmdlc1snbWV0YSddO1xuXG4gICAgaWYgKCFtZXRhQ2hhbmdlIHx8IG1ldGFDaGFuZ2UuaXNGaXJzdENoYW5nZSgpIHx8IHRoaXMuaGlkZVByb2dyZXNzQmFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHByZXYgPSBtZXRhQ2hhbmdlLnByZXZpb3VzVmFsdWUgYXMgSUNoYXRNZXRhO1xuICAgICAgY29uc3QgY3VyciA9IG1ldGFDaGFuZ2UuY3VycmVudFZhbHVlIGFzIElDaGF0TWV0YTtcblxuICAgICAgaWYgKHByZXYud2FpdGluZ0Fuc3dlciAhPT0gY3Vyci53YWl0aW5nQW5zd2VyKSB7XG4gICAgICAgIGlmIChjdXJyPy53YWl0aW5nQW5zd2VyID09PSB0cnVlKSB7XG4gICAgICAgICAgLy8gbmV3IHJlc3BvbnNlIGZyb20gcHJvc3BlY3QvIHJlZCBkb3Qgd2FzIGFkZGVkXG5cbiAgICAgICAgICAvLyBpZiB0aGUgcHJvc3BlY3QgaGFzIGFuc3dlcmVkIGFuZCB0aGUgY2xpZW50IGhhc24ndCBzZW5kIGEgc2luZ2xlIG1lc3NhZ2UgeWV0XG4gICAgICAgICAgaWYgKHRoaXMubWV0YS5maXJzdEFuc3dlcikge1xuICAgICAgICAgICAgdGhpcy5zZXRJbm5lckNpcmNsZVN0YXRlKElOTkVSX0NJUkNMRV9TVEFURS5XYWl0aW5nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaWNrZXIoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gcHJvcGVjdCBhbnN3ZXJlZC8gcmVkIGRvdCB3YXMgcmVtb3ZlZFxuXG4gICAgICAgICAgdGhpcy5zZXRJbm5lckNpcmNsZVN0YXRlKElOTkVSX0NJUkNMRV9TVEFURS5RdWlldCk7XG4gICAgICAgICAgdGhpcy5zdG9wVGlja2VyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHByZXYuZmlyc3RBbnN3ZXIgIT09IGN1cnIuZmlyc3RBbnN3ZXIgJiYgY3Vyci5maXJzdEFuc3dlcikge1xuICAgICAgICAvLyBwcm9zcGVjdCBoYXMgYW5zd2VyZWQgZm9yIHRoZSBmaXJzdCB0aW1lXG5cbiAgICAgICAgdGhpcy5zZXRJbm5lckNpcmNsZVN0YXRlKElOTkVSX0NJUkNMRV9TVEFURS5RdWlldCk7XG4gICAgICAgIHRoaXMuc3RvcFRpY2tlcigpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJ1aWxkQ2lyY2xlT3B0cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50RGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5pbWFnZUxvYWRlciQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5uZXJTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBkZWNpc2lvbjogUHJvZ3Jlc3NEZWNpc2lvbiA9IGNvbXB1dGVJbm5lclN0YXRlKHtcbiAgICAgIGNyZWF0ZWRBdDogdGhpcy5vdmVydmlldy5jcmVhdGVkQXQsXG4gICAgICBsYXN0TWVzc2FnZVRpbWVzdGFtcDogdGhpcy5tZXRhLmxhc3RSZXNwb25zZVRpbWVzdGFtcCxcbiAgICAgIGZpcnN0QW5zd2VyOiB0aGlzLm1ldGEuZmlyc3RBbnN3ZXIsXG4gICAgICB3YWl0aW5nQW5zd2VyOiB0aGlzLm1ldGEud2FpdGluZ0Fuc3dlcixcbiAgICAgIGlubmVyTWF4OiB0aGlzLmlubmVyTWF4VmFsdWUsXG4gICAgICBjb252ZXJzYXRpb25GbGFnczogdGhpcy5tZXRhLmNvbnZlcnNhdGlvbkZsYWdzLFxuICAgIH0pO1xuICAgIGlmICghZGVjaXNpb24pIHJldHVybjtcblxuICAgIHRoaXMuc2V0SW5uZXJDaXJjbGVTdGF0ZShkZWNpc2lvbi5zdGF0ZSwgZGVjaXNpb24uaW5uZXJWYWx1ZSwgZGVjaXNpb24uYmFzZWRPbik7XG5cbiAgICBpZiAoZGVjaXNpb24udGljayA9PT0gJ3N0YXJ0Jykge1xuICAgICAgdGhpcy5zdGFydFRpY2tlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3BUaWNrZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLmJ1aWxkQ2lyY2xlT3B0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGVwUHJvZ3Jlc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSA8PSB0aGlzLmlubmVyTWF4VmFsdWUgJiYgKHRoaXMuaW5uZXJTdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLldhaXRpbmcgfHwgdGhpcy5pbm5lclN0YXRlID09PSBJTk5FUl9DSVJDTEVfU1RBVEUuVW5yZXNwb25zaXZlKSkge1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gTWF0aC5tYXgodGhpcy5pbm5lclZhbHVlIC0gdGhpcy5wcm9ncmVzc0dhcCwgMCk7XG4gICAgICB0aGlzLmJ1aWxkQ2lyY2xlT3B0cygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlubmVyVmFsdWUgPT09IDAgJiYgdGhpcy5pbm5lclN0YXRlID09PSBJTk5FUl9DSVJDTEVfU1RBVEUuV2FpdGluZykge1xuICAgICAgdGhpcy5zZXRJbm5lckNpcmNsZVN0YXRlKElOTkVSX0NJUkNMRV9TVEFURS5VbnJlc3BvbnNpdmUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlubmVyVmFsdWUgPT09IDAgJiYgdGhpcy5pbm5lclN0YXRlID09PSBJTk5FUl9DSVJDTEVfU1RBVEUuVW5yZXNwb25zaXZlKSB7XG4gICAgICB0aGlzLnNldElubmVyQ2lyY2xlU3RhdGUoSU5ORVJfQ0lSQ0xFX1NUQVRFLlJlZGVsZWdhdGlvbik7XG4gICAgICB0aGlzLnN0b3BUaWNrZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRQcm9maWxlSW1hZ2UoKTogdm9pZCB7XG4gICAgZnJvbShbdGhpcy5vdmVydmlldy5wcmltYXJ5LnNyYywgdGhpcy5vdmVydmlldy5zZWNvbmRhcnkuc3JjXSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSxcbiAgICAgICAgY29uY2F0TWFwKChpbWFnZVNyYykgPT4ge1xuICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigoaW1hZ2VPYnNlcnZlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgICAgIGltYWdlLnNyYyA9IGltYWdlU3JjO1xuXG4gICAgICAgICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIGltYWdlT2JzZXJ2ZXIubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgaW1hZ2VPYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaW1hZ2Uub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgICAgaW1hZ2VPYnNlcnZlci5lcnJvcihmYWxzZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW1hZ2VMb2FkZXIkLm5leHQodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbWFnZUxvYWRlciQubmV4dChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRUaWNrZXIoKTogdm9pZCB7XG4gICAgLy8gZ3VhcmQ6IGlmIGFscmVhZHkgYWN0aXZlLCBkbyBub3RoaW5nXG4gICAgaWYgKHRoaXMudGlja2VyU3ViKSByZXR1cm47XG5cbiAgICAvLyDwn5qrICdydW5PdXRzaWRlQW5ndWxhcigpJyBlbnN1cmVzIEFuZ3VsYXIgZG9lc27igJl0IHRyaWdnZXIgZ2xvYmFsIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAvLyBvbiBldmVyeSB0aW1lciBlbWlzc2lvbiAod2hpY2ggY2FuIGhhcHBlbiBldmVyeSBtaW51dGUgb3IgbGVzcykuXG4gICAgLy8gV2l0aG91dCBpdCwgQW5ndWxhciB3b3VsZCBydW4gJ0FwcGxpY2F0aW9uUmVmLnRpY2soKScgYW5kIHdhbGsgdGhlIGVudGlyZSBjb21wb25lbnQgdHJlZSxcbiAgICAvLyBldmVuIGlmIG9ubHkgb25lIGNvbXBvbmVudCBhY3R1YWxseSBuZWVkcyB0byB1cGRhdGUuXG4gICAgLy9cbiAgICAvLyBCeSBydW5uaW5nIHRoZSB0aWNraW5nIGxvZ2ljIG91dHNpZGUgQW5ndWxhcuKAmXMgem9uZSxcbiAgICAvLyB3ZSBrZWVwIHRoZSBtYWluIHRocmVhZCBsaWdodGVyIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSBET00gY2hlY2tzLlxuICAgIC8vIFRoZW4sIHdlIHJlLWVudGVyIEFuZ3VsYXIgbWFudWFsbHkgdXNpbmcgJ3J1bigpJ1xuICAgIC8vIGFuZCBjYWxsICdtYXJrRm9yQ2hlY2soKScgdG8gdXBkYXRlIHRoaXMgY29tcG9uZW50IG9ubHkuXG4gICAgLy9cbiAgICAvLyBUaGlzIHBhdHRlcm4gaXMgaWRlYWwgd2hlbiB1c2luZyAnQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoJ1xuICAgIC8vIGFuZCBnaXZlcyB1cyBwcmVjaXNlLCBlZmZpY2llbnQgcmVuZGVyaW5nIGNvbnRyb2wuXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy50aWNrZXJTdWIgPSB0aGlzLnRpY2tlci50aWNrJC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKG4pID0+IHtcbiAgICAgICAgdGhpcy5zdGVwUHJvZ3Jlc3MoKTtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wVGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMudGlja2VyU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMudGlja2VyU3ViID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5uZXJDaXJjbGVTdGF0ZShwcmVzZXQ6IElOTkVSX0NJUkNMRV9TVEFURSwgaW5uZXJWYWx1ZTogbnVtYmVyID0gbnVsbCwgYmFzZWRPbjogQ09VTlRFUl9GTEFHX0JBU0UgPSBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgbG9va1VwTWFwOiBSZWNvcmQ8XG4gICAgICBJTk5FUl9DSVJDTEVfU1RBVEUsXG4gICAgICB7XG4gICAgICAgIGlubmVyVmFsdWU6IG51bWJlcjtcbiAgICAgICAgc2hvd0lsbHVtaW5hdGlvbjogYm9vbGVhbjtcbiAgICAgICAgc2hvd1ZhbHVlUHJvcG9ydGlvbkxhYmVsOiBib29sZWFuO1xuICAgICAgICBpbm5lclBhcnRpYWxDb2xvcnM6IElJbm5lclBhcnRpYWxDaXJjbGVQcm9ncmVzc0NvbG9ycztcbiAgICAgICAgYmFzZWRPbjogQ09VTlRFUl9GTEFHX0JBU0U7XG4gICAgICB9XG4gICAgPiA9IHtcbiAgICAgIHdhaXRpbmc6IHtcbiAgICAgICAgaW5uZXJWYWx1ZTogdGhpcy5pbm5lck1heFZhbHVlLFxuICAgICAgICBzaG93SWxsdW1pbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgc2hvd1ZhbHVlUHJvcG9ydGlvbkxhYmVsOiB0cnVlLFxuICAgICAgICBpbm5lclBhcnRpYWxDb2xvcnM6IGlubmVyUHJvZ3Jlc3NXaGl0ZUNvbG9ycyxcbiAgICAgICAgYmFzZWRPbjogdGhpcy5iYXNlZE9uLFxuICAgICAgfSxcbiAgICAgIHF1aWV0OiB7XG4gICAgICAgIGlubmVyVmFsdWU6IHRoaXMuaW5uZXJNYXhWYWx1ZSxcbiAgICAgICAgc2hvd0lsbHVtaW5hdGlvbjogZmFsc2UsXG4gICAgICAgIHNob3dWYWx1ZVByb3BvcnRpb25MYWJlbDogZmFsc2UsXG4gICAgICAgIGlubmVyUGFydGlhbENvbG9yczogaW5uZXJQcm9ncmVzc0RlZmF1bHRDb2xvcnMsXG4gICAgICAgIGJhc2VkT246IG51bGwsXG4gICAgICB9LFxuICAgICAgdW5yZXNwb25zaXZlOiB7XG4gICAgICAgIGlubmVyVmFsdWU6IHRoaXMuaW5uZXJNYXhWYWx1ZSxcbiAgICAgICAgc2hvd0lsbHVtaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgc2hvd1ZhbHVlUHJvcG9ydGlvbkxhYmVsOiB0cnVlLFxuICAgICAgICBpbm5lclBhcnRpYWxDb2xvcnM6IGlubmVyUHJvZ3Jlc3NQaW5rQ29sb3JzLFxuICAgICAgICBiYXNlZE9uOiB0aGlzLmJhc2VkT24sXG4gICAgICB9LFxuICAgICAgcmVkZWxlZ2F0aW9uOiB7XG4gICAgICAgIGlubmVyVmFsdWU6IHRoaXMuaW5uZXJNYXhWYWx1ZSxcbiAgICAgICAgc2hvd0lsbHVtaW5hdGlvbjogZmFsc2UsXG4gICAgICAgIHNob3dWYWx1ZVByb3BvcnRpb25MYWJlbDogZmFsc2UsXG4gICAgICAgIGlubmVyUGFydGlhbENvbG9yczogaW5uZXJQcm9ncmVzc1RlYWxDb2xvcnMsXG4gICAgICAgIGJhc2VkT246IHRoaXMuYmFzZWRPbixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IG1hcCA9IGxvb2tVcE1hcFtwcmVzZXRdO1xuXG4gICAgdGhpcy5pbm5lclZhbHVlID0gaW5uZXJWYWx1ZSA/PyBtYXAuaW5uZXJWYWx1ZTtcbiAgICB0aGlzLnNob3dJbGx1bWluYXRpb24gPSBtYXAuc2hvd0lsbHVtaW5hdGlvbjtcbiAgICB0aGlzLnNob3dWYWx1ZVByb3BvcnRpb25MYWJlbCA9IG1hcC5zaG93VmFsdWVQcm9wb3J0aW9uTGFiZWw7XG4gICAgdGhpcy5pbm5lclBhcnRpYWxDb2xvcnMgPSBtYXAuaW5uZXJQYXJ0aWFsQ29sb3JzO1xuICAgIHRoaXMuYmFzZWRPbiA9IGJhc2VkT24gPz8gbWFwLmJhc2VkT247XG4gICAgdGhpcy5pbm5lclN0YXRlID0gcHJlc2V0O1xuXG4gICAgaWYgKHByZXNldCA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLlVucmVzcG9uc2l2ZSkge1xuICAgICAgdGhpcy5zZW5kQ29udmVyc2F0aW9uRmxhZy5lbWl0KHtcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICBwcm9zcGVjdElkOiB0aGlzLm92ZXJ2aWV3Ll9pZCxcbiAgICAgICAgYmFzZWRPbjogdGhpcy5iYXNlZE9uLFxuICAgICAgICBmbGFnOiBDT05WRVJTQVRJT05fRkxBRy5VTlJFU1BPTlNJVkUsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByZXNldCA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLlJlZGVsZWdhdGlvbikge1xuICAgICAgdGhpcy5zZW5kQ29udmVyc2F0aW9uRmxhZy5lbWl0KHtcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICBwcm9zcGVjdElkOiB0aGlzLm92ZXJ2aWV3Ll9pZCxcbiAgICAgICAgYmFzZWRPbjogdGhpcy5iYXNlZE9uLFxuICAgICAgICBmbGFnOiBDT05WRVJTQVRJT05fRkxBRy5SRURFTEVHQVRJT04sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmJ1aWxkQ2lyY2xlT3B0cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENpcmNsZU9wdHMoKTogdm9pZCB7XG4gICAgdGhpcy5jaXJjbGVPcHRzID0ge1xuICAgICAgdmFsdWU6IHRoaXMub3ZlcnZpZXcucHJlZmVyZW5jZXMgKyB0aGlzLm92ZXJ2aWV3LnBlcnNvbmFsaXR5LFxuICAgICAgbWF4OiB0aGlzLm1heFZhbHVlLFxuICAgICAgcGFydGlhbENvbG9yczogdGhpcy5wYXJ0aWFsQ29sb3JzLFxuICAgICAgc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzOiB0aGlzLnNob3dFeHRlcm5hbFBhcnRpYWxDaXJjbGVQcm9ncmVzcyAmJiB0aGlzLmV4cGFuZCxcbiAgICAgIHNob3dWYWx1ZVByb3BvcnRpb25MYWJlbDogdGhpcy5zaG93VmFsdWVQcm9wb3J0aW9uTGFiZWwsXG4gICAgICBoYXNOb3RpZmljYXRpb246IHRoaXMubWV0YT8ud2FpdGluZ0Fuc3dlcixcblxuICAgICAgaW5uZXI6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMuaW5uZXJWYWx1ZSxcbiAgICAgICAgbWF4OiB0aGlzLmlubmVyTWF4VmFsdWUsXG4gICAgICAgIGNvbG9yczogdGhpcy5pbm5lclBhcnRpYWxDb2xvcnMsXG4gICAgICAgIHN0YXRlOiB0aGlzLmlubmVyU3RhdGUsXG4gICAgICAgIHNob3dJbGx1bWluYXRpb246IHRoaXMuc2hvd0lsbHVtaW5hdGlvbixcbiAgICAgIH0sXG5cbiAgICAgIGltYWdlVXJsOiB0aGlzLm92ZXJ2aWV3LnByaW1hcnk/LnNyYyxcblxuICAgICAgc3VmZml4OiAnJyxcbiAgICAgIHByZWZpeDogJycsXG4gICAgfTtcbiAgfVxufVxuIiwiQGlmICghZGVmYXVsdCAmJiBpbWFnZUxvYWRlciQgfCBhc3luYykge1xuICA8ZGl2IGNsYXNzPVwib3ZlcnZpZXdcIiBbbmdDbGFzc109XCJ7IG92ZXJ2aWV3X19leHBhbmQ6IGV4cGFuZCwgb3ZlcnZpZXdfX2NvbGxhcHNlOiAhZXhwYW5kIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwib3ZlcnZpZXdfX2NvbnRhaW5lclwiPlxuICAgICAgPGxpYi1jaXJjbGUtcHJvZ3Jlc3NcbiAgICAgICAgY2xhc3M9XCJvdmVydmlld19fcHJvZ3Jlc3MtYmFyXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnb3ZlcnZpZXdfX3Byb2dyZXNzLWJhci0taGlkZGVuJzogaGlkZVByb2dyZXNzQmFyICYmICFleHBhbmQgfVwiXG4gICAgICAgIFt2YXJpYWJsZV09XCJjaXJjbGVWYXJpYWJsZS5QYXJ0aWFsXCJcbiAgICAgICAgW2NvbmZpZ109XCJjaXJjbGVPcHRzXCJcbiAgICAgID48L2xpYi1jaXJjbGUtcHJvZ3Jlc3M+XG4gICAgICA8IS0tIGRldGFpbHMgbmV4dCB0byB0aGUgY2lyY2xlIGltYWdlIC0tPlxuICAgICAgQGlmIChleHBhbmQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJ2aWV3X19jb21wYXJpc29uIGNvbXBhcmlzb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGFyaXNvbl9fZW50aXR5IHNlY29uZGFyeS1wcm9maWxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Vjb25kYXJ5LXByb2ZpbGVfX2ltYWdlXCI+XG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiPlxuICAgICAgICAgICAgICAgIDxjaXJjbGUgcj1cIjUwXCIgY3g9XCI1MFwiIGN5PVwiNTBcIiBmaWxsPVwiIzI4MjUyRFwiIC8+XG4gICAgICAgICAgICAgICAgPGltYWdlIFthdHRyLm1hc2tdPVwiJ3VybCgjJyArIGltYWdlUGF0aElkICsgJyknXCIgW2F0dHIuaHJlZl09XCJvdmVydmlldy5zZWNvbmRhcnkuc3JjXCIgaGVpZ2h0PVwiODBcIiB3aWR0aD1cIjgwXCIgeD1cIjEwXCIgeT1cIjEwXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgICAgICAgIDxtYXNrIFthdHRyLmlkXT1cImltYWdlUGF0aElkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9XCIwXCIgeT1cIjBcIiBoZWlnaHQ9XCIxMDBcIiB3aWR0aD1cIjEwMFwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNDBcIiBmaWxsPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9tYXNrPlxuICAgICAgICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wYXJpc29uX19sYWJlbFwiPnt7IG92ZXJ2aWV3LnNlY29uZGFyeS5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhcmlzb25fX2VudGl0eVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhcmlzb25fX3ZhbHVlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJlZmVyZW5jZXNcIj57eyBvdmVydmlldy5wcmVmZXJlbmNlcyB9fSU8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wYXJpc29uX19sYWJlbFwiPnt7ICdDTElFTlRfTUFUQ0hfT1ZFUlZJRVcuUFJFRkVSRU5DRVNfTUFUQ0gnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhcmlzb25fX2VudGl0eVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhcmlzb25fX3ZhbHVlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyc29uYWxpdHlcIj57eyBvdmVydmlldy5wZXJzb25hbGl0eSB9fSU8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wYXJpc29uX19sYWJlbFwiPnt7ICdDTElFTlRfTUFUQ0hfT1ZFUlZJRVcuUEVSU09OQUxJVFlfTUFUQ0gnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDwhLS0gc2hhZG93IG9uIGFsbCB0aGUgY29tcG9uZW50IChjaXJjbGUgaW1hZ2UgYW5kIHRleHRzKSAtLT5cbiAgICBAaWYgKGV4cGFuZCkge1xuICAgICAgPGRpdiBjbGFzcz1cIm92ZXJ2aWV3X19iYWNrLXNoYWRvd1wiPlxuICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvYmFja2dyb3VuZC1lY2xpcHNlLnN2Z1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxufSBAZWxzZSBpZiAobG9hZGluZykge1xuICA8ZGl2IGNsYXNzPVwib3ZlcnZpZXdcIiBwYXJ0PVwibG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJvdmVydmlld19fY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1lbXB0eS1wcm9maWxlXCI+XG4gICAgICAgIDxwLXNrZWxldG9uIHNoYXBlPVwiY2lyY2xlXCIgc2l6ZT1cIjNyZW1cIiBjbGFzcz1cImxvYWRpbmctc2tlbGV0b25cIiAvPlxuICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjM0XCIgaGVpZ2h0PVwiMzVcIiB2aWV3Qm94PVwiMCAwIDM0IDM1XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTcuMDA5NlwiIGN5PVwiMTcuNTQzOVwiIHI9XCIxNi41OTQ1XCIgZmlsbD1cIiMyOTI1MkRcIiAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgZD1cIk0xMy40ODQzIDE4LjI1MDFDMTMuNTAwOCAxOC4yNDkzIDEzLjUxNzQgMTguMjQ4OSAxMy41MzM5IDE4LjI0ODlIMjAuMTM4NEMyMC4xNTQ5IDE4LjI0ODkgMjAuMTcxNCAxOC4yNDkzIDIwLjE4OCAxOC4yNTAxQzIyLjUwMSAxOC4zNjQ5IDI0LjU1MTMgMTkuNzcyNiAyNS40OTAxIDIxLjg4NzhDMjYuMTY0NCAyMy4yMzY4IDI1Ljc4ODQgMjQuNTcyNCAyNC45Mjc1IDI1LjQ5MjFDMjQuMDkzNyAyNi4zODI3IDIyLjgwMiAyNi45MTQ1IDIxLjQ1OTUgMjYuOTE0NUgxMi4yMTI3QzEwLjg3MDcgMjYuOTE0NSA5LjU3OTQxIDI2LjM4MjUgOC43NDU4MiAyNS40OTIxQzcuODg0OTkgMjQuNTcyNiA3LjUwODU4IDIzLjIzNzIgOC4xODIgMjEuODg4QzkuMTIwODcgMTkuNzcyNiAxMS4xNzEyIDE4LjM2NSAxMy40ODQzIDE4LjI1MDFaTTEzLjU2IDIwLjI0ODZDMTIuMDA0NCAyMC4zMzQ2IDEwLjYyODMgMjEuMjg4NCAxMC4wMDIyIDIyLjcxNjVDOS45OTQ0MyAyMi43MzQyIDkuOTg2MTcgMjIuNzUxNyA5Ljk3NzQxIDIyLjc2ODlDOS43MjY3NCAyMy4yNjA5IDkuODIwMzQgMjMuNzEzOCAxMC4yMDU3IDI0LjEyNTNDMTAuNjIzOSAyNC41NzIxIDExLjM2NyAyNC45MTQ3IDEyLjIxMjcgMjQuOTE0N0gyMS40NTk1QzIyLjMwNjEgMjQuOTE0NyAyMy4wNDk1IDI0LjU3MiAyMy40Njc1IDI0LjEyNTNDMjMuODUyNyAyMy43MTQxIDIzLjk0NjEgMjMuMjYxNiAyMy42OTUxIDIyLjc2OTRDMjMuNjg2MyAyMi43NTIxIDIzLjY3NzkgMjIuNzM0MyAyMy42NyAyMi43MTY1QzIzLjA0NCAyMS4yODg0IDIxLjY2NzkgMjAuMzM0NiAyMC4xMTIyIDIwLjI0ODZIMTMuNTZaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjNUU1RTVFXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgZD1cIk0xNi44MzYgOC4yNDk5M0MxNS4xNzk0IDguMjQ5OTMgMTMuODM2NCA5LjU5MjkgMTMuODM2NCAxMS4yNDk1QzEzLjgzNjQgMTIuOTA2MiAxNS4xNzk0IDE0LjI0OTIgMTYuODM2IDE0LjI0OTJDMTguNDkyNyAxNC4yNDkyIDE5LjgzNTYgMTIuOTA2MiAxOS44MzU2IDExLjI0OTVDMTkuODM1NiAxMC40NTQgMTkuNTE5NyA5LjY5MTAzIDE4Ljk1NzEgOS4xMjg0OUMxOC4zOTQ1IDguNTY1OTUgMTcuNjMxNSA4LjI0OTkzIDE2LjgzNiA4LjI0OTkzWk0xMS44MzY3IDExLjI0OTVDMTEuODM2NyA4LjQ4ODQ3IDE0LjA3NSA2LjI1MDE4IDE2LjgzNiA2LjI1MDE4QzE4LjE2MiA2LjI1MDE4IDE5LjQzMzUgNi43NzY5IDIwLjM3MTIgNy43MTQ0NkMyMS4zMDg2IDguNjUyMDIgMjEuODM1NCA5LjkyMzYzIDIxLjgzNTQgMTEuMjQ5NUMyMS44MzU0IDE0LjAxMDcgMTkuNTk3MSAxNi4yNDg5IDE2LjgzNiAxNi4yNDg5QzE0LjA3NSAxNi4yNDg5IDExLjgzNjcgMTQuMDEwNyAxMS44MzY3IDExLjI0OTVaXCJcbiAgICAgICAgICAgIGZpbGw9XCIjNUU1RTVFXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbn0gQGVsc2UgaWYgKGRlZmF1bHQgfHwgIW92ZXJ2aWV3LnByaW1hcnkpIHtcbiAgPGRpdiBjbGFzcz1cIm92ZXJ2aWV3XCI+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJ2aWV3X19jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkZWZhdWx0LWVtcHR5LXByb2ZpbGVcIj5cbiAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzNFwiIGhlaWdodD1cIjM1XCIgdmlld0JveD1cIjAgMCAzNCAzNVwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjE3LjAwOTZcIiBjeT1cIjE3LjU0MzlcIiByPVwiMTYuNTk0NVwiIGZpbGw9XCIjMjkyNTJEXCIgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGQ9XCJNMTMuNDg0MyAxOC4yNTAxQzEzLjUwMDggMTguMjQ5MyAxMy41MTc0IDE4LjI0ODkgMTMuNTMzOSAxOC4yNDg5SDIwLjEzODRDMjAuMTU0OSAxOC4yNDg5IDIwLjE3MTQgMTguMjQ5MyAyMC4xODggMTguMjUwMUMyMi41MDEgMTguMzY0OSAyNC41NTEzIDE5Ljc3MjYgMjUuNDkwMSAyMS44ODc4QzI2LjE2NDQgMjMuMjM2OCAyNS43ODg0IDI0LjU3MjQgMjQuOTI3NSAyNS40OTIxQzI0LjA5MzcgMjYuMzgyNyAyMi44MDIgMjYuOTE0NSAyMS40NTk1IDI2LjkxNDVIMTIuMjEyN0MxMC44NzA3IDI2LjkxNDUgOS41Nzk0MSAyNi4zODI1IDguNzQ1ODIgMjUuNDkyMUM3Ljg4NDk5IDI0LjU3MjYgNy41MDg1OCAyMy4yMzcyIDguMTgyIDIxLjg4OEM5LjEyMDg3IDE5Ljc3MjYgMTEuMTcxMiAxOC4zNjUgMTMuNDg0MyAxOC4yNTAxWk0xMy41NiAyMC4yNDg2QzEyLjAwNDQgMjAuMzM0NiAxMC42MjgzIDIxLjI4ODQgMTAuMDAyMiAyMi43MTY1QzkuOTk0NDMgMjIuNzM0MiA5Ljk4NjE3IDIyLjc1MTcgOS45Nzc0MSAyMi43Njg5QzkuNzI2NzQgMjMuMjYwOSA5LjgyMDM0IDIzLjcxMzggMTAuMjA1NyAyNC4xMjUzQzEwLjYyMzkgMjQuNTcyMSAxMS4zNjcgMjQuOTE0NyAxMi4yMTI3IDI0LjkxNDdIMjEuNDU5NUMyMi4zMDYxIDI0LjkxNDcgMjMuMDQ5NSAyNC41NzIgMjMuNDY3NSAyNC4xMjUzQzIzLjg1MjcgMjMuNzE0MSAyMy45NDYxIDIzLjI2MTYgMjMuNjk1MSAyMi43Njk0QzIzLjY4NjMgMjIuNzUyMSAyMy42Nzc5IDIyLjczNDMgMjMuNjcgMjIuNzE2NUMyMy4wNDQgMjEuMjg4NCAyMS42Njc5IDIwLjMzNDYgMjAuMTEyMiAyMC4yNDg2SDEzLjU2WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzVFNUU1RVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZmlsbC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIGQ9XCJNMTYuODM2IDguMjQ5OTNDMTUuMTc5NCA4LjI0OTkzIDEzLjgzNjQgOS41OTI5IDEzLjgzNjQgMTEuMjQ5NUMxMy44MzY0IDEyLjkwNjIgMTUuMTc5NCAxNC4yNDkyIDE2LjgzNiAxNC4yNDkyQzE4LjQ5MjcgMTQuMjQ5MiAxOS44MzU2IDEyLjkwNjIgMTkuODM1NiAxMS4yNDk1QzE5LjgzNTYgMTAuNDU0IDE5LjUxOTcgOS42OTEwMyAxOC45NTcxIDkuMTI4NDlDMTguMzk0NSA4LjU2NTk1IDE3LjYzMTUgOC4yNDk5MyAxNi44MzYgOC4yNDk5M1pNMTEuODM2NyAxMS4yNDk1QzExLjgzNjcgOC40ODg0NyAxNC4wNzUgNi4yNTAxOCAxNi44MzYgNi4yNTAxOEMxOC4xNjIgNi4yNTAxOCAxOS40MzM1IDYuNzc2OSAyMC4zNzEyIDcuNzE0NDZDMjEuMzA4NiA4LjY1MjAyIDIxLjgzNTQgOS45MjM2MyAyMS44MzU0IDExLjI0OTVDMjEuODM1NCAxNC4wMTA3IDE5LjU5NzEgMTYuMjQ4OSAxNi44MzYgMTYuMjQ4OUMxNC4wNzUgMTYuMjQ4OSAxMS44MzY3IDE0LjAxMDcgMTEuODM2NyAxMS4yNDk1WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzVFNUU1RVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export var CONVERSATION_FLAG;
2
+ (function (CONVERSATION_FLAG) {
3
+ CONVERSATION_FLAG["UNRESPONSIVE"] = "unresponsive";
4
+ CONVERSATION_FLAG["REDELEGATION"] = "redelegation";
5
+ })(CONVERSATION_FLAG || (CONVERSATION_FLAG = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWZsYWcuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xpZW50LW1hdGNoLW92ZXJ2aWV3L2VudW1zL2NvbnZlcnNhdGlvbi1mbGFnLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksaUJBR1g7QUFIRCxXQUFZLGlCQUFpQjtJQUMzQixrREFBNkIsQ0FBQTtJQUM3QixrREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENPTlZFUlNBVElPTl9GTEFHIHtcbiAgVU5SRVNQT05TSVZFID0gJ3VucmVzcG9uc2l2ZScsXG4gIFJFREVMRUdBVElPTiA9ICdyZWRlbGVnYXRpb24nLFxufVxuIl19
@@ -0,0 +1,6 @@
1
+ export var COUNTER_FLAG_BASE;
2
+ (function (COUNTER_FLAG_BASE) {
3
+ COUNTER_FLAG_BASE["StartConversation"] = "startConversation";
4
+ COUNTER_FLAG_BASE["LastResponse"] = "lastResponse";
5
+ })(COUNTER_FLAG_BASE || (COUNTER_FLAG_BASE = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRlci1mbGFnLWJhc2UuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xpZW50LW1hdGNoLW92ZXJ2aWV3L2VudW1zL2NvdW50ZXItZmxhZy1iYXNlLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksaUJBR1g7QUFIRCxXQUFZLGlCQUFpQjtJQUMzQiw0REFBdUMsQ0FBQTtJQUN2QyxrREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENPVU5URVJfRkxBR19CQVNFIHtcbiAgU3RhcnRDb252ZXJzYXRpb24gPSAnc3RhcnRDb252ZXJzYXRpb24nLFxuICBMYXN0UmVzcG9uc2UgPSAnbGFzdFJlc3BvbnNlJyxcbn1cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export var INNER_CIRCLE_STATE;
2
+ (function (INNER_CIRCLE_STATE) {
3
+ INNER_CIRCLE_STATE["Waiting"] = "waiting";
4
+ INNER_CIRCLE_STATE["Quiet"] = "quiet";
5
+ INNER_CIRCLE_STATE["Unresponsive"] = "unresponsive";
6
+ INNER_CIRCLE_STATE["Redelegation"] = "redelegation";
7
+ })(INNER_CIRCLE_STATE || (INNER_CIRCLE_STATE = {}));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItY2lyY2xlLXN0YXRlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NsaWVudC1tYXRjaC1vdmVydmlldy9lbnVtcy9pbm5lci1jaXJjbGUtc3RhdGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxrQkFLWDtBQUxELFdBQVksa0JBQWtCO0lBQzVCLHlDQUFtQixDQUFBO0lBQ25CLHFDQUFlLENBQUE7SUFDZixtREFBNkIsQ0FBQTtJQUM3QixtREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBTFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUs3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIElOTkVSX0NJUkNMRV9TVEFURSB7XG4gIFdhaXRpbmcgPSAnd2FpdGluZycsXG4gIFF1aWV0ID0gJ3F1aWV0JyxcbiAgVW5yZXNwb25zaXZlID0gJ3VucmVzcG9uc2l2ZScsXG4gIFJlZGVsZWdhdGlvbiA9ICdyZWRlbGVnYXRpb24nLFxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LW1hdGNoLW92ZXJ2aWV3LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xpZW50LW1hdGNoLW92ZXJ2aWV3L2ludGVyZmFjZXMvY2xpZW50LW1hdGNoLW92ZXJ2aWV3LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVByb3NwZWN0RGF0YSB9IGZyb20gJy4uLy4uL2xpYi1jb21wb3NlLW1hdGNoZXItZGFzaC9pbnRlcmZhY2VzL3Byb3NwZWN0LWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IElEYXNoYm9hcmRNYXRjaFJlcXVlc3QgfSBmcm9tICcuL2Rhc2hib2FyZC1tYXRjaC1yZXF1ZXN0LmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxpYkNsaWVudE1hdGNoT3ZlcnZpZXcge1xuICBfaWQ/OiBzdHJpbmc7XG4gIHByaW1hcnk6IElDbGllbnRGaWVsZHM7XG4gIHNlY29uZGFyeTogSUNsaWVudEZpZWxkcztcbiAgcHJlZmVyZW5jZXM6IG51bWJlcjtcbiAgcGVyc29uYWxpdHk6IG51bWJlcjtcbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG4gIHNob3dIYW5kb2ZmPzogYm9vbGVhbjtcbiAgY3JlYXRlZEF0OiBEYXRlO1xuICBwcm9zcGVjdERhdGE6IElQcm9zcGVjdERhdGE7XG4gIG1hdGNoUmVxdWVzdDogSURhc2hib2FyZE1hdGNoUmVxdWVzdDtcbn1cblxuaW50ZXJmYWNlIElDbGllbnRGaWVsZHMge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNyYzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLWZsYWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvaW50ZXJmYWNlcy9jb252ZXJzYXRpb24tZmxhZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTlZFUlNBVElPTl9GTEFHIH0gZnJvbSAnLi4vZW51bXMvY29udmVyc2F0aW9uLWZsYWcuZW51bSc7XG5pbXBvcnQgeyBDT1VOVEVSX0ZMQUdfQkFTRSB9IGZyb20gJy4uL2VudW1zL2NvdW50ZXItZmxhZy1iYXNlLmVudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb252ZXJzYXRpb25GbGFnIHtcbiAgdGltZXN0YW1wOiBEYXRlO1xuICBwcm9zcGVjdElkOiBzdHJpbmc7XG4gIGJhc2VkT246IENPVU5URVJfRkxBR19CQVNFO1xuICBmbGFnOiBDT05WRVJTQVRJT05fRkxBRztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLW1hdGNoLXJlcXVlc3QuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvaW50ZXJmYWNlcy9kYXNoYm9hcmQtbWF0Y2gtcmVxdWVzdC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSURhc2hib2FyZE1hdGNoUmVxdWVzdCB7XG4gIF9pZDogc3RyaW5nO1xuICBtYXRjaGVySWQ6IHN0cmluZztcbiAgY2xpZW50SWQ6IHN0cmluZztcbiAgY2xpZW50TmFtZTogc3RyaW5nO1xuICBjbGllbnRJbWFnZXM6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtZGVjaXNpb24uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvaW50ZXJmYWNlcy9wcm9ncmVzcy1kZWNpc2lvbi5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPVU5URVJfRkxBR19CQVNFIH0gZnJvbSAnLi4vZW51bXMvY291bnRlci1mbGFnLWJhc2UuZW51bSc7XG5pbXBvcnQgeyBJTk5FUl9DSVJDTEVfU1RBVEUgfSBmcm9tICcuLi9lbnVtcy9pbm5lci1jaXJjbGUtc3RhdGUuZW51bSc7XG5cbi8qKiBEZWNpc2lvbiBidW5kbGUgcmV0dXJuZWQgdG8gdGhlIGNvbXBvbmVudCAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc0RlY2lzaW9uIHtcbiAgc3RhdGU6IElOTkVSX0NJUkNMRV9TVEFURTtcbiAgaW5uZXJWYWx1ZTogbnVtYmVyIHwgbnVsbDsgLy8gbnVsbCBtZWFucyDigJxyZXNldCB0byBpbm5lck1heOKAnVxuICB0aWNrOiAnc3RhcnQnIHwgJ3N0b3AnO1xuICBiYXNlZE9uOiBDT1VOVEVSX0ZMQUdfQkFTRTtcbiAgcmVnaXN0ZXJlZDogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtZmFjdHMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvaW50ZXJmYWNlcy9wcm9ncmVzcy1mYWN0cy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDb252ZXJzYXRpb25GbGFnIH0gZnJvbSAnLi9jb252ZXJzYXRpb24tZmxhZy5pbnRlcmZhY2UnO1xuXG4vKiogSW5wdXRzIHRoZSBwdXJlIGZ1bmN0aW9uIG5lZWRzICovXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzRmFjdHMge1xuICBjcmVhdGVkQXQ6IERhdGU7IC8vIHdoZW4gdGhlIG1hdGNoIG9iamVjdCB3YXMgYm9yblxuICBsYXN0TWVzc2FnZVRpbWVzdGFtcDogRGF0ZSB8IG51bGw7XG4gIGZpcnN0QW5zd2VyOiBib29sZWFuOyAvLyBoYXMgdGhlIHByb3NwZWN0IHJlcGxpZWQgYXQgbGVhc3Qgb25jZT9cbiAgd2FpdGluZ0Fuc3dlcjogYm9vbGVhbjsgLy8gcHJvc3BlY3Qgd3JvdGUgbGFzdCBhbmQgd2FpdHMgZm9yIG1lXG4gIG5vd01zPzogbnVtYmVyOyAvLyB1bml0LXRlc3Qgb3ZlcnJpZGUsIGRlZmF1bHRzIHRvIERhdGUubm93KClcbiAgaW5uZXJNYXg6IG51bWJlcjsgLy8gMTQ0MCAoPSAyNGgpIGluIHlvdXIgY29tcG9uZW50XG4gIGNvbnZlcnNhdGlvbkZsYWdzOiBJQ29udmVyc2F0aW9uRmxhZ1tdO1xufVxuIl19
@@ -0,0 +1,81 @@
1
+ import { CONVERSATION_FLAG } from '../enums/conversation-flag.enum';
2
+ import { COUNTER_FLAG_BASE } from '../enums/counter-flag-base.enum';
3
+ import { INNER_CIRCLE_STATE } from '../enums/inner-circle-state.enum';
4
+ import { getLimitDatesIndicators } from './limit-dates-indicator.lookup';
5
+ /**
6
+ * Pure “rules engine” for the inner circle.
7
+ * No side-effects, no RxJS, no Angular.
8
+ */
9
+ export function computeInnerState(indicators) {
10
+ if (!indicators.createdAt) {
11
+ return null;
12
+ }
13
+ let basedOn;
14
+ const now = indicators.nowMs ?? Date.now();
15
+ // --- 1️⃣ How many minutes since the reference point? ---
16
+ let minutesSinceRef;
17
+ let limitDatesIndicators;
18
+ if (indicators.firstAnswer) {
19
+ if (indicators.lastMessageTimestamp) {
20
+ if (indicators.waitingAnswer) {
21
+ minutesSinceRef = diffMinutes(indicators.lastMessageTimestamp.getTime(), now);
22
+ basedOn = COUNTER_FLAG_BASE.LastResponse;
23
+ limitDatesIndicators = getLimitDatesIndicators(indicators.lastMessageTimestamp);
24
+ }
25
+ else {
26
+ minutesSinceRef = null; // I already replied
27
+ basedOn = null;
28
+ limitDatesIndicators = null;
29
+ }
30
+ }
31
+ else {
32
+ minutesSinceRef = null; // prospect never replied
33
+ basedOn = null;
34
+ limitDatesIndicators = null;
35
+ }
36
+ }
37
+ else {
38
+ minutesSinceRef = diffMinutes(indicators.createdAt.getTime(), now);
39
+ basedOn = COUNTER_FLAG_BASE.StartConversation;
40
+ limitDatesIndicators = getLimitDatesIndicators(indicators.createdAt, indicators.innerMax);
41
+ }
42
+ // --- 2️⃣ Decide state ----------------------------------
43
+ if (minutesSinceRef === null) {
44
+ return quiet(); // nothing to track
45
+ }
46
+ const { UNRESPONSIVE, REDELEGATION } = limitDatesIndicators;
47
+ if (indicators.innerMax * 2 - minutesSinceRef <= 0) {
48
+ const flagFound = indicators.conversationFlags?.find((flag) => {
49
+ return flag.flag === CONVERSATION_FLAG.REDELEGATION && flag.timestamp.getTime() === REDELEGATION.getTime() && flag.basedOn === basedOn;
50
+ });
51
+ return redelegation(basedOn, !!flagFound);
52
+ }
53
+ if (indicators.innerMax - minutesSinceRef <= 0) {
54
+ const remainder = indicators.innerMax - (minutesSinceRef - 24 * 60);
55
+ const flagFound = indicators.conversationFlags?.find((flag) => {
56
+ return flag.flag === CONVERSATION_FLAG.UNRESPONSIVE && flag.timestamp.getTime() === UNRESPONSIVE.getTime() && flag.basedOn === basedOn;
57
+ });
58
+ return unresponsive(remainder, basedOn, !!flagFound);
59
+ }
60
+ // Waiting path
61
+ if (indicators.lastMessageTimestamp) {
62
+ return indicators.waitingAnswer ? waiting(indicators.innerMax - minutesSinceRef, basedOn) : quiet();
63
+ }
64
+ // Prospect still waiting for FIRST message
65
+ return waiting(indicators.innerMax - minutesSinceRef, basedOn);
66
+ }
67
+ // ------------------ local helpers -----------------------
68
+ const diffMinutes = (past, present) => Math.floor((present - past) / 1000 / 60);
69
+ const quiet = () => {
70
+ return { state: INNER_CIRCLE_STATE.Quiet, innerValue: null, tick: 'stop', basedOn: null, registered: null };
71
+ };
72
+ const waiting = (value, basedOn) => {
73
+ return { state: INNER_CIRCLE_STATE.Waiting, innerValue: value, tick: 'start', basedOn, registered: null };
74
+ };
75
+ const unresponsive = (value, basedOn, registered) => {
76
+ return { state: INNER_CIRCLE_STATE.Unresponsive, innerValue: value, tick: 'start', basedOn, registered };
77
+ };
78
+ const redelegation = (basedOn, registered) => {
79
+ return { state: INNER_CIRCLE_STATE.Redelegation, innerValue: null, tick: 'stop', basedOn, registered };
80
+ };
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZXItaW5uZXItc3RhdGUubG9va3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvbG9va3Vwcy9jb21wdXRlci1pbm5lci1zdGF0ZS5sb29rdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekU7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFVBQXlCO0lBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxPQUEwQixDQUFDO0lBRS9CLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTNDLDJEQUEyRDtJQUMzRCxJQUFJLGVBQThCLENBQUM7SUFFbkMsSUFBSSxvQkFBdUUsQ0FBQztJQUU1RSxJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQixJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3BDLElBQUksVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUM3QixlQUFlLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDOUUsT0FBTyxHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQztnQkFDekMsb0JBQW9CLEdBQUcsdUJBQXVCLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDbEYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQyxvQkFBb0I7Z0JBQzVDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ2Ysb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQyx5QkFBeUI7WUFDakQsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNmLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixlQUFlLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkUsT0FBTyxHQUFHLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO1FBQzlDLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsSUFBSSxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDN0IsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQjtJQUNyQyxDQUFDO0lBRUQsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQztJQUU1RCxJQUFJLFVBQVUsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLGVBQWUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUQsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQztRQUN6SSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFFBQVEsR0FBRyxlQUFlLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLGVBQWUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVELE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUM7UUFDekksQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsZUFBZTtJQUNmLElBQUksVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDcEMsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RHLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELDJEQUEyRDtBQUMzRCxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQVksRUFBRSxPQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBRWhHLE1BQU0sS0FBSyxHQUFHLEdBQXFCLEVBQUU7SUFDbkMsT0FBTyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQzlHLENBQUMsQ0FBQztBQUNGLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBYSxFQUFFLE9BQTBCLEVBQW9CLEVBQUU7SUFDOUUsT0FBTyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDNUcsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQUUsT0FBMEIsRUFBRSxVQUFtQixFQUFvQixFQUFFO0lBQ3hHLE9BQU8sRUFBRSxLQUFLLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDM0csQ0FBQyxDQUFDO0FBQ0YsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUEwQixFQUFFLFVBQW1CLEVBQW9CLEVBQUU7SUFDekYsT0FBTyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUN6RyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT05WRVJTQVRJT05fRkxBRyB9IGZyb20gJy4uL2VudW1zL2NvbnZlcnNhdGlvbi1mbGFnLmVudW0nO1xuaW1wb3J0IHsgQ09VTlRFUl9GTEFHX0JBU0UgfSBmcm9tICcuLi9lbnVtcy9jb3VudGVyLWZsYWctYmFzZS5lbnVtJztcbmltcG9ydCB7IElOTkVSX0NJUkNMRV9TVEFURSB9IGZyb20gJy4uL2VudW1zL2lubmVyLWNpcmNsZS1zdGF0ZS5lbnVtJztcbmltcG9ydCB7IFByb2dyZXNzRGVjaXNpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3Byb2dyZXNzLWRlY2lzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQcm9ncmVzc0ZhY3RzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wcm9ncmVzcy1mYWN0cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZ2V0TGltaXREYXRlc0luZGljYXRvcnMgfSBmcm9tICcuL2xpbWl0LWRhdGVzLWluZGljYXRvci5sb29rdXAnO1xuXG4vKipcbiAqIFB1cmUg4oCccnVsZXMgZW5naW5l4oCdIGZvciB0aGUgaW5uZXIgY2lyY2xlLlxuICogTm8gc2lkZS1lZmZlY3RzLCBubyBSeEpTLCBubyBBbmd1bGFyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUlubmVyU3RhdGUoaW5kaWNhdG9yczogUHJvZ3Jlc3NGYWN0cyk6IFByb2dyZXNzRGVjaXNpb24gfCBudWxsIHtcbiAgaWYgKCFpbmRpY2F0b3JzLmNyZWF0ZWRBdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbGV0IGJhc2VkT246IENPVU5URVJfRkxBR19CQVNFO1xuXG4gIGNvbnN0IG5vdyA9IGluZGljYXRvcnMubm93TXMgPz8gRGF0ZS5ub3coKTtcblxuICAvLyAtLS0gMe+4j+KDoyAgSG93IG1hbnkgbWludXRlcyBzaW5jZSB0aGUgcmVmZXJlbmNlIHBvaW50PyAtLS1cbiAgbGV0IG1pbnV0ZXNTaW5jZVJlZjogbnVtYmVyIHwgbnVsbDtcblxuICBsZXQgbGltaXREYXRlc0luZGljYXRvcnM6IHsgW2tleSBpbiBrZXlvZiB0eXBlb2YgQ09OVkVSU0FUSU9OX0ZMQUddOiBEYXRlIH07XG5cbiAgaWYgKGluZGljYXRvcnMuZmlyc3RBbnN3ZXIpIHtcbiAgICBpZiAoaW5kaWNhdG9ycy5sYXN0TWVzc2FnZVRpbWVzdGFtcCkge1xuICAgICAgaWYgKGluZGljYXRvcnMud2FpdGluZ0Fuc3dlcikge1xuICAgICAgICBtaW51dGVzU2luY2VSZWYgPSBkaWZmTWludXRlcyhpbmRpY2F0b3JzLmxhc3RNZXNzYWdlVGltZXN0YW1wLmdldFRpbWUoKSwgbm93KTtcbiAgICAgICAgYmFzZWRPbiA9IENPVU5URVJfRkxBR19CQVNFLkxhc3RSZXNwb25zZTtcbiAgICAgICAgbGltaXREYXRlc0luZGljYXRvcnMgPSBnZXRMaW1pdERhdGVzSW5kaWNhdG9ycyhpbmRpY2F0b3JzLmxhc3RNZXNzYWdlVGltZXN0YW1wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pbnV0ZXNTaW5jZVJlZiA9IG51bGw7IC8vIEkgYWxyZWFkeSByZXBsaWVkXG4gICAgICAgIGJhc2VkT24gPSBudWxsO1xuICAgICAgICBsaW1pdERhdGVzSW5kaWNhdG9ycyA9IG51bGw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1pbnV0ZXNTaW5jZVJlZiA9IG51bGw7IC8vIHByb3NwZWN0IG5ldmVyIHJlcGxpZWRcbiAgICAgIGJhc2VkT24gPSBudWxsO1xuICAgICAgbGltaXREYXRlc0luZGljYXRvcnMgPSBudWxsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtaW51dGVzU2luY2VSZWYgPSBkaWZmTWludXRlcyhpbmRpY2F0b3JzLmNyZWF0ZWRBdC5nZXRUaW1lKCksIG5vdyk7XG4gICAgYmFzZWRPbiA9IENPVU5URVJfRkxBR19CQVNFLlN0YXJ0Q29udmVyc2F0aW9uO1xuICAgIGxpbWl0RGF0ZXNJbmRpY2F0b3JzID0gZ2V0TGltaXREYXRlc0luZGljYXRvcnMoaW5kaWNhdG9ycy5jcmVhdGVkQXQsIGluZGljYXRvcnMuaW5uZXJNYXgpO1xuICB9XG5cbiAgLy8gLS0tIDLvuI/ig6MgIERlY2lkZSBzdGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGlmIChtaW51dGVzU2luY2VSZWYgPT09IG51bGwpIHtcbiAgICByZXR1cm4gcXVpZXQoKTsgLy8gbm90aGluZyB0byB0cmFja1xuICB9XG5cbiAgY29uc3QgeyBVTlJFU1BPTlNJVkUsIFJFREVMRUdBVElPTiB9ID0gbGltaXREYXRlc0luZGljYXRvcnM7XG5cbiAgaWYgKGluZGljYXRvcnMuaW5uZXJNYXggKiAyIC0gbWludXRlc1NpbmNlUmVmIDw9IDApIHtcbiAgICBjb25zdCBmbGFnRm91bmQgPSBpbmRpY2F0b3JzLmNvbnZlcnNhdGlvbkZsYWdzPy5maW5kKChmbGFnKSA9PiB7XG4gICAgICByZXR1cm4gZmxhZy5mbGFnID09PSBDT05WRVJTQVRJT05fRkxBRy5SRURFTEVHQVRJT04gJiYgZmxhZy50aW1lc3RhbXAuZ2V0VGltZSgpID09PSBSRURFTEVHQVRJT04uZ2V0VGltZSgpICYmIGZsYWcuYmFzZWRPbiA9PT0gYmFzZWRPbjtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVkZWxlZ2F0aW9uKGJhc2VkT24sICEhZmxhZ0ZvdW5kKTtcbiAgfVxuXG4gIGlmIChpbmRpY2F0b3JzLmlubmVyTWF4IC0gbWludXRlc1NpbmNlUmVmIDw9IDApIHtcbiAgICBjb25zdCByZW1haW5kZXIgPSBpbmRpY2F0b3JzLmlubmVyTWF4IC0gKG1pbnV0ZXNTaW5jZVJlZiAtIDI0ICogNjApO1xuICAgIGNvbnN0IGZsYWdGb3VuZCA9IGluZGljYXRvcnMuY29udmVyc2F0aW9uRmxhZ3M/LmZpbmQoKGZsYWcpID0+IHtcbiAgICAgIHJldHVybiBmbGFnLmZsYWcgPT09IENPTlZFUlNBVElPTl9GTEFHLlVOUkVTUE9OU0lWRSAmJiBmbGFnLnRpbWVzdGFtcC5nZXRUaW1lKCkgPT09IFVOUkVTUE9OU0lWRS5nZXRUaW1lKCkgJiYgZmxhZy5iYXNlZE9uID09PSBiYXNlZE9uO1xuICAgIH0pO1xuICAgIHJldHVybiB1bnJlc3BvbnNpdmUocmVtYWluZGVyLCBiYXNlZE9uLCAhIWZsYWdGb3VuZCk7XG4gIH1cblxuICAvLyBXYWl0aW5nIHBhdGhcbiAgaWYgKGluZGljYXRvcnMubGFzdE1lc3NhZ2VUaW1lc3RhbXApIHtcbiAgICByZXR1cm4gaW5kaWNhdG9ycy53YWl0aW5nQW5zd2VyID8gd2FpdGluZyhpbmRpY2F0b3JzLmlubmVyTWF4IC0gbWludXRlc1NpbmNlUmVmLCBiYXNlZE9uKSA6IHF1aWV0KCk7XG4gIH1cblxuICAvLyBQcm9zcGVjdCBzdGlsbCB3YWl0aW5nIGZvciBGSVJTVCBtZXNzYWdlXG4gIHJldHVybiB3YWl0aW5nKGluZGljYXRvcnMuaW5uZXJNYXggLSBtaW51dGVzU2luY2VSZWYsIGJhc2VkT24pO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0gbG9jYWwgaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgZGlmZk1pbnV0ZXMgPSAocGFzdDogbnVtYmVyLCBwcmVzZW50OiBudW1iZXIpID0+IE1hdGguZmxvb3IoKHByZXNlbnQgLSBwYXN0KSAvIDEwMDAgLyA2MCk7XG5cbmNvbnN0IHF1aWV0ID0gKCk6IFByb2dyZXNzRGVjaXNpb24gPT4ge1xuICByZXR1cm4geyBzdGF0ZTogSU5ORVJfQ0lSQ0xFX1NUQVRFLlF1aWV0LCBpbm5lclZhbHVlOiBudWxsLCB0aWNrOiAnc3RvcCcsIGJhc2VkT246IG51bGwsIHJlZ2lzdGVyZWQ6IG51bGwgfTtcbn07XG5jb25zdCB3YWl0aW5nID0gKHZhbHVlOiBudW1iZXIsIGJhc2VkT246IENPVU5URVJfRkxBR19CQVNFKTogUHJvZ3Jlc3NEZWNpc2lvbiA9PiB7XG4gIHJldHVybiB7IHN0YXRlOiBJTk5FUl9DSVJDTEVfU1RBVEUuV2FpdGluZywgaW5uZXJWYWx1ZTogdmFsdWUsIHRpY2s6ICdzdGFydCcsIGJhc2VkT24sIHJlZ2lzdGVyZWQ6IG51bGwgfTtcbn07XG5jb25zdCB1bnJlc3BvbnNpdmUgPSAodmFsdWU6IG51bWJlciwgYmFzZWRPbjogQ09VTlRFUl9GTEFHX0JBU0UsIHJlZ2lzdGVyZWQ6IGJvb2xlYW4pOiBQcm9ncmVzc0RlY2lzaW9uID0+IHtcbiAgcmV0dXJuIHsgc3RhdGU6IElOTkVSX0NJUkNMRV9TVEFURS5VbnJlc3BvbnNpdmUsIGlubmVyVmFsdWU6IHZhbHVlLCB0aWNrOiAnc3RhcnQnLCBiYXNlZE9uLCByZWdpc3RlcmVkIH07XG59O1xuY29uc3QgcmVkZWxlZ2F0aW9uID0gKGJhc2VkT246IENPVU5URVJfRkxBR19CQVNFLCByZWdpc3RlcmVkOiBib29sZWFuKTogUHJvZ3Jlc3NEZWNpc2lvbiA9PiB7XG4gIHJldHVybiB7IHN0YXRlOiBJTk5FUl9DSVJDTEVfU1RBVEUuUmVkZWxlZ2F0aW9uLCBpbm5lclZhbHVlOiBudWxsLCB0aWNrOiAnc3RvcCcsIGJhc2VkT24sIHJlZ2lzdGVyZWQgfTtcbn07XG4iXX0=
@@ -0,0 +1,8 @@
1
+ export const getLimitDatesIndicators = (timestamp, interval = 1_440) => {
2
+ const MS_IN_MIN = 60 * 1000; // 60 000
3
+ const baseTime = timestamp.getTime(); // epoch ms of the input
4
+ const Unresponsive = new Date(baseTime + interval * 1 * MS_IN_MIN);
5
+ const Redelegation = new Date(baseTime + interval * 2 * MS_IN_MIN);
6
+ return { UNRESPONSIVE: Unresponsive, REDELEGATION: Redelegation };
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGltaXQtZGF0ZXMtaW5kaWNhdG9yLmxvb2t1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xpZW50LW1hdGNoLW92ZXJ2aWV3L2xvb2t1cHMvbGltaXQtZGF0ZXMtaW5kaWNhdG9yLmxvb2t1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLFNBQWUsRUFBRSxXQUFtQixLQUFLLEVBQXFELEVBQUU7SUFDdEksTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLFNBQVM7SUFDdEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsd0JBQXdCO0lBRTlELE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUNwRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDT05WRVJTQVRJT05fRkxBRyB9IGZyb20gJy4uL2VudW1zL2NvbnZlcnNhdGlvbi1mbGFnLmVudW0nO1xuXG5leHBvcnQgY29uc3QgZ2V0TGltaXREYXRlc0luZGljYXRvcnMgPSAodGltZXN0YW1wOiBEYXRlLCBpbnRlcnZhbDogbnVtYmVyID0gMV80NDApOiB7IFtrZXkgaW4ga2V5b2YgdHlwZW9mIENPTlZFUlNBVElPTl9GTEFHXTogRGF0ZSB9ID0+IHtcbiAgY29uc3QgTVNfSU5fTUlOID0gNjAgKiAxMDAwOyAvLyA2MCAwMDBcbiAgY29uc3QgYmFzZVRpbWUgPSB0aW1lc3RhbXAuZ2V0VGltZSgpOyAvLyBlcG9jaCBtcyBvZiB0aGUgaW5wdXRcblxuICBjb25zdCBVbnJlc3BvbnNpdmUgPSBuZXcgRGF0ZShiYXNlVGltZSArIGludGVydmFsICogMSAqIE1TX0lOX01JTik7XG4gIGNvbnN0IFJlZGVsZWdhdGlvbiA9IG5ldyBEYXRlKGJhc2VUaW1lICsgaW50ZXJ2YWwgKiAyICogTVNfSU5fTUlOKTtcblxuICByZXR1cm4geyBVTlJFU1BPTlNJVkU6IFVucmVzcG9uc2l2ZSwgUkVERUxFR0FUSU9OOiBSZWRlbGVnYXRpb24gfTtcbn07XG4iXX0=
@@ -0,0 +1,4 @@
1
+ // progress-gap.config.ts (inside the library)
2
+ import { InjectionToken } from '@angular/core';
3
+ export const PROGRESS_GAP_MINUTES = new InjectionToken('PROGRESS_GAP_MINUTES', { factory: () => 1 }); // Default to 1 minute if not provided
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtZ2FwLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xpZW50LW1hdGNoLW92ZXJ2aWV3L3Byb2dyZXNzLXRpY2tlci9wcm9ncmVzcy1nYXAuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUFTLHNCQUFzQixFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwcm9ncmVzcy1nYXAuY29uZmlnLnRzICAoaW5zaWRlIHRoZSBsaWJyYXJ5KVxuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFBST0dSRVNTX0dBUF9NSU5VVEVTID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oJ1BST0dSRVNTX0dBUF9NSU5VVEVTJywgeyBmYWN0b3J5OiAoKSA9PiAxIH0pOyAvLyBEZWZhdWx0IHRvIDEgbWludXRlIGlmIG5vdCBwcm92aWRlZFxuIl19
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const TICK_PERIOD_SECONDS = new InjectionToken('TICK_PERIOD_SECONDS', { factory: () => 60 });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtdGlja2VyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xpZW50LW1hdGNoLW92ZXJ2aWV3L3Byb2dyZXNzLXRpY2tlci9wcm9ncmVzcy10aWNrZXIuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQ25ELHFCQUFxQixFQUNyQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBUSUNLX1BFUklPRF9TRUNPTkRTID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcj4oXG4gICdUSUNLX1BFUklPRF9TRUNPTkRTJyxcbiAgeyBmYWN0b3J5OiAoKSA9PiA2MCB9LCAvLyBEZWZhdWx0IHRvIDYwIHNlY29uZHMgaWYgbm90IHByb3ZpZGVkXG4pO1xuIl19