@sunbird-cb/toc 0.0.9 → 0.0.10

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 (495) hide show
  1. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -55
  2. package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -126
  3. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -32
  4. package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -85
  5. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -100
  6. package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -48
  7. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -120
  8. package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -92
  9. package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -48
  10. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -25
  11. package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -41
  12. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -89
  13. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -42
  14. package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -41
  15. package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -78
  16. package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -45
  17. package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -2
  18. package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -70
  19. package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -28
  20. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -187
  21. package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -86
  22. package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -31
  23. package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -941
  24. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -183
  25. package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -327
  26. package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -297
  27. package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +261 -248
  28. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1177 -1148
  29. package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -16
  30. package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -43
  31. package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -133
  32. package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -66
  33. package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -278
  34. package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -21
  35. package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -21
  36. package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -847
  37. package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -219
  38. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -209
  39. package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -26
  40. package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -19
  41. package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -23
  42. package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -113
  43. package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -110
  44. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -26
  45. package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -19
  46. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -67
  47. package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -28
  48. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -77
  49. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -2
  50. package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -61
  51. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -20
  52. package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +67 -67
  53. package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -139
  54. package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -71
  55. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -34
  56. package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -56
  57. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -25
  58. package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -37
  59. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -32
  60. package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -30
  61. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -38
  62. package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -51
  63. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -115
  64. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -12
  65. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -51
  66. package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -61
  67. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -87
  68. package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -36
  69. package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -62
  70. package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -24
  71. package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -192
  72. package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -44
  73. package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -99
  74. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -58
  75. package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -67
  76. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -112
  77. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -2
  78. package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -69
  79. package/esm2022/lib/_collection-api.mjs +57 -57
  80. package/esm2022/lib/_constants/widget-content.constants.mjs +19 -19
  81. package/esm2022/lib/_directives/tooltip.directive.mjs +68 -68
  82. package/esm2022/lib/_models/common.model.mjs +2 -2
  83. package/esm2022/lib/_models/error.model.mjs +2 -2
  84. package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -24
  85. package/esm2022/lib/_services/rating.service.mjs +89 -89
  86. package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -29
  87. package/esm2022/lib/_services/viewer-route-util.mjs +103 -103
  88. package/esm2022/lib/_services/widget-content.model.mjs +247 -247
  89. package/esm2022/lib/_services/widget-content.service.mjs +594 -594
  90. package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -9
  91. package/esm2022/lib/app-toc-lib.module.mjs +499 -499
  92. package/esm2022/lib/collection.config.mjs +161 -161
  93. package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -37
  94. package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -1436
  95. package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -475
  96. package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -119
  97. package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -80
  98. package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -249
  99. package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -39
  100. package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -58
  101. package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -2229
  102. package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2938 -2907
  103. package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -157
  104. package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -48
  105. package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -47
  106. package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -766
  107. package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -243
  108. package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -116
  109. package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -44
  110. package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -1838
  111. package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -236
  112. package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -213
  113. package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -36
  114. package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -256
  115. package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -133
  116. package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -36
  117. package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -2
  118. package/esm2022/lib/models/app-toc.model.mjs +38 -38
  119. package/esm2022/lib/models/auto-complete.model.mjs +2 -2
  120. package/esm2022/lib/models/card-content.model.mjs +13 -13
  121. package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -2
  122. package/esm2022/lib/models/discussion-forum.model.mjs +14 -14
  123. package/esm2022/lib/models/goal.model.mjs +2 -2
  124. package/esm2022/lib/models/meta-tag.model.mjs +8 -8
  125. package/esm2022/lib/models/playlist.model.mjs +2 -2
  126. package/esm2022/lib/models/profile-revamp.model.mjs +2 -2
  127. package/esm2022/lib/models/rating.model.mjs +2 -2
  128. package/esm2022/lib/models/user-profile.model.mjs +21 -21
  129. package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -24
  130. package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -24
  131. package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -60
  132. package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -25
  133. package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -106
  134. package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -25
  135. package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -25
  136. package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -25
  137. package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -51
  138. package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -16
  139. package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -18
  140. package/esm2022/lib/services/access-control.service.mjs +56 -56
  141. package/esm2022/lib/services/action.service.mjs +23 -23
  142. package/esm2022/lib/services/app-toc-v2.service.mjs +332 -313
  143. package/esm2022/lib/services/app-toc.service.mjs +1647 -1613
  144. package/esm2022/lib/services/certificate.service.mjs +69 -69
  145. package/esm2022/lib/services/discuss-utils.service.mjs +58 -58
  146. package/esm2022/lib/services/editor.service.mjs +34 -34
  147. package/esm2022/lib/services/load-check.service.mjs +21 -21
  148. package/esm2022/lib/services/loader.service.mjs +33 -33
  149. package/esm2022/lib/services/mobile-apps.service.mjs +67 -67
  150. package/esm2022/lib/services/netcore.service.mjs +56 -56
  151. package/esm2022/lib/services/nps-grid.service.mjs +31 -31
  152. package/esm2022/lib/services/otp.service.mjs +43 -43
  153. package/esm2022/lib/services/profile-v2.service.mjs +43 -43
  154. package/esm2022/lib/services/reset-ratings.service.mjs +19 -19
  155. package/esm2022/lib/services/resource-download-helper.service.mjs +64 -64
  156. package/esm2022/lib/services/timer.service.mjs +23 -23
  157. package/esm2022/lib/services/title-tag.service.mjs +71 -71
  158. package/esm2022/lib/services/user-profile.service.mjs +55 -55
  159. package/esm2022/lib/services/viewer-data.service.mjs +64 -64
  160. package/esm2022/lib/services/viewer-util.service.mjs +599 -590
  161. package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -291
  162. package/esm2022/lib/share-toc/share-toc.module.mjs +119 -119
  163. package/esm2022/public-api.mjs +73 -71
  164. package/esm2022/sunbird-cb-toc.mjs +4 -4
  165. package/fesm2022/sunbird-cb-toc.mjs +24901 -24766
  166. package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
  167. package/index.d.ts +6 -5
  168. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -16
  169. package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
  170. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +32 -31
  171. package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
  172. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +16 -15
  173. package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
  174. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +21 -20
  175. package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
  176. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +23 -22
  177. package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
  178. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +16 -15
  179. package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
  180. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +23 -22
  181. package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
  182. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -22
  183. package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
  184. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +10 -9
  185. package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
  186. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +12 -11
  187. package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
  188. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +13 -12
  189. package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
  190. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +19 -18
  191. package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
  192. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +15 -14
  193. package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
  194. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +12 -11
  195. package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
  196. package/lib/_collection/_common/connection-name/connection-name.component.d.ts +18 -17
  197. package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
  198. package/lib/_collection/_common/connection-name/connection-name.module.d.ts +15 -14
  199. package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
  200. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +200 -199
  201. package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
  202. package/lib/_collection/_common/content-progress/content-progress.component.d.ts +17 -16
  203. package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
  204. package/lib/_collection/_common/content-progress/content-progress.module.d.ts +11 -10
  205. package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
  206. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +39 -38
  207. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
  208. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +20 -19
  209. package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
  210. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +12 -11
  211. package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
  212. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +184 -183
  213. package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
  214. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +42 -41
  215. package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
  216. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +55 -54
  217. package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
  218. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +48 -47
  219. package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
  220. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +51 -49
  221. package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
  222. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +175 -171
  223. package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
  224. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +9 -8
  225. package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
  226. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +17 -16
  227. package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
  228. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +41 -40
  229. package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
  230. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +22 -21
  231. package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
  232. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +46 -45
  233. package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
  234. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +11 -10
  235. package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
  236. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +11 -10
  237. package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
  238. package/lib/_collection/_common/content-toc/content-toc.component.d.ts +129 -128
  239. package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
  240. package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -51
  241. package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
  242. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +30 -29
  243. package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
  244. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +10 -9
  245. package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
  246. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +8 -7
  247. package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
  248. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +8 -7
  249. package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
  250. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +29 -28
  251. package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
  252. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +25 -24
  253. package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
  254. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +15 -14
  255. package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
  256. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +10 -9
  257. package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
  258. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +13 -12
  259. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
  260. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +11 -10
  261. package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
  262. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +23 -22
  263. package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
  264. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +9 -8
  265. package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
  266. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +19 -18
  267. package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
  268. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +9 -8
  269. package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
  270. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +16 -15
  271. package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
  272. package/lib/_collection/_common/player-brief/player-brief.component.d.ts +36 -35
  273. package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
  274. package/lib/_collection/_common/player-brief/player-brief.module.d.ts +20 -19
  275. package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
  276. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +15 -14
  277. package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
  278. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +14 -13
  279. package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
  280. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +12 -11
  281. package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
  282. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +12 -11
  283. package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
  284. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +16 -15
  285. package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
  286. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +11 -10
  287. package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
  288. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +17 -16
  289. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
  290. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +12 -11
  291. package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
  292. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +35 -34
  293. package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
  294. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +18 -17
  295. package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
  296. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +16 -15
  297. package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
  298. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +16 -15
  299. package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
  300. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +22 -21
  301. package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
  302. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +13 -12
  303. package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
  304. package/lib/_collection/_common/user-image/user-image.component.d.ts +22 -21
  305. package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
  306. package/lib/_collection/_common/user-image/user-image.module.d.ts +10 -9
  307. package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
  308. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +48 -47
  309. package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
  310. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +15 -14
  311. package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
  312. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +23 -22
  313. package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
  314. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +20 -19
  315. package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
  316. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +16 -15
  317. package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
  318. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -25
  319. package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
  320. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +22 -21
  321. package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
  322. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +19 -18
  323. package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
  324. package/lib/_collection-api.d.ts +35 -34
  325. package/lib/_collection-api.d.ts.map +1 -0
  326. package/lib/_constants/widget-content.constants.d.ts +8 -7
  327. package/lib/_constants/widget-content.constants.d.ts.map +1 -0
  328. package/lib/_directives/tooltip.directive.d.ts +18 -17
  329. package/lib/_directives/tooltip.directive.d.ts.map +1 -0
  330. package/lib/_models/common.model.d.ts +4 -3
  331. package/lib/_models/common.model.d.ts.map +1 -0
  332. package/lib/_models/error.model.d.ts +6 -5
  333. package/lib/_models/error.model.d.ts.map +1 -0
  334. package/lib/_pipes/highlight.pipe.d.ts +11 -10
  335. package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
  336. package/lib/_services/rating.service.d.ts +19 -18
  337. package/lib/_services/rating.service.d.ts.map +1 -0
  338. package/lib/_services/samuhik-charcha.service.d.ts +14 -13
  339. package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
  340. package/lib/_services/viewer-route-util.d.ts +9 -8
  341. package/lib/_services/viewer-route-util.d.ts.map +1 -0
  342. package/lib/_services/widget-content.model.d.ts +516 -515
  343. package/lib/_services/widget-content.model.d.ts.map +1 -0
  344. package/lib/_services/widget-content.service.d.ts +102 -101
  345. package/lib/_services/widget-content.service.d.ts.map +1 -0
  346. package/lib/_shared/translate-loader.factory.d.ts +8 -7
  347. package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
  348. package/lib/app-toc-lib.module.d.ts +89 -88
  349. package/lib/app-toc-lib.module.d.ts.map +1 -0
  350. package/lib/collection.config.d.ts +160 -159
  351. package/lib/collection.config.d.ts.map +1 -0
  352. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +18 -17
  353. package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
  354. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +226 -225
  355. package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
  356. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +79 -78
  357. package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
  358. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +23 -22
  359. package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
  360. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +32 -31
  361. package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
  362. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +48 -47
  363. package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
  364. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +15 -14
  365. package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
  366. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +22 -21
  367. package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
  368. package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -314
  369. package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  370. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +415 -408
  371. package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
  372. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +48 -47
  373. package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
  374. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +23 -22
  375. package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
  376. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +15 -14
  377. package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
  378. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +150 -149
  379. package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
  380. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +43 -42
  381. package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
  382. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +28 -27
  383. package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
  384. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +16 -15
  385. package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
  386. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +196 -195
  387. package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
  388. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +45 -44
  389. package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
  390. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +55 -54
  391. package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
  392. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +19 -18
  393. package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
  394. package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -43
  395. package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
  396. package/lib/components/survey-form-question/survey-form-question.component.d.ts +21 -20
  397. package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
  398. package/lib/components/survey-form-section/survey-form-section.component.d.ts +14 -13
  399. package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
  400. package/lib/models/app-toc-analytics.model.d.ts +153 -152
  401. package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
  402. package/lib/models/app-toc.model.d.ts +85 -84
  403. package/lib/models/app-toc.model.d.ts.map +1 -0
  404. package/lib/models/auto-complete.model.d.ts +28 -27
  405. package/lib/models/auto-complete.model.d.ts.map +1 -0
  406. package/lib/models/card-content.model.d.ts +20 -19
  407. package/lib/models/card-content.model.d.ts.map +1 -0
  408. package/lib/models/content-strip-with-tabs.model.d.ts +45 -44
  409. package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
  410. package/lib/models/discussion-forum.model.d.ts +41 -40
  411. package/lib/models/discussion-forum.model.d.ts.map +1 -0
  412. package/lib/models/goal.model.d.ts +23 -22
  413. package/lib/models/goal.model.d.ts.map +1 -0
  414. package/lib/models/meta-tag.model.d.ts +7 -6
  415. package/lib/models/meta-tag.model.d.ts.map +1 -0
  416. package/lib/models/playlist.model.d.ts +24 -23
  417. package/lib/models/playlist.model.d.ts.map +1 -0
  418. package/lib/models/profile-revamp.model.d.ts +15 -14
  419. package/lib/models/profile-revamp.model.d.ts.map +1 -0
  420. package/lib/models/rating.model.d.ts +18 -17
  421. package/lib/models/rating.model.d.ts.map +1 -0
  422. package/lib/models/user-profile.model.d.ts +38 -37
  423. package/lib/models/user-profile.model.d.ts.map +1 -0
  424. package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -12
  425. package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
  426. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +13 -12
  427. package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
  428. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +17 -16
  429. package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
  430. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +13 -12
  431. package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
  432. package/lib/resolvers/app-toc-resolver.service.d.ts +17 -16
  433. package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
  434. package/lib/resolvers/config-resolver.service.d.ts +12 -11
  435. package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
  436. package/lib/resolvers/profile-resolver.service.d.ts +12 -11
  437. package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
  438. package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -11
  439. package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
  440. package/lib/routes/app-toc-home/app-toc-home.component.d.ts +20 -19
  441. package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
  442. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +9 -8
  443. package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
  444. package/lib/routes/app-toc-home/app-toc-home.service.d.ts +9 -8
  445. package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
  446. package/lib/services/access-control.service.d.ts +30 -29
  447. package/lib/services/access-control.service.d.ts.map +1 -0
  448. package/lib/services/action.service.d.ts +10 -9
  449. package/lib/services/action.service.d.ts.map +1 -0
  450. package/lib/services/app-toc-v2.service.d.ts +17 -16
  451. package/lib/services/app-toc-v2.service.d.ts.map +1 -0
  452. package/lib/services/app-toc.service.d.ts +241 -235
  453. package/lib/services/app-toc.service.d.ts.map +1 -0
  454. package/lib/services/certificate.service.d.ts +43 -42
  455. package/lib/services/certificate.service.d.ts.map +1 -0
  456. package/lib/services/discuss-utils.service.d.ts +34 -33
  457. package/lib/services/discuss-utils.service.d.ts.map +1 -0
  458. package/lib/services/editor.service.d.ts +18 -17
  459. package/lib/services/editor.service.d.ts.map +1 -0
  460. package/lib/services/load-check.service.d.ts +9 -8
  461. package/lib/services/load-check.service.d.ts.map +1 -0
  462. package/lib/services/loader.service.d.ts +17 -16
  463. package/lib/services/loader.service.d.ts.map +1 -0
  464. package/lib/services/mobile-apps.service.d.ts +39 -38
  465. package/lib/services/mobile-apps.service.d.ts.map +1 -0
  466. package/lib/services/netcore.service.d.ts +34 -33
  467. package/lib/services/netcore.service.d.ts.map +1 -0
  468. package/lib/services/nps-grid.service.d.ts +16 -15
  469. package/lib/services/nps-grid.service.d.ts.map +1 -0
  470. package/lib/services/otp.service.d.ts +21 -20
  471. package/lib/services/otp.service.d.ts.map +1 -0
  472. package/lib/services/profile-v2.service.d.ts +21 -20
  473. package/lib/services/profile-v2.service.d.ts.map +1 -0
  474. package/lib/services/reset-ratings.service.d.ts +9 -8
  475. package/lib/services/reset-ratings.service.d.ts.map +1 -0
  476. package/lib/services/resource-download-helper.service.d.ts +30 -29
  477. package/lib/services/resource-download-helper.service.d.ts.map +1 -0
  478. package/lib/services/timer.service.d.ts +10 -9
  479. package/lib/services/timer.service.d.ts.map +1 -0
  480. package/lib/services/title-tag.service.d.ts +22 -21
  481. package/lib/services/title-tag.service.d.ts.map +1 -0
  482. package/lib/services/user-profile.service.d.ts +25 -24
  483. package/lib/services/user-profile.service.d.ts.map +1 -0
  484. package/lib/services/viewer-data.service.d.ts +59 -58
  485. package/lib/services/viewer-data.service.d.ts.map +1 -0
  486. package/lib/services/viewer-util.service.d.ts +77 -76
  487. package/lib/services/viewer-util.service.d.ts.map +1 -0
  488. package/lib/share-toc/share-toc/share-toc.component.d.ts +57 -56
  489. package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
  490. package/lib/share-toc/share-toc.module.d.ts +33 -32
  491. package/lib/share-toc/share-toc.module.d.ts.map +1 -0
  492. package/package.json +1 -1
  493. package/public-api.d.ts +59 -56
  494. package/public-api.d.ts.map +1 -0
  495. package/sunbird-cb-toc.d.ts.map +1 -0
