@sunbird-cb/toc 0.0.2 → 0.0.3-2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/esm2022/lib/_collection/_common/ai-tutor/ai-tutor.component.mjs +1169 -0
  2. package/esm2022/lib/_collection/_common/ai-tutor/socket.service.mjs +121 -0
  3. package/esm2022/lib/_collection/_common/card-competency/card-competency.component.mjs +58 -0
  4. package/esm2022/lib/_collection/_common/card-competency/card-competency.module.mjs +22 -0
  5. package/esm2022/lib/_collection/_common/card-content-v2/card-content-v2.model.mjs +23 -0
  6. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +108 -7
  7. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +5 -1
  8. package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +3 -3
  9. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +18 -8
  10. package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +88 -7
  11. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +393 -51
  12. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +16 -34
  13. package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +7 -2
  14. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +5 -2
  15. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +2 -8
  16. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +3 -3
  17. package/esm2022/lib/_services/widget-content.model.mjs +8 -1
  18. package/esm2022/lib/_services/widget-content.service.mjs +3 -3
  19. package/esm2022/lib/app-toc-lib.module.mjs +7 -3
  20. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +37 -8
  21. package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +3 -3
  22. package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +3 -3
  23. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +224 -67
  24. package/esm2022/lib/registration-toc-lib.config.mjs +14 -0
  25. package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +1 -1
  26. package/esm2022/lib/services/app-toc-v2.service.mjs +192 -54
  27. package/esm2022/lib/services/app-toc.service.mjs +381 -104
  28. package/esm2022/lib/services/certificate.service.mjs +54 -9
  29. package/esm2022/lib/services/root.service.mjs +106 -0
  30. package/esm2022/lib/services/viewer-data.service.mjs +1 -1
  31. package/esm2022/lib/services/viewer-util.service.mjs +150 -23
  32. package/esm2022/public-api.mjs +11 -1
  33. package/fesm2022/sunbird-cb-toc.mjs +9093 -6348
  34. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  35. package/index.d.ts +0 -1
  36. package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts +139 -0
  37. package/lib/_collection/_common/ai-tutor/socket.service.d.ts +19 -0
  38. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +0 -1
  39. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +0 -1
  40. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +0 -1
  41. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +0 -1
  42. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +0 -1
  43. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +0 -1
  44. package/lib/_collection/_common/card-competency/card-competency.component.d.ts +14 -0
  45. package/lib/_collection/_common/card-competency/card-competency.module.d.ts +8 -0
  46. package/lib/_collection/_common/card-content-v2/card-content-v2.model.d.ts +44 -0
  47. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +8 -1
  48. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +12 -12
  49. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +0 -1
  50. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +0 -1
  51. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +0 -1
  52. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +0 -1
  53. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +0 -1
  54. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +0 -1
  55. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +0 -1
  56. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +0 -1
  57. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +0 -1
  58. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +0 -1
  59. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +0 -1
  60. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +0 -1
  61. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +0 -1
  62. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +1 -2
  63. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +2 -1
  64. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +0 -1
  65. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +0 -1
  66. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +0 -1
  67. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +8 -1
  68. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +64 -5
  69. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +0 -1
  70. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +0 -1
  71. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +0 -1
  72. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +0 -1
  73. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +0 -1
  74. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +0 -1
  75. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +0 -1
  76. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +2 -2
  77. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +29 -29
  78. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +0 -1
  79. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +0 -1
  80. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +0 -1
  81. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +0 -1
  82. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +0 -1
  83. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +0 -1
  84. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +0 -1
  85. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +0 -1
  86. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +0 -1
  87. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +0 -1
  88. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +0 -1
  89. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +0 -1
  90. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +0 -1
  91. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +0 -1
  92. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +0 -2
  93. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +0 -1
  94. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +0 -1
  95. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +0 -1
  96. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +0 -1
  97. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +0 -1
  98. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +0 -1
  99. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +0 -1
  100. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +0 -1
  101. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +0 -1
  102. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +0 -1
  103. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +0 -1
  104. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +0 -1
  105. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +0 -1
  106. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +0 -1
  107. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +0 -1
  108. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +0 -1
  109. package/lib/_collection/_common/user-image/user-image.component.d.ts +0 -1
  110. package/lib/_collection/_common/user-image/user-image.module.d.ts +0 -1
  111. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +0 -1
  112. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +0 -1
  113. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +0 -1
  114. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +0 -1
  115. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +0 -1
  116. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +0 -1
  117. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +0 -1
  118. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +0 -1
  119. package/lib/_collection-api.d.ts +0 -1
  120. package/lib/_constants/widget-content.constants.d.ts +0 -1
  121. package/lib/_directives/tooltip.directive.d.ts +0 -1
  122. package/lib/_models/common.model.d.ts +0 -1
  123. package/lib/_models/error.model.d.ts +0 -1
  124. package/lib/_pipes/highlight.pipe.d.ts +0 -1
  125. package/lib/_services/rating.service.d.ts +0 -1
  126. package/lib/_services/samuhik-charcha.service.d.ts +0 -1
  127. package/lib/_services/viewer-route-util.d.ts +0 -1
  128. package/lib/_services/widget-content.model.d.ts +6 -1
  129. package/lib/_services/widget-content.service.d.ts +0 -1
  130. package/lib/_shared/translate-loader.factory.d.ts +0 -1
  131. package/lib/app-toc-lib.module.d.ts +2 -2
  132. package/lib/collection.config.d.ts +0 -1
  133. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +0 -1
  134. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +0 -1
  135. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +3 -1
  136. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +0 -1
  137. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +0 -1
  138. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +0 -1
  139. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +0 -1
  140. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +0 -1
  141. package/lib/components/app-toc-home/app-toc-home.component.d.ts +0 -1
  142. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +28 -4
  143. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +0 -1
  144. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +0 -1
  145. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +0 -1
  146. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +0 -1
  147. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +0 -1
  148. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +0 -1
  149. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +0 -1
  150. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +0 -1
  151. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +0 -1
  152. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +0 -1
  153. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +0 -1
  154. package/lib/components/public-survey-form/public-survey-form.component.d.ts +0 -1
  155. package/lib/components/survey-form-question/survey-form-question.component.d.ts +0 -1
  156. package/lib/components/survey-form-section/survey-form-section.component.d.ts +0 -1
  157. package/lib/models/app-toc-analytics.model.d.ts +0 -1
  158. package/lib/models/app-toc.model.d.ts +0 -1
  159. package/lib/models/auto-complete.model.d.ts +0 -1
  160. package/lib/models/card-content.model.d.ts +0 -1
  161. package/lib/models/content-strip-with-tabs.model.d.ts +0 -1
  162. package/lib/models/discussion-forum.model.d.ts +0 -1
  163. package/lib/models/goal.model.d.ts +0 -1
  164. package/lib/models/meta-tag.model.d.ts +0 -1
  165. package/lib/models/playlist.model.d.ts +0 -1
  166. package/lib/models/profile-revamp.model.d.ts +0 -1
  167. package/lib/models/rating.model.d.ts +0 -1
  168. package/lib/models/user-profile.model.d.ts +0 -1
  169. package/lib/registration-toc-lib.config.d.ts +4 -0
  170. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +0 -1
  171. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +0 -1
  172. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +0 -1
  173. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +0 -1
  174. package/lib/resolvers/app-toc-resolver.service.d.ts +0 -1
  175. package/lib/resolvers/config-resolver.service.d.ts +0 -1
  176. package/lib/resolvers/profile-resolver.service.d.ts +0 -1
  177. package/lib/resolvers/restricted-features-resolver.service.d.ts +0 -1
  178. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +0 -1
  179. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +0 -1
  180. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +0 -1
  181. package/lib/services/access-control.service.d.ts +0 -1
  182. package/lib/services/action.service.d.ts +0 -1
  183. package/lib/services/app-toc-v2.service.d.ts +3 -1
  184. package/lib/services/app-toc.service.d.ts +41 -13
  185. package/lib/services/certificate.service.d.ts +5 -7
  186. package/lib/services/discuss-utils.service.d.ts +0 -1
  187. package/lib/services/editor.service.d.ts +0 -1
  188. package/lib/services/load-check.service.d.ts +0 -1
  189. package/lib/services/loader.service.d.ts +0 -1
  190. package/lib/services/mobile-apps.service.d.ts +0 -1
  191. package/lib/services/netcore.service.d.ts +0 -1
  192. package/lib/services/nps-grid.service.d.ts +0 -1
  193. package/lib/services/otp.service.d.ts +0 -1
  194. package/lib/services/profile-v2.service.d.ts +0 -1
  195. package/lib/services/reset-ratings.service.d.ts +0 -1
  196. package/lib/services/resource-download-helper.service.d.ts +0 -1
  197. package/lib/services/root.service.d.ts +26 -0
  198. package/lib/services/timer.service.d.ts +0 -1
  199. package/lib/services/title-tag.service.d.ts +0 -1
  200. package/lib/services/user-profile.service.d.ts +0 -1
  201. package/lib/services/viewer-data.service.d.ts +9 -6
  202. package/lib/services/viewer-util.service.d.ts +14 -1
  203. package/lib/share-toc/share-toc/share-toc.component.d.ts +0 -1
  204. package/lib/share-toc/share-toc.module.d.ts +0 -1
  205. package/package.json +3 -5
  206. package/public-api.d.ts +9 -1
  207. package/sunbird-cb-toc-0.0.32.1.tgz +0 -0
  208. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +0 -1
  209. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +0 -1
  210. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +0 -1
  211. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +0 -1
  212. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +0 -1
  213. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +0 -1
  214. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +0 -1
  215. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +0 -1
  216. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +0 -1
  217. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +0 -1
  218. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +0 -1
  219. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +0 -1
  220. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +0 -1
  221. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +0 -1
  222. package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +0 -1
  223. package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +0 -1
  224. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +0 -1
  225. package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +0 -1
  226. package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +0 -1
  227. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +0 -1
  228. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +0 -1
  229. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +0 -1
  230. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +0 -1
  231. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +0 -1
  232. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +0 -1
  233. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +0 -1
  234. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +0 -1
  235. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +0 -1
  236. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +0 -1
  237. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +0 -1
  238. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +0 -1
  239. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +0 -1
  240. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +0 -1
  241. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +0 -1
  242. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +0 -1
  243. package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +0 -1
  244. package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +0 -1
  245. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +0 -1
  246. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +0 -1
  247. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +0 -1
  248. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +0 -1
  249. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +0 -1
  250. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +0 -1
  251. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +0 -1
  252. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +0 -1
  253. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +0 -1
  254. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +0 -1
  255. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +0 -1
  256. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +0 -1
  257. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +0 -1
  258. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +0 -1
  259. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +0 -1
  260. package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +0 -1
  261. package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +0 -1
  262. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +0 -1
  263. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +0 -1
  264. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +0 -1
  265. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +0 -1
  266. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +0 -1
  267. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +0 -1
  268. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +0 -1
  269. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +0 -1
  270. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +0 -1
  271. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +0 -1
  272. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +0 -1
  273. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +0 -1
  274. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +0 -1
  275. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +0 -1
  276. package/lib/_collection/_common/user-image/user-image.component.d.ts.map +0 -1
  277. package/lib/_collection/_common/user-image/user-image.module.d.ts.map +0 -1
  278. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +0 -1
  279. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +0 -1
  280. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +0 -1
  281. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +0 -1
  282. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +0 -1
  283. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +0 -1
  284. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +0 -1
  285. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +0 -1
  286. package/lib/_collection-api.d.ts.map +0 -1
  287. package/lib/_constants/widget-content.constants.d.ts.map +0 -1
  288. package/lib/_directives/tooltip.directive.d.ts.map +0 -1
  289. package/lib/_models/common.model.d.ts.map +0 -1
  290. package/lib/_models/error.model.d.ts.map +0 -1
  291. package/lib/_pipes/highlight.pipe.d.ts.map +0 -1
  292. package/lib/_services/rating.service.d.ts.map +0 -1
  293. package/lib/_services/samuhik-charcha.service.d.ts.map +0 -1
  294. package/lib/_services/viewer-route-util.d.ts.map +0 -1
  295. package/lib/_services/widget-content.model.d.ts.map +0 -1
  296. package/lib/_services/widget-content.service.d.ts.map +0 -1
  297. package/lib/_shared/translate-loader.factory.d.ts.map +0 -1
  298. package/lib/app-toc-lib.module.d.ts.map +0 -1
  299. package/lib/collection.config.d.ts.map +0 -1
  300. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +0 -1
  301. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +0 -1
  302. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +0 -1
  303. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +0 -1
  304. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +0 -1
  305. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +0 -1
  306. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +0 -1
  307. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +0 -1
  308. package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +0 -1
  309. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +0 -1
  310. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +0 -1
  311. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +0 -1
  312. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +0 -1
  313. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +0 -1
  314. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +0 -1
  315. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +0 -1
  316. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +0 -1
  317. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +0 -1
  318. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +0 -1
  319. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +0 -1
  320. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +0 -1
  321. package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +0 -1
  322. package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +0 -1
  323. package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +0 -1
  324. package/lib/models/app-toc-analytics.model.d.ts.map +0 -1
  325. package/lib/models/app-toc.model.d.ts.map +0 -1
  326. package/lib/models/auto-complete.model.d.ts.map +0 -1
  327. package/lib/models/card-content.model.d.ts.map +0 -1
  328. package/lib/models/content-strip-with-tabs.model.d.ts.map +0 -1
  329. package/lib/models/discussion-forum.model.d.ts.map +0 -1
  330. package/lib/models/goal.model.d.ts.map +0 -1
  331. package/lib/models/meta-tag.model.d.ts.map +0 -1
  332. package/lib/models/playlist.model.d.ts.map +0 -1
  333. package/lib/models/profile-revamp.model.d.ts.map +0 -1
  334. package/lib/models/rating.model.d.ts.map +0 -1
  335. package/lib/models/user-profile.model.d.ts.map +0 -1
  336. package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +0 -1
  337. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +0 -1
  338. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +0 -1
  339. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +0 -1
  340. package/lib/resolvers/app-toc-resolver.service.d.ts.map +0 -1
  341. package/lib/resolvers/config-resolver.service.d.ts.map +0 -1
  342. package/lib/resolvers/profile-resolver.service.d.ts.map +0 -1
  343. package/lib/resolvers/restricted-features-resolver.service.d.ts.map +0 -1
  344. package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +0 -1
  345. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +0 -1
  346. package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +0 -1
  347. package/lib/services/access-control.service.d.ts.map +0 -1
  348. package/lib/services/action.service.d.ts.map +0 -1
  349. package/lib/services/app-toc-v2.service.d.ts.map +0 -1
  350. package/lib/services/app-toc.service.d.ts.map +0 -1
  351. package/lib/services/certificate.service.d.ts.map +0 -1
  352. package/lib/services/discuss-utils.service.d.ts.map +0 -1
  353. package/lib/services/editor.service.d.ts.map +0 -1
  354. package/lib/services/load-check.service.d.ts.map +0 -1
  355. package/lib/services/loader.service.d.ts.map +0 -1
  356. package/lib/services/mobile-apps.service.d.ts.map +0 -1
  357. package/lib/services/netcore.service.d.ts.map +0 -1
  358. package/lib/services/nps-grid.service.d.ts.map +0 -1
  359. package/lib/services/otp.service.d.ts.map +0 -1
  360. package/lib/services/profile-v2.service.d.ts.map +0 -1
  361. package/lib/services/reset-ratings.service.d.ts.map +0 -1
  362. package/lib/services/resource-download-helper.service.d.ts.map +0 -1
  363. package/lib/services/timer.service.d.ts.map +0 -1
  364. package/lib/services/title-tag.service.d.ts.map +0 -1
  365. package/lib/services/user-profile.service.d.ts.map +0 -1
  366. package/lib/services/viewer-data.service.d.ts.map +0 -1
  367. package/lib/services/viewer-util.service.d.ts.map +0 -1
  368. package/lib/share-toc/share-toc/share-toc.component.d.ts.map +0 -1
  369. package/lib/share-toc/share-toc.module.d.ts.map +0 -1
  370. package/public-api.d.ts.map +0 -1
  371. package/sunbird-cb-toc.d.ts.map +0 -1
