@sunbird-cb/toc 0.0.9 → 0.0.10-mauritius

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 (346) 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/attendance-card/attendance-card.component.mjs +55 -55
  4. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -126
  5. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -32
  6. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -85
  7. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -100
  8. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -48
  9. package/esm2022/lib/_collection/_common/card-competency/card-competency.component.mjs +58 -0
  10. package/esm2022/lib/_collection/_common/card-competency/card-competency.module.mjs +22 -0
  11. package/esm2022/lib/_collection/_common/card-content-v2/card-content-v2.model.mjs +23 -0
  12. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +223 -120
  13. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +96 -92
  14. package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -48
  15. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -25
  16. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -41
  17. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -89
  18. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -42
  19. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -41
  20. package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -78
  21. package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -45
  22. package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -2
  23. package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -70
  24. package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -28
  25. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -187
  26. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -86
  27. package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -31
  28. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +961 -941
  29. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -183
  30. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -327
  31. package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -297
  32. package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +304 -248
  33. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1227 -1148
  34. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -16
  35. package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -43
  36. package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -133
  37. package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -66
  38. package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -278
  39. package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -21
  40. package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -21
  41. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +835 -847
  42. package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +224 -219
  43. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +276 -209
  44. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -26
  45. package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -19
  46. package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -23
  47. package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -113
  48. package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -110
  49. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -26
  50. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -19
  51. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -67
  52. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -28
  53. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -77
  54. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -2
  55. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -61
  56. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -20
  57. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +67 -67
  58. package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -139
  59. package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -71
  60. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -34
  61. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -56
  62. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -25
  63. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -37
  64. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -32
  65. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -30
  66. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -38
  67. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -51
  68. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -115
  69. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -12
  70. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -51
  71. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -61
  72. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -87
  73. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -36
  74. package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -62
  75. package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -24
  76. package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -192
  77. package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -44
  78. package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -99
  79. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -58
  80. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -67
  81. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +115 -112
  82. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -2
  83. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -69
  84. package/esm2022/lib/_collection-api.mjs +57 -57
  85. package/esm2022/lib/_constants/widget-content.constants.mjs +19 -19
  86. package/esm2022/lib/_directives/tooltip.directive.mjs +68 -68
  87. package/esm2022/lib/_models/common.model.mjs +2 -2
  88. package/esm2022/lib/_models/error.model.mjs +2 -2
  89. package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -24
  90. package/esm2022/lib/_services/rating.service.mjs +89 -89
  91. package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -29
  92. package/esm2022/lib/_services/viewer-route-util.mjs +103 -103
  93. package/esm2022/lib/_services/widget-content.model.mjs +254 -247
  94. package/esm2022/lib/_services/widget-content.service.mjs +594 -594
  95. package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -9
  96. package/esm2022/lib/app-toc-lib.module.mjs +508 -499
  97. package/esm2022/lib/collection.config.mjs +161 -161
  98. package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -37
  99. package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -1436
  100. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +522 -475
  101. package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -119
  102. package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -80
  103. package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -249
  104. package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -39
  105. package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -58
  106. package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2230 -2229
  107. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +3017 -2907
  108. package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -157
  109. package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -48
  110. package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -47
  111. package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -766
  112. package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -243
  113. package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -116
  114. package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -44
  115. package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1854 -1838
  116. package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -236
  117. package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -213
  118. package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -36
  119. package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +258 -256
  120. package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -133
  121. package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -36
  122. package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -2
  123. package/esm2022/lib/models/app-toc.model.mjs +38 -38
  124. package/esm2022/lib/models/auto-complete.model.mjs +2 -2
  125. package/esm2022/lib/models/card-content.model.mjs +13 -13
  126. package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -2
  127. package/esm2022/lib/models/discussion-forum.model.mjs +14 -14
  128. package/esm2022/lib/models/goal.model.mjs +2 -2
  129. package/esm2022/lib/models/meta-tag.model.mjs +8 -8
  130. package/esm2022/lib/models/playlist.model.mjs +2 -2
  131. package/esm2022/lib/models/profile-revamp.model.mjs +2 -2
  132. package/esm2022/lib/models/rating.model.mjs +2 -2
  133. package/esm2022/lib/models/user-profile.model.mjs +21 -21
  134. package/esm2022/lib/registration-toc-lib.config.mjs +14 -0
  135. package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -24
  136. package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -24
  137. package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -60
  138. package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -25
  139. package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -106
  140. package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -25
  141. package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -25
  142. package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -25
  143. package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -51
  144. package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -16
  145. package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -18
  146. package/esm2022/lib/services/access-control.service.mjs +56 -56
  147. package/esm2022/lib/services/action.service.mjs +23 -23
  148. package/esm2022/lib/services/app-toc-v2.service.mjs +368 -313
  149. package/esm2022/lib/services/app-toc.service.mjs +1577 -1613
  150. package/esm2022/lib/services/certificate.service.mjs +114 -69
  151. package/esm2022/lib/services/discuss-utils.service.mjs +45 -58
  152. package/esm2022/lib/services/editor.service.mjs +34 -34
  153. package/esm2022/lib/services/load-check.service.mjs +21 -21
  154. package/esm2022/lib/services/loader.service.mjs +33 -33
  155. package/esm2022/lib/services/mobile-apps.service.mjs +67 -67
  156. package/esm2022/lib/services/netcore.service.mjs +126 -56
  157. package/esm2022/lib/services/nps-grid.service.mjs +43 -31
  158. package/esm2022/lib/services/otp.service.mjs +81 -43
  159. package/esm2022/lib/services/profile-v2.service.mjs +71 -43
  160. package/esm2022/lib/services/reset-ratings.service.mjs +19 -19
  161. package/esm2022/lib/services/resource-download-helper.service.mjs +64 -64
  162. package/esm2022/lib/services/root.service.mjs +106 -0
  163. package/esm2022/lib/services/timer.service.mjs +23 -23
  164. package/esm2022/lib/services/title-tag.service.mjs +71 -71
  165. package/esm2022/lib/services/user-profile.service.mjs +180 -55
  166. package/esm2022/lib/services/viewer-data.service.mjs +64 -64
  167. package/esm2022/lib/services/viewer-util.service.mjs +627 -590
  168. package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -291
  169. package/esm2022/lib/share-toc/share-toc.module.mjs +119 -119
  170. package/esm2022/public-api.mjs +81 -71
  171. package/esm2022/sunbird-cb-toc.mjs +4 -4
  172. package/fesm2022/sunbird-cb-toc.mjs +27145 -24836
  173. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  174. package/index.d.ts +5 -5
  175. package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts +139 -0
  176. package/lib/_collection/_common/ai-tutor/socket.service.d.ts +19 -0
  177. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +16 -16
  178. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +31 -31
  179. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +15 -15
  180. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +20 -20
  181. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +22 -22
  182. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +15 -15
  183. package/lib/_collection/_common/card-competency/card-competency.component.d.ts +14 -0
  184. package/lib/_collection/_common/card-competency/card-competency.module.d.ts +8 -0
  185. package/lib/_collection/_common/card-content-v2/card-content-v2.model.d.ts +44 -0
  186. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +31 -22
  187. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -22
  188. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +9 -9
  189. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +11 -11
  190. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +12 -12
  191. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +18 -18
  192. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +14 -14
  193. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +11 -11
  194. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +17 -17
  195. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +14 -14
  196. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +199 -199
  197. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +16 -16
  198. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +10 -10
  199. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +38 -38
  200. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +19 -19
  201. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +11 -11
  202. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +187 -183
  203. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +41 -41
  204. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +54 -54
  205. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +47 -47
  206. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +56 -49
  207. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +195 -171
  208. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +8 -8
  209. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +16 -16
  210. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +40 -40
  211. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +21 -21
  212. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +45 -45
  213. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +10 -10
  214. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +10 -10
  215. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +131 -128
  216. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -51
  217. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +32 -29
  218. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +9 -9
  219. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +7 -7
  220. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +7 -7
  221. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +28 -28
  222. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +24 -24
  223. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +14 -14
  224. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +9 -9
  225. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +12 -12
  226. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +10 -10
  227. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +22 -22
  228. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +8 -8
  229. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +18 -18
  230. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +8 -8
  231. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +15 -15
  232. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +35 -35
  233. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +19 -19
  234. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +14 -14
  235. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +13 -13
  236. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +11 -11
  237. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +11 -11
  238. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +15 -15
  239. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +10 -10
  240. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +16 -16
  241. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +11 -11
  242. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +34 -34
  243. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +17 -17
  244. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +15 -15
  245. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +15 -15
  246. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +21 -21
  247. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +12 -12
  248. package/lib/_collection/_common/user-image/user-image.component.d.ts +21 -21
  249. package/lib/_collection/_common/user-image/user-image.module.d.ts +9 -9
  250. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +47 -47
  251. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +14 -14
  252. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +22 -22
  253. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +19 -19
  254. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +15 -15
  255. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -25
  256. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +21 -21
  257. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +18 -18
  258. package/lib/_collection-api.d.ts +34 -34
  259. package/lib/_constants/widget-content.constants.d.ts +7 -7
  260. package/lib/_directives/tooltip.directive.d.ts +17 -17
  261. package/lib/_models/common.model.d.ts +3 -3
  262. package/lib/_models/error.model.d.ts +5 -5
  263. package/lib/_pipes/highlight.pipe.d.ts +10 -10
  264. package/lib/_services/rating.service.d.ts +18 -18
  265. package/lib/_services/samuhik-charcha.service.d.ts +13 -13
  266. package/lib/_services/viewer-route-util.d.ts +8 -8
  267. package/lib/_services/widget-content.model.d.ts +521 -515
  268. package/lib/_services/widget-content.service.d.ts +101 -101
  269. package/lib/_shared/translate-loader.factory.d.ts +7 -7
  270. package/lib/app-toc-lib.module.d.ts +89 -88
  271. package/lib/collection.config.d.ts +159 -159
  272. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +17 -17
  273. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +225 -225
  274. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +83 -78
  275. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +22 -22
  276. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +31 -31
  277. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +47 -47
  278. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +14 -14
  279. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +21 -21
  280. package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -314
  281. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +418 -408
  282. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +47 -47
  283. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +22 -22
  284. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +14 -14
  285. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +149 -149
  286. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +42 -42
  287. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +27 -27
  288. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +15 -15
  289. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +197 -195
  290. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +44 -44
  291. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +54 -54
  292. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +18 -18
  293. package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -43
  294. package/lib/components/survey-form-question/survey-form-question.component.d.ts +20 -20
  295. package/lib/components/survey-form-section/survey-form-section.component.d.ts +13 -13
  296. package/lib/models/app-toc-analytics.model.d.ts +152 -152
  297. package/lib/models/app-toc.model.d.ts +84 -84
  298. package/lib/models/auto-complete.model.d.ts +27 -27
  299. package/lib/models/card-content.model.d.ts +19 -19
  300. package/lib/models/content-strip-with-tabs.model.d.ts +44 -44
  301. package/lib/models/discussion-forum.model.d.ts +40 -40
  302. package/lib/models/goal.model.d.ts +22 -22
  303. package/lib/models/meta-tag.model.d.ts +6 -6
  304. package/lib/models/playlist.model.d.ts +23 -23
  305. package/lib/models/profile-revamp.model.d.ts +14 -14
  306. package/lib/models/rating.model.d.ts +17 -17
  307. package/lib/models/user-profile.model.d.ts +124 -37
  308. package/lib/registration-toc-lib.config.d.ts +4 -0
  309. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +12 -12
  310. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +12 -12
  311. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +16 -16
  312. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +12 -12
  313. package/lib/resolvers/app-toc-resolver.service.d.ts +16 -16
  314. package/lib/resolvers/config-resolver.service.d.ts +11 -11
  315. package/lib/resolvers/profile-resolver.service.d.ts +11 -11
  316. package/lib/resolvers/restricted-features-resolver.service.d.ts +11 -11
  317. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +19 -19
  318. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +8 -8
  319. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +8 -8
  320. package/lib/services/access-control.service.d.ts +29 -29
  321. package/lib/services/action.service.d.ts +9 -9
  322. package/lib/services/app-toc-v2.service.d.ts +17 -16
  323. package/lib/services/app-toc.service.d.ts +190 -235
  324. package/lib/services/certificate.service.d.ts +41 -42
  325. package/lib/services/discuss-utils.service.d.ts +11 -33
  326. package/lib/services/editor.service.d.ts +17 -17
  327. package/lib/services/load-check.service.d.ts +8 -8
  328. package/lib/services/loader.service.d.ts +16 -16
  329. package/lib/services/mobile-apps.service.d.ts +38 -38
  330. package/lib/services/netcore.service.d.ts +21 -33
  331. package/lib/services/nps-grid.service.d.ts +16 -15
  332. package/lib/services/otp.service.d.ts +15 -20
  333. package/lib/services/profile-v2.service.d.ts +17 -20
  334. package/lib/services/reset-ratings.service.d.ts +8 -8
  335. package/lib/services/resource-download-helper.service.d.ts +29 -29
  336. package/lib/services/root.service.d.ts +26 -0
  337. package/lib/services/timer.service.d.ts +9 -9
  338. package/lib/services/title-tag.service.d.ts +21 -21
  339. package/lib/services/user-profile.service.d.ts +44 -24
  340. package/lib/services/viewer-data.service.d.ts +62 -58
  341. package/lib/services/viewer-util.service.d.ts +76 -76
  342. package/lib/share-toc/share-toc/share-toc.component.d.ts +56 -56
  343. package/lib/share-toc/share-toc.module.d.ts +32 -32
  344. package/package.json +3 -3
  345. package/public-api.d.ts +65 -56
  346. package/sunbird-cb-toc-0.0.10-mauritius.tgz +0 -0