@@ -1,213 +1,213 @@
1
- import { Component } from '@angular/core';
2
- import { NsContent } from '../../_services/widget-content.model';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/router";
5
- import * as i2 from "../../services/app-toc.service";
6
- import * as i3 from "@sunbird-cb/utils-v2";
7
- import * as i4 from "@angular/platform-browser";
8
- import * as i5 from "../../_services/widget-content.service";
9
- import * as i6 from "../../services/editor.service";
10
- import * as i7 from "@angular/common";
11
- import * as i8 from "@angular/material/toolbar";
12
- import * as i9 from "@angular/material/icon";
13
- import * as i10 from "@angular/material/legacy-button";
14
- import * as i11 from "@angular/material/legacy-progress-spinner";
15
- import * as i12 from "../../_collection/btn-page-back/btn-page-back.component";
16
- import * as i13 from "../../_collection/_common/user-image/user-image.component";
17
- import * as i14 from "../app-toc-discussion/app-toc-discussion.component";
18
- export class KnowledgeArtifactDetailsComponent {
19
- constructor(route, tocSharedSvc, configSvc, domSanitizer, contentSvc, editorSvc, router) {
20
- this.route = route;
21
- this.tocSharedSvc = tocSharedSvc;
22
- this.configSvc = configSvc;
23
- this.domSanitizer = domSanitizer;
24
- this.contentSvc = contentSvc;
25
- this.editorSvc = editorSvc;
26
- this.router = router;
27
- this.content = null;
28
- this.routeSubscription = null;
29
- this.viewMoreRelatedTopics = false;
30
- this.hasTocStructure = false;
31
- this.tocStructure = null;
32
- this.askAuthorEnabled = true;
33
- this.trainingLHubEnabled = false;
34
- this.body = null;
35
- this.pageNavbar = this.configSvc.pageNavBar;
36
- this.isDownloadableDesktop = false;
37
- this.isDownloadableMobile = false;
38
- this.relatedResource = null;
39
- this.fetchingRelatedResources = true;
40
- this.isAuthor = false;
41
- this.deletingContent = false;
42
- this.forPreview = window.location.href.includes('/author/');
43
- if (this.configSvc.restrictedFeatures) {
44
- this.askAuthorEnabled = !this.configSvc.restrictedFeatures.has('askAuthor');
45
- this.trainingLHubEnabled = !this.configSvc.restrictedFeatures.has('trainingLHub');
46
- }
47
- }
48
- ngOnInit() {
49
- if (this.route) {
50
- this.routeSubscription = this.route.data.subscribe((data) => {
51
- this.initData(data);
52
- if (this.content) {
53
- this.fetchingRelatedResources = true;
54
- this.tocSharedSvc
55
- .fetchContentWhatsNext(this.content.identifier, this.content.contentType)
56
- .subscribe((result) => {
57
- this.relatedResource = result;
58
- this.fetchingRelatedResources = false;
59
- }, _ => {
60
- this.fetchingRelatedResources = false;
61
- });
62
- }
63
- });
64
- }
65
- if (this.configSvc.restrictedFeatures) {
66
- this.isDownloadableMobile = this.configSvc.restrictedFeatures.has('mobileDownloadRequest');
67
- this.isDownloadableDesktop = this.configSvc.restrictedFeatures.has('downloadRequest');
68
- }
69
- if (this.content &&
70
- this.content.artifactUrl.indexOf('content-store') >= 0 &&
71
- !this.forPreview) {
72
- this.setS3Cookie(this.content.identifier);
73
- }
74
- }
75
- checkIfEditEnabled() {
76
- const userProfile = this.configSvc.userProfile;
77
- const restrictedFeatures = this.configSvc.restrictedFeatures;
78
- if (userProfile && this.content && restrictedFeatures) {
79
- if (!restrictedFeatures.has('editContent') ||
80
- (!restrictedFeatures.has('editContentAuthor') &&
81
- this.content.creatorContacts &&
82
- this.content.creatorContacts.some(creator => creator.id === userProfile.userId))) {
83
- this.isAuthor = true;
84
- }
85
- }
86
- }
87
- deleteContent() {
88
- if (this.content) {
89
- this.deletingContent = true;
90
- this.editorSvc.deleteContent(this.content.identifier).subscribe(() => {
91
- this.deletingContent = false;
92
- this.router.navigate(['/page/home']);
93
- }, _ => {
94
- this.deletingContent = false;
95
- });
96
- }
97
- }
98
- ngOnDestroy() {
99
- if (this.routeSubscription) {
100
- this.routeSubscription.unsubscribe();
101
- }
102
- }
103
- get showSubtitleOnBanner() {
104
- return this.tocSharedSvc.subtitleOnBanners;
105
- }
106
- get showDescription() {
107
- if (this.content && !this.content.body) {
108
- return true;
109
- }
110
- return this.tocSharedSvc.showDescription;
111
- }
112
- initData(data) {
113
- const initData = this.tocSharedSvc.initData(data);
114
- this.content = initData.content;
115
- this.body = this.domSanitizer.bypassSecurityTrustHtml(this.content ? this.content.body || '' : '');
116
- this.resetAndFetchTocStructure();
117
- if (!this.forPreview) {
118
- this.getTrainingCount();
119
- }
120
- if (this.content && this.content.identifier) {
121
- this.checkIfEditEnabled();
122
- }
123
- }
124
- resetAndFetchTocStructure() {
125
- this.tocStructure = {
126
- assessment: 0,
127
- finalTest: 0,
128
- course: 0,
129
- handsOn: 0,
130
- interactiveVideo: 0,
131
- learningModule: 0,
132
- other: 0,
133
- pdf: 0,
134
- survey: 0,
135
- podcast: 0,
136
- practiceTest: 0,
137
- quiz: 0,
138
- video: 0,
139
- webModule: 0,
140
- webPage: 0,
141
- youtube: 0,
142
- interactivecontent: 0,
143
- offlineSession: 0,
144
- };
145
- if (this.content && this.tocStructure) {
146
- this.hasTocStructure = true;
147
- this.tocStructure.learningModule = this.content.primaryCategory === NsContent.EPrimaryCategory.MODULE ? -1 : 0;
148
- this.tocStructure.course = this.content.primaryCategory === NsContent.EPrimaryCategory.COURSE ? -1 : 0;
149
- this.tocStructure = this.tocSharedSvc.getTocStructure(this.content, this.tocStructure);
150
- for (const progType in this.tocStructure) {
151
- if (this.tocStructure[progType] > 0) {
152
- this.hasTocStructure = true;
153
- break;
154
- }
155
- }
156
- }
157
- }
158
- // For Learning Hub trainings
159
- getTrainingCount() {
160
- if (this.trainingLHubEnabled &&
161
- this.content
162
- // && this.trainingSvc.isValidTrainingContent(this.content)
163
- ) {
164
- // this.trainingLHubCount$ = this.trainingApi
165
- // .getTrainingCount(this.content.identifier)
166
- // .pipe(retry(2))
167
- }
168
- }
169
- get isGreyedImage() {
170
- if (this.content && (this.content.status === 'Deleted' || this.content.status === 'Expired')) {
171
- return true;
172
- }
173
- return false;
174
- }
175
- get isLiveOrMarkForDeletion() {
176
- if (this.content &&
177
- (this.content.status === 'Live' || this.content.status === 'MarkedForDeletion')) {
178
- return true;
179
- }
180
- return false;
181
- }
182
- get isDownloadable() {
183
- if (this.content && this.content.downloadUrl) {
184
- return true;
185
- }
186
- return false;
187
- }
188
- download() {
189
- if (this.content && !this.forPreview) {
190
- const link = document.createElement('a');
191
- link.download = this.content.name;
192
- link.target = '_blank';
193
- link.href = this.content.downloadUrl || '';
194
- document.body.appendChild(link);
195
- link.click();
196
- document.body.removeChild(link);
197
- }
198
- }
199
- async setS3Cookie(identifier) {
200
- await this.contentSvc
201
- .setS3Cookie(identifier)
202
- .toPromise()
203
- .catch(() => { });
204
- return;
205
- }
206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KnowledgeArtifactDetailsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AppTocService }, { token: i3.ConfigurationsService }, { token: i4.DomSanitizer }, { token: i5.WidgetContentService }, { token: i6.EditorService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
207
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: KnowledgeArtifactDetailsComponent, selector: "ws-app-knowledge-artifact-details", ngImport: i0, template: "<mat-toolbar class=\"detailBar\" [color]=\"pageNavbar.color\" [ngStyle]=\"pageNavbar?.styles\">\r\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\r\n <mat-icon>create</mat-icon>\r\n <span class=\"ml-2\">Edit</span>\r\n </a> -->\r\n <ws-widget-btn-page-back [widgetData]=\"{ url: 'home',titles:[{title:'Resource detail',url:'none'}] }\">\r\n </ws-widget-btn-page-back>\r\n <!-- <span class=\"margin-left-xs text-truncate\">\r\n <span >Resource Detail</span>\r\n </span> -->\r\n <span class=\"spacer\"></span>\r\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\r\n <mat-icon>create</mat-icon>\r\n <span class=\"ml-2\">Edit</span>\r\n </a> -->\r\n <mat-spinner [diameter]=\"30\" *ngIf=\"deletingContent\"></mat-spinner>\r\n <a [disabled]=\"deletingContent\" *ngIf=\"isAuthor\" (click)=\"deleteContent()\" mat-button>\r\n <mat-icon>delete</mat-icon>\r\n <span class=\"ml-2\">Delete</span>\r\n </a>\r\n\r\n</mat-toolbar>\r\n\r\n<section class=\"toc-body\">\r\n <div class=\"flex flex-between flex-wrapped mt-4\">\r\n <div class=\"meta-section\">\r\n <div class=\"unit-meta-item pr-8\">\r\n <div *ngIf=\"content?.creatorDetails?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorDetails,\r\n title: 'AUTHOR'\r\n }\">\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"content?.name\" class=\"mt-6\">\r\n <p class=\"ws-mat-primary-text text-4xl font-bold break-words\" style=\"line-height: initial;\">\r\n {{ content?.name | uppercase }}\r\n </p>\r\n </div>\r\n <div *ngIf=\"content?.body\" class=\"unit-meta-item pt-4 py-2\">\r\n <p class=\"item-heading text-xl font-medium ws-mat-primary-text\" >\r\n Resource Description\r\n </p>\r\n <div class=\"break-words\" class=\"resDescription\" [innerHTML]=\"content?.body\"></div>\r\n </div>\r\n <div *ngIf=\"showDescription && content?.description\" class=\"unit-meta-item pt-4 py-2\">\r\n <p class=\"item-heading font-medium text-xl ws-mat-primary-text\" >\r\n Resource Description\r\n </p>\r\n <p class=\"mat-subheading-1 text-base font-small\" class=\"resDescription\" [innerHTML]=\"content?.description\">\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <!--Share & Download-->\r\n <div class=\"flex mt-8 mr-4\"\r\n [ngClass]=\"{ greyOut: content?.status === 'Deleted' || 'Expired' && !isLiveOrMarkForDeletion }\">\r\n <!-- *ngIf=\"content && isDownloadable\" -->\r\n <div class=\"mr-4\" *ngIf=\"content && isDownloadable\">\r\n <button style=\"height: 40px;\" mat-raised-button mat-warn class=\"ws-mat-accent-background text-white\"\r\n (click)=\"download()\">\r\n <mat-icon class=\"text-white\">cloud_download</mat-icon>\r\n <span class=\"px-2 text-lg font-medium text-white\">Download</span>\r\n </button>\r\n </div>\r\n <div color=\"primary\" class=\"shareBtn ws-mat-primary-text ws-mat-primary-border-bold\">\r\n <ws-widget-btn-content-share [widgetData]=\"content\" [showText]=\"true\"></ws-widget-btn-content-share>\r\n </div>\r\n </div>\r\n <!-- <p *ngIf=\"content?.mimeType\">{{content.mimeType}}</p>\r\n <p *ngIf=\"content?.size\">{{content?.size}}</p> -->\r\n\r\n <!--Discussion forum-->\r\n <div class=\"toc-discussion-container my-8\">\r\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\" >Comments</p>\r\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\r\n </div>\r\n </div>\r\n <!--SIDEBAR-->\r\n <div class=\"info-section\">\r\n <div class=\"my-4\">\r\n <p class=\"text-xl pb-2 font-medium ws-mat-primary-text\" >Resources Details</p>\r\n <div *ngIf=\"content?.resourceType\">\r\n <p class=\"item-heading ws-mat-primary-text text-lg font-medium mb-2\" >\r\n Resource Type\r\n </p>\r\n <p class=\"width-expand font-medium\">{{ content?.resourceType }}</p>\r\n </div>\r\n <div *ngIf=\"content?.complexityLevel\">\r\n <p class=\"item-heading text-lg ws-mat-primary-text font-medium mb-2\" >\r\n Grade Level\r\n </p>\r\n <p class=\"width-expand font-medium\">{{ content?.complexityLevel }}</p>\r\n </div>\r\n </div>\r\n <!--Discussion forum-->\r\n <div class=\"toc-discussion-container-sm my-8\">\r\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\">Comments</p>\r\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\r\n </div>\r\n <div class=\"mt-8\">\r\n <p class=\"text-xl font-medium ws-mat-primary-text\" >Related Resources</p>\r\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\"\r\n class=\"flex flex-wrap relatedRes-lg mt-8\">\r\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\r\n <ws-widget-card-content [widgetData]=\"{\r\n content: content,\r\n cardSubType: 'card-user-details'\r\n }\"></ws-widget-card-content>\r\n </div>\r\n </div>\r\n <!-- <ws-utils-horizontal-scroller class=\"padding-xl relatedRes-sm block\" [loadStatus]=\"'done'\">\r\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\" class=\"flex mt-8\">\r\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\r\n <ws-widget-card-content [widgetData]=\"{\r\n content: content,\r\n cardSubType: 'card-user-details'\r\n }\"></ws-widget-card-content>\r\n </div>\r\n </div>\r\n </ws-utils-horizontal-scroller> -->\r\n <div *ngIf=\"relatedResource && relatedResource?.length === 0 && !fetchingRelatedResources\">\r\n <p class=\"font-medium\" >There are no related resources</p>\r\n </div>\r\n <div *ngIf=\"fetchingRelatedResources\" class=\"text-center\">\r\n <mat-spinner [diameter]=\"30\"></mat-spinner>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\r\n <div *ngFor=\"let author of authors\" class=\"author\">\r\n <ws-widget-user-image class=\"author-image\" [userId]=\"author?.id\" [userName]=\"author.name\"\r\n [imageType]=\"'name-initial'\"></ws-widget-user-image>\r\n <div class=\"width-expand flex flex-middle flex-between\">\r\n <div class=\"item-heading font-medium text-base ws-mat-primary-text\">{{ author.name }}</div>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".toc-body{padding:32px 64px}@media only screen and (max-width: 599px){.toc-body{padding:16px 24px}}.toc-body{padding-top:0!important;background-color:#fafafa}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px}@media only screen and (max-width: 599px){.meta-section{width:100%}}.resDescription{font-size:16px;line-height:23px}.topic-button{display:block;width:32%;margin:4px 0}@media only screen and (max-width: 599px){.topic-button{width:100%}}.shareBtn{border-radius:6px}.info-section{width:28%;min-width:250px;margin-left:24px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0}}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}@media only screen and (min-width: 600px){.toc-discussion-container-sm{display:none}.info-section{padding-left:50px}}@media only screen and (max-width: 599px){.toc-discussion-container{display:none}.info-section{padding-top:30px}}.greyOut{filter:grayscale(1);opacity:.7;cursor:auto!important;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i8.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.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: i10.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: i11.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i12.BtnPageBackComponent, selector: "ws-widget-btn-page-back", inputs: ["widgetData"] }, { kind: "component", type: i13.UserImageComponent, selector: "ws-widget-user-image", inputs: ["email", "userId", "userName", "imageType", "imageUrl", "imageSize"] }, { kind: "component", type: i14.AppTocDiscussionComponent, selector: "ws-app-toc-discussion", inputs: ["content", "forPreview"] }, { kind: "pipe", type: i7.UpperCasePipe, name: "uppercase" }] }); }
208
- }
209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KnowledgeArtifactDetailsComponent, decorators: [{
210
- type: Component,
211
- args: [{ selector: 'ws-app-knowledge-artifact-details', template: "<mat-toolbar class=\"detailBar\" [color]=\"pageNavbar.color\" [ngStyle]=\"pageNavbar?.styles\">\r\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\r\n <mat-icon>create</mat-icon>\r\n <span class=\"ml-2\">Edit</span>\r\n </a> -->\r\n <ws-widget-btn-page-back [widgetData]=\"{ url: 'home',titles:[{title:'Resource detail',url:'none'}] }\">\r\n </ws-widget-btn-page-back>\r\n <!-- <span class=\"margin-left-xs text-truncate\">\r\n <span >Resource Detail</span>\r\n </span> -->\r\n <span class=\"spacer\"></span>\r\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\r\n <mat-icon>create</mat-icon>\r\n <span class=\"ml-2\">Edit</span>\r\n </a> -->\r\n <mat-spinner [diameter]=\"30\" *ngIf=\"deletingContent\"></mat-spinner>\r\n <a [disabled]=\"deletingContent\" *ngIf=\"isAuthor\" (click)=\"deleteContent()\" mat-button>\r\n <mat-icon>delete</mat-icon>\r\n <span class=\"ml-2\">Delete</span>\r\n </a>\r\n\r\n</mat-toolbar>\r\n\r\n<section class=\"toc-body\">\r\n <div class=\"flex flex-between flex-wrapped mt-4\">\r\n <div class=\"meta-section\">\r\n <div class=\"unit-meta-item pr-8\">\r\n <div *ngIf=\"content?.creatorDetails?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorDetails,\r\n title: 'AUTHOR'\r\n }\">\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"content?.name\" class=\"mt-6\">\r\n <p class=\"ws-mat-primary-text text-4xl font-bold break-words\" style=\"line-height: initial;\">\r\n {{ content?.name | uppercase }}\r\n </p>\r\n </div>\r\n <div *ngIf=\"content?.body\" class=\"unit-meta-item pt-4 py-2\">\r\n <p class=\"item-heading text-xl font-medium ws-mat-primary-text\" >\r\n Resource Description\r\n </p>\r\n <div class=\"break-words\" class=\"resDescription\" [innerHTML]=\"content?.body\"></div>\r\n </div>\r\n <div *ngIf=\"showDescription && content?.description\" class=\"unit-meta-item pt-4 py-2\">\r\n <p class=\"item-heading font-medium text-xl ws-mat-primary-text\" >\r\n Resource Description\r\n </p>\r\n <p class=\"mat-subheading-1 text-base font-small\" class=\"resDescription\" [innerHTML]=\"content?.description\">\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <!--Share & Download-->\r\n <div class=\"flex mt-8 mr-4\"\r\n [ngClass]=\"{ greyOut: content?.status === 'Deleted' || 'Expired' && !isLiveOrMarkForDeletion }\">\r\n <!-- *ngIf=\"content && isDownloadable\" -->\r\n <div class=\"mr-4\" *ngIf=\"content && isDownloadable\">\r\n <button style=\"height: 40px;\" mat-raised-button mat-warn class=\"ws-mat-accent-background text-white\"\r\n (click)=\"download()\">\r\n <mat-icon class=\"text-white\">cloud_download</mat-icon>\r\n <span class=\"px-2 text-lg font-medium text-white\">Download</span>\r\n </button>\r\n </div>\r\n <div color=\"primary\" class=\"shareBtn ws-mat-primary-text ws-mat-primary-border-bold\">\r\n <ws-widget-btn-content-share [widgetData]=\"content\" [showText]=\"true\"></ws-widget-btn-content-share>\r\n </div>\r\n </div>\r\n <!-- <p *ngIf=\"content?.mimeType\">{{content.mimeType}}</p>\r\n <p *ngIf=\"content?.size\">{{content?.size}}</p> -->\r\n\r\n <!--Discussion forum-->\r\n <div class=\"toc-discussion-container my-8\">\r\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\" >Comments</p>\r\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\r\n </div>\r\n </div>\r\n <!--SIDEBAR-->\r\n <div class=\"info-section\">\r\n <div class=\"my-4\">\r\n <p class=\"text-xl pb-2 font-medium ws-mat-primary-text\" >Resources Details</p>\r\n <div *ngIf=\"content?.resourceType\">\r\n <p class=\"item-heading ws-mat-primary-text text-lg font-medium mb-2\" >\r\n Resource Type\r\n </p>\r\n <p class=\"width-expand font-medium\">{{ content?.resourceType }}</p>\r\n </div>\r\n <div *ngIf=\"content?.complexityLevel\">\r\n <p class=\"item-heading text-lg ws-mat-primary-text font-medium mb-2\" >\r\n Grade Level\r\n </p>\r\n <p class=\"width-expand font-medium\">{{ content?.complexityLevel }}</p>\r\n </div>\r\n </div>\r\n <!--Discussion forum-->\r\n <div class=\"toc-discussion-container-sm my-8\">\r\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\">Comments</p>\r\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\r\n </div>\r\n <div class=\"mt-8\">\r\n <p class=\"text-xl font-medium ws-mat-primary-text\" >Related Resources</p>\r\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\"\r\n class=\"flex flex-wrap relatedRes-lg mt-8\">\r\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\r\n <ws-widget-card-content [widgetData]=\"{\r\n content: content,\r\n cardSubType: 'card-user-details'\r\n }\"></ws-widget-card-content>\r\n </div>\r\n </div>\r\n <!-- <ws-utils-horizontal-scroller class=\"padding-xl relatedRes-sm block\" [loadStatus]=\"'done'\">\r\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\" class=\"flex mt-8\">\r\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\r\n <ws-widget-card-content [widgetData]=\"{\r\n content: content,\r\n cardSubType: 'card-user-details'\r\n }\"></ws-widget-card-content>\r\n </div>\r\n </div>\r\n </ws-utils-horizontal-scroller> -->\r\n <div *ngIf=\"relatedResource && relatedResource?.length === 0 && !fetchingRelatedResources\">\r\n <p class=\"font-medium\" >There are no related resources</p>\r\n </div>\r\n <div *ngIf=\"fetchingRelatedResources\" class=\"text-center\">\r\n <mat-spinner [diameter]=\"30\"></mat-spinner>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\r\n <div *ngFor=\"let author of authors\" class=\"author\">\r\n <ws-widget-user-image class=\"author-image\" [userId]=\"author?.id\" [userName]=\"author.name\"\r\n [imageType]=\"'name-initial'\"></ws-widget-user-image>\r\n <div class=\"width-expand flex flex-middle flex-between\">\r\n <div class=\"item-heading font-medium text-base ws-mat-primary-text\">{{ author.name }}</div>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".toc-body{padding:32px 64px}@media only screen and (max-width: 599px){.toc-body{padding:16px 24px}}.toc-body{padding-top:0!important;background-color:#fafafa}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px}@media only screen and (max-width: 599px){.meta-section{width:100%}}.resDescription{font-size:16px;line-height:23px}.topic-button{display:block;width:32%;margin:4px 0}@media only screen and (max-width: 599px){.topic-button{width:100%}}.shareBtn{border-radius:6px}.info-section{width:28%;min-width:250px;margin-left:24px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0}}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}@media only screen and (min-width: 600px){.toc-discussion-container-sm{display:none}.info-section{padding-left:50px}}@media only screen and (max-width: 599px){.toc-discussion-container{display:none}.info-section{padding-top:30px}}.greyOut{filter:grayscale(1);opacity:.7;cursor:auto!important;pointer-events:none}\n"] }]
212
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.AppTocService }, { type: i3.ConfigurationsService }, { type: i4.DomSanitizer }, { type: i5.WidgetContentService }, { type: i6.EditorService }, { type: i1.Router }]; } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUE7QUFHNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBYWpFLE1BQU0sT0FBTyxpQ0FBaUM7SUFtQjVDLFlBQ1UsS0FBcUIsRUFDckIsWUFBMkIsRUFDM0IsU0FBZ0MsRUFDaEMsWUFBMEIsRUFDMUIsVUFBZ0MsRUFDaEMsU0FBd0IsRUFDeEIsTUFBYztRQU5kLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpCeEIsWUFBTyxHQUE4QixJQUFJLENBQUE7UUFDekMsc0JBQWlCLEdBQXdCLElBQUksQ0FBQTtRQUM3QywwQkFBcUIsR0FBRyxLQUFLLENBQUE7UUFDN0Isb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFDdkIsaUJBQVks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LENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQztJQUNILENBQUM7SUFDTyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQWtCO1FBQzFDLE1BQU0sSUFBSSxDQUFDLFVBQVU7YUFDbEIsV0FBVyxDQUFDLFVBQVUsQ0FBQzthQUN2QixTQUFTLEVBQUU7YUFDWCxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbkIsT0FBTTtJQUNSLENBQUM7K0dBeE5VLGlDQUFpQzttR0FBakMsaUNBQWlDLHlFQ2hCOUMsMjhOQTRJYzs7NEZENUhELGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInXHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBEYXRhLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXHJcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5tb2RlbCc7XHJcbmltcG9ydCB7IFdpZGdldENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL3dpZGdldC1jb250ZW50LnNlcnZpY2UnXHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSwgTnNQYWdlIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3Iuc2VydmljZSdcclxuaW1wb3J0IHsgTnNBcHBUb2MgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwLXRvYy5tb2RlbCdcclxuaW1wb3J0IHsgQXBwVG9jU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC10b2Muc2VydmljZSdcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd3MtYXBwLWtub3dsZWRnZS1hcnRpZmFjdC1kZXRhaWxzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2tub3dsZWRnZS1hcnRpZmFjdC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLbm93bGVkZ2VBcnRpZmFjdERldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgY29udGVudDogTnNDb250ZW50LklDb250ZW50IHwgbnVsbCA9IG51bGxcclxuICByb3V0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGxcclxuICB2aWV3TW9yZVJlbGF0ZWRUb3BpY3MgPSBmYWxzZVxyXG4gIGhhc1RvY1N0cnVjdHVyZSA9IGZhbHNlXHJcbiAgdG9jU3RydWN0dXJlOiBOc0FwcFRvYy5JVG9jU3RydWN0dXJlIHwgbnVsbCA9IG51bGxcclxuICBhc2tBdXRob3JFbmFibGVkID0gdHJ1ZVxyXG4gIHRyYWluaW5nTEh1YkVuYWJsZWQgPSBmYWxzZVxyXG4gIHRyYWluaW5nTEh1YkNvdW50JD86IE9ic2VydmFibGU8bnVtYmVyPlxyXG4gIGJvZHk6IFNhZmVIdG1sIHwgbnVsbCA9IG51bGxcclxuICBwYWdlTmF2YmFyOiBQYXJ0aWFsPE5zUGFnZS5JTmF2QmFja2dyb3VuZD4gPSB0aGlzLmNvbmZpZ1N2Yy5wYWdlTmF2QmFyXHJcbiAgaXNEb3dubG9hZGFibGVEZXNrdG9wID0gZmFsc2VcclxuICBpc0Rvd25sb2FkYWJsZU1vYmlsZSA9IGZhbHNlXHJcbiAgcmVsYXRlZFJlc291cmNlOiBOc0NvbnRlbnQuSUNvbnRlbnRNaW5pbWFsW10gfCBudWxsID0gbnVsbFxyXG4gIGZldGNoaW5nUmVsYXRlZFJlc291cmNlcyA9IHRydWVcclxuICBpc0F1dGhvciA9IGZhbHNlXHJcbiAgZGVsZXRpbmdDb250ZW50ID0gZmFsc2VcclxuICBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9hdXRob3IvJylcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgdG9jU2hhcmVkU3ZjOiBBcHBUb2NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIGNvbnRlbnRTdmM6IFdpZGdldENvbnRlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlZGl0b3JTdmM6IEVkaXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICkge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcykge1xyXG4gICAgICB0aGlzLmFza0F1dGhvckVuYWJsZWQgPSAhdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnYXNrQXV0aG9yJylcclxuICAgICAgdGhpcy50cmFpbmluZ0xIdWJFbmFibGVkID0gIXRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ3RyYWluaW5nTEh1YicpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlKSB7XHJcbiAgICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhOiBEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbml0RGF0YShkYXRhKVxyXG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcclxuICAgICAgICAgIHRoaXMuZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy50b2NTaGFyZWRTdmNcclxuICAgICAgICAgICAgLmZldGNoQ29udGVudFdoYXRzTmV4dCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllciwgdGhpcy5jb250ZW50LmNvbnRlbnRUeXBlKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgIChyZXN1bHQ6IE5zQ29udGVudC5JQ29udGVudE1pbmltYWxbXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGVkUmVzb3VyY2UgPSByZXN1bHRcclxuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzID0gZmFsc2VcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIF8gPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaGluZ1JlbGF0ZWRSZXNvdXJjZXMgPSBmYWxzZVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzKSB7XHJcbiAgICAgIHRoaXMuaXNEb3dubG9hZGFibGVNb2JpbGUgPSB0aGlzLmNvbmZpZ1N2Yy5yZXN0cmljdGVkRmVhdHVyZXMuaGFzKCdtb2JpbGVEb3dubG9hZFJlcXVlc3QnKVxyXG4gICAgICB0aGlzLmlzRG93bmxvYWRhYmxlRGVza3RvcCA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2Rvd25sb2FkUmVxdWVzdCcpXHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29udGVudCAmJlxyXG4gICAgICB0aGlzLmNvbnRlbnQuYXJ0aWZhY3RVcmwuaW5kZXhPZignY29udGVudC1zdG9yZScpID49IDAgJiZcclxuICAgICAgIXRoaXMuZm9yUHJldmlld1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2V0UzNDb29raWUodGhpcy5jb250ZW50LmlkZW50aWZpZXIpXHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgY2hlY2tJZkVkaXRFbmFibGVkKCkge1xyXG4gICAgY29uc3QgdXNlclByb2ZpbGUgPSB0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZVxyXG4gICAgY29uc3QgcmVzdHJpY3RlZEZlYXR1cmVzID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzXHJcbiAgICBpZiAodXNlclByb2ZpbGUgJiYgdGhpcy5jb250ZW50ICYmIHJlc3RyaWN0ZWRGZWF0dXJlcykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2VkaXRDb250ZW50JykgfHxcclxuICAgICAgICAoIXJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2VkaXRDb250ZW50QXV0aG9yJykgJiZcclxuICAgICAgICAgIHRoaXMuY29udGVudC5jcmVhdG9yQ29udGFjdHMgJiZcclxuICAgICAgICAgIHRoaXMuY29udGVudC5jcmVhdG9yQ29udGFjdHMuc29tZShjcmVhdG9yID0+IGNyZWF0b3IuaWQgPT09IHVzZXJQcm9maWxlLnVzZXJJZCkpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuaXNBdXRob3IgPSB0cnVlXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZUNvbnRlbnQoKSB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMuZGVsZXRpbmdDb250ZW50ID0gdHJ1ZVxyXG4gICAgICB0aGlzLmVkaXRvclN2Yy5kZWxldGVDb250ZW50KHRoaXMuY29udGVudC5pZGVudGlmaWVyKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGluZ0NvbnRlbnQgPSBmYWxzZVxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcGFnZS9ob21lJ10pXHJcbiAgICAgICAgfSxcclxuICAgICAgICBfID0+IHtcclxuICAgICAgICAgIHRoaXMuZGVsZXRpbmdDb250ZW50ID0gZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dTdWJ0aXRsZU9uQmFubmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudG9jU2hhcmVkU3ZjLnN1YnRpdGxlT25CYW5uZXJzXHJcbiAgfVxyXG4gIGdldCBzaG93RGVzY3JpcHRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICYmICF0aGlzLmNvbnRlbnQuYm9keSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudG9jU2hhcmVkU3ZjLnNob3dEZXNjcmlwdGlvblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RGF0YShkYXRhOiBEYXRhKSB7XHJcbiAgICBjb25zdCBpbml0RGF0YSA9IHRoaXMudG9jU2hhcmVkU3ZjLmluaXREYXRhKGRhdGEpXHJcbiAgICB0aGlzLmNvbnRlbnQgPSBpbml0RGF0YS5jb250ZW50XHJcbiAgICB0aGlzLmJvZHkgPSB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcclxuICAgICAgdGhpcy5jb250ZW50ID8gdGhpcy5jb250ZW50LmJvZHkgfHwgJycgOiAnJyxcclxuICAgIClcclxuICAgIHRoaXMucmVzZXRBbmRGZXRjaFRvY1N0cnVjdHVyZSgpXHJcbiAgICBpZiAoIXRoaXMuZm9yUHJldmlldykge1xyXG4gICAgICB0aGlzLmdldFRyYWluaW5nQ291bnQoKVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcikge1xyXG4gICAgICB0aGlzLmNoZWNrSWZFZGl0RW5hYmxlZCgpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldEFuZEZldGNoVG9jU3RydWN0dXJlKCkge1xyXG4gICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB7XHJcbiAgICAgIGFzc2Vzc21lbnQ6IDAsXHJcbiAgICAgIGZpbmFsVGVzdDogMCxcclxuICAgICAgY291cnNlOiAwLFxyXG4gICAgICBoYW5kc09uOiAwLFxyXG4gICAgICBpbnRlcmFjdGl2ZVZpZGVvOiAwLFxyXG4gICAgICBsZWFybmluZ01vZHVsZTogMCxcclxuICAgICAgb3RoZXI6IDAsXHJcbiAgICAgIHBkZjogMCxcclxuICAgICAgc3VydmV5OiAwLFxyXG4gICAgICBwb2RjYXN0OiAwLFxyXG4gICAgICBwcmFjdGljZVRlc3Q6IDAsXHJcbiAgICAgIHF1aXo6IDAsXHJcbiAgICAgIHZpZGVvOiAwLFxyXG4gICAgICB3ZWJNb2R1bGU6IDAsXHJcbiAgICAgIHdlYlBhZ2U6IDAsXHJcbiAgICAgIHlvdXR1YmU6IDAsXHJcbiAgICAgIGludGVyYWN0aXZlY29udGVudDogMCxcclxuICAgICAgb2ZmbGluZVNlc3Npb246IDAsXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMudG9jU3RydWN0dXJlKSB7XHJcbiAgICAgIHRoaXMuaGFzVG9jU3RydWN0dXJlID0gdHJ1ZVxyXG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZS5sZWFybmluZ01vZHVsZSA9IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1PRFVMRSA/IC0xIDogMFxyXG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZS5jb3Vyc2UgPSB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5DT1VSU0UgPyAtMSA6IDBcclxuICAgICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB0aGlzLnRvY1NoYXJlZFN2Yy5nZXRUb2NTdHJ1Y3R1cmUodGhpcy5jb250ZW50LCB0aGlzLnRvY1N0cnVjdHVyZSlcclxuICAgICAgZm9yIChjb25zdCBwcm9nVHlwZSBpbiB0aGlzLnRvY1N0cnVjdHVyZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnRvY1N0cnVjdHVyZVtwcm9nVHlwZV0gPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmhhc1RvY1N0cnVjdHVyZSA9IHRydWVcclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBGb3IgTGVhcm5pbmcgSHViIHRyYWluaW5nc1xyXG4gIHByaXZhdGUgZ2V0VHJhaW5pbmdDb3VudCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy50cmFpbmluZ0xIdWJFbmFibGVkICYmXHJcbiAgICAgIHRoaXMuY29udGVudFxyXG4gICAgICAvLyAmJiAgdGhpcy50cmFpbmluZ1N2Yy5pc1ZhbGlkVHJhaW5pbmdDb250ZW50KHRoaXMuY29udGVudClcclxuICAgICkge1xyXG4gICAgICAvLyB0aGlzLnRyYWluaW5nTEh1YkNvdW50JCA9IHRoaXMudHJhaW5pbmdBcGlcclxuICAgICAgLy8gICAuZ2V0VHJhaW5pbmdDb3VudCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllcilcclxuICAgICAgLy8gICAucGlwZShyZXRyeSgyKSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBpc0dyZXllZEltYWdlKCkge1xyXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiAodGhpcy5jb250ZW50LnN0YXR1cyA9PT0gJ0RlbGV0ZWQnIHx8IHRoaXMuY29udGVudC5zdGF0dXMgPT09ICdFeHBpcmVkJykpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuICBnZXQgaXNMaXZlT3JNYXJrRm9yRGVsZXRpb24oKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29udGVudCAmJlxyXG4gICAgICAodGhpcy5jb250ZW50LnN0YXR1cyA9PT0gJ0xpdmUnIHx8IHRoaXMuY29udGVudC5zdGF0dXMgPT09ICdNYXJrZWRGb3JEZWxldGlvbicpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuICBnZXQgaXNEb3dubG9hZGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5kb3dubG9hZFVybCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZCgpIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuZm9yUHJldmlldykge1xyXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgIGxpbmsuZG93bmxvYWQgPSB0aGlzLmNvbnRlbnQubmFtZVxyXG4gICAgICBsaW5rLnRhcmdldCA9ICdfYmxhbmsnXHJcblxyXG4gICAgICBsaW5rLmhyZWYgPSB0aGlzLmNvbnRlbnQuZG93bmxvYWRVcmwgfHwgJydcclxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKVxyXG4gICAgICBsaW5rLmNsaWNrKClcclxuXHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluaylcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBzZXRTM0Nvb2tpZShpZGVudGlmaWVyOiBzdHJpbmcpIHtcclxuICAgIGF3YWl0IHRoaXMuY29udGVudFN2Y1xyXG4gICAgICAuc2V0UzNDb29raWUoaWRlbnRpZmllcilcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC5jYXRjaCgoKSA9PiB7IH0pXHJcbiAgICByZXR1cm5cclxuICB9XHJcbn1cclxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwiZGV0YWlsQmFyXCIgW2NvbG9yXT1cInBhZ2VOYXZiYXIuY29sb3JcIiBbbmdTdHlsZV09XCJwYWdlTmF2YmFyPy5zdHlsZXNcIj5cclxuICA8IS0tIDxhICpuZ0lmPVwiaXNBdXRob3JcIiBbcm91dGVyTGlua109XCInL2F1dGhvci9lZGl0b3IvJyArIGNvbnRlbnQ/LmlkZW50aWZpZXJcIiBtYXQtYnV0dG9uPlxyXG4gICAgPG1hdC1pY29uPmNyZWF0ZTwvbWF0LWljb24+XHJcbiAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5FZGl0PC9zcGFuPlxyXG4gIDwvYT4gLS0+XHJcbiAgPHdzLXdpZGdldC1idG4tcGFnZS1iYWNrIFt3aWRnZXREYXRhXT1cInsgdXJsOiAnaG9tZScsdGl0bGVzOlt7dGl0bGU6J1Jlc291cmNlIGRldGFpbCcsdXJsOidub25lJ31dIH1cIj5cclxuICA8L3dzLXdpZGdldC1idG4tcGFnZS1iYWNrPlxyXG4gIDwhLS0gPHNwYW4gY2xhc3M9XCJtYXJnaW4tbGVmdC14cyB0ZXh0LXRydW5jYXRlXCI+XHJcbiAgICA8c3BhbiA+UmVzb3VyY2UgRGV0YWlsPC9zcGFuPlxyXG4gIDwvc3Bhbj4gLS0+XHJcbiAgPHNwYW4gY2xhc3M9XCJzcGFjZXJcIj48L3NwYW4+XHJcbiAgPCEtLSA8YSAqbmdJZj1cImlzQXV0aG9yXCIgW3JvdXRlckxpbmtdPVwiJy9hdXRob3IvZWRpdG9yLycgKyBjb250ZW50Py5pZGVudGlmaWVyXCIgbWF0LWJ1dHRvbj5cclxuICAgIDxtYXQtaWNvbj5jcmVhdGU8L21hdC1pY29uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+RWRpdDwvc3Bhbj5cclxuICA8L2E+IC0tPlxyXG4gIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMzBcIiAqbmdJZj1cImRlbGV0aW5nQ29udGVudFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgPGEgW2Rpc2FibGVkXT1cImRlbGV0aW5nQ29udGVudFwiICpuZ0lmPVwiaXNBdXRob3JcIiAoY2xpY2spPVwiZGVsZXRlQ29udGVudCgpXCIgbWF0LWJ1dHRvbj5cclxuICAgIDxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+RGVsZXRlPC9zcGFuPlxyXG4gIDwvYT5cclxuXHJcbjwvbWF0LXRvb2xiYXI+XHJcblxyXG48c2VjdGlvbiBjbGFzcz1cInRvYy1ib2R5XCI+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1iZXR3ZWVuIGZsZXgtd3JhcHBlZCBtdC00XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWV0YS1zZWN0aW9uXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1bml0LW1ldGEtaXRlbSBwci04XCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNyZWF0b3JEZXRhaWxzPy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3JlYXRvcnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xyXG4gICAgICAgICAgICAgIGF1dGhvcnM6IGNvbnRlbnQ/LmNyZWF0b3JEZXRhaWxzLFxyXG4gICAgICAgICAgICAgIHRpdGxlOiAnQVVUSE9SJ1xyXG4gICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8ubmFtZVwiIGNsYXNzPVwibXQtNlwiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJ3cy1tYXQtcHJpbWFyeS10ZXh0IHRleHQtNHhsIGZvbnQtYm9sZCBicmVhay13b3Jkc1wiIHN0eWxlPVwibGluZS1oZWlnaHQ6IGluaXRpYWw7XCI+XHJcbiAgICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uYm9keVwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW0gcHQtNCBweS0yXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIml0ZW0taGVhZGluZyB0ZXh0LXhsIGZvbnQtbWVkaXVtIHdzLW1hdC1wcmltYXJ5LXRleHRcIiA+XHJcbiAgICAgICAgICAgIFJlc291cmNlIERlc2NyaXB0aW9uXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWstd29yZHNcIiBjbGFzcz1cInJlc0Rlc2NyaXB0aW9uXCIgW2lubmVySFRNTF09XCJjb250ZW50Py5ib2R5XCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEZXNjcmlwdGlvbiAmJiBjb250ZW50Py5kZXNjcmlwdGlvblwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW0gcHQtNCBweS0yXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIml0ZW0taGVhZGluZyBmb250LW1lZGl1bSB0ZXh0LXhsIHdzLW1hdC1wcmltYXJ5LXRleHRcIiA+XHJcbiAgICAgICAgICAgIFJlc291cmNlIERlc2NyaXB0aW9uXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTEgdGV4dC1iYXNlIGZvbnQtc21hbGxcIiBjbGFzcz1cInJlc0Rlc2NyaXB0aW9uXCIgW2lubmVySFRNTF09XCJjb250ZW50Py5kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1TaGFyZSAmIERvd25sb2FkLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IG10LTggbXItNFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBncmV5T3V0OiBjb250ZW50Py5zdGF0dXMgPT09ICdEZWxldGVkJyB8fCAnRXhwaXJlZCcgJiYgIWlzTGl2ZU9yTWFya0ZvckRlbGV0aW9uIH1cIj5cclxuICAgICAgICA8IS0tICpuZ0lmPVwiY29udGVudCAmJiBpc0Rvd25sb2FkYWJsZVwiIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtci00XCIgKm5nSWY9XCJjb250ZW50ICYmIGlzRG93bmxvYWRhYmxlXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHN0eWxlPVwiaGVpZ2h0OiA0MHB4O1wiIG1hdC1yYWlzZWQtYnV0dG9uIG1hdC13YXJuIGNsYXNzPVwid3MtbWF0LWFjY2VudC1iYWNrZ3JvdW5kIHRleHQtd2hpdGVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+Y2xvdWRfZG93bmxvYWQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB4LTIgdGV4dC1sZyBmb250LW1lZGl1bSB0ZXh0LXdoaXRlXCI+RG93bmxvYWQ8L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwic2hhcmVCdG4gd3MtbWF0LXByaW1hcnktdGV4dCB3cy1tYXQtcHJpbWFyeS1ib3JkZXItYm9sZFwiPlxyXG4gICAgICAgICAgPHdzLXdpZGdldC1idG4tY29udGVudC1zaGFyZSBbd2lkZ2V0RGF0YV09XCJjb250ZW50XCIgW3Nob3dUZXh0XT1cInRydWVcIj48L3dzLXdpZGdldC1idG4tY29udGVudC1zaGFyZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gPHAgKm5nSWY9XCJjb250ZW50Py5taW1lVHlwZVwiPnt7Y29udGVudC5taW1lVHlwZX19PC9wPlxyXG4gICAgICA8cCAqbmdJZj1cImNvbnRlbnQ/LnNpemVcIj57e2NvbnRlbnQ/LnNpemV9fTwvcD4gLS0+XHJcblxyXG4gICAgICA8IS0tRGlzY3Vzc2lvbiBmb3J1bS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidG9jLWRpc2N1c3Npb24tY29udGFpbmVyIG15LThcIj5cclxuICAgICAgICA8cCBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LXRleHQgdGV4dC14bCBmb250LW1lZGl1bSBweS0yXCIgPkNvbW1lbnRzPC9wPlxyXG4gICAgICAgIDx3cy1hcHAtdG9jLWRpc2N1c3Npb24gW2NvbnRlbnRdPVwiY29udGVudFwiIGNsYXNzPVwiZGlzY3Vzc2lvblwiPjwvd3MtYXBwLXRvYy1kaXNjdXNzaW9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLVNJREVCQVItLT5cclxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLXNlY3Rpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIj5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQteGwgcGItMiBmb250LW1lZGl1bSB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlJlc291cmNlcyBEZXRhaWxzPC9wPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5yZXNvdXJjZVR5cGVcIj5cclxuICAgICAgICAgIDxwIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHQgdGV4dC1sZyBmb250LW1lZGl1bSBtYi0yXCIgPlxyXG4gICAgICAgICAgICBSZXNvdXJjZSBUeXBlXHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIndpZHRoLWV4cGFuZCBmb250LW1lZGl1bVwiPnt7IGNvbnRlbnQ/LnJlc291cmNlVHlwZSB9fTwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uY29tcGxleGl0eUxldmVsXCI+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cIml0ZW0taGVhZGluZyB0ZXh0LWxnIHdzLW1hdC1wcmltYXJ5LXRleHQgZm9udC1tZWRpdW0gbWItMlwiID5cclxuICAgICAgICAgICAgR3JhZGUgTGV2ZWxcclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICAgIDxwIGNsYXNzPVwid2lkdGgtZXhwYW5kIGZvbnQtbWVkaXVtXCI+e3sgY29udGVudD8uY29tcGxleGl0eUxldmVsIH19PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLURpc2N1c3Npb24gZm9ydW0tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInRvYy1kaXNjdXNzaW9uLWNvbnRhaW5lci1zbSBteS04XCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ3cy1tYXQtcHJpbWFyeS10ZXh0IHRleHQteGwgZm9udC1tZWRpdW0gcHktMlwiPkNvbW1lbnRzPC9wPlxyXG4gICAgICAgIDx3cy1hcHAtdG9jLWRpc2N1c3Npb24gW2NvbnRlbnRdPVwiY29udGVudFwiIGNsYXNzPVwiZGlzY3Vzc2lvblwiPjwvd3MtYXBwLXRvYy1kaXNjdXNzaW9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LThcIj5cclxuICAgICAgICA8cCBjbGFzcz1cInRleHQteGwgZm9udC1tZWRpdW0gd3MtbWF0LXByaW1hcnktdGV4dFwiID5SZWxhdGVkIFJlc291cmNlczwvcD5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRlZFJlc291cmNlICYmIHJlbGF0ZWRSZXNvdXJjZT8ubGVuZ3RoID4gMCAmJiAhZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzXCJcclxuICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgcmVsYXRlZFJlcy1sZyBtdC04XCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb250ZW50IG9mIHJlbGF0ZWRSZXNvdXJjZVwiIGNsYXNzPVwibWItOFwiPlxyXG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LWNhcmQtY29udGVudCBbd2lkZ2V0RGF0YV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICAgIGNhcmRTdWJUeXBlOiAnY2FyZC11c2VyLWRldGFpbHMnXHJcbiAgICAgICAgICAgICAgICB9XCI+PC93cy13aWRnZXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8d3MtdXRpbHMtaG9yaXpvbnRhbC1zY3JvbGxlciBjbGFzcz1cInBhZGRpbmcteGwgcmVsYXRlZFJlcy1zbSBibG9ja1wiIFtsb2FkU3RhdHVzXT1cIidkb25lJ1wiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJlbGF0ZWRSZXNvdXJjZSAmJiByZWxhdGVkUmVzb3VyY2U/Lmxlbmd0aCA+IDAgJiYgIWZldGNoaW5nUmVsYXRlZFJlc291cmNlc1wiIGNsYXNzPVwiZmxleCBtdC04XCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgcmVsYXRlZFJlc291cmNlXCIgY2xhc3M9XCJtYi04XCI+XHJcbiAgICAgICAgICAgICAgPHdzLXdpZGdldC1jYXJkLWNvbnRlbnQgW3dpZGdldERhdGFdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkU3ViVHlwZTogJ2NhcmQtdXNlci1kZXRhaWxzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvd3Mtd2lkZ2V0LWNhcmQtY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3dzLXV0aWxzLWhvcml6b250YWwtc2Nyb2xsZXI+IC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWxhdGVkUmVzb3VyY2UgJiYgcmVsYXRlZFJlc291cmNlPy5sZW5ndGggPT09IDAgJiYgIWZldGNoaW5nUmVsYXRlZFJlc291cmNlc1wiPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJmb250LW1lZGl1bVwiID5UaGVyZSBhcmUgbm8gcmVsYXRlZCByZXNvdXJjZXM8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImZldGNoaW5nUmVsYXRlZFJlc291cmNlc1wiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMzBcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI2NyZWF0b3JzIGxldC1hdXRob3JzPVwiYXV0aG9yc1wiIGxldC10aXRsZT1cInRpdGxlXCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgYXV0aG9yIG9mIGF1dGhvcnNcIiBjbGFzcz1cImF1dGhvclwiPlxyXG4gICAgPHdzLXdpZGdldC11c2VyLWltYWdlIGNsYXNzPVwiYXV0aG9yLWltYWdlXCIgW3VzZXJJZF09XCJhdXRob3I/LmlkXCIgW3VzZXJOYW1lXT1cImF1dGhvci5uYW1lXCJcclxuICAgICAgW2ltYWdlVHlwZV09XCInbmFtZS1pbml0aWFsJ1wiPjwvd3Mtd2lkZ2V0LXVzZXItaW1hZ2U+XHJcbiAgICA8ZGl2IGNsYXNzPVwid2lkdGgtZXhwYW5kIGZsZXggZmxleC1taWRkbGUgZmxleC1iZXR3ZWVuXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWhlYWRpbmcgZm9udC1tZWRpdW0gdGV4dC1iYXNlIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyBhdXRob3IubmFtZSB9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+Il19
1
+ import { Component } from '@angular/core';
2
+ import { NsContent } from '../../_services/widget-content.model';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ import * as i2 from "../../services/app-toc.service";
6
+ import * as i3 from "@sunbird-cb/utils-v2";
7
+ import * as i4 from "@angular/platform-browser";
8
+ import * as i5 from "../../_services/widget-content.service";
9
+ import * as i6 from "../../services/editor.service";
10
+ import * as i7 from "@angular/common";
11
+ import * as i8 from "@angular/material/toolbar";
12
+ import * as i9 from "@angular/material/icon";
13
+ import * as i10 from "@angular/material/legacy-button";
14
+ import * as i11 from "@angular/material/legacy-progress-spinner";
15
+ import * as i12 from "../../_collection/btn-page-back/btn-page-back.component";
16
+ import * as i13 from "../../_collection/_common/user-image/user-image.component";
17
+ import * as i14 from "../app-toc-discussion/app-toc-discussion.component";
18
+ export class KnowledgeArtifactDetailsComponent {
19
+ constructor(route, tocSharedSvc, configSvc, domSanitizer, contentSvc, editorSvc, router) {
20
+ this.route = route;
21
+ this.tocSharedSvc = tocSharedSvc;
22
+ this.configSvc = configSvc;
23
+ this.domSanitizer = domSanitizer;
24
+ this.contentSvc = contentSvc;
25
+ this.editorSvc = editorSvc;
26
+ this.router = router;
27
+ this.content = null;
28
+ this.routeSubscription = null;
29
+ this.viewMoreRelatedTopics = false;
30
+ this.hasTocStructure = false;
31
+ this.tocStructure = null;
32
+ this.askAuthorEnabled = true;
33
+ this.trainingLHubEnabled = false;
34
+ this.body = null;
35
+ this.pageNavbar = this.configSvc.pageNavBar;
36
+ this.isDownloadableDesktop = false;
37
+ this.isDownloadableMobile = false;
38
+ this.relatedResource = null;
39
+ this.fetchingRelatedResources = true;
40
+ this.isAuthor = false;
41
+ this.deletingContent = false;
42
+ this.forPreview = window.location.href.includes('/author/');
43
+ if (this.configSvc.restrictedFeatures) {
44
+ this.askAuthorEnabled = !this.configSvc.restrictedFeatures.has('askAuthor');
45
+ this.trainingLHubEnabled = !this.configSvc.restrictedFeatures.has('trainingLHub');
46
+ }
47
+ }
48
+ ngOnInit() {
49
+ if (this.route) {
50
+ this.routeSubscription = this.route.data.subscribe((data) => {
51
+ this.initData(data);
52
+ if (this.content) {
53
+ this.fetchingRelatedResources = true;
54
+ this.tocSharedSvc
55
+ .fetchContentWhatsNext(this.content.identifier, this.content.contentType)
56
+ .subscribe((result) => {
57
+ this.relatedResource = result;
58
+ this.fetchingRelatedResources = false;
59
+ }, _ => {
60
+ this.fetchingRelatedResources = false;
61
+ });
62
+ }
63
+ });
64
+ }
65
+ if (this.configSvc.restrictedFeatures) {
66
+ this.isDownloadableMobile = this.configSvc.restrictedFeatures.has('mobileDownloadRequest');
67
+ this.isDownloadableDesktop = this.configSvc.restrictedFeatures.has('downloadRequest');
68
+ }
69
+ if (this.content &&
70
+ this.content.artifactUrl.indexOf('content-store') >= 0 &&
71
+ !this.forPreview) {
72
+ this.setS3Cookie(this.content.identifier);
73
+ }
74
+ }
75
+ checkIfEditEnabled() {
76
+ const userProfile = this.configSvc.userProfile;
77
+ const restrictedFeatures = this.configSvc.restrictedFeatures;
78
+ if (userProfile && this.content && restrictedFeatures) {
79
+ if (!restrictedFeatures.has('editContent') ||
80
+ (!restrictedFeatures.has('editContentAuthor') &&
81
+ this.content.creatorContacts &&
82
+ this.content.creatorContacts.some(creator => creator.id === userProfile.userId))) {
83
+ this.isAuthor = true;
84
+ }
85
+ }
86
+ }
87
+ deleteContent() {
88
+ if (this.content) {
89
+ this.deletingContent = true;
90
+ this.editorSvc.deleteContent(this.content.identifier).subscribe(() => {
91
+ this.deletingContent = false;
92
+ this.router.navigate(['/page/home']);
93
+ }, _ => {
94
+ this.deletingContent = false;
95
+ });
96
+ }
97
+ }
98
+ ngOnDestroy() {
99
+ if (this.routeSubscription) {
100
+ this.routeSubscription.unsubscribe();
101
+ }
102
+ }
103
+ get showSubtitleOnBanner() {
104
+ return this.tocSharedSvc.subtitleOnBanners;
105
+ }
106
+ get showDescription() {
107
+ if (this.content && !this.content.body) {
108
+ return true;
109
+ }
110
+ return this.tocSharedSvc.showDescription;
111
+ }
112
+ initData(data) {
113
+ const initData = this.tocSharedSvc.initData(data);
114
+ this.content = initData.content;
115
+ this.body = this.domSanitizer.bypassSecurityTrustHtml(this.content ? this.content.body || '' : '');
116
+ this.resetAndFetchTocStructure();
117
+ if (!this.forPreview) {
118
+ this.getTrainingCount();
119
+ }
120
+ if (this.content && this.content.identifier) {
121
+ this.checkIfEditEnabled();
122
+ }
123
+ }
124
+ resetAndFetchTocStructure() {
125
+ this.tocStructure = {
126
+ assessment: 0,
127
+ finalTest: 0,
128
+ course: 0,
129
+ handsOn: 0,
130
+ interactiveVideo: 0,
131
+ learningModule: 0,
132
+ other: 0,
133
+ pdf: 0,
134
+ survey: 0,
135
+ podcast: 0,
136
+ practiceTest: 0,
137
+ quiz: 0,
138
+ video: 0,
139
+ webModule: 0,
140
+ webPage: 0,
141
+ youtube: 0,
142
+ interactivecontent: 0,
143
+ offlineSession: 0,
144
+ };
145
+ if (this.content && this.tocStructure) {
146
+ this.hasTocStructure = true;
147
+ this.tocStructure.learningModule = this.content.primaryCategory === NsContent.EPrimaryCategory.MODULE ? -1 : 0;
148
+ this.tocStructure.course = this.content.primaryCategory === NsContent.EPrimaryCategory.COURSE ? -1 : 0;
149
+ this.tocStructure = this.tocSharedSvc.getTocStructure(this.content, this.tocStructure);
150
+ for (const progType in this.tocStructure) {
151
+ if (this.tocStructure[progType] > 0) {
152
+ this.hasTocStructure = true;
153
+ break;
154
+ }
155
+ }
156
+ }
157
+ }
158
+ // For Learning Hub trainings
159
+ getTrainingCount() {
160
+ if (this.trainingLHubEnabled &&
161
+ this.content
162
+ // && this.trainingSvc.isValidTrainingContent(this.content)
163
+ ) {
164
+ // this.trainingLHubCount$ = this.trainingApi
165
+ // .getTrainingCount(this.content.identifier)
166
+ // .pipe(retry(2))
167
+ }
168
+ }
169
+ get isGreyedImage() {
170
+ if (this.content && (this.content.status === 'Deleted' || this.content.status === 'Expired')) {
171
+ return true;
172
+ }
173
+ return false;
174
+ }
175
+ get isLiveOrMarkForDeletion() {
176
+ if (this.content &&
177
+ (this.content.status === 'Live' || this.content.status === 'MarkedForDeletion')) {
178
+ return true;
179
+ }
180
+ return false;
181
+ }
182
+ get isDownloadable() {
183
+ if (this.content && this.content.downloadUrl) {
184
+ return true;
185
+ }
186
+ return false;
187
+ }
188
+ download() {
189
+ if (this.content && !this.forPreview) {
190
+ const link = document.createElement('a');
191
+ link.download = this.content.name;
192
+ link.target = '_blank';
193
+ link.href = this.content.downloadUrl || '';
194
+ document.body.appendChild(link);
195
+ link.click();
196
+ document.body.removeChild(link);
197
+ }
198
+ }
199
+ async setS3Cookie(identifier) {
200
+ await this.contentSvc
201
+ .setS3Cookie(identifier)
202
+ .toPromise()
203
+ .catch(() => { });
204
+ return;
205
+ }
206
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KnowledgeArtifactDetailsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AppTocService }, { token: i3.ConfigurationsService }, { token: i4.DomSanitizer }, { token: i5.WidgetContentService }, { token: i6.EditorService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
207
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: KnowledgeArtifactDetailsComponent, selector: "ws-app-knowledge-artifact-details", ngImport: i0, template: "<mat-toolbar class=\"detailBar\" [color]=\"pageNavbar.color\" [ngStyle]=\"pageNavbar?.styles\">\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\n <mat-icon>create</mat-icon>\n <span class=\"ml-2\">Edit</span>\n </a> -->\n <ws-widget-btn-page-back [widgetData]=\"{ url: 'home',titles:[{title:'Resource detail',url:'none'}] }\">\n </ws-widget-btn-page-back>\n <!-- <span class=\"margin-left-xs text-truncate\">\n <span >Resource Detail</span>\n </span> -->\n <span class=\"spacer\"></span>\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\n <mat-icon>create</mat-icon>\n <span class=\"ml-2\">Edit</span>\n </a> -->\n <mat-spinner [diameter]=\"30\" *ngIf=\"deletingContent\"></mat-spinner>\n <a [disabled]=\"deletingContent\" *ngIf=\"isAuthor\" (click)=\"deleteContent()\" mat-button>\n <mat-icon>delete</mat-icon>\n <span class=\"ml-2\">Delete</span>\n </a>\n\n</mat-toolbar>\n\n<section class=\"toc-body\">\n <div class=\"flex flex-between flex-wrapped mt-4\">\n <div class=\"meta-section\">\n <div class=\"unit-meta-item pr-8\">\n <div *ngIf=\"content?.creatorDetails?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorDetails,\n title: 'AUTHOR'\n }\">\n </ng-container>\n </div>\n <div *ngIf=\"content?.name\" class=\"mt-6\">\n <p class=\"ws-mat-primary-text text-4xl font-bold break-words\" style=\"line-height: initial;\">\n {{ content?.name | uppercase }}\n </p>\n </div>\n <div *ngIf=\"content?.body\" class=\"unit-meta-item pt-4 py-2\">\n <p class=\"item-heading text-xl font-medium ws-mat-primary-text\" >\n Resource Description\n </p>\n <div class=\"break-words\" class=\"resDescription\" [innerHTML]=\"content?.body\"></div>\n </div>\n <div *ngIf=\"showDescription && content?.description\" class=\"unit-meta-item pt-4 py-2\">\n <p class=\"item-heading font-medium text-xl ws-mat-primary-text\" >\n Resource Description\n </p>\n <p class=\"mat-subheading-1 text-base font-small\" class=\"resDescription\" [innerHTML]=\"content?.description\">\n </p>\n </div>\n </div>\n\n <!--Share & Download-->\n <div class=\"flex mt-8 mr-4\"\n [ngClass]=\"{ greyOut: content?.status === 'Deleted' || 'Expired' && !isLiveOrMarkForDeletion }\">\n <!-- *ngIf=\"content && isDownloadable\" -->\n <div class=\"mr-4\" *ngIf=\"content && isDownloadable\">\n <button style=\"height: 40px;\" mat-raised-button mat-warn class=\"ws-mat-accent-background text-white\"\n (click)=\"download()\">\n <mat-icon class=\"text-white\">cloud_download</mat-icon>\n <span class=\"px-2 text-lg font-medium text-white\">Download</span>\n </button>\n </div>\n <div color=\"primary\" class=\"shareBtn ws-mat-primary-text ws-mat-primary-border-bold\">\n <ws-widget-btn-content-share [widgetData]=\"content\" [showText]=\"true\"></ws-widget-btn-content-share>\n </div>\n </div>\n <!-- <p *ngIf=\"content?.mimeType\">{{content.mimeType}}</p>\n <p *ngIf=\"content?.size\">{{content?.size}}</p> -->\n\n <!--Discussion forum-->\n <div class=\"toc-discussion-container my-8\">\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\" >Comments</p>\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\n </div>\n </div>\n <!--SIDEBAR-->\n <div class=\"info-section\">\n <div class=\"my-4\">\n <p class=\"text-xl pb-2 font-medium ws-mat-primary-text\" >Resources Details</p>\n <div *ngIf=\"content?.resourceType\">\n <p class=\"item-heading ws-mat-primary-text text-lg font-medium mb-2\" >\n Resource Type\n </p>\n <p class=\"width-expand font-medium\">{{ content?.resourceType }}</p>\n </div>\n <div *ngIf=\"content?.complexityLevel\">\n <p class=\"item-heading text-lg ws-mat-primary-text font-medium mb-2\" >\n Grade Level\n </p>\n <p class=\"width-expand font-medium\">{{ content?.complexityLevel }}</p>\n </div>\n </div>\n <!--Discussion forum-->\n <div class=\"toc-discussion-container-sm my-8\">\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\">Comments</p>\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\n </div>\n <div class=\"mt-8\">\n <p class=\"text-xl font-medium ws-mat-primary-text\" >Related Resources</p>\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\"\n class=\"flex flex-wrap relatedRes-lg mt-8\">\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\n <ws-widget-card-content [widgetData]=\"{\n content: content,\n cardSubType: 'card-user-details'\n }\"></ws-widget-card-content>\n </div>\n </div>\n <!-- <ws-utils-horizontal-scroller class=\"padding-xl relatedRes-sm block\" [loadStatus]=\"'done'\">\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\" class=\"flex mt-8\">\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\n <ws-widget-card-content [widgetData]=\"{\n content: content,\n cardSubType: 'card-user-details'\n }\"></ws-widget-card-content>\n </div>\n </div>\n </ws-utils-horizontal-scroller> -->\n <div *ngIf=\"relatedResource && relatedResource?.length === 0 && !fetchingRelatedResources\">\n <p class=\"font-medium\" >There are no related resources</p>\n </div>\n <div *ngIf=\"fetchingRelatedResources\" class=\"text-center\">\n <mat-spinner [diameter]=\"30\"></mat-spinner>\n </div>\n </div>\n </div>\n </div>\n</section>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <div *ngFor=\"let author of authors\" class=\"author\">\n <ws-widget-user-image class=\"author-image\" [userId]=\"author?.id\" [userName]=\"author.name\"\n [imageType]=\"'name-initial'\"></ws-widget-user-image>\n <div class=\"width-expand flex flex-middle flex-between\">\n <div class=\"item-heading font-medium text-base ws-mat-primary-text\">{{ author.name }}</div>\n </div>\n </div>\n</ng-template>", styles: [".toc-body{padding:32px 64px}@media only screen and (max-width: 599px){.toc-body{padding:16px 24px}}.toc-body{padding-top:0!important;background-color:#fafafa}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px}@media only screen and (max-width: 599px){.meta-section{width:100%}}.resDescription{font-size:16px;line-height:23px}.topic-button{display:block;width:32%;margin:4px 0}@media only screen and (max-width: 599px){.topic-button{width:100%}}.shareBtn{border-radius:6px}.info-section{width:28%;min-width:250px;margin-left:24px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0}}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}@media only screen and (min-width: 600px){.toc-discussion-container-sm{display:none}.info-section{padding-left:50px}}@media only screen and (max-width: 599px){.toc-discussion-container{display:none}.info-section{padding-top:30px}}.greyOut{filter:grayscale(1);opacity:.7;cursor:auto!important;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i8.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.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: i10.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: i11.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i12.BtnPageBackComponent, selector: "ws-widget-btn-page-back", inputs: ["widgetData"] }, { kind: "component", type: i13.UserImageComponent, selector: "ws-widget-user-image", inputs: ["email", "userId", "userName", "imageType", "imageUrl", "imageSize"] }, { kind: "component", type: i14.AppTocDiscussionComponent, selector: "ws-app-toc-discussion", inputs: ["content", "forPreview"] }, { kind: "pipe", type: i7.UpperCasePipe, name: "uppercase" }] }); }
208
+ }
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: KnowledgeArtifactDetailsComponent, decorators: [{
210
+ type: Component,
211
+ args: [{ selector: 'ws-app-knowledge-artifact-details', template: "<mat-toolbar class=\"detailBar\" [color]=\"pageNavbar.color\" [ngStyle]=\"pageNavbar?.styles\">\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\n <mat-icon>create</mat-icon>\n <span class=\"ml-2\">Edit</span>\n </a> -->\n <ws-widget-btn-page-back [widgetData]=\"{ url: 'home',titles:[{title:'Resource detail',url:'none'}] }\">\n </ws-widget-btn-page-back>\n <!-- <span class=\"margin-left-xs text-truncate\">\n <span >Resource Detail</span>\n </span> -->\n <span class=\"spacer\"></span>\n <!-- <a *ngIf=\"isAuthor\" [routerLink]=\"'/author/editor/' + content?.identifier\" mat-button>\n <mat-icon>create</mat-icon>\n <span class=\"ml-2\">Edit</span>\n </a> -->\n <mat-spinner [diameter]=\"30\" *ngIf=\"deletingContent\"></mat-spinner>\n <a [disabled]=\"deletingContent\" *ngIf=\"isAuthor\" (click)=\"deleteContent()\" mat-button>\n <mat-icon>delete</mat-icon>\n <span class=\"ml-2\">Delete</span>\n </a>\n\n</mat-toolbar>\n\n<section class=\"toc-body\">\n <div class=\"flex flex-between flex-wrapped mt-4\">\n <div class=\"meta-section\">\n <div class=\"unit-meta-item pr-8\">\n <div *ngIf=\"content?.creatorDetails?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorDetails,\n title: 'AUTHOR'\n }\">\n </ng-container>\n </div>\n <div *ngIf=\"content?.name\" class=\"mt-6\">\n <p class=\"ws-mat-primary-text text-4xl font-bold break-words\" style=\"line-height: initial;\">\n {{ content?.name | uppercase }}\n </p>\n </div>\n <div *ngIf=\"content?.body\" class=\"unit-meta-item pt-4 py-2\">\n <p class=\"item-heading text-xl font-medium ws-mat-primary-text\" >\n Resource Description\n </p>\n <div class=\"break-words\" class=\"resDescription\" [innerHTML]=\"content?.body\"></div>\n </div>\n <div *ngIf=\"showDescription && content?.description\" class=\"unit-meta-item pt-4 py-2\">\n <p class=\"item-heading font-medium text-xl ws-mat-primary-text\" >\n Resource Description\n </p>\n <p class=\"mat-subheading-1 text-base font-small\" class=\"resDescription\" [innerHTML]=\"content?.description\">\n </p>\n </div>\n </div>\n\n <!--Share & Download-->\n <div class=\"flex mt-8 mr-4\"\n [ngClass]=\"{ greyOut: content?.status === 'Deleted' || 'Expired' && !isLiveOrMarkForDeletion }\">\n <!-- *ngIf=\"content && isDownloadable\" -->\n <div class=\"mr-4\" *ngIf=\"content && isDownloadable\">\n <button style=\"height: 40px;\" mat-raised-button mat-warn class=\"ws-mat-accent-background text-white\"\n (click)=\"download()\">\n <mat-icon class=\"text-white\">cloud_download</mat-icon>\n <span class=\"px-2 text-lg font-medium text-white\">Download</span>\n </button>\n </div>\n <div color=\"primary\" class=\"shareBtn ws-mat-primary-text ws-mat-primary-border-bold\">\n <ws-widget-btn-content-share [widgetData]=\"content\" [showText]=\"true\"></ws-widget-btn-content-share>\n </div>\n </div>\n <!-- <p *ngIf=\"content?.mimeType\">{{content.mimeType}}</p>\n <p *ngIf=\"content?.size\">{{content?.size}}</p> -->\n\n <!--Discussion forum-->\n <div class=\"toc-discussion-container my-8\">\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\" >Comments</p>\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\n </div>\n </div>\n <!--SIDEBAR-->\n <div class=\"info-section\">\n <div class=\"my-4\">\n <p class=\"text-xl pb-2 font-medium ws-mat-primary-text\" >Resources Details</p>\n <div *ngIf=\"content?.resourceType\">\n <p class=\"item-heading ws-mat-primary-text text-lg font-medium mb-2\" >\n Resource Type\n </p>\n <p class=\"width-expand font-medium\">{{ content?.resourceType }}</p>\n </div>\n <div *ngIf=\"content?.complexityLevel\">\n <p class=\"item-heading text-lg ws-mat-primary-text font-medium mb-2\" >\n Grade Level\n </p>\n <p class=\"width-expand font-medium\">{{ content?.complexityLevel }}</p>\n </div>\n </div>\n <!--Discussion forum-->\n <div class=\"toc-discussion-container-sm my-8\">\n <p class=\"ws-mat-primary-text text-xl font-medium py-2\">Comments</p>\n <ws-app-toc-discussion [content]=\"content\" class=\"discussion\"></ws-app-toc-discussion>\n </div>\n <div class=\"mt-8\">\n <p class=\"text-xl font-medium ws-mat-primary-text\" >Related Resources</p>\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\"\n class=\"flex flex-wrap relatedRes-lg mt-8\">\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\n <ws-widget-card-content [widgetData]=\"{\n content: content,\n cardSubType: 'card-user-details'\n }\"></ws-widget-card-content>\n </div>\n </div>\n <!-- <ws-utils-horizontal-scroller class=\"padding-xl relatedRes-sm block\" [loadStatus]=\"'done'\">\n <div *ngIf=\"relatedResource && relatedResource?.length > 0 && !fetchingRelatedResources\" class=\"flex mt-8\">\n <div *ngFor=\"let content of relatedResource\" class=\"mb-8\">\n <ws-widget-card-content [widgetData]=\"{\n content: content,\n cardSubType: 'card-user-details'\n }\"></ws-widget-card-content>\n </div>\n </div>\n </ws-utils-horizontal-scroller> -->\n <div *ngIf=\"relatedResource && relatedResource?.length === 0 && !fetchingRelatedResources\">\n <p class=\"font-medium\" >There are no related resources</p>\n </div>\n <div *ngIf=\"fetchingRelatedResources\" class=\"text-center\">\n <mat-spinner [diameter]=\"30\"></mat-spinner>\n </div>\n </div>\n </div>\n </div>\n</section>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <div *ngFor=\"let author of authors\" class=\"author\">\n <ws-widget-user-image class=\"author-image\" [userId]=\"author?.id\" [userName]=\"author.name\"\n [imageType]=\"'name-initial'\"></ws-widget-user-image>\n <div class=\"width-expand flex flex-middle flex-between\">\n <div class=\"item-heading font-medium text-base ws-mat-primary-text\">{{ author.name }}</div>\n </div>\n </div>\n</ng-template>", styles: [".toc-body{padding:32px 64px}@media only screen and (max-width: 599px){.toc-body{padding:16px 24px}}.toc-body{padding-top:0!important;background-color:#fafafa}.meta-section{flex:1;min-width:1px}.meta-section .unit-meta-item{border-radius:2px;box-sizing:border-box;margin-bottom:16px}@media only screen and (max-width: 599px){.meta-section{width:100%}}.resDescription{font-size:16px;line-height:23px}.topic-button{display:block;width:32%;margin:4px 0}@media only screen and (max-width: 599px){.topic-button{width:100%}}.shareBtn{border-radius:6px}.info-section{width:28%;min-width:250px;margin-left:24px}@media only screen and (max-width: 599px){.info-section{width:100%;margin-left:0}}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}@media only screen and (min-width: 600px){.toc-discussion-container-sm{display:none}.info-section{padding-left:50px}}@media only screen and (max-width: 599px){.toc-discussion-container{display:none}.info-section{padding-top:30px}}.greyOut{filter:grayscale(1);opacity:.7;cursor:auto!important;pointer-events:none}\n"] }]
212
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.AppTocService }, { type: i3.ConfigurationsService }, { type: i4.DomSanitizer }, { type: i5.WidgetContentService }, { type: i6.EditorService }, { type: i1.Router }]; } });
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMva25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUE7QUFHNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBYWpFLE1BQU0sT0FBTyxpQ0FBaUM7SUFtQjVDLFlBQ1UsS0FBcUIsRUFDckIsWUFBMkIsRUFDM0IsU0FBZ0MsRUFDaEMsWUFBMEIsRUFDMUIsVUFBZ0MsRUFDaEMsU0FBd0IsRUFDeEIsTUFBYztRQU5kLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWU7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpCeEIsWUFBTyxHQUE4QixJQUFJLENBQUE7UUFDekMsc0JBQWlCLEdBQXdCLElBQUksQ0FBQTtRQUM3QywwQkFBcUIsR0FBRyxLQUFLLENBQUE7UUFDN0Isb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFDdkIsaUJBQVks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LENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQztJQUNILENBQUM7SUFDTyxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQWtCO1FBQzFDLE1BQU0sSUFBSSxDQUFDLFVBQVU7YUFDbEIsV0FBVyxDQUFDLFVBQVUsQ0FBQzthQUN2QixTQUFTLEVBQUU7YUFDWCxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDbkIsT0FBTTtJQUNSLENBQUM7K0dBeE5VLGlDQUFpQzttR0FBakMsaUNBQWlDLHlFQ2hCOUMsbXJOQTRJYzs7NEZENUhELGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJ1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIERhdGEsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcidcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5tb2RlbCc7XG5pbXBvcnQgeyBXaWRnZXRDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnNTZXJ2aWNlLCBOc1BhZ2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yLnNlcnZpY2UnXG5pbXBvcnQgeyBOc0FwcFRvYyB9IGZyb20gJy4uLy4uL21vZGVscy9hcHAtdG9jLm1vZGVsJ1xuaW1wb3J0IHsgQXBwVG9jU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC10b2Muc2VydmljZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3MtYXBwLWtub3dsZWRnZS1hcnRpZmFjdC1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2tub3dsZWRnZS1hcnRpZmFjdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4va25vd2xlZGdlLWFydGlmYWN0LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgS25vd2xlZGdlQXJ0aWZhY3REZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gbnVsbFxuICByb3V0ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGxcbiAgdmlld01vcmVSZWxhdGVkVG9waWNzID0gZmFsc2VcbiAgaGFzVG9jU3RydWN0dXJlID0gZmFsc2VcbiAgdG9jU3RydWN0dXJlOiBOc0FwcFRvYy5JVG9jU3RydWN0dXJlIHwgbnVsbCA9IG51bGxcbiAgYXNrQXV0aG9yRW5hYmxlZCA9IHRydWVcbiAgdHJhaW5pbmdMSHViRW5hYmxlZCA9IGZhbHNlXG4gIHRyYWluaW5nTEh1YkNvdW50JD86IE9ic2VydmFibGU8bnVtYmVyPlxuICBib2R5OiBTYWZlSHRtbCB8IG51bGwgPSBudWxsXG4gIHBhZ2VOYXZiYXI6IFBhcnRpYWw8TnNQYWdlLklOYXZCYWNrZ3JvdW5kPiA9IHRoaXMuY29uZmlnU3ZjLnBhZ2VOYXZCYXJcbiAgaXNEb3dubG9hZGFibGVEZXNrdG9wID0gZmFsc2VcbiAgaXNEb3dubG9hZGFibGVNb2JpbGUgPSBmYWxzZVxuICByZWxhdGVkUmVzb3VyY2U6IE5zQ29udGVudC5JQ29udGVudE1pbmltYWxbXSB8IG51bGwgPSBudWxsXG4gIGZldGNoaW5nUmVsYXRlZFJlc291cmNlcyA9IHRydWVcbiAgaXNBdXRob3IgPSBmYWxzZVxuICBkZWxldGluZ0NvbnRlbnQgPSBmYWxzZVxuICBmb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9hdXRob3IvJylcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHRvY1NoYXJlZFN2YzogQXBwVG9jU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1N2YzogQ29uZmlndXJhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjb250ZW50U3ZjOiBXaWRnZXRDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGVkaXRvclN2YzogRWRpdG9yU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICApIHtcbiAgICBpZiAodGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzKSB7XG4gICAgICB0aGlzLmFza0F1dGhvckVuYWJsZWQgPSAhdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnYXNrQXV0aG9yJylcbiAgICAgIHRoaXMudHJhaW5pbmdMSHViRW5hYmxlZCA9ICF0aGlzLmNvbmZpZ1N2Yy5yZXN0cmljdGVkRmVhdHVyZXMuaGFzKCd0cmFpbmluZ0xIdWInKVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnJvdXRlKSB7XG4gICAgICB0aGlzLnJvdXRlU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLmluaXREYXRhKGRhdGEpXG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICB0aGlzLmZldGNoaW5nUmVsYXRlZFJlc291cmNlcyA9IHRydWVcbiAgICAgICAgICB0aGlzLnRvY1NoYXJlZFN2Y1xuICAgICAgICAgICAgLmZldGNoQ29udGVudFdoYXRzTmV4dCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllciwgdGhpcy5jb250ZW50LmNvbnRlbnRUeXBlKVxuICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgKHJlc3VsdDogTnNDb250ZW50LklDb250ZW50TWluaW1hbFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGVkUmVzb3VyY2UgPSByZXN1bHRcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoaW5nUmVsYXRlZFJlc291cmNlcyA9IGZhbHNlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIF8gPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzID0gZmFsc2VcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcykge1xuICAgICAgdGhpcy5pc0Rvd25sb2FkYWJsZU1vYmlsZSA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ21vYmlsZURvd25sb2FkUmVxdWVzdCcpXG4gICAgICB0aGlzLmlzRG93bmxvYWRhYmxlRGVza3RvcCA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2Rvd25sb2FkUmVxdWVzdCcpXG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMuY29udGVudCAmJlxuICAgICAgdGhpcy5jb250ZW50LmFydGlmYWN0VXJsLmluZGV4T2YoJ2NvbnRlbnQtc3RvcmUnKSA+PSAwICYmXG4gICAgICAhdGhpcy5mb3JQcmV2aWV3XG4gICAgKSB7XG4gICAgICB0aGlzLnNldFMzQ29va2llKHRoaXMuY29udGVudC5pZGVudGlmaWVyKVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGNoZWNrSWZFZGl0RW5hYmxlZCgpIHtcbiAgICBjb25zdCB1c2VyUHJvZmlsZSA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlXG4gICAgY29uc3QgcmVzdHJpY3RlZEZlYXR1cmVzID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzXG4gICAgaWYgKHVzZXJQcm9maWxlICYmIHRoaXMuY29udGVudCAmJiByZXN0cmljdGVkRmVhdHVyZXMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2VkaXRDb250ZW50JykgfHxcbiAgICAgICAgKCFyZXN0cmljdGVkRmVhdHVyZXMuaGFzKCdlZGl0Q29udGVudEF1dGhvcicpICYmXG4gICAgICAgICAgdGhpcy5jb250ZW50LmNyZWF0b3JDb250YWN0cyAmJlxuICAgICAgICAgIHRoaXMuY29udGVudC5jcmVhdG9yQ29udGFjdHMuc29tZShjcmVhdG9yID0+IGNyZWF0b3IuaWQgPT09IHVzZXJQcm9maWxlLnVzZXJJZCkpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pc0F1dGhvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkZWxldGVDb250ZW50KCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHRoaXMuZGVsZXRpbmdDb250ZW50ID0gdHJ1ZVxuICAgICAgdGhpcy5lZGl0b3JTdmMuZGVsZXRlQ29udGVudCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllcikuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kZWxldGluZ0NvbnRlbnQgPSBmYWxzZVxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3BhZ2UvaG9tZSddKVxuICAgICAgICB9LFxuICAgICAgICBfID0+IHtcbiAgICAgICAgICB0aGlzLmRlbGV0aW5nQ29udGVudCA9IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucm91dGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIGdldCBzaG93U3VidGl0bGVPbkJhbm5lcigpIHtcbiAgICByZXR1cm4gdGhpcy50b2NTaGFyZWRTdmMuc3VidGl0bGVPbkJhbm5lcnNcbiAgfVxuICBnZXQgc2hvd0Rlc2NyaXB0aW9uKCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuY29udGVudC5ib2R5KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy50b2NTaGFyZWRTdmMuc2hvd0Rlc2NyaXB0aW9uXG4gIH1cblxuICBwcml2YXRlIGluaXREYXRhKGRhdGE6IERhdGEpIHtcbiAgICBjb25zdCBpbml0RGF0YSA9IHRoaXMudG9jU2hhcmVkU3ZjLmluaXREYXRhKGRhdGEpXG4gICAgdGhpcy5jb250ZW50ID0gaW5pdERhdGEuY29udGVudFxuICAgIHRoaXMuYm9keSA9IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxuICAgICAgdGhpcy5jb250ZW50ID8gdGhpcy5jb250ZW50LmJvZHkgfHwgJycgOiAnJyxcbiAgICApXG4gICAgdGhpcy5yZXNldEFuZEZldGNoVG9jU3RydWN0dXJlKClcbiAgICBpZiAoIXRoaXMuZm9yUHJldmlldykge1xuICAgICAgdGhpcy5nZXRUcmFpbmluZ0NvdW50KClcbiAgICB9XG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcikge1xuICAgICAgdGhpcy5jaGVja0lmRWRpdEVuYWJsZWQoKVxuICAgIH1cbiAgfVxuXG4gIHJlc2V0QW5kRmV0Y2hUb2NTdHJ1Y3R1cmUoKSB7XG4gICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB7XG4gICAgICBhc3Nlc3NtZW50OiAwLFxuICAgICAgZmluYWxUZXN0OiAwLFxuICAgICAgY291cnNlOiAwLFxuICAgICAgaGFuZHNPbjogMCxcbiAgICAgIGludGVyYWN0aXZlVmlkZW86IDAsXG4gICAgICBsZWFybmluZ01vZHVsZTogMCxcbiAgICAgIG90aGVyOiAwLFxuICAgICAgcGRmOiAwLFxuICAgICAgc3VydmV5OiAwLFxuICAgICAgcG9kY2FzdDogMCxcbiAgICAgIHByYWN0aWNlVGVzdDogMCxcbiAgICAgIHF1aXo6IDAsXG4gICAgICB2aWRlbzogMCxcbiAgICAgIHdlYk1vZHVsZTogMCxcbiAgICAgIHdlYlBhZ2U6IDAsXG4gICAgICB5b3V0dWJlOiAwLFxuICAgICAgaW50ZXJhY3RpdmVjb250ZW50OiAwLFxuICAgICAgb2ZmbGluZVNlc3Npb246IDAsXG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy50b2NTdHJ1Y3R1cmUpIHtcbiAgICAgIHRoaXMuaGFzVG9jU3RydWN0dXJlID0gdHJ1ZVxuICAgICAgdGhpcy50b2NTdHJ1Y3R1cmUubGVhcm5pbmdNb2R1bGUgPSB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5NT0RVTEUgPyAtMSA6IDBcbiAgICAgIHRoaXMudG9jU3RydWN0dXJlLmNvdXJzZSA9IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkNPVVJTRSA/IC0xIDogMFxuICAgICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB0aGlzLnRvY1NoYXJlZFN2Yy5nZXRUb2NTdHJ1Y3R1cmUodGhpcy5jb250ZW50LCB0aGlzLnRvY1N0cnVjdHVyZSlcbiAgICAgIGZvciAoY29uc3QgcHJvZ1R5cGUgaW4gdGhpcy50b2NTdHJ1Y3R1cmUpIHtcbiAgICAgICAgaWYgKHRoaXMudG9jU3RydWN0dXJlW3Byb2dUeXBlXSA+IDApIHtcbiAgICAgICAgICB0aGlzLmhhc1RvY1N0cnVjdHVyZSA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIExlYXJuaW5nIEh1YiB0cmFpbmluZ3NcbiAgcHJpdmF0ZSBnZXRUcmFpbmluZ0NvdW50KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMudHJhaW5pbmdMSHViRW5hYmxlZCAmJlxuICAgICAgdGhpcy5jb250ZW50XG4gICAgICAvLyAmJiAgdGhpcy50cmFpbmluZ1N2Yy5pc1ZhbGlkVHJhaW5pbmdDb250ZW50KHRoaXMuY29udGVudClcbiAgICApIHtcbiAgICAgIC8vIHRoaXMudHJhaW5pbmdMSHViQ291bnQkID0gdGhpcy50cmFpbmluZ0FwaVxuICAgICAgLy8gICAuZ2V0VHJhaW5pbmdDb3VudCh0aGlzLmNvbnRlbnQuaWRlbnRpZmllcilcbiAgICAgIC8vICAgLnBpcGUocmV0cnkoMikpXG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzR3JleWVkSW1hZ2UoKSB7XG4gICAgaWYgKHRoaXMuY29udGVudCAmJiAodGhpcy5jb250ZW50LnN0YXR1cyA9PT0gJ0RlbGV0ZWQnIHx8IHRoaXMuY29udGVudC5zdGF0dXMgPT09ICdFeHBpcmVkJykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGdldCBpc0xpdmVPck1hcmtGb3JEZWxldGlvbigpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbnRlbnQgJiZcbiAgICAgICh0aGlzLmNvbnRlbnQuc3RhdHVzID09PSAnTGl2ZScgfHwgdGhpcy5jb250ZW50LnN0YXR1cyA9PT0gJ01hcmtlZEZvckRlbGV0aW9uJylcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGdldCBpc0Rvd25sb2FkYWJsZSgpIHtcbiAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5kb3dubG9hZFVybCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBkb3dubG9hZCgpIHtcbiAgICBpZiAodGhpcy5jb250ZW50ICYmICF0aGlzLmZvclByZXZpZXcpIHtcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcbiAgICAgIGxpbmsuZG93bmxvYWQgPSB0aGlzLmNvbnRlbnQubmFtZVxuICAgICAgbGluay50YXJnZXQgPSAnX2JsYW5rJ1xuXG4gICAgICBsaW5rLmhyZWYgPSB0aGlzLmNvbnRlbnQuZG93bmxvYWRVcmwgfHwgJydcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgIGxpbmsuY2xpY2soKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspXG4gICAgfVxuICB9XG4gIHByaXZhdGUgYXN5bmMgc2V0UzNDb29raWUoaWRlbnRpZmllcjogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy5jb250ZW50U3ZjXG4gICAgICAuc2V0UzNDb29raWUoaWRlbnRpZmllcilcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLmNhdGNoKCgpID0+IHsgfSlcbiAgICByZXR1cm5cbiAgfVxufVxuIiwiPG1hdC10b29sYmFyIGNsYXNzPVwiZGV0YWlsQmFyXCIgW2NvbG9yXT1cInBhZ2VOYXZiYXIuY29sb3JcIiBbbmdTdHlsZV09XCJwYWdlTmF2YmFyPy5zdHlsZXNcIj5cbiAgPCEtLSA8YSAqbmdJZj1cImlzQXV0aG9yXCIgW3JvdXRlckxpbmtdPVwiJy9hdXRob3IvZWRpdG9yLycgKyBjb250ZW50Py5pZGVudGlmaWVyXCIgbWF0LWJ1dHRvbj5cbiAgICA8bWF0LWljb24+Y3JlYXRlPC9tYXQtaWNvbj5cbiAgICA8c3BhbiBjbGFzcz1cIm1sLTJcIj5FZGl0PC9zcGFuPlxuICA8L2E+IC0tPlxuICA8d3Mtd2lkZ2V0LWJ0bi1wYWdlLWJhY2sgW3dpZGdldERhdGFdPVwieyB1cmw6ICdob21lJyx0aXRsZXM6W3t0aXRsZTonUmVzb3VyY2UgZGV0YWlsJyx1cmw6J25vbmUnfV0gfVwiPlxuICA8L3dzLXdpZGdldC1idG4tcGFnZS1iYWNrPlxuICA8IS0tIDxzcGFuIGNsYXNzPVwibWFyZ2luLWxlZnQteHMgdGV4dC10cnVuY2F0ZVwiPlxuICAgIDxzcGFuID5SZXNvdXJjZSBEZXRhaWw8L3NwYW4+XG4gIDwvc3Bhbj4gLS0+XG4gIDxzcGFuIGNsYXNzPVwic3BhY2VyXCI+PC9zcGFuPlxuICA8IS0tIDxhICpuZ0lmPVwiaXNBdXRob3JcIiBbcm91dGVyTGlua109XCInL2F1dGhvci9lZGl0b3IvJyArIGNvbnRlbnQ/LmlkZW50aWZpZXJcIiBtYXQtYnV0dG9uPlxuICAgIDxtYXQtaWNvbj5jcmVhdGU8L21hdC1pY29uPlxuICAgIDxzcGFuIGNsYXNzPVwibWwtMlwiPkVkaXQ8L3NwYW4+XG4gIDwvYT4gLS0+XG4gIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMzBcIiAqbmdJZj1cImRlbGV0aW5nQ29udGVudFwiPjwvbWF0LXNwaW5uZXI+XG4gIDxhIFtkaXNhYmxlZF09XCJkZWxldGluZ0NvbnRlbnRcIiAqbmdJZj1cImlzQXV0aG9yXCIgKGNsaWNrKT1cImRlbGV0ZUNvbnRlbnQoKVwiIG1hdC1idXR0b24+XG4gICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgPHNwYW4gY2xhc3M9XCJtbC0yXCI+RGVsZXRlPC9zcGFuPlxuICA8L2E+XG5cbjwvbWF0LXRvb2xiYXI+XG5cbjxzZWN0aW9uIGNsYXNzPVwidG9jLWJvZHlcIj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1iZXR3ZWVuIGZsZXgtd3JhcHBlZCBtdC00XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1ldGEtc2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInVuaXQtbWV0YS1pdGVtIHByLThcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNyZWF0b3JEZXRhaWxzPy5sZW5ndGhcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyZWF0b3JzXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgYXV0aG9yczogY29udGVudD8uY3JlYXRvckRldGFpbHMsXG4gICAgICAgICAgICAgIHRpdGxlOiAnQVVUSE9SJ1xuICAgICAgICAgICAgfVwiPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/Lm5hbWVcIiBjbGFzcz1cIm10LTZcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LXRleHQgdGV4dC00eGwgZm9udC1ib2xkIGJyZWFrLXdvcmRzXCIgc3R5bGU9XCJsaW5lLWhlaWdodDogaW5pdGlhbDtcIj5cbiAgICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uYm9keVwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW0gcHQtNCBweS0yXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJpdGVtLWhlYWRpbmcgdGV4dC14bCBmb250LW1lZGl1bSB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlxuICAgICAgICAgICAgUmVzb3VyY2UgRGVzY3JpcHRpb25cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrLXdvcmRzXCIgY2xhc3M9XCJyZXNEZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiY29udGVudD8uYm9keVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dEZXNjcmlwdGlvbiAmJiBjb250ZW50Py5kZXNjcmlwdGlvblwiIGNsYXNzPVwidW5pdC1tZXRhLWl0ZW0gcHQtNCBweS0yXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJpdGVtLWhlYWRpbmcgZm9udC1tZWRpdW0gdGV4dC14bCB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlxuICAgICAgICAgICAgUmVzb3VyY2UgRGVzY3JpcHRpb25cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIHRleHQtYmFzZSBmb250LXNtYWxsXCIgY2xhc3M9XCJyZXNEZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwiY29udGVudD8uZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS1TaGFyZSAmIERvd25sb2FkLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtdC04IG1yLTRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7IGdyZXlPdXQ6IGNvbnRlbnQ/LnN0YXR1cyA9PT0gJ0RlbGV0ZWQnIHx8ICdFeHBpcmVkJyAmJiAhaXNMaXZlT3JNYXJrRm9yRGVsZXRpb24gfVwiPlxuICAgICAgICA8IS0tICpuZ0lmPVwiY29udGVudCAmJiBpc0Rvd25sb2FkYWJsZVwiIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXItNFwiICpuZ0lmPVwiY29udGVudCAmJiBpc0Rvd25sb2FkYWJsZVwiPlxuICAgICAgICAgIDxidXR0b24gc3R5bGU9XCJoZWlnaHQ6IDQwcHg7XCIgbWF0LXJhaXNlZC1idXR0b24gbWF0LXdhcm4gY2xhc3M9XCJ3cy1tYXQtYWNjZW50LWJhY2tncm91bmQgdGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGV4dC13aGl0ZVwiPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHgtMiB0ZXh0LWxnIGZvbnQtbWVkaXVtIHRleHQtd2hpdGVcIj5Eb3dubG9hZDwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJzaGFyZUJ0biB3cy1tYXQtcHJpbWFyeS10ZXh0IHdzLW1hdC1wcmltYXJ5LWJvcmRlci1ib2xkXCI+XG4gICAgICAgICAgPHdzLXdpZGdldC1idG4tY29udGVudC1zaGFyZSBbd2lkZ2V0RGF0YV09XCJjb250ZW50XCIgW3Nob3dUZXh0XT1cInRydWVcIj48L3dzLXdpZGdldC1idG4tY29udGVudC1zaGFyZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gPHAgKm5nSWY9XCJjb250ZW50Py5taW1lVHlwZVwiPnt7Y29udGVudC5taW1lVHlwZX19PC9wPlxuICAgICAgPHAgKm5nSWY9XCJjb250ZW50Py5zaXplXCI+e3tjb250ZW50Py5zaXplfX08L3A+IC0tPlxuXG4gICAgICA8IS0tRGlzY3Vzc2lvbiBmb3J1bS0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRvYy1kaXNjdXNzaW9uLWNvbnRhaW5lciBteS04XCI+XG4gICAgICAgIDxwIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dCB0ZXh0LXhsIGZvbnQtbWVkaXVtIHB5LTJcIiA+Q29tbWVudHM8L3A+XG4gICAgICAgIDx3cy1hcHAtdG9jLWRpc2N1c3Npb24gW2NvbnRlbnRdPVwiY29udGVudFwiIGNsYXNzPVwiZGlzY3Vzc2lvblwiPjwvd3MtYXBwLXRvYy1kaXNjdXNzaW9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLVNJREVCQVItLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1zZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibXktNFwiPlxuICAgICAgICA8cCBjbGFzcz1cInRleHQteGwgcGItMiBmb250LW1lZGl1bSB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlJlc291cmNlcyBEZXRhaWxzPC9wPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8ucmVzb3VyY2VUeXBlXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dCB0ZXh0LWxnIGZvbnQtbWVkaXVtIG1iLTJcIiA+XG4gICAgICAgICAgICBSZXNvdXJjZSBUeXBlXG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxwIGNsYXNzPVwid2lkdGgtZXhwYW5kIGZvbnQtbWVkaXVtXCI+e3sgY29udGVudD8ucmVzb3VyY2VUeXBlIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXhpdHlMZXZlbFwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHRleHQtbGcgd3MtbWF0LXByaW1hcnktdGV4dCBmb250LW1lZGl1bSBtYi0yXCIgPlxuICAgICAgICAgICAgR3JhZGUgTGV2ZWxcbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgY2xhc3M9XCJ3aWR0aC1leHBhbmQgZm9udC1tZWRpdW1cIj57eyBjb250ZW50Py5jb21wbGV4aXR5TGV2ZWwgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tRGlzY3Vzc2lvbiBmb3J1bS0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRvYy1kaXNjdXNzaW9uLWNvbnRhaW5lci1zbSBteS04XCI+XG4gICAgICAgIDxwIGNsYXNzPVwid3MtbWF0LXByaW1hcnktdGV4dCB0ZXh0LXhsIGZvbnQtbWVkaXVtIHB5LTJcIj5Db21tZW50czwvcD5cbiAgICAgICAgPHdzLWFwcC10b2MtZGlzY3Vzc2lvbiBbY29udGVudF09XCJjb250ZW50XCIgY2xhc3M9XCJkaXNjdXNzaW9uXCI+PC93cy1hcHAtdG9jLWRpc2N1c3Npb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC04XCI+XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC14bCBmb250LW1lZGl1bSB3cy1tYXQtcHJpbWFyeS10ZXh0XCIgPlJlbGF0ZWQgUmVzb3VyY2VzPC9wPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRlZFJlc291cmNlICYmIHJlbGF0ZWRSZXNvdXJjZT8ubGVuZ3RoID4gMCAmJiAhZmV0Y2hpbmdSZWxhdGVkUmVzb3VyY2VzXCJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC13cmFwIHJlbGF0ZWRSZXMtbGcgbXQtOFwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgcmVsYXRlZFJlc291cmNlXCIgY2xhc3M9XCJtYi04XCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LWNhcmQtY29udGVudCBbd2lkZ2V0RGF0YV09XCJ7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgY2FyZFN1YlR5cGU6ICdjYXJkLXVzZXItZGV0YWlscydcbiAgICAgICAgICAgICAgICB9XCI+PC93cy13aWRnZXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSA8d3MtdXRpbHMtaG9yaXpvbnRhbC1zY3JvbGxlciBjbGFzcz1cInBhZGRpbmcteGwgcmVsYXRlZFJlcy1zbSBibG9ja1wiIFtsb2FkU3RhdHVzXT1cIidkb25lJ1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWxhdGVkUmVzb3VyY2UgJiYgcmVsYXRlZFJlc291cmNlPy5sZW5ndGggPiAwICYmICFmZXRjaGluZ1JlbGF0ZWRSZXNvdXJjZXNcIiBjbGFzcz1cImZsZXggbXQtOFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29udGVudCBvZiByZWxhdGVkUmVzb3VyY2VcIiBjbGFzcz1cIm1iLThcIj5cbiAgICAgICAgICAgICAgPHdzLXdpZGdldC1jYXJkLWNvbnRlbnQgW3dpZGdldERhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogY29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmRTdWJUeXBlOiAnY2FyZC11c2VyLWRldGFpbHMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvd3Mtd2lkZ2V0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3dzLXV0aWxzLWhvcml6b250YWwtc2Nyb2xsZXI+IC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVsYXRlZFJlc291cmNlICYmIHJlbGF0ZWRSZXNvdXJjZT8ubGVuZ3RoID09PSAwICYmICFmZXRjaGluZ1JlbGF0ZWRSZXNvdXJjZXNcIj5cbiAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtbWVkaXVtXCIgPlRoZXJlIGFyZSBubyByZWxhdGVkIHJlc291cmNlczwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJmZXRjaGluZ1JlbGF0ZWRSZXNvdXJjZXNcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCIzMFwiPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuXG48bmctdGVtcGxhdGUgI2NyZWF0b3JzIGxldC1hdXRob3JzPVwiYXV0aG9yc1wiIGxldC10aXRsZT1cInRpdGxlXCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGF1dGhvciBvZiBhdXRob3JzXCIgY2xhc3M9XCJhdXRob3JcIj5cbiAgICA8d3Mtd2lkZ2V0LXVzZXItaW1hZ2UgY2xhc3M9XCJhdXRob3ItaW1hZ2VcIiBbdXNlcklkXT1cImF1dGhvcj8uaWRcIiBbdXNlck5hbWVdPVwiYXV0aG9yLm5hbWVcIlxuICAgICAgW2ltYWdlVHlwZV09XCInbmFtZS1pbml0aWFsJ1wiPjwvd3Mtd2lkZ2V0LXVzZXItaW1hZ2U+XG4gICAgPGRpdiBjbGFzcz1cIndpZHRoLWV4cGFuZCBmbGV4IGZsZXgtbWlkZGxlIGZsZXgtYmV0d2VlblwiPlxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW0taGVhZGluZyBmb250LW1lZGl1bSB0ZXh0LWJhc2Ugd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IGF1dGhvci5uYW1lIH19PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=