@@ -0,0 +1,121 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { take } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ const PROXY_CREATE_V8 = '/apis/proxies/v8';
7
+ const API_END_POINTS = {
8
+ GET_JWT_TOCKEN: `${PROXY_CREATE_V8}/fetchUserToken`
9
+ };
10
+ export class WebSocketService {
11
+ constructor(http) {
12
+ this.http = http;
13
+ this.messageSubject = new Subject();
14
+ }
15
+ // Establish a connection to the WebSocket
16
+ connect(url) {
17
+ this.socket = new WebSocket(url);
18
+ // console.log('this.socket', this.socket)
19
+ this.socket.onopen = () => {
20
+ try {
21
+ console.log('WebSocket connection established');
22
+ }
23
+ catch (error) {
24
+ console.log('error', error);
25
+ }
26
+ this.startClientPing();
27
+ };
28
+ this.socket.onmessage = (event) => {
29
+ //console.log('event', event)
30
+ try {
31
+ const data = JSON.parse(event.data);
32
+ // console.log('data', data)
33
+ if (data.type === 'connection' && data.clientId) {
34
+ this.clientId = data.clientId;
35
+ // clientIdDisplay.textContent = `Assigned Client ID: ${this.clientId}`;
36
+ // console.log('Server', `Connected. Assigned Client ID: ${this.clientId}`);
37
+ }
38
+ else if (data.type === 'answer') {
39
+ this.messageSubject.next(JSON.parse(event.data));
40
+ // console.log('Server', `Answer: ${data.answer}`);
41
+ // if (data.sources && data.sources.length > 0) {
42
+ // // console.log('Server', `Sources: ${data.sources.join(', ')}`);
43
+ // }
44
+ // if (data.retrievedChunks && data.retrievedChunks.length > 0) {
45
+ // data.retrievedChunks.forEach((chunk:any) => {
46
+ // if (chunk.uri && chunk.uri.length > 0) {
47
+ // console.log('Server', `Retrieved URI: ${chunk.uri.join(', ')}`);
48
+ // }
49
+ // if (chunk.content && chunk.content.length > 0) {
50
+ // console.log('Server', `Retrieved Content: ${chunk.content.join('...')}`);
51
+ // }
52
+ // });
53
+ // }
54
+ }
55
+ else if (data.type === 'error' && data.error) {
56
+ console.log('Server', `Error: ${data.error}`);
57
+ }
58
+ else {
59
+ //console.log('Server', `Received: ${event.data}`);
60
+ }
61
+ }
62
+ catch (error) {
63
+ // console.log('Server', `Received raw: ${event.data}`);
64
+ // console.error('Error processing message:', error);
65
+ }
66
+ //this.messageSubject.next(event.data);
67
+ };
68
+ this.socket.onerror = (error) => {
69
+ // console.log('error', error)
70
+ console.error('WebSocket error:', error);
71
+ };
72
+ this.socket.onclose = () => {
73
+ console.log('WebSocket connection closed');
74
+ };
75
+ }
76
+ // Send message to the WebSocket server
77
+ sendMessage(message) {
78
+ // console.log(message)
79
+ // console.log(this.socket)
80
+ if (this.socket && this.socket.readyState === WebSocket.OPEN) {
81
+ this.socket.send(JSON.stringify(message));
82
+ }
83
+ else {
84
+ console.error('WebSocket is not open');
85
+ }
86
+ }
87
+ // Observable for receiving messages from WebSocket
88
+ getMessages() {
89
+ return this.messageSubject.asObservable().pipe(take(1));
90
+ }
91
+ startClientPing() {
92
+ clearInterval(this.pingIntervalId);
93
+ this.pingIntervalId = setInterval(() => {
94
+ if (this.socket && this.socket.readyState === WebSocket.OPEN) {
95
+ // console.log('in')
96
+ this.socket.send(JSON.stringify({ type: 'ping' })); // Send a ping message
97
+ // console.log('Client sent ping');
98
+ }
99
+ }, 25000); // Send ping every 25 seconds (slightly less than server's 30s)
100
+ }
101
+ // Close the WebSocket connection
102
+ closeConnection() {
103
+ if (this.socket) {
104
+ this.socket.close();
105
+ clearInterval(this.pingIntervalId);
106
+ }
107
+ }
108
+ getJWTToken() {
109
+ // console.log('get token')
110
+ return this.http.get(`${API_END_POINTS.GET_JWT_TOCKEN}`);
111
+ }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebSocketService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
113
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebSocketService, providedIn: 'root' }); }
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebSocketService, decorators: [{
116
+ type: Injectable,
117
+ args: [{
118
+ providedIn: 'root',
119
+ }]
120
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX2NvbGxlY3Rpb24vX2NvbW1vbi9haS10dXRvci9zb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFHLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFdkMsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUE7QUFDMUMsTUFBTSxjQUFjLEdBQUc7SUFDckIsY0FBYyxFQUFFLEdBQUcsZUFBZSxpQkFBaUI7Q0FDcEQsQ0FBQTtBQUtELE1BQU0sT0FBTyxnQkFBZ0I7SUFLM0IsWUFDUyxJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBSmpCLG1CQUFjLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7SUFLdkQsQ0FBQztJQUVKLDBDQUEwQztJQUMxQyxPQUFPLENBQUMsR0FBVztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pDLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDeEIsSUFBSTtnQkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7YUFDakQ7WUFBQyxPQUFNLEtBQUssRUFBRTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTthQUM1QjtZQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxD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QW1DO2FBQ3RDO1FBQ0wsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsK0RBQStEO0lBQzlFLENBQUM7SUFFQyxpQ0FBaUM7SUFDakMsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsMkJBQTJCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sR0FBRyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQTtJQUMvRCxDQUFDOytHQTlHVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyAgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmNvbnN0IFBST1hZX0NSRUFURV9WOCA9ICcvYXBpcy9wcm94aWVzL3Y4J1xuY29uc3QgQVBJX0VORF9QT0lOVFMgPSB7XG4gIEdFVF9KV1RfVE9DS0VOOiBgJHtQUk9YWV9DUkVBVEVfVjh9L2ZldGNoVXNlclRva2VuYFxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0U2VydmljZSB7XG4gIHByaXZhdGUgc29ja2V0OiBXZWJTb2NrZXQgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbWVzc2FnZVN1YmplY3Q6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcbiAgcGluZ0ludGVydmFsSWQ6YW55XG4gIGNsaWVudElkOmFueVxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaHR0cDogSHR0cENsaWVudFxuICApIHt9XG5cbiAgLy8gRXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byB0aGUgV2ViU29ja2V0XG4gIGNvbm5lY3QodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsKTtcbiAgICAvLyBjb25zb2xlLmxvZygndGhpcy5zb2NrZXQnLCB0aGlzLnNvY2tldClcbiAgICB0aGlzLnNvY2tldC5vbm9wZW4gPSAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKTtcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yJywgZXJyb3IpXG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMuc3RhcnRDbGllbnRQaW5nKCk7XG4gICAgfTtcblxuICAgIHRoaXMuc29ja2V0Lm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xuICAgICAgICAvL2NvbnNvbGUubG9nKCdldmVudCcsIGV2ZW50KVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnZGF0YScsIGRhdGEpXG4gICAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gJ2Nvbm5lY3Rpb24nICYmIGRhdGEuY2xpZW50SWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGEuY2xpZW50SWQ7XG4gICAgICAgICAgICAgLy8gY2xpZW50SWREaXNwbGF5LnRleHRDb250ZW50ID0gYEFzc2lnbmVkIENsaWVudCBJRDogJHt0aGlzLmNsaWVudElkfWA7XG4gICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1NlcnZlcicsIGBDb25uZWN0ZWQuIEFzc2lnbmVkIENsaWVudCBJRDogJHt0aGlzLmNsaWVudElkfWApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS50eXBlID09PSAnYW5zd2VyJykge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU3ViamVjdC5uZXh0KEpTT04ucGFyc2UoZXZlbnQuZGF0YSkpO1xuICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdTZXJ2ZXInLCBgQW5zd2VyOiAke2RhdGEuYW5zd2VyfWApO1xuICAgICAgICAgICAgICAvLyBpZiAoZGF0YS5zb3VyY2VzICYmIGRhdGEuc291cmNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIC8vICAgIC8vIGNvbnNvbGUubG9nKCdTZXJ2ZXInLCBgU291cmNlczogJHtkYXRhLnNvdXJjZXMuam9pbignLCAnKX1gKTtcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAvLyBpZiAoZGF0YS5yZXRyaWV2ZWRDaHVua3MgJiYgZGF0YS5yZXRyaWV2ZWRDaHVua3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAvLyAgICAgZGF0YS5yZXRyaWV2ZWRDaHVua3MuZm9yRWFjaCgoY2h1bms6YW55KSA9PiB7XG4gICAgICAgICAgICAgIC8vICAgICAgICAgaWYgKGNodW5rLnVyaSAmJiBjaHVuay51cmkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2VydmVyJywgYFJldHJpZXZlZCBVUkk6ICR7Y2h1bmsudXJpLmpvaW4oJywgJyl9YCk7XG4gICAgICAgICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyAgICAgICAgIGlmIChjaHVuay5jb250ZW50ICYmIGNodW5rLmNvbnRlbnQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAvLyAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2VydmVyJywgYFJldHJpZXZlZCBDb250ZW50OiAke2NodW5rLmNvbnRlbnQuam9pbignLi4uJyl9YCk7XG4gICAgICAgICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEudHlwZSA9PT0gJ2Vycm9yJyAmJiBkYXRhLmVycm9yKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTZXJ2ZXInLCBgRXJyb3I6ICR7ZGF0YS5lcnJvcn1gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdTZXJ2ZXInLCBgUmVjZWl2ZWQ6ICR7ZXZlbnQuZGF0YX1gKTtcbiAgICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdTZXJ2ZXInLCBgUmVjZWl2ZWQgcmF3OiAke2V2ZW50LmRhdGF9YCk7XG4gICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgcHJvY2Vzc2luZyBtZXNzYWdlOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICAgIC8vdGhpcy5tZXNzYWdlU3ViamVjdC5uZXh0KGV2ZW50LmRhdGEpO1xuICAgIH07XG5cbiAgICB0aGlzLnNvY2tldC5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnZXJyb3InLCBlcnJvcilcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBlcnJvcjonLCBlcnJvcik7XG4gICAgfTtcblxuICAgIHRoaXMuc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnV2ViU29ja2V0IGNvbm5lY3Rpb24gY2xvc2VkJyk7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFNlbmQgbWVzc2FnZSB0byB0aGUgV2ViU29ja2V0IHNlcnZlclxuICBzZW5kTWVzc2FnZShtZXNzYWdlOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmxvZyhtZXNzYWdlKVxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuc29ja2V0KVxuICAgIFxuICAgIGlmICh0aGlzLnNvY2tldCAmJiB0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYlNvY2tldCBpcyBub3Qgb3BlbicpO1xuICAgIH1cbiAgfVxuXG4gIC8vIE9ic2VydmFibGUgZm9yIHJlY2VpdmluZyBtZXNzYWdlcyBmcm9tIFdlYlNvY2tldFxuICBnZXRNZXNzYWdlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZSgxKSk7XG4gIH1cblxuICBzdGFydENsaWVudFBpbmcoKSB7XG5cbiAgICBjbGVhckludGVydmFsKHRoaXMucGluZ0ludGVydmFsSWQpO1xuICAgIHRoaXMucGluZ0ludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNvY2tldCAmJiB0aGlzLnNvY2tldC5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdpbicpXG4gICAgICAgICAgdGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7IHR5cGU6ICdwaW5nJyB9KSk7IC8vIFNlbmQgYSBwaW5nIG1lc3NhZ2VcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdDbGllbnQgc2VudCBwaW5nJyk7XG4gICAgICAgIH1cbiAgICB9LCAyNTAwMCk7IC8vIFNlbmQgcGluZyBldmVyeSAyNSBzZWNvbmRzIChzbGlnaHRseSBsZXNzIHRoYW4gc2VydmVyJ3MgMzBzKVxufVxuXG4gIC8vIENsb3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvblxuICBjbG9zZUNvbm5lY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ja2V0KSB7XG4gICAgICB0aGlzLnNvY2tldC5jbG9zZSgpO1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBpbmdJbnRlcnZhbElkKTtcbiAgICB9XG4gIH1cblxuICBnZXRKV1RUb2tlbigpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnZ2V0IHRva2VuJylcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke0FQSV9FTkRfUE9JTlRTLkdFVF9KV1RfVE9DS0VOfWApXG4gIH1cblxuXG59XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { trigger, state, style, animate, transition } from '@angular/animations';
3
+ import { WidgetBaseComponent } from '@sunbird-cb/resolver-v2';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class CardCompetencyComponent extends WidgetBaseComponent {
7
+ constructor() {
8
+ super();
9
+ this.competencyArea = '';
10
+ this.isExpanded = false;
11
+ }
12
+ ngOnInit() {
13
+ }
14
+ handleToggleSize(_viewMore) {
15
+ this.isExpanded = !this.isExpanded;
16
+ }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardCompetencyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardCompetencyComponent, selector: "ws-widget-card-competency", inputs: { widgetData: "widgetData", competencyArea: "competencyArea" }, usesInheritance: true, ngImport: i0, template: "<div [@expandCollapse]=\"isExpanded ? 'expanded' : 'collapsed'\" [ngClass]=\"{'expanded': isExpanded}\" >\n <div class=\"competency-passbook-theme\" [ngClass]=\"{'behavioural': (widgetData?.competencyArea?.toLowerCase() === 'behavioural' || widgetData?.competencyArea?.toLowerCase() === 'behavioral'), 'functional': widgetData?.competencyArea?.toLowerCase() === 'functional', 'domain': widgetData?.competencyArea?.toLowerCase() === 'domain', 'shadow-md': isExpanded}\">\n <div class=\"detail\">\n <div class=\"flex flex-col gap-2\">\n <div class=\"text-base font-bold ellipsis\" title=\"{{ widgetData?.content?.key }}\">{{ widgetData?.content?.key }}</div>\n <div class=\"flex flex-wrap gap-4 chip-container\">\n <ng-container *ngFor=\"let subTheme of widgetData?.content?.value; let i = index\">\n <div class=\"chip rounded-full text-xs\" [ngClass]=\"{'hidden': (i >= 1 && !isExpanded), 'chip-ellipsis': !isExpanded && widgetData?.content?.value?.length > 1 }\" title=\"{{ subTheme }}\">\n {{ subTheme }}\n </div>\n </ng-container>\n <div class=\"flex items-center ws-mat-default-text underline cursor-pointer text-xs\" *ngIf=\"widgetData?.content?.value?.length > 1 && !isExpanded\" (click)=\"handleToggleSize()\">\n View more\n </div>\n <div class=\"flex items-center ws-mat-default-text underline cursor-pointer text-xs\" *ngIf=\"isExpanded\" (click)=\"handleToggleSize()\">\n View less\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [".behavioural{background-color:#f8b861}.functional{background-color:#e24577}.domain{background-color:#7b47a4}.competency-passbook-theme{width:100%;max-width:344px;min-width:320px;height:92px;border-radius:8px 8px 12px 12px}.ellipsis{white-space:nowrap;width:280px;overflow:hidden;text-overflow:ellipsis}.detail{width:100%;max-width:344px;background-color:#fff;border-radius:8px;position:relative;top:4px;height:inherit;border:1px solid rgba(0,0,0,.08)}.detail>div{padding:12px 16px 16px}.detail .chip-container .chip{border:1px solid #1b4ca1;color:#1b4ca1;line-height:14px;padding:4px 8px;white-space:normal}.chip-ellipsis{white-space:nowrap!important;max-width:100px;overflow:hidden;text-overflow:ellipsis}.expanded{padding-bottom:12px}.expanded .competency-passbook-theme{max-width:372px;width:100%;min-height:92px;height:auto}.expanded .competency-passbook-theme .detail{width:100%;max-width:inherit;min-height:inherit;height:inherit}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
19
+ trigger('expandCollapse', [
20
+ state('collapsed', style({
21
+ height: '104px',
22
+ width: '320px',
23
+ })),
24
+ state('expanded', style({
25
+ minHeight: '120px',
26
+ width: '372px',
27
+ height: 'auto',
28
+ })),
29
+ transition('collapsed <=> expanded', [
30
+ animate('0.5s'),
31
+ ]),
32
+ ]),
33
+ ] }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardCompetencyComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'ws-widget-card-competency', animations: [
38
+ trigger('expandCollapse', [
39
+ state('collapsed', style({
40
+ height: '104px',
41
+ width: '320px',
42
+ })),
43
+ state('expanded', style({
44
+ minHeight: '120px',
45
+ width: '372px',
46
+ height: 'auto',
47
+ })),
48
+ transition('collapsed <=> expanded', [
49
+ animate('0.5s'),
50
+ ]),
51
+ ]),
52
+ ], template: "<div [@expandCollapse]=\"isExpanded ? 'expanded' : 'collapsed'\" [ngClass]=\"{'expanded': isExpanded}\" >\n <div class=\"competency-passbook-theme\" [ngClass]=\"{'behavioural': (widgetData?.competencyArea?.toLowerCase() === 'behavioural' || widgetData?.competencyArea?.toLowerCase() === 'behavioral'), 'functional': widgetData?.competencyArea?.toLowerCase() === 'functional', 'domain': widgetData?.competencyArea?.toLowerCase() === 'domain', 'shadow-md': isExpanded}\">\n <div class=\"detail\">\n <div class=\"flex flex-col gap-2\">\n <div class=\"text-base font-bold ellipsis\" title=\"{{ widgetData?.content?.key }}\">{{ widgetData?.content?.key }}</div>\n <div class=\"flex flex-wrap gap-4 chip-container\">\n <ng-container *ngFor=\"let subTheme of widgetData?.content?.value; let i = index\">\n <div class=\"chip rounded-full text-xs\" [ngClass]=\"{'hidden': (i >= 1 && !isExpanded), 'chip-ellipsis': !isExpanded && widgetData?.content?.value?.length > 1 }\" title=\"{{ subTheme }}\">\n {{ subTheme }}\n </div>\n </ng-container>\n <div class=\"flex items-center ws-mat-default-text underline cursor-pointer text-xs\" *ngIf=\"widgetData?.content?.value?.length > 1 && !isExpanded\" (click)=\"handleToggleSize()\">\n View more\n </div>\n <div class=\"flex items-center ws-mat-default-text underline cursor-pointer text-xs\" *ngIf=\"isExpanded\" (click)=\"handleToggleSize()\">\n View less\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [".behavioural{background-color:#f8b861}.functional{background-color:#e24577}.domain{background-color:#7b47a4}.competency-passbook-theme{width:100%;max-width:344px;min-width:320px;height:92px;border-radius:8px 8px 12px 12px}.ellipsis{white-space:nowrap;width:280px;overflow:hidden;text-overflow:ellipsis}.detail{width:100%;max-width:344px;background-color:#fff;border-radius:8px;position:relative;top:4px;height:inherit;border:1px solid rgba(0,0,0,.08)}.detail>div{padding:12px 16px 16px}.detail .chip-container .chip{border:1px solid #1b4ca1;color:#1b4ca1;line-height:14px;padding:4px 8px;white-space:normal}.chip-ellipsis{white-space:nowrap!important;max-width:100px;overflow:hidden;text-overflow:ellipsis}.expanded{padding-bottom:12px}.expanded .competency-passbook-theme{max-width:372px;width:100%;min-height:92px;height:auto}.expanded .competency-passbook-theme .detail{width:100%;max-width:inherit;min-height:inherit;height:inherit}\n"] }]
53
+ }], ctorParameters: function () { return []; }, propDecorators: { widgetData: [{
54
+ type: Input
55
+ }], competencyArea: [{
56
+ type: Input
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1jb21wZXRlbmN5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NhcmQtY29tcGV0ZW5jeS9jYXJkLWNvbXBldGVuY3kuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY2FyZC1jb21wZXRlbmN5L2NhcmQtY29tcGV0ZW5jeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRWhGLE9BQU8sRUFBb0IsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTs7O0FBd0IvRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsbUJBQW1CO0lBTTlEO1FBQ0UsS0FBSyxFQUFFLENBQUE7UUFKQSxtQkFBYyxHQUFHLEVBQUUsQ0FBQTtRQUM1QixlQUFVLEdBQUcsS0FBSyxDQUFBO0lBSWxCLENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQWM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUE7SUFDcEMsQ0FBQzsrR0FmVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixnS0MzQnBDLHF1REFxQk0scXhDRFpRO1lBQ1YsT0FBTyxDQUFDLGdCQUFnQixFQUFFO2dCQUN4QixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztvQkFDdkIsTUFBTSxFQUFFLE9BQU87b0JBQ2YsS0FBSyxFQUFFLE9BQU87aUJBQ2YsQ0FBQyxDQUFDO2dCQUNILEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO29CQUN0QixTQUFTLEVBQUUsT0FBTztvQkFDbEIsS0FBSyxFQUFFLE9BQU87b0JBQ2QsTUFBTSxFQUFFLE1BQU07aUJBQ2YsQ0FBQyxDQUFDO2dCQUNILFVBQVUsQ0FBQyx3QkFBd0IsRUFBRTtvQkFDbkMsT0FBTyxDQUFDLE1BQU0sQ0FBQztpQkFDaEIsQ0FBQzthQUNILENBQUM7U0FDSDs7NEZBR1UsdUJBQXVCO2tCQXRCbkMsU0FBUzsrQkFDRSwyQkFBMkIsY0FHekI7d0JBQ1YsT0FBTyxDQUFDLGdCQUFnQixFQUFFOzRCQUN4QixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztnQ0FDdkIsTUFBTSxFQUFFLE9BQU87Z0NBQ2YsS0FBSyxFQUFFLE9BQU87NkJBQ2YsQ0FBQyxDQUFDOzRCQUNILEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO2dDQUN0QixTQUFTLEVBQUUsT0FBTztnQ0FDbEIsS0FBSyxFQUFFLE9BQU87Z0NBQ2QsTUFBTSxFQUFFLE1BQU07NkJBQ2YsQ0FBQyxDQUFDOzRCQUNILFVBQVUsQ0FBQyx3QkFBd0IsRUFBRTtnQ0FDbkMsT0FBTyxDQUFDLE1BQU0sQ0FBQzs2QkFDaEIsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIOzBFQUtRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIGFuaW1hdGUsIHRyYW5zaXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJ1xuaW1wb3J0IHsgTnNDYXJkQ29udGVudCB9IGZyb20gJy4vLi4vY2FyZC1jb250ZW50LXYyL2NhcmQtY29udGVudC12Mi5tb2RlbCdcbmltcG9ydCB7IE5zV2lkZ2V0UmVzb2x2ZXIsIFdpZGdldEJhc2VDb21wb25lbnQgfSBmcm9tICdAc3VuYmlyZC1jYi9yZXNvbHZlci12MidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3Mtd2lkZ2V0LWNhcmQtY29tcGV0ZW5jeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJkLWNvbXBldGVuY3kuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJkLWNvbXBldGVuY3kuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2V4cGFuZENvbGxhcHNlJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHtcbiAgICAgICAgaGVpZ2h0OiAnMTA0cHgnLFxuICAgICAgICB3aWR0aDogJzMyMHB4JyxcbiAgICAgIH0pKSxcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHtcbiAgICAgICAgbWluSGVpZ2h0OiAnMTIwcHgnLFxuICAgICAgICB3aWR0aDogJzM3MnB4JyxcbiAgICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdjb2xsYXBzZWQgPD0+IGV4cGFuZGVkJywgW1xuICAgICAgICBhbmltYXRlKCcwLjVzJyksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBDYXJkQ29tcGV0ZW5jeUNvbXBvbmVudCBleHRlbmRzIFdpZGdldEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE5zV2lkZ2V0UmVzb2x2ZXIuSVdpZGdldERhdGE8TnNDYXJkQ29udGVudC5JQ2FyZD4ge1xuXG4gIEBJbnB1dCgpIHdpZGdldERhdGEhOiBOc0NhcmRDb250ZW50LklDb21wZXRlbmN5XG4gIEBJbnB1dCgpIGNvbXBldGVuY3lBcmVhID0gJydcbiAgaXNFeHBhbmRlZCA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cblxuICBoYW5kbGVUb2dnbGVTaXplKF92aWV3TW9yZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pc0V4cGFuZGVkID0gIXRoaXMuaXNFeHBhbmRlZFxuICB9XG59XG4iLCI8ZGl2IFtAZXhwYW5kQ29sbGFwc2VdPVwiaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiIFtuZ0NsYXNzXT1cInsnZXhwYW5kZWQnOiBpc0V4cGFuZGVkfVwiID5cbiAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1wYXNzYm9vay10aGVtZVwiIFtuZ0NsYXNzXT1cInsnYmVoYXZpb3VyYWwnOiAod2lkZ2V0RGF0YT8uY29tcGV0ZW5jeUFyZWE/LnRvTG93ZXJDYXNlKCkgPT09ICdiZWhhdmlvdXJhbCcgfHwgd2lkZ2V0RGF0YT8uY29tcGV0ZW5jeUFyZWE/LnRvTG93ZXJDYXNlKCkgPT09ICdiZWhhdmlvcmFsJyksICdmdW5jdGlvbmFsJzogd2lkZ2V0RGF0YT8uY29tcGV0ZW5jeUFyZWE/LnRvTG93ZXJDYXNlKCkgPT09ICdmdW5jdGlvbmFsJywgJ2RvbWFpbic6IHdpZGdldERhdGE/LmNvbXBldGVuY3lBcmVhPy50b0xvd2VyQ2FzZSgpID09PSAnZG9tYWluJywgJ3NoYWRvdy1tZCc6IGlzRXhwYW5kZWR9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGQgZWxsaXBzaXNcIiB0aXRsZT1cInt7IHdpZGdldERhdGE/LmNvbnRlbnQ/LmtleSB9fVwiPnt7IHdpZGdldERhdGE/LmNvbnRlbnQ/LmtleSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtNCBjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJUaGVtZSBvZiB3aWRnZXREYXRhPy5jb250ZW50Py52YWx1ZTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAgcm91bmRlZC1mdWxsIHRleHQteHNcIiBbbmdDbGFzc109XCJ7J2hpZGRlbic6IChpID49IDEgJiYgIWlzRXhwYW5kZWQpLCAnY2hpcC1lbGxpcHNpcyc6ICFpc0V4cGFuZGVkICYmIHdpZGdldERhdGE/LmNvbnRlbnQ/LnZhbHVlPy5sZW5ndGggPiAxIH1cIiB0aXRsZT1cInt7IHN1YlRoZW1lIH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3ViVGhlbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHdzLW1hdC1kZWZhdWx0LXRleHQgdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyIHRleHQteHNcIiAqbmdJZj1cIndpZGdldERhdGE/LmNvbnRlbnQ/LnZhbHVlPy5sZW5ndGggPiAxICYmICFpc0V4cGFuZGVkXCIgKGNsaWNrKT1cImhhbmRsZVRvZ2dsZVNpemUoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBtb3JlXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgd3MtbWF0LWRlZmF1bHQtdGV4dCB1bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1wiICpuZ0lmPVwiaXNFeHBhbmRlZFwiIChjbGljayk9XCJoYW5kbGVUb2dnbGVTaXplKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgbGVzc1xuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { CardCompetencyComponent } from './card-competency.component';
4
+ import * as i0 from "@angular/core";
5
+ export class CardCompetencyModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardCompetencyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: CardCompetencyModule, declarations: [CardCompetencyComponent], imports: [CommonModule], exports: [CardCompetencyComponent] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardCompetencyModule, imports: [CommonModule] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardCompetencyModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [CardCompetencyComponent],
14
+ imports: [
15
+ CommonModule,
16
+ ],
17
+ exports: [
18
+ CardCompetencyComponent,
19
+ ]
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1jb21wZXRlbmN5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NhcmQtY29tcGV0ZW5jeS9jYXJkLWNvbXBldGVuY3kubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBOztBQVlyRSxNQUFNLE9BQU8sb0JBQW9COytHQUFwQixvQkFBb0I7Z0hBQXBCLG9CQUFvQixpQkFUZCx1QkFBdUIsYUFFbEMsWUFBWSxhQUdaLHVCQUF1QjtnSEFJbEIsb0JBQW9CLFlBUHpCLFlBQVk7OzRGQU9QLG9CQUFvQjtrQkFWaEMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkMsT0FBTyxFQUFFO3dCQUNMLFlBQVk7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLHVCQUF1QjtxQkFDMUI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5cbmltcG9ydCB7IENhcmRDb21wZXRlbmN5Q29tcG9uZW50IH0gZnJvbSAnLi9jYXJkLWNvbXBldGVuY3kuY29tcG9uZW50J1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0NhcmRDb21wZXRlbmN5Q29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgQ2FyZENvbXBldGVuY3lDb21wb25lbnQsXG4gICAgXVxufSlcblxuZXhwb3J0IGNsYXNzIENhcmRDb21wZXRlbmN5TW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,23 @@
1
+ export var NsCardContent;
2
+ (function (NsCardContent) {
3
+ let EContentStatus;
4
+ (function (EContentStatus) {
5
+ EContentStatus["LIVE"] = "Live";
6
+ EContentStatus["EXPIRED"] = "Expired";
7
+ EContentStatus["DELETED"] = "Deleted";
8
+ EContentStatus["MARK_FOR_DELETION"] = "MarkedForDeletion";
9
+ })(EContentStatus = NsCardContent.EContentStatus || (NsCardContent.EContentStatus = {}));
10
+ let ACBPConst;
11
+ (function (ACBPConst) {
12
+ ACBPConst["UPCOMING"] = "upcoming";
13
+ ACBPConst["ALL"] = "All";
14
+ ACBPConst["OVERDUE"] = "overdue";
15
+ ACBPConst["SUCCESS"] = "success";
16
+ })(ACBPConst = NsCardContent.ACBPConst || (NsCardContent.ACBPConst = {}));
17
+ let IGOTConst;
18
+ (function (IGOTConst) {
19
+ IGOTConst["COMPETENCIES"] = "competencies_v6";
20
+ IGOTConst["RETIRED"] = "Retired";
21
+ })(IGOTConst = NsCardContent.IGOTConst || (NsCardContent.IGOTConst = {}));
22
+ })(NsCardContent || (NsCardContent = {}));
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1jb250ZW50LXYyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY2FyZC1jb250ZW50LXYyL2NhcmQtY29udGVudC12Mi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLEtBQVcsYUFBYSxDQXNEN0I7QUF0REQsV0FBaUIsYUFBYTtJQW1DNUIsSUFBWSxjQUtYO0lBTEQsV0FBWSxjQUFjO1FBQ3hCLCtCQUFhLENBQUE7UUFDYixxQ0FBbUIsQ0FBQTtRQUNuQixxQ0FBbUIsQ0FBQTtRQUNuQix5REFBdUMsQ0FBQTtJQUN6QyxDQUFDLEVBTFcsY0FBYyxHQUFkLDRCQUFjLEtBQWQsNEJBQWMsUUFLekI7SUFFRCxJQUFZLFNBS1g7SUFMRCxXQUFZLFNBQVM7UUFDbkIsa0NBQXFCLENBQUE7UUFDckIsd0JBQVcsQ0FBQTtRQUNYLGdDQUFtQixDQUFBO1FBQ25CLGdDQUFtQixDQUFBO0lBQ3JCLENBQUMsRUFMVyxTQUFTLEdBQVQsdUJBQVMsS0FBVCx1QkFBUyxRQUtwQjtJQUVELElBQVksU0FHWDtJQUhELFdBQVksU0FBUztRQUNuQiw2Q0FBZ0MsQ0FBQTtRQUNoQyxnQ0FBbUIsQ0FBQTtJQUNyQixDQUFDLEVBSFcsU0FBUyxHQUFULHVCQUFTLEtBQVQsdUJBQVMsUUFHcEI7QUFFSCxDQUFDLEVBdERnQixhQUFhLEtBQWIsYUFBYSxRQXNEN0IiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gXCJAc3VuYmlyZC1jYi91dGlscy12MlwiO1xuXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBOc0NhcmRDb250ZW50IHtcbiAgZXhwb3J0IGludGVyZmFjZSBJQ2FyZCB7XG4gICAgY29udGVudDogTnNDb250ZW50LklDb250ZW50XG4gICAgY2FyZFN1YlR5cGU6IFRDYXJkU3ViVHlwZVxuICAgIGNvbnRleHQ6IHsgcGFnZVNlY3Rpb246IHN0cmluZzsgcG9zaXRpb24/OiBudW1iZXIgfVxuICAgIGludHJhbmV0TW9kZT86ICdncmV5T3V0JyB8ICdoaWRlJ1xuICAgIGRlbGV0ZWRNb2RlPzogJ2dyZXlPdXQnIHwgJ2hpZGUnXG4gICAgbGlrZXM/OiBudW1iZXJcbiAgICBjb250ZW50VGFncz86IElDb250ZW50VGFnc1xuICAgIHN0YXRlRGF0YTogYW55XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIElDb250ZW50VGFncyB7XG4gICAgZGF5c1NwYW4/OiBudW1iZXJcbiAgICBleGNsdWRlQ29udGVudFR5cGU/OiBOc0NvbnRlbnQuRUNvbnRlbnRUeXBlc1tdXG4gICAgZXhjbHVkZU1pbWVUeXBlPzogc3RyaW5nW11cbiAgICB0YWc6IHN0cmluZ1xuICAgIGNyaXRlcmlhRmllbGQ/OiBzdHJpbmdcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUNvbXBldGVuY3kgZXh0ZW5kcyBJQ2FyZCB7XG4gICAgY29tcGV0ZW5jeUFyZWE6ICcnXG4gICAgY29tcGV0ZW5jeU9iamVjdDoge31cbiAgfVxuXG4gIGV4cG9ydCB0eXBlIFRDYXJkU3ViVHlwZSA9XG4gICAgfCAnc3RhbmRhcmQnXG4gICAgfCAnbWluaW1hbCdcbiAgICB8ICdzcGFjZS1zYXZpbmcnXG4gICAgfCAnY2FyZC11c2VyLWRldGFpbHMnXG4gICAgfCAnYmFzaWMtaW5mbydcbiAgICB8ICdiYXNpYy1kZXRhaWxzJ1xuICAgIHwgJ2NhcmQtZGVzY3JpcHRpb24tYmFjaydcbiAgICB8ICduZXR3b3JrLWNhcmQnXG5cbiAgZXhwb3J0IGVudW0gRUNvbnRlbnRTdGF0dXMge1xuICAgIExJVkUgPSAnTGl2ZScsXG4gICAgRVhQSVJFRCA9ICdFeHBpcmVkJyxcbiAgICBERUxFVEVEID0gJ0RlbGV0ZWQnLFxuICAgIE1BUktfRk9SX0RFTEVUSU9OID0gJ01hcmtlZEZvckRlbGV0aW9uJyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIEFDQlBDb25zdCB7XG4gICAgVVBDT01JTkcgPSAndXBjb21pbmcnLFxuICAgIEFMTCA9ICdBbGwnLFxuICAgIE9WRVJEVUUgPSAnb3ZlcmR1ZScsXG4gICAgU1VDQ0VTUyA9ICdzdWNjZXNzJyxcbiAgfVxuXG4gIGV4cG9ydCBlbnVtIElHT1RDb25zdCB7XG4gICAgQ09NUEVURU5DSUVTID0gJ2NvbXBldGVuY2llc192NicsXG4gICAgUkVUSVJFRCA9ICdSZXRpcmVkJyxcbiAgfVxuXG59XG4iXX0=
@@ -7,9 +7,10 @@ import * as i1 from "@sunbird-cb/utils-v2";
7
7
  import * as i2 from "@angular/material/legacy-dialog";
8
8
  import * as i3 from "@angular/material/legacy-button";
9
9
  import * as i4 from "@angular/material/legacy-card";
10
- import * as i5 from "@angular/material/icon";
11
- import * as i6 from "@angular/material/legacy-menu";
12
- import * as i7 from "@ngx-translate/core";
10
+ import * as i5 from "@angular/material/divider";
11
+ import * as i6 from "@angular/material/icon";
12
+ import * as i7 from "@angular/material/legacy-menu";
13
+ import * as i8 from "@ngx-translate/core";
13
14
  export class CertificateDialogComponent {
14
15
  constructor(events, dialogRef, data, environment) {
15
16
  this.events = events;
@@ -20,8 +21,12 @@ export class CertificateDialogComponent {
20
21
  }
21
22
  ngOnInit() {
22
23
  this.url = this.data.cet;
24
+ // Determine the certificate URL based on whether it's an achievement/milestone certificate
25
+ const certDownloadUrl = this.data?.isAchievement
26
+ ? `${this.environment.contentHost}/apis/public/v8/milestone/cert/download/${this.data.certId}`
27
+ : `${this.environment.contentHost}/apis/public/v8/cert/download/${this.data.certId}`;
23
28
  // tslint:disable-next-line:max-line-length
24
- this.navUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${this.environment.contentHost}/apis/public/v8/cert/download/${this.data.certId}`;
29
+ this.navUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(certDownloadUrl)}`;
25
30
  }
26
31
  downloadCert() {
27
32
  this.raiseIntreactTelemetry('svg');
@@ -80,10 +85,106 @@ export class CertificateDialogComponent {
80
85
  }
81
86
  };
82
87
  }
88
+ getCertificateUrl() {
89
+ return this.data?.isAchievement
90
+ ? `${this.environment.contentHost}/apis/public/v8/milestone/cert/download/${this.data.certId}`
91
+ : `${this.environment.contentHost}/apis/public/v8/cert/download/${this.data.certId}`;
92
+ }
83
93
  shareCert() {
84
94
  this.raiseShareIntreactTelemetry('share');
85
95
  return window.open(this.navUrl, '_blank');
86
96
  }
97
+ shareOnLinkedIn() {
98
+ this.raiseShareIntreactTelemetry('share', 'linkedin');
99
+ const certDownloadUrl = this.getCertificateUrl();
100
+ // LinkedIn's current sharing endpoint
101
+ // Note: LinkedIn requires the URL to be publicly accessible
102
+ const linkedInUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(certDownloadUrl)}`;
103
+ // Open LinkedIn share dialog
104
+ const popup = window.open(linkedInUrl, '_blank', 'width=600,height=600,toolbar=0,menubar=0,location=0,status=1,scrollbars=1,resizable=1');
105
+ // Check if popup was blocked
106
+ if (!popup || popup.closed || typeof popup.closed === 'undefined') {
107
+ // Fallback: try opening in same tab
108
+ window.open(linkedInUrl, '_blank');
109
+ }
110
+ }
111
+ shareOnFacebook() {
112
+ this.raiseShareIntreactTelemetry('share', 'facebook');
113
+ const certDownloadUrl = this.getCertificateUrl();
114
+ const facebookUrl = `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(certDownloadUrl)}`;
115
+ window.open(facebookUrl, '_blank', 'width=600,height=600');
116
+ }
117
+ shareOnTwitter() {
118
+ this.raiseShareIntreactTelemetry('share', 'twitter');
119
+ const certDownloadUrl = this.getCertificateUrl();
120
+ const text = this.data?.isAchievement
121
+ ? 'I have achieved a milestone! Check out my certificate.'
122
+ : 'I have completed a course! Check out my certificate.';
123
+ const twitterUrl = `https://twitter.com/intent/tweet?url=${encodeURIComponent(certDownloadUrl)}&text=${encodeURIComponent(text)}`;
124
+ window.open(twitterUrl, '_blank', 'width=600,height=600');
125
+ }
126
+ shareOnWhatsApp() {
127
+ this.raiseShareIntreactTelemetry('share', 'whatsapp');
128
+ const certDownloadUrl = this.getCertificateUrl();
129
+ const text = this.data?.isAchievement
130
+ ? 'I have achieved a milestone! Check out my certificate: '
131
+ : `I have completed a course! Check out my certificate: `;
132
+ const whatsappUrl = `https://api.whatsapp.com/send?text=${encodeURIComponent(text + certDownloadUrl)}`;
133
+ window.open(whatsappUrl, '_blank');
134
+ }
135
+ shareViaEmail() {
136
+ this.raiseShareIntreactTelemetry('share', 'email');
137
+ const certDownloadUrl = this.getCertificateUrl();
138
+ const subject = this.data?.isAchievement
139
+ ? 'Milestone Achievement Certificate'
140
+ : 'Course Completion Certificate';
141
+ const body = this.data?.isAchievement
142
+ ? `I have achieved a milestone! You can view my certificate here: ${certDownloadUrl}`
143
+ : `I have completed a course! You can view my certificate here: ${certDownloadUrl}`;
144
+ const mailtoUrl = `mailto:?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
145
+ window.location.href = mailtoUrl;
146
+ }
147
+ copyCertificateLink() {
148
+ this.raiseShareIntreactTelemetry('share', 'copy');
149
+ const certDownloadUrl = this.getCertificateUrl();
150
+ if (navigator.clipboard && navigator.clipboard.writeText) {
151
+ navigator.clipboard.writeText(certDownloadUrl).then(() => {
152
+ console.log('Certificate link copied to clipboard');
153
+ // You can add a snackbar notification here if needed
154
+ }).catch(err => {
155
+ console.error('Failed to copy certificate link:', err);
156
+ this.fallbackCopyTextToClipboard(certDownloadUrl);
157
+ });
158
+ }
159
+ else {
160
+ this.fallbackCopyTextToClipboard(certDownloadUrl);
161
+ }
162
+ }
163
+ fallbackCopyTextToClipboard(text) {
164
+ const textArea = document.createElement('textarea');
165
+ textArea.value = text;
166
+ textArea.style.position = 'fixed';
167
+ textArea.style.top = '0';
168
+ textArea.style.left = '0';
169
+ textArea.style.width = '2em';
170
+ textArea.style.height = '2em';
171
+ textArea.style.padding = '0';
172
+ textArea.style.border = 'none';
173
+ textArea.style.outline = 'none';
174
+ textArea.style.boxShadow = 'none';
175
+ textArea.style.background = 'transparent';
176
+ document.body.appendChild(textArea);
177
+ textArea.focus();
178
+ textArea.select();
179
+ try {
180
+ document.execCommand('copy');
181
+ console.log('Certificate link copied to clipboard (fallback)');
182
+ }
183
+ catch (err) {
184
+ console.error('Fallback: Failed to copy', err);
185
+ }
186
+ document.body.removeChild(textArea);
187
+ }
87
188
  raiseShareIntreactTelemetry(type, action) {
88
189
  this.events.raiseInteractTelemetry({
89
190
  type: WsEvents.EnumInteractTypes.CLICK,
@@ -105,11 +206,11 @@ export class CertificateDialogComponent {
105
206
  });
106
207
  }
107
208
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CertificateDialogComponent, deps: [{ token: i1.EventService }, { token: i2.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Component }); }
108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CertificateDialogComponent, selector: "ws-widget-certificate-dialog", host: { classAttribute: "certificate-inner-dialog-panel" }, ngImport: i0, template: "<mat-card class=\"no-shadow certificate-img-box\">\n <button mat-icon-button class=\"close-button\" [mat-dialog-close]=\"true\">\n <mat-icon class=\"close-icon\" color=\"warn\">close</mat-icon>\n </button>\n <!-- <mat-card-title>\n\n </mat-card-title> -->\n <mat-card-content class=\"certificate-img-content\">\n <img #certificate [src]=\"url| pipeSafeSanitizer: 'url'\" alt=\"Certificate\" role=\"image\" class=\"certificate-banner-image\">\n </mat-card-content>\n <mat-card-actions class=\"flex flex-row-reverse gap-4\">\n <!-- <ws-widget-svg-to-pdf></ws-widget-svg-to-pdf> -->\n <a mat-button (click)=\"shareCert()\" class=\"ws-mat-accent-border-active mat-accent btn-custom\">\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">share</mat-icon>\n Share\n </a>\n <a mat-button [matMenuTriggerFor]=\"menu\" class=\"ws-mat-accent-border-active mat-accent btn-custom\" (click)=\"raiseIntreactTelemetry()\">\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">cloud_download</mat-icon>\n {{'certificatedialog.download' | translate}}\n </a>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)='downloadCertPdf()'>\n <mat-icon>picture_as_pdf</mat-icon>\n <span>{{'certificatedialog.pdf' | translate}}</span>\n </button>\n <button mat-menu-item (click)='downloadCertPng()'>\n <mat-icon>photo</mat-icon>\n <span>{{'certificatedialog.png' | translate}}</span>\n </button>\n <button mat-menu-item (click)='downloadCert()'>\n <mat-icon>photo_size_select_actual</mat-icon>\n <span>{{'certificatedialog.svg' | translate}}</span>\n </button>\n </mat-menu>\n </mat-card-actions>\n</mat-card>\n", styles: [".no-shadow{box-shadow:none!important}.certificate-banner-image{height:30rem;display:flex;width:auto;margin:0 auto}@media only screen and (max-width: 1279px){.certificate-banner-image{width:100%;height:auto;flex:1}}.certificate-img-box{max-height:35rem;overflow-y:auto;overflow-x:hidden}.certificate-img-content{overflow:hidden}a.download_btn{background-color:#f0f0f0;border-radius:4px;float:right;height:40px;padding:0 16px;text-align:center;line-height:40px;text-decoration:none;color:#0009;font-size:14px;font-weight:600;margin-top:16px;margin-right:0}.download_icon{font-size:16px;vertical-align:text-top}::ng-deep .close-button{float:right;top:-16px;right:-12px;height:30px;width:30px;line-height:30px;background:#000!important;color:#fff!important}::ng-deep .close-icon{transition:1s ease-in-out;color:#fff!important}::ng-deep .close-icon:hover{transform:rotate(180deg)}::ng-deep .icon-outside .close-button{float:right;position:absolute;top:19px;right:18px}::ng-deep .icon-outside .mat-dialog-container{overflow:unset}::ng-deep .cdk-overlay-pane{max-height:96%!important;overflow-y:auto!important}.certificate-banner-image svg{width:500;height:500}@media only screen and (max-width: 1279px){.certificate-banner-image svg{width:auto;height:auto;flex:1}}.btn-custom{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.close-button{position:absolute!important;top:19px!important;right:18px!important}@media screen and (max-width: 1200px){.btn-custom{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 8px;border-radius:4px;overflow:visible}.gap-4{grid-gap:0rem;gap:0rem}}\n"], dependencies: [{ kind: "component", type: i3.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatLegacyAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i4.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i4.MatLegacyCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i6.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatLegacyMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i1.PipeSafeSanitizerPipe, name: "pipeSafeSanitizer" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
209
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CertificateDialogComponent, selector: "ws-widget-certificate-dialog", host: { classAttribute: "certificate-inner-dialog-panel" }, ngImport: i0, template: "<mat-card class=\"no-shadow certificate-img-box\">\n <button mat-icon-button class=\"close-button\" [mat-dialog-close]=\"true\">\n <mat-icon class=\"close-icon\" color=\"warn\">close</mat-icon>\n </button>\n <!-- <mat-card-title>\n\n </mat-card-title> -->\n <mat-card-content class=\"certificate-img-content\">\n <img #certificate [src]=\"url| pipeSafeSanitizer: 'url'\" alt=\"Certificate\" role=\"image\" class=\"certificate-banner-image\">\n </mat-card-content>\n <mat-card-actions class=\"flex flex-row-reverse gap-4\">\n <!-- <ws-widget-svg-to-pdf></ws-widget-svg-to-pdf> -->\n <a mat-button [matMenuTriggerFor]=\"shareMenu\" class=\"ws-mat-accent-border-active mat-accent btn-custom\">\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">share</mat-icon>\n Share\n </a>\n <mat-menu #shareMenu=\"matMenu\">\n <button mat-menu-item (click)='shareOnLinkedIn()'>\n <mat-icon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z\"/>\n </svg>\n </mat-icon>\n <span>LinkedIn</span>\n </button>\n <button mat-menu-item (click)='shareOnFacebook()'>\n <mat-icon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M12 2.04C6.5 2.04 2 6.53 2 12.06C2 17.06 5.66 21.21 10.44 21.96V14.96H7.9V12.06H10.44V9.85C10.44 7.34 11.93 5.96 14.22 5.96C15.31 5.96 16.45 6.15 16.45 6.15V8.62H15.19C13.95 8.62 13.56 9.39 13.56 10.18V12.06H16.34L15.89 14.96H13.56V21.96A10 10 0 0 0 22 12.06C22 6.53 17.5 2.04 12 2.04Z\"/>\n </svg>\n </mat-icon>\n <span>Facebook</span>\n </button>\n <button mat-menu-item (click)='shareOnTwitter()'>\n <mat-icon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 3,4.79C2.63,5.42 2.42,6.16 2.42,6.94C2.42,8.43 3.17,9.75 4.33,10.5C3.62,10.5 2.96,10.3 2.38,10C2.38,10 2.38,10 2.38,10.03C2.38,12.11 3.86,13.85 5.82,14.24C5.46,14.34 5.08,14.39 4.69,14.39C4.42,14.39 4.15,14.36 3.89,14.31C4.43,16 6,17.26 7.89,17.29C6.43,18.45 4.58,19.13 2.56,19.13C2.22,19.13 1.88,19.11 1.54,19.07C3.44,20.29 5.70,21 8.12,21C16,21 20.33,14.46 20.33,8.79C20.33,8.6 20.33,8.42 20.32,8.23C21.16,7.63 21.88,6.87 22.46,6Z\"/>\n </svg>\n </mat-icon>\n <span>Twitter</span>\n </button>\n <button mat-menu-item (click)='shareOnWhatsApp()'>\n <mat-icon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M12.04 2C6.58 2 2.13 6.45 2.13 11.91C2.13 13.66 2.59 15.36 3.45 16.86L2.05 22L7.3 20.62C8.75 21.41 10.38 21.83 12.04 21.83C17.5 21.83 21.95 17.38 21.95 11.92C21.95 9.27 20.92 6.78 19.05 4.91C17.18 3.03 14.69 2 12.04 2M12.05 3.67C14.25 3.67 16.31 4.53 17.87 6.09C19.42 7.65 20.28 9.72 20.28 11.92C20.28 16.46 16.58 20.15 12.04 20.15C10.56 20.15 9.11 19.76 7.85 19L7.55 18.83L4.43 19.65L5.26 16.61L5.06 16.29C4.24 15 3.8 13.47 3.8 11.91C3.81 7.37 7.5 3.67 12.05 3.67M8.53 7.33C8.37 7.33 8.1 7.39 7.87 7.64C7.65 7.89 7 8.5 7 9.71C7 10.93 7.89 12.1 8 12.27C8.14 12.44 9.76 14.94 12.25 16C12.84 16.27 13.3 16.42 13.66 16.53C14.25 16.72 14.79 16.69 15.22 16.63C15.7 16.56 16.68 16.03 16.89 15.45C17.1 14.87 17.1 14.38 17.04 14.27C16.97 14.17 16.81 14.11 16.56 14C16.31 13.86 15.09 13.26 14.87 13.18C14.64 13.1 14.5 13.06 14.31 13.3C14.15 13.55 13.67 14.11 13.53 14.27C13.38 14.44 13.24 14.46 13 14.34C12.74 14.21 11.94 13.95 11 13.11C10.26 12.45 9.77 11.64 9.62 11.39C9.5 11.15 9.61 11 9.73 10.89C9.84 10.78 10 10.6 10.1 10.45C10.23 10.31 10.27 10.2 10.35 10.04C10.43 9.87 10.39 9.73 10.33 9.61C10.27 9.5 9.77 8.26 9.56 7.77C9.36 7.29 9.16 7.35 9 7.34C8.86 7.34 8.7 7.33 8.53 7.33Z\"/>\n </svg>\n </mat-icon>\n <span>WhatsApp</span>\n </button>\n <button mat-menu-item (click)='shareViaEmail()'>\n <mat-icon>email</mat-icon>\n <span>Email</span>\n </button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)='copyCertificateLink()'>\n <mat-icon>content_copy</mat-icon>\n <span>Copy Link</span>\n </button>\n </mat-menu>\n <a mat-button [matMenuTriggerFor]=\"menu\" class=\"ws-mat-accent-border-active mat-accent btn-custom\" (click)=\"raiseIntreactTelemetry()\">\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">cloud_download</mat-icon>\n {{'certificatedialog.download' | translate}}\n </a>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)='downloadCertPdf()'>\n <mat-icon>picture_as_pdf</mat-icon>\n <span>{{'certificatedialog.pdf' | translate}}</span>\n </button>\n <button mat-menu-item (click)='downloadCertPng()'>\n <mat-icon>photo</mat-icon>\n <span>{{'certificatedialog.png' | translate}}</span>\n </button>\n <button mat-menu-item (click)='downloadCert()'>\n <mat-icon>photo_size_select_actual</mat-icon>\n <span>{{'certificatedialog.svg' | translate}}</span>\n </button>\n </mat-menu>\n </mat-card-actions>\n</mat-card>\n", styles: [".no-shadow{box-shadow:none!important}.certificate-banner-image{height:30rem;display:flex;width:auto;margin:0 auto}@media only screen and (max-width: 1279px){.certificate-banner-image{width:100%;height:auto;flex:1}}.certificate-img-box{max-height:35rem;overflow-y:auto;overflow-x:hidden}.certificate-img-content{overflow:hidden}a.download_btn{background-color:#f0f0f0;border-radius:4px;float:right;height:40px;padding:0 16px;text-align:center;line-height:40px;text-decoration:none;color:#0009;font-size:14px;font-weight:600;margin-top:16px;margin-right:0}.download_icon{font-size:16px;vertical-align:text-top}::ng-deep .close-button{float:right;top:-16px;right:-12px;height:30px;width:30px;line-height:30px;background:#000!important;color:#fff!important}::ng-deep .close-icon{transition:1s ease-in-out;color:#fff!important}::ng-deep .close-icon:hover{transform:rotate(180deg)}::ng-deep .icon-outside .close-button{float:right;position:absolute;top:19px;right:18px}::ng-deep .icon-outside .mat-dialog-container{overflow:unset}::ng-deep .cdk-overlay-pane{max-height:96%!important;overflow-y:auto!important}.certificate-banner-image svg{width:500;height:500}@media only screen and (max-width: 1279px){.certificate-banner-image svg{width:auto;height:auto;flex:1}}.btn-custom{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.close-button{position:absolute!important;top:19px!important;right:18px!important}@media screen and (max-width: 1200px){.btn-custom{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 8px;border-radius:4px;overflow:visible}.gap-4{grid-gap:0rem;gap:0rem}}\n"], dependencies: [{ kind: "component", type: i3.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3.MatLegacyAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i4.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i4.MatLegacyCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i7.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatLegacyMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i1.PipeSafeSanitizerPipe, name: "pipeSafeSanitizer" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
109
210
  }
110
211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CertificateDialogComponent, decorators: [{
111
212
  type: Component,
112
- args: [{ selector: 'ws-widget-certificate-dialog', host: { class: 'certificate-inner-dialog-panel' }, template: "<mat-card class=\"no-shadow certificate-img-box\">\n <button mat-icon-button class=\"close-button\" [mat-dialog-close]=\"true\">\n <mat-icon class=\"close-icon\" color=\"warn\">close</mat-icon>\n </button>\n <!-- <mat-card-title>\n\n </mat-card-title> -->\n <mat-card-content class=\"certificate-img-content\">\n <img #certificate [src]=\"url| pipeSafeSanitizer: 'url'\" alt=\"Certificate\" role=\"image\" class=\"certificate-banner-image\">\n </mat-card-content>\n <mat-card-actions class=\"flex flex-row-reverse gap-4\">\n <!-- <ws-widget-svg-to-pdf></ws-widget-svg-to-pdf> -->\n <a mat-button (click)=\"shareCert()\" class=\"ws-mat-accent-border-active mat-accent btn-custom\">\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">share</mat-icon>\n Share\n </a>\n <a mat-button [matMenuTriggerFor]=\"menu\" class=\"ws-mat-accent-border-active mat-accent btn-custom\" (click)=\"raiseIntreactTelemetry()\">\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">cloud_download</mat-icon>\n {{'certificatedialog.download' | translate}}\n </a>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)='downloadCertPdf()'>\n <mat-icon>picture_as_pdf</mat-icon>\n <span>{{'certificatedialog.pdf' | translate}}</span>\n </button>\n <button mat-menu-item (click)='downloadCertPng()'>\n <mat-icon>photo</mat-icon>\n <span>{{'certificatedialog.png' | translate}}</span>\n </button>\n <button mat-menu-item (click)='downloadCert()'>\n <mat-icon>photo_size_select_actual</mat-icon>\n <span>{{'certificatedialog.svg' | translate}}</span>\n </button>\n </mat-menu>\n </mat-card-actions>\n</mat-card>\n", styles: [".no-shadow{box-shadow:none!important}.certificate-banner-image{height:30rem;display:flex;width:auto;margin:0 auto}@media only screen and (max-width: 1279px){.certificate-banner-image{width:100%;height:auto;flex:1}}.certificate-img-box{max-height:35rem;overflow-y:auto;overflow-x:hidden}.certificate-img-content{overflow:hidden}a.download_btn{background-color:#f0f0f0;border-radius:4px;float:right;height:40px;padding:0 16px;text-align:center;line-height:40px;text-decoration:none;color:#0009;font-size:14px;font-weight:600;margin-top:16px;margin-right:0}.download_icon{font-size:16px;vertical-align:text-top}::ng-deep .close-button{float:right;top:-16px;right:-12px;height:30px;width:30px;line-height:30px;background:#000!important;color:#fff!important}::ng-deep .close-icon{transition:1s ease-in-out;color:#fff!important}::ng-deep .close-icon:hover{transform:rotate(180deg)}::ng-deep .icon-outside .close-button{float:right;position:absolute;top:19px;right:18px}::ng-deep .icon-outside .mat-dialog-container{overflow:unset}::ng-deep .cdk-overlay-pane{max-height:96%!important;overflow-y:auto!important}.certificate-banner-image svg{width:500;height:500}@media only screen and (max-width: 1279px){.certificate-banner-image svg{width:auto;height:auto;flex:1}}.btn-custom{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.close-button{position:absolute!important;top:19px!important;right:18px!important}@media screen and (max-width: 1200px){.btn-custom{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 8px;border-radius:4px;overflow:visible}.gap-4{grid-gap:0rem;gap:0rem}}\n"] }]
213
+ args: [{ selector: 'ws-widget-certificate-dialog', host: { class: 'certificate-inner-dialog-panel' }, template: "<mat-card class=\"no-shadow certificate-img-box\">\n <button mat-icon-button class=\"close-button\" [mat-dialog-close]=\"true\">\n <mat-icon class=\"close-icon\" color=\"warn\">close</mat-icon>\n </button>\n <!-- <mat-card-title>\n\n </mat-card-title> -->\n <mat-card-content class=\"certificate-img-content\">\n <img #certificate [src]=\"url| pipeSafeSanitizer: 'url'\" alt=\"Certificate\" role=\"image\" class=\"certificate-banner-image\">\n </mat-card-content>\n <mat-card-actions class=\"flex flex-row-reverse gap-4\">\n <!-- <ws-widget-svg-to-pdf></ws-widget-svg-to-pdf> -->\n <a mat-button [matMenuTriggerFor]=\"shareMenu\" class=\"ws-mat-accent-border-active mat-accent btn-custom\">\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">share</mat-icon>\n Share\n </a>\n <mat-menu #shareMenu=\"matMenu\">\n <button mat-menu-item (click)='shareOnLinkedIn()'>\n <mat-icon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z\"/>\n </svg>\n </mat-icon>\n <span>LinkedIn</span>\n </button>\n <button mat-menu-item (click)='shareOnFacebook()'>\n <mat-icon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M12 2.04C6.5 2.04 2 6.53 2 12.06C2 17.06 5.66 21.21 10.44 21.96V14.96H7.9V12.06H10.44V9.85C10.44 7.34 11.93 5.96 14.22 5.96C15.31 5.96 16.45 6.15 16.45 6.15V8.62H15.19C13.95 8.62 13.56 9.39 13.56 10.18V12.06H16.34L15.89 14.96H13.56V21.96A10 10 0 0 0 22 12.06C22 6.53 17.5 2.04 12 2.04Z\"/>\n </svg>\n </mat-icon>\n <span>Facebook</span>\n </button>\n <button mat-menu-item (click)='shareOnTwitter()'>\n <mat-icon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 3,4.79C2.63,5.42 2.42,6.16 2.42,6.94C2.42,8.43 3.17,9.75 4.33,10.5C3.62,10.5 2.96,10.3 2.38,10C2.38,10 2.38,10 2.38,10.03C2.38,12.11 3.86,13.85 5.82,14.24C5.46,14.34 5.08,14.39 4.69,14.39C4.42,14.39 4.15,14.36 3.89,14.31C4.43,16 6,17.26 7.89,17.29C6.43,18.45 4.58,19.13 2.56,19.13C2.22,19.13 1.88,19.11 1.54,19.07C3.44,20.29 5.70,21 8.12,21C16,21 20.33,14.46 20.33,8.79C20.33,8.6 20.33,8.42 20.32,8.23C21.16,7.63 21.88,6.87 22.46,6Z\"/>\n </svg>\n </mat-icon>\n <span>Twitter</span>\n </button>\n <button mat-menu-item (click)='shareOnWhatsApp()'>\n <mat-icon>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path fill=\"currentColor\" d=\"M12.04 2C6.58 2 2.13 6.45 2.13 11.91C2.13 13.66 2.59 15.36 3.45 16.86L2.05 22L7.3 20.62C8.75 21.41 10.38 21.83 12.04 21.83C17.5 21.83 21.95 17.38 21.95 11.92C21.95 9.27 20.92 6.78 19.05 4.91C17.18 3.03 14.69 2 12.04 2M12.05 3.67C14.25 3.67 16.31 4.53 17.87 6.09C19.42 7.65 20.28 9.72 20.28 11.92C20.28 16.46 16.58 20.15 12.04 20.15C10.56 20.15 9.11 19.76 7.85 19L7.55 18.83L4.43 19.65L5.26 16.61L5.06 16.29C4.24 15 3.8 13.47 3.8 11.91C3.81 7.37 7.5 3.67 12.05 3.67M8.53 7.33C8.37 7.33 8.1 7.39 7.87 7.64C7.65 7.89 7 8.5 7 9.71C7 10.93 7.89 12.1 8 12.27C8.14 12.44 9.76 14.94 12.25 16C12.84 16.27 13.3 16.42 13.66 16.53C14.25 16.72 14.79 16.69 15.22 16.63C15.7 16.56 16.68 16.03 16.89 15.45C17.1 14.87 17.1 14.38 17.04 14.27C16.97 14.17 16.81 14.11 16.56 14C16.31 13.86 15.09 13.26 14.87 13.18C14.64 13.1 14.5 13.06 14.31 13.3C14.15 13.55 13.67 14.11 13.53 14.27C13.38 14.44 13.24 14.46 13 14.34C12.74 14.21 11.94 13.95 11 13.11C10.26 12.45 9.77 11.64 9.62 11.39C9.5 11.15 9.61 11 9.73 10.89C9.84 10.78 10 10.6 10.1 10.45C10.23 10.31 10.27 10.2 10.35 10.04C10.43 9.87 10.39 9.73 10.33 9.61C10.27 9.5 9.77 8.26 9.56 7.77C9.36 7.29 9.16 7.35 9 7.34C8.86 7.34 8.7 7.33 8.53 7.33Z\"/>\n </svg>\n </mat-icon>\n <span>WhatsApp</span>\n </button>\n <button mat-menu-item (click)='shareViaEmail()'>\n <mat-icon>email</mat-icon>\n <span>Email</span>\n </button>\n <mat-divider></mat-divider>\n <button mat-menu-item (click)='copyCertificateLink()'>\n <mat-icon>content_copy</mat-icon>\n <span>Copy Link</span>\n </button>\n </mat-menu>\n <a mat-button [matMenuTriggerFor]=\"menu\" class=\"ws-mat-accent-border-active mat-accent btn-custom\" (click)=\"raiseIntreactTelemetry()\">\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">cloud_download</mat-icon>\n {{'certificatedialog.download' | translate}}\n </a>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)='downloadCertPdf()'>\n <mat-icon>picture_as_pdf</mat-icon>\n <span>{{'certificatedialog.pdf' | translate}}</span>\n </button>\n <button mat-menu-item (click)='downloadCertPng()'>\n <mat-icon>photo</mat-icon>\n <span>{{'certificatedialog.png' | translate}}</span>\n </button>\n <button mat-menu-item (click)='downloadCert()'>\n <mat-icon>photo_size_select_actual</mat-icon>\n <span>{{'certificatedialog.svg' | translate}}</span>\n </button>\n </mat-menu>\n </mat-card-actions>\n</mat-card>\n", styles: [".no-shadow{box-shadow:none!important}.certificate-banner-image{height:30rem;display:flex;width:auto;margin:0 auto}@media only screen and (max-width: 1279px){.certificate-banner-image{width:100%;height:auto;flex:1}}.certificate-img-box{max-height:35rem;overflow-y:auto;overflow-x:hidden}.certificate-img-content{overflow:hidden}a.download_btn{background-color:#f0f0f0;border-radius:4px;float:right;height:40px;padding:0 16px;text-align:center;line-height:40px;text-decoration:none;color:#0009;font-size:14px;font-weight:600;margin-top:16px;margin-right:0}.download_icon{font-size:16px;vertical-align:text-top}::ng-deep .close-button{float:right;top:-16px;right:-12px;height:30px;width:30px;line-height:30px;background:#000!important;color:#fff!important}::ng-deep .close-icon{transition:1s ease-in-out;color:#fff!important}::ng-deep .close-icon:hover{transform:rotate(180deg)}::ng-deep .icon-outside .close-button{float:right;position:absolute;top:19px;right:18px}::ng-deep .icon-outside .mat-dialog-container{overflow:unset}::ng-deep .cdk-overlay-pane{max-height:96%!important;overflow-y:auto!important}.certificate-banner-image svg{width:500;height:500}@media only screen and (max-width: 1279px){.certificate-banner-image svg{width:auto;height:auto;flex:1}}.btn-custom{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.close-button{position:absolute!important;top:19px!important;right:18px!important}@media screen and (max-width: 1200px){.btn-custom{box-sizing:border-box;position:relative;-webkit-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 8px;border-radius:4px;overflow:visible}.gap-4{grid-gap:0rem;gap:0rem}}\n"] }]
113
214
  }], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.MatLegacyDialogRef }, { type: undefined, decorators: [{
114
215
  type: Inject,
115
216
  args: [MAT_DIALOG_DATA]
@@ -117,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
117
218
  type: Inject,
118
219
  args: ['environment']
119
220
  }] }]; } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NlcnRpZmljYXRlLWRpYWxvZy9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY2VydGlmaWNhdGUtZGlhbG9nL2NlcnRpZmljYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUN6RCxPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQy9ILE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQTs7Ozs7Ozs7O0FBVTdCLE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFDVSxNQUFvQixFQUNyQixTQUFtRCxFQUMxQixJQUFTLEVBQ1YsV0FBZ0I7UUFIdkMsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUMxQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ1YsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFMakQsV0FBTSxHQUFHLEVBQUUsQ0FBQTtJQVFYLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQTtRQUN4QiwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyx1REFBdUQsSUFBSSxDQUFDLFdB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QUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFO1lBQzFELE9BQU8sRUFBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUMvQixFQUNEO1lBQ0UsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNwQixJQUFJLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFdBQVc7U0FDaEQsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQWU7UUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDaEM7WUFDRSxJQUFJLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7WUFDdEMsRUFBRSxFQUFFLHNCQUFzQjtZQUMxQixPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDOUIsRUFDRDtZQUNFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDcEIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXO1NBQ2hELENBQ0YsQ0FBQTtJQUNILENBQUM7K0dBOUdVLDBCQUEwQixnRkFNM0IsZUFBZSxhQUNmLGFBQWE7bUdBUFosMEJBQTBCLGdJQ2J2Qyw0NURBb0NBOzs0RkR2QmEsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNFLDhCQUE4QixRQUlqQyxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRTs7MEJBUy9DLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nUmVmIGFzIE1hdERpYWxvZ1JlZiwgTUFUX0xFR0FDWV9ESUFMT0dfREFUQSBhcyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJ1xuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlLCBXc0V2ZW50cyB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsganNQREYgfSBmcm9tICdqc3BkZidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3Mtd2lkZ2V0LWNlcnRpZmljYXRlLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICBob3N0OiB7IGNsYXNzOiAnY2VydGlmaWNhdGUtaW5uZXItZGlhbG9nLXBhbmVsJyB9LFxuICAgLyogdHNsaW50OmVuYWJsZSAqL1xufSlcbmV4cG9ydCBjbGFzcyBDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHVybCE6IHN0cmluZ1xuICBuYXZVcmwgPSAnJ1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGV2ZW50czogRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnlcbiAgKSB7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXJsID0gdGhpcy5kYXRhLmNldFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICB0aGlzLm5hdlVybCA9IGBodHRwczovL3d3dy5saW5rZWRpbi5jb20vc2hhcmluZy9zaGFyZS1vZmZzaXRlLz91cmw9JHt0aGlzLmVudmlyb25tZW50LmNvbnRlbnRIb3N0fS9hcGlzL3B1YmxpYy92OC9jZXJ0L2Rvd25sb2FkLyR7dGhpcy5kYXRhLmNlcnRJZH1gXG4gIH1cblxuICBkb3dubG9hZENlcnQoKSB7XG4gICAgdGhpcy5yYWlzZUludHJlYWN0VGVsZW1ldHJ5KCdzdmcnKVxuICAgIGNvbnN0IGE6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgIGEuaHJlZiA9IHRoaXMuZGF0YS5jZXRcbiAgICBhLmRvd25sb2FkID0gJ0NlcnRpZmljYXRlJ1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSlcbiAgICBhLnN0eWxlID0gJ2Rpc3BsYXk6IG5vbmUnXG4gICAgYS5jbGljaygpXG4gICAgYS5yZW1vdmUoKVxuICB9XG5cbiAgZG93bmxvYWRDZXJ0UG5nKCkge1xuICAgIHRoaXMucmFpc2VJbnRyZWFjdFRlbGVtZXRyeSgncG5nJylcbiAgICBjb25zdCB1cmlEYXRhID0gdGhpcy5kYXRhLmNldFxuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpXG4gICAgaW1nLnNyYyA9IHVyaURhdGFcbiAgICBpbWcud2lkdGggPSAxODIwXG4gICAgaW1nLmhlaWdodCA9IDEwMDBcbiAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICBbY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0XSA9IFtpbWcud2lkdGgsIGltZy5oZWlnaHRdXG4gICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxuICAgICAgaWYgKGN0eCkge1xuICAgICAgICAvLyBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gdHJ1ZVxuICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgaW1nLndpZHRoLCBpbWcuaGVpZ2h0KVxuICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICAgIGNvbnN0IHF1YWxpdHkgPSAxLjAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC9pbWFnZVNtb290aGluZ1F1YWxpdHlcbiAgICAgICAgYS5ocmVmID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJywgcXVhbGl0eSlcbiAgICAgICAgYS5kb3dubG9hZCA9ICdDZXJ0aWZpY2F0ZSdcbiAgICAgICAgYS5hcHBlbmQoY2FudmFzKVxuICAgICAgICBhLmNsaWNrKClcbiAgICAgICAgYS5yZW1vdmUoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBhc3luYyBkb3dubG9hZENlcnRQZGYoKSB7XG4gICAgdGhpcy5yYWlzZUludHJlYWN0VGVsZW1ldHJ5KCdwZGYnKVxuICAgIGNvbnN0IHVyaURhdGEgPSB0aGlzLmRhdGEuY2V0XG4gICAgY29uc3QgaW1nID0gbmV3IEltYWdlKClcbiAgICBpbWcuc3JjID0gdXJpRGF0YVxuICAgIGltZy53aWR0aCA9IDE4MjBcbiAgICBpbWcuaGVpZ2h0ID0gMTAwMFxuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIFtjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHRdID0gW2ltZy53aWR0aCwgaW1nLmhlaWdodF1cbiAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXG4gICAgICBpZiAoY3R4KSB7XG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBpbWcud2lkdGgsIGltZy5oZWlnaHQpXG4gICAgICAgIGNvbnN0IHF1YWxpdHkgPSAxLjAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC9pbWFnZVNtb290aGluZ1F1YWxpdHlcbiAgICAgICAgY29uc3QgZGF0YUltZyA9IGNhbnZhcy50b0RhdGFVUkwoJ2FwcGxpY2F0aW9uL3BkZicsIHF1YWxpdHkpXG4gICAgICAgIGNvbnN0IHBkZiA9IG5ldyBqc1BERignbGFuZHNjYXBlJywgJ3B4JywgJ2E0JylcblxuICAgICAgICAvLyBhZGQgdGhlIGltYWdlIHRvIHRoZSBQREZcbiAgICAgICAgcGRmLmFkZEltYWdlKGRhdGFJbWcsIDEwLCAyMCwgNjAwLCAzNTApXG5cbiAgICAgICAgLy8gZG93bmxvYWQgdGhlIFBERlxuICAgICAgICBwZGYuc2F2ZSgnQ2VydGlmaWNhdGUucGRmJylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzaGFyZUNlcnQoKSB7XG4gICAgdGhpcy5yYWlzZVNoYXJlSW50cmVhY3RUZWxlbWV0cnkoJ3NoYXJlJylcbiAgICByZXR1cm4gd2luZG93Lm9wZW4odGhpcy5uYXZVcmwsICdfYmxhbmsnKVxuICB9XG5cbiAgcmFpc2VTaGFyZUludHJlYWN0VGVsZW1ldHJ5KHR5cGU/OiBzdHJpbmcsIGFjdGlvbj86IHN0cmluZykge1xuICAgIHRoaXMuZXZlbnRzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFR5cGVzLkNMSUNLLFxuICAgICAgICBpZDogYCR7dHlwZX0tJHtXc0V2ZW50cy5FbnVtSW50ZXJhY3RTdWJUeXBlcy5DRVJUSUZJQ0FURX1gLFxuICAgICAgICBzdWJUeXBlOiAgYWN0aW9uID8gYWN0aW9uIDogJycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogdGhpcy5kYXRhLmNlcnRJZCwgICAvLyBpZCBvZiB0aGUgY2VydGlmaWNhdGVcbiAgICAgICAgdHlwZTogV3NFdmVudHMuRW51bUludGVyYWN0U3ViVHlwZXMuQ0VSVElGSUNBVEUsXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcmFpc2VJbnRyZWFjdFRlbGVtZXRyeShhY3Rpb24/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmV2ZW50cy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxuICAgICAge1xuICAgICAgICB0eXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RUeXBlcy5DTElDSyxcbiAgICAgICAgaWQ6ICdkb3dubG9hZC1jZXJ0aWZpY2F0ZScsXG4gICAgICAgIHN1YlR5cGU6IGFjdGlvbiA/IGFjdGlvbiA6ICcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRoaXMuZGF0YS5jZXJ0SWQsICAgLy8gaWQgb2YgdGhlIGNlcnRpZmljYXRlXG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFN1YlR5cGVzLkNFUlRJRklDQVRFLFxuICAgICAgfVxuICAgIClcbiAgfVxuXG59XG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJuby1zaGFkb3cgY2VydGlmaWNhdGUtaW1nLWJveFwiPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCIgW21hdC1kaWFsb2ctY2xvc2VdPVwidHJ1ZVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjbG9zZS1pY29uXCIgY29sb3I9XCJ3YXJuXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDwhLS0gPG1hdC1jYXJkLXRpdGxlPlxuXG4gICAgPC9tYXQtY2FyZC10aXRsZT4gLS0+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJjZXJ0aWZpY2F0ZS1pbWctY29udGVudFwiPlxuICAgICAgICA8aW1nICNjZXJ0aWZpY2F0ZSBbc3JjXT1cInVybHwgcGlwZVNhZmVTYW5pdGl6ZXI6ICd1cmwnXCIgYWx0PVwiQ2VydGlmaWNhdGVcIiByb2xlPVwiaW1hZ2VcIiBjbGFzcz1cImNlcnRpZmljYXRlLWJhbm5lci1pbWFnZVwiPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8bWF0LWNhcmQtYWN0aW9ucyBjbGFzcz1cImZsZXggZmxleC1yb3ctcmV2ZXJzZSBnYXAtNFwiPlxuICAgICAgICA8IS0tIDx3cy13aWRnZXQtc3ZnLXRvLXBkZj48L3dzLXdpZGdldC1zdmctdG8tcGRmPiAtLT5cbiAgICAgICAgPGEgbWF0LWJ1dHRvbiAoY2xpY2spPVwic2hhcmVDZXJ0KClcIiBjbGFzcz1cIndzLW1hdC1hY2NlbnQtYm9yZGVyLWFjdGl2ZSBtYXQtYWNjZW50IGJ0bi1jdXN0b21cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uIG1hdGVyaWFsLWljb25zLW91dGxpbmVkIGRvd25sb2FkX2ljb24gbWFyZ2luLXJpZ2h0LXhzXCI+c2hhcmU8L21hdC1pY29uPlxuICAgICAgICAgICAgU2hhcmVcbiAgICAgICAgPC9hPlxuICAgICAgICA8YSBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LWJvcmRlci1hY3RpdmUgbWF0LWFjY2VudCBidG4tY3VzdG9tXCIgKGNsaWNrKT1cInJhaXNlSW50cmVhY3RUZWxlbWV0cnkoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24gbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgZG93bmxvYWRfaWNvbiBtYXJnaW4tcmlnaHQteHNcIj5jbG91ZF9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICB7eydjZXJ0aWZpY2F0ZWRpYWxvZy5kb3dubG9hZCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdkb3dubG9hZENlcnRQZGYoKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnBpY3R1cmVfYXNfcGRmPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eydjZXJ0aWZpY2F0ZWRpYWxvZy5wZGYnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdkb3dubG9hZENlcnRQbmcoKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnBob3RvPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eydjZXJ0aWZpY2F0ZWRpYWxvZy5wbmcnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdkb3dubG9hZENlcnQoKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnBob3RvX3NpemVfc2VsZWN0X2FjdHVhbDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3snY2VydGlmaWNhdGVkaWFsb2cuc3ZnJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuPC9tYXQtY2FyZD5cbiJdfQ==
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NlcnRpZmljYXRlLWRpYWxvZy9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY2VydGlmaWNhdGUtZGlhbG9nL2NlcnRpZmljYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUN6RCxPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQy9ILE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQTs7Ozs7Ozs7OztBQVU3QixNQUFNLE9BQU8sMEJBQTBCO0lBR3JDLFlBQ1UsTUFBb0IsRUFDckIsU0FBbUQsRUFDMUIsSUFBUyxFQUNWLFdBQWdCO1FBSHZDLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBMEM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNWLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBTGpELFdBQU0sR0FBRyxFQUFFLENBQUE7SUFRWCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUE7UUFFeEIsMkZBQTJGO1FBQzNGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFB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bnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYsIE1BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcbmltcG9ydCB7IEV2ZW50U2VydmljZSwgV3NFdmVudHMgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcbmltcG9ydCB7IGpzUERGIH0gZnJvbSAnanNwZGYnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLXdpZGdldC1jZXJ0aWZpY2F0ZS1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2VydGlmaWNhdGUtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2VydGlmaWNhdGUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgaG9zdDogeyBjbGFzczogJ2NlcnRpZmljYXRlLWlubmVyLWRpYWxvZy1wYW5lbCcgfSxcbiAgIC8qIHRzbGludDplbmFibGUgKi9cbn0pXG5leHBvcnQgY2xhc3MgQ2VydGlmaWNhdGVEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB1cmwhOiBzdHJpbmdcbiAgbmF2VXJsID0gJydcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBldmVudHM6IEV2ZW50U2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q2VydGlmaWNhdGVEaWFsb2dDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVybCA9IHRoaXMuZGF0YS5jZXRcbiAgICBcbiAgICAvLyBEZXRlcm1pbmUgdGhlIGNlcnRpZmljYXRlIFVSTCBiYXNlZCBvbiB3aGV0aGVyIGl0J3MgYW4gYWNoaWV2ZW1lbnQvbWlsZXN0b25lIGNlcnRpZmljYXRlXG4gICAgY29uc3QgY2VydERvd25sb2FkVXJsID0gdGhpcy5kYXRhPy5pc0FjaGlldmVtZW50IFxuICAgICAgPyBgJHt0aGlzLmVudmlyb25tZW50LmNvbnRlbnRIb3N0fS9hcGlzL3B1YmxpYy92OC9taWxlc3RvbmUvY2VydC9kb3dubG9hZC8ke3RoaXMuZGF0YS5jZXJ0SWR9YFxuICAgICAgOiBgJHt0aGlzLmVudmlyb25tZW50LmNvbnRlbnRIb3N0fS9hcGlzL3B1YmxpYy92OC9jZXJ0L2Rvd25sb2FkLyR7dGhpcy5kYXRhLmNlcnRJZH1gXG4gICAgXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgIHRoaXMubmF2VXJsID0gYGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9zaGFyaW5nL3NoYXJlLW9mZnNpdGUvP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudChjZXJ0RG93bmxvYWRVcmwpfWBcbiAgfVxuXG4gIGRvd25sb2FkQ2VydCgpIHtcbiAgICB0aGlzLnJhaXNlSW50cmVhY3RUZWxlbWV0cnkoJ3N2ZycpXG4gICAgY29uc3QgYTogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgYS5ocmVmID0gdGhpcy5kYXRhLmNldFxuICAgIGEuZG93bmxvYWQgPSAnQ2VydGlmaWNhdGUnXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKVxuICAgIGEuc3R5bGUgPSAnZGlzcGxheTogbm9uZSdcbiAgICBhLmNsaWNrKClcbiAgICBhLnJlbW92ZSgpXG4gIH1cblxuICBkb3dubG9hZENlcnRQbmcoKSB7XG4gICAgdGhpcy5yYWlzZUludHJlYWN0VGVsZW1ldHJ5KCdwbmcnKVxuICAgIGNvbnN0IHVyaURhdGEgPSB0aGlzLmRhdGEuY2V0XG4gICAgY29uc3QgaW1nID0gbmV3IEltYWdlKClcbiAgICBpbWcuc3JjID0gdXJpRGF0YVxuICAgIGltZy53aWR0aCA9IDE4MjBcbiAgICBpbWcuaGVpZ2h0ID0gMTAwMFxuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIFtjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHRdID0gW2ltZy53aWR0aCwgaW1nLmhlaWdodF1cbiAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXG4gICAgICBpZiAoY3R4KSB7XG4gICAgICAgIC8vIGN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQgPSB0cnVlXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBpbWcud2lkdGgsIGltZy5oZWlnaHQpXG4gICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcbiAgICAgICAgY29uc3QgcXVhbGl0eSA9IDEuMCAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEL2ltYWdlU21vb3RoaW5nUXVhbGl0eVxuICAgICAgICBhLmhyZWYgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnLCBxdWFsaXR5KVxuICAgICAgICBhLmRvd25sb2FkID0gJ0NlcnRpZmljYXRlJ1xuICAgICAgICBhLmFwcGVuZChjYW52YXMpXG4gICAgICAgIGEuY2xpY2soKVxuICAgICAgICBhLnJlbW92ZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFzeW5jIGRvd25sb2FkQ2VydFBkZigpIHtcbiAgICB0aGlzLnJhaXNlSW50cmVhY3RUZWxlbWV0cnkoJ3BkZicpXG4gICAgY29uc3QgdXJpRGF0YSA9IHRoaXMuZGF0YS5jZXRcbiAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKVxuICAgIGltZy5zcmMgPSB1cmlEYXRhXG4gICAgaW1nLndpZHRoID0gMTgyMFxuICAgIGltZy5oZWlnaHQgPSAxMDAwXG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgW2NhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodF0gPSBbaW1nLndpZHRoLCBpbWcuaGVpZ2h0XVxuICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcbiAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aCwgaW1nLmhlaWdodClcbiAgICAgICAgY29uc3QgcXVhbGl0eSA9IDEuMCAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEL2ltYWdlU21vb3RoaW5nUXVhbGl0eVxuICAgICAgICBjb25zdCBkYXRhSW1nID0gY2FudmFzLnRvRGF0YVVSTCgnYXBwbGljYXRpb24vcGRmJywgcXVhbGl0eSlcbiAgICAgICAgY29uc3QgcGRmID0gbmV3IGpzUERGKCdsYW5kc2NhcGUnLCAncHgnLCAnYTQnKVxuXG4gICAgICAgIC8vIGFkZCB0aGUgaW1hZ2UgdG8gdGhlIFBERlxuICAgICAgICBwZGYuYWRkSW1hZ2UoZGF0YUltZywgMTAsIDIwLCA2MDAsIDM1MClcblxuICAgICAgICAvLyBkb3dubG9hZCB0aGUgUERGXG4gICAgICAgIHBkZi5zYXZlKCdDZXJ0aWZpY2F0ZS5wZGYnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldENlcnRpZmljYXRlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8uaXNBY2hpZXZlbWVudCBcbiAgICAgID8gYCR7dGhpcy5lbnZpcm9ubWVudC5jb250ZW50SG9zdH0vYXBpcy9wdWJsaWMvdjgvbWlsZXN0b25lL2NlcnQvZG93bmxvYWQvJHt0aGlzLmRhdGEuY2VydElkfWBcbiAgICAgIDogYCR7dGhpcy5lbnZpcm9ubWVudC5jb250ZW50SG9zdH0vYXBpcy9wdWJsaWMvdjgvY2VydC9kb3dubG9hZC8ke3RoaXMuZGF0YS5jZXJ0SWR9YFxuICB9XG5cbiAgc2hhcmVDZXJ0KCkge1xuICAgIHRoaXMucmFpc2VTaGFyZUludHJlYWN0VGVsZW1ldHJ5KCdzaGFyZScpXG4gICAgcmV0dXJuIHdpbmRvdy5vcGVuKHRoaXMubmF2VXJsLCAnX2JsYW5rJylcbiAgfVxuXG4gIHNoYXJlT25MaW5rZWRJbigpIHtcbiAgICB0aGlzLnJhaXNlU2hhcmVJbnRyZWFjdFRlbGVtZXRyeSgnc2hhcmUnLCAnbGlua2VkaW4nKVxuICAgIGNvbnN0IGNlcnREb3dubG9hZFVybCA9IHRoaXMuZ2V0Q2VydGlmaWNhdGVVcmwoKVxuICAgIFxuICAgIFxuICAgIC8vIExpbmtlZEluJ3MgY3VycmVudCBzaGFyaW5nIGVuZHBvaW50XG4gICAgLy8gTm90ZTogTGlua2VkSW4gcmVxdWlyZXMgdGhlIFVSTCB0byBiZSBwdWJsaWNseSBhY2Nlc3NpYmxlXG4gICAgY29uc3QgbGlua2VkSW5VcmwgPSBgaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL3NoYXJpbmcvc2hhcmUtb2Zmc2l0ZS8/dXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNlcnREb3dubG9hZFVybCl9YFxuICAgIFxuICAgIFxuICAgIC8vIE9wZW4gTGlua2VkSW4gc2hhcmUgZGlhbG9nXG4gICAgY29uc3QgcG9wdXAgPSB3aW5kb3cub3BlbihsaW5rZWRJblVybCwgJ19ibGFuaycsICd3aWR0aD02MDAsaGVpZ2h0PTYwMCx0b29sYmFyPTAsbWVudWJhcj0wLGxvY2F0aW9uPTAsc3RhdHVzPTEsc2Nyb2xsYmFycz0xLHJlc2l6YWJsZT0xJylcbiAgICBcbiAgICAvLyBDaGVjayBpZiBwb3B1cCB3YXMgYmxvY2tlZFxuICAgIGlmICghcG9wdXAgfHwgcG9wdXAuY2xvc2VkIHx8IHR5cGVvZiBwb3B1cC5jbG9zZWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBGYWxsYmFjazogdHJ5IG9wZW5pbmcgaW4gc2FtZSB0YWJcbiAgICAgIHdpbmRvdy5vcGVuKGxpbmtlZEluVXJsLCAnX2JsYW5rJylcbiAgICB9XG4gIH1cblxuICBzaGFyZU9uRmFjZWJvb2soKSB7XG4gICAgdGhpcy5yYWlzZVNoYXJlSW50cmVhY3RUZWxlbWV0cnkoJ3NoYXJlJywgJ2ZhY2Vib29rJylcbiAgICBjb25zdCBjZXJ0RG93bmxvYWRVcmwgPSB0aGlzLmdldENlcnRpZmljYXRlVXJsKClcbiAgICBjb25zdCBmYWNlYm9va1VybCA9IGBodHRwczovL3d3dy5mYWNlYm9vay5jb20vc2hhcmVyL3NoYXJlci5waHA/dT0ke2VuY29kZVVSSUNvbXBvbmVudChjZXJ0RG93bmxvYWRVcmwpfWBcbiAgICB3aW5kb3cub3BlbihmYWNlYm9va1VybCwgJ19ibGFuaycsICd3aWR0aD02MDAsaGVpZ2h0PTYwMCcpXG4gIH1cblxuICBzaGFyZU9uVHdpdHRlcigpIHtcbiAgICB0aGlzLnJhaXNlU2hhcmVJbnRyZWFjdFRlbGVtZXRyeSgnc2hhcmUnLCAndHdpdHRlcicpXG4gICAgY29uc3QgY2VydERvd25sb2FkVXJsID0gdGhpcy5nZXRDZXJ0aWZpY2F0ZVVybCgpXG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZGF0YT8uaXNBY2hpZXZlbWVudCBcbiAgICAgID8gJ0kgaGF2ZSBhY2hpZXZlZCBhIG1pbGVzdG9uZSEgQ2hlY2sgb3V0IG15IGNlcnRpZmljYXRlLidcbiAgICAgIDogJ0kgaGF2ZSBjb21wbGV0ZWQgYSBjb3Vyc2UhIENoZWNrIG91dCBteSBjZXJ0aWZpY2F0ZS4nXG4gICAgY29uc3QgdHdpdHRlclVybCA9IGBodHRwczovL3R3aXR0ZXIuY29tL2ludGVudC90d2VldD91cmw9JHtlbmNvZGVVUklDb21wb25lbnQoY2VydERvd25sb2FkVXJsKX0mdGV4dD0ke2VuY29kZVVSSUNvbXBvbmVudCh0ZXh0KX1gXG4gICAgd2luZG93Lm9wZW4odHdpdHRlclVybCwgJ19ibGFuaycsICd3aWR0aD02MDAsaGVpZ2h0PTYwMCcpXG4gIH1cblxuICBzaGFyZU9uV2hhdHNBcHAoKSB7XG4gICAgdGhpcy5yYWlzZVNoYXJlSW50cmVhY3RUZWxlbWV0cnkoJ3NoYXJlJywgJ3doYXRzYXBwJylcbiAgICBjb25zdCBjZXJ0RG93bmxvYWRVcmwgPSB0aGlzLmdldENlcnRpZmljYXRlVXJsKClcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5kYXRhPy5pc0FjaGlldmVtZW50IFxuICAgICAgPyAnSSBoYXZlIGFjaGlldmVkIGEgbWlsZXN0b25lISBDaGVjayBvdXQgbXkgY2VydGlmaWNhdGU6ICdcbiAgICAgIDogYEkgaGF2ZSBjb21wbGV0ZWQgYSBjb3Vyc2UhIENoZWNrIG91dCBteSBjZXJ0aWZpY2F0ZTogYFxuICAgIGNvbnN0IHdoYXRzYXBwVXJsID0gYGh0dHBzOi8vYXBpLndoYXRzYXBwLmNvbS9zZW5kP3RleHQ9JHtlbmNvZGVVUklDb21wb25lbnQodGV4dCArIGNlcnREb3dubG9hZFVybCl9YFxuICAgIHdpbmRvdy5vcGVuKHdoYXRzYXBwVXJsLCAnX2JsYW5rJylcbiAgfVxuXG4gIHNoYXJlVmlhRW1haWwoKSB7XG4gICAgdGhpcy5yYWlzZVNoYXJlSW50cmVhY3RUZWxlbWV0cnkoJ3NoYXJlJywgJ2VtYWlsJylcbiAgICBjb25zdCBjZXJ0RG93bmxvYWRVcmwgPSB0aGlzLmdldENlcnRpZmljYXRlVXJsKClcbiAgICBjb25zdCBzdWJqZWN0ID0gdGhpcy5kYXRhPy5pc0FjaGlldmVtZW50IFxuICAgICAgPyAnTWlsZXN0b25lIEFjaGlldmVtZW50IENlcnRpZmljYXRlJ1xuICAgICAgOiAnQ291cnNlIENvbXBsZXRpb24gQ2VydGlmaWNhdGUnXG4gICAgY29uc3QgYm9keSA9IHRoaXMuZGF0YT8uaXNBY2hpZXZlbWVudCBcbiAgICAgID8gYEkgaGF2ZSBhY2hpZXZlZCBhIG1pbGVzdG9uZSEgWW91IGNhbiB2aWV3IG15IGNlcnRpZmljYXRlIGhlcmU6ICR7Y2VydERvd25sb2FkVXJsfWBcbiAgICAgIDogYEkgaGF2ZSBjb21wbGV0ZWQgYSBjb3Vyc2UhIFlvdSBjYW4gdmlldyBteSBjZXJ0aWZpY2F0ZSBoZXJlOiAke2NlcnREb3dubG9hZFVybH1gXG4gICAgY29uc3QgbWFpbHRvVXJsID0gYG1haWx0bzo/c3ViamVjdD0ke2VuY29kZVVSSUNvbXBvbmVudChzdWJqZWN0KX0mYm9keT0ke2VuY29kZVVSSUNvbXBvbmVudChib2R5KX1gXG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBtYWlsdG9VcmxcbiAgfVxuXG4gIGNvcHlDZXJ0aWZpY2F0ZUxpbmsoKSB7XG4gICAgdGhpcy5yYWlzZVNoYXJlSW50cmVhY3RUZWxlbWV0cnkoJ3NoYXJlJywgJ2NvcHknKVxuICAgIGNvbnN0IGNlcnREb3dubG9hZFVybCA9IHRoaXMuZ2V0Q2VydGlmaWNhdGVVcmwoKVxuICAgIFxuICAgIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkICYmIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KSB7XG4gICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjZXJ0RG93bmxvYWRVcmwpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQ2VydGlmaWNhdGUgbGluayBjb3BpZWQgdG8gY2xpcGJvYXJkJylcbiAgICAgICAgLy8gWW91IGNhbiBhZGQgYSBzbmFja2JhciBub3RpZmljYXRpb24gaGVyZSBpZiBuZWVkZWRcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBjb3B5IGNlcnRpZmljYXRlIGxpbms6JywgZXJyKVxuICAgICAgICB0aGlzLmZhbGxiYWNrQ29weVRleHRUb0NsaXBib2FyZChjZXJ0RG93bmxvYWRVcmwpXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZhbGxiYWNrQ29weVRleHRUb0NsaXBib2FyZChjZXJ0RG93bmxvYWRVcmwpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmYWxsYmFja0NvcHlUZXh0VG9DbGlwYm9hcmQodGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpXG4gICAgdGV4dEFyZWEudmFsdWUgPSB0ZXh0XG4gICAgdGV4dEFyZWEuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnXG4gICAgdGV4dEFyZWEuc3R5bGUudG9wID0gJzAnXG4gICAgdGV4dEFyZWEuc3R5bGUubGVmdCA9ICcwJ1xuICAgIHRleHRBcmVhLnN0eWxlLndpZHRoID0gJzJlbSdcbiAgICB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSAnMmVtJ1xuICAgIHRleHRBcmVhLnN0eWxlLnBhZGRpbmcgPSAnMCdcbiAgICB0ZXh0QXJlYS5zdHlsZS5ib3JkZXIgPSAnbm9uZSdcbiAgICB0ZXh0QXJlYS5zdHlsZS5vdXRsaW5lID0gJ25vbmUnXG4gICAgdGV4dEFyZWEuc3R5bGUuYm94U2hhZG93ID0gJ25vbmUnXG4gICAgdGV4dEFyZWEuc3R5bGUuYmFja2dyb3VuZCA9ICd0cmFuc3BhcmVudCdcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRBcmVhKVxuICAgIHRleHRBcmVhLmZvY3VzKClcbiAgICB0ZXh0QXJlYS5zZWxlY3QoKVxuICAgIHRyeSB7XG4gICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpXG4gICAgICBjb25zb2xlLmxvZygnQ2VydGlmaWNhdGUgbGluayBjb3BpZWQgdG8gY2xpcGJvYXJkIChmYWxsYmFjayknKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFsbGJhY2s6IEZhaWxlZCB0byBjb3B5JywgZXJyKVxuICAgIH1cbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRBcmVhKVxuICB9XG5cbiAgcmFpc2VTaGFyZUludHJlYWN0VGVsZW1ldHJ5KHR5cGU/OiBzdHJpbmcsIGFjdGlvbj86IHN0cmluZykge1xuICAgIHRoaXMuZXZlbnRzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXG4gICAgICB7XG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFR5cGVzLkNMSUNLLFxuICAgICAgICBpZDogYCR7dHlwZX0tJHtXc0V2ZW50cy5FbnVtSW50ZXJhY3RTdWJUeXBlcy5DRVJUSUZJQ0FURX1gLFxuICAgICAgICBzdWJUeXBlOiAgYWN0aW9uID8gYWN0aW9uIDogJycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogdGhpcy5kYXRhLmNlcnRJZCwgICAvLyBpZCBvZiB0aGUgY2VydGlmaWNhdGVcbiAgICAgICAgdHlwZTogV3NFdmVudHMuRW51bUludGVyYWN0U3ViVHlwZXMuQ0VSVElGSUNBVEUsXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcmFpc2VJbnRyZWFjdFRlbGVtZXRyeShhY3Rpb24/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmV2ZW50cy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxuICAgICAge1xuICAgICAgICB0eXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RUeXBlcy5DTElDSyxcbiAgICAgICAgaWQ6ICdkb3dubG9hZC1jZXJ0aWZpY2F0ZScsXG4gICAgICAgIHN1YlR5cGU6IGFjdGlvbiA/IGFjdGlvbiA6ICcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRoaXMuZGF0YS5jZXJ0SWQsICAgLy8gaWQgb2YgdGhlIGNlcnRpZmljYXRlXG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFN1YlR5cGVzLkNFUlRJRklDQVRFLFxuICAgICAgfVxuICAgIClcbiAgfVxuXG59XG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJuby1zaGFkb3cgY2VydGlmaWNhdGUtaW1nLWJveFwiPlxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCIgW21hdC1kaWFsb2ctY2xvc2VdPVwidHJ1ZVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjbG9zZS1pY29uXCIgY29sb3I9XCJ3YXJuXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDwhLS0gPG1hdC1jYXJkLXRpdGxlPlxuXG4gICAgPC9tYXQtY2FyZC10aXRsZT4gLS0+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJjZXJ0aWZpY2F0ZS1pbWctY29udGVudFwiPlxuICAgICAgICA8aW1nICNjZXJ0aWZpY2F0ZSBbc3JjXT1cInVybHwgcGlwZVNhZmVTYW5pdGl6ZXI6ICd1cmwnXCIgYWx0PVwiQ2VydGlmaWNhdGVcIiByb2xlPVwiaW1hZ2VcIiBjbGFzcz1cImNlcnRpZmljYXRlLWJhbm5lci1pbWFnZVwiPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8bWF0LWNhcmQtYWN0aW9ucyBjbGFzcz1cImZsZXggZmxleC1yb3ctcmV2ZXJzZSBnYXAtNFwiPlxuICAgICAgICA8IS0tIDx3cy13aWRnZXQtc3ZnLXRvLXBkZj48L3dzLXdpZGdldC1zdmctdG8tcGRmPiAtLT5cbiAgICAgICAgPGEgbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwic2hhcmVNZW51XCIgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LWJvcmRlci1hY3RpdmUgbWF0LWFjY2VudCBidG4tY3VzdG9tXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbiBtYXRlcmlhbC1pY29ucy1vdXRsaW5lZCBkb3dubG9hZF9pY29uIG1hcmdpbi1yaWdodC14c1wiPnNoYXJlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIFNoYXJlXG4gICAgICAgIDwvYT5cbiAgICAgICAgPG1hdC1tZW51ICNzaGFyZU1lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT0nc2hhcmVPbkxpbmtlZEluKCknPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMTkgM2EyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxNG0tLjUgMTUuNXYtNS4zYTMuMjYgMy4yNiAwIDAgMC0zLjI2LTMuMjZjLS44NSAwLTEuODQuNTItMi4zMiAxLjN2LTEuMTFoLTIuNzl2OC4zN2gyLjc5di00LjkzYzAtLjc3LjYyLTEuNCAxLjM5LTEuNGExLjQgMS40IDAgMCAxIDEuNCAxLjR2NC45M2gyLjc5TTYuODggOC41NmExLjY4IDEuNjggMCAwIDAgMS42OC0xLjY4YzAtLjkzLS43NS0xLjY5LTEuNjgtMS42OWExLjY5IDEuNjkgMCAwIDAtMS42OSAxLjY5YzAgLjkzLjc2IDEuNjggMS42OSAxLjY4bTEuMzkgOS45NHYtOC4zN0g1LjV2OC4zN2gyLjc3elwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5MaW5rZWRJbjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J3NoYXJlT25GYWNlYm9vaygpJz5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTEyIDIuMDRDNi41IDIuMDQgMiA2LjUzIDIgMTIuMDZDMiAxNy4wNiA1LjY2IDIxLjIxIDEwLjQ0IDIxLjk2VjE0Ljk2SDcuOVYxMi4wNkgxMC40NFY5Ljg1QzEwLjQ0IDcuMzQgMTEuOTMgNS45NiAxNC4yMiA1Ljk2QzE1LjMxIDUuOTYgMTYuNDUgNi4xNSAxNi40NSA2LjE1VjguNjJIMTUuMTlDMTMuOTUgOC42MiAxMy41NiA5LjM5IDEzLjU2IDEwLjE4VjEyLjA2SDE2LjM0TDE1Ljg5IDE0Ljk2SDEzLjU2VjIxLjk2QTEwIDEwIDAgMCAwIDIyIDEyLjA2QzIyIDYuNTMgMTcuNSAyLjA0IDEyIDIuMDRaXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPkZhY2Vib29rPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT0nc2hhcmVPblR3aXR0ZXIoKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0yMi40Niw2QzIxLjY5LDYuMzUgMjAuODYsNi41OCAyMCw2LjY5QzIwLjg4LDYuMTYgMjEuNTYsNS4zMiAyMS44OCw0LjMxQzIxLjA1LDQuODEgMjAuMTMsNS4xNiAxOS4xNiw1LjM2QzE4LjM3LDQuNSAxNy4yNiw0IDE2LDRDMTMuNjUsNCAxMS43Myw1LjkyIDExLjczLDguMjlDMTEuNzMsOC42MyAxMS43Nyw4Ljk2IDExLjg0LDkuMjdDOC4yOCw5LjA5IDUuMTEsNy4zOCAzLDQuNzlDMi42Myw1LjQyIDIuNDIsNi4xNiAyLjQyLDYuOTRDMi40Miw4LjQzIDMuMTcsOS43NSA0LjMzLDEwLjVDMy42MiwxMC41IDIuOTYsMTAuMyAyLjM4LDEwQzIuMzgsMTAgMi4zOCwxMCAyLjM4LDEwLjAzQzIuMzgsMTIuMTEgMy44NiwxMy44NSA1LjgyLDE0LjI0QzUuNDYsMTQuMzQgNS4wOCwxNC4zOSA0LjY5LDE0LjM5QzQuNDIsMTQuMzkgNC4xNSwxNC4zNiAzLjg5LDE0LjMxQzQuNDMsMTYgNiwxNy4yNiA3Ljg5LDE3LjI5QzYuNDMsMTguNDUgNC41OCwxOS4xMyAyLjU2LDE5LjEzQzIuMjIsMTkuMTMgMS44OCwxOS4xMSAxLjU0LDE5LjA3QzMuNDQsMjAuMjkgNS43MCwyMSA4LjEyLDIxQzE2LDIxIDIwLjMzLDE0LjQ2IDIwLjMzLDguNzlDMjAuMzMsOC42IDIwLjMzLDguNDIgMjAuMzIsOC4yM0MyMS4xNiw3LjYzIDIxLjg4LDYuODcgMjIuNDYsNlpcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+VHdpdHRlcjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J3NoYXJlT25XaGF0c0FwcCgpJz5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTEyLjA0IDJDNi41OCAyIDIuMTMgNi40NSAyLjEzIDExLjkxQzIuMTMgMTMuNjYgMi41OSAxNS4zNiAzLjQ1IDE2Ljg2TDIuMDUgMjJMNy4zIDIwLjYyQzguNzUgMjEuNDEgMTAuMzggMjEuODMgMTIuMDQgMjEuODNDMTcuNSAyMS44MyAyMS45NSAxNy4zOCAyMS45NSAxMS45MkMyMS45NSA5LjI3IDIwLjkyIDYuNzggMTkuMDUgNC45MUMxNy4xOCAzLjAzIDE0LjY5IDIgMTIuMDQgMk0xMi4wNSAzLjY3QzE0LjI1IDMuNjcgMTYuMzEgNC41MyAxNy44NyA2LjA5QzE5LjQyIDcuNjUgMjAuMjggOS43MiAyMC4yOCAxMS45MkMyMC4yOCAxNi40NiAxNi41OCAyMC4xNSAxMi4wNCAyMC4xNUMxMC41NiAyMC4xNSA5LjExIDE5Ljc2IDcuODUgMTlMNy41NSAxOC44M0w0LjQzIDE5LjY1TDUuMjYgMTYuNjFMNS4wNiAxNi4yOUM0LjI0IDE1IDMuOCAxMy40NyAzLjggMTEuOTFDMy44MSA3LjM3IDcuNSAzLjY3IDEyLjA1IDMuNjdNOC41MyA3LjMzQzguMzcgNy4zMyA4LjEgNy4zOSA3Ljg3IDcuNjRDNy42NSA3Ljg5IDcgOC41IDcgOS43MUM3IDEwLjkzIDcuODkgMTIuMSA4IDEyLjI3QzguMTQgMTIuNDQgOS43NiAxNC45NCAxMi4yNSAxNkMxMi44NCAxNi4yNyAxMy4zIDE2LjQyIDEzLjY2IDE2LjUzQzE0LjI1IDE2LjcyIDE0Ljc5IDE2LjY5IDE1LjIyIDE2LjYzQzE1LjcgMTYuNTYgMTYuNjggMTYuMDMgMTYuODkgMTUuNDVDMTcuMSAxNC44NyAxNy4xIDE0LjM4IDE3LjA0IDE0LjI3QzE2Ljk3IDE0LjE3IDE2LjgxIDE0LjExIDE2LjU2IDE0QzE2LjMxIDEzLjg2IDE1LjA5IDEzLjI2IDE0Ljg3IDEzLjE4QzE0LjY0IDEzLjEgMTQuNSAxMy4wNiAxNC4zMSAxMy4zQzE0LjE1IDEzLjU1IDEzLjY3IDE0LjExIDEzLjUzIDE0LjI3QzEzLjM4IDE0LjQ0IDEzLjI0IDE0LjQ2IDEzIDE0LjM0QzEyLjc0IDE0LjIxIDExLjk0IDEzLjk1IDExIDEzLjExQzEwLjI2IDEyLjQ1IDkuNzcgMTEuNjQgOS42MiAxMS4zOUM5LjUgMTEuMTUgOS42MSAxMSA5LjczIDEwLjg5QzkuODQgMTAuNzggMTAgMTAuNiAxMC4xIDEwLjQ1QzEwLjIzIDEwLjMxIDEwLjI3IDEwLjIgMTAuMzUgMTAuMDRDMTAuNDMgOS44NyAxMC4zOSA5LjczIDEwLjMzIDkuNjFDMTAuMjcgOS41IDkuNzcgOC4yNiA5LjU2IDcuNzdDOS4zNiA3LjI5IDkuMTYgNy4zNSA5IDcuMzRDOC44NiA3LjM0IDguNyA3LjMzIDguNTMgNy4zM1pcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+V2hhdHNBcHA8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdzaGFyZVZpYUVtYWlsKCknPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lbWFpbDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+RW1haWw8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J2NvcHlDZXJ0aWZpY2F0ZUxpbmsoKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNvbnRlbnRfY29weTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+Q29weSBMaW5rPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDxhIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cIndzLW1hdC1hY2NlbnQtYm9yZGVyLWFjdGl2ZSBtYXQtYWNjZW50IGJ0bi1jdXN0b21cIiAoY2xpY2spPVwicmFpc2VJbnRyZWFjdFRlbGVtZXRyeSgpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbiBtYXRlcmlhbC1pY29ucy1vdXRsaW5lZCBkb3dubG9hZF9pY29uIG1hcmdpbi1yaWdodC14c1wiPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIHt7J2NlcnRpZmljYXRlZGlhbG9nLmRvd25sb2FkJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgIDwvYT5cbiAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J2Rvd25sb2FkQ2VydFBkZigpJz5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cGljdHVyZV9hc19wZGY8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7J2NlcnRpZmljYXRlZGlhbG9nLnBkZicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J2Rvd25sb2FkQ2VydFBuZygpJz5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cGhvdG88L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7J2NlcnRpZmljYXRlZGlhbG9nLnBuZycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J2Rvd25sb2FkQ2VydCgpJz5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cGhvdG9fc2l6ZV9zZWxlY3RfYWN0dWFsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eydjZXJ0aWZpY2F0ZWRpYWxvZy5zdmcnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG48L21hdC1jYXJkPlxuIl19