@@ -1,120 +1,223 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
3
- import { WsEvents } from '@sunbird-cb/utils-v2';
4
- import { jsPDF } from 'jspdf';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@sunbird-cb/utils-v2";
7
- import * as i2 from "@angular/material/legacy-dialog";
8
- import * as i3 from "@angular/material/legacy-button";
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";
13
- export class CertificateDialogComponent {
14
- constructor(events, dialogRef, data, environment) {
15
- this.events = events;
16
- this.dialogRef = dialogRef;
17
- this.data = data;
18
- this.environment = environment;
19
- this.navUrl = '';
20
- }
21
- ngOnInit() {
22
- this.url = this.data.cet;
23
- // 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}`;
25
- }
26
- downloadCert() {
27
- this.raiseIntreactTelemetry('svg');
28
- const a = document.createElement('a');
29
- a.href = this.data.cet;
30
- a.download = 'Certificate';
31
- document.body.appendChild(a);
32
- a.style = 'display: none';
33
- a.click();
34
- a.remove();
35
- }
36
- downloadCertPng() {
37
- this.raiseIntreactTelemetry('png');
38
- const uriData = this.data.cet;
39
- const img = new Image();
40
- img.src = uriData;
41
- img.width = 1820;
42
- img.height = 1000;
43
- img.onload = () => {
44
- const canvas = document.createElement('canvas');
45
- [canvas.width, canvas.height] = [img.width, img.height];
46
- const ctx = canvas.getContext('2d');
47
- if (ctx) {
48
- // ctx.imageSmoothingEnabled = true
49
- ctx.drawImage(img, 0, 0, img.width, img.height);
50
- const a = document.createElement('a');
51
- const quality = 1.0; // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality
52
- a.href = canvas.toDataURL('image/png', quality);
53
- a.download = 'Certificate';
54
- a.append(canvas);
55
- a.click();
56
- a.remove();
57
- }
58
- };
59
- }
60
- async downloadCertPdf() {
61
- this.raiseIntreactTelemetry('pdf');
62
- const uriData = this.data.cet;
63
- const img = new Image();
64
- img.src = uriData;
65
- img.width = 1820;
66
- img.height = 1000;
67
- img.onload = () => {
68
- const canvas = document.createElement('canvas');
69
- [canvas.width, canvas.height] = [img.width, img.height];
70
- const ctx = canvas.getContext('2d');
71
- if (ctx) {
72
- ctx.drawImage(img, 0, 0, img.width, img.height);
73
- const quality = 1.0; // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality
74
- const dataImg = canvas.toDataURL('application/pdf', quality);
75
- const pdf = new jsPDF('landscape', 'px', 'a4');
76
- // add the image to the PDF
77
- pdf.addImage(dataImg, 10, 20, 600, 350);
78
- // download the PDF
79
- pdf.save('Certificate.pdf');
80
- }
81
- };
82
- }
83
- shareCert() {
84
- this.raiseShareIntreactTelemetry('share');
85
- return window.open(this.navUrl, '_blank');
86
- }
87
- raiseShareIntreactTelemetry(type, action) {
88
- this.events.raiseInteractTelemetry({
89
- type: WsEvents.EnumInteractTypes.CLICK,
90
- id: `${type}-${WsEvents.EnumInteractSubTypes.CERTIFICATE}`,
91
- subType: action ? action : '',
92
- }, {
93
- id: this.data.certId,
94
- type: WsEvents.EnumInteractSubTypes.CERTIFICATE,
95
- });
96
- }
97
- raiseIntreactTelemetry(action) {
98
- this.events.raiseInteractTelemetry({
99
- type: WsEvents.EnumInteractTypes.CLICK,
100
- id: 'download-certificate',
101
- subType: action ? action : '',
102
- }, {
103
- id: this.data.certId,
104
- type: WsEvents.EnumInteractSubTypes.CERTIFICATE,
105
- });
106
- }
107
- 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\">\r\n <button mat-icon-button class=\"close-button\" [mat-dialog-close]=\"true\">\r\n <mat-icon class=\"close-icon\" color=\"warn\">close</mat-icon>\r\n </button>\r\n <!-- <mat-card-title>\r\n\r\n </mat-card-title> -->\r\n <mat-card-content class=\"certificate-img-content\">\r\n <img #certificate [src]=\"url| pipeSafeSanitizer: 'url'\" alt=\"Certificate\" role=\"image\" class=\"certificate-banner-image\">\r\n </mat-card-content>\r\n <mat-card-actions class=\"flex flex-row-reverse gap-4\">\r\n <!-- <ws-widget-svg-to-pdf></ws-widget-svg-to-pdf> -->\r\n <a mat-button (click)=\"shareCert()\" class=\"ws-mat-accent-border-active mat-accent btn-custom\">\r\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">share</mat-icon>\r\n Share\r\n </a>\r\n <a mat-button [matMenuTriggerFor]=\"menu\" class=\"ws-mat-accent-border-active mat-accent btn-custom\" (click)=\"raiseIntreactTelemetry()\">\r\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">cloud_download</mat-icon>\r\n {{'certificatedialog.download' | translate}}\r\n </a>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item (click)='downloadCertPdf()'>\r\n <mat-icon>picture_as_pdf</mat-icon>\r\n <span>{{'certificatedialog.pdf' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)='downloadCertPng()'>\r\n <mat-icon>photo</mat-icon>\r\n <span>{{'certificatedialog.png' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)='downloadCert()'>\r\n <mat-icon>photo_size_select_actual</mat-icon>\r\n <span>{{'certificatedialog.svg' | translate}}</span>\r\n </button>\r\n </mat-menu>\r\n </mat-card-actions>\r\n</mat-card>\r\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" }] }); }
109
- }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CertificateDialogComponent, decorators: [{
111
- type: Component,
112
- args: [{ selector: 'ws-widget-certificate-dialog', host: { class: 'certificate-inner-dialog-panel' }, template: "<mat-card class=\"no-shadow certificate-img-box\">\r\n <button mat-icon-button class=\"close-button\" [mat-dialog-close]=\"true\">\r\n <mat-icon class=\"close-icon\" color=\"warn\">close</mat-icon>\r\n </button>\r\n <!-- <mat-card-title>\r\n\r\n </mat-card-title> -->\r\n <mat-card-content class=\"certificate-img-content\">\r\n <img #certificate [src]=\"url| pipeSafeSanitizer: 'url'\" alt=\"Certificate\" role=\"image\" class=\"certificate-banner-image\">\r\n </mat-card-content>\r\n <mat-card-actions class=\"flex flex-row-reverse gap-4\">\r\n <!-- <ws-widget-svg-to-pdf></ws-widget-svg-to-pdf> -->\r\n <a mat-button (click)=\"shareCert()\" class=\"ws-mat-accent-border-active mat-accent btn-custom\">\r\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">share</mat-icon>\r\n Share\r\n </a>\r\n <a mat-button [matMenuTriggerFor]=\"menu\" class=\"ws-mat-accent-border-active mat-accent btn-custom\" (click)=\"raiseIntreactTelemetry()\">\r\n <mat-icon class=\"mat-icon material-icons-outlined download_icon margin-right-xs\">cloud_download</mat-icon>\r\n {{'certificatedialog.download' | translate}}\r\n </a>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item (click)='downloadCertPdf()'>\r\n <mat-icon>picture_as_pdf</mat-icon>\r\n <span>{{'certificatedialog.pdf' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)='downloadCertPng()'>\r\n <mat-icon>photo</mat-icon>\r\n <span>{{'certificatedialog.png' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)='downloadCert()'>\r\n <mat-icon>photo_size_select_actual</mat-icon>\r\n <span>{{'certificatedialog.svg' | translate}}</span>\r\n </button>\r\n </mat-menu>\r\n </mat-card-actions>\r\n</mat-card>\r\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
- }], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.MatLegacyDialogRef }, { type: undefined, decorators: [{
114
- type: Inject,
115
- args: [MAT_DIALOG_DATA]
116
- }] }, { type: undefined, decorators: [{
117
- type: Inject,
118
- args: ['environment']
119
- }] }]; } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NlcnRpZmljYXRlLWRpYWxvZy9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY2VydGlmaWNhdGUtZGlhbG9nL2NlcnRpZmljYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUN6RCxPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQy9ILE9BQU8sRUFBZ0IsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDN0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQTs7Ozs7Ozs7O0FBVTdCLE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFDVSxNQUFvQixFQUNyQixTQUFtRCxFQUMxQixJQUFTLEVBQ1YsV0FBZ0I7UUFIdkMsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUMxQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ1YsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFMakQsV0FBTSxHQUFHLEVBQUUsQ0FBQTtJQVFYLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQTtRQUN4QiwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyx1REFBdUQsSUFBSSxDQUFDLFdB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QUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFO1lBQzFELE9BQU8sRUFBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUMvQixFQUNEO1lBQ0UsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNwQixJQUFJLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFdBQVc7U0FDaEQsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLE1BQWU7UUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDaEM7WUFDRSxJQUFJLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7WUFDdEMsRUFBRSxFQUFFLHNCQUFzQjtZQUMxQixPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDOUIsRUFDRDtZQUNFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDcEIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXO1NBQ2hELENBQ0YsQ0FBQTtJQUNILENBQUM7K0dBOUdVLDBCQUEwQixnRkFNM0IsZUFBZSxhQUNmLGFBQWE7bUdBUFosMEJBQTBCLGdJQ2J2QyxvK0RBb0NBOzs0RkR2QmEsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUNFLDhCQUE4QixRQUlqQyxFQUFFLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRTs7MEJBUy9DLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmLCBNQVRfTEVHQUNZX0RJQUxPR19EQVRBIGFzIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnXHJcbmltcG9ydCB7IEV2ZW50U2VydmljZSwgV3NFdmVudHMgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcclxuaW1wb3J0IHsganNQREYgfSBmcm9tICdqc3BkZidcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd3Mtd2lkZ2V0LWNlcnRpZmljYXRlLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NlcnRpZmljYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2VydGlmaWNhdGUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgIC8qIHRzbGludDpkaXNhYmxlICovXHJcbiAgIGhvc3Q6IHsgY2xhc3M6ICdjZXJ0aWZpY2F0ZS1pbm5lci1kaWFsb2ctcGFuZWwnIH0sXHJcbiAgIC8qIHRzbGludDplbmFibGUgKi9cclxufSlcclxuZXhwb3J0IGNsYXNzIENlcnRpZmljYXRlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICB1cmwhOiBzdHJpbmdcclxuICBuYXZVcmwgPSAnJ1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBldmVudHM6IEV2ZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XHJcbiAgKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnVybCA9IHRoaXMuZGF0YS5jZXRcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuICAgIHRoaXMubmF2VXJsID0gYGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9zaGFyaW5nL3NoYXJlLW9mZnNpdGUvP3VybD0ke3RoaXMuZW52aXJvbm1lbnQuY29udGVudEhvc3R9L2FwaXMvcHVibGljL3Y4L2NlcnQvZG93bmxvYWQvJHt0aGlzLmRhdGEuY2VydElkfWBcclxuICB9XHJcblxyXG4gIGRvd25sb2FkQ2VydCgpIHtcclxuICAgIHRoaXMucmFpc2VJbnRyZWFjdFRlbGVtZXRyeSgnc3ZnJylcclxuICAgIGNvbnN0IGE6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxyXG4gICAgYS5ocmVmID0gdGhpcy5kYXRhLmNldFxyXG4gICAgYS5kb3dubG9hZCA9ICdDZXJ0aWZpY2F0ZSdcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSlcclxuICAgIGEuc3R5bGUgPSAnZGlzcGxheTogbm9uZSdcclxuICAgIGEuY2xpY2soKVxyXG4gICAgYS5yZW1vdmUoKVxyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRDZXJ0UG5nKCkge1xyXG4gICAgdGhpcy5yYWlzZUludHJlYWN0VGVsZW1ldHJ5KCdwbmcnKVxyXG4gICAgY29uc3QgdXJpRGF0YSA9IHRoaXMuZGF0YS5jZXRcclxuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpXHJcbiAgICBpbWcuc3JjID0gdXJpRGF0YVxyXG4gICAgaW1nLndpZHRoID0gMTgyMFxyXG4gICAgaW1nLmhlaWdodCA9IDEwMDBcclxuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgICBbY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0XSA9IFtpbWcud2lkdGgsIGltZy5oZWlnaHRdXHJcbiAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXHJcbiAgICAgIGlmIChjdHgpIHtcclxuICAgICAgICAvLyBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gdHJ1ZVxyXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBpbWcud2lkdGgsIGltZy5oZWlnaHQpXHJcbiAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxyXG4gICAgICAgIGNvbnN0IHF1YWxpdHkgPSAxLjAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC9pbWFnZVNtb290aGluZ1F1YWxpdHlcclxuICAgICAgICBhLmhyZWYgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnLCBxdWFsaXR5KVxyXG4gICAgICAgIGEuZG93bmxvYWQgPSAnQ2VydGlmaWNhdGUnXHJcbiAgICAgICAgYS5hcHBlbmQoY2FudmFzKVxyXG4gICAgICAgIGEuY2xpY2soKVxyXG4gICAgICAgIGEucmVtb3ZlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBhc3luYyBkb3dubG9hZENlcnRQZGYoKSB7XHJcbiAgICB0aGlzLnJhaXNlSW50cmVhY3RUZWxlbWV0cnkoJ3BkZicpXHJcbiAgICBjb25zdCB1cmlEYXRhID0gdGhpcy5kYXRhLmNldFxyXG4gICAgY29uc3QgaW1nID0gbmV3IEltYWdlKClcclxuICAgIGltZy5zcmMgPSB1cmlEYXRhXHJcbiAgICBpbWcud2lkdGggPSAxODIwXHJcbiAgICBpbWcuaGVpZ2h0ID0gMTAwMFxyXG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICAgIFtjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHRdID0gW2ltZy53aWR0aCwgaW1nLmhlaWdodF1cclxuICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuICAgICAgaWYgKGN0eCkge1xyXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBpbWcud2lkdGgsIGltZy5oZWlnaHQpXHJcbiAgICAgICAgY29uc3QgcXVhbGl0eSA9IDEuMCAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEL2ltYWdlU21vb3RoaW5nUXVhbGl0eVxyXG4gICAgICAgIGNvbnN0IGRhdGFJbWcgPSBjYW52YXMudG9EYXRhVVJMKCdhcHBsaWNhdGlvbi9wZGYnLCBxdWFsaXR5KVxyXG4gICAgICAgIGNvbnN0IHBkZiA9IG5ldyBqc1BERignbGFuZHNjYXBlJywgJ3B4JywgJ2E0JylcclxuXHJcbiAgICAgICAgLy8gYWRkIHRoZSBpbWFnZSB0byB0aGUgUERGXHJcbiAgICAgICAgcGRmLmFkZEltYWdlKGRhdGFJbWcsIDEwLCAyMCwgNjAwLCAzNTApXHJcblxyXG4gICAgICAgIC8vIGRvd25sb2FkIHRoZSBQREZcclxuICAgICAgICBwZGYuc2F2ZSgnQ2VydGlmaWNhdGUucGRmJylcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hhcmVDZXJ0KCkge1xyXG4gICAgdGhpcy5yYWlzZVNoYXJlSW50cmVhY3RUZWxlbWV0cnkoJ3NoYXJlJylcclxuICAgIHJldHVybiB3aW5kb3cub3Blbih0aGlzLm5hdlVybCwgJ19ibGFuaycpXHJcbiAgfVxyXG5cclxuICByYWlzZVNoYXJlSW50cmVhY3RUZWxlbWV0cnkodHlwZT86IHN0cmluZywgYWN0aW9uPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmV2ZW50cy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogV3NFdmVudHMuRW51bUludGVyYWN0VHlwZXMuQ0xJQ0ssXHJcbiAgICAgICAgaWQ6IGAke3R5cGV9LSR7V3NFdmVudHMuRW51bUludGVyYWN0U3ViVHlwZXMuQ0VSVElGSUNBVEV9YCxcclxuICAgICAgICBzdWJUeXBlOiAgYWN0aW9uID8gYWN0aW9uIDogJycsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogdGhpcy5kYXRhLmNlcnRJZCwgICAvLyBpZCBvZiB0aGUgY2VydGlmaWNhdGVcclxuICAgICAgICB0eXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RTdWJUeXBlcy5DRVJUSUZJQ0FURSxcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcmFpc2VJbnRyZWFjdFRlbGVtZXRyeShhY3Rpb24/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZXZlbnRzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RUeXBlcy5DTElDSyxcclxuICAgICAgICBpZDogJ2Rvd25sb2FkLWNlcnRpZmljYXRlJyxcclxuICAgICAgICBzdWJUeXBlOiBhY3Rpb24gPyBhY3Rpb24gOiAnJyxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiB0aGlzLmRhdGEuY2VydElkLCAgIC8vIGlkIG9mIHRoZSBjZXJ0aWZpY2F0ZVxyXG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFN1YlR5cGVzLkNFUlRJRklDQVRFLFxyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJuby1zaGFkb3cgY2VydGlmaWNhdGUtaW1nLWJveFwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIiBbbWF0LWRpYWxvZy1jbG9zZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2xvc2UtaWNvblwiIGNvbG9yPVwid2FyblwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPCEtLSA8bWF0LWNhcmQtdGl0bGU+XHJcblxyXG4gICAgPC9tYXQtY2FyZC10aXRsZT4gLS0+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImNlcnRpZmljYXRlLWltZy1jb250ZW50XCI+XHJcbiAgICAgICAgPGltZyAjY2VydGlmaWNhdGUgW3NyY109XCJ1cmx8IHBpcGVTYWZlU2FuaXRpemVyOiAndXJsJ1wiIGFsdD1cIkNlcnRpZmljYXRlXCIgcm9sZT1cImltYWdlXCIgY2xhc3M9XCJjZXJ0aWZpY2F0ZS1iYW5uZXItaW1hZ2VcIj5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICAgIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwiZmxleCBmbGV4LXJvdy1yZXZlcnNlIGdhcC00XCI+XHJcbiAgICAgICAgPCEtLSA8d3Mtd2lkZ2V0LXN2Zy10by1wZGY+PC93cy13aWRnZXQtc3ZnLXRvLXBkZj4gLS0+XHJcbiAgICAgICAgPGEgbWF0LWJ1dHRvbiAoY2xpY2spPVwic2hhcmVDZXJ0KClcIiBjbGFzcz1cIndzLW1hdC1hY2NlbnQtYm9yZGVyLWFjdGl2ZSBtYXQtYWNjZW50IGJ0bi1jdXN0b21cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24gbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgZG93bmxvYWRfaWNvbiBtYXJnaW4tcmlnaHQteHNcIj5zaGFyZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIFNoYXJlXHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDxhIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cIndzLW1hdC1hY2NlbnQtYm9yZGVyLWFjdGl2ZSBtYXQtYWNjZW50IGJ0bi1jdXN0b21cIiAoY2xpY2spPVwicmFpc2VJbnRyZWFjdFRlbGVtZXRyeSgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uIG1hdGVyaWFsLWljb25zLW91dGxpbmVkIGRvd25sb2FkX2ljb24gbWFyZ2luLXJpZ2h0LXhzXCI+Y2xvdWRfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICB7eydjZXJ0aWZpY2F0ZWRpYWxvZy5kb3dubG9hZCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdkb3dubG9hZENlcnRQZGYoKSc+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cGljdHVyZV9hc19wZGY8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3snY2VydGlmaWNhdGVkaWFsb2cucGRmJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J2Rvd25sb2FkQ2VydFBuZygpJz5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5waG90bzwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eydjZXJ0aWZpY2F0ZWRpYWxvZy5wbmcnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT0nZG93bmxvYWRDZXJ0KCknPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnBob3RvX3NpemVfc2VsZWN0X2FjdHVhbDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eydjZXJ0aWZpY2F0ZWRpYWxvZy5zdmcnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbjwvbWF0LWNhcmQ+XHJcbiJdfQ==
1
+ import { Component, Inject } from '@angular/core';
2
+ import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
3
+ import { WsEvents } from '@sunbird-cb/utils-v2';
4
+ import { jsPDF } from 'jspdf';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@sunbird-cb/utils-v2";
7
+ import * as i2 from "@angular/material/legacy-dialog";
8
+ import * as i3 from "@angular/common";
9
+ import * as i4 from "@angular/material/legacy-button";
10
+ import * as i5 from "@angular/material/legacy-card";
11
+ import * as i6 from "@angular/material/divider";
12
+ import * as i7 from "@angular/material/icon";
13
+ import * as i8 from "@angular/material/legacy-menu";
14
+ import * as i9 from "@ngx-translate/core";
15
+ export class CertificateDialogComponent {
16
+ constructor(events, dialogRef, data, environment, domainConfService) {
17
+ this.events = events;
18
+ this.dialogRef = dialogRef;
19
+ this.data = data;
20
+ this.environment = environment;
21
+ this.domainConfService = domainConfService;
22
+ this.navUrl = '';
23
+ }
24
+ ngOnInit() {
25
+ this.url = this.data.cet;
26
+ // Determine the certificate URL based on whether it's an achievement/milestone certificate
27
+ const certDownloadUrl = this.data?.isAchievement
28
+ ? `${this.environment.contentHost}/apis/public/v8/milestone/cert/download/${this.data.certId}`
29
+ : `${this.environment.contentHost}/apis/public/v8/cert/download/${this.data.certId}`;
30
+ // tslint:disable-next-line:max-line-length
31
+ this.navUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(certDownloadUrl)}`;
32
+ }
33
+ downloadCert() {
34
+ this.raiseIntreactTelemetry('svg');
35
+ const a = document.createElement('a');
36
+ a.href = this.data.cet;
37
+ a.download = 'Certificate';
38
+ document.body.appendChild(a);
39
+ a.style = 'display: none';
40
+ a.click();
41
+ a.remove();
42
+ }
43
+ downloadCertPng() {
44
+ this.raiseIntreactTelemetry('png');
45
+ const uriData = this.data.cet;
46
+ const img = new Image();
47
+ img.src = uriData;
48
+ img.width = 1820;
49
+ img.height = 1000;
50
+ img.onload = () => {
51
+ const canvas = document.createElement('canvas');
52
+ [canvas.width, canvas.height] = [img.width, img.height];
53
+ const ctx = canvas.getContext('2d');
54
+ if (ctx) {
55
+ // ctx.imageSmoothingEnabled = true
56
+ ctx.drawImage(img, 0, 0, img.width, img.height);
57
+ const a = document.createElement('a');
58
+ const quality = 1.0; // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality
59
+ a.href = canvas.toDataURL('image/png', quality);
60
+ a.download = 'Certificate';
61
+ a.append(canvas);
62
+ a.click();
63
+ a.remove();
64
+ }
65
+ };
66
+ }
67
+ async downloadCertPdf() {
68
+ this.raiseIntreactTelemetry('pdf');
69
+ const uriData = this.data.cet;
70
+ const img = new Image();
71
+ img.src = uriData;
72
+ img.width = 1820;
73
+ img.height = 1000;
74
+ img.onload = () => {
75
+ const canvas = document.createElement('canvas');
76
+ [canvas.width, canvas.height] = [img.width, img.height];
77
+ const ctx = canvas.getContext('2d');
78
+ if (ctx) {
79
+ ctx.drawImage(img, 0, 0, img.width, img.height);
80
+ const quality = 1.0; // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality
81
+ const dataImg = canvas.toDataURL('application/pdf', quality);
82
+ const pdf = new jsPDF('landscape', 'px', 'a4');
83
+ // add the image to the PDF
84
+ pdf.addImage(dataImg, 10, 20, 600, 350);
85
+ // download the PDF
86
+ pdf.save('Certificate.pdf');
87
+ }
88
+ };
89
+ }
90
+ getCertificateUrl() {
91
+ return this.data?.isAchievement
92
+ ? `${this.environment.contentHost}/apis/public/v8/milestone/cert/download/${this.data.certId}`
93
+ : `${this.environment.contentHost}/apis/public/v8/cert/download/${this.data.certId}`;
94
+ }
95
+ shareCert() {
96
+ this.raiseShareIntreactTelemetry('share');
97
+ return window.open(this.navUrl, '_blank');
98
+ }
99
+ shareOnLinkedIn() {
100
+ this.raiseShareIntreactTelemetry('share', 'linkedin');
101
+ const certDownloadUrl = this.getCertificateUrl();
102
+ // LinkedIn's current sharing endpoint
103
+ // Note: LinkedIn requires the URL to be publicly accessible
104
+ const linkedInUrl = `https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(certDownloadUrl)}`;
105
+ // Open LinkedIn share dialog
106
+ const popup = window.open(linkedInUrl, '_blank', 'width=600,height=600,toolbar=0,menubar=0,location=0,status=1,scrollbars=1,resizable=1');
107
+ // Check if popup was blocked
108
+ if (!popup || popup.closed || typeof popup.closed === 'undefined') {
109
+ // Fallback: try opening in same tab
110
+ window.open(linkedInUrl, '_blank');
111
+ }
112
+ }
113
+ shareOnFacebook() {
114
+ this.raiseShareIntreactTelemetry('share', 'facebook');
115
+ const certDownloadUrl = this.getCertificateUrl();
116
+ const facebookUrl = `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(certDownloadUrl)}`;
117
+ window.open(facebookUrl, '_blank', 'width=600,height=600');
118
+ }
119
+ shareOnTwitter() {
120
+ this.raiseShareIntreactTelemetry('share', 'twitter');
121
+ const certDownloadUrl = this.getCertificateUrl();
122
+ const text = this.data?.isAchievement
123
+ ? 'I have achieved a milestone! Check out my certificate.'
124
+ : 'I have completed a course! Check out my certificate.';
125
+ const twitterUrl = `https://twitter.com/intent/tweet?url=${encodeURIComponent(certDownloadUrl)}&text=${encodeURIComponent(text)}`;
126
+ window.open(twitterUrl, '_blank', 'width=600,height=600');
127
+ }
128
+ shareOnWhatsApp() {
129
+ this.raiseShareIntreactTelemetry('share', 'whatsapp');
130
+ const certDownloadUrl = this.getCertificateUrl();
131
+ const text = this.data?.isAchievement
132
+ ? 'I have achieved a milestone! Check out my certificate: '
133
+ : `I have completed a course! Check out my certificate: `;
134
+ const whatsappUrl = `https://api.whatsapp.com/send?text=${encodeURIComponent(text + certDownloadUrl)}`;
135
+ window.open(whatsappUrl, '_blank');
136
+ }
137
+ shareViaEmail() {
138
+ this.raiseShareIntreactTelemetry('share', 'email');
139
+ const certDownloadUrl = this.getCertificateUrl();
140
+ const subject = this.data?.isAchievement
141
+ ? 'Milestone Achievement Certificate'
142
+ : 'Course Completion Certificate';
143
+ const body = this.data?.isAchievement
144
+ ? `I have achieved a milestone! You can view my certificate here: ${certDownloadUrl}`
145
+ : `I have completed a course! You can view my certificate here: ${certDownloadUrl}`;
146
+ const mailtoUrl = `mailto:?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
147
+ window.location.href = mailtoUrl;
148
+ }
149
+ copyCertificateLink() {
150
+ this.raiseShareIntreactTelemetry('share', 'copy');
151
+ const certDownloadUrl = this.getCertificateUrl();
152
+ if (navigator.clipboard && navigator.clipboard.writeText) {
153
+ navigator.clipboard.writeText(certDownloadUrl).then(() => {
154
+ console.log('Certificate link copied to clipboard');
155
+ // You can add a snackbar notification here if needed
156
+ }).catch(err => {
157
+ console.error('Failed to copy certificate link:', err);
158
+ this.fallbackCopyTextToClipboard(certDownloadUrl);
159
+ });
160
+ }
161
+ else {
162
+ this.fallbackCopyTextToClipboard(certDownloadUrl);
163
+ }
164
+ }
165
+ fallbackCopyTextToClipboard(text) {
166
+ const textArea = document.createElement('textarea');
167
+ textArea.value = text;
168
+ textArea.style.position = 'fixed';
169
+ textArea.style.top = '0';
170
+ textArea.style.left = '0';
171
+ textArea.style.width = '2em';
172
+ textArea.style.height = '2em';
173
+ textArea.style.padding = '0';
174
+ textArea.style.border = 'none';
175
+ textArea.style.outline = 'none';
176
+ textArea.style.boxShadow = 'none';
177
+ textArea.style.background = 'transparent';
178
+ document.body.appendChild(textArea);
179
+ textArea.focus();
180
+ textArea.select();
181
+ try {
182
+ document.execCommand('copy');
183
+ console.log('Certificate link copied to clipboard (fallback)');
184
+ }
185
+ catch (err) {
186
+ console.error('Fallback: Failed to copy', err);
187
+ }
188
+ document.body.removeChild(textArea);
189
+ }
190
+ raiseShareIntreactTelemetry(type, action) {
191
+ this.events.raiseInteractTelemetry({
192
+ type: WsEvents.EnumInteractTypes.CLICK,
193
+ id: `${type}-${WsEvents.EnumInteractSubTypes.CERTIFICATE}`,
194
+ subType: action ? action : '',
195
+ }, {
196
+ id: this.data.certId,
197
+ type: WsEvents.EnumInteractSubTypes.CERTIFICATE,
198
+ });
199
+ }
200
+ raiseIntreactTelemetry(action) {
201
+ this.events.raiseInteractTelemetry({
202
+ type: WsEvents.EnumInteractTypes.CLICK,
203
+ id: 'download-certificate',
204
+ subType: action ? action : '',
205
+ }, {
206
+ id: this.data.certId,
207
+ type: WsEvents.EnumInteractSubTypes.CERTIFICATE,
208
+ });
209
+ }
210
+ 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' }, { token: i1.DomainConfService }], target: i0.ɵɵFactoryTarget.Component }); }
211
+ 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 *ngIf=\"(domainConfService?.isFeatureByPageEnabled('toc','shareToc'))\" 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}.certificate-img-box{max-height:35rem;overflow-y:auto;overflow-x:hidden;padding:30px}.close-button{position:absolute!important;top:0!important;right:0!important}}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.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: i4.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: i5.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i5.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i5.MatLegacyCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.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: i8.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatLegacyMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i1.PipeSafeSanitizerPipe, name: "pipeSafeSanitizer" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
212
+ }
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CertificateDialogComponent, decorators: [{
214
+ type: Component,
215
+ 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 *ngIf=\"(domainConfService?.isFeatureByPageEnabled('toc','shareToc'))\" 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}.certificate-img-box{max-height:35rem;overflow-y:auto;overflow-x:hidden;padding:30px}.close-button{position:absolute!important;top:0!important;right:0!important}}\n"] }]
216
+ }], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.MatLegacyDialogRef }, { type: undefined, decorators: [{
217
+ type: Inject,
218
+ args: [MAT_DIALOG_DATA]
219
+ }] }, { type: undefined, decorators: [{
220
+ type: Inject,
221
+ args: ['environment']
222
+ }] }, { type: i1.DomainConfService }]; } });
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL2NlcnRpZmljYXRlLWRpYWxvZy9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY2VydGlmaWNhdGUtZGlhbG9nL2NlcnRpZmljYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUN6RCxPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQy9ILE9BQU8sRUFBbUMsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDaEYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQTs7Ozs7Ozs7Ozs7QUFVN0IsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxZQUNVLE1BQW9CLEVBQ3JCLFNBQW1ELEVBQzFCLElBQVMsRUFDVixXQUFnQixFQUN4QyxpQkFBb0M7UUFKbkMsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUMxQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ1YsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQU43QyxXQUFNLEdBQUcsRUFBRSxDQUFBO0lBU1gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBO1FBRXhCLDJGQUEy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QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmLCBNQVRfTEVHQUNZX0RJQUxPR19EQVRBIGFzIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnXG5pbXBvcnQgeyBEb21haW5Db25mU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBXc0V2ZW50cyB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsganNQREYgfSBmcm9tICdqc3BkZidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3Mtd2lkZ2V0LWNlcnRpZmljYXRlLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICBob3N0OiB7IGNsYXNzOiAnY2VydGlmaWNhdGUtaW5uZXItZGlhbG9nLXBhbmVsJyB9LFxuICAgLyogdHNsaW50OmVuYWJsZSAqL1xufSlcbmV4cG9ydCBjbGFzcyBDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHVybCE6IHN0cmluZ1xuICBuYXZVcmwgPSAnJ1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGV2ZW50czogRXZlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnksXG4gICAgcHVibGljIGRvbWFpbkNvbmZTZXJ2aWNlOiBEb21haW5Db25mU2VydmljZVxuICApIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cmwgPSB0aGlzLmRhdGEuY2V0XG4gICAgXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBjZXJ0aWZpY2F0ZSBVUkwgYmFzZWQgb24gd2hldGhlciBpdCdzIGFuIGFjaGlldmVtZW50L21pbGVzdG9uZSBjZXJ0aWZpY2F0ZVxuICAgIGNvbnN0IGNlcnREb3dubG9hZFVybCA9IHRoaXMuZGF0YT8uaXNBY2hpZXZlbWVudCBcbiAgICAgID8gYCR7dGhpcy5lbnZpcm9ubWVudC5jb250ZW50SG9zdH0vYXBpcy9wdWJsaWMvdjgvbWlsZXN0b25lL2NlcnQvZG93bmxvYWQvJHt0aGlzLmRhdGEuY2VydElkfWBcbiAgICAgIDogYCR7dGhpcy5lbnZpcm9ubWVudC5jb250ZW50SG9zdH0vYXBpcy9wdWJsaWMvdjgvY2VydC9kb3dubG9hZC8ke3RoaXMuZGF0YS5jZXJ0SWR9YFxuICAgIFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICB0aGlzLm5hdlVybCA9IGBodHRwczovL3d3dy5saW5rZWRpbi5jb20vc2hhcmluZy9zaGFyZS1vZmZzaXRlLz91cmw9JHtlbmNvZGVVUklDb21wb25lbnQoY2VydERvd25sb2FkVXJsKX1gXG4gIH1cblxuICBkb3dubG9hZENlcnQoKSB7XG4gICAgdGhpcy5yYWlzZUludHJlYWN0VGVsZW1ldHJ5KCdzdmcnKVxuICAgIGNvbnN0IGE6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgIGEuaHJlZiA9IHRoaXMuZGF0YS5jZXRcbiAgICBhLmRvd25sb2FkID0gJ0NlcnRpZmljYXRlJ1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSlcbiAgICBhLnN0eWxlID0gJ2Rpc3BsYXk6IG5vbmUnXG4gICAgYS5jbGljaygpXG4gICAgYS5yZW1vdmUoKVxuICB9XG5cbiAgZG93bmxvYWRDZXJ0UG5nKCkge1xuICAgIHRoaXMucmFpc2VJbnRyZWFjdFRlbGVtZXRyeSgncG5nJylcbiAgICBjb25zdCB1cmlEYXRhID0gdGhpcy5kYXRhLmNldFxuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpXG4gICAgaW1nLnNyYyA9IHVyaURhdGFcbiAgICBpbWcud2lkdGggPSAxODIwXG4gICAgaW1nLmhlaWdodCA9IDEwMDBcbiAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICBbY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0XSA9IFtpbWcud2lkdGgsIGltZy5oZWlnaHRdXG4gICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxuICAgICAgaWYgKGN0eCkge1xuICAgICAgICAvLyBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gdHJ1ZVxuICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgaW1nLndpZHRoLCBpbWcuaGVpZ2h0KVxuICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICAgIGNvbnN0IHF1YWxpdHkgPSAxLjAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC9pbWFnZVNtb290aGluZ1F1YWxpdHlcbiAgICAgICAgYS5ocmVmID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJywgcXVhbGl0eSlcbiAgICAgICAgYS5kb3dubG9hZCA9ICdDZXJ0aWZpY2F0ZSdcbiAgICAgICAgYS5hcHBlbmQoY2FudmFzKVxuICAgICAgICBhLmNsaWNrKClcbiAgICAgICAgYS5yZW1vdmUoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBhc3luYyBkb3dubG9hZENlcnRQZGYoKSB7XG4gICAgdGhpcy5yYWlzZUludHJlYWN0VGVsZW1ldHJ5KCdwZGYnKVxuICAgIGNvbnN0IHVyaURhdGEgPSB0aGlzLmRhdGEuY2V0XG4gICAgY29uc3QgaW1nID0gbmV3IEltYWdlKClcbiAgICBpbWcuc3JjID0gdXJpRGF0YVxuICAgIGltZy53aWR0aCA9IDE4MjBcbiAgICBpbWcuaGVpZ2h0ID0gMTAwMFxuICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIFtjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHRdID0gW2ltZy53aWR0aCwgaW1nLmhlaWdodF1cbiAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXG4gICAgICBpZiAoY3R4KSB7XG4gICAgICAgIGN0eC5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBpbWcud2lkdGgsIGltZy5oZWlnaHQpXG4gICAgICAgIGNvbnN0IHF1YWxpdHkgPSAxLjAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC9pbWFnZVNtb290aGluZ1F1YWxpdHlcbiAgICAgICAgY29uc3QgZGF0YUltZyA9IGNhbnZhcy50b0RhdGFVUkwoJ2FwcGxpY2F0aW9uL3BkZicsIHF1YWxpdHkpXG4gICAgICAgIGNvbnN0IHBkZiA9IG5ldyBqc1BERignbGFuZHNjYXBlJywgJ3B4JywgJ2E0JylcblxuICAgICAgICAvLyBhZGQgdGhlIGltYWdlIHRvIHRoZSBQREZcbiAgICAgICAgcGRmLmFkZEltYWdlKGRhdGFJbWcsIDEwLCAyMCwgNjAwLCAzNTApXG5cbiAgICAgICAgLy8gZG93bmxvYWQgdGhlIFBERlxuICAgICAgICBwZGYuc2F2ZSgnQ2VydGlmaWNhdGUucGRmJylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRDZXJ0aWZpY2F0ZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGE/LmlzQWNoaWV2ZW1lbnQgXG4gICAgICA/IGAke3RoaXMuZW52aXJvbm1lbnQuY29udGVudEhvc3R9L2FwaXMvcHVibGljL3Y4L21pbGVzdG9uZS9jZXJ0L2Rvd25sb2FkLyR7dGhpcy5kYXRhLmNlcnRJZH1gXG4gICAgICA6IGAke3RoaXMuZW52aXJvbm1lbnQuY29udGVudEhvc3R9L2FwaXMvcHVibGljL3Y4L2NlcnQvZG93bmxvYWQvJHt0aGlzLmRhdGEuY2VydElkfWBcbiAgfVxuXG4gIHNoYXJlQ2VydCgpIHtcbiAgICB0aGlzLnJhaXNlU2hhcmVJbnRyZWFjdFRlbGVtZXRyeSgnc2hhcmUnKVxuICAgIHJldHVybiB3aW5kb3cub3Blbih0aGlzLm5hdlVybCwgJ19ibGFuaycpXG4gIH1cblxuICBzaGFyZU9uTGlua2VkSW4oKSB7XG4gICAgdGhpcy5yYWlzZVNoYXJlSW50cmVhY3RUZWxlbWV0cnkoJ3NoYXJlJywgJ2xpbmtlZGluJylcbiAgICBjb25zdCBjZXJ0RG93bmxvYWRVcmwgPSB0aGlzLmdldENlcnRpZmljYXRlVXJsKClcbiAgICBcbiAgICBcbiAgICAvLyBMaW5rZWRJbidzIGN1cnJlbnQgc2hhcmluZyBlbmRwb2ludFxuICAgIC8vIE5vdGU6IExpbmtlZEluIHJlcXVpcmVzIHRoZSBVUkwgdG8gYmUgcHVibGljbHkgYWNjZXNzaWJsZVxuICAgIGNvbnN0IGxpbmtlZEluVXJsID0gYGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9zaGFyaW5nL3NoYXJlLW9mZnNpdGUvP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudChjZXJ0RG93bmxvYWRVcmwpfWBcbiAgICBcbiAgICBcbiAgICAvLyBPcGVuIExpbmtlZEluIHNoYXJlIGRpYWxvZ1xuICAgIGNvbnN0IHBvcHVwID0gd2luZG93Lm9wZW4obGlua2VkSW5VcmwsICdfYmxhbmsnLCAnd2lkdGg9NjAwLGhlaWdodD02MDAsdG9vbGJhcj0wLG1lbnViYXI9MCxsb2NhdGlvbj0wLHN0YXR1cz0xLHNjcm9sbGJhcnM9MSxyZXNpemFibGU9MScpXG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgcG9wdXAgd2FzIGJsb2NrZWRcbiAgICBpZiAoIXBvcHVwIHx8IHBvcHVwLmNsb3NlZCB8fCB0eXBlb2YgcG9wdXAuY2xvc2VkID09PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gRmFsbGJhY2s6IHRyeSBvcGVuaW5nIGluIHNhbWUgdGFiXG4gICAgICB3aW5kb3cub3BlbihsaW5rZWRJblVybCwgJ19ibGFuaycpXG4gICAgfVxuICB9XG5cbiAgc2hhcmVPbkZhY2Vib29rKCkge1xuICAgIHRoaXMucmFpc2VTaGFyZUludHJlYWN0VGVsZW1ldHJ5KCdzaGFyZScsICdmYWNlYm9vaycpXG4gICAgY29uc3QgY2VydERvd25sb2FkVXJsID0gdGhpcy5nZXRDZXJ0aWZpY2F0ZVVybCgpXG4gICAgY29uc3QgZmFjZWJvb2tVcmwgPSBgaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL3NoYXJlci9zaGFyZXIucGhwP3U9JHtlbmNvZGVVUklDb21wb25lbnQoY2VydERvd25sb2FkVXJsKX1gXG4gICAgd2luZG93Lm9wZW4oZmFjZWJvb2tVcmwsICdfYmxhbmsnLCAnd2lkdGg9NjAwLGhlaWdodD02MDAnKVxuICB9XG5cbiAgc2hhcmVPblR3aXR0ZXIoKSB7XG4gICAgdGhpcy5yYWlzZVNoYXJlSW50cmVhY3RUZWxlbWV0cnkoJ3NoYXJlJywgJ3R3aXR0ZXInKVxuICAgIGNvbnN0IGNlcnREb3dubG9hZFVybCA9IHRoaXMuZ2V0Q2VydGlmaWNhdGVVcmwoKVxuICAgIGNvbnN0IHRleHQgPSB0aGlzLmRhdGE/LmlzQWNoaWV2ZW1lbnQgXG4gICAgICA/ICdJIGhhdmUgYWNoaWV2ZWQgYSBtaWxlc3RvbmUhIENoZWNrIG91dCBteSBjZXJ0aWZpY2F0ZS4nXG4gICAgICA6ICdJIGhhdmUgY29tcGxldGVkIGEgY291cnNlISBDaGVjayBvdXQgbXkgY2VydGlmaWNhdGUuJ1xuICAgIGNvbnN0IHR3aXR0ZXJVcmwgPSBgaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/dXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNlcnREb3dubG9hZFVybCl9JnRleHQ9JHtlbmNvZGVVUklDb21wb25lbnQodGV4dCl9YFxuICAgIHdpbmRvdy5vcGVuKHR3aXR0ZXJVcmwsICdfYmxhbmsnLCAnd2lkdGg9NjAwLGhlaWdodD02MDAnKVxuICB9XG5cbiAgc2hhcmVPbldoYXRzQXBwKCkge1xuICAgIHRoaXMucmFpc2VTaGFyZUludHJlYWN0VGVsZW1ldHJ5KCdzaGFyZScsICd3aGF0c2FwcCcpXG4gICAgY29uc3QgY2VydERvd25sb2FkVXJsID0gdGhpcy5nZXRDZXJ0aWZpY2F0ZVVybCgpXG4gICAgY29uc3QgdGV4dCA9IHRoaXMuZGF0YT8uaXNBY2hpZXZlbWVudCBcbiAgICAgID8gJ0kgaGF2ZSBhY2hpZXZlZCBhIG1pbGVzdG9uZSEgQ2hlY2sgb3V0IG15IGNlcnRpZmljYXRlOiAnXG4gICAgICA6IGBJIGhhdmUgY29tcGxldGVkIGEgY291cnNlISBDaGVjayBvdXQgbXkgY2VydGlmaWNhdGU6IGBcbiAgICBjb25zdCB3aGF0c2FwcFVybCA9IGBodHRwczovL2FwaS53aGF0c2FwcC5jb20vc2VuZD90ZXh0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRleHQgKyBjZXJ0RG93bmxvYWRVcmwpfWBcbiAgICB3aW5kb3cub3Blbih3aGF0c2FwcFVybCwgJ19ibGFuaycpXG4gIH1cblxuICBzaGFyZVZpYUVtYWlsKCkge1xuICAgIHRoaXMucmFpc2VTaGFyZUludHJlYWN0VGVsZW1ldHJ5KCdzaGFyZScsICdlbWFpbCcpXG4gICAgY29uc3QgY2VydERvd25sb2FkVXJsID0gdGhpcy5nZXRDZXJ0aWZpY2F0ZVVybCgpXG4gICAgY29uc3Qgc3ViamVjdCA9IHRoaXMuZGF0YT8uaXNBY2hpZXZlbWVudCBcbiAgICAgID8gJ01pbGVzdG9uZSBBY2hpZXZlbWVudCBDZXJ0aWZpY2F0ZSdcbiAgICAgIDogJ0NvdXJzZSBDb21wbGV0aW9uIENlcnRpZmljYXRlJ1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLmRhdGE/LmlzQWNoaWV2ZW1lbnQgXG4gICAgICA/IGBJIGhhdmUgYWNoaWV2ZWQgYSBtaWxlc3RvbmUhIFlvdSBjYW4gdmlldyBteSBjZXJ0aWZpY2F0ZSBoZXJlOiAke2NlcnREb3dubG9hZFVybH1gXG4gICAgICA6IGBJIGhhdmUgY29tcGxldGVkIGEgY291cnNlISBZb3UgY2FuIHZpZXcgbXkgY2VydGlmaWNhdGUgaGVyZTogJHtjZXJ0RG93bmxvYWRVcmx9YFxuICAgIGNvbnN0IG1haWx0b1VybCA9IGBtYWlsdG86P3N1YmplY3Q9JHtlbmNvZGVVUklDb21wb25lbnQoc3ViamVjdCl9JmJvZHk9JHtlbmNvZGVVUklDb21wb25lbnQoYm9keSl9YFxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbWFpbHRvVXJsXG4gIH1cblxuICBjb3B5Q2VydGlmaWNhdGVMaW5rKCkge1xuICAgIHRoaXMucmFpc2VTaGFyZUludHJlYWN0VGVsZW1ldHJ5KCdzaGFyZScsICdjb3B5JylcbiAgICBjb25zdCBjZXJ0RG93bmxvYWRVcmwgPSB0aGlzLmdldENlcnRpZmljYXRlVXJsKClcbiAgICBcbiAgICBpZiAobmF2aWdhdG9yLmNsaXBib2FyZCAmJiBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCkge1xuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY2VydERvd25sb2FkVXJsKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0NlcnRpZmljYXRlIGxpbmsgY29waWVkIHRvIGNsaXBib2FyZCcpXG4gICAgICAgIC8vIFlvdSBjYW4gYWRkIGEgc25hY2tiYXIgbm90aWZpY2F0aW9uIGhlcmUgaWYgbmVlZGVkXG4gICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gY29weSBjZXJ0aWZpY2F0ZSBsaW5rOicsIGVycilcbiAgICAgICAgdGhpcy5mYWxsYmFja0NvcHlUZXh0VG9DbGlwYm9hcmQoY2VydERvd25sb2FkVXJsKVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mYWxsYmFja0NvcHlUZXh0VG9DbGlwYm9hcmQoY2VydERvd25sb2FkVXJsKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmFsbGJhY2tDb3B5VGV4dFRvQ2xpcGJvYXJkKHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IHRleHRBcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKVxuICAgIHRleHRBcmVhLnZhbHVlID0gdGV4dFxuICAgIHRleHRBcmVhLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJ1xuICAgIHRleHRBcmVhLnN0eWxlLnRvcCA9ICcwJ1xuICAgIHRleHRBcmVhLnN0eWxlLmxlZnQgPSAnMCdcbiAgICB0ZXh0QXJlYS5zdHlsZS53aWR0aCA9ICcyZW0nXG4gICAgdGV4dEFyZWEuc3R5bGUuaGVpZ2h0ID0gJzJlbSdcbiAgICB0ZXh0QXJlYS5zdHlsZS5wYWRkaW5nID0gJzAnXG4gICAgdGV4dEFyZWEuc3R5bGUuYm9yZGVyID0gJ25vbmUnXG4gICAgdGV4dEFyZWEuc3R5bGUub3V0bGluZSA9ICdub25lJ1xuICAgIHRleHRBcmVhLnN0eWxlLmJveFNoYWRvdyA9ICdub25lJ1xuICAgIHRleHRBcmVhLnN0eWxlLmJhY2tncm91bmQgPSAndHJhbnNwYXJlbnQnXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0QXJlYSlcbiAgICB0ZXh0QXJlYS5mb2N1cygpXG4gICAgdGV4dEFyZWEuc2VsZWN0KClcbiAgICB0cnkge1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKVxuICAgICAgY29uc29sZS5sb2coJ0NlcnRpZmljYXRlIGxpbmsgY29waWVkIHRvIGNsaXBib2FyZCAoZmFsbGJhY2spJylcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhbGxiYWNrOiBGYWlsZWQgdG8gY29weScsIGVycilcbiAgICB9XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXh0QXJlYSlcbiAgfVxuXG4gIHJhaXNlU2hhcmVJbnRyZWFjdFRlbGVtZXRyeSh0eXBlPzogc3RyaW5nLCBhY3Rpb24/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmV2ZW50cy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxuICAgICAge1xuICAgICAgICB0eXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RUeXBlcy5DTElDSyxcbiAgICAgICAgaWQ6IGAke3R5cGV9LSR7V3NFdmVudHMuRW51bUludGVyYWN0U3ViVHlwZXMuQ0VSVElGSUNBVEV9YCxcbiAgICAgICAgc3ViVHlwZTogIGFjdGlvbiA/IGFjdGlvbiA6ICcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRoaXMuZGF0YS5jZXJ0SWQsICAgLy8gaWQgb2YgdGhlIGNlcnRpZmljYXRlXG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFN1YlR5cGVzLkNFUlRJRklDQVRFLFxuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIHJhaXNlSW50cmVhY3RUZWxlbWV0cnkoYWN0aW9uPzogc3RyaW5nKSB7XG4gICAgdGhpcy5ldmVudHMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeShcbiAgICAgIHtcbiAgICAgICAgdHlwZTogV3NFdmVudHMuRW51bUludGVyYWN0VHlwZXMuQ0xJQ0ssXG4gICAgICAgIGlkOiAnZG93bmxvYWQtY2VydGlmaWNhdGUnLFxuICAgICAgICBzdWJUeXBlOiBhY3Rpb24gPyBhY3Rpb24gOiAnJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiB0aGlzLmRhdGEuY2VydElkLCAgIC8vIGlkIG9mIHRoZSBjZXJ0aWZpY2F0ZVxuICAgICAgICB0eXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RTdWJUeXBlcy5DRVJUSUZJQ0FURSxcbiAgICAgIH1cbiAgICApXG4gIH1cblxufVxuIiwiPG1hdC1jYXJkIGNsYXNzPVwibm8tc2hhZG93IGNlcnRpZmljYXRlLWltZy1ib3hcIj5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY2xvc2UtaWNvblwiIGNvbG9yPVwid2FyblwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8IS0tIDxtYXQtY2FyZC10aXRsZT5cblxuICAgIDwvbWF0LWNhcmQtdGl0bGU+IC0tPlxuICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiY2VydGlmaWNhdGUtaW1nLWNvbnRlbnRcIj5cbiAgICAgICAgPGltZyAjY2VydGlmaWNhdGUgW3NyY109XCJ1cmx8IHBpcGVTYWZlU2FuaXRpemVyOiAndXJsJ1wiIGFsdD1cIkNlcnRpZmljYXRlXCIgcm9sZT1cImltYWdlXCIgY2xhc3M9XCJjZXJ0aWZpY2F0ZS1iYW5uZXItaW1hZ2VcIj5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9XCJmbGV4IGZsZXgtcm93LXJldmVyc2UgZ2FwLTRcIj5cbiAgICAgICAgPCEtLSA8d3Mtd2lkZ2V0LXN2Zy10by1wZGY+PC93cy13aWRnZXQtc3ZnLXRvLXBkZj4gLS0+XG4gICAgICAgIDxhICpuZ0lmPVwiKGRvbWFpbkNvbmZTZXJ2aWNlPy5pc0ZlYXR1cmVCeVBhZ2VFbmFibGVkKCd0b2MnLCdzaGFyZVRvYycpKVwiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInNoYXJlTWVudVwiIGNsYXNzPVwid3MtbWF0LWFjY2VudC1ib3JkZXItYWN0aXZlIG1hdC1hY2NlbnQgYnRuLWN1c3RvbVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24gbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgZG93bmxvYWRfaWNvbiBtYXJnaW4tcmlnaHQteHNcIj5zaGFyZTwvbWF0LWljb24+XG4gICAgICAgICAgICBTaGFyZVxuICAgICAgICA8L2E+XG4gICAgICAgIDxtYXQtbWVudSAjc2hhcmVNZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J3NoYXJlT25MaW5rZWRJbigpJz5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBkPVwiTTE5IDNhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTRtLS41IDE1LjV2LTUuM2EzLjI2IDMuMjYgMCAwIDAtMy4yNi0zLjI2Yy0uODUgMC0xLjg0LjUyLTIuMzIgMS4zdi0xLjExaC0yLjc5djguMzdoMi43OXYtNC45M2MwLS43Ny42Mi0xLjQgMS4zOS0xLjRhMS40IDEuNCAwIDAgMSAxLjQgMS40djQuOTNoMi43OU02Ljg4IDguNTZhMS42OCAxLjY4IDAgMCAwIDEuNjgtMS42OGMwLS45My0uNzUtMS42OS0xLjY4LTEuNjlhMS42OSAxLjY5IDAgMCAwLTEuNjkgMS42OWMwIC45My43NiAxLjY4IDEuNjkgMS42OG0xLjM5IDkuOTR2LTguMzdINS41djguMzdoMi43N3pcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+TGlua2VkSW48L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdzaGFyZU9uRmFjZWJvb2soKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0xMiAyLjA0QzYuNSAyLjA0IDIgNi41MyAyIDEyLjA2QzIgMTcuMDYgNS42NiAyMS4yMSAxMC40NCAyMS45NlYxNC45Nkg3LjlWMTIuMDZIMTAuNDRWOS44NUMxMC40NCA3LjM0IDExLjkzIDUuOTYgMTQuMjIgNS45NkMxNS4zMSA1Ljk2IDE2LjQ1IDYuMTUgMTYuNDUgNi4xNVY4LjYySDE1LjE5QzEzLjk1IDguNjIgMTMuNTYgOS4zOSAxMy41NiAxMC4xOFYxMi4wNkgxNi4zNEwxNS44OSAxNC45NkgxMy41NlYyMS45NkExMCAxMCAwIDAgMCAyMiAxMi4wNkMyMiA2LjUzIDE3LjUgMi4wNCAxMiAyLjA0WlwiLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5GYWNlYm9vazwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9J3NoYXJlT25Ud2l0dGVyKCknPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMjIuNDYsNkMyMS42OSw2LjM1IDIwLjg2LDYuNTggMjAsNi42OUMyMC44OCw2LjE2IDIxLjU2LDUuMzIgMjEuODgsNC4zMUMyMS4wNSw0LjgxIDIwLjEzLDUuMTYgMTkuMTYsNS4zNkMxOC4zNyw0LjUgMTcuMjYsNCAxNiw0QzEzLjY1LDQgMTEuNzMsNS45MiAxMS43Myw4LjI5QzExLjczLDguNjMgMTEuNzcsOC45NiAxMS44NCw5LjI3QzguMjgsOS4wOSA1LjExLDcuMzggMyw0Ljc5QzIuNjMsNS40MiAyLjQyLDYuMTYgMi40Miw2Ljk0QzIuNDIsOC40MyAzLjE3LDkuNzUgNC4zMywxMC41QzMuNjIsMTAuNSAyLjk2LDEwLjMgMi4zOCwxMEMyLjM4LDEwIDIuMzgsMTAgMi4zOCwxMC4wM0MyLjM4LDEyLjExIDMuODYsMTMuODUgNS44MiwxNC4yNEM1LjQ2LDE0LjM0IDUuMDgsMTQuMzkgNC42OSwxNC4zOUM0LjQyLDE0LjM5IDQuMTUsMTQuMzYgMy44OSwxNC4zMUM0LjQzLDE2IDYsMTcuMjYgNy44OSwxNy4yOUM2LjQzLDE4LjQ1IDQuNTgsMTkuMTMgMi41NiwxOS4xM0MyLjIyLDE5LjEzIDEuODgsMTkuMTEgMS41NCwxOS4wN0MzLjQ0LDIwLjI5IDUuNzAsMjEgOC4xMiwyMUMxNiwyMSAyMC4zMywxNC40NiAyMC4zMyw4Ljc5QzIwLjMzLDguNiAyMC4zMyw4LjQyIDIwLjMyLDguMjNDMjEuMTYsNy42MyAyMS44OCw2Ljg3IDIyLjQ2LDZaXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPlR3aXR0ZXI8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdzaGFyZU9uV2hhdHNBcHAoKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk0xMi4wNCAyQzYuNTggMiAyLjEzIDYuNDUgMi4xMyAxMS45MUMyLjEzIDEzLjY2IDIuNTkgMTUuMzYgMy40NSAxNi44NkwyLjA1IDIyTDcuMyAyMC42MkM4Ljc1IDIxLjQxIDEwLjM4IDIxLjgzIDEyLjA0IDIxLjgzQzE3LjUgMjEuODMgMjEuOTUgMTcuMzggMjEuOTUgMTEuOTJDMjEuOTUgOS4yNyAyMC45MiA2Ljc4IDE5LjA1IDQuOTFDMTcuMTggMy4wMyAxNC42OSAyIDEyLjA0IDJNMTIuMDUgMy42N0MxNC4yNSAzLjY3IDE2LjMxIDQuNTMgMTcuODcgNi4wOUMxOS40MiA3LjY1IDIwLjI4IDkuNzIgMjAuMjggMTEuOTJDMjAuMjggMTYuNDYgMTYuNTggMjAuMTUgMTIuMDQgMjAuMTVDMTAuNTYgMjAuMTUgOS4xMSAxOS43NiA3Ljg1IDE5TDcuNTUgMTguODNMNC40MyAxOS42NUw1LjI2IDE2LjYxTDUuMDYgMTYuMjlDNC4yNCAxNSAzLjggMTMuNDcgMy44IDExLjkxQzMuODEgNy4zNyA3LjUgMy42NyAxMi4wNSAzLjY3TTguNTMgNy4zM0M4LjM3IDcuMzMgOC4xIDcuMzkgNy44NyA3LjY0QzcuNjUgNy44OSA3IDguNSA3IDkuNzFDNyAxMC45MyA3Ljg5IDEyLjEgOCAxMi4yN0M4LjE0IDEyLjQ0IDkuNzYgMTQuOTQgMTIuMjUgMTZDMTIuODQgMTYuMjcgMTMuMyAxNi40MiAxMy42NiAxNi41M0MxNC4yNSAxNi43MiAxNC43OSAxNi42OSAxNS4yMiAxNi42M0MxNS43IDE2LjU2IDE2LjY4IDE2LjAzIDE2Ljg5IDE1LjQ1QzE3LjEgMTQuODcgMTcuMSAxNC4zOCAxNy4wNCAxNC4yN0MxNi45NyAxNC4xNyAxNi44MSAxNC4xMSAxNi41NiAxNEMxNi4zMSAxMy44NiAxNS4wOSAxMy4yNiAxNC44NyAxMy4xOEMxNC42NCAxMy4xIDE0LjUgMTMuMDYgMTQuMzEgMTMuM0MxNC4xNSAxMy41NSAxMy42NyAxNC4xMSAxMy41MyAxNC4yN0MxMy4zOCAxNC40NCAxMy4yNCAxNC40NiAxMyAxNC4zNEMxMi43NCAxNC4yMSAxMS45NCAxMy45NSAxMSAxMy4xMUMxMC4yNiAxMi40NSA5Ljc3IDExLjY0IDkuNjIgMTEuMzlDOS41IDExLjE1IDkuNjEgMTEgOS43MyAxMC44OUM5Ljg0IDEwLjc4IDEwIDEwLjYgMTAuMSAxMC40NUMxMC4yMyAxMC4zMSAxMC4yNyAxMC4yIDEwLjM1IDEwLjA0QzEwLjQzIDkuODcgMTAuMzkgOS43MyAxMC4zMyA5LjYxQzEwLjI3IDkuNSA5Ljc3IDguMjYgOS41NiA3Ljc3QzkuMzYgNy4yOSA5LjE2IDcuMzUgOSA3LjM0QzguODYgNy4zNCA4LjcgNy4zMyA4LjUzIDcuMzNaXCIvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPldoYXRzQXBwPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT0nc2hhcmVWaWFFbWFpbCgpJz5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+ZW1haWw8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPkVtYWlsPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdjb3B5Q2VydGlmaWNhdGVMaW5rKCknPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jb250ZW50X2NvcHk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPkNvcHkgTGluazwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICA8YSBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LWJvcmRlci1hY3RpdmUgbWF0LWFjY2VudCBidG4tY3VzdG9tXCIgKGNsaWNrKT1cInJhaXNlSW50cmVhY3RUZWxlbWV0cnkoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24gbWF0ZXJpYWwtaWNvbnMtb3V0bGluZWQgZG93bmxvYWRfaWNvbiBtYXJnaW4tcmlnaHQteHNcIj5jbG91ZF9kb3dubG9hZDwvbWF0LWljb24+XG4gICAgICAgICAgICB7eydjZXJ0aWZpY2F0ZWRpYWxvZy5kb3dubG9hZCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICA8L2E+XG4gICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdkb3dubG9hZENlcnRQZGYoKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnBpY3R1cmVfYXNfcGRmPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eydjZXJ0aWZpY2F0ZWRpYWxvZy5wZGYnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdkb3dubG9hZENlcnRQbmcoKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnBob3RvPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eydjZXJ0aWZpY2F0ZWRpYWxvZy5wbmcnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPSdkb3dubG9hZENlcnQoKSc+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnBob3RvX3NpemVfc2VsZWN0X2FjdHVhbDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3snY2VydGlmaWNhdGVkaWFsb2cuc3ZnJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuPC9tYXQtY2FyZD5cbiJdfQ==