@sunbird-cb/toc 0.0.9 → 0.0.11
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.
- package/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -55
- package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -126
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -32
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -85
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -100
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -48
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -120
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -92
- package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -48
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -25
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -41
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -89
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -42
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -41
- package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -78
- package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -45
- package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -2
- package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -70
- package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -28
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -187
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -86
- package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -31
- package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -941
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -183
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -327
- package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -297
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +272 -248
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1202 -1148
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -16
- package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -43
- package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -133
- package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -66
- package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -278
- package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -21
- package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -21
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -847
- package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -219
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -209
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -26
- package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -19
- package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -23
- package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -113
- package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -110
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -26
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -19
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -67
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -28
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -77
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -2
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -61
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -20
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +67 -67
- package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -139
- package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -71
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -34
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -56
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -25
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -37
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -32
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -30
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -38
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -51
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -115
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -12
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -51
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -61
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -87
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -36
- package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -62
- package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -24
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -192
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -44
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -99
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -58
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -67
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -112
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -2
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -69
- package/esm2022/lib/_collection-api.mjs +57 -57
- package/esm2022/lib/_constants/widget-content.constants.mjs +19 -19
- package/esm2022/lib/_directives/tooltip.directive.mjs +68 -68
- package/esm2022/lib/_models/common.model.mjs +2 -2
- package/esm2022/lib/_models/error.model.mjs +2 -2
- package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -24
- package/esm2022/lib/_services/rating.service.mjs +89 -89
- package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -29
- package/esm2022/lib/_services/viewer-route-util.mjs +103 -103
- package/esm2022/lib/_services/widget-content.model.mjs +247 -247
- package/esm2022/lib/_services/widget-content.service.mjs +594 -594
- package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -9
- package/esm2022/lib/app-toc-lib.module.mjs +499 -499
- package/esm2022/lib/collection.config.mjs +161 -161
- package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -37
- package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -1436
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -475
- package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -119
- package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -80
- package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -249
- package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -39
- package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -58
- package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -2229
- package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2938 -2907
- package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -157
- package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -48
- package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -47
- package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -766
- package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -243
- package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -116
- package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -44
- package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -1838
- package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -236
- package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -213
- package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -36
- package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -256
- package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -133
- package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -36
- package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -2
- package/esm2022/lib/models/app-toc.model.mjs +38 -38
- package/esm2022/lib/models/auto-complete.model.mjs +2 -2
- package/esm2022/lib/models/card-content.model.mjs +13 -13
- package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -2
- package/esm2022/lib/models/discussion-forum.model.mjs +14 -14
- package/esm2022/lib/models/goal.model.mjs +2 -2
- package/esm2022/lib/models/meta-tag.model.mjs +8 -8
- package/esm2022/lib/models/playlist.model.mjs +2 -2
- package/esm2022/lib/models/profile-revamp.model.mjs +2 -2
- package/esm2022/lib/models/rating.model.mjs +2 -2
- package/esm2022/lib/models/user-profile.model.mjs +21 -21
- package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -24
- package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -24
- package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -60
- package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -106
- package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -25
- package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -25
- package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -51
- package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -16
- package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -18
- package/esm2022/lib/services/access-control.service.mjs +56 -56
- package/esm2022/lib/services/action.service.mjs +23 -23
- package/esm2022/lib/services/app-toc-v2.service.mjs +333 -313
- package/esm2022/lib/services/app-toc.service.mjs +1647 -1613
- package/esm2022/lib/services/certificate.service.mjs +69 -69
- package/esm2022/lib/services/discuss-utils.service.mjs +58 -58
- package/esm2022/lib/services/editor.service.mjs +34 -34
- package/esm2022/lib/services/load-check.service.mjs +21 -21
- package/esm2022/lib/services/loader.service.mjs +33 -33
- package/esm2022/lib/services/mobile-apps.service.mjs +67 -67
- package/esm2022/lib/services/netcore.service.mjs +56 -56
- package/esm2022/lib/services/nps-grid.service.mjs +31 -31
- package/esm2022/lib/services/otp.service.mjs +43 -43
- package/esm2022/lib/services/profile-v2.service.mjs +43 -43
- package/esm2022/lib/services/reset-ratings.service.mjs +19 -19
- package/esm2022/lib/services/resource-download-helper.service.mjs +64 -64
- package/esm2022/lib/services/timer.service.mjs +23 -23
- package/esm2022/lib/services/title-tag.service.mjs +71 -71
- package/esm2022/lib/services/user-profile.service.mjs +55 -55
- package/esm2022/lib/services/viewer-data.service.mjs +64 -64
- package/esm2022/lib/services/viewer-util.service.mjs +599 -590
- package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -291
- package/esm2022/lib/share-toc/share-toc.module.mjs +119 -119
- package/esm2022/public-api.mjs +73 -71
- package/esm2022/sunbird-cb-toc.mjs +4 -4
- package/fesm2022/sunbird-cb-toc.mjs +24942 -24771
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/index.d.ts +6 -5
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -16
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +32 -31
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +16 -15
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +21 -20
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +23 -22
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +16 -15
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +23 -22
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -22
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +10 -9
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +12 -11
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +13 -12
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +19 -18
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +15 -14
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +12 -11
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts +18 -17
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts +15 -14
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +200 -199
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts +17 -16
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts +11 -10
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +39 -38
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +20 -19
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +12 -11
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +184 -183
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +42 -41
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +55 -54
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +48 -47
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +57 -49
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +186 -171
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +9 -8
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +17 -16
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +41 -40
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +22 -21
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +46 -45
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +11 -10
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +11 -10
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts +129 -128
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -51
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +30 -29
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +10 -9
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +8 -7
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +8 -7
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +29 -28
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +25 -24
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +15 -14
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +10 -9
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +13 -12
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +11 -10
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +23 -22
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +9 -8
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +19 -18
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +9 -8
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +16 -15
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts +36 -35
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts +20 -19
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +15 -14
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +14 -13
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +12 -11
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +12 -11
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +16 -15
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +11 -10
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +17 -16
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +12 -11
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +35 -34
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +18 -17
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +16 -15
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +16 -15
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +22 -21
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +13 -12
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.component.d.ts +22 -21
- package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.module.d.ts +10 -9
- package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +48 -47
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +15 -14
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +23 -22
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +20 -19
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +16 -15
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -25
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +22 -21
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +19 -18
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
- package/lib/_collection-api.d.ts +35 -34
- package/lib/_collection-api.d.ts.map +1 -0
- package/lib/_constants/widget-content.constants.d.ts +8 -7
- package/lib/_constants/widget-content.constants.d.ts.map +1 -0
- package/lib/_directives/tooltip.directive.d.ts +18 -17
- package/lib/_directives/tooltip.directive.d.ts.map +1 -0
- package/lib/_models/common.model.d.ts +4 -3
- package/lib/_models/common.model.d.ts.map +1 -0
- package/lib/_models/error.model.d.ts +6 -5
- package/lib/_models/error.model.d.ts.map +1 -0
- package/lib/_pipes/highlight.pipe.d.ts +11 -10
- package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
- package/lib/_services/rating.service.d.ts +19 -18
- package/lib/_services/rating.service.d.ts.map +1 -0
- package/lib/_services/samuhik-charcha.service.d.ts +14 -13
- package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
- package/lib/_services/viewer-route-util.d.ts +9 -8
- package/lib/_services/viewer-route-util.d.ts.map +1 -0
- package/lib/_services/widget-content.model.d.ts +516 -515
- package/lib/_services/widget-content.model.d.ts.map +1 -0
- package/lib/_services/widget-content.service.d.ts +102 -101
- package/lib/_services/widget-content.service.d.ts.map +1 -0
- package/lib/_shared/translate-loader.factory.d.ts +8 -7
- package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
- package/lib/app-toc-lib.module.d.ts +89 -88
- package/lib/app-toc-lib.module.d.ts.map +1 -0
- package/lib/collection.config.d.ts +160 -159
- package/lib/collection.config.d.ts.map +1 -0
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +18 -17
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +226 -225
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +79 -78
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +23 -22
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +32 -31
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +48 -47
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +15 -14
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +22 -21
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
- package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -314
- package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +415 -408
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +48 -47
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +23 -22
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +15 -14
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +150 -149
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +43 -42
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +28 -27
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +16 -15
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +196 -195
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +45 -44
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +55 -54
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +19 -18
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
- package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -43
- package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
- package/lib/components/survey-form-question/survey-form-question.component.d.ts +21 -20
- package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
- package/lib/components/survey-form-section/survey-form-section.component.d.ts +14 -13
- package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
- package/lib/models/app-toc-analytics.model.d.ts +153 -152
- package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
- package/lib/models/app-toc.model.d.ts +85 -84
- package/lib/models/app-toc.model.d.ts.map +1 -0
- package/lib/models/auto-complete.model.d.ts +28 -27
- package/lib/models/auto-complete.model.d.ts.map +1 -0
- package/lib/models/card-content.model.d.ts +20 -19
- package/lib/models/card-content.model.d.ts.map +1 -0
- package/lib/models/content-strip-with-tabs.model.d.ts +45 -44
- package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
- package/lib/models/discussion-forum.model.d.ts +41 -40
- package/lib/models/discussion-forum.model.d.ts.map +1 -0
- package/lib/models/goal.model.d.ts +23 -22
- package/lib/models/goal.model.d.ts.map +1 -0
- package/lib/models/meta-tag.model.d.ts +7 -6
- package/lib/models/meta-tag.model.d.ts.map +1 -0
- package/lib/models/playlist.model.d.ts +24 -23
- package/lib/models/playlist.model.d.ts.map +1 -0
- package/lib/models/profile-revamp.model.d.ts +15 -14
- package/lib/models/profile-revamp.model.d.ts.map +1 -0
- package/lib/models/rating.model.d.ts +18 -17
- package/lib/models/rating.model.d.ts.map +1 -0
- package/lib/models/user-profile.model.d.ts +38 -37
- package/lib/models/user-profile.model.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +17 -16
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +13 -12
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-resolver.service.d.ts +17 -16
- package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/config-resolver.service.d.ts +12 -11
- package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/profile-resolver.service.d.ts +12 -11
- package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -11
- package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts +20 -19
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +9 -8
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts +9 -8
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
- package/lib/services/access-control.service.d.ts +30 -29
- package/lib/services/access-control.service.d.ts.map +1 -0
- package/lib/services/action.service.d.ts +10 -9
- package/lib/services/action.service.d.ts.map +1 -0
- package/lib/services/app-toc-v2.service.d.ts +17 -16
- package/lib/services/app-toc-v2.service.d.ts.map +1 -0
- package/lib/services/app-toc.service.d.ts +241 -235
- package/lib/services/app-toc.service.d.ts.map +1 -0
- package/lib/services/certificate.service.d.ts +43 -42
- package/lib/services/certificate.service.d.ts.map +1 -0
- package/lib/services/discuss-utils.service.d.ts +34 -33
- package/lib/services/discuss-utils.service.d.ts.map +1 -0
- package/lib/services/editor.service.d.ts +18 -17
- package/lib/services/editor.service.d.ts.map +1 -0
- package/lib/services/load-check.service.d.ts +9 -8
- package/lib/services/load-check.service.d.ts.map +1 -0
- package/lib/services/loader.service.d.ts +17 -16
- package/lib/services/loader.service.d.ts.map +1 -0
- package/lib/services/mobile-apps.service.d.ts +39 -38
- package/lib/services/mobile-apps.service.d.ts.map +1 -0
- package/lib/services/netcore.service.d.ts +34 -33
- package/lib/services/netcore.service.d.ts.map +1 -0
- package/lib/services/nps-grid.service.d.ts +16 -15
- package/lib/services/nps-grid.service.d.ts.map +1 -0
- package/lib/services/otp.service.d.ts +21 -20
- package/lib/services/otp.service.d.ts.map +1 -0
- package/lib/services/profile-v2.service.d.ts +21 -20
- package/lib/services/profile-v2.service.d.ts.map +1 -0
- package/lib/services/reset-ratings.service.d.ts +9 -8
- package/lib/services/reset-ratings.service.d.ts.map +1 -0
- package/lib/services/resource-download-helper.service.d.ts +30 -29
- package/lib/services/resource-download-helper.service.d.ts.map +1 -0
- package/lib/services/timer.service.d.ts +10 -9
- package/lib/services/timer.service.d.ts.map +1 -0
- package/lib/services/title-tag.service.d.ts +22 -21
- package/lib/services/title-tag.service.d.ts.map +1 -0
- package/lib/services/user-profile.service.d.ts +25 -24
- package/lib/services/user-profile.service.d.ts.map +1 -0
- package/lib/services/viewer-data.service.d.ts +59 -58
- package/lib/services/viewer-data.service.d.ts.map +1 -0
- package/lib/services/viewer-util.service.d.ts +77 -76
- package/lib/services/viewer-util.service.d.ts.map +1 -0
- package/lib/share-toc/share-toc/share-toc.component.d.ts +57 -56
- package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
- package/lib/share-toc/share-toc.module.d.ts +33 -32
- package/lib/share-toc/share-toc.module.d.ts.map +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +59 -56
- package/public-api.d.ts.map +1 -0
- package/sunbird-cb-toc.d.ts.map +1 -0
|
@@ -1,249 +1,249 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { NsContent } from '../../_services/widget-content.model';
|
|
3
|
-
import { viewerRouteGenerator } from '../../_services/viewer-route-util';
|
|
4
|
-
/* tslint:disable*/
|
|
5
|
-
import _ from 'lodash';
|
|
6
|
-
import { CertificateDialogComponent } from '../../_collection/_common/certificate-dialog/certificate-dialog.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@sunbird-cb/utils-v2";
|
|
9
|
-
import * as i2 from "@angular/material/legacy-dialog";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
import * as i4 from "@angular/router";
|
|
12
|
-
import * as i5 from "@angular/material/icon";
|
|
13
|
-
import * as i6 from "@angular/material/legacy-button";
|
|
14
|
-
import * as i7 from "@angular/material/legacy-menu";
|
|
15
|
-
import * as i8 from "@angular/material/legacy-tooltip";
|
|
16
|
-
import * as i9 from "ng-circle-progress";
|
|
17
|
-
import * as i10 from "@ngx-translate/core";
|
|
18
|
-
export class AppTocContentCardComponent {
|
|
19
|
-
constructor(events, dialog) {
|
|
20
|
-
this.events = events;
|
|
21
|
-
this.dialog = dialog;
|
|
22
|
-
this.content = null;
|
|
23
|
-
this.expandAll = false;
|
|
24
|
-
this.forPreview = false;
|
|
25
|
-
this.hasContentStructure = false;
|
|
26
|
-
this.enumContentTypes = NsContent.EDisplayContentTypes;
|
|
27
|
-
this.contentStructure = {
|
|
28
|
-
assessment: 0,
|
|
29
|
-
finalTest: 0,
|
|
30
|
-
course: 0,
|
|
31
|
-
handsOn: 0,
|
|
32
|
-
interactiveVideo: 0,
|
|
33
|
-
learningModule: 0,
|
|
34
|
-
other: 0,
|
|
35
|
-
pdf: 0,
|
|
36
|
-
survey: 0,
|
|
37
|
-
podcast: 0,
|
|
38
|
-
practiceTest: 0,
|
|
39
|
-
quiz: 0,
|
|
40
|
-
video: 0,
|
|
41
|
-
webModule: 0,
|
|
42
|
-
webPage: 0,
|
|
43
|
-
youtube: 0,
|
|
44
|
-
interactivecontent: 0,
|
|
45
|
-
offlineSession: 0,
|
|
46
|
-
};
|
|
47
|
-
this.defaultThumbnail = '';
|
|
48
|
-
this.viewChildren = false;
|
|
49
|
-
}
|
|
50
|
-
ngOnInit() {
|
|
51
|
-
this.evaluateImmediateChildrenStructure();
|
|
52
|
-
// this.route.data.subscribe(data => {
|
|
53
|
-
// this.defaultThumbnail = data.configData.data.logos.defaultContent
|
|
54
|
-
// }
|
|
55
|
-
// )
|
|
56
|
-
}
|
|
57
|
-
ngOnChanges(changes) {
|
|
58
|
-
for (const property in changes) {
|
|
59
|
-
if (property === 'expandAll') {
|
|
60
|
-
this.viewChildren = this.expandAll;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
get isCollection() {
|
|
65
|
-
if (this.content) {
|
|
66
|
-
return this.content.mimeType === NsContent.EMimeTypes.COLLECTION;
|
|
67
|
-
}
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
get isResource() {
|
|
71
|
-
if (this.content) {
|
|
72
|
-
return (this.content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE
|
|
73
|
-
// || this.content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT
|
|
74
|
-
|| this.content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE
|
|
75
|
-
|| this.content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT
|
|
76
|
-
|| this.content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT);
|
|
77
|
-
}
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
get resourceLink() {
|
|
81
|
-
if (this.content) {
|
|
82
|
-
let url = viewerRouteGenerator(this.content.identifier, this.content.mimeType, this.rootId, this.rootContentType, this.forPreview, this.content.primaryCategory, this.batchId);
|
|
83
|
-
/* tslint:disable-next-line */
|
|
84
|
-
// console.log(url,'=====> content card url link <========')
|
|
85
|
-
return url;
|
|
86
|
-
}
|
|
87
|
-
return { url: '', queryParams: {} };
|
|
88
|
-
}
|
|
89
|
-
progressColor() {
|
|
90
|
-
// if (this.currentProgress <= 30) {
|
|
91
|
-
// return '#D13924'
|
|
92
|
-
// } if (this.currentProgress > 30 && this.currentProgress <= 70) {
|
|
93
|
-
// return '#E99E38'
|
|
94
|
-
// }
|
|
95
|
-
// if (this.currentProgress > 70 && this.currentProgress <= 100) {
|
|
96
|
-
// return '#1D8923'
|
|
97
|
-
// }
|
|
98
|
-
return '#1D8923';
|
|
99
|
-
}
|
|
100
|
-
progressColor2() {
|
|
101
|
-
return '#f27d00';
|
|
102
|
-
}
|
|
103
|
-
evaluateImmediateChildrenStructure() {
|
|
104
|
-
if (this.content && this.content.children && this.content.children.length) {
|
|
105
|
-
this.content.children.forEach((child) => {
|
|
106
|
-
if (child.primaryCategory === NsContent.EPrimaryCategory.COURSE) {
|
|
107
|
-
this.contentStructure.course += 1;
|
|
108
|
-
}
|
|
109
|
-
else if (child.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT) {
|
|
110
|
-
this.contentStructure.other += 1;
|
|
111
|
-
}
|
|
112
|
-
else if (child.primaryCategory === NsContent.EPrimaryCategory.MODULE) {
|
|
113
|
-
this.contentStructure.learningModule += 1;
|
|
114
|
-
}
|
|
115
|
-
else if (child.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION) {
|
|
116
|
-
this.contentStructure.offlineSession += 1;
|
|
117
|
-
}
|
|
118
|
-
else if (child.primaryCategory === NsContent.EPrimaryCategory.RESOURCE) {
|
|
119
|
-
switch (child.mimeType) {
|
|
120
|
-
case NsContent.EMimeTypes.HANDS_ON:
|
|
121
|
-
this.contentStructure.handsOn += 1;
|
|
122
|
-
break;
|
|
123
|
-
case NsContent.EMimeTypes.MP3:
|
|
124
|
-
this.contentStructure.podcast += 1;
|
|
125
|
-
break;
|
|
126
|
-
case NsContent.EMimeTypes.MP4:
|
|
127
|
-
case NsContent.EMimeTypes.M3U8:
|
|
128
|
-
this.contentStructure.video += 1;
|
|
129
|
-
break;
|
|
130
|
-
case NsContent.EMimeTypes.INTERACTION:
|
|
131
|
-
this.contentStructure.interactiveVideo += 1;
|
|
132
|
-
break;
|
|
133
|
-
case NsContent.EMimeTypes.PDF:
|
|
134
|
-
this.contentStructure.pdf += 1;
|
|
135
|
-
break;
|
|
136
|
-
case NsContent.EMimeTypes.OFFLINE_SESSION:
|
|
137
|
-
this.contentStructure.offlineSession += 1;
|
|
138
|
-
break;
|
|
139
|
-
case NsContent.EMimeTypes.SURVEY:
|
|
140
|
-
this.contentStructure.survey += 1;
|
|
141
|
-
break;
|
|
142
|
-
case NsContent.EMimeTypes.HTML:
|
|
143
|
-
this.contentStructure.webPage += 1;
|
|
144
|
-
break;
|
|
145
|
-
case NsContent.EMimeTypes.QUIZ:
|
|
146
|
-
if (child.resourceType === 'Assessment') {
|
|
147
|
-
this.contentStructure.assessment += 1;
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
this.contentStructure.quiz += 1;
|
|
151
|
-
}
|
|
152
|
-
break;
|
|
153
|
-
case NsContent.EMimeTypes.PRACTICE_RESOURCE:
|
|
154
|
-
// case NsContent.EMimeTypes.FINAL_ASSESSMENT:
|
|
155
|
-
// case NsContent.EMimeTypes.PRACTICE_RESOURCE:
|
|
156
|
-
this.contentStructure.practiceTest += 1;
|
|
157
|
-
break;
|
|
158
|
-
case NsContent.EMimeTypes.WEB_MODULE:
|
|
159
|
-
this.contentStructure.webModule += 1;
|
|
160
|
-
break;
|
|
161
|
-
case NsContent.EMimeTypes.YOUTUBE:
|
|
162
|
-
this.contentStructure.youtube += 1;
|
|
163
|
-
break;
|
|
164
|
-
default:
|
|
165
|
-
this.contentStructure.other += 1;
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
for (const key in this.contentStructure) {
|
|
172
|
-
if (this.contentStructure[key] > 0) {
|
|
173
|
-
this.hasContentStructure = true;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
get contextPath() {
|
|
178
|
-
return {
|
|
179
|
-
contextId: this.rootId,
|
|
180
|
-
contextPath: this.rootContentType,
|
|
181
|
-
batchId: this.batchId,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
contentTrackBy(_index, content) {
|
|
185
|
-
if (!content) {
|
|
186
|
-
return null;
|
|
187
|
-
}
|
|
188
|
-
return content.identifier;
|
|
189
|
-
}
|
|
190
|
-
raiseTelemetry() {
|
|
191
|
-
// if (this.forPreview) { return }
|
|
192
|
-
if (this.content) {
|
|
193
|
-
this.events.raiseInteractTelemetry({
|
|
194
|
-
type: 'click',
|
|
195
|
-
subType: `card-tocContentCard`,
|
|
196
|
-
// id: this.content.identifier || '',
|
|
197
|
-
}, {
|
|
198
|
-
// contentId: this.content.identifier || '',
|
|
199
|
-
// contentType: this.content.primaryCategory,
|
|
200
|
-
id: this.content.identifier || '',
|
|
201
|
-
type: this.content.primaryCategory,
|
|
202
|
-
rollup: {
|
|
203
|
-
l1: this.rootId || '',
|
|
204
|
-
},
|
|
205
|
-
ver: `${this.content.version}${''}`,
|
|
206
|
-
}, {
|
|
207
|
-
pageIdExt: `${_.camelCase(this.content.primaryCategory)}-card`,
|
|
208
|
-
module: _.camelCase(this.content.primaryCategory),
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
get isAllowed() {
|
|
213
|
-
if (this.content) {
|
|
214
|
-
return !(NsContent.UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS.indexOf(this.content.mimeType) >= 0);
|
|
215
|
-
}
|
|
216
|
-
return false;
|
|
217
|
-
}
|
|
218
|
-
get isEnabled() {
|
|
219
|
-
return false;
|
|
220
|
-
}
|
|
221
|
-
openCertificateDialog(certData) {
|
|
222
|
-
const cet = certData;
|
|
223
|
-
this.dialog.open(CertificateDialogComponent, {
|
|
224
|
-
// height: '400px',
|
|
225
|
-
width: '1300px',
|
|
226
|
-
data: { cet },
|
|
227
|
-
// panelClass: 'custom-dialog-container',
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentCardComponent, deps: [{ token: i1.EventService }, { token: i2.MatLegacyDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
231
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocContentCardComponent, selector: "ws-app-toc-content-card", inputs: { content: "content", expandAll: "expandAll", rootId: "rootId", rootContentType: "rootContentType", forPreview: "forPreview", batchId: "batchId" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"content\">\r\n <ng-container *ngIf=\"isCollection\">\r\n <div class=\"flex flex-col position-relative\">\r\n <div class=\"card-collection w-auto sm:w-100 padding-right-xl\">\r\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\r\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\r\n <div class=\"flex flex-col flex-wrap flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\r\n <div class=\"text-truncate\" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren\">\r\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\r\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\r\n {{ content?.name }} \r\n </p>\r\n <ng-container *ngIf=\"content.issuedCertificatesSVG\">\r\n <a class=\"certificate-txt\" (click)=\"openCertificateDialog(content.issuedCertificatesSVG)\">\r\n <span class=\"view-certificate-wrapper\">\r\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\r\n <span>{{'apptoccontentcard.viewCertificate' | translate}}</span>\r\n </span>\r\n </a>\r\n </ng-container>\r\n <div class=\"type-container resource mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Resource'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.resource' | translate}}</span>\r\n </div>\r\n <div class=\"type-container module mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Collection'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.module' | translate}}</span>\r\n </div>\r\n <div class=\"type-container course mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Course'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.course' | translate}}</span>\r\n </div>\r\n </div>\r\n <div>\r\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.displayContentType }}</span> -->\r\n <!-- <span class=\"ml-5\"> -->\r\n <!-- <ng-container *ngIf=\"content?.displayContentType\"> | </ng-container> -->\r\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\r\n <span class=\"text-lowercase ws-mat-black60-text\">{{ content?.duration | pipeDurationTransform: 'hms'\r\n }}</span>\r\n <!-- </span> -->\r\n </div>\r\n </div>\r\n <button *ngIf=\"content?.artifactUrl && isAllowed && !isEnabled\" type=\"button\" mat-icon-button\r\n [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage && content.primaryCategory !== 'Course'\">\r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\r\n [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\"\r\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\r\n [outerStrokeColor]=\"progressColor()\" [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\"\r\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\r\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\r\n [backgroundStrokeWidth]=\"3\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\r\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\r\n [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- <div *ngIf=\"hasContentStructure\" class=\"child-meta-container\">\r\n <div class=\"child-structure\"> -->\r\n <!-- <mat-icon class=\"structure-icon\">import_contacts</mat-icon> -->\r\n <!-- <span class=\"oval-white\" *ngIf=\"contentStructure?.course > 0\">\r\n <ng-container>{{ contentStructure?.course }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.course === 1\" > Course</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.course > 1\" > Courses</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.learningModule > 0\">\r\n <ng-container> {{ contentStructure?.learningModule }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.learningModule === 1\" > Module</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.learningModule > 1\" > Modules</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.video > 0\">\r\n <ng-container> {{ contentStructure?.video }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.video === 1\" > Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.video > 1\" > Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.interactiveVideo > 0\">\r\n <ng-container> {{ contentStructure?.interactiveVideo }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.interactiveVideo === 1\" >\r\n Interactive Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.interactiveVideo > 1\" >\r\n Interactive Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.youtube > 0\">\r\n <ng-container> {{ contentStructure?.youtube }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.youtube === 1\" > Youtube Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.youtube > 1\" > Youtube Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.pdf > 0\">\r\n <ng-container> {{ contentStructure?.pdf }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.pdf === 1\" > PDF</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.pdf > 1\" > PDFs</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.podcast > 0\">\r\n <ng-container> {{ contentStructure?.podcast }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.podcast === 1\" > Podcast</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.podcast > 1\" > Podcasts</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webModule > 0\">\r\n <ng-container> {{ contentStructure?.webModule }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webModule === 1\" > Web Module</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webModule > 1\" > Web Modules</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webPage > 0\">\r\n <ng-container> {{ contentStructure?.webPage }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webPage === 1\" > Web Page</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webPage > 1\" > Web Pages</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.quiz > 0\">\r\n <ng-container *ngIf=\"contentStructure?.webPage > 0\">, </ng-container>\r\n <ng-container>{{ contentStructure?.quiz }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.quiz === 1\" > Quiz</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.quiz > 1\" > Quizzes</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.assessment > 0\">\r\n <ng-container> {{ contentStructure?.assessment }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.assessment === 1\" > Assessment</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.assessment > 1\" > Assessments</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.other > 0\">\r\n <ng-container>{{ contentStructure?.other }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.other === 1\" > Other item</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.other > 1\" > Other Items</ng-container>\r\n </span>\r\n </div>\r\n </div> -->\r\n <div class=\"see-all-container\">\r\n <a href=\"javascript:void(0)\" role=\"button\" (click)=\"viewChildren = !viewChildren\"\r\n class=\"margin-left-m see-all-btn tab custom-chevron customicon\" mat-button>\r\n <!-- <ng-container *ngIf=\"!viewChildren\" >See All</ng-container>\r\n <ng-container *ngIf=\"viewChildren\" >See Less</ng-container> -->\r\n <mat-icon *ngIf=\"!viewChildren\">keyboard_arrow_down</mat-icon>\r\n <mat-icon *ngIf=\"viewChildren\">keyboard_arrow_up</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"w-100\" *ngIf=\"content?.identifier && content?.completionPercentage\">\r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"children-container margin-left-l margin-top-s margin-bottom-s\" [hidden]=\"!viewChildren\">\r\n <ws-app-toc-content-card [forPreview]=\"forPreview\" [content]=\"child\" [expandAll]=\"expandAll\" [rootId]=\"rootId\"\r\n [batchId]=\"batchId\" [rootContentType]=\"rootContentType\"\r\n *ngFor=\"let child of content?.children; trackBy: contentTrackBy\">\r\n </ws-app-toc-content-card>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"isResource\" class=\"resource-container\">\r\n <!-- <ws-widget-display-content-type-icon class=\"flex\" [displayContentType]=\"content?.displayContentType\">\r\n </ws-widget-display-content-type-icon> -->\r\n <!-- <div class=\"img-container\"> -->\r\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\r\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\r\n <!-- <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\" [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container> -->\r\n <!-- </div> -->\r\n\r\n <div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\r\n <!-- deactivated as per NIC CEO requirement to access course wthout login -->\r\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\" [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\r\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\r\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\r\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\r\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\r\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\r\n {{ content?.name }}\r\n </p>\r\n <span class=\"content-type optional-span\" *ngIf=\"content?.optionalReading\">{{'apptoccontentcard.optional' | translate}}</span>\r\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\r\n </div>\r\n <div class=\"resicons ws-mat-black60-text\">\r\n <!-- <span class=\"mat-body-strong content-type ws-mat-default-text\">{{ content?.contentType }}</span> -->\r\n <!-- <span class=\"ml-5\"> -->\r\n <!-- <ng-container *ngIf=\"content?.displayContentType\"> | </ng-container> -->\r\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\r\n <img src=\"/assets/icons/content/grey/video.svg\" alt=\"Video\" class=\"float-left margin-right-xs\" *ngIf=\"content?.mimeType === 'video/mp4' || content?.mimeType === 'video/x-youtube' ||\r\n content?.mimeType ==='application/x-mpegURL'\">\r\n <img src=\"/assets/icons/content/grey/audio.svg\" alt=\"Audio\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'audio/mpeg'\">\r\n <img src=\"/assets/icons/content/grey/pdf.svg\" alt=\"PDF\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/pdf'\">\r\n <!-- <img src=\"/assets/icons/content/grey/resource.svg\" alt=\"Survey\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/survey'\"> -->\r\n <img src=\"/assets/icons/content/grey/link.svg\" alt=\"InteractiveContent\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/vnd.ekstep.html-archive' || content?.mimeType === 'text/x-url'\">\r\n <img src=\"/assets/icons/content/grey/assessment.svg\" alt=\"Assessment\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/json' || content?.mimeType === 'application/quiz' || content?.mimeType === 'application/vnd.sunbird.questionset'\">\r\n <img src=\"/assets/icons/content/grey/image.svg\" alt=\"Image\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'image/png' || content?.mimeType === 'image/jpeg'\">\r\n <img src=\"/assets/icons/content/grey/content_copy.svg\" class=\"contenticon\" alt=\"Course\"\r\n *ngIf=\"content.mimeType === 'application/vnd.ekstep.content-collection' || content?.mimeType === 'application/survey'\">\r\n <img src=\"/assets/icons/content/grey/module.svg\" class=\"float-left margin-right-xs\" alt=\"offline sessions\"\r\n *ngIf=\"content.mimeType === 'application/offline' || content?.mimeType === 'application/survey'\">\r\n <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span>\r\n <!-- </span> -->\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\r\n <!-- <div class=\"type-container resource\" *ngIf=\"content?.contentType === 'Resource'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Resource</span>\r\n </div>\r\n <div class=\"type-container module\" *ngIf=\"content?.contentType === 'Collection'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Module</span>\r\n </div>\r\n <div class=\"type-container course\" *ngIf=\"content?.contentType === 'Course'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Course</span>\r\n </div> -->\r\n <button *ngIf=\"!forPreview && content?.artifactUrl && !isXSmall && isAllowed && isEnabled\" type=\"button\" mat-icon-button\r\n class=\"\" [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage ; else elseBlock\">\r\n \r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\r\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.completed' | translate}}\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\" [radius]=\"12\"\r\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor2()\"\r\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.inProgress' | translate}}\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n \r\n </ng-container>\r\n <ng-template #elseBlock>\r\n <circle-progress class=\"flex items-center progress\"\r\n [percent]=\"0\"\r\n [radius]=\"12\"\r\n [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\"\r\n [outerStrokeColor]=\"'#808080'\"\r\n [innerStrokeColor]=\"'#808080'\"\r\n [animation]=\"true\"\r\n [space]=\"-3\"\r\n [showUnits]=\"false\"\r\n [animationDuration]=\"300\"\r\n [showTitle]=\"false\"\r\n [backgroundPadding]=\"0\"\r\n [backgroundPadding]=\"-9\"\r\n [outerStrokeLinecap]=\"'butt'\"\r\n matTooltip=\"{{'apptoccontentcard.notStarted' | translate}}\"\r\n [showSubtitle]=\"false\" \r\n [showInnerStroke]=\"true\" \r\n [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"></circle-progress>\r\n <!-- <p>no data</p> -->\r\n </ng-template>\r\n </div>\r\n\r\n \r\n\r\n <!-- <button *ngIf=\"content?.artifactUrl\" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button> -->\r\n </div>\r\n <!-- <div class=\"resource-meta width-expand\">\r\n <a [routerLink]=\"resourceLink.url\" [queryParams]=\"resourceLink.queryParams\">\r\n <h3 *ngIf=\"content?.displayContentType !== enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\r\n {{ content?.name }}\r\n </h3>\r\n <h1 *ngIf=\"content?.displayContentType === enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\r\n {{ content?.name }}\r\n </h1>\r\n </a>\r\n <span class=\"mat-body-strong margin-left-xs\">{{ content?.duration | pipeDurationTransform: 'time24' }}\r\n </span>\r\n </div> -->\r\n </div>\r\n</ng-container>\r\n\r\n<mat-menu #buttonMenu=\"matMenu\">\r\n <a mat-menu-item [routerLink]=\"'../' + content?.identifier + '/overview'\" [queryParams]=\"contextPath\"\r\n class=\"flex flex-middle\">\r\n <mat-icon>toc</mat-icon>\r\n <h3 class=\"margin-remove\" >\r\n {{'apptoccontentcard.viewDetails' | translate}}\r\n </h3>\r\n </a>\r\n <!-- TODO: Hiding this from here for now, as the functionalities are not working -->\r\n <!-- <div mat-menu-item>\r\n <ws-widget-btn-content-download [widgetData]=\"\r\n content\r\n | pipePartialContent\r\n : ['identifier', 'contentType', 'resourceType', 'mimeType', 'downloadUrl', 'isExternal']\r\n \"></ws-widget-btn-content-download>\r\n <ws-widget-btn-content-like [widgetData]=\"content | pipePartialContent: ['identifier']\">\r\n </ws-widget-btn-content-like>\r\n <ws-widget-btn-content-share [widgetData]=\"content\"></ws-widget-btn-content-share>\r\n <ws-widget-btn-goals></ws-widget-btn-goals>\r\n <ws-widget-btn-playlist></ws-widget-btn-playlist>\r\n </div> -->\r\n</mat-menu>\r\n", styles: [".customicon{position:absolute;top:-.5em;right:-4px}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.custom-chevron:focus{outline:0px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:0}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.certificate-txt{padding:0 20px;color:#0273b6;font-weight:700}.view-certificate-wrapper{display:flex;border-radius:4px;border:1.5px solid rgb(0,116,182);opacity:1;padding:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.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: i6.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: i7.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatLegacyMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i8.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i9.CircleProgressComponent, selector: "circle-progress", inputs: ["name", "class", "backgroundGradient", "backgroundColor", "backgroundGradientStopColor", "backgroundOpacity", "backgroundStroke", "backgroundStrokeWidth", "backgroundPadding", "radius", "space", "percent", "toFixed", "maxPercent", "renderOnClick", "units", "unitsFontSize", "unitsFontWeight", "unitsColor", "outerStrokeGradient", "outerStrokeWidth", "outerStrokeColor", "outerStrokeGradientStopColor", "outerStrokeLinecap", "innerStrokeColor", "innerStrokeWidth", "titleFormat", "title", "titleColor", "titleFontSize", "titleFontWeight", "subtitleFormat", "subtitle", "subtitleColor", "subtitleFontSize", "subtitleFontWeight", "imageSrc", "imageHeight", "imageWidth", "animation", "animateTitle", "animateSubtitle", "animationDuration", "showTitle", "showSubtitle", "showUnits", "showImage", "showBackground", "showInnerStroke", "clockwise", "responsive", "startFromZero", "showZeroOuterStroke", "lazy", "options"], outputs: ["onClick"] }, { kind: "component", type: AppTocContentCardComponent, selector: "ws-app-toc-content-card", inputs: ["content", "expandAll", "rootId", "rootContentType", "forPreview", "batchId"] }, { kind: "pipe", type: i1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] }); }
|
|
232
|
-
}
|
|
233
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentCardComponent, decorators: [{
|
|
234
|
-
type: Component,
|
|
235
|
-
args: [{ selector: 'ws-app-toc-content-card', template: "<ng-container *ngIf=\"content\">\r\n <ng-container *ngIf=\"isCollection\">\r\n <div class=\"flex flex-col position-relative\">\r\n <div class=\"card-collection w-auto sm:w-100 padding-right-xl\">\r\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\r\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\r\n <div class=\"flex flex-col flex-wrap flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\r\n <div class=\"text-truncate\" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren\">\r\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\r\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\r\n {{ content?.name }} \r\n </p>\r\n <ng-container *ngIf=\"content.issuedCertificatesSVG\">\r\n <a class=\"certificate-txt\" (click)=\"openCertificateDialog(content.issuedCertificatesSVG)\">\r\n <span class=\"view-certificate-wrapper\">\r\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\r\n <span>{{'apptoccontentcard.viewCertificate' | translate}}</span>\r\n </span>\r\n </a>\r\n </ng-container>\r\n <div class=\"type-container resource mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Resource'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.resource' | translate}}</span>\r\n </div>\r\n <div class=\"type-container module mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Collection'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.module' | translate}}</span>\r\n </div>\r\n <div class=\"type-container course mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Course'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>{{'apptoccontentcard.course' | translate}}</span>\r\n </div>\r\n </div>\r\n <div>\r\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.displayContentType }}</span> -->\r\n <!-- <span class=\"ml-5\"> -->\r\n <!-- <ng-container *ngIf=\"content?.displayContentType\"> | </ng-container> -->\r\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\r\n <span class=\"text-lowercase ws-mat-black60-text\">{{ content?.duration | pipeDurationTransform: 'hms'\r\n }}</span>\r\n <!-- </span> -->\r\n </div>\r\n </div>\r\n <button *ngIf=\"content?.artifactUrl && isAllowed && !isEnabled\" type=\"button\" mat-icon-button\r\n [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage && content.primaryCategory !== 'Course'\">\r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\r\n [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\"\r\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\r\n [outerStrokeColor]=\"progressColor()\" [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\"\r\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\r\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\r\n [backgroundStrokeWidth]=\"3\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\r\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\r\n [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- <div *ngIf=\"hasContentStructure\" class=\"child-meta-container\">\r\n <div class=\"child-structure\"> -->\r\n <!-- <mat-icon class=\"structure-icon\">import_contacts</mat-icon> -->\r\n <!-- <span class=\"oval-white\" *ngIf=\"contentStructure?.course > 0\">\r\n <ng-container>{{ contentStructure?.course }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.course === 1\" > Course</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.course > 1\" > Courses</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.learningModule > 0\">\r\n <ng-container> {{ contentStructure?.learningModule }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.learningModule === 1\" > Module</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.learningModule > 1\" > Modules</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.video > 0\">\r\n <ng-container> {{ contentStructure?.video }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.video === 1\" > Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.video > 1\" > Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.interactiveVideo > 0\">\r\n <ng-container> {{ contentStructure?.interactiveVideo }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.interactiveVideo === 1\" >\r\n Interactive Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.interactiveVideo > 1\" >\r\n Interactive Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.youtube > 0\">\r\n <ng-container> {{ contentStructure?.youtube }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.youtube === 1\" > Youtube Video</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.youtube > 1\" > Youtube Videos</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.pdf > 0\">\r\n <ng-container> {{ contentStructure?.pdf }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.pdf === 1\" > PDF</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.pdf > 1\" > PDFs</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.podcast > 0\">\r\n <ng-container> {{ contentStructure?.podcast }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.podcast === 1\" > Podcast</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.podcast > 1\" > Podcasts</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webModule > 0\">\r\n <ng-container> {{ contentStructure?.webModule }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webModule === 1\" > Web Module</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webModule > 1\" > Web Modules</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webPage > 0\">\r\n <ng-container> {{ contentStructure?.webPage }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webPage === 1\" > Web Page</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.webPage > 1\" > Web Pages</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.quiz > 0\">\r\n <ng-container *ngIf=\"contentStructure?.webPage > 0\">, </ng-container>\r\n <ng-container>{{ contentStructure?.quiz }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.quiz === 1\" > Quiz</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.quiz > 1\" > Quizzes</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.assessment > 0\">\r\n <ng-container> {{ contentStructure?.assessment }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.assessment === 1\" > Assessment</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.assessment > 1\" > Assessments</ng-container>\r\n </span>\r\n <span class=\"oval-white\" *ngIf=\"contentStructure?.other > 0\">\r\n <ng-container>{{ contentStructure?.other }}</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.other === 1\" > Other item</ng-container>\r\n <ng-container *ngIf=\"contentStructure?.other > 1\" > Other Items</ng-container>\r\n </span>\r\n </div>\r\n </div> -->\r\n <div class=\"see-all-container\">\r\n <a href=\"javascript:void(0)\" role=\"button\" (click)=\"viewChildren = !viewChildren\"\r\n class=\"margin-left-m see-all-btn tab custom-chevron customicon\" mat-button>\r\n <!-- <ng-container *ngIf=\"!viewChildren\" >See All</ng-container>\r\n <ng-container *ngIf=\"viewChildren\" >See Less</ng-container> -->\r\n <mat-icon *ngIf=\"!viewChildren\">keyboard_arrow_down</mat-icon>\r\n <mat-icon *ngIf=\"viewChildren\">keyboard_arrow_up</mat-icon>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"w-100\" *ngIf=\"content?.identifier && content?.completionPercentage\">\r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n </div> -->\r\n </div>\r\n\r\n <div class=\"children-container margin-left-l margin-top-s margin-bottom-s\" [hidden]=\"!viewChildren\">\r\n <ws-app-toc-content-card [forPreview]=\"forPreview\" [content]=\"child\" [expandAll]=\"expandAll\" [rootId]=\"rootId\"\r\n [batchId]=\"batchId\" [rootContentType]=\"rootContentType\"\r\n *ngFor=\"let child of content?.children; trackBy: contentTrackBy\">\r\n </ws-app-toc-content-card>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"isResource\" class=\"resource-container\">\r\n <!-- <ws-widget-display-content-type-icon class=\"flex\" [displayContentType]=\"content?.displayContentType\">\r\n </ws-widget-display-content-type-icon> -->\r\n <!-- <div class=\"img-container\"> -->\r\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\r\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\r\n <!-- <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\" [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress>\r\n </ng-container> -->\r\n <!-- </div> -->\r\n\r\n <div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\r\n <!-- deactivated as per NIC CEO requirement to access course wthout login -->\r\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\" [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\r\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\r\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\r\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\r\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\r\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\r\n {{ content?.name }}\r\n </p>\r\n <span class=\"content-type optional-span\" *ngIf=\"content?.optionalReading\">{{'apptoccontentcard.optional' | translate}}</span>\r\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\r\n </div>\r\n <div class=\"resicons ws-mat-black60-text\">\r\n <!-- <span class=\"mat-body-strong content-type ws-mat-default-text\">{{ content?.contentType }}</span> -->\r\n <!-- <span class=\"ml-5\"> -->\r\n <!-- <ng-container *ngIf=\"content?.displayContentType\"> | </ng-container> -->\r\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\r\n <img src=\"/assets/icons/content/grey/video.svg\" alt=\"Video\" class=\"float-left margin-right-xs\" *ngIf=\"content?.mimeType === 'video/mp4' || content?.mimeType === 'video/x-youtube' ||\r\n content?.mimeType ==='application/x-mpegURL'\">\r\n <img src=\"/assets/icons/content/grey/audio.svg\" alt=\"Audio\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'audio/mpeg'\">\r\n <img src=\"/assets/icons/content/grey/pdf.svg\" alt=\"PDF\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/pdf'\">\r\n <!-- <img src=\"/assets/icons/content/grey/resource.svg\" alt=\"Survey\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/survey'\"> -->\r\n <img src=\"/assets/icons/content/grey/link.svg\" alt=\"InteractiveContent\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/vnd.ekstep.html-archive' || content?.mimeType === 'text/x-url'\">\r\n <img src=\"/assets/icons/content/grey/assessment.svg\" alt=\"Assessment\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'application/json' || content?.mimeType === 'application/quiz' || content?.mimeType === 'application/vnd.sunbird.questionset'\">\r\n <img src=\"/assets/icons/content/grey/image.svg\" alt=\"Image\" class=\"float-left margin-right-xs\"\r\n *ngIf=\"content?.mimeType === 'image/png' || content?.mimeType === 'image/jpeg'\">\r\n <img src=\"/assets/icons/content/grey/content_copy.svg\" class=\"contenticon\" alt=\"Course\"\r\n *ngIf=\"content.mimeType === 'application/vnd.ekstep.content-collection' || content?.mimeType === 'application/survey'\">\r\n <img src=\"/assets/icons/content/grey/module.svg\" class=\"float-left margin-right-xs\" alt=\"offline sessions\"\r\n *ngIf=\"content.mimeType === 'application/offline' || content?.mimeType === 'application/survey'\">\r\n <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span>\r\n <!-- </span> -->\r\n </div>\r\n </div>\r\n </a>\r\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\r\n <!-- <div class=\"type-container resource\" *ngIf=\"content?.contentType === 'Resource'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Resource</span>\r\n </div>\r\n <div class=\"type-container module\" *ngIf=\"content?.contentType === 'Collection'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Module</span>\r\n </div>\r\n <div class=\"type-container course\" *ngIf=\"content?.contentType === 'Course'\">\r\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\r\n <span>Course</span>\r\n </div> -->\r\n <button *ngIf=\"!forPreview && content?.artifactUrl && !isXSmall && isAllowed && isEnabled\" type=\"button\" mat-icon-button\r\n class=\"\" [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button>\r\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage ; else elseBlock\">\r\n \r\n <ng-container *ngIf=\"content?.completionStatus == 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\r\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.completed' | translate}}\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n <ng-container *ngIf=\"content?.completionStatus < 2\">\r\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\" [radius]=\"12\"\r\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor2()\"\r\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\r\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\r\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.inProgress' | translate}}\"\r\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\r\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\r\n </circle-progress>\r\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\r\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\r\n [progressType]=\"'percentage'\">\r\n </ws-widget-content-progress> -->\r\n </ng-container>\r\n \r\n </ng-container>\r\n <ng-template #elseBlock>\r\n <circle-progress class=\"flex items-center progress\"\r\n [percent]=\"0\"\r\n [radius]=\"12\"\r\n [outerStrokeWidth]=\"3\"\r\n [innerStrokeWidth]=\"3\"\r\n [outerStrokeColor]=\"'#808080'\"\r\n [innerStrokeColor]=\"'#808080'\"\r\n [animation]=\"true\"\r\n [space]=\"-3\"\r\n [showUnits]=\"false\"\r\n [animationDuration]=\"300\"\r\n [showTitle]=\"false\"\r\n [backgroundPadding]=\"0\"\r\n [backgroundPadding]=\"-9\"\r\n [outerStrokeLinecap]=\"'butt'\"\r\n matTooltip=\"{{'apptoccontentcard.notStarted' | translate}}\"\r\n [showSubtitle]=\"false\" \r\n [showInnerStroke]=\"true\" \r\n [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"></circle-progress>\r\n <!-- <p>no data</p> -->\r\n </ng-template>\r\n </div>\r\n\r\n \r\n\r\n <!-- <button *ngIf=\"content?.artifactUrl\" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"buttonMenu\">\r\n <mat-icon>more_vertical</mat-icon>\r\n </button> -->\r\n </div>\r\n <!-- <div class=\"resource-meta width-expand\">\r\n <a [routerLink]=\"resourceLink.url\" [queryParams]=\"resourceLink.queryParams\">\r\n <h3 *ngIf=\"content?.displayContentType !== enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\r\n {{ content?.name }}\r\n </h3>\r\n <h1 *ngIf=\"content?.displayContentType === enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\r\n {{ content?.name }}\r\n </h1>\r\n </a>\r\n <span class=\"mat-body-strong margin-left-xs\">{{ content?.duration | pipeDurationTransform: 'time24' }}\r\n </span>\r\n </div> -->\r\n </div>\r\n</ng-container>\r\n\r\n<mat-menu #buttonMenu=\"matMenu\">\r\n <a mat-menu-item [routerLink]=\"'../' + content?.identifier + '/overview'\" [queryParams]=\"contextPath\"\r\n class=\"flex flex-middle\">\r\n <mat-icon>toc</mat-icon>\r\n <h3 class=\"margin-remove\" >\r\n {{'apptoccontentcard.viewDetails' | translate}}\r\n </h3>\r\n </a>\r\n <!-- TODO: Hiding this from here for now, as the functionalities are not working -->\r\n <!-- <div mat-menu-item>\r\n <ws-widget-btn-content-download [widgetData]=\"\r\n content\r\n | pipePartialContent\r\n : ['identifier', 'contentType', 'resourceType', 'mimeType', 'downloadUrl', 'isExternal']\r\n \"></ws-widget-btn-content-download>\r\n <ws-widget-btn-content-like [widgetData]=\"content | pipePartialContent: ['identifier']\">\r\n </ws-widget-btn-content-like>\r\n <ws-widget-btn-content-share [widgetData]=\"content\"></ws-widget-btn-content-share>\r\n <ws-widget-btn-goals></ws-widget-btn-goals>\r\n <ws-widget-btn-playlist></ws-widget-btn-playlist>\r\n </div> -->\r\n</mat-menu>\r\n", styles: [".customicon{position:absolute;top:-.5em;right:-4px}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.custom-chevron:focus{outline:0px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:0}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.certificate-txt{padding:0 20px;color:#0273b6;font-weight:700}.view-certificate-wrapper{display:flex;border-radius:4px;border:1.5px solid rgb(0,116,182);opacity:1;padding:8px}\n"] }]
|
|
236
|
-
}], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.MatLegacyDialog }]; }, propDecorators: { content: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], expandAll: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], rootId: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], rootContentType: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], forPreview: [{
|
|
245
|
-
type: Input
|
|
246
|
-
}], batchId: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jb250ZW50LWNhcmQvYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jb250ZW50LWNhcmQvYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFBO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUd4RSxtQkFBbUI7QUFDbkIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJFQUEyRSxDQUFBOzs7Ozs7Ozs7Ozs7QUFRdEgsTUFBTSxPQUFPLDBCQUEwQjtJQStCckMsWUFDVSxNQUFvQixFQUNwQixNQUFpQjtRQURqQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFoQ2xCLFlBQU8sR0FBOEIsSUFBSSxDQUFBO1FBQ3pDLGNBQVMsR0FBRyxLQUFLLENBQUE7UUFHakIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUUzQix3QkFBbUIsR0FBRyxLQUFLLENBQUE7UUFDM0IscUJBQWdCLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFBO1FBQ2pELHFCQUFnQixHQUEyQjtZQUN6QyxVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxDQUFD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Q0FBQzsrR0F6T1UsMEJBQTBCO21HQUExQiwwQkFBMEIsZ1BDZnZDLHdzeEJBcVdBLHV3TUR0VmEsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjtpSUFLMUIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IE5zQ29udGVudCB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5tb2RlbCdcclxuaW1wb3J0IHsgdmlld2VyUm91dGVHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvdmlld2VyLXJvdXRlLXV0aWwnXHJcbmltcG9ydCB7IE5zQXBwVG9jIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcC10b2MubW9kZWwnXHJcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xyXG4vKiB0c2xpbnQ6ZGlzYWJsZSovXHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IHsgQ2VydGlmaWNhdGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9fY29sbGVjdGlvbi9fY29tbW9uL2NlcnRpZmljYXRlLWRpYWxvZy9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50J1xyXG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnd3MtYXBwLXRvYy1jb250ZW50LWNhcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdG9jLWNvbnRlbnQtY2FyZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcFRvY0NvbnRlbnRDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXHJcbiAgQElucHV0KCkgZXhwYW5kQWxsID0gZmFsc2VcclxuICBASW5wdXQoKSByb290SWQhOiBzdHJpbmdcclxuICBASW5wdXQoKSByb290Q29udGVudFR5cGUhOiBzdHJpbmdcclxuICBASW5wdXQoKSBmb3JQcmV2aWV3ID0gZmFsc2VcclxuICBASW5wdXQoKSBiYXRjaElkITogc3RyaW5nXHJcbiAgaGFzQ29udGVudFN0cnVjdHVyZSA9IGZhbHNlXHJcbiAgZW51bUNvbnRlbnRUeXBlcyA9IE5zQ29udGVudC5FRGlzcGxheUNvbnRlbnRUeXBlc1xyXG4gIGNvbnRlbnRTdHJ1Y3R1cmU6IE5zQXBwVG9jLklUb2NTdHJ1Y3R1cmUgPSB7XHJcbiAgICBhc3Nlc3NtZW50OiAwLFxyXG4gICAgZmluYWxUZXN0OiAwLFxyXG4gICAgY291cnNlOiAwLFxyXG4gICAgaGFuZHNPbjogMCxcclxuICAgIGludGVyYWN0aXZlVmlkZW86IDAsXHJcbiAgICBsZWFybmluZ01vZHVsZTogMCxcclxuICAgIG90aGVyOiAwLFxyXG4gICAgcGRmOiAwLFxyXG4gICAgc3VydmV5OiAwLFxyXG4gICAgcG9kY2FzdDogMCxcclxuICAgIHByYWN0aWNlVGVzdDogMCxcclxuICAgIHF1aXo6IDAsXHJcbiAgICB2aWRlbzogMCxcclxuICAgIHdlYk1vZHVsZTogMCxcclxuICAgIHdlYlBhZ2U6IDAsXHJcbiAgICB5b3V0dWJlOiAwLFxyXG4gICAgaW50ZXJhY3RpdmVjb250ZW50OiAwLFxyXG4gICAgb2ZmbGluZVNlc3Npb246IDAsXHJcbiAgfVxyXG4gIGRlZmF1bHRUaHVtYm5haWwgPSAnJ1xyXG4gIHZpZXdDaGlsZHJlbiA9IGZhbHNlXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGV2ZW50czogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZXZhbHVhdGVJbW1lZGlhdGVDaGlsZHJlblN0cnVjdHVyZSgpXHJcbiAgICAvLyB0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgLy8gICAgIHRoaXMuZGVmYXVsdFRodW1ibmFpbCA9IGRhdGEuY29uZmlnRGF0YS5kYXRhLmxvZ29zLmRlZmF1bHRDb250ZW50XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIClcclxuICAgIFxyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGNoYW5nZXMpIHtcclxuICAgICAgaWYgKHByb3BlcnR5ID09PSAnZXhwYW5kQWxsJykge1xyXG4gICAgICAgIHRoaXMudmlld0NoaWxkcmVuID0gdGhpcy5leHBhbmRBbGxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgaXNDb2xsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb250ZW50Lm1pbWVUeXBlID09PSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5DT0xMRUNUSU9OXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgZ2V0IGlzUmVzb3VyY2UoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0VcclxuICAgICAgICAvLyB8fCB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1RcclxuICAgICAgICB8fCB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5QUkFDVElDRV9SRVNPVVJDRVxyXG4gICAgICAgIHx8IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkZJTkFMX0FTU0VTU01FTlRcclxuICAgICAgICB8fCB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5DT01QX0FTU0VTU01FTlRcclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG4gIGdldCByZXNvdXJjZUxpbmsoKTogeyB1cmw6IHN0cmluZzsgcXVlcnlQYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfSB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIGxldCB1cmwgPSB2aWV3ZXJSb3V0ZUdlbmVyYXRvcihcclxuICAgICAgICB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcclxuICAgICAgICB0aGlzLmNvbnRlbnQubWltZVR5cGUsXHJcbiAgICAgICAgdGhpcy5yb290SWQsXHJcbiAgICAgICAgdGhpcy5yb290Q29udGVudFR5cGUsXHJcbiAgICAgICAgdGhpcy5mb3JQcmV2aWV3LFxyXG4gICAgICAgIHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXHJcbiAgICAgICAgdGhpcy5iYXRjaElkXHJcbiAgICAgIClcclxuICAgICAgXHJcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyh1cmwsJz09PT09PiBjb250ZW50IGNhcmQgdXJsIGxpbmsgPD09PT09PT09JylcclxuICAgICAgcmV0dXJuIHVybFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgdXJsOiAnJywgcXVlcnlQYXJhbXM6IHt9IH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcm9ncmVzc0NvbG9yKCk6IHN0cmluZyB7XHJcbiAgICAvLyBpZiAodGhpcy5jdXJyZW50UHJvZ3Jlc3MgPD0gMzApIHtcclxuICAgIC8vICAgcmV0dXJuICcjRDEzOTI0J1xyXG4gICAgLy8gfSBpZiAodGhpcy5jdXJyZW50UHJvZ3Jlc3MgPiAzMCAmJiB0aGlzLmN1cnJlbnRQcm9ncmVzcyA8PSA3MCkge1xyXG4gICAgLy8gICByZXR1cm4gJyNFOTlFMzgnXHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAodGhpcy5jdXJyZW50UHJvZ3Jlc3MgPiA3MCAmJiB0aGlzLmN1cnJlbnRQcm9ncmVzcyA8PSAxMDApIHtcclxuICAgIC8vICAgcmV0dXJuICcjMUQ4OTIzJ1xyXG4gICAgLy8gfVxyXG4gICBcclxuICAgIHJldHVybiAnIzFEODkyMydcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcm9ncmVzc0NvbG9yMigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICcjZjI3ZDAwJ1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZXZhbHVhdGVJbW1lZGlhdGVDaGlsZHJlblN0cnVjdHVyZSgpIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNoaWxkcmVuICYmIHRoaXMuY29udGVudC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5jb250ZW50LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBOc0NvbnRlbnQuSUNvbnRlbnQpID0+IHtcclxuICAgICAgICBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5DT1VSU0UpIHtcclxuICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5jb3Vyc2UgKz0gMVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1QpIHtcclxuICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5vdGhlciArPSAxXHJcbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk1PRFVMRSkge1xyXG4gICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLmxlYXJuaW5nTW9kdWxlICs9IDFcclxuICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuT0ZGTElORV9TRVNTSU9OKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUub2ZmbGluZVNlc3Npb24gKz0gMVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5SRVNPVVJDRSkge1xyXG4gICAgICAgICAgc3dpdGNoIChjaGlsZC5taW1lVHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkhBTkRTX09OOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5oYW5kc09uICs9IDFcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLk1QMzpcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucG9kY2FzdCArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5NUDQ6XHJcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuTTNVODpcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUudmlkZW8gKz0gMVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSU5URVJBQ1RJT046XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLmludGVyYWN0aXZlVmlkZW8gKz0gMVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuUERGOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5wZGYgKz0gMVxyXG4gICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuT0ZGTElORV9TRVNTSU9OOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5vZmZsaW5lU2Vzc2lvbiArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5TVVJWRVk6XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLnN1cnZleSArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5IVE1MOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS53ZWJQYWdlICs9IDFcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlFVSVo6XHJcbiAgICAgICAgICAgICAgaWYgKGNoaWxkLnJlc291cmNlVHlwZSA9PT0gJ0Fzc2Vzc21lbnQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUuYXNzZXNzbWVudCArPSAxXHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5xdWl6ICs9IDFcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5QUkFDVElDRV9SRVNPVVJDRTpcclxuICAgICAgICAgICAgICAvLyBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLkZJTkFMX0FTU0VTU01FTlQ6XHJcbiAgICAgICAgICAgICAgLy8gY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5QUkFDVElDRV9SRVNPVVJDRTpcclxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucHJhY3RpY2VUZXN0ICs9IDFcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLldFQl9NT0RVTEU6XHJcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLndlYk1vZHVsZSArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5ZT1VUVUJFOlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS55b3V0dWJlICs9IDFcclxuICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5vdGhlciArPSAxXHJcbiAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUpIHtcclxuICAgICAgaWYgKHRoaXMuY29udGVudFN0cnVjdHVyZVtrZXldID4gMCkge1xyXG4gICAgICAgIHRoaXMuaGFzQ29udGVudFN0cnVjdHVyZSA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbnRleHRQYXRoKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29udGV4dElkOiB0aGlzLnJvb3RJZCxcclxuICAgICAgY29udGV4dFBhdGg6IHRoaXMucm9vdENvbnRlbnRUeXBlLFxyXG4gICAgICBiYXRjaElkOiB0aGlzLmJhdGNoSWQsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udGVudFRyYWNrQnkoX2luZGV4OiBudW1iZXIsIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCkge1xyXG4gICAgaWYgKCFjb250ZW50KSB7XHJcbiAgICAgIHJldHVybiBudWxsXHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGVudC5pZGVudGlmaWVyXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmFpc2VUZWxlbWV0cnkoKSB7XHJcbiAgICAvLyBpZiAodGhpcy5mb3JQcmV2aWV3KSB7IHJldHVybiB9XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMuZXZlbnRzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdHlwZTogJ2NsaWNrJyxcclxuICAgICAgICAgIHN1YlR5cGU6IGBjYXJkLXRvY0NvbnRlbnRDYXJkYCxcclxuICAgICAgICAgIC8vIGlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllciB8fCAnJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC8vIGNvbnRlbnRJZDogdGhpcy5jb250ZW50LmlkZW50aWZpZXIgfHwgJycsXHJcbiAgICAgICAgICAvLyBjb250ZW50VHlwZTogdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSxcclxuICAgICAgICAgIGlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllciB8fCAnJyxcclxuICAgICAgICAgIHR5cGU6IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXHJcbiAgICAgICAgICByb2xsdXA6IHtcclxuICAgICAgICAgICAgbDE6IHRoaXMucm9vdElkIHx8ICcnLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHZlcjogYCR7dGhpcy5jb250ZW50LnZlcnNpb259JHsnJ31gLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcGFnZUlkRXh0OiBgJHtfLmNhbWVsQ2FzZSh0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5KX0tY2FyZGAsXHJcbiAgICAgICAgICBtb2R1bGU6IF8uY2FtZWxDYXNlKHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkpLFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBpc0FsbG93ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHJldHVybiAhKE5zQ29udGVudC5VTl9TVVBQT1JURURfREFUQV9UWVBFU19GT1JfTk9OX0JBVENIX1VTRVJTLmluZGV4T2YodGhpcy5jb250ZW50Lm1pbWVUeXBlKSA+PSAwKVxyXG4gICAgfSByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIGdldCBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgb3BlbkNlcnRpZmljYXRlRGlhbG9nKGNlcnREYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGNldCA9IGNlcnREYXRhXHJcbiAgICB0aGlzLmRpYWxvZy5vcGVuKENlcnRpZmljYXRlRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIC8vIGhlaWdodDogJzQwMHB4JyxcclxuICAgICAgd2lkdGg6ICcxMzAwcHgnLFxyXG4gICAgICBkYXRhOiB7IGNldCB9LFxyXG4gICAgICAvLyBwYW5lbENsYXNzOiAnY3VzdG9tLWRpYWxvZy1jb250YWluZXInLFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNDb2xsZWN0aW9uXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb2xsZWN0aW9uIHctYXV0byBzbTp3LTEwMCBwYWRkaW5nLXJpZ2h0LXhsXCI+XHJcbiAgICAgICAgPCEtLSA8aW1nIGNsYXNzPVwiY2FyZC10aHVtYm5haWwgd3MtbWF0LXByaW1hcnktbGl0ZS1iYWNrZ3JvdW5kXCIgW3NyY109XCJjb250ZW50Py5hcHBJY29uXCIgYWx0PVwiVGh1bWJuYWlsXCJcclxuICAgICAgICAgIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuXCIgW3dzVXRpbHNEZWZhdWx0VGh1bWJuYWlsXT1cImRlZmF1bHRUaHVtYm5haWxcIiAvPiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBmbGV4LXdyYXAgZmxleC1iZXR3ZWVuIHdpZHRoLWV4cGFuZCBwci0wIHctMTAwIHNtOnByLTQgc206dy1hdXRvXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiIFtuZ0NsYXNzXT1cInsnY3Vyc29yLXBvaW50ZXInOiAhaXNFbmFibGVkfVwiIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibWFyZ2luLXJlbW92ZSB0ZXh0LXRydW5jYXRlIG1hdC1zdWJoZWFkaW5nLTEgZmxleC1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBjb250ZW50Py5uYW1lIH19IFxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudC5pc3N1ZWRDZXJ0aWZpY2F0ZXNTVkdcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiY2VydGlmaWNhdGUtdHh0XCIgKGNsaWNrKT1cIm9wZW5DZXJ0aWZpY2F0ZURpYWxvZyhjb250ZW50Lmlzc3VlZENlcnRpZmljYXRlc1NWRylcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aWV3LWNlcnRpZmljYXRlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImZ1c2lvbi1hc3NldHMvaW1hZ2VzL2NlcnRpZmljYXRlLWljby5zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC52aWV3Q2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgcmVzb3VyY2UgbXQtMiBzbTptdC0wXCIgKm5nSWY9XCJjb250ZW50Py5jYXRlZ29yeSA9PT0gJ1Jlc291cmNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC5yZXNvdXJjZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgbW9kdWxlIG10LTIgc206bXQtMFwiICpuZ0lmPVwiY29udGVudD8uY2F0ZWdvcnkgPT09ICdDb2xsZWN0aW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC5tb2R1bGUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIGNvdXJzZSBtdC0yIHNtOm10LTBcIiAqbmdJZj1cImNvbnRlbnQ/LmNhdGVnb3J5ID09PSAnQ291cnNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC5jb3Vyc2UnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtYXQtYm9keS1zdHJvbmcgY29udGVudC10eXBlXCI+e3sgY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlIH19PC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtNVwiPiAtLT5cclxuICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj4mbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7PC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwidGltZS1pY29uXCI+c2NoZWR1bGU8L21hdC1pY29uPiAtLT5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbG93ZXJjYXNlIHdzLW1hdC1ibGFjazYwLXRleHRcIj57eyBjb250ZW50Py5kdXJhdGlvbiB8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcydcclxuICAgICAgICAgICAgICAgIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwhLS0gPC9zcGFuPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250ZW50Py5hcnRpZmFjdFVybCAmJiBpc0FsbG93ZWQgJiYgIWlzRW5hYmxlZFwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImJ1dHRvbk1lbnVcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydGljYWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvclByZXZpZXcgJiYgY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZSAmJiBjb250ZW50LnByaW1hcnlDYXRlZ29yeSAhPT0gJ0NvdXJzZSdcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPT0gMlwiPlxyXG4gICAgICAgICAgICAgIDxjaXJjbGUtcHJvZ3Jlc3MgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBwcm9ncmVzc1wiIFtwZXJjZW50XT1cIjEwMFwiIFtyYWRpdXNdPVwiMTJcIiBbb3V0ZXJTdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICAgICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIiBbc3BhY2VdPVwiLTNcIiBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yKClcIlxyXG4gICAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJ3JnYmEoMCwwLDAsLjE2KSdcIiBbYW5pbWF0aW9uXT1cInRydWVcIiBbYW5pbWF0aW9uRHVyYXRpb25dPVwiMzAwXCIgW3Nob3dUaXRsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZE9wYWNpdHldPVwiMFwiIFtiYWNrZ3JvdW5kR3JhZGllbnRdPVwiZmFsc2VcIiBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3daZXJvT3V0ZXJTdHJva2VdPWZhbHNlIFtiYWNrZ3JvdW5kUGFkZGluZ109XCItOVwiIFtzdGFydEZyb21aZXJvXT1cImZhbHNlXCIgW2JhY2tncm91bmRQYWRkaW5nXT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgW2ltYWdlSGVpZ2h0XT1cIjI0XCIgW2ltYWdlV2lkdGhdPVwiMjRcIiBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIiBbb3V0ZXJTdHJva2VMaW5lY2FwXT1cIididXR0J1wiPlxyXG4gICAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxyXG4gICAgICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCIxMDBcIlxyXG4gICAgICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cclxuICAgICAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPiAtLT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzIDwgMlwiPlxyXG4gICAgICAgICAgICAgIDxjaXJjbGUtcHJvZ3Jlc3MgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBwcm9ncmVzc1wiIFtwZXJjZW50XT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICAgIFtyYWRpdXNdPVwiMTJcIiBbb3V0ZXJTdHJva2VXaWR0aF09XCIzXCIgW2lubmVyU3Ryb2tlV2lkdGhdPVwiM1wiIFtzcGFjZV09XCItM1wiXHJcbiAgICAgICAgICAgICAgICBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yKClcIiBbaW5uZXJTdHJva2VDb2xvcl09XCIncmdiYSgwLDAsMCwuMTYpJ1wiIFthbmltYXRpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbYW5pbWF0aW9uRHVyYXRpb25dPVwiMzAwXCIgW3Nob3dUaXRsZV09XCJmYWxzZVwiIFtzaG93VW5pdHNdPVwiZmFsc2VcIiBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiIFtiYWNrZ3JvdW5kT3BhY2l0eV09XCIwXCIgW2JhY2tncm91bmRHcmFkaWVudF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIiBbc2hvd1plcm9PdXRlclN0cm9rZV09ZmFsc2UgW2JhY2tncm91bmRQYWRkaW5nXT1cIi05XCIgW3N0YXJ0RnJvbVplcm9dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgW2JhY2tncm91bmRQYWRkaW5nXT1cIjBcIiBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbb3V0ZXJTdHJva2VMaW5lY2FwXT1cIididXR0J1wiPlxyXG4gICAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxyXG4gICAgICAgICAgICAgIDwhLS0gPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxyXG4gICAgICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCJjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiXHJcbiAgICAgICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+IC0tPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImhhc0NvbnRlbnRTdHJ1Y3R1cmVcIiBjbGFzcz1cImNoaWxkLW1ldGEtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZC1zdHJ1Y3R1cmVcIj4gLS0+XHJcbiAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInN0cnVjdHVyZS1pY29uXCI+aW1wb3J0X2NvbnRhY3RzPC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uY291cnNlID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5jb3Vyc2UgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5jb3Vyc2UgPT09IDFcIiA+IENvdXJzZTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmNvdXJzZSA+IDFcIiA+IENvdXJzZXM8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5sZWFybmluZ01vZHVsZSA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LmxlYXJuaW5nTW9kdWxlIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPT09IDFcIiA+IE1vZHVsZTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmxlYXJuaW5nTW9kdWxlID4gMVwiID4gTW9kdWxlczwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnZpZGVvID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8udmlkZW8gfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy52aWRlbyA9PT0gMVwiID4gVmlkZW88L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy52aWRlbyA+IDFcIiA+IFZpZGVvczwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmludGVyYWN0aXZlVmlkZW8gPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPiB7eyBjb250ZW50U3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA9PT0gMVwiID5cclxuICAgICAgICAgICAgICAgICAgSW50ZXJhY3RpdmUgVmlkZW88L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvID4gMVwiID5cclxuICAgICAgICAgICAgICAgICAgSW50ZXJhY3RpdmUgVmlkZW9zPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ueW91dHViZSA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LnlvdXR1YmUgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy55b3V0dWJlID09PSAxXCIgPiBZb3V0dWJlIFZpZGVvPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ueW91dHViZSA+IDFcIiA+IFlvdXR1YmUgVmlkZW9zPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucGRmID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ucGRmIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucGRmID09PSAxXCIgPiBQREY8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5wZGYgPiAxXCIgPiBQREZzPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucG9kY2FzdCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LnBvZGNhc3QgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5wb2RjYXN0ID09PSAxXCIgPiBQb2RjYXN0PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucG9kY2FzdCA+IDFcIiA+IFBvZGNhc3RzPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID09PSAxXCIgPiBXZWIgTW9kdWxlPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID4gMVwiID4gV2ViIE1vZHVsZXM8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJQYWdlID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ud2ViUGFnZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LndlYlBhZ2UgPT09IDFcIiA+IFdlYiBQYWdlPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViUGFnZSA+IDFcIiA+IFdlYiBQYWdlczwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnF1aXogPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViUGFnZSA+IDBcIj4sIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5xdWl6IH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucXVpeiA9PT0gMVwiID4gUXVpejwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnF1aXogPiAxXCIgPiBRdWl6emVzPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uYXNzZXNzbWVudCA+IDBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LmFzc2Vzc21lbnQgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5hc3Nlc3NtZW50ID09PSAxXCIgPiBBc3Nlc3NtZW50PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uYXNzZXNzbWVudCA+IDFcIiA+IEFzc2Vzc21lbnRzPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ub3RoZXIgPiAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPnt7IGNvbnRlbnRTdHJ1Y3R1cmU/Lm90aGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ub3RoZXIgPT09IDFcIiA+IE90aGVyIGl0ZW08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5vdGhlciA+IDFcIiA+IE90aGVyIEl0ZW1zPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWUtYWxsLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgcm9sZT1cImJ1dHRvblwiIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1hcmdpbi1sZWZ0LW0gc2VlLWFsbC1idG4gdGFiIGN1c3RvbS1jaGV2cm9uIGN1c3RvbWljb25cIiBtYXQtYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF2aWV3Q2hpbGRyZW5cIiA+U2VlIEFsbDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3Q2hpbGRyZW5cIiA+U2VlIExlc3M8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIXZpZXdDaGlsZHJlblwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInZpZXdDaGlsZHJlblwiPmtleWJvYXJkX2Fycm93X3VwPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzID09IDJcIj5cclxuICAgICAgICAgIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcclxuICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCIxMDBcIlxyXG4gICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICAgICAgPC93cy13aWRnZXQtY29udGVudC1wcm9ncmVzcz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY29tcGxldGlvblN0YXR1cyA8IDJcIj5cclxuICAgICAgICAgIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcclxuICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCJjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiXHJcbiAgICAgICAgICAgIFtwcm9ncmVzc1R5cGVdPVwiJ3BlcmNlbnRhZ2UnXCI+XHJcbiAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2hpbGRyZW4tY29udGFpbmVyIG1hcmdpbi1sZWZ0LWwgbWFyZ2luLXRvcC1zIG1hcmdpbi1ib3R0b20tc1wiIFtoaWRkZW5dPVwiIXZpZXdDaGlsZHJlblwiPlxyXG4gICAgICA8d3MtYXBwLXRvYy1jb250ZW50LWNhcmQgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiIFtjb250ZW50XT1cImNoaWxkXCIgW2V4cGFuZEFsbF09XCJleHBhbmRBbGxcIiBbcm9vdElkXT1cInJvb3RJZFwiXHJcbiAgICAgICAgW2JhdGNoSWRdPVwiYmF0Y2hJZFwiIFtyb290Q29udGVudFR5cGVdPVwicm9vdENvbnRlbnRUeXBlXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgY29udGVudD8uY2hpbGRyZW47IHRyYWNrQnk6IGNvbnRlbnRUcmFja0J5XCI+XHJcbiAgICAgIDwvd3MtYXBwLXRvYy1jb250ZW50LWNhcmQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8ZGl2ICpuZ0lmPVwiaXNSZXNvdXJjZVwiIGNsYXNzPVwicmVzb3VyY2UtY29udGFpbmVyXCI+XHJcbiAgICA8IS0tIDx3cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGUtaWNvbiBjbGFzcz1cImZsZXhcIiBbZGlzcGxheUNvbnRlbnRUeXBlXT1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZVwiPlxyXG4gICAgPC93cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGUtaWNvbj4gLS0+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbWctY29udGFpbmVyXCI+IC0tPlxyXG4gICAgPCEtLSA8aW1nIGNsYXNzPVwiY2FyZC10aHVtYm5haWwgd3MtbWF0LXByaW1hcnktbGl0ZS1iYWNrZ3JvdW5kXCIgW3NyY109XCJjb250ZW50Py5hcHBJY29uXCIgYWx0PVwiVGh1bWJuYWlsXCJcclxuICAgICAgICAoY2xpY2spPVwidmlld0NoaWxkcmVuID0gIXZpZXdDaGlsZHJlblwiIFt3c1V0aWxzRGVmYXVsdFRodW1ibmFpbF09XCJkZWZhdWx0VGh1bWJuYWlsXCIgLz4gLS0+XHJcbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzID09IDJcIj5cclxuICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxyXG4gICAgICAgIFtjb250ZW50SWRdPVwiY29udGVudD8uaWRlbnRpZmllclwiIGNsYXNzPVwicHJvZ3Jlc3MtYmFyLXRoaW5cIiBbcHJvZ3Jlc3NdPVwiMTAwXCIgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cclxuICAgICAgPC93cy13aWRnZXQtY29udGVudC1wcm9ncmVzcz5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPCAyXCI+XHJcbiAgICAgIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXIgJiYgY29udGVudD8uY29tcGxldGlvblBlcmNlbnRhZ2VcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcclxuICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcclxuICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxyXG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgPCEtLSA8L2Rpdj4gLS0+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZmxleC1iZXR3ZWVuIHdpZHRoLWV4cGFuZCBwci0wIHctMTAwIHNtOnByLTQgc206dy1hdXRvXCI+XHJcbiAgICAgIDwhLS0gZGVhY3RpdmF0ZWQgYXMgcGVyIE5JQyBDRU8gcmVxdWlyZW1lbnQgdG8gYWNjZXNzIGNvdXJzZSB3dGhvdXQgbG9naW4gLS0+XHJcbiAgICAgIDxhIFtjbGFzcy5kaXNhYmxlZF09XCIoZm9yUHJldmlldyB8fCAhaXNFbmFibGVkKSA/IHRydWUgOiBudWxsXCIgW3JvdXRlckxpbmtdPVwiKGlzQWxsb3dlZCAmJiAhZm9yUHJldmlldyAmJiAhaXNFbmFibGVkKSA/IHJlc291cmNlTGluay51cmwgOiBudWxsXCJcclxuICAgICAgICBbcXVlcnlQYXJhbXNdPVwiKGlzQWxsb3dlZCAmJiAhZm9yUHJldmlldyAmJiAhaXNFbmFibGVkKSAgPyByZXNvdXJjZUxpbmsucXVlcnlQYXJhbXMgOiBudWxsXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgXCIgW25nQ2xhc3NdPVwieydjdXJzb3ItcG9pbnRlcic6ICFpc0VuYWJsZWR9XCIgKGNsaWNrKT1cInZpZXdDaGlsZHJlbiA9ICF2aWV3Q2hpbGRyZW47IHJhaXNlVGVsZW1ldHJ5KClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGZsZXgtd3JhcFwiPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZSBtYXQtc3ViaGVhZGluZy0xIGZsZXgtYXV0b1wiPlxyXG4gICAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIGNsYXNzPVwibWFyZ2luLXJpZ2h0LXhzIHJhZGlvYnRuIHRpbWUtaWNvblwiPnJhZGlvX2J1dHRvbl91bmNoZWNrZWQgPC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICAgICAge3sgY29udGVudD8ubmFtZSB9fVxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udGVudC10eXBlIG9wdGlvbmFsLXNwYW5cIiAqbmdJZj1cImNvbnRlbnQ/Lm9wdGlvbmFsUmVhZGluZ1wiPnt7J2FwcHRvY2NvbnRlbnRjYXJkLm9wdGlvbmFsJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nIGNvbnRlbnQtdHlwZVwiPnt7IGNvbnRlbnQ/LmlkZW50aWZpZXIgfX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaWNvbnMgd3MtbWF0LWJsYWNrNjAtdGV4dFwiPlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nIGNvbnRlbnQtdHlwZSB3cy1tYXQtZGVmYXVsdC10ZXh0XCI+e3sgY29udGVudD8uY29udGVudFR5cGUgfX08L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtNVwiPiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlXCI+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwOzwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJ0aW1lLWljb25cIj5zY2hlZHVsZTwvbWF0LWljb24+IC0tPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L3ZpZGVvLnN2Z1wiIGFsdD1cIlZpZGVvXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICd2aWRlby9tcDQnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAndmlkZW8veC15b3V0dWJlJyB8fFxyXG4gICAgICAgICAgICAgICAgY29udGVudD8ubWltZVR5cGUgPT09J2FwcGxpY2F0aW9uL3gtbXBlZ1VSTCdcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2NvbnRlbnQvZ3JleS9hdWRpby5zdmdcIiBhbHQ9XCJBdWRpb1wiIGNsYXNzPVwiZmxvYXQtbGVmdCBtYXJnaW4tcmlnaHQteHNcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhdWRpby9tcGVnJ1wiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L3BkZi5zdmdcIiBhbHQ9XCJQREZcIiBjbGFzcz1cImZsb2F0LWxlZnQgbWFyZ2luLXJpZ2h0LXhzXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vcGRmJ1wiPlxyXG4gICAgICAgICAgICA8IS0tIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvcmVzb3VyY2Uuc3ZnXCIgYWx0PVwiU3VydmV5XCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3N1cnZleSdcIj4gLS0+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvbGluay5zdmdcIiBhbHQ9XCJJbnRlcmFjdGl2ZUNvbnRlbnRcIiBjbGFzcz1cImZsb2F0LWxlZnQgbWFyZ2luLXJpZ2h0LXhzXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vdm5kLmVrc3RlcC5odG1sLWFyY2hpdmUnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAndGV4dC94LXVybCdcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2NvbnRlbnQvZ3JleS9hc3Nlc3NtZW50LnN2Z1wiIGFsdD1cIkFzc2Vzc21lbnRcIiBjbGFzcz1cImZsb2F0LWxlZnQgbWFyZ2luLXJpZ2h0LXhzXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vanNvbicgfHwgY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9xdWl6JyB8fCBjb250ZW50Py5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3ZuZC5zdW5iaXJkLnF1ZXN0aW9uc2V0J1wiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L2ltYWdlLnN2Z1wiIGFsdD1cIkltYWdlXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5taW1lVHlwZSA9PT0gJ2ltYWdlL3BuZycgfHwgY29udGVudD8ubWltZVR5cGUgPT09ICdpbWFnZS9qcGVnJ1wiPlxyXG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L2NvbnRlbnRfY29weS5zdmdcIiBjbGFzcz1cImNvbnRlbnRpY29uXCIgYWx0PVwiQ291cnNlXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmNvbnRlbnQtY29sbGVjdGlvbicgfHwgY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9zdXJ2ZXknXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvbW9kdWxlLnN2Z1wiIGNsYXNzPVwiZmxvYXQtbGVmdCBtYXJnaW4tcmlnaHQteHNcIiBhbHQ9XCJvZmZsaW5lIHNlc3Npb25zXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9vZmZsaW5lJyB8fCBjb250ZW50Py5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3N1cnZleSdcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3cy1tYXQtYmxhY2s2MC10ZXh0XCI+e3sgKGNvbnRlbnQ/LmR1cmF0aW9uIHx8IDEyMCl8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcycgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwhLS0gPC9zcGFuPiAtLT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBzbTpqdXN0aWZ5LWVuZFwiPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIHJlc291cmNlXCIgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gJ1Jlc291cmNlJ1wiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XHJcbiAgICAgICAgICA8c3Bhbj5SZXNvdXJjZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgbW9kdWxlXCIgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gJ0NvbGxlY3Rpb24nXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtci0xIGN1c3RvbS1pY29uIHJvdGF0ZS05MFwiPmNhbGxfdG9fYWN0aW9uPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDxzcGFuPk1vZHVsZTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgY291cnNlXCIgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gJ0NvdXJzZSdcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+Q291cnNlPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWZvclByZXZpZXcgJiYgY29udGVudD8uYXJ0aWZhY3RVcmwgJiYgIWlzWFNtYWxsICYmIGlzQWxsb3dlZCAmJiBpc0VuYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cIlwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJidXR0b25NZW51XCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0aWNhbDwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb3JQcmV2aWV3ICYmIGNvbnRlbnQ/LmlkZW50aWZpZXIgJiYgY29udGVudD8uY29tcGxldGlvblBlcmNlbnRhZ2UgOyBlbHNlIGVsc2VCbG9ja1wiPlxyXG4gICAgICAgIFxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPT0gMlwiPlxyXG4gICAgICAgICAgICA8Y2lyY2xlLXByb2dyZXNzIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcHJvZ3Jlc3NcIiBbcGVyY2VudF09XCIxMDBcIiBbcmFkaXVzXT1cIjEyXCIgW291dGVyU3Ryb2tlV2lkdGhdPVwiM1wiXHJcbiAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlV2lkdGhdPVwiM1wiIFtzcGFjZV09XCItM1wiIFtvdXRlclN0cm9rZUNvbG9yXT1cInByb2dyZXNzQ29sb3IoKVwiXHJcbiAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJ3JnYmEoMCwgMCwgMCwgMC4xNiknXCIgW2FuaW1hdGlvbl09XCJ0cnVlXCIgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzaG93VW5pdHNdPVwiZmFsc2VcIiBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCIgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgW2Nsb2Nrd2lzZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbYmFja2dyb3VuZE9wYWNpdHldPVwiMFwiIFtiYWNrZ3JvdW5kR3JhZGllbnRdPVwiZmFsc2VcIiBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIiBtYXRUb29sdGlwPVwie3snYXBwdG9jY29udGVudGNhcmQuY29tcGxldGVkJyB8IHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICBbc2hvd1plcm9PdXRlclN0cm9rZV09ZmFsc2UgW2JhY2tncm91bmRQYWRkaW5nXT1cIi05XCIgW3N0YXJ0RnJvbVplcm9dPVwiZmFsc2VcIiBbYmFja2dyb3VuZFBhZGRpbmddPVwiMFwiXHJcbiAgICAgICAgICAgICAgW2ltYWdlSGVpZ2h0XT1cIjI0XCIgW2ltYWdlV2lkdGhdPVwiMjRcIiBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIiBbb3V0ZXJTdHJva2VMaW5lY2FwXT1cIididXR0J1wiPlxyXG4gICAgICAgICAgICA8L2NpcmNsZS1wcm9ncmVzcz5cclxuICAgICAgICAgICAgPCEtLSA8d3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3MgKm5nSWY9XCJjb250ZW50Py5pZGVudGlmaWVyXCIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiXHJcbiAgICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cIjEwMFwiXHJcbiAgICAgICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+IC0tPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY29tcGxldGlvblN0YXR1cyA8IDJcIj5cclxuICAgICAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHByb2dyZXNzXCIgW3BlcmNlbnRdPVwiY29udGVudD8uY29tcGxldGlvblBlcmNlbnRhZ2VcIiBbcmFkaXVzXT1cIjEyXCJcclxuICAgICAgICAgICAgICBbb3V0ZXJTdHJva2VXaWR0aF09XCIzXCIgW2lubmVyU3Ryb2tlV2lkdGhdPVwiM1wiIFtzcGFjZV09XCItM1wiIFtvdXRlclN0cm9rZUNvbG9yXT1cInByb2dyZXNzQ29sb3IyKClcIlxyXG4gICAgICAgICAgICAgIFtpbm5lclN0cm9rZUNvbG9yXT1cIidyZ2JhKDAsIDAsIDAsIDAuMTYpJ1wiIFthbmltYXRpb25dPVwidHJ1ZVwiIFthbmltYXRpb25EdXJhdGlvbl09XCIzMDBcIiBbc2hvd1RpdGxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2JhY2tncm91bmRPcGFjaXR5XT1cIjBcIiBbYmFja2dyb3VuZEdyYWRpZW50XT1cImZhbHNlXCIgW2JhY2tncm91bmRTdHJva2VXaWR0aF09XCIzXCIgbWF0VG9vbHRpcD1cInt7J2FwcHRvY2NvbnRlbnRjYXJkLmluUHJvZ3Jlc3MnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgIFtzaG93WmVyb091dGVyU3Ryb2tlXT1mYWxzZSBbYmFja2dyb3VuZFBhZGRpbmddPVwiLTlcIiBbc3RhcnRGcm9tWmVyb109XCJmYWxzZVwiIFtiYWNrZ3JvdW5kUGFkZGluZ109XCIwXCJcclxuICAgICAgICAgICAgICBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiIFtvdXRlclN0cm9rZUxpbmVjYXBdPVwiJ2J1dHQnXCI+XHJcbiAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxyXG4gICAgICAgICAgICA8IS0tIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcclxuICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcclxuICAgICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxyXG4gICAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPiAtLT5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgXHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2s+XHJcbiAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBwcm9ncmVzc1wiXHJcbiAgICAgICAgICBbcGVyY2VudF09XCIwXCJcclxuICAgICAgICAgIFtyYWRpdXNdPVwiMTJcIlxyXG4gICAgICAgICAgW291dGVyU3Ryb2tlV2lkdGhdPVwiM1wiXHJcbiAgICAgICAgICBbaW5uZXJTdHJva2VXaWR0aF09XCIzXCJcclxuICAgICAgICAgIFtvdXRlclN0cm9rZUNvbG9yXT1cIicjODA4MDgwJ1wiXHJcbiAgICAgICAgICBbaW5uZXJTdHJva2VDb2xvcl09XCInIzgwODA4MCdcIlxyXG4gICAgICAgICAgW2FuaW1hdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgIFtzcGFjZV09XCItM1wiXHJcbiAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCJcclxuICAgICAgICAgIFthbmltYXRpb25EdXJhdGlvbl09XCIzMDBcIlxyXG4gICAgICAgICAgW3Nob3dUaXRsZV09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbYmFja2dyb3VuZFBhZGRpbmddPVwiMFwiXHJcbiAgICAgICAgICBbYmFja2dyb3VuZFBhZGRpbmddPVwiLTlcIlxyXG4gICAgICAgICAgW291dGVyU3Ryb2tlTGluZWNhcF09XCInYnV0dCdcIlxyXG4gICAgICAgICAgbWF0VG9vbHRpcD1cInt7J2FwcHRvY2NvbnRlbnRjYXJkLm5vdFN0YXJ0ZWQnIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFxyXG4gICAgICAgICAgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgXHJcbiAgICAgICAgICBbY2xvY2t3aXNlXT1cInRydWVcIiBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiPjwvY2lyY2xlLXByb2dyZXNzPlxyXG4gICAgICAgIDwhLS0gPHA+bm8gZGF0YTwvcD4gLS0+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBcclxuXHJcbiAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImNvbnRlbnQ/LmFydGlmYWN0VXJsXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYnV0dG9uTWVudVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnRpY2FsPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJyZXNvdXJjZS1tZXRhIHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICA8YSBbcm91dGVyTGlua109XCJyZXNvdXJjZUxpbmsudXJsXCIgW3F1ZXJ5UGFyYW1zXT1cInJlc291cmNlTGluay5xdWVyeVBhcmFtc1wiPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZSAhPT0gZW51bUNvbnRlbnRUeXBlcy5BU1NFU1NNRU5UXCIgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlIHRleHQtdHJ1bmNhdGVcIj5cclxuICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMSAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZSA9PT0gZW51bUNvbnRlbnRUeXBlcy5BU1NFU1NNRU5UXCIgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlIHRleHQtdHJ1bmNhdGVcIj5cclxuICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX1cclxuICAgICAgICA8L2gxPlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nIG1hcmdpbi1sZWZ0LXhzXCI+e3sgY29udGVudD8uZHVyYXRpb24gfCBwaXBlRHVyYXRpb25UcmFuc2Zvcm06ICd0aW1lMjQnIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PiAtLT5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bWF0LW1lbnUgI2J1dHRvbk1lbnU9XCJtYXRNZW51XCI+XHJcbiAgPGEgbWF0LW1lbnUtaXRlbSBbcm91dGVyTGlua109XCInLi4vJyArIGNvbnRlbnQ/LmlkZW50aWZpZXIgKyAnL292ZXJ2aWV3J1wiIFtxdWVyeVBhcmFtc109XCJjb250ZXh0UGF0aFwiXHJcbiAgICBjbGFzcz1cImZsZXggZmxleC1taWRkbGVcIj5cclxuICAgIDxtYXQtaWNvbj50b2M8L21hdC1pY29uPlxyXG4gICAgPGgzIGNsYXNzPVwibWFyZ2luLXJlbW92ZVwiID5cclxuICAgICAge3snYXBwdG9jY29udGVudGNhcmQudmlld0RldGFpbHMnIHwgdHJhbnNsYXRlfX1cclxuICAgIDwvaDM+XHJcbiAgPC9hPlxyXG4gIDwhLS0gVE9ETzogSGlkaW5nIHRoaXMgZnJvbSBoZXJlIGZvciBub3csIGFzIHRoZSBmdW5jdGlvbmFsaXRpZXMgYXJlIG5vdCB3b3JraW5nIC0tPlxyXG4gIDwhLS0gPGRpdiBtYXQtbWVudS1pdGVtPlxyXG4gICAgPHdzLXdpZGdldC1idG4tY29udGVudC1kb3dubG9hZCBbd2lkZ2V0RGF0YV09XCJcclxuICAgICAgICBjb250ZW50XHJcbiAgICAgICAgICB8IHBpcGVQYXJ0aWFsQ29udGVudFxyXG4gICAgICAgICAgICA6IFsnaWRlbnRpZmllcicsICdjb250ZW50VHlwZScsICdyZXNvdXJjZVR5cGUnLCAnbWltZVR5cGUnLCAnZG93bmxvYWRVcmwnLCAnaXNFeHRlcm5hbCddXHJcbiAgICAgIFwiPjwvd3Mtd2lkZ2V0LWJ0bi1jb250ZW50LWRvd25sb2FkPlxyXG4gICAgPHdzLXdpZGdldC1idG4tY29udGVudC1saWtlIFt3aWRnZXREYXRhXT1cImNvbnRlbnQgfCBwaXBlUGFydGlhbENvbnRlbnQ6IFsnaWRlbnRpZmllciddXCI+XHJcbiAgICA8L3dzLXdpZGdldC1idG4tY29udGVudC1saWtlPlxyXG4gICAgPHdzLXdpZGdldC1idG4tY29udGVudC1zaGFyZSBbd2lkZ2V0RGF0YV09XCJjb250ZW50XCI+PC93cy13aWRnZXQtYnRuLWNvbnRlbnQtc2hhcmU+XHJcbiAgICA8d3Mtd2lkZ2V0LWJ0bi1nb2Fscz48L3dzLXdpZGdldC1idG4tZ29hbHM+XHJcbiAgICA8d3Mtd2lkZ2V0LWJ0bi1wbGF5bGlzdD48L3dzLXdpZGdldC1idG4tcGxheWxpc3Q+XHJcbiAgPC9kaXY+IC0tPlxyXG48L21hdC1tZW51PlxyXG4iXX0=
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { NsContent } from '../../_services/widget-content.model';
|
|
3
|
+
import { viewerRouteGenerator } from '../../_services/viewer-route-util';
|
|
4
|
+
/* tslint:disable*/
|
|
5
|
+
import _ from 'lodash';
|
|
6
|
+
import { CertificateDialogComponent } from '../../_collection/_common/certificate-dialog/certificate-dialog.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@sunbird-cb/utils-v2";
|
|
9
|
+
import * as i2 from "@angular/material/legacy-dialog";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "@angular/router";
|
|
12
|
+
import * as i5 from "@angular/material/icon";
|
|
13
|
+
import * as i6 from "@angular/material/legacy-button";
|
|
14
|
+
import * as i7 from "@angular/material/legacy-menu";
|
|
15
|
+
import * as i8 from "@angular/material/legacy-tooltip";
|
|
16
|
+
import * as i9 from "ng-circle-progress";
|
|
17
|
+
import * as i10 from "@ngx-translate/core";
|
|
18
|
+
export class AppTocContentCardComponent {
|
|
19
|
+
constructor(events, dialog) {
|
|
20
|
+
this.events = events;
|
|
21
|
+
this.dialog = dialog;
|
|
22
|
+
this.content = null;
|
|
23
|
+
this.expandAll = false;
|
|
24
|
+
this.forPreview = false;
|
|
25
|
+
this.hasContentStructure = false;
|
|
26
|
+
this.enumContentTypes = NsContent.EDisplayContentTypes;
|
|
27
|
+
this.contentStructure = {
|
|
28
|
+
assessment: 0,
|
|
29
|
+
finalTest: 0,
|
|
30
|
+
course: 0,
|
|
31
|
+
handsOn: 0,
|
|
32
|
+
interactiveVideo: 0,
|
|
33
|
+
learningModule: 0,
|
|
34
|
+
other: 0,
|
|
35
|
+
pdf: 0,
|
|
36
|
+
survey: 0,
|
|
37
|
+
podcast: 0,
|
|
38
|
+
practiceTest: 0,
|
|
39
|
+
quiz: 0,
|
|
40
|
+
video: 0,
|
|
41
|
+
webModule: 0,
|
|
42
|
+
webPage: 0,
|
|
43
|
+
youtube: 0,
|
|
44
|
+
interactivecontent: 0,
|
|
45
|
+
offlineSession: 0,
|
|
46
|
+
};
|
|
47
|
+
this.defaultThumbnail = '';
|
|
48
|
+
this.viewChildren = false;
|
|
49
|
+
}
|
|
50
|
+
ngOnInit() {
|
|
51
|
+
this.evaluateImmediateChildrenStructure();
|
|
52
|
+
// this.route.data.subscribe(data => {
|
|
53
|
+
// this.defaultThumbnail = data.configData.data.logos.defaultContent
|
|
54
|
+
// }
|
|
55
|
+
// )
|
|
56
|
+
}
|
|
57
|
+
ngOnChanges(changes) {
|
|
58
|
+
for (const property in changes) {
|
|
59
|
+
if (property === 'expandAll') {
|
|
60
|
+
this.viewChildren = this.expandAll;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
get isCollection() {
|
|
65
|
+
if (this.content) {
|
|
66
|
+
return this.content.mimeType === NsContent.EMimeTypes.COLLECTION;
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
get isResource() {
|
|
71
|
+
if (this.content) {
|
|
72
|
+
return (this.content.primaryCategory === NsContent.EPrimaryCategory.RESOURCE
|
|
73
|
+
// || this.content.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT
|
|
74
|
+
|| this.content.primaryCategory === NsContent.EPrimaryCategory.PRACTICE_RESOURCE
|
|
75
|
+
|| this.content.primaryCategory === NsContent.EPrimaryCategory.FINAL_ASSESSMENT
|
|
76
|
+
|| this.content.primaryCategory === NsContent.EPrimaryCategory.COMP_ASSESSMENT);
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
get resourceLink() {
|
|
81
|
+
if (this.content) {
|
|
82
|
+
let url = viewerRouteGenerator(this.content.identifier, this.content.mimeType, this.rootId, this.rootContentType, this.forPreview, this.content.primaryCategory, this.batchId);
|
|
83
|
+
/* tslint:disable-next-line */
|
|
84
|
+
// console.log(url,'=====> content card url link <========')
|
|
85
|
+
return url;
|
|
86
|
+
}
|
|
87
|
+
return { url: '', queryParams: {} };
|
|
88
|
+
}
|
|
89
|
+
progressColor() {
|
|
90
|
+
// if (this.currentProgress <= 30) {
|
|
91
|
+
// return '#D13924'
|
|
92
|
+
// } if (this.currentProgress > 30 && this.currentProgress <= 70) {
|
|
93
|
+
// return '#E99E38'
|
|
94
|
+
// }
|
|
95
|
+
// if (this.currentProgress > 70 && this.currentProgress <= 100) {
|
|
96
|
+
// return '#1D8923'
|
|
97
|
+
// }
|
|
98
|
+
return '#1D8923';
|
|
99
|
+
}
|
|
100
|
+
progressColor2() {
|
|
101
|
+
return '#f27d00';
|
|
102
|
+
}
|
|
103
|
+
evaluateImmediateChildrenStructure() {
|
|
104
|
+
if (this.content && this.content.children && this.content.children.length) {
|
|
105
|
+
this.content.children.forEach((child) => {
|
|
106
|
+
if (child.primaryCategory === NsContent.EPrimaryCategory.COURSE) {
|
|
107
|
+
this.contentStructure.course += 1;
|
|
108
|
+
}
|
|
109
|
+
else if (child.primaryCategory === NsContent.EPrimaryCategory.KNOWLEDGE_ARTIFACT) {
|
|
110
|
+
this.contentStructure.other += 1;
|
|
111
|
+
}
|
|
112
|
+
else if (child.primaryCategory === NsContent.EPrimaryCategory.MODULE) {
|
|
113
|
+
this.contentStructure.learningModule += 1;
|
|
114
|
+
}
|
|
115
|
+
else if (child.primaryCategory === NsContent.EPrimaryCategory.OFFLINE_SESSION) {
|
|
116
|
+
this.contentStructure.offlineSession += 1;
|
|
117
|
+
}
|
|
118
|
+
else if (child.primaryCategory === NsContent.EPrimaryCategory.RESOURCE) {
|
|
119
|
+
switch (child.mimeType) {
|
|
120
|
+
case NsContent.EMimeTypes.HANDS_ON:
|
|
121
|
+
this.contentStructure.handsOn += 1;
|
|
122
|
+
break;
|
|
123
|
+
case NsContent.EMimeTypes.MP3:
|
|
124
|
+
this.contentStructure.podcast += 1;
|
|
125
|
+
break;
|
|
126
|
+
case NsContent.EMimeTypes.MP4:
|
|
127
|
+
case NsContent.EMimeTypes.M3U8:
|
|
128
|
+
this.contentStructure.video += 1;
|
|
129
|
+
break;
|
|
130
|
+
case NsContent.EMimeTypes.INTERACTION:
|
|
131
|
+
this.contentStructure.interactiveVideo += 1;
|
|
132
|
+
break;
|
|
133
|
+
case NsContent.EMimeTypes.PDF:
|
|
134
|
+
this.contentStructure.pdf += 1;
|
|
135
|
+
break;
|
|
136
|
+
case NsContent.EMimeTypes.OFFLINE_SESSION:
|
|
137
|
+
this.contentStructure.offlineSession += 1;
|
|
138
|
+
break;
|
|
139
|
+
case NsContent.EMimeTypes.SURVEY:
|
|
140
|
+
this.contentStructure.survey += 1;
|
|
141
|
+
break;
|
|
142
|
+
case NsContent.EMimeTypes.HTML:
|
|
143
|
+
this.contentStructure.webPage += 1;
|
|
144
|
+
break;
|
|
145
|
+
case NsContent.EMimeTypes.QUIZ:
|
|
146
|
+
if (child.resourceType === 'Assessment') {
|
|
147
|
+
this.contentStructure.assessment += 1;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.contentStructure.quiz += 1;
|
|
151
|
+
}
|
|
152
|
+
break;
|
|
153
|
+
case NsContent.EMimeTypes.PRACTICE_RESOURCE:
|
|
154
|
+
// case NsContent.EMimeTypes.FINAL_ASSESSMENT:
|
|
155
|
+
// case NsContent.EMimeTypes.PRACTICE_RESOURCE:
|
|
156
|
+
this.contentStructure.practiceTest += 1;
|
|
157
|
+
break;
|
|
158
|
+
case NsContent.EMimeTypes.WEB_MODULE:
|
|
159
|
+
this.contentStructure.webModule += 1;
|
|
160
|
+
break;
|
|
161
|
+
case NsContent.EMimeTypes.YOUTUBE:
|
|
162
|
+
this.contentStructure.youtube += 1;
|
|
163
|
+
break;
|
|
164
|
+
default:
|
|
165
|
+
this.contentStructure.other += 1;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
for (const key in this.contentStructure) {
|
|
172
|
+
if (this.contentStructure[key] > 0) {
|
|
173
|
+
this.hasContentStructure = true;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
get contextPath() {
|
|
178
|
+
return {
|
|
179
|
+
contextId: this.rootId,
|
|
180
|
+
contextPath: this.rootContentType,
|
|
181
|
+
batchId: this.batchId,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
contentTrackBy(_index, content) {
|
|
185
|
+
if (!content) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
return content.identifier;
|
|
189
|
+
}
|
|
190
|
+
raiseTelemetry() {
|
|
191
|
+
// if (this.forPreview) { return }
|
|
192
|
+
if (this.content) {
|
|
193
|
+
this.events.raiseInteractTelemetry({
|
|
194
|
+
type: 'click',
|
|
195
|
+
subType: `card-tocContentCard`,
|
|
196
|
+
// id: this.content.identifier || '',
|
|
197
|
+
}, {
|
|
198
|
+
// contentId: this.content.identifier || '',
|
|
199
|
+
// contentType: this.content.primaryCategory,
|
|
200
|
+
id: this.content.identifier || '',
|
|
201
|
+
type: this.content.primaryCategory,
|
|
202
|
+
rollup: {
|
|
203
|
+
l1: this.rootId || '',
|
|
204
|
+
},
|
|
205
|
+
ver: `${this.content.version}${''}`,
|
|
206
|
+
}, {
|
|
207
|
+
pageIdExt: `${_.camelCase(this.content.primaryCategory)}-card`,
|
|
208
|
+
module: _.camelCase(this.content.primaryCategory),
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
get isAllowed() {
|
|
213
|
+
if (this.content) {
|
|
214
|
+
return !(NsContent.UN_SUPPORTED_DATA_TYPES_FOR_NON_BATCH_USERS.indexOf(this.content.mimeType) >= 0);
|
|
215
|
+
}
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
get isEnabled() {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
openCertificateDialog(certData) {
|
|
222
|
+
const cet = certData;
|
|
223
|
+
this.dialog.open(CertificateDialogComponent, {
|
|
224
|
+
// height: '400px',
|
|
225
|
+
width: '1300px',
|
|
226
|
+
data: { cet },
|
|
227
|
+
// panelClass: 'custom-dialog-container',
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentCardComponent, deps: [{ token: i1.EventService }, { token: i2.MatLegacyDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
231
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppTocContentCardComponent, selector: "ws-app-toc-content-card", inputs: { content: "content", expandAll: "expandAll", rootId: "rootId", rootContentType: "rootContentType", forPreview: "forPreview", batchId: "batchId" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"content\">\n <ng-container *ngIf=\"isCollection\">\n <div class=\"flex flex-col position-relative\">\n <div class=\"card-collection w-auto sm:w-100 padding-right-xl\">\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\n <div class=\"flex flex-col flex-wrap flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\n <div class=\"text-truncate\" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n {{ content?.name }} \n </p>\n <ng-container *ngIf=\"content.issuedCertificatesSVG\">\n <a class=\"certificate-txt\" (click)=\"openCertificateDialog(content.issuedCertificatesSVG)\">\n <span class=\"view-certificate-wrapper\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>{{'apptoccontentcard.viewCertificate' | translate}}</span>\n </span>\n </a>\n </ng-container>\n <div class=\"type-container resource mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Resource'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.resource' | translate}}</span>\n </div>\n <div class=\"type-container module mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Collection'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.module' | translate}}</span>\n </div>\n <div class=\"type-container course mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Course'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.course' | translate}}</span>\n </div>\n </div>\n <div>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.displayContentType }}</span> -->\n <!-- <span class=\"ml-5\"> -->\n <!-- <ng-container *ngIf=\"content?.displayContentType\"> | </ng-container> -->\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\n <span class=\"text-lowercase ws-mat-black60-text\">{{ content?.duration | pipeDurationTransform: 'hms'\n }}</span>\n <!-- </span> -->\n </div>\n </div>\n <button *ngIf=\"content?.artifactUrl && isAllowed && !isEnabled\" type=\"button\" mat-icon-button\n [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button>\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage && content.primaryCategory !== 'Course'\">\n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\"\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\n [outerStrokeColor]=\"progressColor()\" [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\"\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\n [backgroundStrokeWidth]=\"3\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\n [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n </ng-container>\n\n <!-- <div *ngIf=\"hasContentStructure\" class=\"child-meta-container\">\n <div class=\"child-structure\"> -->\n <!-- <mat-icon class=\"structure-icon\">import_contacts</mat-icon> -->\n <!-- <span class=\"oval-white\" *ngIf=\"contentStructure?.course > 0\">\n <ng-container>{{ contentStructure?.course }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.course === 1\" > Course</ng-container>\n <ng-container *ngIf=\"contentStructure?.course > 1\" > Courses</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.learningModule > 0\">\n <ng-container> {{ contentStructure?.learningModule }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.learningModule === 1\" > Module</ng-container>\n <ng-container *ngIf=\"contentStructure?.learningModule > 1\" > Modules</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.video > 0\">\n <ng-container> {{ contentStructure?.video }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.video === 1\" > Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.video > 1\" > Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.interactiveVideo > 0\">\n <ng-container> {{ contentStructure?.interactiveVideo }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.interactiveVideo === 1\" >\n Interactive Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.interactiveVideo > 1\" >\n Interactive Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.youtube > 0\">\n <ng-container> {{ contentStructure?.youtube }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.youtube === 1\" > Youtube Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.youtube > 1\" > Youtube Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.pdf > 0\">\n <ng-container> {{ contentStructure?.pdf }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.pdf === 1\" > PDF</ng-container>\n <ng-container *ngIf=\"contentStructure?.pdf > 1\" > PDFs</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.podcast > 0\">\n <ng-container> {{ contentStructure?.podcast }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.podcast === 1\" > Podcast</ng-container>\n <ng-container *ngIf=\"contentStructure?.podcast > 1\" > Podcasts</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webModule > 0\">\n <ng-container> {{ contentStructure?.webModule }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.webModule === 1\" > Web Module</ng-container>\n <ng-container *ngIf=\"contentStructure?.webModule > 1\" > Web Modules</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webPage > 0\">\n <ng-container> {{ contentStructure?.webPage }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.webPage === 1\" > Web Page</ng-container>\n <ng-container *ngIf=\"contentStructure?.webPage > 1\" > Web Pages</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.quiz > 0\">\n <ng-container *ngIf=\"contentStructure?.webPage > 0\">, </ng-container>\n <ng-container>{{ contentStructure?.quiz }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.quiz === 1\" > Quiz</ng-container>\n <ng-container *ngIf=\"contentStructure?.quiz > 1\" > Quizzes</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.assessment > 0\">\n <ng-container> {{ contentStructure?.assessment }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.assessment === 1\" > Assessment</ng-container>\n <ng-container *ngIf=\"contentStructure?.assessment > 1\" > Assessments</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.other > 0\">\n <ng-container>{{ contentStructure?.other }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.other === 1\" > Other item</ng-container>\n <ng-container *ngIf=\"contentStructure?.other > 1\" > Other Items</ng-container>\n </span>\n </div>\n </div> -->\n <div class=\"see-all-container\">\n <a href=\"javascript:void(0)\" role=\"button\" (click)=\"viewChildren = !viewChildren\"\n class=\"margin-left-m see-all-btn tab custom-chevron customicon\" mat-button>\n <!-- <ng-container *ngIf=\"!viewChildren\" >See All</ng-container>\n <ng-container *ngIf=\"viewChildren\" >See Less</ng-container> -->\n <mat-icon *ngIf=\"!viewChildren\">keyboard_arrow_down</mat-icon>\n <mat-icon *ngIf=\"viewChildren\">keyboard_arrow_up</mat-icon>\n </a>\n </div>\n </div>\n </div>\n <!-- <div class=\"w-100\" *ngIf=\"content?.identifier && content?.completionPercentage\">\n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n </div> -->\n </div>\n\n <div class=\"children-container margin-left-l margin-top-s margin-bottom-s\" [hidden]=\"!viewChildren\">\n <ws-app-toc-content-card [forPreview]=\"forPreview\" [content]=\"child\" [expandAll]=\"expandAll\" [rootId]=\"rootId\"\n [batchId]=\"batchId\" [rootContentType]=\"rootContentType\"\n *ngFor=\"let child of content?.children; trackBy: contentTrackBy\">\n </ws-app-toc-content-card>\n </div>\n </ng-container>\n <div *ngIf=\"isResource\" class=\"resource-container\">\n <!-- <ws-widget-display-content-type-icon class=\"flex\" [displayContentType]=\"content?.displayContentType\">\n </ws-widget-display-content-type-icon> -->\n <!-- <div class=\"img-container\"> -->\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\n <!-- <ng-container *ngIf=\"content?.completionStatus == 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\" [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container> -->\n <!-- </div> -->\n\n <div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\n <!-- deactivated as per NIC CEO requirement to access course wthout login -->\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\" [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\n {{ content?.name }}\n </p>\n <span class=\"content-type optional-span\" *ngIf=\"content?.optionalReading\">{{'apptoccontentcard.optional' | translate}}</span>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\n </div>\n <div class=\"resicons ws-mat-black60-text\">\n <!-- <span class=\"mat-body-strong content-type ws-mat-default-text\">{{ content?.contentType }}</span> -->\n <!-- <span class=\"ml-5\"> -->\n <!-- <ng-container *ngIf=\"content?.displayContentType\"> | </ng-container> -->\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\n <img src=\"/assets/icons/content/grey/video.svg\" alt=\"Video\" class=\"float-left margin-right-xs\" *ngIf=\"content?.mimeType === 'video/mp4' || content?.mimeType === 'video/x-youtube' ||\n content?.mimeType ==='application/x-mpegURL'\">\n <img src=\"/assets/icons/content/grey/audio.svg\" alt=\"Audio\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'audio/mpeg'\">\n <img src=\"/assets/icons/content/grey/pdf.svg\" alt=\"PDF\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/pdf'\">\n <!-- <img src=\"/assets/icons/content/grey/resource.svg\" alt=\"Survey\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/survey'\"> -->\n <img src=\"/assets/icons/content/grey/link.svg\" alt=\"InteractiveContent\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/vnd.ekstep.html-archive' || content?.mimeType === 'text/x-url'\">\n <img src=\"/assets/icons/content/grey/assessment.svg\" alt=\"Assessment\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/json' || content?.mimeType === 'application/quiz' || content?.mimeType === 'application/vnd.sunbird.questionset'\">\n <img src=\"/assets/icons/content/grey/image.svg\" alt=\"Image\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'image/png' || content?.mimeType === 'image/jpeg'\">\n <img src=\"/assets/icons/content/grey/content_copy.svg\" class=\"contenticon\" alt=\"Course\"\n *ngIf=\"content.mimeType === 'application/vnd.ekstep.content-collection' || content?.mimeType === 'application/survey'\">\n <img src=\"/assets/icons/content/grey/module.svg\" class=\"float-left margin-right-xs\" alt=\"offline sessions\"\n *ngIf=\"content.mimeType === 'application/offline' || content?.mimeType === 'application/survey'\">\n <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span>\n <!-- </span> -->\n </div>\n </div>\n </a>\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\n <!-- <div class=\"type-container resource\" *ngIf=\"content?.contentType === 'Resource'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Resource</span>\n </div>\n <div class=\"type-container module\" *ngIf=\"content?.contentType === 'Collection'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Module</span>\n </div>\n <div class=\"type-container course\" *ngIf=\"content?.contentType === 'Course'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Course</span>\n </div> -->\n <button *ngIf=\"!forPreview && content?.artifactUrl && !isXSmall && isAllowed && isEnabled\" type=\"button\" mat-icon-button\n class=\"\" [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button>\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage ; else elseBlock\">\n \n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.completed' | translate}}\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\" [radius]=\"12\"\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor2()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.inProgress' | translate}}\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n \n </ng-container>\n <ng-template #elseBlock>\n <circle-progress class=\"flex items-center progress\"\n [percent]=\"0\"\n [radius]=\"12\"\n [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\"\n [outerStrokeColor]=\"'#808080'\"\n [innerStrokeColor]=\"'#808080'\"\n [animation]=\"true\"\n [space]=\"-3\"\n [showUnits]=\"false\"\n [animationDuration]=\"300\"\n [showTitle]=\"false\"\n [backgroundPadding]=\"0\"\n [backgroundPadding]=\"-9\"\n [outerStrokeLinecap]=\"'butt'\"\n matTooltip=\"{{'apptoccontentcard.notStarted' | translate}}\"\n [showSubtitle]=\"false\" \n [showInnerStroke]=\"true\" \n [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"></circle-progress>\n <!-- <p>no data</p> -->\n </ng-template>\n </div>\n\n \n\n <!-- <button *ngIf=\"content?.artifactUrl\" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button> -->\n </div>\n <!-- <div class=\"resource-meta width-expand\">\n <a [routerLink]=\"resourceLink.url\" [queryParams]=\"resourceLink.queryParams\">\n <h3 *ngIf=\"content?.displayContentType !== enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\n {{ content?.name }}\n </h3>\n <h1 *ngIf=\"content?.displayContentType === enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\n {{ content?.name }}\n </h1>\n </a>\n <span class=\"mat-body-strong margin-left-xs\">{{ content?.duration | pipeDurationTransform: 'time24' }}\n </span>\n </div> -->\n </div>\n</ng-container>\n\n<mat-menu #buttonMenu=\"matMenu\">\n <a mat-menu-item [routerLink]=\"'../' + content?.identifier + '/overview'\" [queryParams]=\"contextPath\"\n class=\"flex flex-middle\">\n <mat-icon>toc</mat-icon>\n <h3 class=\"margin-remove\" >\n {{'apptoccontentcard.viewDetails' | translate}}\n </h3>\n </a>\n <!-- TODO: Hiding this from here for now, as the functionalities are not working -->\n <!-- <div mat-menu-item>\n <ws-widget-btn-content-download [widgetData]=\"\n content\n | pipePartialContent\n : ['identifier', 'contentType', 'resourceType', 'mimeType', 'downloadUrl', 'isExternal']\n \"></ws-widget-btn-content-download>\n <ws-widget-btn-content-like [widgetData]=\"content | pipePartialContent: ['identifier']\">\n </ws-widget-btn-content-like>\n <ws-widget-btn-content-share [widgetData]=\"content\"></ws-widget-btn-content-share>\n <ws-widget-btn-goals></ws-widget-btn-goals>\n <ws-widget-btn-playlist></ws-widget-btn-playlist>\n </div> -->\n</mat-menu>\n", styles: [".customicon{position:absolute;top:-.5em;right:-4px}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.custom-chevron:focus{outline:0px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:0}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.certificate-txt{padding:0 20px;color:#0273b6;font-weight:700}.view-certificate-wrapper{display:flex;border-radius:4px;border:1.5px solid rgb(0,116,182);opacity:1;padding:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.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: i6.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: i7.MatLegacyMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatLegacyMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatLegacyMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i8.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i9.CircleProgressComponent, selector: "circle-progress", inputs: ["name", "class", "backgroundGradient", "backgroundColor", "backgroundGradientStopColor", "backgroundOpacity", "backgroundStroke", "backgroundStrokeWidth", "backgroundPadding", "radius", "space", "percent", "toFixed", "maxPercent", "renderOnClick", "units", "unitsFontSize", "unitsFontWeight", "unitsColor", "outerStrokeGradient", "outerStrokeWidth", "outerStrokeColor", "outerStrokeGradientStopColor", "outerStrokeLinecap", "innerStrokeColor", "innerStrokeWidth", "titleFormat", "title", "titleColor", "titleFontSize", "titleFontWeight", "subtitleFormat", "subtitle", "subtitleColor", "subtitleFontSize", "subtitleFontWeight", "imageSrc", "imageHeight", "imageWidth", "animation", "animateTitle", "animateSubtitle", "animationDuration", "showTitle", "showSubtitle", "showUnits", "showImage", "showBackground", "showInnerStroke", "clockwise", "responsive", "startFromZero", "showZeroOuterStroke", "lazy", "options"], outputs: ["onClick"] }, { kind: "component", type: AppTocContentCardComponent, selector: "ws-app-toc-content-card", inputs: ["content", "expandAll", "rootId", "rootContentType", "forPreview", "batchId"] }, { kind: "pipe", type: i1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] }); }
|
|
232
|
+
}
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppTocContentCardComponent, decorators: [{
|
|
234
|
+
type: Component,
|
|
235
|
+
args: [{ selector: 'ws-app-toc-content-card', template: "<ng-container *ngIf=\"content\">\n <ng-container *ngIf=\"isCollection\">\n <div class=\"flex flex-col position-relative\">\n <div class=\"card-collection w-auto sm:w-100 padding-right-xl\">\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\n <div class=\"flex flex-col flex-wrap flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\n <div class=\"text-truncate\" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n {{ content?.name }} \n </p>\n <ng-container *ngIf=\"content.issuedCertificatesSVG\">\n <a class=\"certificate-txt\" (click)=\"openCertificateDialog(content.issuedCertificatesSVG)\">\n <span class=\"view-certificate-wrapper\">\n <img src=\"fusion-assets/images/certificate-ico.svg\" width=\"24\" height=\"24\">\n <span>{{'apptoccontentcard.viewCertificate' | translate}}</span>\n </span>\n </a>\n </ng-container>\n <div class=\"type-container resource mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Resource'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.resource' | translate}}</span>\n </div>\n <div class=\"type-container module mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Collection'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.module' | translate}}</span>\n </div>\n <div class=\"type-container course mt-2 sm:mt-0\" *ngIf=\"content?.category === 'Course'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>{{'apptoccontentcard.course' | translate}}</span>\n </div>\n </div>\n <div>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.displayContentType }}</span> -->\n <!-- <span class=\"ml-5\"> -->\n <!-- <ng-container *ngIf=\"content?.displayContentType\"> | </ng-container> -->\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\n <span class=\"text-lowercase ws-mat-black60-text\">{{ content?.duration | pipeDurationTransform: 'hms'\n }}</span>\n <!-- </span> -->\n </div>\n </div>\n <button *ngIf=\"content?.artifactUrl && isAllowed && !isEnabled\" type=\"button\" mat-icon-button\n [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button>\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage && content.primaryCategory !== 'Course'\">\n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\"\n [radius]=\"12\" [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\"\n [outerStrokeColor]=\"progressColor()\" [innerStrokeColor]=\"'rgba(0,0,0,.16)'\" [animation]=\"true\"\n [animationDuration]=\"300\" [showTitle]=\"false\" [showUnits]=\"false\" [showSubtitle]=\"false\"\n [showInnerStroke]=\"true\" [clockwise]=\"true\" [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\"\n [backgroundStrokeWidth]=\"3\" [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\"\n [backgroundPadding]=\"0\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"\n [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n </ng-container>\n\n <!-- <div *ngIf=\"hasContentStructure\" class=\"child-meta-container\">\n <div class=\"child-structure\"> -->\n <!-- <mat-icon class=\"structure-icon\">import_contacts</mat-icon> -->\n <!-- <span class=\"oval-white\" *ngIf=\"contentStructure?.course > 0\">\n <ng-container>{{ contentStructure?.course }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.course === 1\" > Course</ng-container>\n <ng-container *ngIf=\"contentStructure?.course > 1\" > Courses</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.learningModule > 0\">\n <ng-container> {{ contentStructure?.learningModule }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.learningModule === 1\" > Module</ng-container>\n <ng-container *ngIf=\"contentStructure?.learningModule > 1\" > Modules</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.video > 0\">\n <ng-container> {{ contentStructure?.video }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.video === 1\" > Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.video > 1\" > Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.interactiveVideo > 0\">\n <ng-container> {{ contentStructure?.interactiveVideo }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.interactiveVideo === 1\" >\n Interactive Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.interactiveVideo > 1\" >\n Interactive Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.youtube > 0\">\n <ng-container> {{ contentStructure?.youtube }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.youtube === 1\" > Youtube Video</ng-container>\n <ng-container *ngIf=\"contentStructure?.youtube > 1\" > Youtube Videos</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.pdf > 0\">\n <ng-container> {{ contentStructure?.pdf }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.pdf === 1\" > PDF</ng-container>\n <ng-container *ngIf=\"contentStructure?.pdf > 1\" > PDFs</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.podcast > 0\">\n <ng-container> {{ contentStructure?.podcast }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.podcast === 1\" > Podcast</ng-container>\n <ng-container *ngIf=\"contentStructure?.podcast > 1\" > Podcasts</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webModule > 0\">\n <ng-container> {{ contentStructure?.webModule }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.webModule === 1\" > Web Module</ng-container>\n <ng-container *ngIf=\"contentStructure?.webModule > 1\" > Web Modules</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.webPage > 0\">\n <ng-container> {{ contentStructure?.webPage }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.webPage === 1\" > Web Page</ng-container>\n <ng-container *ngIf=\"contentStructure?.webPage > 1\" > Web Pages</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.quiz > 0\">\n <ng-container *ngIf=\"contentStructure?.webPage > 0\">, </ng-container>\n <ng-container>{{ contentStructure?.quiz }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.quiz === 1\" > Quiz</ng-container>\n <ng-container *ngIf=\"contentStructure?.quiz > 1\" > Quizzes</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.assessment > 0\">\n <ng-container> {{ contentStructure?.assessment }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.assessment === 1\" > Assessment</ng-container>\n <ng-container *ngIf=\"contentStructure?.assessment > 1\" > Assessments</ng-container>\n </span>\n <span class=\"oval-white\" *ngIf=\"contentStructure?.other > 0\">\n <ng-container>{{ contentStructure?.other }}</ng-container>\n <ng-container *ngIf=\"contentStructure?.other === 1\" > Other item</ng-container>\n <ng-container *ngIf=\"contentStructure?.other > 1\" > Other Items</ng-container>\n </span>\n </div>\n </div> -->\n <div class=\"see-all-container\">\n <a href=\"javascript:void(0)\" role=\"button\" (click)=\"viewChildren = !viewChildren\"\n class=\"margin-left-m see-all-btn tab custom-chevron customicon\" mat-button>\n <!-- <ng-container *ngIf=\"!viewChildren\" >See All</ng-container>\n <ng-container *ngIf=\"viewChildren\" >See Less</ng-container> -->\n <mat-icon *ngIf=\"!viewChildren\">keyboard_arrow_down</mat-icon>\n <mat-icon *ngIf=\"viewChildren\">keyboard_arrow_up</mat-icon>\n </a>\n </div>\n </div>\n </div>\n <!-- <div class=\"w-100\" *ngIf=\"content?.identifier && content?.completionPercentage\">\n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n </div> -->\n </div>\n\n <div class=\"children-container margin-left-l margin-top-s margin-bottom-s\" [hidden]=\"!viewChildren\">\n <ws-app-toc-content-card [forPreview]=\"forPreview\" [content]=\"child\" [expandAll]=\"expandAll\" [rootId]=\"rootId\"\n [batchId]=\"batchId\" [rootContentType]=\"rootContentType\"\n *ngFor=\"let child of content?.children; trackBy: contentTrackBy\">\n </ws-app-toc-content-card>\n </div>\n </ng-container>\n <div *ngIf=\"isResource\" class=\"resource-container\">\n <!-- <ws-widget-display-content-type-icon class=\"flex\" [displayContentType]=\"content?.displayContentType\">\n </ws-widget-display-content-type-icon> -->\n <!-- <div class=\"img-container\"> -->\n <!-- <img class=\"card-thumbnail ws-mat-primary-lite-background\" [src]=\"content?.appIcon\" alt=\"Thumbnail\"\n (click)=\"viewChildren = !viewChildren\" [wsUtilsDefaultThumbnail]=\"defaultThumbnail\" /> -->\n <!-- <ng-container *ngIf=\"content?.completionStatus == 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\" [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <ws-widget-content-progress *ngIf=\"content?.identifier && content?.completionPercentage\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress>\n </ng-container> -->\n <!-- </div> -->\n\n <div class=\"flex flex-col sm:flex-row flex-between width-expand pr-0 w-100 sm:pr-4 sm:w-auto\">\n <!-- deactivated as per NIC CEO requirement to access course wthout login -->\n <a [class.disabled]=\"(forPreview || !isEnabled) ? true : null\" [routerLink]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.url : null\"\n [queryParams]=\"(isAllowed && !forPreview && !isEnabled) ? resourceLink.queryParams : null\">\n <div class=\"text-truncate \" [ngClass]=\"{'cursor-pointer': !isEnabled}\" (click)=\"viewChildren = !viewChildren; raiseTelemetry()\">\n <div class=\"flex flex-col sm:flex-row flex-wrap\">\n <p class=\"margin-remove text-truncate mat-subheading-1 flex-auto\">\n <!-- <mat-icon class=\"margin-right-xs radiobtn time-icon\">radio_button_unchecked </mat-icon> -->\n {{ content?.name }}\n </p>\n <span class=\"content-type optional-span\" *ngIf=\"content?.optionalReading\">{{'apptoccontentcard.optional' | translate}}</span>\n <!-- <span class=\"mat-body-strong content-type\">{{ content?.identifier }}</span> -->\n </div>\n <div class=\"resicons ws-mat-black60-text\">\n <!-- <span class=\"mat-body-strong content-type ws-mat-default-text\">{{ content?.contentType }}</span> -->\n <!-- <span class=\"ml-5\"> -->\n <!-- <ng-container *ngIf=\"content?.displayContentType\"> | </ng-container> -->\n <!-- <mat-icon class=\"time-icon\">schedule</mat-icon> -->\n <img src=\"/assets/icons/content/grey/video.svg\" alt=\"Video\" class=\"float-left margin-right-xs\" *ngIf=\"content?.mimeType === 'video/mp4' || content?.mimeType === 'video/x-youtube' ||\n content?.mimeType ==='application/x-mpegURL'\">\n <img src=\"/assets/icons/content/grey/audio.svg\" alt=\"Audio\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'audio/mpeg'\">\n <img src=\"/assets/icons/content/grey/pdf.svg\" alt=\"PDF\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/pdf'\">\n <!-- <img src=\"/assets/icons/content/grey/resource.svg\" alt=\"Survey\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/survey'\"> -->\n <img src=\"/assets/icons/content/grey/link.svg\" alt=\"InteractiveContent\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/vnd.ekstep.html-archive' || content?.mimeType === 'text/x-url'\">\n <img src=\"/assets/icons/content/grey/assessment.svg\" alt=\"Assessment\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'application/json' || content?.mimeType === 'application/quiz' || content?.mimeType === 'application/vnd.sunbird.questionset'\">\n <img src=\"/assets/icons/content/grey/image.svg\" alt=\"Image\" class=\"float-left margin-right-xs\"\n *ngIf=\"content?.mimeType === 'image/png' || content?.mimeType === 'image/jpeg'\">\n <img src=\"/assets/icons/content/grey/content_copy.svg\" class=\"contenticon\" alt=\"Course\"\n *ngIf=\"content.mimeType === 'application/vnd.ekstep.content-collection' || content?.mimeType === 'application/survey'\">\n <img src=\"/assets/icons/content/grey/module.svg\" class=\"float-left margin-right-xs\" alt=\"offline sessions\"\n *ngIf=\"content.mimeType === 'application/offline' || content?.mimeType === 'application/survey'\">\n <span class=\"ws-mat-black60-text\">{{ (content?.duration || 120)| pipeDurationTransform: 'hms' }}</span>\n <!-- </span> -->\n </div>\n </div>\n </a>\n <div class=\"flex flex-wrap items-center justify-start sm:justify-end\">\n <!-- <div class=\"type-container resource\" *ngIf=\"content?.contentType === 'Resource'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Resource</span>\n </div>\n <div class=\"type-container module\" *ngIf=\"content?.contentType === 'Collection'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Module</span>\n </div>\n <div class=\"type-container course\" *ngIf=\"content?.contentType === 'Course'\">\n <mat-icon class=\"mr-1 custom-icon rotate-90\">call_to_action</mat-icon>\n <span>Course</span>\n </div> -->\n <button *ngIf=\"!forPreview && content?.artifactUrl && !isXSmall && isAllowed && isEnabled\" type=\"button\" mat-icon-button\n class=\"\" [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button>\n <ng-container *ngIf=\"!forPreview && content?.identifier && content?.completionPercentage ; else elseBlock\">\n \n <ng-container *ngIf=\"content?.completionStatus == 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"100\" [radius]=\"12\" [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.completed' | translate}}\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"100\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n <ng-container *ngIf=\"content?.completionStatus < 2\">\n <circle-progress class=\"flex items-center progress\" [percent]=\"content?.completionPercentage\" [radius]=\"12\"\n [outerStrokeWidth]=\"3\" [innerStrokeWidth]=\"3\" [space]=\"-3\" [outerStrokeColor]=\"progressColor2()\"\n [innerStrokeColor]=\"'rgba(0, 0, 0, 0.16)'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"false\"\n [showUnits]=\"false\" [showSubtitle]=\"false\" [showInnerStroke]=\"true\" [clockwise]=\"true\"\n [backgroundOpacity]=\"0\" [backgroundGradient]=\"false\" [backgroundStrokeWidth]=\"3\" matTooltip=\"{{'apptoccontentcard.inProgress' | translate}}\"\n [showZeroOuterStroke]=false [backgroundPadding]=\"-9\" [startFromZero]=\"false\" [backgroundPadding]=\"0\"\n [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\" [outerStrokeLinecap]=\"'butt'\">\n </circle-progress>\n <!-- <ws-widget-content-progress *ngIf=\"content?.identifier\" [forPreview]=\"forPreview\"\n [contentId]=\"content?.identifier\" class=\"progress-bar-thin\" [progress]=\"content?.completionPercentage\"\n [progressType]=\"'percentage'\">\n </ws-widget-content-progress> -->\n </ng-container>\n \n </ng-container>\n <ng-template #elseBlock>\n <circle-progress class=\"flex items-center progress\"\n [percent]=\"0\"\n [radius]=\"12\"\n [outerStrokeWidth]=\"3\"\n [innerStrokeWidth]=\"3\"\n [outerStrokeColor]=\"'#808080'\"\n [innerStrokeColor]=\"'#808080'\"\n [animation]=\"true\"\n [space]=\"-3\"\n [showUnits]=\"false\"\n [animationDuration]=\"300\"\n [showTitle]=\"false\"\n [backgroundPadding]=\"0\"\n [backgroundPadding]=\"-9\"\n [outerStrokeLinecap]=\"'butt'\"\n matTooltip=\"{{'apptoccontentcard.notStarted' | translate}}\"\n [showSubtitle]=\"false\" \n [showInnerStroke]=\"true\" \n [clockwise]=\"true\" [imageHeight]=\"24\" [imageWidth]=\"24\" [showBackground]=\"false\"></circle-progress>\n <!-- <p>no data</p> -->\n </ng-template>\n </div>\n\n \n\n <!-- <button *ngIf=\"content?.artifactUrl\" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"buttonMenu\">\n <mat-icon>more_vertical</mat-icon>\n </button> -->\n </div>\n <!-- <div class=\"resource-meta width-expand\">\n <a [routerLink]=\"resourceLink.url\" [queryParams]=\"resourceLink.queryParams\">\n <h3 *ngIf=\"content?.displayContentType !== enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\n {{ content?.name }}\n </h3>\n <h1 *ngIf=\"content?.displayContentType === enumContentTypes.ASSESSMENT\" class=\"margin-remove text-truncate\">\n {{ content?.name }}\n </h1>\n </a>\n <span class=\"mat-body-strong margin-left-xs\">{{ content?.duration | pipeDurationTransform: 'time24' }}\n </span>\n </div> -->\n </div>\n</ng-container>\n\n<mat-menu #buttonMenu=\"matMenu\">\n <a mat-menu-item [routerLink]=\"'../' + content?.identifier + '/overview'\" [queryParams]=\"contextPath\"\n class=\"flex flex-middle\">\n <mat-icon>toc</mat-icon>\n <h3 class=\"margin-remove\" >\n {{'apptoccontentcard.viewDetails' | translate}}\n </h3>\n </a>\n <!-- TODO: Hiding this from here for now, as the functionalities are not working -->\n <!-- <div mat-menu-item>\n <ws-widget-btn-content-download [widgetData]=\"\n content\n | pipePartialContent\n : ['identifier', 'contentType', 'resourceType', 'mimeType', 'downloadUrl', 'isExternal']\n \"></ws-widget-btn-content-download>\n <ws-widget-btn-content-like [widgetData]=\"content | pipePartialContent: ['identifier']\">\n </ws-widget-btn-content-like>\n <ws-widget-btn-content-share [widgetData]=\"content\"></ws-widget-btn-content-share>\n <ws-widget-btn-goals></ws-widget-btn-goals>\n <ws-widget-btn-playlist></ws-widget-btn-playlist>\n </div> -->\n</mat-menu>\n", styles: [".customicon{position:absolute;top:-.5em;right:-4px}a.disabled{pointer-events:none;cursor:default}span.optional-span{margin-left:8px;padding:0 6px;border-radius:2px;display:inline-block;background-color:#0074b6;color:#fff;font-size:12px}.card-collection{display:flex;align-items:center;border-radius:8px}.card-collection .card-thumbnail{height:100%;margin-right:12px;cursor:pointer;border-radius:8px 0 0}@media only screen and (max-width: 469px){.card-collection{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.card-collection .card-thumbnail{height:100%!important;width:100%!important}.card-collection .text-truncate{white-space:unset!important}}.tab:focus{outline:1px solid!important}.custom-chevron:focus{outline:0px solid!important}.resource-container .card-thumbnail{height:100%;cursor:pointer}.resource-container .img-container{position:relative;margin-right:12px}.resource-container .img-container ws-widget-content-progress{position:absolute;left:0;right:0;bottom:5px}@media only screen and (max-width: 469px){.resource-container{flex-direction:column;margin:8px 8px 16px!important;align-items:flex-start!important}.resource-container .card-thumbnail{height:100%!important;width:100%!important}.resource-container .text-truncate{white-space:unset!important}}.child-meta-container{margin-top:8px;display:flex}.child-meta-container .child-structure{display:flex;align-items:center;flex-wrap:wrap}.child-meta-container .child-structure span{margin-right:12px;text-align:center;margin-bottom:8px}.child-meta-container .child-structure .structure-icon{margin-right:12px}@media only screen and (max-width: 469px){.child-meta-container{margin-left:.5rem;justify-content:space-between}}.resource-container{display:flex;align-items:center;border-radius:8px}.resource-container ws-display-content-type-icon{display:flex;align-items:center}.resource-container .resource-meta{margin-left:12px;display:flex;justify-content:space-between;align-items:center}.children-container .mat-subheading-1{font:400 16px/24px Lato!important}.children-container .resource-container{margin-bottom:20px;margin-right:0}.children-container .resource-container .card-thumbnail{height:65px;align-self:center}.content-heading{letter-spacing:0px;color:#222}.content-type{letter-spacing:0px}.time-icon{vertical-align:middle}.time-value{letter-spacing:0px;color:#222;text-transform:lowercase}.see-all-container{position:absolute;right:2px;top:5px}.oval-white{background:#fff 0% 0% no-repeat padding-box;border-radius:8px;padding:2px 8px}.type-container{letter-spacing:0px;display:flex;align-items:center}.type-container .rotate-90{transform:rotate(-90deg)}.type-container .custom-icon{width:18px;height:18px;font-size:18px;margin-right:8px}.type-container.resource{color:#00a9f4}.type-container.module{color:#34d6a4}.type-container.course{color:#f58634}.no-mb{margin-bottom:0!important}.w-100{width:100%}.w-auto{width:auto}.progress-bar-thin{height:5px!important}.progress-bar-thin ::ng-deep .mat-progress-bar{height:5px}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-buffer{background-color:transparent!important}.progress-bar-thin ::ng-deep .theme-igot.day-mode .mat-progress-bar-background{fill:transparent}.radiobtn{color:#00000029}.resicons img{width:22px;opacity:.5;margin-top:2px;vertical-align:sub}.certificate-txt{padding:0 20px;color:#0273b6;font-weight:700}.view-certificate-wrapper{display:flex;border-radius:4px;border:1.5px solid rgb(0,116,182);opacity:1;padding:8px}\n"] }]
|
|
236
|
+
}], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.MatLegacyDialog }]; }, propDecorators: { content: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}], expandAll: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}], rootId: [{
|
|
241
|
+
type: Input
|
|
242
|
+
}], rootContentType: [{
|
|
243
|
+
type: Input
|
|
244
|
+
}], forPreview: [{
|
|
245
|
+
type: Input
|
|
246
|
+
}], batchId: [{
|
|
247
|
+
type: Input
|
|
248
|
+
}] } });
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jb250ZW50LWNhcmQvYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXRvYy1jb250ZW50LWNhcmQvYXBwLXRvYy1jb250ZW50LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFBO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUd4RSxtQkFBbUI7QUFDbkIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJFQUEyRSxDQUFBOzs7Ozs7Ozs7Ozs7QUFRdEgsTUFBTSxPQUFPLDBCQUEwQjtJQStCckMsWUFDVSxNQUFvQixFQUNwQixNQUFpQjtRQURqQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFoQ2xCLFlBQU8sR0FBOEIsSUFBSSxDQUFBO1FBQ3pDLGNBQVMsR0FBRyxLQUFLLENBQUE7UUFHakIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUUzQix3QkFBbUIsR0FBRyxLQUFLLENBQUE7UUFDM0IscUJBQWdCLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFBO1FBQ2pELHFCQUFnQixHQUEyQjtZQUN6QyxVQUFVLEVBQUUsQ0FBQztZQUNiLFNBQVMsRUFBRSxDQUFD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Q0FBQzsrR0F6T1UsMEJBQTBCO21HQUExQiwwQkFBMEIsZ1BDZnZDLDgvdkJBcVdBLHV3TUR0VmEsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjtpSUFLMUIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnXG5pbXBvcnQgeyB2aWV3ZXJSb3V0ZUdlbmVyYXRvciB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy92aWV3ZXItcm91dGUtdXRpbCdcbmltcG9ydCB7IE5zQXBwVG9jIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcC10b2MubW9kZWwnXG5pbXBvcnQgeyBFdmVudFNlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12Midcbi8qIHRzbGludDpkaXNhYmxlKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcbmltcG9ydCB7IENlcnRpZmljYXRlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vX2NvbGxlY3Rpb24vX2NvbW1vbi9jZXJ0aWZpY2F0ZS1kaWFsb2cvY2VydGlmaWNhdGUtZGlhbG9nLmNvbXBvbmVudCdcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy1hcHAtdG9jLWNvbnRlbnQtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdG9jLWNvbnRlbnQtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC10b2MtY29udGVudC1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFwcFRvY0NvbnRlbnRDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBleHBhbmRBbGwgPSBmYWxzZVxuICBASW5wdXQoKSByb290SWQhOiBzdHJpbmdcbiAgQElucHV0KCkgcm9vdENvbnRlbnRUeXBlITogc3RyaW5nXG4gIEBJbnB1dCgpIGZvclByZXZpZXcgPSBmYWxzZVxuICBASW5wdXQoKSBiYXRjaElkITogc3RyaW5nXG4gIGhhc0NvbnRlbnRTdHJ1Y3R1cmUgPSBmYWxzZVxuICBlbnVtQ29udGVudFR5cGVzID0gTnNDb250ZW50LkVEaXNwbGF5Q29udGVudFR5cGVzXG4gIGNvbnRlbnRTdHJ1Y3R1cmU6IE5zQXBwVG9jLklUb2NTdHJ1Y3R1cmUgPSB7XG4gICAgYXNzZXNzbWVudDogMCxcbiAgICBmaW5hbFRlc3Q6IDAsXG4gICAgY291cnNlOiAwLFxuICAgIGhhbmRzT246IDAsXG4gICAgaW50ZXJhY3RpdmVWaWRlbzogMCxcbiAgICBsZWFybmluZ01vZHVsZTogMCxcbiAgICBvdGhlcjogMCxcbiAgICBwZGY6IDAsXG4gICAgc3VydmV5OiAwLFxuICAgIHBvZGNhc3Q6IDAsXG4gICAgcHJhY3RpY2VUZXN0OiAwLFxuICAgIHF1aXo6IDAsXG4gICAgdmlkZW86IDAsXG4gICAgd2ViTW9kdWxlOiAwLFxuICAgIHdlYlBhZ2U6IDAsXG4gICAgeW91dHViZTogMCxcbiAgICBpbnRlcmFjdGl2ZWNvbnRlbnQ6IDAsXG4gICAgb2ZmbGluZVNlc3Npb246IDAsXG4gIH1cbiAgZGVmYXVsdFRodW1ibmFpbCA9ICcnXG4gIHZpZXdDaGlsZHJlbiA9IGZhbHNlXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXZlbnRzOiBFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmV2YWx1YXRlSW1tZWRpYXRlQ2hpbGRyZW5TdHJ1Y3R1cmUoKVxuICAgIC8vIHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgLy8gICAgIHRoaXMuZGVmYXVsdFRodW1ibmFpbCA9IGRhdGEuY29uZmlnRGF0YS5kYXRhLmxvZ29zLmRlZmF1bHRDb250ZW50XG4gICAgLy8gICB9XG4gICAgLy8gKVxuICAgIFxuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGNoYW5nZXMpIHtcbiAgICAgIGlmIChwcm9wZXJ0eSA9PT0gJ2V4cGFuZEFsbCcpIHtcbiAgICAgICAgdGhpcy52aWV3Q2hpbGRyZW4gPSB0aGlzLmV4cGFuZEFsbFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBnZXQgaXNDb2xsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQubWltZVR5cGUgPT09IE5zQ29udGVudC5FTWltZVR5cGVzLkNPTExFQ1RJT05cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgZ2V0IGlzUmVzb3VyY2UoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuUkVTT1VSQ0VcbiAgICAgICAgLy8gfHwgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuS05PV0xFREdFX0FSVElGQUNUXG4gICAgICAgIHx8IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LlBSQUNUSUNFX1JFU09VUkNFXG4gICAgICAgIHx8IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5LkZJTkFMX0FTU0VTU01FTlRcbiAgICAgICAgfHwgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09NUF9BU1NFU1NNRU5UXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGdldCByZXNvdXJjZUxpbmsoKTogeyB1cmw6IHN0cmluZzsgcXVlcnlQYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfSB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgbGV0IHVybCA9IHZpZXdlclJvdXRlR2VuZXJhdG9yKFxuICAgICAgICB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcbiAgICAgICAgdGhpcy5jb250ZW50Lm1pbWVUeXBlLFxuICAgICAgICB0aGlzLnJvb3RJZCxcbiAgICAgICAgdGhpcy5yb290Q29udGVudFR5cGUsXG4gICAgICAgIHRoaXMuZm9yUHJldmlldyxcbiAgICAgICAgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSxcbiAgICAgICAgdGhpcy5iYXRjaElkXG4gICAgICApXG4gICAgICBcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xuICAgICAgLy8gY29uc29sZS5sb2codXJsLCc9PT09PT4gY29udGVudCBjYXJkIHVybCBsaW5rIDw9PT09PT09PScpXG4gICAgICByZXR1cm4gdXJsXG4gICAgfVxuICAgIHJldHVybiB7IHVybDogJycsIHF1ZXJ5UGFyYW1zOiB7fSB9XG4gIH1cblxuICBwdWJsaWMgcHJvZ3Jlc3NDb2xvcigpOiBzdHJpbmcge1xuICAgIC8vIGlmICh0aGlzLmN1cnJlbnRQcm9ncmVzcyA8PSAzMCkge1xuICAgIC8vICAgcmV0dXJuICcjRDEzOTI0J1xuICAgIC8vIH0gaWYgKHRoaXMuY3VycmVudFByb2dyZXNzID4gMzAgJiYgdGhpcy5jdXJyZW50UHJvZ3Jlc3MgPD0gNzApIHtcbiAgICAvLyAgIHJldHVybiAnI0U5OUUzOCdcbiAgICAvLyB9XG4gICAgLy8gaWYgKHRoaXMuY3VycmVudFByb2dyZXNzID4gNzAgJiYgdGhpcy5jdXJyZW50UHJvZ3Jlc3MgPD0gMTAwKSB7XG4gICAgLy8gICByZXR1cm4gJyMxRDg5MjMnXG4gICAgLy8gfVxuICAgXG4gICAgcmV0dXJuICcjMUQ4OTIzJ1xuICB9XG5cbiAgcHVibGljIHByb2dyZXNzQ29sb3IyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcjZjI3ZDAwJ1xuICB9XG5cblxuICBwcml2YXRlIGV2YWx1YXRlSW1tZWRpYXRlQ2hpbGRyZW5TdHJ1Y3R1cmUoKSB7XG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY2hpbGRyZW4gJiYgdGhpcy5jb250ZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdGhpcy5jb250ZW50LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBOc0NvbnRlbnQuSUNvbnRlbnQpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuQ09VUlNFKSB7XG4gICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLmNvdXJzZSArPSAxXG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5LTk9XTEVER0VfQVJUSUZBQ1QpIHtcbiAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUub3RoZXIgKz0gMVxuICAgICAgICB9IGVsc2UgaWYgKGNoaWxkLnByaW1hcnlDYXRlZ29yeSA9PT0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnkuTU9EVUxFKSB7XG4gICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLmxlYXJuaW5nTW9kdWxlICs9IDFcbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5wcmltYXJ5Q2F0ZWdvcnkgPT09IE5zQ29udGVudC5FUHJpbWFyeUNhdGVnb3J5Lk9GRkxJTkVfU0VTU0lPTikge1xuICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5vZmZsaW5lU2Vzc2lvbiArPSAxXG4gICAgICAgIH0gZWxzZSBpZiAoY2hpbGQucHJpbWFyeUNhdGVnb3J5ID09PSBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeS5SRVNPVVJDRSkge1xuICAgICAgICAgIHN3aXRjaCAoY2hpbGQubWltZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSEFORFNfT046XG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5oYW5kc09uICs9IDFcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuTVAzOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucG9kY2FzdCArPSAxXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLk1QNDpcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuTTNVODpcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLnZpZGVvICs9IDFcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuSU5URVJBQ1RJT046XG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5pbnRlcmFjdGl2ZVZpZGVvICs9IDFcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuUERGOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucGRmICs9IDFcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuT0ZGTElORV9TRVNTSU9OOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUub2ZmbGluZVNlc3Npb24gKz0gMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5TVVJWRVk6XG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5zdXJ2ZXkgKz0gMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5IVE1MOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUud2ViUGFnZSArPSAxXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLlFVSVo6XG4gICAgICAgICAgICAgIGlmIChjaGlsZC5yZXNvdXJjZVR5cGUgPT09ICdBc3Nlc3NtZW50Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS5hc3Nlc3NtZW50ICs9IDFcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUucXVpeiArPSAxXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuUFJBQ1RJQ0VfUkVTT1VSQ0U6XG4gICAgICAgICAgICAgIC8vIGNhc2UgTnNDb250ZW50LkVNaW1lVHlwZXMuRklOQUxfQVNTRVNTTUVOVDpcbiAgICAgICAgICAgICAgLy8gY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5QUkFDVElDRV9SRVNPVVJDRTpcbiAgICAgICAgICAgICAgdGhpcy5jb250ZW50U3RydWN0dXJlLnByYWN0aWNlVGVzdCArPSAxXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIE5zQ29udGVudC5FTWltZVR5cGVzLldFQl9NT0RVTEU6XG4gICAgICAgICAgICAgIHRoaXMuY29udGVudFN0cnVjdHVyZS53ZWJNb2R1bGUgKz0gMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBOc0NvbnRlbnQuRU1pbWVUeXBlcy5ZT1VUVUJFOlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUueW91dHViZSArPSAxXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTdHJ1Y3R1cmUub3RoZXIgKz0gMVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jb250ZW50U3RydWN0dXJlKSB7XG4gICAgICBpZiAodGhpcy5jb250ZW50U3RydWN0dXJlW2tleV0gPiAwKSB7XG4gICAgICAgIHRoaXMuaGFzQ29udGVudFN0cnVjdHVyZSA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgY29udGV4dFBhdGgoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRleHRJZDogdGhpcy5yb290SWQsXG4gICAgICBjb250ZXh0UGF0aDogdGhpcy5yb290Q29udGVudFR5cGUsXG4gICAgICBiYXRjaElkOiB0aGlzLmJhdGNoSWQsXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbnRlbnRUcmFja0J5KF9pbmRleDogbnVtYmVyLCBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQpIHtcbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBjb250ZW50LmlkZW50aWZpZXJcbiAgfVxuXG4gIHB1YmxpYyByYWlzZVRlbGVtZXRyeSgpIHtcbiAgICAvLyBpZiAodGhpcy5mb3JQcmV2aWV3KSB7IHJldHVybiB9XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5ldmVudHMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeShcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjbGljaycsXG4gICAgICAgICAgc3ViVHlwZTogYGNhcmQtdG9jQ29udGVudENhcmRgLFxuICAgICAgICAgIC8vIGlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllciB8fCAnJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIC8vIGNvbnRlbnRJZDogdGhpcy5jb250ZW50LmlkZW50aWZpZXIgfHwgJycsXG4gICAgICAgICAgLy8gY29udGVudFR5cGU6IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICAgICAgaWQ6IHRoaXMuY29udGVudC5pZGVudGlmaWVyIHx8ICcnLFxuICAgICAgICAgIHR5cGU6IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICAgICAgcm9sbHVwOiB7XG4gICAgICAgICAgICBsMTogdGhpcy5yb290SWQgfHwgJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2ZXI6IGAke3RoaXMuY29udGVudC52ZXJzaW9ufSR7Jyd9YCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2VJZEV4dDogYCR7Xy5jYW1lbENhc2UodGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSl9LWNhcmRgLFxuICAgICAgICAgIG1vZHVsZTogXy5jYW1lbENhc2UodGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSksXG4gICAgICAgIH0pXG4gICAgfVxuICB9XG4gIGdldCBpc0FsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgcmV0dXJuICEoTnNDb250ZW50LlVOX1NVUFBPUlRFRF9EQVRBX1RZUEVTX0ZPUl9OT05fQkFUQ0hfVVNFUlMuaW5kZXhPZih0aGlzLmNvbnRlbnQubWltZVR5cGUpID49IDApXG4gICAgfSByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGdldCBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgb3BlbkNlcnRpZmljYXRlRGlhbG9nKGNlcnREYXRhOiBhbnkpIHtcbiAgICBjb25zdCBjZXQgPSBjZXJ0RGF0YVxuICAgIHRoaXMuZGlhbG9nLm9wZW4oQ2VydGlmaWNhdGVEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIC8vIGhlaWdodDogJzQwMHB4JyxcbiAgICAgIHdpZHRoOiAnMTMwMHB4JyxcbiAgICAgIGRhdGE6IHsgY2V0IH0sXG4gICAgICAvLyBwYW5lbENsYXNzOiAnY3VzdG9tLWRpYWxvZy1jb250YWluZXInLFxuICAgIH0pXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0NvbGxlY3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29sbGVjdGlvbiB3LWF1dG8gc206dy0xMDAgcGFkZGluZy1yaWdodC14bFwiPlxuICAgICAgICA8IS0tIDxpbWcgY2xhc3M9XCJjYXJkLXRodW1ibmFpbCB3cy1tYXQtcHJpbWFyeS1saXRlLWJhY2tncm91bmRcIiBbc3JjXT1cImNvbnRlbnQ/LmFwcEljb25cIiBhbHQ9XCJUaHVtYm5haWxcIlxuICAgICAgICAgIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuXCIgW3dzVXRpbHNEZWZhdWx0VGh1bWJuYWlsXT1cImRlZmF1bHRUaHVtYm5haWxcIiAvPiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC13cmFwIGZsZXgtYmV0d2VlbiB3aWR0aC1leHBhbmQgcHItMCB3LTEwMCBzbTpwci00IHNtOnctYXV0b1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCIgW25nQ2xhc3NdPVwieydjdXJzb3ItcG9pbnRlcic6ICFpc0VuYWJsZWR9XCIgKGNsaWNrKT1cInZpZXdDaGlsZHJlbiA9ICF2aWV3Q2hpbGRyZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZSBtYXQtc3ViaGVhZGluZy0xIGZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX0gXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQuaXNzdWVkQ2VydGlmaWNhdGVzU1ZHXCI+XG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJjZXJ0aWZpY2F0ZS10eHRcIiAoY2xpY2spPVwib3BlbkNlcnRpZmljYXRlRGlhbG9nKGNvbnRlbnQuaXNzdWVkQ2VydGlmaWNhdGVzU1ZHKVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aWV3LWNlcnRpZmljYXRlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJmdXNpb24tYXNzZXRzL2ltYWdlcy9jZXJ0aWZpY2F0ZS1pY28uc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J2FwcHRvY2NvbnRlbnRjYXJkLnZpZXdDZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgcmVzb3VyY2UgbXQtMiBzbTptdC0wXCIgKm5nSWY9XCJjb250ZW50Py5jYXRlZ29yeSA9PT0gJ1Jlc291cmNlJ1wiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7J2FwcHRvY2NvbnRlbnRjYXJkLnJlc291cmNlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIG1vZHVsZSBtdC0yIHNtOm10LTBcIiAqbmdJZj1cImNvbnRlbnQ/LmNhdGVnb3J5ID09PSAnQ29sbGVjdGlvbidcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtci0xIGN1c3RvbS1pY29uIHJvdGF0ZS05MFwiPmNhbGxfdG9fYWN0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eydhcHB0b2Njb250ZW50Y2FyZC5tb2R1bGUnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXIgY291cnNlIG10LTIgc206bXQtMFwiICpuZ0lmPVwiY29udGVudD8uY2F0ZWdvcnkgPT09ICdDb3Vyc2UnXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMSBjdXN0b20taWNvbiByb3RhdGUtOTBcIj5jYWxsX3RvX2FjdGlvbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3snYXBwdG9jY29udGVudGNhcmQuY291cnNlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cIm1hdC1ib2R5LXN0cm9uZyBjb250ZW50LXR5cGVcIj57eyBjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGUgfX08L3NwYW4+IC0tPlxuICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtNVwiPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlXCI+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwOzwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJ0aW1lLWljb25cIj5zY2hlZHVsZTwvbWF0LWljb24+IC0tPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbG93ZXJjYXNlIHdzLW1hdC1ibGFjazYwLXRleHRcIj57eyBjb250ZW50Py5kdXJhdGlvbiB8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcydcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPCEtLSA8L3NwYW4+IC0tPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRlbnQ/LmFydGlmYWN0VXJsICYmIGlzQWxsb3dlZCAmJiAhaXNFbmFibGVkXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImJ1dHRvbk1lbnVcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnRpY2FsPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvclByZXZpZXcgJiYgY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZSAmJiBjb250ZW50LnByaW1hcnlDYXRlZ29yeSAhPT0gJ0NvdXJzZSdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzID09IDJcIj5cbiAgICAgICAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHByb2dyZXNzXCIgW3BlcmNlbnRdPVwiMTAwXCIgW3JhZGl1c109XCIxMlwiIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIiBbc3BhY2VdPVwiLTNcIiBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yKClcIlxuICAgICAgICAgICAgICAgIFtpbm5lclN0cm9rZUNvbG9yXT1cIidyZ2JhKDAsMCwwLC4xNiknXCIgW2FuaW1hdGlvbl09XCJ0cnVlXCIgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtzaG93VW5pdHNdPVwiZmFsc2VcIiBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCIgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgW2Nsb2Nrd2lzZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZE9wYWNpdHldPVwiMFwiIFtiYWNrZ3JvdW5kR3JhZGllbnRdPVwiZmFsc2VcIiBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgICAgICAgIFtzaG93WmVyb091dGVyU3Ryb2tlXT1mYWxzZSBbYmFja2dyb3VuZFBhZGRpbmddPVwiLTlcIiBbc3RhcnRGcm9tWmVyb109XCJmYWxzZVwiIFtiYWNrZ3JvdW5kUGFkZGluZ109XCIwXCJcbiAgICAgICAgICAgICAgICBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiIFtvdXRlclN0cm9rZUxpbmVjYXBdPVwiJ2J1dHQnXCI+XG4gICAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxuICAgICAgICAgICAgICA8IS0tIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcbiAgICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cbiAgICAgICAgICAgICAgPC93cy13aWRnZXQtY29udGVudC1wcm9ncmVzcz4gLS0+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzIDwgMlwiPlxuICAgICAgICAgICAgICA8Y2lyY2xlLXByb2dyZXNzIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcHJvZ3Jlc3NcIiBbcGVyY2VudF09XCJjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiXG4gICAgICAgICAgICAgICAgW3JhZGl1c109XCIxMlwiIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIiBbaW5uZXJTdHJva2VXaWR0aF09XCIzXCIgW3NwYWNlXT1cIi0zXCJcbiAgICAgICAgICAgICAgICBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yKClcIiBbaW5uZXJTdHJva2VDb2xvcl09XCIncmdiYSgwLDAsMCwuMTYpJ1wiIFthbmltYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIiBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgW2Nsb2Nrd2lzZV09XCJ0cnVlXCIgW2JhY2tncm91bmRPcGFjaXR5XT1cIjBcIiBbYmFja2dyb3VuZEdyYWRpZW50XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbYmFja2dyb3VuZFN0cm9rZVdpZHRoXT1cIjNcIiBbc2hvd1plcm9PdXRlclN0cm9rZV09ZmFsc2UgW2JhY2tncm91bmRQYWRkaW5nXT1cIi05XCIgW3N0YXJ0RnJvbVplcm9dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtiYWNrZ3JvdW5kUGFkZGluZ109XCIwXCIgW2ltYWdlSGVpZ2h0XT1cIjI0XCIgW2ltYWdlV2lkdGhdPVwiMjRcIiBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtvdXRlclN0cm9rZUxpbmVjYXBdPVwiJ2J1dHQnXCI+XG4gICAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxuICAgICAgICAgICAgICA8IS0tIDx3cy13aWRnZXQtY29udGVudC1wcm9ncmVzcyAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCJcbiAgICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcbiAgICAgICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxuICAgICAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPiAtLT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiaGFzQ29udGVudFN0cnVjdHVyZVwiIGNsYXNzPVwiY2hpbGQtbWV0YS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZC1zdHJ1Y3R1cmVcIj4gLS0+XG4gICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJzdHJ1Y3R1cmUtaWNvblwiPmltcG9ydF9jb250YWN0czwvbWF0LWljb24+IC0tPlxuICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5jb3Vyc2UgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5jb3Vyc2UgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uY291cnNlID09PSAxXCIgPiBDb3Vyc2U8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uY291cnNlID4gMVwiID4gQ291cnNlczwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPT09IDFcIiA+IE1vZHVsZTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5sZWFybmluZ01vZHVsZSA+IDFcIiA+IE1vZHVsZXM8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnZpZGVvID4gMFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LnZpZGVvIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnZpZGVvID09PSAxXCIgPiBWaWRlbzwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy52aWRlbyA+IDFcIiA+IFZpZGVvczwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA+IDBcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPiB7eyBjb250ZW50U3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmludGVyYWN0aXZlVmlkZW8gPT09IDFcIiA+XG4gICAgICAgICAgICAgICAgICBJbnRlcmFjdGl2ZSBWaWRlbzwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvID4gMVwiID5cbiAgICAgICAgICAgICAgICAgIEludGVyYWN0aXZlIFZpZGVvczwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ueW91dHViZSA+IDBcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPiB7eyBjb250ZW50U3RydWN0dXJlPy55b3V0dWJlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnlvdXR1YmUgPT09IDFcIiA+IFlvdXR1YmUgVmlkZW88L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ueW91dHViZSA+IDFcIiA+IFlvdXR1YmUgVmlkZW9zPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5wZGYgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ucGRmIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnBkZiA9PT0gMVwiID4gUERGPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnBkZiA+IDFcIiA+IFBERnM8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnBvZGNhc3QgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ucG9kY2FzdCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5wb2RjYXN0ID09PSAxXCIgPiBQb2RjYXN0PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnBvZGNhc3QgPiAxXCIgPiBQb2RjYXN0czwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID4gMFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+IHt7IGNvbnRlbnRTdHJ1Y3R1cmU/LndlYk1vZHVsZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJNb2R1bGUgPT09IDFcIiA+IFdlYiBNb2R1bGU8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ud2ViTW9kdWxlID4gMVwiID4gV2ViIE1vZHVsZXM8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LndlYlBhZ2UgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8ud2ViUGFnZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJQYWdlID09PSAxXCIgPiBXZWIgUGFnZTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJQYWdlID4gMVwiID4gV2ViIFBhZ2VzPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvdmFsLXdoaXRlXCIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5xdWl6ID4gMFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy53ZWJQYWdlID4gMFwiPiwgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5xdWl6IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LnF1aXogPT09IDFcIiA+IFF1aXo8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ucXVpeiA+IDFcIiA+IFF1aXp6ZXM8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm92YWwtd2hpdGVcIiAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmFzc2Vzc21lbnQgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4ge3sgY29udGVudFN0cnVjdHVyZT8uYXNzZXNzbWVudCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5hc3Nlc3NtZW50ID09PSAxXCIgPiBBc3Nlc3NtZW50PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRTdHJ1Y3R1cmU/LmFzc2Vzc21lbnQgPiAxXCIgPiBBc3Nlc3NtZW50czwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3ZhbC13aGl0ZVwiICpuZ0lmPVwiY29udGVudFN0cnVjdHVyZT8ub3RoZXIgPiAwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyBjb250ZW50U3RydWN0dXJlPy5vdGhlciB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5vdGhlciA9PT0gMVwiID4gT3RoZXIgaXRlbTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50U3RydWN0dXJlPy5vdGhlciA+IDFcIiA+IE90aGVyIEl0ZW1zPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VlLWFsbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInZpZXdDaGlsZHJlbiA9ICF2aWV3Q2hpbGRyZW5cIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1hcmdpbi1sZWZ0LW0gc2VlLWFsbC1idG4gdGFiIGN1c3RvbS1jaGV2cm9uIGN1c3RvbWljb25cIiBtYXQtYnV0dG9uPlxuICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmlld0NoaWxkcmVuXCIgPlNlZSBBbGw8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdDaGlsZHJlblwiID5TZWUgTGVzczwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIXZpZXdDaGlsZHJlblwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJ2aWV3Q2hpbGRyZW5cIj5rZXlib2FyZF9hcnJvd191cDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY29tcGxldGlvblN0YXR1cyA9PSAyXCI+XG4gICAgICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCIxMDBcIlxuICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cbiAgICAgICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPCAyXCI+XG4gICAgICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCJjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiXG4gICAgICAgICAgICBbcHJvZ3Jlc3NUeXBlXT1cIidwZXJjZW50YWdlJ1wiPlxuICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+IC0tPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNoaWxkcmVuLWNvbnRhaW5lciBtYXJnaW4tbGVmdC1sIG1hcmdpbi10b3AtcyBtYXJnaW4tYm90dG9tLXNcIiBbaGlkZGVuXT1cIiF2aWV3Q2hpbGRyZW5cIj5cbiAgICAgIDx3cy1hcHAtdG9jLWNvbnRlbnQtY2FyZCBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCIgW2NvbnRlbnRdPVwiY2hpbGRcIiBbZXhwYW5kQWxsXT1cImV4cGFuZEFsbFwiIFtyb290SWRdPVwicm9vdElkXCJcbiAgICAgICAgW2JhdGNoSWRdPVwiYmF0Y2hJZFwiIFtyb290Q29udGVudFR5cGVdPVwicm9vdENvbnRlbnRUeXBlXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbnRlbnQ/LmNoaWxkcmVuOyB0cmFja0J5OiBjb250ZW50VHJhY2tCeVwiPlxuICAgICAgPC93cy1hcHAtdG9jLWNvbnRlbnQtY2FyZD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgKm5nSWY9XCJpc1Jlc291cmNlXCIgY2xhc3M9XCJyZXNvdXJjZS1jb250YWluZXJcIj5cbiAgICA8IS0tIDx3cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGUtaWNvbiBjbGFzcz1cImZsZXhcIiBbZGlzcGxheUNvbnRlbnRUeXBlXT1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZVwiPlxuICAgIDwvd3Mtd2lkZ2V0LWRpc3BsYXktY29udGVudC10eXBlLWljb24+IC0tPlxuICAgIDwhLS0gPGRpdiBjbGFzcz1cImltZy1jb250YWluZXJcIj4gLS0+XG4gICAgPCEtLSA8aW1nIGNsYXNzPVwiY2FyZC10aHVtYm5haWwgd3MtbWF0LXByaW1hcnktbGl0ZS1iYWNrZ3JvdW5kXCIgW3NyY109XCJjb250ZW50Py5hcHBJY29uXCIgYWx0PVwiVGh1bWJuYWlsXCJcbiAgICAgICAgKGNsaWNrKT1cInZpZXdDaGlsZHJlbiA9ICF2aWV3Q2hpbGRyZW5cIiBbd3NVdGlsc0RlZmF1bHRUaHVtYm5haWxdPVwiZGVmYXVsdFRodW1ibmFpbFwiIC8+IC0tPlxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPT0gMlwiPlxuICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cIjEwMFwiIFtwcm9ncmVzc1R5cGVdPVwiJ3BlcmNlbnRhZ2UnXCI+XG4gICAgICA8L3dzLXdpZGdldC1jb250ZW50LXByb2dyZXNzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzIDwgMlwiPlxuICAgICAgPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllciAmJiBjb250ZW50Py5jb21wbGV0aW9uUGVyY2VudGFnZVwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcbiAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cbiAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+XG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgIDwhLS0gPC9kaXY+IC0tPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZmxleC1iZXR3ZWVuIHdpZHRoLWV4cGFuZCBwci0wIHctMTAwIHNtOnByLTQgc206dy1hdXRvXCI+XG4gICAgICA8IS0tIGRlYWN0aXZhdGVkIGFzIHBlciBOSUMgQ0VPIHJlcXVpcmVtZW50IHRvIGFjY2VzcyBjb3Vyc2Ugd3Rob3V0IGxvZ2luIC0tPlxuICAgICAgPGEgW2NsYXNzLmRpc2FibGVkXT1cIihmb3JQcmV2aWV3IHx8ICFpc0VuYWJsZWQpID8gdHJ1ZSA6IG51bGxcIiBbcm91dGVyTGlua109XCIoaXNBbGxvd2VkICYmICFmb3JQcmV2aWV3ICYmICFpc0VuYWJsZWQpID8gcmVzb3VyY2VMaW5rLnVybCA6IG51bGxcIlxuICAgICAgICBbcXVlcnlQYXJhbXNdPVwiKGlzQWxsb3dlZCAmJiAhZm9yUHJldmlldyAmJiAhaXNFbmFibGVkKSAgPyByZXNvdXJjZUxpbmsucXVlcnlQYXJhbXMgOiBudWxsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlIFwiIFtuZ0NsYXNzXT1cInsnY3Vyc29yLXBvaW50ZXInOiAhaXNFbmFibGVkfVwiIChjbGljayk9XCJ2aWV3Q2hpbGRyZW4gPSAhdmlld0NoaWxkcmVuOyByYWlzZVRlbGVtZXRyeSgpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZmxleC13cmFwXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZSBtYXQtc3ViaGVhZGluZy0xIGZsZXgtYXV0b1wiPlxuICAgICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cIm1hcmdpbi1yaWdodC14cyByYWRpb2J0biB0aW1lLWljb25cIj5yYWRpb19idXR0b25fdW5jaGVja2VkIDwvbWF0LWljb24+IC0tPlxuICAgICAgICAgICAgICB7eyBjb250ZW50Py5uYW1lIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRlbnQtdHlwZSBvcHRpb25hbC1zcGFuXCIgKm5nSWY9XCJjb250ZW50Py5vcHRpb25hbFJlYWRpbmdcIj57eydhcHB0b2Njb250ZW50Y2FyZC5vcHRpb25hbCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtYXQtYm9keS1zdHJvbmcgY29udGVudC10eXBlXCI+e3sgY29udGVudD8uaWRlbnRpZmllciB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2ljb25zIHdzLW1hdC1ibGFjazYwLXRleHRcIj5cbiAgICAgICAgICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJtYXQtYm9keS1zdHJvbmcgY29udGVudC10eXBlIHdzLW1hdC1kZWZhdWx0LXRleHRcIj57eyBjb250ZW50Py5jb250ZW50VHlwZSB9fTwvc3Bhbj4gLS0+XG4gICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwibWwtNVwiPiAtLT5cbiAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZVwiPiZuYnNwOyZuYnNwO3wmbmJzcDsmbmJzcDs8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRpbWUtaWNvblwiPnNjaGVkdWxlPC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L3ZpZGVvLnN2Z1wiIGFsdD1cIlZpZGVvXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICd2aWRlby9tcDQnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAndmlkZW8veC15b3V0dWJlJyB8fFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ/Lm1pbWVUeXBlID09PSdhcHBsaWNhdGlvbi94LW1wZWdVUkwnXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L2F1ZGlvLnN2Z1wiIGFsdD1cIkF1ZGlvXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhdWRpby9tcGVnJ1wiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2NvbnRlbnQvZ3JleS9wZGYuc3ZnXCIgYWx0PVwiUERGXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9wZGYnXCI+XG4gICAgICAgICAgICA8IS0tIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvcmVzb3VyY2Uuc3ZnXCIgYWx0PVwiU3VydmV5XCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9zdXJ2ZXknXCI+IC0tPlxuICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2NvbnRlbnQvZ3JleS9saW5rLnN2Z1wiIGFsdD1cIkludGVyYWN0aXZlQ29udGVudFwiIGNsYXNzPVwiZmxvYXQtbGVmdCBtYXJnaW4tcmlnaHQteHNcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vdm5kLmVrc3RlcC5odG1sLWFyY2hpdmUnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAndGV4dC94LXVybCdcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvYXNzZXNzbWVudC5zdmdcIiBhbHQ9XCJBc3Nlc3NtZW50XCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJyB8fCBjb250ZW50Py5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3F1aXonIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vdm5kLnN1bmJpcmQucXVlc3Rpb25zZXQnXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L2ltYWdlLnN2Z1wiIGFsdD1cIkltYWdlXCIgY2xhc3M9XCJmbG9hdC1sZWZ0IG1hcmdpbi1yaWdodC14c1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8ubWltZVR5cGUgPT09ICdpbWFnZS9wbmcnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnaW1hZ2UvanBlZydcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9jb250ZW50L2dyZXkvY29udGVudF9jb3B5LnN2Z1wiIGNsYXNzPVwiY29udGVudGljb25cIiBhbHQ9XCJDb3Vyc2VcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi92bmQuZWtzdGVwLmNvbnRlbnQtY29sbGVjdGlvbicgfHwgY29udGVudD8ubWltZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9zdXJ2ZXknXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvY29udGVudC9ncmV5L21vZHVsZS5zdmdcIiBjbGFzcz1cImZsb2F0LWxlZnQgbWFyZ2luLXJpZ2h0LXhzXCIgYWx0PVwib2ZmbGluZSBzZXNzaW9uc1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudC5taW1lVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL29mZmxpbmUnIHx8IGNvbnRlbnQ/Lm1pbWVUeXBlID09PSAnYXBwbGljYXRpb24vc3VydmV5J1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3cy1tYXQtYmxhY2s2MC10ZXh0XCI+e3sgKGNvbnRlbnQ/LmR1cmF0aW9uIHx8IDEyMCl8IHBpcGVEdXJhdGlvblRyYW5zZm9ybTogJ2htcycgfX08L3NwYW4+XG4gICAgICAgICAgICA8IS0tIDwvc3Bhbj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IHNtOmp1c3RpZnktZW5kXCI+XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIHJlc291cmNlXCIgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gJ1Jlc291cmNlJ1wiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPlJlc291cmNlPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtY29udGFpbmVyIG1vZHVsZVwiICpuZ0lmPVwiY29udGVudD8uY29udGVudFR5cGUgPT09ICdDb2xsZWN0aW9uJ1wiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPk1vZHVsZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0eXBlLWNvbnRhaW5lciBjb3Vyc2VcIiAqbmdJZj1cImNvbnRlbnQ/LmNvbnRlbnRUeXBlID09PSAnQ291cnNlJ1wiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTEgY3VzdG9tLWljb24gcm90YXRlLTkwXCI+Y2FsbF90b19hY3Rpb248L21hdC1pY29uPlxuICAgICAgICAgIDxzcGFuPkNvdXJzZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWZvclByZXZpZXcgJiYgY29udGVudD8uYXJ0aWZhY3RVcmwgJiYgIWlzWFNtYWxsICYmIGlzQWxsb3dlZCAmJiBpc0VuYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiYnV0dG9uTWVudVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnRpY2FsPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9yUHJldmlldyAmJiBjb250ZW50Py5pZGVudGlmaWVyICYmIGNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlIDsgZWxzZSBlbHNlQmxvY2tcIj5cbiAgICAgICAgXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPT0gMlwiPlxuICAgICAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHByb2dyZXNzXCIgW3BlcmNlbnRdPVwiMTAwXCIgW3JhZGl1c109XCIxMlwiIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgICAgICBbaW5uZXJTdHJva2VXaWR0aF09XCIzXCIgW3NwYWNlXT1cIi0zXCIgW291dGVyU3Ryb2tlQ29sb3JdPVwicHJvZ3Jlc3NDb2xvcigpXCJcbiAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJ3JnYmEoMCwgMCwgMCwgMC4xNiknXCIgW2FuaW1hdGlvbl09XCJ0cnVlXCIgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtiYWNrZ3JvdW5kT3BhY2l0eV09XCIwXCIgW2JhY2tncm91bmRHcmFkaWVudF09XCJmYWxzZVwiIFtiYWNrZ3JvdW5kU3Ryb2tlV2lkdGhdPVwiM1wiIG1hdFRvb2x0aXA9XCJ7eydhcHB0b2Njb250ZW50Y2FyZC5jb21wbGV0ZWQnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgICAgICAgICBbc2hvd1plcm9PdXRlclN0cm9rZV09ZmFsc2UgW2JhY2tncm91bmRQYWRkaW5nXT1cIi05XCIgW3N0YXJ0RnJvbVplcm9dPVwiZmFsc2VcIiBbYmFja2dyb3VuZFBhZGRpbmddPVwiMFwiXG4gICAgICAgICAgICAgIFtpbWFnZUhlaWdodF09XCIyNFwiIFtpbWFnZVdpZHRoXT1cIjI0XCIgW3Nob3dCYWNrZ3JvdW5kXT1cImZhbHNlXCIgW291dGVyU3Ryb2tlTGluZWNhcF09XCInYnV0dCdcIj5cbiAgICAgICAgICAgIDwvY2lyY2xlLXByb2dyZXNzPlxuICAgICAgICAgICAgPCEtLSA8d3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3MgKm5nSWY9XCJjb250ZW50Py5pZGVudGlmaWVyXCIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiXG4gICAgICAgICAgICAgICAgW2NvbnRlbnRJZF09XCJjb250ZW50Py5pZGVudGlmaWVyXCIgY2xhc3M9XCJwcm9ncmVzcy1iYXItdGhpblwiIFtwcm9ncmVzc109XCIxMDBcIlxuICAgICAgICAgICAgICAgIFtwcm9ncmVzc1R5cGVdPVwiJ3BlcmNlbnRhZ2UnXCI+XG4gICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+IC0tPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzIDwgMlwiPlxuICAgICAgICAgICAgPGNpcmNsZS1wcm9ncmVzcyBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHByb2dyZXNzXCIgW3BlcmNlbnRdPVwiY29udGVudD8uY29tcGxldGlvblBlcmNlbnRhZ2VcIiBbcmFkaXVzXT1cIjEyXCJcbiAgICAgICAgICAgICAgW291dGVyU3Ryb2tlV2lkdGhdPVwiM1wiIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIiBbc3BhY2VdPVwiLTNcIiBbb3V0ZXJTdHJva2VDb2xvcl09XCJwcm9ncmVzc0NvbG9yMigpXCJcbiAgICAgICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJ3JnYmEoMCwgMCwgMCwgMC4xNiknXCIgW2FuaW1hdGlvbl09XCJ0cnVlXCIgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiIFtzaG93VGl0bGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbc2hvd1VuaXRzXT1cImZhbHNlXCIgW3Nob3dTdWJ0aXRsZV09XCJmYWxzZVwiIFtzaG93SW5uZXJTdHJva2VdPVwidHJ1ZVwiIFtjbG9ja3dpc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtiYWNrZ3JvdW5kT3BhY2l0eV09XCIwXCIgW2JhY2tncm91bmRHcmFkaWVudF09XCJmYWxzZVwiIFtiYWNrZ3JvdW5kU3Ryb2tlV2lkdGhdPVwiM1wiIG1hdFRvb2x0aXA9XCJ7eydhcHB0b2Njb250ZW50Y2FyZC5pblByb2dyZXNzJyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICAgICAgW3Nob3daZXJvT3V0ZXJTdHJva2VdPWZhbHNlIFtiYWNrZ3JvdW5kUGFkZGluZ109XCItOVwiIFtzdGFydEZyb21aZXJvXT1cImZhbHNlXCIgW2JhY2tncm91bmRQYWRkaW5nXT1cIjBcIlxuICAgICAgICAgICAgICBbaW1hZ2VIZWlnaHRdPVwiMjRcIiBbaW1hZ2VXaWR0aF09XCIyNFwiIFtzaG93QmFja2dyb3VuZF09XCJmYWxzZVwiIFtvdXRlclN0cm9rZUxpbmVjYXBdPVwiJ2J1dHQnXCI+XG4gICAgICAgICAgICA8L2NpcmNsZS1wcm9ncmVzcz5cbiAgICAgICAgICAgIDwhLS0gPHdzLXdpZGdldC1jb250ZW50LXByb2dyZXNzICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIlxuICAgICAgICAgICAgICBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBjbGFzcz1cInByb2dyZXNzLWJhci10aGluXCIgW3Byb2dyZXNzXT1cImNvbnRlbnQ/LmNvbXBsZXRpb25QZXJjZW50YWdlXCJcbiAgICAgICAgICAgICAgW3Byb2dyZXNzVHlwZV09XCIncGVyY2VudGFnZSdcIj5cbiAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWNvbnRlbnQtcHJvZ3Jlc3M+IC0tPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIFxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2s+XG4gICAgICAgIDxjaXJjbGUtcHJvZ3Jlc3MgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgcHJvZ3Jlc3NcIlxuICAgICAgICAgIFtwZXJjZW50XT1cIjBcIlxuICAgICAgICAgIFtyYWRpdXNdPVwiMTJcIlxuICAgICAgICAgIFtvdXRlclN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgIFtpbm5lclN0cm9rZVdpZHRoXT1cIjNcIlxuICAgICAgICAgIFtvdXRlclN0cm9rZUNvbG9yXT1cIicjODA4MDgwJ1wiXG4gICAgICAgICAgW2lubmVyU3Ryb2tlQ29sb3JdPVwiJyM4MDgwODAnXCJcbiAgICAgICAgICBbYW5pbWF0aW9uXT1cInRydWVcIlxuICAgICAgICAgIFtzcGFjZV09XCItM1wiXG4gICAgICAgICAgW3Nob3dVbml0c109XCJmYWxzZVwiXG4gICAgICAgICAgW2FuaW1hdGlvbkR1cmF0aW9uXT1cIjMwMFwiXG4gICAgICAgICAgW3Nob3dUaXRsZV09XCJmYWxzZVwiXG4gICAgICAgICAgW2JhY2tncm91bmRQYWRkaW5nXT1cIjBcIlxuICAgICAgICAgIFtiYWNrZ3JvdW5kUGFkZGluZ109XCItOVwiXG4gICAgICAgICAgW291dGVyU3Ryb2tlTGluZWNhcF09XCInYnV0dCdcIlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eydhcHB0b2Njb250ZW50Y2FyZC5ub3RTdGFydGVkJyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgICAgICBbc2hvd1N1YnRpdGxlXT1cImZhbHNlXCIgXG4gICAgICAgICAgW3Nob3dJbm5lclN0cm9rZV09XCJ0cnVlXCIgXG4gICAgICAgICAgW2Nsb2Nrd2lzZV09XCJ0cnVlXCIgW2ltYWdlSGVpZ2h0XT1cIjI0XCIgW2ltYWdlV2lkdGhdPVwiMjRcIiBbc2hvd0JhY2tncm91bmRdPVwiZmFsc2VcIj48L2NpcmNsZS1wcm9ncmVzcz5cbiAgICAgICAgPCEtLSA8cD5ubyBkYXRhPC9wPiAtLT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBcblxuICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiY29udGVudD8uYXJ0aWZhY3RVcmxcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJidXR0b25NZW51XCI+XG4gICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnRpY2FsPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJyZXNvdXJjZS1tZXRhIHdpZHRoLWV4cGFuZFwiPlxuICAgICAgPGEgW3JvdXRlckxpbmtdPVwicmVzb3VyY2VMaW5rLnVybFwiIFtxdWVyeVBhcmFtc109XCJyZXNvdXJjZUxpbmsucXVlcnlQYXJhbXNcIj5cbiAgICAgICAgPGgzICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlICE9PSBlbnVtQ29udGVudFR5cGVzLkFTU0VTU01FTlRcIiBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX1cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgxICpuZ0lmPVwiY29udGVudD8uZGlzcGxheUNvbnRlbnRUeXBlID09PSBlbnVtQ29udGVudFR5cGVzLkFTU0VTU01FTlRcIiBjbGFzcz1cIm1hcmdpbi1yZW1vdmUgdGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgIHt7IGNvbnRlbnQ/Lm5hbWUgfX1cbiAgICAgICAgPC9oMT5cbiAgICAgIDwvYT5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJvZHktc3Ryb25nIG1hcmdpbi1sZWZ0LXhzXCI+e3sgY29udGVudD8uZHVyYXRpb24gfCBwaXBlRHVyYXRpb25UcmFuc2Zvcm06ICd0aW1lMjQnIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+IC0tPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bWF0LW1lbnUgI2J1dHRvbk1lbnU9XCJtYXRNZW51XCI+XG4gIDxhIG1hdC1tZW51LWl0ZW0gW3JvdXRlckxpbmtdPVwiJy4uLycgKyBjb250ZW50Py5pZGVudGlmaWVyICsgJy9vdmVydmlldydcIiBbcXVlcnlQYXJhbXNdPVwiY29udGV4dFBhdGhcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LW1pZGRsZVwiPlxuICAgIDxtYXQtaWNvbj50b2M8L21hdC1pY29uPlxuICAgIDxoMyBjbGFzcz1cIm1hcmdpbi1yZW1vdmVcIiA+XG4gICAgICB7eydhcHB0b2Njb250ZW50Y2FyZC52aWV3RGV0YWlscycgfCB0cmFuc2xhdGV9fVxuICAgIDwvaDM+XG4gIDwvYT5cbiAgPCEtLSBUT0RPOiBIaWRpbmcgdGhpcyBmcm9tIGhlcmUgZm9yIG5vdywgYXMgdGhlIGZ1bmN0aW9uYWxpdGllcyBhcmUgbm90IHdvcmtpbmcgLS0+XG4gIDwhLS0gPGRpdiBtYXQtbWVudS1pdGVtPlxuICAgIDx3cy13aWRnZXQtYnRuLWNvbnRlbnQtZG93bmxvYWQgW3dpZGdldERhdGFdPVwiXG4gICAgICAgIGNvbnRlbnRcbiAgICAgICAgICB8IHBpcGVQYXJ0aWFsQ29udGVudFxuICAgICAgICAgICAgOiBbJ2lkZW50aWZpZXInLCAnY29udGVudFR5cGUnLCAncmVzb3VyY2VUeXBlJywgJ21pbWVUeXBlJywgJ2Rvd25sb2FkVXJsJywgJ2lzRXh0ZXJuYWwnXVxuICAgICAgXCI+PC93cy13aWRnZXQtYnRuLWNvbnRlbnQtZG93bmxvYWQ+XG4gICAgPHdzLXdpZGdldC1idG4tY29udGVudC1saWtlIFt3aWRnZXREYXRhXT1cImNvbnRlbnQgfCBwaXBlUGFydGlhbENvbnRlbnQ6IFsnaWRlbnRpZmllciddXCI+XG4gICAgPC93cy13aWRnZXQtYnRuLWNvbnRlbnQtbGlrZT5cbiAgICA8d3Mtd2lkZ2V0LWJ0bi1jb250ZW50LXNoYXJlIFt3aWRnZXREYXRhXT1cImNvbnRlbnRcIj48L3dzLXdpZGdldC1idG4tY29udGVudC1zaGFyZT5cbiAgICA8d3Mtd2lkZ2V0LWJ0bi1nb2Fscz48L3dzLXdpZGdldC1idG4tZ29hbHM+XG4gICAgPHdzLXdpZGdldC1idG4tcGxheWxpc3Q+PC93cy13aWRnZXQtYnRuLXBsYXlsaXN0PlxuICA8L2Rpdj4gLS0+XG48L21hdC1tZW51PlxuIl19
|