@sunbird-cb/toc 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +261 -248
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1177 -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 +332 -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 +24901 -24766
- 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 +51 -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 +175 -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,139 +1,139 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@sunbird-cb/utils-v2";
|
|
4
|
-
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "../../../_services/widget-content.service";
|
|
6
|
-
import * as i4 from "@angular/common";
|
|
7
|
-
import * as i5 from "../display-content-type/display-content-type.component";
|
|
8
|
-
import * as i6 from "@angular/material/divider";
|
|
9
|
-
import * as i7 from "@angular/material/legacy-chips";
|
|
10
|
-
import * as i8 from "@angular/material/icon";
|
|
11
|
-
import * as i9 from "@angular/material/legacy-card";
|
|
12
|
-
import * as i10 from "../user-image/user-image.component";
|
|
13
|
-
import * as i11 from "@angular/material/legacy-button";
|
|
14
|
-
import * as i12 from "../mark-as-complete/mark-as-complete.component";
|
|
15
|
-
import * as i13 from "@ngx-translate/core";
|
|
16
|
-
export class PlayerBriefComponent {
|
|
17
|
-
constructor(configSvc, utilitySvc, router, widgetContentSvc, langtranslations) {
|
|
18
|
-
this.configSvc = configSvc;
|
|
19
|
-
this.utilitySvc = utilitySvc;
|
|
20
|
-
this.router = router;
|
|
21
|
-
this.widgetContentSvc = widgetContentSvc;
|
|
22
|
-
this.langtranslations = langtranslations;
|
|
23
|
-
this.content = null;
|
|
24
|
-
this.hasTocStructure = false;
|
|
25
|
-
this.tocStructure = null;
|
|
26
|
-
this.isPreviewMode = false;
|
|
27
|
-
this.forPreview = false;
|
|
28
|
-
this.askAuthorEnabled = false;
|
|
29
|
-
this.tocConfig = null;
|
|
30
|
-
this.showMoreGlance = false;
|
|
31
|
-
this.isDownloadableDesktop = false;
|
|
32
|
-
this.isDownloadableIos = false;
|
|
33
|
-
this.isDownloadableAndroid = false;
|
|
34
|
-
}
|
|
35
|
-
ngOnInit() {
|
|
36
|
-
this.getTocConfig();
|
|
37
|
-
if (this.configSvc.restrictedFeatures) {
|
|
38
|
-
this.isDownloadableIos = this.configSvc.restrictedFeatures.has('iosDownload');
|
|
39
|
-
this.isDownloadableAndroid = this.configSvc.restrictedFeatures.has('androidDownload');
|
|
40
|
-
this.isDownloadableDesktop = this.configSvc.restrictedFeatures.has('downloadRequest');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
get isDownloadable() {
|
|
44
|
-
if (this.configSvc.instanceConfig &&
|
|
45
|
-
this.configSvc.instanceConfig.isDownloadableSource &&
|
|
46
|
-
this.configSvc.instanceConfig.isDownloadableAndroidResource &&
|
|
47
|
-
this.content &&
|
|
48
|
-
this.content.sourceName &&
|
|
49
|
-
this.configSvc.instanceConfig.isDownloadableIosResource &&
|
|
50
|
-
Object.keys(this.configSvc.instanceConfig.isDownloadableSource).includes(this.content.sourceName.toLowerCase())) {
|
|
51
|
-
const sourceShortName = this.content.sourceName || '';
|
|
52
|
-
// tslint:disable-next-line:max-line-length
|
|
53
|
-
if (!this.utilitySvc.isMobile &&
|
|
54
|
-
!this.isDownloadableDesktop &&
|
|
55
|
-
this.configSvc.instanceConfig.isDownloadableSource[sourceShortName.toLowerCase()].includes(this.content.resourceType.toLowerCase())) {
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
if (this.utilitySvc.isIos &&
|
|
59
|
-
!this.isDownloadableIos &&
|
|
60
|
-
// tslint:disable-next-line: ter-computed-property-spacing
|
|
61
|
-
this.configSvc.instanceConfig.isDownloadableIosResource[sourceShortName.toLowerCase()
|
|
62
|
-
// tslint:disable-next-line: ter-computed-property-spacing
|
|
63
|
-
].includes(this.content.resourceType.toLowerCase())) {
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
if (this.utilitySvc.isAndroid &&
|
|
67
|
-
!this.isDownloadableAndroid &&
|
|
68
|
-
// tslint:disable-next-line: ter-computed-property-spacing
|
|
69
|
-
this.configSvc.instanceConfig.isDownloadableAndroidResource[sourceShortName.toLowerCase()
|
|
70
|
-
// tslint:disable-next-line: ter-computed-property-spacing
|
|
71
|
-
].includes(this.content.resourceType.toLowerCase())) {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
goToContent(id) {
|
|
79
|
-
this.router.navigate([`/app/toc/${id}/overview`]);
|
|
80
|
-
}
|
|
81
|
-
getViewCount(content) {
|
|
82
|
-
if (content && this.configSvc.rootOrg && content.viewCount) {
|
|
83
|
-
return content.viewCount[this.configSvc.rootOrg];
|
|
84
|
-
}
|
|
85
|
-
return 0;
|
|
86
|
-
}
|
|
87
|
-
getTocConfig() {
|
|
88
|
-
const url = `${this.configSvc.sitePath}/feature/toc.json`;
|
|
89
|
-
this.widgetContentSvc.fetchConfig(url).subscribe(data => {
|
|
90
|
-
this.tocConfig = data;
|
|
91
|
-
this.widgetContentSvc.updateTocConfig(data);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
download() {
|
|
95
|
-
if (this.content && !this.forPreview) {
|
|
96
|
-
const link = document.createElement('a');
|
|
97
|
-
link.download = this.content.name;
|
|
98
|
-
link.target = '_self';
|
|
99
|
-
// Construct the URI
|
|
100
|
-
link.href = this.content.artifactUrl || '';
|
|
101
|
-
document.body.appendChild(link);
|
|
102
|
-
link.click();
|
|
103
|
-
// Cleanup the DOM
|
|
104
|
-
document.body.removeChild(link);
|
|
105
|
-
}
|
|
106
|
-
// delete link;
|
|
107
|
-
}
|
|
108
|
-
parseJsonData(s) {
|
|
109
|
-
try {
|
|
110
|
-
const parsedString = JSON.parse(s);
|
|
111
|
-
return parsedString;
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
return [];
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
translateLabels(label, type) {
|
|
118
|
-
return this.langtranslations.translateLabel(label, type, '');
|
|
119
|
-
}
|
|
120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlayerBriefComponent, deps: [{ token: i1.ConfigurationsService }, { token: i1.UtilityService }, { token: i2.Router }, { token: i3.WidgetContentService }, { token: i1.MultilingualTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PlayerBriefComponent, selector: "ws-widget-player-brief", inputs: { content: "content", hasTocStructure: "hasTocStructure", tocStructure: "tocStructure", isPreviewMode: "isPreviewMode", forPreview: "forPreview", askAuthorEnabled: "askAuthorEnabled" }, ngImport: i0, template: "<div class=\"md:px-2\">\r\n <ws-widget-mark-as-complete [forPreview]=\"forPreview\" [content]=\"content\"></ws-widget-mark-as-complete>\r\n <ng-container *ngIf=\"content && isDownloadable\">\r\n <mat-card class=\"mb-4\">\r\n <button mat-button color=\"primary\" (click)=\"download()\">\r\n <mat-icon>cloud_download</mat-icon>\r\n <span class=\"px-2\">{{ 'apptochome.download' | translate }}</span>\r\n </button>\r\n </mat-card>\r\n </ng-container>\r\n <mat-card class=\"ws-mat-primary-lite-background-on-day ws-mat-primary-border-top-bolder info-container\">\r\n <h2 >{{ 'apptochome.atGlance' | translate }}</h2>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.displayContentType?.displayName, 'apptoc') }}</h3>\r\n <ws-widget-display-content-type *ngIf=\"content?.contentType !== contentTypes.RESOURCE\"\r\n class=\"ws-mat-accent-text width-expand mat-body-strong\" [displayContentType]=\"content?.displayContentType\">\r\n </ws-widget-display-content-type>\r\n <div *ngIf=\"content?.contentType === contentTypes.RESOURCE\"\r\n class=\"ws-mat-accent-text width-expand mat-body-strong\">\r\n {{ content?.resourceType }}\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.complexityLevel?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.complexityLevel }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.duration?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.duration | pipeDurationTransform: 'hms' }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.cost?.displayName, 'apptoc') }}</h3>\r\n <h3 *ngIf=\"content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.paidContent' | translate}}</h3>\r\n <h3 *ngIf=\"!content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.free' | translate}}</h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.viewCount?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ getViewCount(content) | pipeCountTransform }}\r\n <ng-container *ngIf=\"content?.uniqueLearners\">\r\n ({{ content?.uniqueLearners | pipeCountTransform }}\r\n <ng-container >Unique)</ng-container>\r\n </ng-container>\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.sourceShortName?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.sourceShortName }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\"></mat-divider>\r\n <!-- Structure -->\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.structure?.displayName, 'apptoc') }}</h3>\r\n <div class=\"ws-mat-accent-text width-expand\">\r\n <h3 *ngIf=\"tocStructure?.course > 0\">\r\n <ng-container>{{ tocStructure?.course }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.course === 1\" > {{'apptochome.course1' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.course > 1\" > {{'apptochome.courses1' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.learningModule > 0\">\r\n <ng-container>{{ tocStructure?.learningModule }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.learningModule === 1\" > {{'apptochome.module' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.learningModule > 1\" > {{'apptochome.modules' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.video > 0\">\r\n <ng-container>{{ tocStructure?.video }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.video === 1\" > {{'apptochome.video' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.video > 1\" > {{'apptochome.videos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.interactiveVideo > 0\">\r\n <ng-container>{{ tocStructure?.interactiveVideo }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.interactiveVideo === 1\" >\r\n {{'playerbrief.interactiveVideo' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.interactiveVideo > 1\" >\r\n {{'playerbrief.interactiveVideos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.youtube > 0\">\r\n <ng-container>{{ tocStructure?.youtube }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.youtube === 1\" > {{'playerbrief.youtubeVideo' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.youtube > 1\" > {{'playerbrief.youtubeVideos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.pdf > 0\">\r\n <ng-container>{{ tocStructure?.pdf }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.pdf === 1\" > {{'apptochome.pdf' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.pdf > 1\" > {{'apptochome.pdfs' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.podcast > 0\">\r\n <ng-container>{{ tocStructure?.podcast }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.podcast === 1\" > {{'playerbrief.podcast' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.podcast > 1\" > {{'playerbrief.podcasts' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.webModule > 0\">\r\n <ng-container>{{ tocStructure?.webModule }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webModule === 1\" > {{'playerbrief.webModule' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webModule > 1\" > {{'playerbrief.webModules' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.webPage > 0\">\r\n <ng-container>{{ tocStructure?.webPage }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webPage === 1\" > {{'apptochome.webPage' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webPage > 1\" > {{'apptochome.webPages' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.quiz > 0\">\r\n <ng-container>{{ tocStructure?.quiz }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.quiz === 1\" > {{'playerbrief.quiz' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.quiz > 1\" > {{'playerbrief.quizzes' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.assessment > 0\">\r\n <ng-container>{{ tocStructure?.assessment }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.assessment === 1\" > {{'apptochome.assessment' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.assessment > 1\" > {{'apptochome.assessments' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.other > 0\">\r\n <ng-container>{{ tocStructure?.other }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.other === 1\" > {{'apptochome.otherItem' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.other > 1\" > {{'apptochome.otherItems' | translate}}</ng-container>\r\n </h3>\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.lastUpdatedOn?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.lastUpdatedOn | date }}\r\n </h3>\r\n </div>\r\n <ng-container *ngIf=\"showMoreGlance\">\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\"></mat-divider>\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.expiryDate?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.expiryDate | date }}\r\n </h3>\r\n </div>\r\n <mat-divider\r\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.learningMode?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.learningMode }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.region?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.region }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.locale?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.locale | uppercase }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\"></mat-divider>\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.hasTranslations?.displayName}}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n <span class=\"cursor-pointer\" (click)=\"goToContent(trans?.identifier)\"\r\n *ngFor=\"let trans of content?.hasTranslations || content?.isTranslationOf\">{{ trans.locale | uppercase }}\r\n </span>\r\n </h3>\r\n </div>\r\n <mat-divider\r\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.keywords?.displayName}}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.keywords?.join(', ') }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\"></mat-divider>\r\n <ng-container *ngFor=\"let item of content?.collections\">\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.curatedInKB?.enabled && item.contentType === 'Knowledge Board' && item.status === 'Live'\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.curatedInKB?.displayName}}</h3>\r\n <mat-chip-list>\r\n <mat-chip>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n <ng-container *ngIf=\"item.contentType === 'Knowledge Board' && item.status === 'Live'\">\r\n <a [href]=\"'/app/toc/' + item.identifier + '/overview?primaryCategory='+ item.primaryCategory \"> {{\r\n item.name }} </a>\r\n </ng-container>\r\n </h3>\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n </ng-container>\r\n <div class=\"text-right mt-2\">\r\n <button mat-button (click)=\"showMoreGlance = !showMoreGlance\">\r\n <mat-icon>{{ !showMoreGlance ? 'arrow_drop_down' : 'arrow_drop_up' }}</mat-icon>\r\n <ng-container *ngIf=\"!showMoreGlance\">{{'playerbrief.showMore' | translate}}</ng-container>\r\n <ng-container *ngIf=\"showMoreGlance\">{{'playerbrief.showLess' | translate}}</ng-container>\r\n </button>\r\n </div>\r\n </mat-card>\r\n <!-- <ws-widget-user-content-rating class=\"mb-4 block\" *ngIf=\"content?.identifier\" [contentId]=\"content?.identifier\"\r\n [isDisabled]=\"isPreviewMode\" [forPreview]=\"forPreview\">\r\n </ws-widget-user-content-rating> -->\r\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorDetails?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorDetails,\r\n title: 'AUTHOR'\r\n }\">\r\n </ng-container>\r\n </div>\r\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorContacts?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorContacts,\r\n title: 'CONTACT'\r\n }\">\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\r\n <mat-card>\r\n <h2 *ngIf=\"title === 'AUTHOR'\">{{'playerbrief.authors' | translate}}</h2>\r\n <h2 *ngIf=\"title === 'CONTACT'\">{{'playerbrief.curatorcontact' | translate}}</h2>\r\n <mat-divider></mat-divider>\r\n <div *ngFor=\"let author of parseJsonData(authors)\" class=\"author\">\r\n <ws-widget-user-image class=\"author-image\" [imageType]=\"'name-initial'\" [userName]=\"author.name || ''\"\r\n [email]=\"author.email\"></ws-widget-user-image>\r\n <div class=\"width-expand flex flex-middle flex-between\">\r\n <h3 class=\"margin-remove\">{{ author.name }}</h3>\r\n <ws-widget-btn-mail-user *ngIf=\"askAuthorEnabled\" [widgetData]=\"{ content: content, emails: [author.email] }\">\r\n </ws-widget-btn-mail-user>\r\n </div>\r\n </div>\r\n </mat-card>\r\n</ng-template>", styles: [".info-container{padding:12px 16px;margin-bottom:16px}.info-container .info-item{display:flex;align-items:center;padding:8px 0;box-sizing:border-box}.info-container .info-item h3{margin:0}.info-container .info-item .item-heading{width:40%;min-width:80px;max-width:140px}.info-container .info-item .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.DisplayContentTypeComponent, selector: "ws-widget-display-content-type", inputs: ["displayContentType"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.MatLegacyChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i7.MatLegacyChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i10.UserImageComponent, selector: "ws-widget-user-image", inputs: ["email", "userId", "userName", "imageType", "imageUrl", "imageSize"] }, { kind: "component", type: i11.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: i12.MarkAsCompleteComponent, selector: "ws-widget-mark-as-complete", inputs: ["content", "forPreview"] }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i1.PipeCountTransformPipe, name: "pipeCountTransform" }, { kind: "pipe", type: i1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] }); }
|
|
122
|
-
}
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlayerBriefComponent, decorators: [{
|
|
124
|
-
type: Component,
|
|
125
|
-
args: [{ selector: 'ws-widget-player-brief', template: "<div class=\"md:px-2\">\r\n <ws-widget-mark-as-complete [forPreview]=\"forPreview\" [content]=\"content\"></ws-widget-mark-as-complete>\r\n <ng-container *ngIf=\"content && isDownloadable\">\r\n <mat-card class=\"mb-4\">\r\n <button mat-button color=\"primary\" (click)=\"download()\">\r\n <mat-icon>cloud_download</mat-icon>\r\n <span class=\"px-2\">{{ 'apptochome.download' | translate }}</span>\r\n </button>\r\n </mat-card>\r\n </ng-container>\r\n <mat-card class=\"ws-mat-primary-lite-background-on-day ws-mat-primary-border-top-bolder info-container\">\r\n <h2 >{{ 'apptochome.atGlance' | translate }}</h2>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.displayContentType?.displayName, 'apptoc') }}</h3>\r\n <ws-widget-display-content-type *ngIf=\"content?.contentType !== contentTypes.RESOURCE\"\r\n class=\"ws-mat-accent-text width-expand mat-body-strong\" [displayContentType]=\"content?.displayContentType\">\r\n </ws-widget-display-content-type>\r\n <div *ngIf=\"content?.contentType === contentTypes.RESOURCE\"\r\n class=\"ws-mat-accent-text width-expand mat-body-strong\">\r\n {{ content?.resourceType }}\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.complexityLevel?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.complexityLevel }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.duration?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.duration | pipeDurationTransform: 'hms' }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.cost?.displayName, 'apptoc') }}</h3>\r\n <h3 *ngIf=\"content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.paidContent' | translate}}</h3>\r\n <h3 *ngIf=\"!content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.free' | translate}}</h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.viewCount?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ getViewCount(content) | pipeCountTransform }}\r\n <ng-container *ngIf=\"content?.uniqueLearners\">\r\n ({{ content?.uniqueLearners | pipeCountTransform }}\r\n <ng-container >Unique)</ng-container>\r\n </ng-container>\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.sourceShortName?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.sourceShortName }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\"></mat-divider>\r\n <!-- Structure -->\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.structure?.displayName, 'apptoc') }}</h3>\r\n <div class=\"ws-mat-accent-text width-expand\">\r\n <h3 *ngIf=\"tocStructure?.course > 0\">\r\n <ng-container>{{ tocStructure?.course }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.course === 1\" > {{'apptochome.course1' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.course > 1\" > {{'apptochome.courses1' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.learningModule > 0\">\r\n <ng-container>{{ tocStructure?.learningModule }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.learningModule === 1\" > {{'apptochome.module' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.learningModule > 1\" > {{'apptochome.modules' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.video > 0\">\r\n <ng-container>{{ tocStructure?.video }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.video === 1\" > {{'apptochome.video' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.video > 1\" > {{'apptochome.videos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.interactiveVideo > 0\">\r\n <ng-container>{{ tocStructure?.interactiveVideo }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.interactiveVideo === 1\" >\r\n {{'playerbrief.interactiveVideo' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.interactiveVideo > 1\" >\r\n {{'playerbrief.interactiveVideos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.youtube > 0\">\r\n <ng-container>{{ tocStructure?.youtube }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.youtube === 1\" > {{'playerbrief.youtubeVideo' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.youtube > 1\" > {{'playerbrief.youtubeVideos' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.pdf > 0\">\r\n <ng-container>{{ tocStructure?.pdf }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.pdf === 1\" > {{'apptochome.pdf' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.pdf > 1\" > {{'apptochome.pdfs' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.podcast > 0\">\r\n <ng-container>{{ tocStructure?.podcast }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.podcast === 1\" > {{'playerbrief.podcast' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.podcast > 1\" > {{'playerbrief.podcasts' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.webModule > 0\">\r\n <ng-container>{{ tocStructure?.webModule }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webModule === 1\" > {{'playerbrief.webModule' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webModule > 1\" > {{'playerbrief.webModules' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.webPage > 0\">\r\n <ng-container>{{ tocStructure?.webPage }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webPage === 1\" > {{'apptochome.webPage' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.webPage > 1\" > {{'apptochome.webPages' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.quiz > 0\">\r\n <ng-container>{{ tocStructure?.quiz }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.quiz === 1\" > {{'playerbrief.quiz' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.quiz > 1\" > {{'playerbrief.quizzes' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.assessment > 0\">\r\n <ng-container>{{ tocStructure?.assessment }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.assessment === 1\" > {{'apptochome.assessment' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.assessment > 1\" > {{'apptochome.assessments' | translate}}</ng-container>\r\n </h3>\r\n <h3 *ngIf=\"tocStructure?.other > 0\">\r\n <ng-container>{{ tocStructure?.other }}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.other === 1\" > {{'apptochome.otherItem' | translate}}</ng-container>\r\n <ng-container *ngIf=\"tocStructure?.other > 1\" > {{'apptochome.otherItems' | translate}}</ng-container>\r\n </h3>\r\n </div>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.lastUpdatedOn?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.lastUpdatedOn | date }}\r\n </h3>\r\n </div>\r\n <ng-container *ngIf=\"showMoreGlance\">\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\"></mat-divider>\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.expiryDate?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.expiryDate | date }}\r\n </h3>\r\n </div>\r\n <mat-divider\r\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.learningMode?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.learningMode }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.region?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.region }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\"></mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.locale?.displayName, 'apptoc') }}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.locale | uppercase }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\"></mat-divider>\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.hasTranslations?.displayName}}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n <span class=\"cursor-pointer\" (click)=\"goToContent(trans?.identifier)\"\r\n *ngFor=\"let trans of content?.hasTranslations || content?.isTranslationOf\">{{ trans.locale | uppercase }}\r\n </span>\r\n </h3>\r\n </div>\r\n <mat-divider\r\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\r\n </mat-divider>\r\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.keywords?.displayName}}</h3>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n {{ content?.keywords?.join(', ') }}\r\n </h3>\r\n </div>\r\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\"></mat-divider>\r\n <ng-container *ngFor=\"let item of content?.collections\">\r\n <div class=\"info-item\"\r\n *ngIf=\"tocConfig?.atAGlance?.curatedInKB?.enabled && item.contentType === 'Knowledge Board' && item.status === 'Live'\">\r\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.curatedInKB?.displayName}}</h3>\r\n <mat-chip-list>\r\n <mat-chip>\r\n <h3 class=\"ws-mat-accent-text width-expand\">\r\n <ng-container *ngIf=\"item.contentType === 'Knowledge Board' && item.status === 'Live'\">\r\n <a [href]=\"'/app/toc/' + item.identifier + '/overview?primaryCategory='+ item.primaryCategory \"> {{\r\n item.name }} </a>\r\n </ng-container>\r\n </h3>\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n </ng-container>\r\n <div class=\"text-right mt-2\">\r\n <button mat-button (click)=\"showMoreGlance = !showMoreGlance\">\r\n <mat-icon>{{ !showMoreGlance ? 'arrow_drop_down' : 'arrow_drop_up' }}</mat-icon>\r\n <ng-container *ngIf=\"!showMoreGlance\">{{'playerbrief.showMore' | translate}}</ng-container>\r\n <ng-container *ngIf=\"showMoreGlance\">{{'playerbrief.showLess' | translate}}</ng-container>\r\n </button>\r\n </div>\r\n </mat-card>\r\n <!-- <ws-widget-user-content-rating class=\"mb-4 block\" *ngIf=\"content?.identifier\" [contentId]=\"content?.identifier\"\r\n [isDisabled]=\"isPreviewMode\" [forPreview]=\"forPreview\">\r\n </ws-widget-user-content-rating> -->\r\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorDetails?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorDetails,\r\n title: 'AUTHOR'\r\n }\">\r\n </ng-container>\r\n </div>\r\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorContacts?.length\">\r\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\r\n authors: content?.creatorContacts,\r\n title: 'CONTACT'\r\n }\">\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\r\n <mat-card>\r\n <h2 *ngIf=\"title === 'AUTHOR'\">{{'playerbrief.authors' | translate}}</h2>\r\n <h2 *ngIf=\"title === 'CONTACT'\">{{'playerbrief.curatorcontact' | translate}}</h2>\r\n <mat-divider></mat-divider>\r\n <div *ngFor=\"let author of parseJsonData(authors)\" class=\"author\">\r\n <ws-widget-user-image class=\"author-image\" [imageType]=\"'name-initial'\" [userName]=\"author.name || ''\"\r\n [email]=\"author.email\"></ws-widget-user-image>\r\n <div class=\"width-expand flex flex-middle flex-between\">\r\n <h3 class=\"margin-remove\">{{ author.name }}</h3>\r\n <ws-widget-btn-mail-user *ngIf=\"askAuthorEnabled\" [widgetData]=\"{ content: content, emails: [author.email] }\">\r\n </ws-widget-btn-mail-user>\r\n </div>\r\n </div>\r\n </mat-card>\r\n</ng-template>", styles: [".info-container{padding:12px 16px;margin-bottom:16px}.info-container .info-item{display:flex;align-items:center;padding:8px 0;box-sizing:border-box}.info-container .info-item h3{margin:0}.info-container .info-item .item-heading{width:40%;min-width:80px;max-width:140px}.info-container .info-item .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}\n"] }]
|
|
126
|
-
}], ctorParameters: function () { return [{ type: i1.ConfigurationsService }, { type: i1.UtilityService }, { type: i2.Router }, { type: i3.WidgetContentService }, { type: i1.MultilingualTranslationsService }]; }, propDecorators: { content: [{
|
|
127
|
-
type: Input
|
|
128
|
-
}], hasTocStructure: [{
|
|
129
|
-
type: Input
|
|
130
|
-
}], tocStructure: [{
|
|
131
|
-
type: Input
|
|
132
|
-
}], isPreviewMode: [{
|
|
133
|
-
type: Input
|
|
134
|
-
}], forPreview: [{
|
|
135
|
-
type: Input
|
|
136
|
-
}], askAuthorEnabled: [{
|
|
137
|
-
type: Input
|
|
138
|
-
}] } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLWJyaWVmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL3BsYXllci1icmllZi9wbGF5ZXItYnJpZWYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vcGxheWVyLWJyaWVmL3BsYXllci1icmllZi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FBV3hELE1BQU0sT0FBTyxvQkFBb0I7SUFnQi9CLFlBQ1MsU0FBZ0MsRUFDL0IsVUFBMEIsRUFDMUIsTUFBYyxFQUNkLGdCQUFzQyxFQUN0QyxnQkFBaUQ7UUFKbEQsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQztRQW5CM0QsWUFBTyxHQUE4QixJQUFJLENBQUE7UUFFekMsb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFFdkIsaUJBQVksR0FBUSxJQUFJLENBQUE7UUFFeEIsa0JBQWEsR0FBRyxLQUFLLENBQUE7UUFFckIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUVsQixxQkFBZ0IsR0FBRyxLQUFLLENBQUE7UUFDeEIsY0FBUyxHQUFRLElBQUksQ0FBQTtRQUVyQixtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQVF0QiwwQkFBcUIsR0FBRyxLQUFLLENBQUE7UUFDN0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLDBCQUFxQixHQUFHLEtBQUssQ0FBQTtJQUh6QixDQUFDO0lBS0wsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQzdFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1lBQ3JGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1NBQ3RGO0lBQ0gsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsNkJBQTZCO1lBQzNELElBQUksQ0FBQyxPQUFPO1lBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHlCQUF5QjtZQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FDdEMsRUFDRDtZQUNBLE1BQU0sZUFBZSxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQTtZQUM3RCwyQ0FBMkM7WUFDM0MsSUFDRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUTtnQkFDekIsQ0FBQyxJQUFJLENBQUMscUJBQXFCO2dCQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQ3hGLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUN4QyxFQUNEO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxJQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSztnQkFDckIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2dCQUN2QiwwREFBMEQ7Z0JBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUNyRCxlQUFlLENBQUMsV0FBVyxFQUFFO2dCQUM3QiwwREFBMEQ7aUJBQzNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25EO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxJQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUztnQkFDekIsQ0FBQyxJQUFJLENBQUMscUJBQXFCO2dCQUMzQiwwREFBMEQ7Z0JBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLDZCQUE2QixDQUN6RCxlQUFlLENBQUMsV0FBVyxFQUFFO2dCQUM3QiwwREFBMEQ7aUJBQzNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25EO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxPQUFPLEtBQUssQ0FBQTtTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVU7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQWtDO1FBQzdDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDMUQsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDakQ7UUFDRCxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFDRCxZQUFZO1FBQ1YsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsbUJBQW1CLENBQUE7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUE7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUE7WUFFckIsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFBO1lBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUVaLGtCQUFrQjtZQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQztRQUVELGVBQWU7SUFDakIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxDQUFTO1FBQzVCLElBQUk7WUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xDLE9BQU8sWUFBWSxDQUFBO1NBQ3BCO1FBQUMsTUFBTTtZQUNOLE9BQU8sRUFBRSxDQUFBO1NBQ1Y7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzlELENBQUM7K0dBcElVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGdRQ1hqQyxnd2dCQTJQYzs7NEZEaFBELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSx3QkFBd0I7K09BTWxDLE9BQU87c0JBRE4sS0FBSztnQkFHTixlQUFlO3NCQURkLEtBQUs7Z0JBR04sWUFBWTtzQkFEWCxLQUFLO2dCQUdOLGFBQWE7c0JBRFosS0FBSztnQkFHTixVQUFVO3NCQURULEtBQUs7Z0JBR04sZ0JBQWdCO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnXHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSwgTXVsdGlsaW5ndWFsVHJhbnNsYXRpb25zU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xyXG5pbXBvcnQgeyBXaWRnZXRDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5zZXJ2aWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtcGxheWVyLWJyaWVmJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGxheWVyLWJyaWVmLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wbGF5ZXItYnJpZWYuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFBsYXllckJyaWVmQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKVxyXG4gIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXHJcbiAgQElucHV0KClcclxuICBoYXNUb2NTdHJ1Y3R1cmUgPSBmYWxzZVxyXG4gIEBJbnB1dCgpXHJcbiAgdG9jU3RydWN0dXJlOiBhbnkgPSBudWxsXHJcbiAgQElucHV0KClcclxuICBpc1ByZXZpZXdNb2RlID0gZmFsc2VcclxuICBASW5wdXQoKVxyXG4gIGZvclByZXZpZXcgPSBmYWxzZVxyXG4gIEBJbnB1dCgpXHJcbiAgYXNrQXV0aG9yRW5hYmxlZCA9IGZhbHNlXHJcbiAgdG9jQ29uZmlnOiBhbnkgPSBudWxsXHJcblxyXG4gIHNob3dNb3JlR2xhbmNlID0gZmFsc2VcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVN2YzogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSB3aWRnZXRDb250ZW50U3ZjOiBXaWRnZXRDb250ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgbGFuZ3RyYW5zbGF0aW9uczogTXVsdGlsaW5ndWFsVHJhbnNsYXRpb25zU2VydmljZSxcclxuICApIHsgfVxyXG4gIGlzRG93bmxvYWRhYmxlRGVza3RvcCA9IGZhbHNlXHJcbiAgaXNEb3dubG9hZGFibGVJb3MgPSBmYWxzZVxyXG4gIGlzRG93bmxvYWRhYmxlQW5kcm9pZCA9IGZhbHNlXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRUb2NDb25maWcoKVxyXG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcykge1xyXG4gICAgICB0aGlzLmlzRG93bmxvYWRhYmxlSW9zID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnaW9zRG93bmxvYWQnKVxyXG4gICAgICB0aGlzLmlzRG93bmxvYWRhYmxlQW5kcm9pZCA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2FuZHJvaWREb3dubG9hZCcpXHJcbiAgICAgIHRoaXMuaXNEb3dubG9hZGFibGVEZXNrdG9wID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnZG93bmxvYWRSZXF1ZXN0JylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBpc0Rvd25sb2FkYWJsZSgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcgJiZcclxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVTb3VyY2UgJiZcclxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVBbmRyb2lkUmVzb3VyY2UgJiZcclxuICAgICAgdGhpcy5jb250ZW50ICYmXHJcbiAgICAgIHRoaXMuY29udGVudC5zb3VyY2VOYW1lICYmXHJcbiAgICAgIHRoaXMuY29uZmlnU3ZjLmluc3RhbmNlQ29uZmlnLmlzRG93bmxvYWRhYmxlSW9zUmVzb3VyY2UgJiZcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVTb3VyY2UpLmluY2x1ZGVzKFxyXG4gICAgICAgIHRoaXMuY29udGVudC5zb3VyY2VOYW1lLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBjb25zdCBzb3VyY2VTaG9ydE5hbWU6IHN0cmluZyA9IHRoaXMuY29udGVudC5zb3VyY2VOYW1lIHx8ICcnXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuICAgICAgaWYgKFxyXG4gICAgICAgICF0aGlzLnV0aWxpdHlTdmMuaXNNb2JpbGUgJiZcclxuICAgICAgICAhdGhpcy5pc0Rvd25sb2FkYWJsZURlc2t0b3AgJiZcclxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZVNvdXJjZVtzb3VyY2VTaG9ydE5hbWUudG9Mb3dlckNhc2UoKV0uaW5jbHVkZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbnRlbnQucmVzb3VyY2VUeXBlLnRvTG93ZXJDYXNlKCksXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnV0aWxpdHlTdmMuaXNJb3MgJiZcclxuICAgICAgICAhdGhpcy5pc0Rvd25sb2FkYWJsZUlvcyAmJlxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcclxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZUlvc1Jlc291cmNlW1xyXG4gICAgICAgICAgc291cmNlU2hvcnROYW1lLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcclxuICAgICAgICBdLmluY2x1ZGVzKHRoaXMuY29udGVudC5yZXNvdXJjZVR5cGUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U3ZjLmlzQW5kcm9pZCAmJlxyXG4gICAgICAgICF0aGlzLmlzRG93bmxvYWRhYmxlQW5kcm9pZCAmJlxyXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcclxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZUFuZHJvaWRSZXNvdXJjZVtcclxuICAgICAgICAgIHNvdXJjZVNob3J0TmFtZS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHRlci1jb21wdXRlZC1wcm9wZXJ0eS1zcGFjaW5nXHJcbiAgICAgICAgXS5pbmNsdWRlcyh0aGlzLmNvbnRlbnQucmVzb3VyY2VUeXBlLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIGdvVG9Db250ZW50KGlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2FwcC90b2MvJHtpZH0vb3ZlcnZpZXdgXSlcclxuICB9XHJcbiAgZ2V0Vmlld0NvdW50KGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwpIHtcclxuICAgIGlmIChjb250ZW50ICYmIHRoaXMuY29uZmlnU3ZjLnJvb3RPcmcgJiYgY29udGVudC52aWV3Q291bnQpIHtcclxuICAgICAgcmV0dXJuIGNvbnRlbnQudmlld0NvdW50W3RoaXMuY29uZmlnU3ZjLnJvb3RPcmddXHJcbiAgICB9XHJcbiAgICByZXR1cm4gMFxyXG4gIH1cclxuICBnZXRUb2NDb25maWcoKSB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZ1N2Yy5zaXRlUGF0aH0vZmVhdHVyZS90b2MuanNvbmBcclxuICAgIHRoaXMud2lkZ2V0Q29udGVudFN2Yy5mZXRjaENvbmZpZyh1cmwpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy50b2NDb25maWcgPSBkYXRhXHJcbiAgICAgIHRoaXMud2lkZ2V0Q29udGVudFN2Yy51cGRhdGVUb2NDb25maWcoZGF0YSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkb3dubG9hZCgpIHtcclxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuZm9yUHJldmlldykge1xyXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgIGxpbmsuZG93bmxvYWQgPSB0aGlzLmNvbnRlbnQubmFtZVxyXG4gICAgICBsaW5rLnRhcmdldCA9ICdfc2VsZidcclxuXHJcbiAgICAgIC8vIENvbnN0cnVjdCB0aGUgVVJJXHJcbiAgICAgIGxpbmsuaHJlZiA9IHRoaXMuY29udGVudC5hcnRpZmFjdFVybCB8fCAnJ1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspXHJcbiAgICAgIGxpbmsuY2xpY2soKVxyXG5cclxuICAgICAgLy8gQ2xlYW51cCB0aGUgRE9NXHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluaylcclxuICAgIH1cclxuXHJcbiAgICAvLyBkZWxldGUgbGluaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYXJzZUpzb25EYXRhKHM6IHN0cmluZykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcGFyc2VkU3RyaW5nID0gSlNPTi5wYXJzZShzKVxyXG4gICAgICByZXR1cm4gcGFyc2VkU3RyaW5nXHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIFtdXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVMYWJlbHMobGFiZWw6IHN0cmluZywgdHlwZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5sYW5ndHJhbnNsYXRpb25zLnRyYW5zbGF0ZUxhYmVsKGxhYmVsLCB0eXBlLCAnJylcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1kOnB4LTJcIj5cclxuICA8d3Mtd2lkZ2V0LW1hcmstYXMtY29tcGxldGUgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiIFtjb250ZW50XT1cImNvbnRlbnRcIj48L3dzLXdpZGdldC1tYXJrLWFzLWNvbXBsZXRlPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50ICYmIGlzRG93bmxvYWRhYmxlXCI+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYi00XCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZG93bmxvYWQoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5jbG91ZF9kb3dubG9hZDwvbWF0LWljb24+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJweC0yXCI+e3sgJ2FwcHRvY2hvbWUuZG93bmxvYWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG1hdC1jYXJkIGNsYXNzPVwid3MtbWF0LXByaW1hcnktbGl0ZS1iYWNrZ3JvdW5kLW9uLWRheSB3cy1tYXQtcHJpbWFyeS1ib3JkZXItdG9wLWJvbGRlciBpbmZvLWNvbnRhaW5lclwiPlxyXG4gICAgPGgyID57eyAnYXBwdG9jaG9tZS5hdEdsYW5jZScgfCB0cmFuc2xhdGUgfX08L2gyPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmRpc3BsYXlDb250ZW50VHlwZT8uZW5hYmxlZCAmJiBjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj5cclxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LmRpc3BsYXlDb250ZW50VHlwZT8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XHJcbiAgICAgIDx3cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGUgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSAhPT0gY29udGVudFR5cGVzLlJFU09VUkNFXCJcclxuICAgICAgICBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmQgbWF0LWJvZHktc3Ryb25nXCIgW2Rpc3BsYXlDb250ZW50VHlwZV09XCJjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj5cclxuICAgICAgPC93cy13aWRnZXQtZGlzcGxheS1jb250ZW50LXR5cGU+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5jb250ZW50VHlwZSA9PT0gY29udGVudFR5cGVzLlJFU09VUkNFXCJcclxuICAgICAgICBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmQgbWF0LWJvZHktc3Ryb25nXCI+XHJcbiAgICAgICAge3sgY29udGVudD8ucmVzb3VyY2VUeXBlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZGlzcGxheUNvbnRlbnRUeXBlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmRpc3BsYXlDb250ZW50VHlwZVwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uY29tcGxleGl0eUxldmVsPy5lbmFibGVkICYmIGNvbnRlbnQ/LmNvbXBsZXhpdHlMZXZlbFwiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uY29tcGxleGl0eUxldmVsPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cclxuICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgIHt7IGNvbnRlbnQ/LmNvbXBsZXhpdHlMZXZlbCB9fVxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uY29tcGxleGl0eUxldmVsPy5lbmFibGVkICYmIGNvbnRlbnQ/LmNvbXBsZXhpdHlMZXZlbFwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZHVyYXRpb24/LmVuYWJsZWQgJiYgY29udGVudD8uZHVyYXRpb25cIj5cclxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LmR1cmF0aW9uPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cclxuICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgIHt7IGNvbnRlbnQ/LmR1cmF0aW9uIHwgcGlwZUR1cmF0aW9uVHJhbnNmb3JtOiAnaG1zJyB9fVxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZHVyYXRpb24/LmVuYWJsZWQgJiYgY29udGVudD8uZHVyYXRpb25cIj48L21hdC1kaXZpZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmNvc3Q/LmVuYWJsZWRcIj5cclxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LmNvc3Q/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxyXG4gICAgICA8aDMgKm5nSWY9XCJjb250ZW50Py5leGNsdXNpdmVDb250ZW50XCIgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+e3snYXBwdG9jaG9tZS5wYWlkQ29udGVudCcgfCB0cmFuc2xhdGV9fTwvaDM+XHJcbiAgICAgIDxoMyAqbmdJZj1cIiFjb250ZW50Py5leGNsdXNpdmVDb250ZW50XCIgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+e3snYXBwdG9jaG9tZS5mcmVlJyB8IHRyYW5zbGF0ZX19PC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmNvc3Q/LmVuYWJsZWRcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnZpZXdDb3VudD8uZW5hYmxlZCAmJiBjb250ZW50Py52aWV3Q291bnQgJiYgY29uZmlnU3ZjPy5yb290T3JnXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy52aWV3Q291bnQ/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxyXG4gICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XHJcbiAgICAgICAge3sgZ2V0Vmlld0NvdW50KGNvbnRlbnQpIHwgcGlwZUNvdW50VHJhbnNmb3JtIH19XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LnVuaXF1ZUxlYXJuZXJzXCI+XHJcbiAgICAgICAgICAoe3sgY29udGVudD8udW5pcXVlTGVhcm5lcnMgfCBwaXBlQ291bnRUcmFuc2Zvcm0gfX1cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgPlVuaXF1ZSk8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnZpZXdDb3VudD8uZW5hYmxlZCAmJiBjb250ZW50Py52aWV3Q291bnQgJiYgY29uZmlnU3ZjPy5yb290T3JnXCI+XHJcbiAgICA8L21hdC1kaXZpZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnNvdXJjZVNob3J0TmFtZT8uZW5hYmxlZCAmJiBjb250ZW50Py5zb3VyY2VTaG9ydE5hbWVcIj5cclxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnNvdXJjZVNob3J0TmFtZT8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XHJcbiAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cclxuICAgICAgICB7eyBjb250ZW50Py5zb3VyY2VTaG9ydE5hbWUgfX1cclxuICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnNvdXJjZVNob3J0TmFtZT8uZW5hYmxlZCAmJiBjb250ZW50Py5zb3VyY2VTaG9ydE5hbWVcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgPCEtLSBTdHJ1Y3R1cmUgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcclxuICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uc3RydWN0dXJlPy5lbmFibGVkICYmIGhhc1RvY1N0cnVjdHVyZSAmJiBjb250ZW50Py5jaGlsZHJlbj8ubGVuZ3RoXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5zdHJ1Y3R1cmU/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8uY291cnNlID4gMFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LmNvdXJzZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uY291cnNlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLmNvdXJzZTEnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmNvdXJzZSA+IDFcIiA+IHt7J2FwcHRvY2hvbWUuY291cnNlczEnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmxlYXJuaW5nTW9kdWxlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLm1vZHVsZScgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAxXCIgPiB7eydhcHB0b2Nob21lLm1vZHVsZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8udmlkZW8gPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8udmlkZW8gfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnZpZGVvID09PSAxXCIgPiB7eydhcHB0b2Nob21lLnZpZGVvJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy52aWRlbyA+IDFcIiA+IHt7J2FwcHRvY2hvbWUudmlkZW9zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmludGVyYWN0aXZlVmlkZW8gPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA9PT0gMVwiID5cclxuICAgICAgICAgICAge3sncGxheWVyYnJpZWYuaW50ZXJhY3RpdmVWaWRlbycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA+IDFcIiA+XHJcbiAgICAgICAgICAgIHt7J3BsYXllcmJyaWVmLmludGVyYWN0aXZlVmlkZW9zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnlvdXR1YmUgPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ueW91dHViZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ueW91dHViZSA9PT0gMVwiID4ge3sncGxheWVyYnJpZWYueW91dHViZVZpZGVvJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy55b3V0dWJlID4gMVwiID4ge3sncGxheWVyYnJpZWYueW91dHViZVZpZGVvcycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wZGYgPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ucGRmIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wZGYgPT09IDFcIiA+IHt7J2FwcHRvY2hvbWUucGRmJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wZGYgPiAxXCIgPiB7eydhcHB0b2Nob21lLnBkZnMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucG9kY2FzdCA+IDBcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5wb2RjYXN0IH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wb2RjYXN0ID09PSAxXCIgPiB7eydwbGF5ZXJicmllZi5wb2RjYXN0JyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wb2RjYXN0ID4gMVwiID4ge3sncGxheWVyYnJpZWYucG9kY2FzdHMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ud2ViTW9kdWxlID4gMFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LndlYk1vZHVsZSB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ud2ViTW9kdWxlID09PSAxXCIgPiB7eydwbGF5ZXJicmllZi53ZWJNb2R1bGUnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LndlYk1vZHVsZSA+IDFcIiA+IHt7J3BsYXllcmJyaWVmLndlYk1vZHVsZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ud2ViUGFnZSA+IDBcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy53ZWJQYWdlIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy53ZWJQYWdlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLndlYlBhZ2UnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LndlYlBhZ2UgPiAxXCIgPiB7eydhcHB0b2Nob21lLndlYlBhZ2VzJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnF1aXogPiAwXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ucXVpeiB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucXVpeiA9PT0gMVwiID4ge3sncGxheWVyYnJpZWYucXVpeicgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucXVpeiA+IDFcIiA+IHt7J3BsYXllcmJyaWVmLnF1aXp6ZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8uYXNzZXNzbWVudCA+IDBcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5hc3Nlc3NtZW50IH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5hc3Nlc3NtZW50ID09PSAxXCIgPiB7eydhcHB0b2Nob21lLmFzc2Vzc21lbnQnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmFzc2Vzc21lbnQgPiAxXCIgPiB7eydhcHB0b2Nob21lLmFzc2Vzc21lbnRzJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/Lm90aGVyID4gMFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/Lm90aGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5vdGhlciA9PT0gMVwiID4ge3snYXBwdG9jaG9tZS5vdGhlckl0ZW0nIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/Lm90aGVyID4gMVwiID4ge3snYXBwdG9jaG9tZS5vdGhlckl0ZW1zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5zdHJ1Y3R1cmU/LmVuYWJsZWQgJiYgaGFzVG9jU3RydWN0dXJlICYmIGNvbnRlbnQ/LmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDwvbWF0LWRpdmlkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubGFzdFVwZGF0ZWRPbj8uZW5hYmxlZCAmJiBjb250ZW50Py5sYXN0VXBkYXRlZE9uXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sYXN0VXBkYXRlZE9uPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cclxuICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgIHt7IGNvbnRlbnQ/Lmxhc3RVcGRhdGVkT24gfCBkYXRlIH19XHJcbiAgICAgIDwvaDM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TW9yZUdsYW5jZVwiPlxyXG4gICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubGFzdFVwZGF0ZWRPbj8uZW5hYmxlZCAmJiBjb250ZW50Py5sYXN0VXBkYXRlZE9uXCI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiXHJcbiAgICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZXhwaXJ5RGF0ZT8uZW5hYmxlZCAmJiBjb250ZW50Py5leHBpcnlEYXRlICYmIGNvbnRlbnQ/LmV4cGlyeURhdGU/LnN0YXJ0c1dpdGgoJzIwJylcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uZXhwaXJ5RGF0ZT8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgICAge3sgY29udGVudD8uZXhwaXJ5RGF0ZSB8IGRhdGUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1kaXZpZGVyXHJcbiAgICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZXhwaXJ5RGF0ZT8uZW5hYmxlZCAmJiBjb250ZW50Py5leHBpcnlEYXRlICYmIGNvbnRlbnQ/LmV4cGlyeURhdGU/LnN0YXJ0c1dpdGgoJzIwJylcIj5cclxuICAgICAgPC9tYXQtZGl2aWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmxlYXJuaW5nTW9kZT8uZW5hYmxlZCAmJiBjb250ZW50Py5sZWFybmluZ01vZGVcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8ubGVhcm5pbmdNb2RlPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cclxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XHJcbiAgICAgICAgICB7eyBjb250ZW50Py5sZWFybmluZ01vZGUgfX1cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmxlYXJuaW5nTW9kZT8uZW5hYmxlZCAmJiBjb250ZW50Py5sZWFybmluZ01vZGVcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ucmVnaW9uPy5lbmFibGVkICYmIGNvbnRlbnQ/LnJlZ2lvbj8ubGVuZ3RoXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnJlZ2lvbj8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxyXG4gICAgICAgICAge3sgY29udGVudD8ucmVnaW9uIH19XHJcbiAgICAgICAgPC9oMz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5yZWdpb24/LmVuYWJsZWQgJiYgY29udGVudD8ucmVnaW9uPy5sZW5ndGhcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmxvY2FsZVwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sb2NhbGU/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cclxuICAgICAgICAgIHt7IGNvbnRlbnQ/LmxvY2FsZSB8IHVwcGVyY2FzZSB9fVxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmxvY2FsZVwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIlxyXG4gICAgICAgICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/Lmhhc1RyYW5zbGF0aW9ucz8uZW5hYmxlZCAmJiAoY29udGVudD8uaGFzVHJhbnNsYXRpb25zPy5sZW5ndGggfHwgY29udGVudD8uaXNUcmFuc2xhdGlvbk9mPy5sZW5ndGgpXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57e3RvY0NvbmZpZz8uYXRBR2xhbmNlPy5oYXNUcmFuc2xhdGlvbnM/LmRpc3BsYXlOYW1lfX08L2gzPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZ29Ub0NvbnRlbnQodHJhbnM/LmlkZW50aWZpZXIpXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRyYW5zIG9mIGNvbnRlbnQ/Lmhhc1RyYW5zbGF0aW9ucyB8fCBjb250ZW50Py5pc1RyYW5zbGF0aW9uT2ZcIj57eyB0cmFucy5sb2NhbGUgfCB1cHBlcmNhc2UgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2gzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPG1hdC1kaXZpZGVyXHJcbiAgICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uaGFzVHJhbnNsYXRpb25zPy5lbmFibGVkICYmIChjb250ZW50Py5oYXNUcmFuc2xhdGlvbnM/Lmxlbmd0aCB8fCBjb250ZW50Py5pc1RyYW5zbGF0aW9uT2Y/Lmxlbmd0aClcIj5cclxuICAgICAgPC9tYXQtZGl2aWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmtleXdvcmRzPy5lbmFibGVkICYmIGNvbnRlbnQ/LmtleXdvcmRzPy5sZW5ndGhcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7dG9jQ29uZmlnPy5hdEFHbGFuY2U/LmtleXdvcmRzPy5kaXNwbGF5TmFtZX19PC9oMz5cclxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XHJcbiAgICAgICAgICB7eyBjb250ZW50Py5rZXl3b3Jkcz8uam9pbignLCAnKSB9fVxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ua2V5d29yZHM/LmVuYWJsZWQgJiYgY29udGVudD8ua2V5d29yZHM/Lmxlbmd0aFwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29udGVudD8uY29sbGVjdGlvbnNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcclxuICAgICAgICAgICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmN1cmF0ZWRJbktCPy5lbmFibGVkICYmIGl0ZW0uY29udGVudFR5cGUgPT09ICdLbm93bGVkZ2UgQm9hcmQnICYmIGl0ZW0uc3RhdHVzID09PSAnTGl2ZSdcIj5cclxuICAgICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3t0b2NDb25maWc/LmF0QUdsYW5jZT8uY3VyYXRlZEluS0I/LmRpc3BsYXlOYW1lfX08L2gzPlxyXG4gICAgICAgICAgPG1hdC1jaGlwLWxpc3Q+XHJcbiAgICAgICAgICAgIDxtYXQtY2hpcD5cclxuICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jb250ZW50VHlwZSA9PT0gJ0tub3dsZWRnZSBCb2FyZCcgJiYgaXRlbS5zdGF0dXMgPT09ICdMaXZlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCInL2FwcC90b2MvJyArIGl0ZW0uaWRlbnRpZmllciArICcvb3ZlcnZpZXc/cHJpbWFyeUNhdGVnb3J5PScrIGl0ZW0ucHJpbWFyeUNhdGVnb3J5IFwiPiB7e1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ubmFtZSB9fSA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICA8L21hdC1jaGlwPlxyXG4gICAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0IG10LTJcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzaG93TW9yZUdsYW5jZSA9ICFzaG93TW9yZUdsYW5jZVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj57eyAhc2hvd01vcmVHbGFuY2UgPyAnYXJyb3dfZHJvcF9kb3duJyA6ICdhcnJvd19kcm9wX3VwJyB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzaG93TW9yZUdsYW5jZVwiPnt7J3BsYXllcmJyaWVmLnNob3dNb3JlJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dNb3JlR2xhbmNlXCI+e3sncGxheWVyYnJpZWYuc2hvd0xlc3MnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L21hdC1jYXJkPlxyXG4gIDwhLS0gPHdzLXdpZGdldC11c2VyLWNvbnRlbnQtcmF0aW5nIGNsYXNzPVwibWItNCBibG9ja1wiICpuZ0lmPVwiY29udGVudD8uaWRlbnRpZmllclwiIFtjb250ZW50SWRdPVwiY29udGVudD8uaWRlbnRpZmllclwiXHJcbiAgICBbaXNEaXNhYmxlZF09XCJpc1ByZXZpZXdNb2RlXCIgW2ZvclByZXZpZXddPVwiZm9yUHJldmlld1wiPlxyXG4gIDwvd3Mtd2lkZ2V0LXVzZXItY29udGVudC1yYXRpbmc+IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJoaWRkZW4gc206YmxvY2sgbWFyZ2luLWJvdHRvbS1tXCIgKm5nSWY9XCJjb250ZW50Py5jcmVhdG9yRGV0YWlscz8ubGVuZ3RoXCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyZWF0b3JzXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICBhdXRob3JzOiBjb250ZW50Py5jcmVhdG9yRGV0YWlscyxcclxuICAgICAgICB0aXRsZTogJ0FVVEhPUidcclxuICAgICAgfVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImhpZGRlbiBzbTpibG9jayBtYXJnaW4tYm90dG9tLW1cIiAqbmdJZj1cImNvbnRlbnQ/LmNyZWF0b3JDb250YWN0cz8ubGVuZ3RoXCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyZWF0b3JzXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICBhdXRob3JzOiBjb250ZW50Py5jcmVhdG9yQ29udGFjdHMsXHJcbiAgICAgICAgdGl0bGU6ICdDT05UQUNUJ1xyXG4gICAgICB9XCI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NyZWF0b3JzIGxldC1hdXRob3JzPVwiYXV0aG9yc1wiIGxldC10aXRsZT1cInRpdGxlXCI+XHJcbiAgPG1hdC1jYXJkPlxyXG4gICAgPGgyICpuZ0lmPVwidGl0bGUgPT09ICdBVVRIT1InXCI+e3sncGxheWVyYnJpZWYuYXV0aG9ycycgfCB0cmFuc2xhdGV9fTwvaDI+XHJcbiAgICA8aDIgKm5nSWY9XCJ0aXRsZSA9PT0gJ0NPTlRBQ1QnXCI+e3sncGxheWVyYnJpZWYuY3VyYXRvcmNvbnRhY3QnIHwgdHJhbnNsYXRlfX08L2gyPlxyXG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhdXRob3Igb2YgcGFyc2VKc29uRGF0YShhdXRob3JzKVwiIGNsYXNzPVwiYXV0aG9yXCI+XHJcbiAgICAgIDx3cy13aWRnZXQtdXNlci1pbWFnZSBjbGFzcz1cImF1dGhvci1pbWFnZVwiIFtpbWFnZVR5cGVdPVwiJ25hbWUtaW5pdGlhbCdcIiBbdXNlck5hbWVdPVwiYXV0aG9yLm5hbWUgfHwgJydcIlxyXG4gICAgICAgIFtlbWFpbF09XCJhdXRob3IuZW1haWxcIj48L3dzLXdpZGdldC11c2VyLWltYWdlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2lkdGgtZXhwYW5kIGZsZXggZmxleC1taWRkbGUgZmxleC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwibWFyZ2luLXJlbW92ZVwiPnt7IGF1dGhvci5uYW1lIH19PC9oMz5cclxuICAgICAgICA8d3Mtd2lkZ2V0LWJ0bi1tYWlsLXVzZXIgKm5nSWY9XCJhc2tBdXRob3JFbmFibGVkXCIgW3dpZGdldERhdGFdPVwieyBjb250ZW50OiBjb250ZW50LCBlbWFpbHM6IFthdXRob3IuZW1haWxdIH1cIj5cclxuICAgICAgICA8L3dzLXdpZGdldC1idG4tbWFpbC11c2VyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbWF0LWNhcmQ+XHJcbjwvbmctdGVtcGxhdGU+Il19
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@sunbird-cb/utils-v2";
|
|
4
|
+
import * as i2 from "@angular/router";
|
|
5
|
+
import * as i3 from "../../../_services/widget-content.service";
|
|
6
|
+
import * as i4 from "@angular/common";
|
|
7
|
+
import * as i5 from "../display-content-type/display-content-type.component";
|
|
8
|
+
import * as i6 from "@angular/material/divider";
|
|
9
|
+
import * as i7 from "@angular/material/legacy-chips";
|
|
10
|
+
import * as i8 from "@angular/material/icon";
|
|
11
|
+
import * as i9 from "@angular/material/legacy-card";
|
|
12
|
+
import * as i10 from "../user-image/user-image.component";
|
|
13
|
+
import * as i11 from "@angular/material/legacy-button";
|
|
14
|
+
import * as i12 from "../mark-as-complete/mark-as-complete.component";
|
|
15
|
+
import * as i13 from "@ngx-translate/core";
|
|
16
|
+
export class PlayerBriefComponent {
|
|
17
|
+
constructor(configSvc, utilitySvc, router, widgetContentSvc, langtranslations) {
|
|
18
|
+
this.configSvc = configSvc;
|
|
19
|
+
this.utilitySvc = utilitySvc;
|
|
20
|
+
this.router = router;
|
|
21
|
+
this.widgetContentSvc = widgetContentSvc;
|
|
22
|
+
this.langtranslations = langtranslations;
|
|
23
|
+
this.content = null;
|
|
24
|
+
this.hasTocStructure = false;
|
|
25
|
+
this.tocStructure = null;
|
|
26
|
+
this.isPreviewMode = false;
|
|
27
|
+
this.forPreview = false;
|
|
28
|
+
this.askAuthorEnabled = false;
|
|
29
|
+
this.tocConfig = null;
|
|
30
|
+
this.showMoreGlance = false;
|
|
31
|
+
this.isDownloadableDesktop = false;
|
|
32
|
+
this.isDownloadableIos = false;
|
|
33
|
+
this.isDownloadableAndroid = false;
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this.getTocConfig();
|
|
37
|
+
if (this.configSvc.restrictedFeatures) {
|
|
38
|
+
this.isDownloadableIos = this.configSvc.restrictedFeatures.has('iosDownload');
|
|
39
|
+
this.isDownloadableAndroid = this.configSvc.restrictedFeatures.has('androidDownload');
|
|
40
|
+
this.isDownloadableDesktop = this.configSvc.restrictedFeatures.has('downloadRequest');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
get isDownloadable() {
|
|
44
|
+
if (this.configSvc.instanceConfig &&
|
|
45
|
+
this.configSvc.instanceConfig.isDownloadableSource &&
|
|
46
|
+
this.configSvc.instanceConfig.isDownloadableAndroidResource &&
|
|
47
|
+
this.content &&
|
|
48
|
+
this.content.sourceName &&
|
|
49
|
+
this.configSvc.instanceConfig.isDownloadableIosResource &&
|
|
50
|
+
Object.keys(this.configSvc.instanceConfig.isDownloadableSource).includes(this.content.sourceName.toLowerCase())) {
|
|
51
|
+
const sourceShortName = this.content.sourceName || '';
|
|
52
|
+
// tslint:disable-next-line:max-line-length
|
|
53
|
+
if (!this.utilitySvc.isMobile &&
|
|
54
|
+
!this.isDownloadableDesktop &&
|
|
55
|
+
this.configSvc.instanceConfig.isDownloadableSource[sourceShortName.toLowerCase()].includes(this.content.resourceType.toLowerCase())) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
if (this.utilitySvc.isIos &&
|
|
59
|
+
!this.isDownloadableIos &&
|
|
60
|
+
// tslint:disable-next-line: ter-computed-property-spacing
|
|
61
|
+
this.configSvc.instanceConfig.isDownloadableIosResource[sourceShortName.toLowerCase()
|
|
62
|
+
// tslint:disable-next-line: ter-computed-property-spacing
|
|
63
|
+
].includes(this.content.resourceType.toLowerCase())) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
if (this.utilitySvc.isAndroid &&
|
|
67
|
+
!this.isDownloadableAndroid &&
|
|
68
|
+
// tslint:disable-next-line: ter-computed-property-spacing
|
|
69
|
+
this.configSvc.instanceConfig.isDownloadableAndroidResource[sourceShortName.toLowerCase()
|
|
70
|
+
// tslint:disable-next-line: ter-computed-property-spacing
|
|
71
|
+
].includes(this.content.resourceType.toLowerCase())) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
goToContent(id) {
|
|
79
|
+
this.router.navigate([`/app/toc/${id}/overview`]);
|
|
80
|
+
}
|
|
81
|
+
getViewCount(content) {
|
|
82
|
+
if (content && this.configSvc.rootOrg && content.viewCount) {
|
|
83
|
+
return content.viewCount[this.configSvc.rootOrg];
|
|
84
|
+
}
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
87
|
+
getTocConfig() {
|
|
88
|
+
const url = `${this.configSvc.sitePath}/feature/toc.json`;
|
|
89
|
+
this.widgetContentSvc.fetchConfig(url).subscribe(data => {
|
|
90
|
+
this.tocConfig = data;
|
|
91
|
+
this.widgetContentSvc.updateTocConfig(data);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
download() {
|
|
95
|
+
if (this.content && !this.forPreview) {
|
|
96
|
+
const link = document.createElement('a');
|
|
97
|
+
link.download = this.content.name;
|
|
98
|
+
link.target = '_self';
|
|
99
|
+
// Construct the URI
|
|
100
|
+
link.href = this.content.artifactUrl || '';
|
|
101
|
+
document.body.appendChild(link);
|
|
102
|
+
link.click();
|
|
103
|
+
// Cleanup the DOM
|
|
104
|
+
document.body.removeChild(link);
|
|
105
|
+
}
|
|
106
|
+
// delete link;
|
|
107
|
+
}
|
|
108
|
+
parseJsonData(s) {
|
|
109
|
+
try {
|
|
110
|
+
const parsedString = JSON.parse(s);
|
|
111
|
+
return parsedString;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
translateLabels(label, type) {
|
|
118
|
+
return this.langtranslations.translateLabel(label, type, '');
|
|
119
|
+
}
|
|
120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlayerBriefComponent, deps: [{ token: i1.ConfigurationsService }, { token: i1.UtilityService }, { token: i2.Router }, { token: i3.WidgetContentService }, { token: i1.MultilingualTranslationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
121
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PlayerBriefComponent, selector: "ws-widget-player-brief", inputs: { content: "content", hasTocStructure: "hasTocStructure", tocStructure: "tocStructure", isPreviewMode: "isPreviewMode", forPreview: "forPreview", askAuthorEnabled: "askAuthorEnabled" }, ngImport: i0, template: "<div class=\"md:px-2\">\n <ws-widget-mark-as-complete [forPreview]=\"forPreview\" [content]=\"content\"></ws-widget-mark-as-complete>\n <ng-container *ngIf=\"content && isDownloadable\">\n <mat-card class=\"mb-4\">\n <button mat-button color=\"primary\" (click)=\"download()\">\n <mat-icon>cloud_download</mat-icon>\n <span class=\"px-2\">{{ 'apptochome.download' | translate }}</span>\n </button>\n </mat-card>\n </ng-container>\n <mat-card class=\"ws-mat-primary-lite-background-on-day ws-mat-primary-border-top-bolder info-container\">\n <h2 >{{ 'apptochome.atGlance' | translate }}</h2>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.displayContentType?.displayName, 'apptoc') }}</h3>\n <ws-widget-display-content-type *ngIf=\"content?.contentType !== contentTypes.RESOURCE\"\n class=\"ws-mat-accent-text width-expand mat-body-strong\" [displayContentType]=\"content?.displayContentType\">\n </ws-widget-display-content-type>\n <div *ngIf=\"content?.contentType === contentTypes.RESOURCE\"\n class=\"ws-mat-accent-text width-expand mat-body-strong\">\n {{ content?.resourceType }}\n </div>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.complexityLevel?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.complexityLevel }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.duration?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.duration | pipeDurationTransform: 'hms' }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.cost?.displayName, 'apptoc') }}</h3>\n <h3 *ngIf=\"content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.paidContent' | translate}}</h3>\n <h3 *ngIf=\"!content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.free' | translate}}</h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.viewCount?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ getViewCount(content) | pipeCountTransform }}\n <ng-container *ngIf=\"content?.uniqueLearners\">\n ({{ content?.uniqueLearners | pipeCountTransform }}\n <ng-container >Unique)</ng-container>\n </ng-container>\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.sourceShortName?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.sourceShortName }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\"></mat-divider>\n <!-- Structure -->\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.structure?.displayName, 'apptoc') }}</h3>\n <div class=\"ws-mat-accent-text width-expand\">\n <h3 *ngIf=\"tocStructure?.course > 0\">\n <ng-container>{{ tocStructure?.course }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.course === 1\" > {{'apptochome.course1' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.course > 1\" > {{'apptochome.courses1' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.learningModule > 0\">\n <ng-container>{{ tocStructure?.learningModule }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.learningModule === 1\" > {{'apptochome.module' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.learningModule > 1\" > {{'apptochome.modules' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.video > 0\">\n <ng-container>{{ tocStructure?.video }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.video === 1\" > {{'apptochome.video' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.video > 1\" > {{'apptochome.videos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.interactiveVideo > 0\">\n <ng-container>{{ tocStructure?.interactiveVideo }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.interactiveVideo === 1\" >\n {{'playerbrief.interactiveVideo' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.interactiveVideo > 1\" >\n {{'playerbrief.interactiveVideos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.youtube > 0\">\n <ng-container>{{ tocStructure?.youtube }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.youtube === 1\" > {{'playerbrief.youtubeVideo' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.youtube > 1\" > {{'playerbrief.youtubeVideos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.pdf > 0\">\n <ng-container>{{ tocStructure?.pdf }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.pdf === 1\" > {{'apptochome.pdf' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.pdf > 1\" > {{'apptochome.pdfs' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.podcast > 0\">\n <ng-container>{{ tocStructure?.podcast }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.podcast === 1\" > {{'playerbrief.podcast' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.podcast > 1\" > {{'playerbrief.podcasts' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.webModule > 0\">\n <ng-container>{{ tocStructure?.webModule }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webModule === 1\" > {{'playerbrief.webModule' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webModule > 1\" > {{'playerbrief.webModules' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.webPage > 0\">\n <ng-container>{{ tocStructure?.webPage }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webPage === 1\" > {{'apptochome.webPage' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webPage > 1\" > {{'apptochome.webPages' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.quiz > 0\">\n <ng-container>{{ tocStructure?.quiz }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.quiz === 1\" > {{'playerbrief.quiz' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.quiz > 1\" > {{'playerbrief.quizzes' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.assessment > 0\">\n <ng-container>{{ tocStructure?.assessment }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.assessment === 1\" > {{'apptochome.assessment' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.assessment > 1\" > {{'apptochome.assessments' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.other > 0\">\n <ng-container>{{ tocStructure?.other }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.other === 1\" > {{'apptochome.otherItem' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.other > 1\" > {{'apptochome.otherItems' | translate}}</ng-container>\n </h3>\n </div>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.lastUpdatedOn?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.lastUpdatedOn | date }}\n </h3>\n </div>\n <ng-container *ngIf=\"showMoreGlance\">\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\"></mat-divider>\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.expiryDate?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.expiryDate | date }}\n </h3>\n </div>\n <mat-divider\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.learningMode?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.learningMode }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.region?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.region }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.locale?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.locale | uppercase }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\"></mat-divider>\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.hasTranslations?.displayName}}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n <span class=\"cursor-pointer\" (click)=\"goToContent(trans?.identifier)\"\n *ngFor=\"let trans of content?.hasTranslations || content?.isTranslationOf\">{{ trans.locale | uppercase }}\n </span>\n </h3>\n </div>\n <mat-divider\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.keywords?.displayName}}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.keywords?.join(', ') }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\"></mat-divider>\n <ng-container *ngFor=\"let item of content?.collections\">\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.curatedInKB?.enabled && item.contentType === 'Knowledge Board' && item.status === 'Live'\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.curatedInKB?.displayName}}</h3>\n <mat-chip-list>\n <mat-chip>\n <h3 class=\"ws-mat-accent-text width-expand\">\n <ng-container *ngIf=\"item.contentType === 'Knowledge Board' && item.status === 'Live'\">\n <a [href]=\"'/app/toc/' + item.identifier + '/overview?primaryCategory='+ item.primaryCategory \"> {{\n item.name }} </a>\n </ng-container>\n </h3>\n </mat-chip>\n </mat-chip-list>\n </div>\n </ng-container>\n <mat-divider></mat-divider>\n </ng-container>\n <div class=\"text-right mt-2\">\n <button mat-button (click)=\"showMoreGlance = !showMoreGlance\">\n <mat-icon>{{ !showMoreGlance ? 'arrow_drop_down' : 'arrow_drop_up' }}</mat-icon>\n <ng-container *ngIf=\"!showMoreGlance\">{{'playerbrief.showMore' | translate}}</ng-container>\n <ng-container *ngIf=\"showMoreGlance\">{{'playerbrief.showLess' | translate}}</ng-container>\n </button>\n </div>\n </mat-card>\n <!-- <ws-widget-user-content-rating class=\"mb-4 block\" *ngIf=\"content?.identifier\" [contentId]=\"content?.identifier\"\n [isDisabled]=\"isPreviewMode\" [forPreview]=\"forPreview\">\n </ws-widget-user-content-rating> -->\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorDetails?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorDetails,\n title: 'AUTHOR'\n }\">\n </ng-container>\n </div>\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorContacts?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorContacts,\n title: 'CONTACT'\n }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <mat-card>\n <h2 *ngIf=\"title === 'AUTHOR'\">{{'playerbrief.authors' | translate}}</h2>\n <h2 *ngIf=\"title === 'CONTACT'\">{{'playerbrief.curatorcontact' | translate}}</h2>\n <mat-divider></mat-divider>\n <div *ngFor=\"let author of parseJsonData(authors)\" class=\"author\">\n <ws-widget-user-image class=\"author-image\" [imageType]=\"'name-initial'\" [userName]=\"author.name || ''\"\n [email]=\"author.email\"></ws-widget-user-image>\n <div class=\"width-expand flex flex-middle flex-between\">\n <h3 class=\"margin-remove\">{{ author.name }}</h3>\n <ws-widget-btn-mail-user *ngIf=\"askAuthorEnabled\" [widgetData]=\"{ content: content, emails: [author.email] }\">\n </ws-widget-btn-mail-user>\n </div>\n </div>\n </mat-card>\n</ng-template>", styles: [".info-container{padding:12px 16px;margin-bottom:16px}.info-container .info-item{display:flex;align-items:center;padding:8px 0;box-sizing:border-box}.info-container .info-item h3{margin:0}.info-container .info-item .item-heading{width:40%;min-width:80px;max-width:140px}.info-container .info-item .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.DisplayContentTypeComponent, selector: "ws-widget-display-content-type", inputs: ["displayContentType"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.MatLegacyChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i7.MatLegacyChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i10.UserImageComponent, selector: "ws-widget-user-image", inputs: ["email", "userId", "userName", "imageType", "imageUrl", "imageSize"] }, { kind: "component", type: i11.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: i12.MarkAsCompleteComponent, selector: "ws-widget-mark-as-complete", inputs: ["content", "forPreview"] }, { kind: "pipe", type: i4.UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: i1.PipeCountTransformPipe, name: "pipeCountTransform" }, { kind: "pipe", type: i1.PipeDurationTransformPipe, name: "pipeDurationTransform" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }] }); }
|
|
122
|
+
}
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PlayerBriefComponent, decorators: [{
|
|
124
|
+
type: Component,
|
|
125
|
+
args: [{ selector: 'ws-widget-player-brief', template: "<div class=\"md:px-2\">\n <ws-widget-mark-as-complete [forPreview]=\"forPreview\" [content]=\"content\"></ws-widget-mark-as-complete>\n <ng-container *ngIf=\"content && isDownloadable\">\n <mat-card class=\"mb-4\">\n <button mat-button color=\"primary\" (click)=\"download()\">\n <mat-icon>cloud_download</mat-icon>\n <span class=\"px-2\">{{ 'apptochome.download' | translate }}</span>\n </button>\n </mat-card>\n </ng-container>\n <mat-card class=\"ws-mat-primary-lite-background-on-day ws-mat-primary-border-top-bolder info-container\">\n <h2 >{{ 'apptochome.atGlance' | translate }}</h2>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.displayContentType?.displayName, 'apptoc') }}</h3>\n <ws-widget-display-content-type *ngIf=\"content?.contentType !== contentTypes.RESOURCE\"\n class=\"ws-mat-accent-text width-expand mat-body-strong\" [displayContentType]=\"content?.displayContentType\">\n </ws-widget-display-content-type>\n <div *ngIf=\"content?.contentType === contentTypes.RESOURCE\"\n class=\"ws-mat-accent-text width-expand mat-body-strong\">\n {{ content?.resourceType }}\n </div>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.displayContentType?.enabled && content?.displayContentType\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.complexityLevel?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.complexityLevel }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.complexityLevel?.enabled && content?.complexityLevel\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.duration?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.duration | pipeDurationTransform: 'hms' }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.duration?.enabled && content?.duration\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.cost?.displayName, 'apptoc') }}</h3>\n <h3 *ngIf=\"content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.paidContent' | translate}}</h3>\n <h3 *ngIf=\"!content?.exclusiveContent\" class=\"ws-mat-accent-text width-expand\">{{'apptochome.free' | translate}}</h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.cost?.enabled\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.viewCount?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ getViewCount(content) | pipeCountTransform }}\n <ng-container *ngIf=\"content?.uniqueLearners\">\n ({{ content?.uniqueLearners | pipeCountTransform }}\n <ng-container >Unique)</ng-container>\n </ng-container>\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.viewCount?.enabled && content?.viewCount && configSvc?.rootOrg\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.sourceShortName?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.sourceShortName }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.sourceShortName?.enabled && content?.sourceShortName\"></mat-divider>\n <!-- Structure -->\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.structure?.displayName, 'apptoc') }}</h3>\n <div class=\"ws-mat-accent-text width-expand\">\n <h3 *ngIf=\"tocStructure?.course > 0\">\n <ng-container>{{ tocStructure?.course }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.course === 1\" > {{'apptochome.course1' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.course > 1\" > {{'apptochome.courses1' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.learningModule > 0\">\n <ng-container>{{ tocStructure?.learningModule }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.learningModule === 1\" > {{'apptochome.module' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.learningModule > 1\" > {{'apptochome.modules' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.video > 0\">\n <ng-container>{{ tocStructure?.video }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.video === 1\" > {{'apptochome.video' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.video > 1\" > {{'apptochome.videos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.interactiveVideo > 0\">\n <ng-container>{{ tocStructure?.interactiveVideo }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.interactiveVideo === 1\" >\n {{'playerbrief.interactiveVideo' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.interactiveVideo > 1\" >\n {{'playerbrief.interactiveVideos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.youtube > 0\">\n <ng-container>{{ tocStructure?.youtube }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.youtube === 1\" > {{'playerbrief.youtubeVideo' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.youtube > 1\" > {{'playerbrief.youtubeVideos' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.pdf > 0\">\n <ng-container>{{ tocStructure?.pdf }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.pdf === 1\" > {{'apptochome.pdf' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.pdf > 1\" > {{'apptochome.pdfs' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.podcast > 0\">\n <ng-container>{{ tocStructure?.podcast }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.podcast === 1\" > {{'playerbrief.podcast' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.podcast > 1\" > {{'playerbrief.podcasts' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.webModule > 0\">\n <ng-container>{{ tocStructure?.webModule }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webModule === 1\" > {{'playerbrief.webModule' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webModule > 1\" > {{'playerbrief.webModules' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.webPage > 0\">\n <ng-container>{{ tocStructure?.webPage }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webPage === 1\" > {{'apptochome.webPage' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.webPage > 1\" > {{'apptochome.webPages' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.quiz > 0\">\n <ng-container>{{ tocStructure?.quiz }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.quiz === 1\" > {{'playerbrief.quiz' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.quiz > 1\" > {{'playerbrief.quizzes' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.assessment > 0\">\n <ng-container>{{ tocStructure?.assessment }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.assessment === 1\" > {{'apptochome.assessment' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.assessment > 1\" > {{'apptochome.assessments' | translate}}</ng-container>\n </h3>\n <h3 *ngIf=\"tocStructure?.other > 0\">\n <ng-container>{{ tocStructure?.other }}</ng-container>\n <ng-container *ngIf=\"tocStructure?.other === 1\" > {{'apptochome.otherItem' | translate}}</ng-container>\n <ng-container *ngIf=\"tocStructure?.other > 1\" > {{'apptochome.otherItems' | translate}}</ng-container>\n </h3>\n </div>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.structure?.enabled && hasTocStructure && content?.children?.length\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.lastUpdatedOn?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.lastUpdatedOn | date }}\n </h3>\n </div>\n <ng-container *ngIf=\"showMoreGlance\">\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.lastUpdatedOn?.enabled && content?.lastUpdatedOn\"></mat-divider>\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.expiryDate?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.expiryDate | date }}\n </h3>\n </div>\n <mat-divider\n *ngIf=\"tocConfig?.atAGlance?.expiryDate?.enabled && content?.expiryDate && content?.expiryDate?.startsWith('20')\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.learningMode?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.learningMode }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.learningMode?.enabled && content?.learningMode\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.region?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.region }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.region?.enabled && content?.region?.length\"></mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{ translateLabels(tocConfig?.atAGlance?.locale?.displayName, 'apptoc') }}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.locale | uppercase }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.locale?.enabled && content?.locale\"></mat-divider>\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.hasTranslations?.displayName}}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n <span class=\"cursor-pointer\" (click)=\"goToContent(trans?.identifier)\"\n *ngFor=\"let trans of content?.hasTranslations || content?.isTranslationOf\">{{ trans.locale | uppercase }}\n </span>\n </h3>\n </div>\n <mat-divider\n *ngIf=\"tocConfig?.atAGlance?.hasTranslations?.enabled && (content?.hasTranslations?.length || content?.isTranslationOf?.length)\">\n </mat-divider>\n <div class=\"info-item\" *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.keywords?.displayName}}</h3>\n <h3 class=\"ws-mat-accent-text width-expand\">\n {{ content?.keywords?.join(', ') }}\n </h3>\n </div>\n <mat-divider *ngIf=\"tocConfig?.atAGlance?.keywords?.enabled && content?.keywords?.length\"></mat-divider>\n <ng-container *ngFor=\"let item of content?.collections\">\n <div class=\"info-item\"\n *ngIf=\"tocConfig?.atAGlance?.curatedInKB?.enabled && item.contentType === 'Knowledge Board' && item.status === 'Live'\">\n <h3 class=\"item-heading ws-mat-primary-text\">{{tocConfig?.atAGlance?.curatedInKB?.displayName}}</h3>\n <mat-chip-list>\n <mat-chip>\n <h3 class=\"ws-mat-accent-text width-expand\">\n <ng-container *ngIf=\"item.contentType === 'Knowledge Board' && item.status === 'Live'\">\n <a [href]=\"'/app/toc/' + item.identifier + '/overview?primaryCategory='+ item.primaryCategory \"> {{\n item.name }} </a>\n </ng-container>\n </h3>\n </mat-chip>\n </mat-chip-list>\n </div>\n </ng-container>\n <mat-divider></mat-divider>\n </ng-container>\n <div class=\"text-right mt-2\">\n <button mat-button (click)=\"showMoreGlance = !showMoreGlance\">\n <mat-icon>{{ !showMoreGlance ? 'arrow_drop_down' : 'arrow_drop_up' }}</mat-icon>\n <ng-container *ngIf=\"!showMoreGlance\">{{'playerbrief.showMore' | translate}}</ng-container>\n <ng-container *ngIf=\"showMoreGlance\">{{'playerbrief.showLess' | translate}}</ng-container>\n </button>\n </div>\n </mat-card>\n <!-- <ws-widget-user-content-rating class=\"mb-4 block\" *ngIf=\"content?.identifier\" [contentId]=\"content?.identifier\"\n [isDisabled]=\"isPreviewMode\" [forPreview]=\"forPreview\">\n </ws-widget-user-content-rating> -->\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorDetails?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorDetails,\n title: 'AUTHOR'\n }\">\n </ng-container>\n </div>\n <div class=\"hidden sm:block margin-bottom-m\" *ngIf=\"content?.creatorContacts?.length\">\n <ng-container [ngTemplateOutlet]=\"creators\" [ngTemplateOutletContext]=\"{\n authors: content?.creatorContacts,\n title: 'CONTACT'\n }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #creators let-authors=\"authors\" let-title=\"title\">\n <mat-card>\n <h2 *ngIf=\"title === 'AUTHOR'\">{{'playerbrief.authors' | translate}}</h2>\n <h2 *ngIf=\"title === 'CONTACT'\">{{'playerbrief.curatorcontact' | translate}}</h2>\n <mat-divider></mat-divider>\n <div *ngFor=\"let author of parseJsonData(authors)\" class=\"author\">\n <ws-widget-user-image class=\"author-image\" [imageType]=\"'name-initial'\" [userName]=\"author.name || ''\"\n [email]=\"author.email\"></ws-widget-user-image>\n <div class=\"width-expand flex flex-middle flex-between\">\n <h3 class=\"margin-remove\">{{ author.name }}</h3>\n <ws-widget-btn-mail-user *ngIf=\"askAuthorEnabled\" [widgetData]=\"{ content: content, emails: [author.email] }\">\n </ws-widget-btn-mail-user>\n </div>\n </div>\n </mat-card>\n</ng-template>", styles: [".info-container{padding:12px 16px;margin-bottom:16px}.info-container .info-item{display:flex;align-items:center;padding:8px 0;box-sizing:border-box}.info-container .info-item h3{margin:0}.info-container .info-item .item-heading{width:40%;min-width:80px;max-width:140px}.info-container .info-item .item-icon{width:20px;height:20px;font-size:20px;margin-left:8px}.author{padding:12px 0;display:flex}.author .author-image{margin-right:12px;height:44px;width:44px}\n"] }]
|
|
126
|
+
}], ctorParameters: function () { return [{ type: i1.ConfigurationsService }, { type: i1.UtilityService }, { type: i2.Router }, { type: i3.WidgetContentService }, { type: i1.MultilingualTranslationsService }]; }, propDecorators: { content: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], hasTocStructure: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], tocStructure: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], isPreviewMode: [{
|
|
133
|
+
type: Input
|
|
134
|
+
}], forPreview: [{
|
|
135
|
+
type: Input
|
|
136
|
+
}], askAuthorEnabled: [{
|
|
137
|
+
type: Input
|
|
138
|
+
}] } });
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLWJyaWVmLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9fY29sbGVjdGlvbi9fY29tbW9uL3BsYXllci1icmllZi9wbGF5ZXItYnJpZWYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vcGxheWVyLWJyaWVmL3BsYXllci1icmllZi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FBV3hELE1BQU0sT0FBTyxvQkFBb0I7SUFnQi9CLFlBQ1MsU0FBZ0MsRUFDL0IsVUFBMEIsRUFDMUIsTUFBYyxFQUNkLGdCQUFzQyxFQUN0QyxnQkFBaUQ7UUFKbEQsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQztRQW5CM0QsWUFBTyxHQUE4QixJQUFJLENBQUE7UUFFekMsb0JBQWUsR0FBRyxLQUFLLENBQUE7UUFFdkIsaUJBQVksR0FBUSxJQUFJLENBQUE7UUFFeEIsa0JBQWEsR0FBRyxLQUFLLENBQUE7UUFFckIsZUFBVSxHQUFHLEtBQUssQ0FBQTtRQUVsQixxQkFBZ0IsR0FBRyxLQUFLLENBQUE7UUFDeEIsY0FBUyxHQUFRLElBQUksQ0FBQTtRQUVyQixtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQVF0QiwwQkFBcUIsR0FBRyxLQUFLLENBQUE7UUFDN0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFBO1FBQ3pCLDBCQUFxQixHQUFHLEtBQUssQ0FBQTtJQUh6QixDQUFDO0lBS0wsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUU7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQzdFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1lBQ3JGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1NBQ3RGO0lBQ0gsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUNFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYztZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0I7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsNkJBQTZCO1lBQzNELElBQUksQ0FBQyxPQUFPO1lBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHlCQUF5QjtZQUN2RCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FDdEMsRUFDRDtZQUNBLE1BQU0sZUFBZSxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQTtZQUM3RCwyQ0FBMkM7WUFDM0MsSUFDRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUTtnQkFDekIsQ0FBQyxJQUFJLENBQUMscUJBQXFCO2dCQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQ3hGLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUN4QyxFQUNEO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxJQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSztnQkFDckIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCO2dCQUN2QiwwREFBMEQ7Z0JBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUNyRCxlQUFlLENBQUMsV0FBVyxFQUFFO2dCQUM3QiwwREFBMEQ7aUJBQzNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25EO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxJQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUztnQkFDekIsQ0FBQyxJQUFJLENBQUMscUJBQXFCO2dCQUMzQiwwREFBMEQ7Z0JBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLDZCQUE2QixDQUN6RCxlQUFlLENBQUMsV0FBVyxFQUFFO2dCQUM3QiwwREFBMEQ7aUJBQzNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25EO2dCQUNBLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFDRCxPQUFPLEtBQUssQ0FBQTtTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVU7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQWtDO1FBQzdDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDMUQsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDakQ7UUFDRCxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFDRCxZQUFZO1FBQ1YsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsbUJBQW1CLENBQUE7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUE7WUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUE7WUFFckIsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFBO1lBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQy9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtZQUVaLGtCQUFrQjtZQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUNoQztRQUVELGVBQWU7SUFDakIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxDQUFTO1FBQzVCLElBQUk7WUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2xDLE9BQU8sWUFBWSxDQUFBO1NBQ3BCO1FBQUMsTUFBTTtZQUNOLE9BQU8sRUFBRSxDQUFBO1NBQ1Y7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzlELENBQUM7K0dBcElVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGdRQ1hqQywwd2ZBMlBjOzs0RkRoUEQsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLHdCQUF3QjsrT0FNbEMsT0FBTztzQkFETixLQUFLO2dCQUdOLGVBQWU7c0JBRGQsS0FBSztnQkFHTixZQUFZO3NCQURYLEtBQUs7Z0JBR04sYUFBYTtzQkFEWixLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSztnQkFHTixnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOc0NvbnRlbnQgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvd2lkZ2V0LWNvbnRlbnQubW9kZWwnXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UsIE11bHRpbGluZ3VhbFRyYW5zbGF0aW9uc1NlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQHN1bmJpcmQtY2IvdXRpbHMtdjInXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBXaWRnZXRDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy93aWRnZXQtY29udGVudC5zZXJ2aWNlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtcGxheWVyLWJyaWVmJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BsYXllci1icmllZi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BsYXllci1icmllZi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQbGF5ZXJCcmllZkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpXG4gIGhhc1RvY1N0cnVjdHVyZSA9IGZhbHNlXG4gIEBJbnB1dCgpXG4gIHRvY1N0cnVjdHVyZTogYW55ID0gbnVsbFxuICBASW5wdXQoKVxuICBpc1ByZXZpZXdNb2RlID0gZmFsc2VcbiAgQElucHV0KClcbiAgZm9yUHJldmlldyA9IGZhbHNlXG4gIEBJbnB1dCgpXG4gIGFza0F1dGhvckVuYWJsZWQgPSBmYWxzZVxuICB0b2NDb25maWc6IGFueSA9IG51bGxcblxuICBzaG93TW9yZUdsYW5jZSA9IGZhbHNlXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjb25maWdTdmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHV0aWxpdHlTdmM6IFV0aWxpdHlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSB3aWRnZXRDb250ZW50U3ZjOiBXaWRnZXRDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGxhbmd0cmFuc2xhdGlvbnM6IE11bHRpbGluZ3VhbFRyYW5zbGF0aW9uc1NlcnZpY2UsXG4gICkgeyB9XG4gIGlzRG93bmxvYWRhYmxlRGVza3RvcCA9IGZhbHNlXG4gIGlzRG93bmxvYWRhYmxlSW9zID0gZmFsc2VcbiAgaXNEb3dubG9hZGFibGVBbmRyb2lkID0gZmFsc2VcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldFRvY0NvbmZpZygpXG4gICAgaWYgKHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcykge1xuICAgICAgdGhpcy5pc0Rvd25sb2FkYWJsZUlvcyA9IHRoaXMuY29uZmlnU3ZjLnJlc3RyaWN0ZWRGZWF0dXJlcy5oYXMoJ2lvc0Rvd25sb2FkJylcbiAgICAgIHRoaXMuaXNEb3dubG9hZGFibGVBbmRyb2lkID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnYW5kcm9pZERvd25sb2FkJylcbiAgICAgIHRoaXMuaXNEb3dubG9hZGFibGVEZXNrdG9wID0gdGhpcy5jb25maWdTdmMucmVzdHJpY3RlZEZlYXR1cmVzLmhhcygnZG93bmxvYWRSZXF1ZXN0JylcbiAgICB9XG4gIH1cblxuICBnZXQgaXNEb3dubG9hZGFibGUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcgJiZcbiAgICAgIHRoaXMuY29uZmlnU3ZjLmluc3RhbmNlQ29uZmlnLmlzRG93bmxvYWRhYmxlU291cmNlICYmXG4gICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZUFuZHJvaWRSZXNvdXJjZSAmJlxuICAgICAgdGhpcy5jb250ZW50ICYmXG4gICAgICB0aGlzLmNvbnRlbnQuc291cmNlTmFtZSAmJlxuICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVJb3NSZXNvdXJjZSAmJlxuICAgICAgT2JqZWN0LmtleXModGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVTb3VyY2UpLmluY2x1ZGVzKFxuICAgICAgICB0aGlzLmNvbnRlbnQuc291cmNlTmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgKVxuICAgICkge1xuICAgICAgY29uc3Qgc291cmNlU2hvcnROYW1lOiBzdHJpbmcgPSB0aGlzLmNvbnRlbnQuc291cmNlTmFtZSB8fCAnJ1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy51dGlsaXR5U3ZjLmlzTW9iaWxlICYmXG4gICAgICAgICF0aGlzLmlzRG93bmxvYWRhYmxlRGVza3RvcCAmJlxuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZVNvdXJjZVtzb3VyY2VTaG9ydE5hbWUudG9Mb3dlckNhc2UoKV0uaW5jbHVkZXMoXG4gICAgICAgICAgdGhpcy5jb250ZW50LnJlc291cmNlVHlwZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy51dGlsaXR5U3ZjLmlzSW9zICYmXG4gICAgICAgICF0aGlzLmlzRG93bmxvYWRhYmxlSW9zICYmXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcbiAgICAgICAgdGhpcy5jb25maWdTdmMuaW5zdGFuY2VDb25maWcuaXNEb3dubG9hZGFibGVJb3NSZXNvdXJjZVtcbiAgICAgICAgICBzb3VyY2VTaG9ydE5hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcbiAgICAgICAgXS5pbmNsdWRlcyh0aGlzLmNvbnRlbnQucmVzb3VyY2VUeXBlLnRvTG93ZXJDYXNlKCkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy51dGlsaXR5U3ZjLmlzQW5kcm9pZCAmJlxuICAgICAgICAhdGhpcy5pc0Rvd25sb2FkYWJsZUFuZHJvaWQgJiZcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiB0ZXItY29tcHV0ZWQtcHJvcGVydHktc3BhY2luZ1xuICAgICAgICB0aGlzLmNvbmZpZ1N2Yy5pbnN0YW5jZUNvbmZpZy5pc0Rvd25sb2FkYWJsZUFuZHJvaWRSZXNvdXJjZVtcbiAgICAgICAgICBzb3VyY2VTaG9ydE5hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogdGVyLWNvbXB1dGVkLXByb3BlcnR5LXNwYWNpbmdcbiAgICAgICAgXS5pbmNsdWRlcyh0aGlzLmNvbnRlbnQucmVzb3VyY2VUeXBlLnRvTG93ZXJDYXNlKCkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGdvVG9Db250ZW50KGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9hcHAvdG9jLyR7aWR9L292ZXJ2aWV3YF0pXG4gIH1cbiAgZ2V0Vmlld0NvdW50KGNvbnRlbnQ6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwpIHtcbiAgICBpZiAoY29udGVudCAmJiB0aGlzLmNvbmZpZ1N2Yy5yb290T3JnICYmIGNvbnRlbnQudmlld0NvdW50KSB7XG4gICAgICByZXR1cm4gY29udGVudC52aWV3Q291bnRbdGhpcy5jb25maWdTdmMucm9vdE9yZ11cbiAgICB9XG4gICAgcmV0dXJuIDBcbiAgfVxuICBnZXRUb2NDb25maWcoKSB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5jb25maWdTdmMuc2l0ZVBhdGh9L2ZlYXR1cmUvdG9jLmpzb25gXG4gICAgdGhpcy53aWRnZXRDb250ZW50U3ZjLmZldGNoQ29uZmlnKHVybCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy50b2NDb25maWcgPSBkYXRhXG4gICAgICB0aGlzLndpZGdldENvbnRlbnRTdmMudXBkYXRlVG9jQ29uZmlnKGRhdGEpXG4gICAgfSlcbiAgfVxuXG4gIGRvd25sb2FkKCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgIXRoaXMuZm9yUHJldmlldykge1xuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgbGluay5kb3dubG9hZCA9IHRoaXMuY29udGVudC5uYW1lXG4gICAgICBsaW5rLnRhcmdldCA9ICdfc2VsZidcblxuICAgICAgLy8gQ29uc3RydWN0IHRoZSBVUklcbiAgICAgIGxpbmsuaHJlZiA9IHRoaXMuY29udGVudC5hcnRpZmFjdFVybCB8fCAnJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKVxuICAgICAgbGluay5jbGljaygpXG5cbiAgICAgIC8vIENsZWFudXAgdGhlIERPTVxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgIH1cblxuICAgIC8vIGRlbGV0ZSBsaW5rO1xuICB9XG5cbiAgcHVibGljIHBhcnNlSnNvbkRhdGEoczogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZFN0cmluZyA9IEpTT04ucGFyc2UocylcbiAgICAgIHJldHVybiBwYXJzZWRTdHJpbmdcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfVxuXG4gIHRyYW5zbGF0ZUxhYmVscyhsYWJlbDogc3RyaW5nLCB0eXBlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5sYW5ndHJhbnNsYXRpb25zLnRyYW5zbGF0ZUxhYmVsKGxhYmVsLCB0eXBlLCAnJylcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1kOnB4LTJcIj5cbiAgPHdzLXdpZGdldC1tYXJrLWFzLWNvbXBsZXRlIFtmb3JQcmV2aWV3XT1cImZvclByZXZpZXdcIiBbY29udGVudF09XCJjb250ZW50XCI+PC93cy13aWRnZXQtbWFyay1hcy1jb21wbGV0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQgJiYgaXNEb3dubG9hZGFibGVcIj5cbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYi00XCI+XG4gICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImRvd25sb2FkKClcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsb3VkX2Rvd25sb2FkPC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJweC0yXCI+e3sgJ2FwcHRvY2hvbWUuZG93bmxvYWQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtY2FyZD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxtYXQtY2FyZCBjbGFzcz1cIndzLW1hdC1wcmltYXJ5LWxpdGUtYmFja2dyb3VuZC1vbi1kYXkgd3MtbWF0LXByaW1hcnktYm9yZGVyLXRvcC1ib2xkZXIgaW5mby1jb250YWluZXJcIj5cbiAgICA8aDIgPnt7ICdhcHB0b2Nob21lLmF0R2xhbmNlJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmRpc3BsYXlDb250ZW50VHlwZT8uZW5hYmxlZCAmJiBjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj5cbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5kaXNwbGF5Q29udGVudFR5cGU/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxuICAgICAgPHdzLXdpZGdldC1kaXNwbGF5LWNvbnRlbnQtdHlwZSAqbmdJZj1cImNvbnRlbnQ/LmNvbnRlbnRUeXBlICE9PSBjb250ZW50VHlwZXMuUkVTT1VSQ0VcIlxuICAgICAgICBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmQgbWF0LWJvZHktc3Ryb25nXCIgW2Rpc3BsYXlDb250ZW50VHlwZV09XCJjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj5cbiAgICAgIDwvd3Mtd2lkZ2V0LWRpc3BsYXktY29udGVudC10eXBlPlxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNvbnRlbnRUeXBlID09PSBjb250ZW50VHlwZXMuUkVTT1VSQ0VcIlxuICAgICAgICBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmQgbWF0LWJvZHktc3Ryb25nXCI+XG4gICAgICAgIHt7IGNvbnRlbnQ/LnJlc291cmNlVHlwZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmRpc3BsYXlDb250ZW50VHlwZT8uZW5hYmxlZCAmJiBjb250ZW50Py5kaXNwbGF5Q29udGVudFR5cGVcIj48L21hdC1kaXZpZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5jb21wbGV4aXR5TGV2ZWw/LmVuYWJsZWQgJiYgY29udGVudD8uY29tcGxleGl0eUxldmVsXCI+XG4gICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uY29tcGxleGl0eUxldmVsPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cbiAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cbiAgICAgICAge3sgY29udGVudD8uY29tcGxleGl0eUxldmVsIH19XG4gICAgICA8L2gzPlxuICAgIDwvZGl2PlxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5jb21wbGV4aXR5TGV2ZWw/LmVuYWJsZWQgJiYgY29udGVudD8uY29tcGxleGl0eUxldmVsXCI+PC9tYXQtZGl2aWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZHVyYXRpb24/LmVuYWJsZWQgJiYgY29udGVudD8uZHVyYXRpb25cIj5cbiAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5kdXJhdGlvbj8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgIHt7IGNvbnRlbnQ/LmR1cmF0aW9uIHwgcGlwZUR1cmF0aW9uVHJhbnNmb3JtOiAnaG1zJyB9fVxuICAgICAgPC9oMz5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uZHVyYXRpb24/LmVuYWJsZWQgJiYgY29udGVudD8uZHVyYXRpb25cIj48L21hdC1kaXZpZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5jb3N0Py5lbmFibGVkXCI+XG4gICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uY29zdD8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICA8aDMgKm5nSWY9XCJjb250ZW50Py5leGNsdXNpdmVDb250ZW50XCIgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+e3snYXBwdG9jaG9tZS5wYWlkQ29udGVudCcgfCB0cmFuc2xhdGV9fTwvaDM+XG4gICAgICA8aDMgKm5nSWY9XCIhY29udGVudD8uZXhjbHVzaXZlQ29udGVudFwiIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPnt7J2FwcHRvY2hvbWUuZnJlZScgfCB0cmFuc2xhdGV9fTwvaDM+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmNvc3Q/LmVuYWJsZWRcIj48L21hdC1kaXZpZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy52aWV3Q291bnQ/LmVuYWJsZWQgJiYgY29udGVudD8udmlld0NvdW50ICYmIGNvbmZpZ1N2Yz8ucm9vdE9yZ1wiPlxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnZpZXdDb3VudD8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgIHt7IGdldFZpZXdDb3VudChjb250ZW50KSB8IHBpcGVDb3VudFRyYW5zZm9ybSB9fVxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8udW5pcXVlTGVhcm5lcnNcIj5cbiAgICAgICAgICAoe3sgY29udGVudD8udW5pcXVlTGVhcm5lcnMgfCBwaXBlQ291bnRUcmFuc2Zvcm0gfX1cbiAgICAgICAgICA8bmctY29udGFpbmVyID5VbmlxdWUpPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9oMz5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8udmlld0NvdW50Py5lbmFibGVkICYmIGNvbnRlbnQ/LnZpZXdDb3VudCAmJiBjb25maWdTdmM/LnJvb3RPcmdcIj5cbiAgICA8L21hdC1kaXZpZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5zb3VyY2VTaG9ydE5hbWU/LmVuYWJsZWQgJiYgY29udGVudD8uc291cmNlU2hvcnROYW1lXCI+XG4gICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8uc291cmNlU2hvcnROYW1lPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cbiAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cbiAgICAgICAge3sgY29udGVudD8uc291cmNlU2hvcnROYW1lIH19XG4gICAgICA8L2gzPlxuICAgIDwvZGl2PlxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5zb3VyY2VTaG9ydE5hbWU/LmVuYWJsZWQgJiYgY29udGVudD8uc291cmNlU2hvcnROYW1lXCI+PC9tYXQtZGl2aWRlcj5cbiAgICA8IS0tIFN0cnVjdHVyZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcbiAgICAgICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnN0cnVjdHVyZT8uZW5hYmxlZCAmJiBoYXNUb2NTdHJ1Y3R1cmUgJiYgY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnN0cnVjdHVyZT8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LmNvdXJzZSA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8uY291cnNlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uY291cnNlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLmNvdXJzZTEnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5jb3Vyc2UgPiAxXCIgPiB7eydhcHB0b2Nob21lLmNvdXJzZXMxJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LmxlYXJuaW5nTW9kdWxlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPT09IDFcIiA+IHt7J2FwcHRvY2hvbWUubW9kdWxlJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ubGVhcm5pbmdNb2R1bGUgPiAxXCIgPiB7eydhcHB0b2Nob21lLm1vZHVsZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy52aWRlbyA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8udmlkZW8gfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy52aWRlbyA9PT0gMVwiID4ge3snYXBwdG9jaG9tZS52aWRlbycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnZpZGVvID4gMVwiID4ge3snYXBwdG9jaG9tZS52aWRlb3MnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uaW50ZXJhY3RpdmVWaWRlbyA9PT0gMVwiID5cbiAgICAgICAgICAgIHt7J3BsYXllcmJyaWVmLmludGVyYWN0aXZlVmlkZW8nIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5pbnRlcmFjdGl2ZVZpZGVvID4gMVwiID5cbiAgICAgICAgICAgIHt7J3BsYXllcmJyaWVmLmludGVyYWN0aXZlVmlkZW9zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ueW91dHViZSA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ueW91dHViZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnlvdXR1YmUgPT09IDFcIiA+IHt7J3BsYXllcmJyaWVmLnlvdXR1YmVWaWRlbycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnlvdXR1YmUgPiAxXCIgPiB7eydwbGF5ZXJicmllZi55b3V0dWJlVmlkZW9zJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucGRmID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5wZGYgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wZGYgPT09IDFcIiA+IHt7J2FwcHRvY2hvbWUucGRmJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucGRmID4gMVwiID4ge3snYXBwdG9jaG9tZS5wZGZzJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxoMyAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucG9kY2FzdCA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ucG9kY2FzdCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnBvZGNhc3QgPT09IDFcIiA+IHt7J3BsYXllcmJyaWVmLnBvZGNhc3QnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5wb2RjYXN0ID4gMVwiID4ge3sncGxheWVyYnJpZWYucG9kY2FzdHMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy53ZWJNb2R1bGUgPiAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LndlYk1vZHVsZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LndlYk1vZHVsZSA9PT0gMVwiID4ge3sncGxheWVyYnJpZWYud2ViTW9kdWxlJyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ud2ViTW9kdWxlID4gMVwiID4ge3sncGxheWVyYnJpZWYud2ViTW9kdWxlcycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2gzPlxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LndlYlBhZ2UgPiAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LndlYlBhZ2UgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy53ZWJQYWdlID09PSAxXCIgPiB7eydhcHB0b2Nob21lLndlYlBhZ2UnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy53ZWJQYWdlID4gMVwiID4ge3snYXBwdG9jaG9tZS53ZWJQYWdlcycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2gzPlxuICAgICAgICA8aDMgKm5nSWY9XCJ0b2NTdHJ1Y3R1cmU/LnF1aXogPiAwXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj57eyB0b2NTdHJ1Y3R1cmU/LnF1aXogfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5xdWl6ID09PSAxXCIgPiB7eydwbGF5ZXJicmllZi5xdWl6JyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8ucXVpeiA+IDFcIiA+IHt7J3BsYXllcmJyaWVmLnF1aXp6ZXMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy5hc3Nlc3NtZW50ID4gMFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+e3sgdG9jU3RydWN0dXJlPy5hc3Nlc3NtZW50IH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uYXNzZXNzbWVudCA9PT0gMVwiID4ge3snYXBwdG9jaG9tZS5hc3Nlc3NtZW50JyB8IHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvY1N0cnVjdHVyZT8uYXNzZXNzbWVudCA+IDFcIiA+IHt7J2FwcHRvY2hvbWUuYXNzZXNzbWVudHMnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPGgzICpuZ0lmPVwidG9jU3RydWN0dXJlPy5vdGhlciA+IDBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyPnt7IHRvY1N0cnVjdHVyZT8ub3RoZXIgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5vdGhlciA9PT0gMVwiID4ge3snYXBwdG9jaG9tZS5vdGhlckl0ZW0nIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9jU3RydWN0dXJlPy5vdGhlciA+IDFcIiA+IHt7J2FwcHRvY2hvbWUub3RoZXJJdGVtcycgfCB0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnN0cnVjdHVyZT8uZW5hYmxlZCAmJiBoYXNUb2NTdHJ1Y3R1cmUgJiYgY29udGVudD8uY2hpbGRyZW4/Lmxlbmd0aFwiPlxuICAgIDwvbWF0LWRpdmlkZXI+XG4gICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/Lmxhc3RVcGRhdGVkT24/LmVuYWJsZWQgJiYgY29udGVudD8ubGFzdFVwZGF0ZWRPblwiPlxuICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/Lmxhc3RVcGRhdGVkT24/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxuICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxuICAgICAgICB7eyBjb250ZW50Py5sYXN0VXBkYXRlZE9uIHwgZGF0ZSB9fVxuICAgICAgPC9oMz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd01vcmVHbGFuY2VcIj5cbiAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sYXN0VXBkYXRlZE9uPy5lbmFibGVkICYmIGNvbnRlbnQ/Lmxhc3RVcGRhdGVkT25cIj48L21hdC1kaXZpZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImluZm8taXRlbVwiXG4gICAgICAgICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmV4cGlyeURhdGU/LmVuYWJsZWQgJiYgY29udGVudD8uZXhwaXJ5RGF0ZSAmJiBjb250ZW50Py5leHBpcnlEYXRlPy5zdGFydHNXaXRoKCcyMCcpXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5leHBpcnlEYXRlPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cbiAgICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxuICAgICAgICAgIHt7IGNvbnRlbnQ/LmV4cGlyeURhdGUgfCBkYXRlIH19XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtZGl2aWRlclxuICAgICAgICAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5leHBpcnlEYXRlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmV4cGlyeURhdGUgJiYgY29udGVudD8uZXhwaXJ5RGF0ZT8uc3RhcnRzV2l0aCgnMjAnKVwiPlxuICAgICAgPC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sZWFybmluZ01vZGU/LmVuYWJsZWQgJiYgY29udGVudD8ubGVhcm5pbmdNb2RlXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3sgdHJhbnNsYXRlTGFiZWxzKHRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sZWFybmluZ01vZGU/LmRpc3BsYXlOYW1lLCAnYXBwdG9jJykgfX08L2gzPlxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgICAge3sgY29udGVudD8ubGVhcm5pbmdNb2RlIH19XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5sZWFybmluZ01vZGU/LmVuYWJsZWQgJiYgY29udGVudD8ubGVhcm5pbmdNb2RlXCI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5yZWdpb24/LmVuYWJsZWQgJiYgY29udGVudD8ucmVnaW9uPy5sZW5ndGhcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57eyB0cmFuc2xhdGVMYWJlbHModG9jQ29uZmlnPy5hdEFHbGFuY2U/LnJlZ2lvbj8uZGlzcGxheU5hbWUsICdhcHB0b2MnKSB9fTwvaDM+XG4gICAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cbiAgICAgICAgICB7eyBjb250ZW50Py5yZWdpb24gfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LnJlZ2lvbj8uZW5hYmxlZCAmJiBjb250ZW50Py5yZWdpb24/Lmxlbmd0aFwiPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmxvY2FsZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJpdGVtLWhlYWRpbmcgd3MtbWF0LXByaW1hcnktdGV4dFwiPnt7IHRyYW5zbGF0ZUxhYmVscyh0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5kaXNwbGF5TmFtZSwgJ2FwcHRvYycpIH19PC9oMz5cbiAgICAgICAgPGgzIGNsYXNzPVwid3MtbWF0LWFjY2VudC10ZXh0IHdpZHRoLWV4cGFuZFwiPlxuICAgICAgICAgIHt7IGNvbnRlbnQ/LmxvY2FsZSB8IHVwcGVyY2FzZSB9fVxuICAgICAgICA8L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LWRpdmlkZXIgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8ubG9jYWxlPy5lbmFibGVkICYmIGNvbnRlbnQ/LmxvY2FsZVwiPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcbiAgICAgICAgKm5nSWY9XCJ0b2NDb25maWc/LmF0QUdsYW5jZT8uaGFzVHJhbnNsYXRpb25zPy5lbmFibGVkICYmIChjb250ZW50Py5oYXNUcmFuc2xhdGlvbnM/Lmxlbmd0aCB8fCBjb250ZW50Py5pc1RyYW5zbGF0aW9uT2Y/Lmxlbmd0aClcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57e3RvY0NvbmZpZz8uYXRBR2xhbmNlPy5oYXNUcmFuc2xhdGlvbnM/LmRpc3BsYXlOYW1lfX08L2gzPlxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJnb1RvQ29udGVudCh0cmFucz8uaWRlbnRpZmllcilcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHRyYW5zIG9mIGNvbnRlbnQ/Lmhhc1RyYW5zbGF0aW9ucyB8fCBjb250ZW50Py5pc1RyYW5zbGF0aW9uT2ZcIj57eyB0cmFucy5sb2NhbGUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxtYXQtZGl2aWRlclxuICAgICAgICAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5oYXNUcmFuc2xhdGlvbnM/LmVuYWJsZWQgJiYgKGNvbnRlbnQ/Lmhhc1RyYW5zbGF0aW9ucz8ubGVuZ3RoIHx8IGNvbnRlbnQ/LmlzVHJhbnNsYXRpb25PZj8ubGVuZ3RoKVwiPlxuICAgICAgPC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWl0ZW1cIiAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5rZXl3b3Jkcz8uZW5hYmxlZCAmJiBjb250ZW50Py5rZXl3b3Jkcz8ubGVuZ3RoXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIml0ZW0taGVhZGluZyB3cy1tYXQtcHJpbWFyeS10ZXh0XCI+e3t0b2NDb25maWc/LmF0QUdsYW5jZT8ua2V5d29yZHM/LmRpc3BsYXlOYW1lfX08L2gzPlxuICAgICAgICA8aDMgY2xhc3M9XCJ3cy1tYXQtYWNjZW50LXRleHQgd2lkdGgtZXhwYW5kXCI+XG4gICAgICAgICAge3sgY29udGVudD8ua2V5d29yZHM/LmpvaW4oJywgJykgfX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwidG9jQ29uZmlnPy5hdEFHbGFuY2U/LmtleXdvcmRzPy5lbmFibGVkICYmIGNvbnRlbnQ/LmtleXdvcmRzPy5sZW5ndGhcIj48L21hdC1kaXZpZGVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb250ZW50Py5jb2xsZWN0aW9uc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCJcbiAgICAgICAgICAqbmdJZj1cInRvY0NvbmZpZz8uYXRBR2xhbmNlPy5jdXJhdGVkSW5LQj8uZW5hYmxlZCAmJiBpdGVtLmNvbnRlbnRUeXBlID09PSAnS25vd2xlZGdlIEJvYXJkJyAmJiBpdGVtLnN0YXR1cyA9PT0gJ0xpdmUnXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwiaXRlbS1oZWFkaW5nIHdzLW1hdC1wcmltYXJ5LXRleHRcIj57e3RvY0NvbmZpZz8uYXRBR2xhbmNlPy5jdXJhdGVkSW5LQj8uZGlzcGxheU5hbWV9fTwvaDM+XG4gICAgICAgICAgPG1hdC1jaGlwLWxpc3Q+XG4gICAgICAgICAgICA8bWF0LWNoaXA+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cIndzLW1hdC1hY2NlbnQtdGV4dCB3aWR0aC1leHBhbmRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jb250ZW50VHlwZSA9PT0gJ0tub3dsZWRnZSBCb2FyZCcgJiYgaXRlbS5zdGF0dXMgPT09ICdMaXZlJ1wiPlxuICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiJy9hcHAvdG9jLycgKyBpdGVtLmlkZW50aWZpZXIgKyAnL292ZXJ2aWV3P3ByaW1hcnlDYXRlZ29yeT0nKyBpdGVtLnByaW1hcnlDYXRlZ29yeSBcIj4ge3tcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lIH19IDwvYT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDwvbWF0LWNoaXA+XG4gICAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHQgbXQtMlwiPlxuICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzaG93TW9yZUdsYW5jZSA9ICFzaG93TW9yZUdsYW5jZVwiPlxuICAgICAgICA8bWF0LWljb24+e3sgIXNob3dNb3JlR2xhbmNlID8gJ2Fycm93X2Ryb3BfZG93bicgOiAnYXJyb3dfZHJvcF91cCcgfX08L21hdC1pY29uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dNb3JlR2xhbmNlXCI+e3sncGxheWVyYnJpZWYuc2hvd01vcmUnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dNb3JlR2xhbmNlXCI+e3sncGxheWVyYnJpZWYuc2hvd0xlc3MnIHwgdHJhbnNsYXRlfX08L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1jYXJkPlxuICA8IS0tIDx3cy13aWRnZXQtdXNlci1jb250ZW50LXJhdGluZyBjbGFzcz1cIm1iLTQgYmxvY2tcIiAqbmdJZj1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIiBbY29udGVudElkXT1cImNvbnRlbnQ/LmlkZW50aWZpZXJcIlxuICAgIFtpc0Rpc2FibGVkXT1cImlzUHJldmlld01vZGVcIiBbZm9yUHJldmlld109XCJmb3JQcmV2aWV3XCI+XG4gIDwvd3Mtd2lkZ2V0LXVzZXItY29udGVudC1yYXRpbmc+IC0tPlxuICA8ZGl2IGNsYXNzPVwiaGlkZGVuIHNtOmJsb2NrIG1hcmdpbi1ib3R0b20tbVwiICpuZ0lmPVwiY29udGVudD8uY3JlYXRvckRldGFpbHM/Lmxlbmd0aFwiPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3JlYXRvcnNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICBhdXRob3JzOiBjb250ZW50Py5jcmVhdG9yRGV0YWlscyxcbiAgICAgICAgdGl0bGU6ICdBVVRIT1InXG4gICAgICB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaGlkZGVuIHNtOmJsb2NrIG1hcmdpbi1ib3R0b20tbVwiICpuZ0lmPVwiY29udGVudD8uY3JlYXRvckNvbnRhY3RzPy5sZW5ndGhcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyZWF0b3JzXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgYXV0aG9yczogY29udGVudD8uY3JlYXRvckNvbnRhY3RzLFxuICAgICAgICB0aXRsZTogJ0NPTlRBQ1QnXG4gICAgICB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY3JlYXRvcnMgbGV0LWF1dGhvcnM9XCJhdXRob3JzXCIgbGV0LXRpdGxlPVwidGl0bGVcIj5cbiAgPG1hdC1jYXJkPlxuICAgIDxoMiAqbmdJZj1cInRpdGxlID09PSAnQVVUSE9SJ1wiPnt7J3BsYXllcmJyaWVmLmF1dGhvcnMnIHwgdHJhbnNsYXRlfX08L2gyPlxuICAgIDxoMiAqbmdJZj1cInRpdGxlID09PSAnQ09OVEFDVCdcIj57eydwbGF5ZXJicmllZi5jdXJhdG9yY29udGFjdCcgfCB0cmFuc2xhdGV9fTwvaDI+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYXV0aG9yIG9mIHBhcnNlSnNvbkRhdGEoYXV0aG9ycylcIiBjbGFzcz1cImF1dGhvclwiPlxuICAgICAgPHdzLXdpZGdldC11c2VyLWltYWdlIGNsYXNzPVwiYXV0aG9yLWltYWdlXCIgW2ltYWdlVHlwZV09XCInbmFtZS1pbml0aWFsJ1wiIFt1c2VyTmFtZV09XCJhdXRob3IubmFtZSB8fCAnJ1wiXG4gICAgICAgIFtlbWFpbF09XCJhdXRob3IuZW1haWxcIj48L3dzLXdpZGdldC11c2VyLWltYWdlPlxuICAgICAgPGRpdiBjbGFzcz1cIndpZHRoLWV4cGFuZCBmbGV4IGZsZXgtbWlkZGxlIGZsZXgtYmV0d2VlblwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlXCI+e3sgYXV0aG9yLm5hbWUgfX08L2gzPlxuICAgICAgICA8d3Mtd2lkZ2V0LWJ0bi1tYWlsLXVzZXIgKm5nSWY9XCJhc2tBdXRob3JFbmFibGVkXCIgW3dpZGdldERhdGFdPVwieyBjb250ZW50OiBjb250ZW50LCBlbWFpbHM6IFthdXRob3IuZW1haWxdIH1cIj5cbiAgICAgICAgPC93cy13aWRnZXQtYnRuLW1haWwtdXNlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L21hdC1jYXJkPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|