@sunbird-cb/toc 0.0.12 → 0.0.13-mauritius
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_collection/_common/ai-tutor/ai-tutor.component.mjs +1169 -0
- package/esm2022/lib/_collection/_common/ai-tutor/socket.service.mjs +121 -0
- package/esm2022/lib/_collection/_common/card-competency/card-competency.component.mjs +58 -0
- package/esm2022/lib/_collection/_common/card-competency/card-competency.module.mjs +22 -0
- package/esm2022/lib/_collection/_common/card-content-v2/card-content-v2.model.mjs +23 -0
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +115 -12
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +5 -1
- package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +3 -3
- package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +32 -12
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +45 -13
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +85 -74
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +25 -37
- package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +7 -2
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +70 -3
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +3 -3
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +6 -3
- package/esm2022/lib/_services/viewer-route-util.mjs +2 -2
- package/esm2022/lib/_services/widget-content.model.mjs +8 -1
- package/esm2022/lib/_services/widget-content.service.mjs +8 -8
- package/esm2022/lib/app-toc-lib.module.mjs +16 -7
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +55 -8
- package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +3 -3
- package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +3 -3
- package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +7 -6
- package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +155 -70
- package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +22 -6
- package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +5 -3
- package/esm2022/lib/models/user-profile.model.mjs +1 -1
- package/esm2022/lib/registration-toc-lib.config.mjs +14 -0
- package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +1 -1
- package/esm2022/lib/services/app-toc-v2.service.mjs +103 -58
- package/esm2022/lib/services/app-toc.service.mjs +103 -242
- package/esm2022/lib/services/certificate.service.mjs +54 -9
- package/esm2022/lib/services/discuss-utils.service.mjs +30 -43
- package/esm2022/lib/services/netcore.service.mjs +116 -46
- package/esm2022/lib/services/nps-grid.service.mjs +34 -22
- package/esm2022/lib/services/otp.service.mjs +63 -25
- package/esm2022/lib/services/profile-v2.service.mjs +47 -19
- package/esm2022/lib/services/root.service.mjs +106 -0
- package/esm2022/lib/services/user-profile.service.mjs +160 -35
- package/esm2022/lib/services/viewer-data.service.mjs +1 -1
- package/esm2022/lib/services/viewer-util.service.mjs +62 -34
- package/esm2022/public-api.mjs +9 -1
- package/fesm2022/sunbird-cb-toc.mjs +9150 -7079
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/index.d.ts +0 -1
- package/lib/_collection/_common/ai-tutor/ai-tutor.component.d.ts +139 -0
- package/lib/_collection/_common/ai-tutor/socket.service.d.ts +19 -0
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +0 -1
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +0 -1
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +0 -1
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +0 -1
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +0 -1
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +0 -1
- package/lib/_collection/_common/card-competency/card-competency.component.d.ts +14 -0
- package/lib/_collection/_common/card-competency/card-competency.module.d.ts +8 -0
- package/lib/_collection/_common/card-content-v2/card-content-v2.model.d.ts +44 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +11 -3
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +12 -12
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +0 -1
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +0 -1
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +0 -1
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts +0 -1
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts +0 -1
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +0 -1
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts +0 -1
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts +0 -1
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +0 -1
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +0 -1
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +1 -2
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +7 -4
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +11 -4
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +0 -1
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +0 -1
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts +6 -4
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts +29 -29
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +4 -2
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +0 -1
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +0 -1
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +0 -1
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +0 -1
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +0 -1
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +0 -1
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +0 -1
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +0 -1
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +0 -1
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +0 -1
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +0 -1
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts +0 -1
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts +0 -1
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +0 -1
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +0 -1
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +0 -1
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +0 -1
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +0 -1
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +0 -1
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +0 -1
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +0 -1
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +0 -1
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +0 -1
- package/lib/_collection/_common/user-image/user-image.component.d.ts +0 -1
- package/lib/_collection/_common/user-image/user-image.module.d.ts +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +0 -1
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +0 -1
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +2 -2
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +0 -1
- package/lib/_collection-api.d.ts +0 -1
- package/lib/_constants/widget-content.constants.d.ts +0 -1
- package/lib/_directives/tooltip.directive.d.ts +0 -1
- package/lib/_models/common.model.d.ts +0 -1
- package/lib/_models/error.model.d.ts +0 -1
- package/lib/_pipes/highlight.pipe.d.ts +0 -1
- package/lib/_services/rating.service.d.ts +0 -1
- package/lib/_services/samuhik-charcha.service.d.ts +0 -1
- package/lib/_services/viewer-route-util.d.ts +0 -1
- package/lib/_services/widget-content.model.d.ts +6 -1
- package/lib/_services/widget-content.service.d.ts +0 -1
- package/lib/_shared/translate-loader.factory.d.ts +0 -1
- package/lib/app-toc-lib.module.d.ts +2 -2
- package/lib/collection.config.d.ts +0 -1
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +0 -1
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +0 -1
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +5 -1
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +0 -1
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +0 -1
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +0 -1
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +0 -1
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +0 -1
- package/lib/components/app-toc-home/app-toc-home.component.d.ts +3 -3
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +7 -4
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +0 -1
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +0 -1
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +0 -1
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +0 -1
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +0 -1
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +0 -1
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +0 -1
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +2 -1
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +0 -1
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +0 -1
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +0 -1
- package/lib/components/public-survey-form/public-survey-form.component.d.ts +1 -1
- package/lib/components/survey-form-question/survey-form-question.component.d.ts +0 -1
- package/lib/components/survey-form-section/survey-form-section.component.d.ts +0 -1
- package/lib/models/app-toc-analytics.model.d.ts +0 -1
- package/lib/models/app-toc.model.d.ts +0 -1
- package/lib/models/auto-complete.model.d.ts +0 -1
- package/lib/models/card-content.model.d.ts +0 -1
- package/lib/models/content-strip-with-tabs.model.d.ts +0 -1
- package/lib/models/discussion-forum.model.d.ts +0 -1
- package/lib/models/goal.model.d.ts +0 -1
- package/lib/models/meta-tag.model.d.ts +0 -1
- package/lib/models/playlist.model.d.ts +0 -1
- package/lib/models/profile-revamp.model.d.ts +0 -1
- package/lib/models/rating.model.d.ts +0 -1
- package/lib/models/user-profile.model.d.ts +87 -1
- package/lib/registration-toc-lib.config.d.ts +4 -0
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts +0 -1
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +0 -1
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +0 -1
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +0 -1
- package/lib/resolvers/app-toc-resolver.service.d.ts +0 -1
- package/lib/resolvers/config-resolver.service.d.ts +0 -1
- package/lib/resolvers/profile-resolver.service.d.ts +0 -1
- package/lib/resolvers/restricted-features-resolver.service.d.ts +0 -1
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts +0 -1
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +0 -1
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts +0 -1
- package/lib/services/access-control.service.d.ts +0 -1
- package/lib/services/action.service.d.ts +0 -1
- package/lib/services/app-toc-v2.service.d.ts +1 -1
- package/lib/services/app-toc.service.d.ts +3 -55
- package/lib/services/certificate.service.d.ts +5 -7
- package/lib/services/discuss-utils.service.d.ts +5 -28
- package/lib/services/editor.service.d.ts +0 -1
- package/lib/services/load-check.service.d.ts +0 -1
- package/lib/services/loader.service.d.ts +0 -1
- package/lib/services/mobile-apps.service.d.ts +0 -1
- package/lib/services/netcore.service.d.ts +16 -29
- package/lib/services/nps-grid.service.d.ts +11 -11
- package/lib/services/otp.service.d.ts +5 -11
- package/lib/services/profile-v2.service.d.ts +7 -11
- package/lib/services/reset-ratings.service.d.ts +0 -1
- package/lib/services/resource-download-helper.service.d.ts +0 -1
- package/lib/services/root.service.d.ts +26 -0
- package/lib/services/timer.service.d.ts +0 -1
- package/lib/services/title-tag.service.d.ts +0 -1
- package/lib/services/user-profile.service.d.ts +35 -16
- package/lib/services/viewer-data.service.d.ts +9 -6
- package/lib/services/viewer-util.service.d.ts +0 -1
- package/lib/share-toc/share-toc/share-toc.component.d.ts +0 -1
- package/lib/share-toc/share-toc.module.d.ts +0 -1
- package/package.json +3 -3
- package/public-api.d.ts +7 -1
- package/sunbird-cb-toc-0.0.13-mauritius.tgz +0 -0
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +0 -1
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +0 -1
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +0 -1
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +0 -1
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +0 -1
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +0 -1
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +0 -1
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +0 -1
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +0 -1
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +0 -1
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +0 -1
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +0 -1
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +0 -1
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +0 -1
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +0 -1
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +0 -1
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +0 -1
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +0 -1
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +0 -1
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +0 -1
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +0 -1
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +0 -1
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +0 -1
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +0 -1
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +0 -1
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +0 -1
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +0 -1
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +0 -1
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +0 -1
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +0 -1
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +0 -1
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +0 -1
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +0 -1
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +0 -1
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +0 -1
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +0 -1
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +0 -1
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +0 -1
- package/lib/_collection/_common/user-image/user-image.component.d.ts.map +0 -1
- package/lib/_collection/_common/user-image/user-image.module.d.ts.map +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +0 -1
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +0 -1
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +0 -1
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +0 -1
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +0 -1
- package/lib/_collection-api.d.ts.map +0 -1
- package/lib/_constants/widget-content.constants.d.ts.map +0 -1
- package/lib/_directives/tooltip.directive.d.ts.map +0 -1
- package/lib/_models/common.model.d.ts.map +0 -1
- package/lib/_models/error.model.d.ts.map +0 -1
- package/lib/_pipes/highlight.pipe.d.ts.map +0 -1
- package/lib/_services/rating.service.d.ts.map +0 -1
- package/lib/_services/samuhik-charcha.service.d.ts.map +0 -1
- package/lib/_services/viewer-route-util.d.ts.map +0 -1
- package/lib/_services/widget-content.model.d.ts.map +0 -1
- package/lib/_services/widget-content.service.d.ts.map +0 -1
- package/lib/_shared/translate-loader.factory.d.ts.map +0 -1
- package/lib/app-toc-lib.module.d.ts.map +0 -1
- package/lib/collection.config.d.ts.map +0 -1
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +0 -1
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +0 -1
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +0 -1
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +0 -1
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +0 -1
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +0 -1
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +0 -1
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +0 -1
- package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +0 -1
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +0 -1
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +0 -1
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +0 -1
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +0 -1
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +0 -1
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +0 -1
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +0 -1
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +0 -1
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +0 -1
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +0 -1
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +0 -1
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +0 -1
- package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +0 -1
- package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +0 -1
- package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +0 -1
- package/lib/models/app-toc-analytics.model.d.ts.map +0 -1
- package/lib/models/app-toc.model.d.ts.map +0 -1
- package/lib/models/auto-complete.model.d.ts.map +0 -1
- package/lib/models/card-content.model.d.ts.map +0 -1
- package/lib/models/content-strip-with-tabs.model.d.ts.map +0 -1
- package/lib/models/discussion-forum.model.d.ts.map +0 -1
- package/lib/models/goal.model.d.ts.map +0 -1
- package/lib/models/meta-tag.model.d.ts.map +0 -1
- package/lib/models/playlist.model.d.ts.map +0 -1
- package/lib/models/profile-revamp.model.d.ts.map +0 -1
- package/lib/models/rating.model.d.ts.map +0 -1
- package/lib/models/user-profile.model.d.ts.map +0 -1
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/app-toc-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/config-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/profile-resolver.service.d.ts.map +0 -1
- package/lib/resolvers/restricted-features-resolver.service.d.ts.map +0 -1
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +0 -1
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +0 -1
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +0 -1
- package/lib/services/access-control.service.d.ts.map +0 -1
- package/lib/services/action.service.d.ts.map +0 -1
- package/lib/services/app-toc-v2.service.d.ts.map +0 -1
- package/lib/services/app-toc.service.d.ts.map +0 -1
- package/lib/services/certificate.service.d.ts.map +0 -1
- package/lib/services/discuss-utils.service.d.ts.map +0 -1
- package/lib/services/editor.service.d.ts.map +0 -1
- package/lib/services/load-check.service.d.ts.map +0 -1
- package/lib/services/loader.service.d.ts.map +0 -1
- package/lib/services/mobile-apps.service.d.ts.map +0 -1
- package/lib/services/netcore.service.d.ts.map +0 -1
- package/lib/services/nps-grid.service.d.ts.map +0 -1
- package/lib/services/otp.service.d.ts.map +0 -1
- package/lib/services/profile-v2.service.d.ts.map +0 -1
- package/lib/services/reset-ratings.service.d.ts.map +0 -1
- package/lib/services/resource-download-helper.service.d.ts.map +0 -1
- package/lib/services/timer.service.d.ts.map +0 -1
- package/lib/services/title-tag.service.d.ts.map +0 -1
- package/lib/services/user-profile.service.d.ts.map +0 -1
- package/lib/services/viewer-data.service.d.ts.map +0 -1
- package/lib/services/viewer-util.service.d.ts.map +0 -1
- package/lib/share-toc/share-toc/share-toc.component.d.ts.map +0 -1
- package/lib/share-toc/share-toc.module.d.ts.map +0 -1
- package/public-api.d.ts.map +0 -1
- package/sunbird-cb-toc.d.ts.map +0 -1
|
@@ -97,6 +97,8 @@ export class EnrollProfileFormComponent {
|
|
|
97
97
|
this.showDoptChanges = false;
|
|
98
98
|
this.verifyEmail = false;
|
|
99
99
|
this.approvedDomainList = [];
|
|
100
|
+
this.verifiedEmailOtp = '';
|
|
101
|
+
this.verifiedPhoneOtp = '';
|
|
100
102
|
this.currentDate = new Date();
|
|
101
103
|
this.openDesignationDropdown = false;
|
|
102
104
|
this.openLanguageDropdown = false;
|
|
@@ -413,6 +415,7 @@ export class EnrollProfileFormComponent {
|
|
|
413
415
|
this.eVerified = true;
|
|
414
416
|
this.emailOtpSent = false;
|
|
415
417
|
this.contextToken = _res.result.contextToken;
|
|
418
|
+
this.verifiedEmailOtp = this.emailOtpForm.controls['eOtp'].value;
|
|
416
419
|
this.emailOtpForm.reset();
|
|
417
420
|
}, (error) => {
|
|
418
421
|
if (!error.ok) {
|
|
@@ -428,6 +431,7 @@ export class EnrollProfileFormComponent {
|
|
|
428
431
|
this.verifyMobile = true;
|
|
429
432
|
this.mVerified = true;
|
|
430
433
|
this.otpSent = false;
|
|
434
|
+
this.verifiedPhoneOtp = this.otpForm.controls['otp'].value;
|
|
431
435
|
this.otpForm.reset();
|
|
432
436
|
}, (error) => {
|
|
433
437
|
if (!error.ok) {
|
|
@@ -535,8 +539,11 @@ export class EnrollProfileFormComponent {
|
|
|
535
539
|
this.addLoader = this.addLoader + 1;
|
|
536
540
|
this.profileV2Svc.fetchCadre().subscribe((response) => {
|
|
537
541
|
this.addLoader = this.addLoader - 1;
|
|
538
|
-
|
|
539
|
-
|
|
542
|
+
const value = response && response.result && response.result.response && response.result.response.value;
|
|
543
|
+
if (value && value.civilServiceType) {
|
|
544
|
+
this.civilServiceData = value.civilServiceType;
|
|
545
|
+
this.civilServiceTypes = this.civilServiceData.civilServiceTypeList.map((service) => service.name);
|
|
546
|
+
}
|
|
540
547
|
});
|
|
541
548
|
}
|
|
542
549
|
getIsCadreStatus(value) {
|
|
@@ -753,7 +760,6 @@ export class EnrollProfileFormComponent {
|
|
|
753
760
|
if (this.batchDetails.batchAttributes.userProfileFileds &&
|
|
754
761
|
this.batchDetails.batchAttributes.bpEnrolMandatoryProfileFields) {
|
|
755
762
|
let customAttr = this.batchDetails.batchAttributes.bpEnrolMandatoryProfileFields;
|
|
756
|
-
console.log("customAttr ", customAttr);
|
|
757
763
|
if (this.findAttr(customAttr, 'name')) {
|
|
758
764
|
this.canShowName = true;
|
|
759
765
|
this.showname = true;
|
|
@@ -1317,6 +1323,12 @@ export class EnrollProfileFormComponent {
|
|
|
1317
1323
|
}
|
|
1318
1324
|
}
|
|
1319
1325
|
submitProfile(payload) {
|
|
1326
|
+
if (this.eVerified && this.verifiedEmailOtp) {
|
|
1327
|
+
payload['request']['emailOtp'] = this.verifiedEmailOtp;
|
|
1328
|
+
}
|
|
1329
|
+
if (this.mVerified && this.verifiedPhoneOtp) {
|
|
1330
|
+
payload['request']['phoneOtp'] = this.verifiedPhoneOtp;
|
|
1331
|
+
}
|
|
1320
1332
|
if (payload && payload['request'] && payload['request']['profileDetails'] && payload['request']['profileDetails']['personalDetails'] && payload['request']['profileDetails']['personalDetails']['dob']) {
|
|
1321
1333
|
let dobFormat = payload['request']['profileDetails']['personalDetails']['dob'];
|
|
1322
1334
|
let dob = `${new Date(dobFormat).getDate()}-${new Date(dobFormat).getMonth() + 1}-${new Date(dobFormat).getFullYear()}`;
|
|
@@ -1333,9 +1345,12 @@ export class EnrollProfileFormComponent {
|
|
|
1333
1345
|
this.addLoader = this.addLoader - 1;
|
|
1334
1346
|
/* tslint:disable */
|
|
1335
1347
|
console.log(error);
|
|
1336
|
-
this.snackBar.open("
|
|
1348
|
+
this.snackBar.open(error?.error?.params?.errmsg || "Something went wrong!");
|
|
1337
1349
|
});
|
|
1338
1350
|
}
|
|
1351
|
+
else {
|
|
1352
|
+
this.submitSurevy(true);
|
|
1353
|
+
}
|
|
1339
1354
|
}
|
|
1340
1355
|
submitSurevy(status) {
|
|
1341
1356
|
let surevyPayload = {
|
|
@@ -1783,8 +1798,9 @@ export class EnrollProfileFormComponent {
|
|
|
1783
1798
|
const searchDesignationControl = this.userDetailsForm.get('designation');
|
|
1784
1799
|
const currentDesignation = searchDesignationControl ? searchDesignationControl.value : '';
|
|
1785
1800
|
// Check if current designation exists in the list
|
|
1801
|
+
const designationdata = currentDesignation?.designation ? currentDesignation.designation : currentDesignation;
|
|
1786
1802
|
if (currentDesignation) {
|
|
1787
|
-
const designationExists = this.designationsMeta.some((designation) => designation.name.toLowerCase() ===
|
|
1803
|
+
const designationExists = this.designationsMeta.some((designation) => designation.name.toLowerCase() === designationdata?.toLowerCase());
|
|
1788
1804
|
// If designation doesn't exist in the list, add it
|
|
1789
1805
|
if (!designationExists) {
|
|
1790
1806
|
// Create a new designation object to match the structure of other items
|
|
@@ -1835,4 +1851,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1835
1851
|
type: HostListener,
|
|
1836
1852
|
args: ['document:click', ['$event']]
|
|
1837
1853
|
}] } });
|
|
1838
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5yb2xsLXByb2ZpbGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvY29tcG9uZW50cy9lbnJvbGwtcHJvZmlsZS1mb3JtL2Vucm9sbC1wcm9maWxlLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvZW5yb2xsLXByb2ZpbGUtZm9ybS9lbnJvbGwtcHJvZmlsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUt0RSxPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBRS9ILG9CQUFvQjtBQUNwQixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLdEIsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUE7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQTtBQUMxQyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUE7QUFDckMsb0JBQW9CO0FBQ3BCLE1BQU0sYUFBYSxHQUFHLHFIQUFxSCxDQUFB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IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFVzZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXItcHJvZmlsZS5zZXJ2aWNlJ1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE5zVXNlclByb2ZpbGVEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXItcHJvZmlsZS5tb2RlbCdcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsgUHJvZmlsZVYyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2ZpbGUtdjIuc2VydmljZSdcbmltcG9ydCB7IE90cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vdHAuc2VydmljZSdcbmltcG9ydCB7IE5QU0dyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbnBzLWdyaWQuc2VydmljZSdcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYsIE1BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcbmltcG9ydCB7IE1hdExlZ2FjeVNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNuYWNrLWJhcidcbi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbi8vIGltcG9ydCB7IFNpZ251cFNlcnZpY2UgfSBmcm9tICdzcmMvYXBwL3JvdXRlcy9wdWJsaWMvcHVibGljLXNpZ251cC9zaWdudXAuc2VydmljZSdcbmltcG9ydCB7IGRlc2lnbmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb2ZpbGUtcmV2YW1wLm1vZGVsJ1xuXG5jb25zdCBNT0JJTEVfUEFUVEVSTiA9IC9eWzBdP1s2Nzg5XVxcZHs5fSQvXG5jb25zdCBQSU5fQ09ERV9QQVRURVJOID0gL15bMS05XVswLTldezV9JC9cbmNvbnN0IEVNUF9JRF9QQVRURVJOID0gL15bYS16MC05XSskL2lcbi8qIHRzbGludDpkaXNhYmxlICovXG5jb25zdCBFTUFJTF9QQVRURVJOID0gL15bYS16QS1aMC05XStbYS16QS1aMC05Ll8tXSpbYS16QS1aMC05XStAW2EtekEtWjAtOV0rKFstYS16QS1aMC05XSpbYS16QS1aMC05XSspPyhcXC5bYS16QS1aMC05LV0rKSpcXC5bYS16QS1aXXsyLDR9JC9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3MtYXBwLWVucm9sbC1wcm9maWxlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZW5yb2xsLXByb2ZpbGUtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Vucm9sbC1wcm9maWxlLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRW5yb2xsUHJvZmlsZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgYWZ0ZXJTdWJtaXRBY3Rpb24gPSB0aGlzLmNoZWNrQWZ0ZXJTdWJtaXQuYmluZCh0aGlzKVxuICBpc1JlYWRPbmx5ID0gZmFsc2VcbiAgYmF0Y2hEZXRhaWxzOiBhbnlcbiAgY3VzdG9tRm9ybTogYm9vbGVhbiA9IGZhbHNlXG4gIHVzZXJEZXRhaWxzRm9ybTogRm9ybUdyb3VwXG4gIGdyb3VwRGF0YTogYW55IHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgZGVzdHJveVN1YmplY3QkID0gbmV3IFN1YmplY3QoKVxuICBkZXNpZ25hdGlvbnNNZXRhOiBhbnkgPSBbXVxuICAvLyBmaWx0ZXJEZXNpZ25hdGlvbnNNZXRhOiBhbnkgPSBbXVxuICBlVXNlckdlbmRlciA9IE9iamVjdC5rZXlzKE5zVXNlclByb2ZpbGVEZXRhaWxzLkVVc2VyR2VuZGVyKVxuICBtYXN0ZXJMYW5ndWFnZXM6IGFueVxuICBtYXN0ZXJMYW5ndWFnZUJhY2t1cDogYW55XG4gIGVDYXRlZ29yeSA9IE9iamVjdC5rZXlzKE5zVXNlclByb2ZpbGVEZXRhaWxzLkVDYXRlZ29yeSlcbiAgdXNlclByb2ZpbGVPYmplY3Q6IGFueVxuICBlbGlnaWJsZTogYm9vbGVhbiA9IGZhbHNlXG4gIGlzQ2FkcmVTdGF0dXMgPSBmYWxzZVxuICBzaG93QmF0Y2hGb3JOb0NhZHJlID0gdHJ1ZVxuICBjaXZpbFNlcnZpY2VEYXRhOiBhbnlcbiAgY2l2aWxTZXJ2aWNlVHlwZXM6IGFueVxuICBzZXJ2aWNlTmFtZTogYW55XG4gIHNlcnZpY2VUeXBlOiBhbnlcbiAgc2VydmljZUxpc3REYXRhOiBhbnlcbiAgc2VydmljZUlkOiBhbnlcbiAgZXJyb3JNZXNzYWdlOiBhbnlcbiAgc2VsZWN0ZWRTZXJ2aWNlTmFtZTogYW55XG4gIHNlbGVjdGVkU2VydmljZTogYW55XG4gIGNpdmlsU2VydmljZU5hbWU6IGFueVxuICBjaXZpbFNlcnZpY2VJZDogYW55XG4gIGNhZHJlSWQ6IGFueVxuICBjYWRyZTogYW55XG4gIGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHk6IGFueVxuICBzdGFydEJhdGNoOiBhbnlcbiAgZW5kQmF0Y2g6IGFueVxuICB5ZWFyQXJyYXk6IGFueVxuICBleGNsdXNpb25ZZWFyOiBhbnlcbiAgc2VsZWN0ZWRDYWRyZU5hbWU6IGFueVxuICBzZWxlY3RlZENhZHJlOiBhbnlcbiAgdmVyaWZ5TW9iaWxlOiBib29sZWFuID0gZmFsc2VcbiAgb3RwU2VudDogYm9vbGVhbiA9IGZhbHNlXG4gIGVtYWlsT3RwU2VudDogYm9vbGVhbiA9IGZhbHNlXG4gIG90cEVudGVyZWQgPSAnJ1xuICBtVmVyaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICBlVmVyaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICBAVmlld0NoaWxkKCd0aW1lckRpdicsIHsgc3RhdGljOiBmYWxzZSB9KSB0aW1lckRpdiAhOiBhbnlcbiAgQFZpZXdDaGlsZCgnZW1haWxUaW1lckRpdicsIHsgc3RhdGljOiBmYWxzZSB9KSBlbWFpbFRpbWVyRGl2ICE6IGFueVxuICB0aW1lTGVmdCA9IDE1MFxuICBlbWFpbFRpbWVMZWZ0ID0gMTUwXG4gIGludGVydmFsOiBhbnlcbiAgZW1haWxJbnRlcnZhbDogYW55XG4gIHNob3dSZXNlbmRPVFAgPSBmYWxzZVxuICBzaG93RW1haWxSZXNlbmRPVFAgPSBmYWxzZVxuICBvdHBGb3JtOiBGb3JtR3JvdXBcbiAgZW1haWxPdHBGb3JtOiBGb3JtR3JvdXBcbiAgc2hvd25hbWUgPSBmYWxzZVxuICBzaG93RGVzaWduYXRpb24gPSBmYWxzZVxuICBzaG93R3JvdXAgPSBmYWxzZVxuICBzaG93RW1wbG95ZWVDb2RlID0gZmFsc2VcbiAgc2hvd01vYmlsZSA9IGZhbHNlXG4gIHNob3dHZW5kZXIgPSBmYWxzZVxuICBzaG93RG9iID0gZmFsc2VcbiAgc2hvd0NhdGVnb3J5ID0gZmFsc2VcbiAgc2hvd0RlY2ltYWxNZWRpdW0gPSBmYWxzZVxuICBzaG93UGluQ29kZSA9IGZhbHNlXG4gIHNob3dDYWRyZURldGFpbHMgPSBmYWxzZVxuICB1cGRhdGVQcm9maWxlID0gZmFsc2VcbiAgcGVuZGluZ0ZpbGVkczogYW55XG4gIHBHcm91cDogYW55XG4gIHBEZXNpZ25hdGlvbjogYW55XG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlXG4gIGNhblNob3dFbXBsb3llZUNvZGU6IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5zaG93TW9iaWxlOiBib29sZWFuID0gZmFsc2VcbiAgY2FuU2hvd0dlbmRlcjogYm9vbGVhbiA9IGZhbHNlXG4gIGNhblNob3dEb2I6IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5TaG93RG9taWNpbGVNZWRpdW06IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5TaG93Q2F0ZWdvcnk6IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5TaG93cGluQ29kZTogYm9vbGVhbiA9IGZhbHNlXG4gIGNhblNob3dzaG93Q2FkcmVEZXRhaWxzOiBib29sZWFuID0gZmFsc2VcbiAgY2FuU2hvd0dyb3VwOiBib29sZWFuID0gZmFsc2VcbiAgY2FuU2hvd0Rlc2lnbmF0aW9uOiBib29sZWFuID0gZmFsc2VcbiAgc2VsZWN0ZWREYXRlOiBhbnlcbiAgc2hvd0NvdW50ZXI6IG51bWJlciA9IDBcbiAgZGlzYWJsZUNvdW50ZXI6IG51bWJlciA9IDBcbiAgY2FuU2hvd0VtYWlsOiBib29sZWFuID0gZmFsc2VcbiAgc2hvd0VtYWlsOiBib29sZWFuID0gZmFsc2VcbiAgY2FuU2hvd05hbWU6IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5TaG93T3JnOiBib29sZWFuID0gZmFsc2VcbiAgc2hvd09yZzogYm9vbGVhbiA9IGZhbHNlXG4gIHN1cnZleUlkOiBhbnlcbiAgc2hvd0RvcHRDaGFuZ2VzOiBib29sZWFuID0gZmFsc2VcbiAgcHJvZmlsZUZvcm1UeXBlOiBhbnlcbiAgdmVyaWZ5RW1haWwgPSBmYWxzZVxuICBhcHByb3ZlZERvbWFpbkxpc3Q6IGFueSA9IFtdXG4gIGNvbnRleHRUb2tlbjogYW55XG4gIGN1cnJlbnREYXRlID0gbmV3IERhdGUoKVxuICBvcGVuRGVzaWduYXRpb25Ecm9wZG93biA9IGZhbHNlXG4gIG9wZW5MYW5ndWFnZURyb3Bkb3duID0gZmFsc2VcbiAgY2FuU2hvd090aGVyRGVzaWduYXRpb24gPSBmYWxzZVxuICBkZXNpZ25hdGlvbkxpc3RMb2FkQ291bnQgPSA1MFxuICBhZGRMb2FkZXIgPSAwXG4gIGlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSBmYWxzZTtcbiAgZGVzaWduYXRpb25EZWZhdWx0TG9hZENvdW50ID0gIDUwXG4gIGRlc2lnYW50aW9uRmlsdGVyRW5hYmxlID0gZmFsc2VcbiAgb3JnYW5pc2F0aW9uSWQgPSAnJ1xuICBzZWxlY3RlZE9yZ0hhc0Rlc2lnbmF0aW9ucyA9IGZhbHNlO1xuICBkZXNpZ25hdGlvbnNPZmZzZXQgPSAwO1xuICBkZXNpZ25hdGlvblNlYXJjaFRleHQgPSAnJztcbiAgZGVzaWduYXRpb25zVG90YWxDb3VudCA9IDA7XG4gIGZvcm1JZDogc3RyaW5nID0gJyc7XG4gIGZvcm1zRGV0aWxzOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RleHRCb3gnKSB0ZXh0Qm94ITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdsYW5ndWFnZVRleHRCb3gnKSBsYW5ndWFnZVRleHRCb3ghOiBFbGVtZW50UmVmXG4gIEBWaWV3Q2hpbGQoJ2xhbmd1YWdlRHJvcGRvd24nKSBsYW5ndWFnZURyb3Bkb3duITogRWxlbWVudFJlZlxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RW5yb2xsUHJvZmlsZUZvcm1Db21wb25lbnQ+LFxuICAgIHByaXZhdGUgdXNlclByb2ZpbGVTZXJ2aWNlOiBVc2VyUHJvZmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTcmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHByb2ZpbGVWMlN2YzogUHJvZmlsZVYyU2VydmljZSxcbiAgICBwcml2YXRlIG90cFNlcnZpY2U6IE90cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBucHNTdmM6IE5QU0dyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICAvLyBwcml2YXRlIHNpZ251cFNlcnZpY2U6IFNpZ251cFNlcnZpY2UsXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICkge1xuXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSkge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRMYW5nKCdlbicpXG4gICAgICBjb25zdCBsYW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3dlYnNpdGVMYW5ndWFnZScpIVxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5nKVxuICAgIH1cblxuICAgIHRoaXMuYmF0Y2hEZXRhaWxzID0gdGhpcy5kYXRhLmJhdGNoRGF0YVxuICAgIHRoaXMuc3VydmV5SWQgPSB0aGlzLmRhdGEuc3VydmV5SWRcbiAgICB0aGlzLnNob3dEb3B0Q2hhbmdlcyA9IHRoaXMuZGF0YS5zaG93RG9wdENoYW5nZXNcbiAgICB0aGlzLnByb2ZpbGVGb3JtVHlwZSA9IHRoaXMuYmF0Y2hEZXRhaWxzLmJhdGNoQXR0cmlidXRlcy51c2VyUHJvZmlsZUZpbGVkc1xuICAgIHRoaXMudXNlckRldGFpbHNGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgb3JnYW5pc2F0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgZ3JvdXA6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBkZXNpZ25hdGlvbjogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIGVtcGxveWVlQ29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIHByaW1hcnlFbWFpbDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEVNQUlMX1BBVFRFUk4pXSksXG4gICAgICBtb2JpbGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBnZW5kZXI6IG5ldyBGb3JtQ29udHJvbCgnJywgW10pLFxuICAgICAgZG9iOiBuZXcgRm9ybUNvbnRyb2woJycsIFtdKSxcbiAgICAgIGRvbWljaWxlTWVkaXVtOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgY2F0ZWdvcnk6IG5ldyBGb3JtQ29udHJvbCgnJywgW10pLFxuICAgICAgcGluQ29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIGlzQ2FkcmU6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgdHlwZU9mQ2l2aWxTZXJ2aWNlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgc2VydmljZVR5cGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBjYWRyZU5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBjYWRyZUJhdGNoOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIG90aGVyRGVzaWduYXRpb246IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBzZWFyY2hEZXNpZ25hdGlvbjogbmV3IEZvcm1Db250cm9sKCcnKVxuICAgIH0pXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlXG4gICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdCA9IHRoaXMuY29uZmlnU3JjLnVuTWFwcGVkVXNlclxuICAgIHRoaXMub3JnYW5pc2F0aW9uSWQgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncm9vdE9yZ0lkJywgXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3BlcnNvbmFsRGV0YWlscy5yb290T3JnSWQnLCAnJykpXG5cbiAgICB0aGlzLm90cEZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIG90cDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgIH0pXG4gICAgdGhpcy5lbWFpbE90cEZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGVPdHA6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICB9KVxuXG4gICAgLy8gVG8gY2hlY2sgdGhlIG1vYmlsZSBudW1iZXIgZW50ZXJlZCBieSB0aGUgdXNlciBpcyBzYW1lIG9yIG5vdCwgdmFsaWRhdGluZyB0aGUgbW9iaWxlIG51bWJlciB0byBzaG93IHRoZSBHZXQgT1RQLlxuICAgIGlmICh0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ21vYmlsZScpKSB7XG4gICAgICB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ21vYmlsZScpIS52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzICE9PSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5tb2JpbGUgfHxcbiAgICAgICAgICAgICF0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5waG9uZVZlcmlmaWVkKSB7XG4gICAgICAgICAgICBpZiAoTU9CSUxFX1BBVFRFUk4udGVzdChyZXMpKSB7XG4gICAgICAgICAgICAgIHRoaXMudmVyaWZ5TW9iaWxlID0gdHJ1ZVxuICAgICAgICAgICAgICB0aGlzLm1WZXJpZmllZCA9IGZhbHNlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnZlcmlmeU1vYmlsZSA9IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmVyaWZ5TW9iaWxlID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gVG8gY2hlY2sgdGhlIGVtYWlsIGVudGVyZWQgYnkgdGhlIHVzZXIgaXMgc2FtZSBvciBub3QsIHZhbGlkYXRpbmcgdGhlIGVtYWlsIHRvIHNob3cgdGhlIEdldCBPVFAuXG4gICAgaWYgKHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgncHJpbWFyeUVtYWlsJykpIHtcbiAgICAgIHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgncHJpbWFyeUVtYWlsJykhLnZhbHVlQ2hhbmdlc1xuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMgIT09IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLnByaW1hcnlFbWFpbCkge1xuICAgICAgICAgICAgaWYgKEVNQUlMX1BBVFRFUk4udGVzdChyZXMpKSB7XG4gICAgICAgICAgICAgIHRoaXMudmVyaWZ5RW1haWwgPSB0cnVlXG4gICAgICAgICAgICAgIHRoaXMuZVZlcmlmaWVkID0gZmFsc2VcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudmVyaWZ5RW1haWwgPSBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZlcmlmeUVtYWlsID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuZVZlcmlmaWVkID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb0FjdGl2ZSh0eXBlOiBhbnkpOiB2b2lkIHtcbiAgICBsZXQgYWN0aXZlRWxlbWVudDogYW55XG4gICAgbGV0IGNvbnRhaW5lcjogYW55XG4gICAgaWYgKHR5cGUgPT09ICdsYW5ndWFnZScpIHtcbiAgICAgIGNvbnRhaW5lciA9IHRoaXMubGFuZ3VhZ2VEcm9wZG93bi5uYXRpdmVFbGVtZW50XG4gICAgICBhY3RpdmVFbGVtZW50ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5sYW5ndWFnZS1pdGVtLWFjdGl2ZScpXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZGVzaWduYXRpb24nKSB7XG4gICAgICBjb250YWluZXIgPSB0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnRcbiAgICAgIGFjdGl2ZUVsZW1lbnQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLml0ZW0tYWN0aXZlJylcbiAgICB9XG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGFjdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuXG4gIGhhbmRsZUNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNsaWNrZWRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgaWYgKFxuICAgICAgdGhpcy50ZXh0Qm94ICYmICF0aGlzLnRleHRCb3gubmF0aXZlRWxlbWVudC5jb250YWlucyhjbGlja2VkRWxlbWVudCkgJiZcbiAgICAgIHRoaXMuZHJvcGRvd24gJiYgIXRoaXMuZHJvcGRvd24ubmF0aXZlRWxlbWVudC5jb250YWlucyhjbGlja2VkRWxlbWVudClcbiAgICApIHtcbiAgICAgIHRoaXMub3BlbkRlc2lnbmF0aW9uRHJvcGRvd24gPSBmYWxzZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLmxhbmd1YWdlVGV4dEJveCAmJiAhdGhpcy5sYW5ndWFnZVRleHRCb3gubmF0aXZlRWxlbWVudC5jb250YWlucyhjbGlja2VkRWxlbWVudCkgJiZcbiAgICAgIHRoaXMubGFuZ3VhZ2VEcm9wZG93biAmJiAhdGhpcy5sYW5ndWFnZURyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoY2xpY2tlZEVsZW1lbnQpXG4gICAgKSB7XG4gICAgICB0aGlzLm9wZW5MYW5ndWFnZURyb3Bkb3duID0gZmFsc2VcbiAgICB9XG4gIH1cbiAgb25EZXNpZ25hdGlvbnNGb2N1cygpIHtcbiAgICAvLyB0aGlzLm9wZW5EZXNpZ25hdGlvbkRyb3Bkb3duID0gdHJ1ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZSgnZGVzaWduYXRpb24nKVxuICAgIH0sIDEwMClcbiAgfVxuICBvbkxhbmd1YWdlRm9jdXMoKSB7XG4gICAgdGhpcy5vcGVuTGFuZ3VhZ2VEcm9wZG93biA9IHRydWVcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoJ2xhbmd1YWdlJylcbiAgICB9LCAxMDApXG4gIH1cblxuICBmaWx0ZXJMYW5ndWFnZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5tYXN0ZXJMYW5ndWFnZXMgPSB0aGlzLm1hc3Rlckxhbmd1YWdlQmFja3VwLmZpbHRlcigodmFsOiBhbnkpID0+XG4gICAgICAgIHZhbCAmJiB2YWwubmFtZS50cmltKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgKVxuICAgICAgaWYgKHRoaXMubWFzdGVyTGFuZ3VhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCB1c2VybmFtZUNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2RvbWljaWxlTWVkaXVtJylcbiAgICAgICAgaWYgKHVzZXJuYW1lQ29udHJvbCkge1xuICAgICAgICAgIHVzZXJuYW1lQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm9wZW5MYW5ndWFnZURyb3Bkb3duID0gdHJ1ZVxuICB9XG5cbiAgLy8gZmlsdGVyZGVzaWduYXRpb24odmFsdWU6IGFueSkge1xuICAvLyAgIGlmICh2YWx1ZS5sZW5ndGgpIHtcbiAgLy8gICAgIHRoaXMuZGVzaWdhbnRpb25GaWx0ZXJFbmFibGUgPXRydWVcbiAgLy8gICAgIHRoaXMuZmlsdGVyRGVzaWduYXRpb25zTWV0YSA9IHRoaXMuZGVzaWduYXRpb25zTWV0YS5maWx0ZXIoKHZhbDogYW55KSA9PlxuICAvLyAgICAgICB2YWwgJiYgdmFsLm5hbWUudHJpbSgpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgLy8gICAgIClcbiAgLy8gICAgIGlmICh0aGlzLmZpbHRlckRlc2lnbmF0aW9uc01ldGEubGVuZ3RoID09PSAwKSB7XG4gIC8vICAgICAgIGNvbnN0IHVzZXJuYW1lQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnZGVzaWduYXRpb24nKVxuICAvLyAgICAgICBpZiAodXNlcm5hbWVDb250cm9sKSB7XG4gIC8vICAgICAgICAgdXNlcm5hbWVDb250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkOiB0cnVlIH0pO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRoaXMuZmlsdGVyRGVzaWduYXRpb25zTWV0YSA9IHRoaXMuZGVzaWduYXRpb25zTWV0YS5zbGljZSgwLCB0aGlzLmRlc2lnbmF0aW9uRGVmYXVsdExvYWRDb3VudClcbiAgLy8gICAgIHRoaXMuZGVzaWdhbnRpb25GaWx0ZXJFbmFibGUgPWZhbHNlXG5cbiAgLy8gICAgIHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50ID0gdGhpcy5kZXNpZ25hdGlvbkRlZmF1bHRMb2FkQ291bnQ7XG4gIC8vICAgfVxuICAvLyAgIC8vIHRoaXMub3BlbkRlc2lnbmF0aW9uRHJvcGRvd24gPSB0cnVlXG4gIC8vIH1cblxuICAvLyBhc3luYyBnZXRNYXN0ZXJEZXNpZ25hdGlvbigpIHtcbiAgLy8gICB0aGlzLnNpZ251cFNlcnZpY2UuZ2V0T3JnUmVhZERhdGEodGhpcy51c2VyUHJvZmlsZU9iamVjdC5yb290T3JnSWQpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgLy8gICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmZyYW1ld29ya2lkKSB7XG4gIC8vICAgICAgIHRoaXMuc2lnbnVwU2VydmljZS5nZXRGcmFtZXdvcmtJbmZvKHJlc3VsdC5mcmFtZXdvcmtpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAvLyAgICAgICAgIGNvbnN0IGZyYW1ld29ya0RldGFpbHMgPSBfLmdldChyZXMsICdyZXN1bHQuZnJhbWV3b3JrJylcbiAgLy8gICAgICAgICBjb25zdCBjYXRlZ29yaWVzT2ZGcmFtZXdvcmsgPSBfLmdldChmcmFtZXdvcmtEZXRhaWxzLCAnY2F0ZWdvcmllcycsIFtdKVxuICAvLyAgICAgICAgIGNvbnN0IG9yZ2FuaXNhdGlvbnNMaXN0ID0gdGhpcy5nZXRUZXJtc0J5Q29kZShjYXRlZ29yaWVzT2ZGcmFtZXdvcmssICdvcmcnKVxuICAvLyAgICAgICAgIGNvbnN0IGRpc09yZGVyZWRMaXN0ID0gXy5nZXQob3JnYW5pc2F0aW9uc0xpc3QsICdbMF0uY2hpbGRyZW4nLCBbXSlcbiAgLy8gICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc01ldGEgPSBfLnNvcnRCeShkaXNPcmRlcmVkTGlzdCwgJ25hbWUnKVxuICAvLyAgICAgICAgIHRoaXMuZmlsdGVyRGVzaWduYXRpb25zTWV0YSA9IHRoaXMuZGVzaWduYXRpb25zTWV0YS5zbGljZSgwLCB0aGlzLmRlc2lnbmF0aW9uRGVmYXVsdExvYWRDb3VudClcbiAgLy8gICAgICAgICBpZiAodGhpcy5jYW5TaG93RGVzaWduYXRpb24pIHtcbiAgLy8gICAgICAgICAgIGxldCBmaWVsZCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnZGVzaWduYXRpb24nKVxuICAvLyAgICAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkLnZhbHVlKSB7XG4gIC8vICAgICAgICAgICAgIGxldCBfdmFsdWUgPSBmaWVsZC52YWx1ZS50b0xvd2VyQ2FzZSgpXG4gIC8vICAgICAgICAgICAgIGlmICghdGhpcy5kZXNpZ25hdGlvbnNNZXRhLmZpbmQoKGQ6IGFueSkgPT4gZC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IF92YWx1ZSkpIHtcbiAgLy8gICAgICAgICAgICAgICBmaWVsZC5wYXRjaFZhbHVlKCcnKVxuICAvLyAgICAgICAgICAgICB9XG4gIC8vICAgICAgICAgICB9XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAvLyAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAvLyAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkOicsIGVycm9yKVxuICAvLyAgICAgICB9KVxuICAvLyAgICAgfVxuICAvLyAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gIC8vICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgLy8gICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkOicsIGVycm9yKVxuICAvLyAgIH0pXG4gIC8vIH1cblxuICAvLyBwcml2YXRlIGdldFRlcm1zQnlDb2RlKGNhdGVnb3JpZXM6IGFueVtdLCBjb2RlOiBzdHJpbmcpIHtcbiAgLy8gICBjb25zdCBzZWxlY3RlZENhdGVnb3J5ID0gY2F0ZWdvcmllcy5maWx0ZXIoXG4gIC8vICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuY29kZSA9PT0gY29kZVxuICAvLyAgICk7XG4gIC8vICAgcmV0dXJuIF8uZ2V0KHNlbGVjdGVkQ2F0ZWdvcnksICdbMF0udGVybXMnLCBbXSk7XG4gIC8vIH1cblxuICBwcmV2ZW50Qmx1cihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxuICBwcmV2ZW50TGFuZ3VhZ2VCbHVyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgc2VsZWN0RGVzaWduYXRpb24oZGVzaWduYXRpb246IGFueSkge1xuICAgIHRoaXMudXNlckRldGFpbHNGb3JtLnBhdGNoVmFsdWUoeyBkZXNpZ25hdGlvbjogZGVzaWduYXRpb24gfSlcbiAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ290aGVyRGVzaWduYXRpb24nKVxuICAgIGlmICh0aGlzLnNob3dEb3B0Q2hhbmdlcyAmJiBkZXNpZ25hdGlvbiA9PT0gJ090aGVycycpIHtcbiAgICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgICAgZmllbGRDb250cm9sLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgZmllbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgfVxuICAgICAgdGhpcy5jYW5TaG93T3RoZXJEZXNpZ25hdGlvbiA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpZWxkQ29udHJvbCkge1xuICAgICAgICBmaWVsZENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKClcbiAgICAgICAgZmllbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgfVxuICAgICAgdGhpcy5jYW5TaG93T3RoZXJEZXNpZ25hdGlvbiA9IGZhbHNlXG4gICAgfVxuICAgIHRoaXMub3BlbkRlc2lnbmF0aW9uRHJvcGRvd24gPSBmYWxzZVxuICB9XG5cblxuICBzZWxlY3RMYW5ndWFnZShsYW5ndWFnZTogYW55KSB7XG4gICAgdGhpcy51c2VyRGV0YWlsc0Zvcm0ucGF0Y2hWYWx1ZSh7IGRvbWljaWxlTWVkaXVtOiBsYW5ndWFnZSB9KVxuICAgIHRoaXMub3Blbkxhbmd1YWdlRHJvcGRvd24gPSBmYWxzZVxuICB9XG5cbiAgaXNFbWFpbEFsbG93ZWQoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGRvbWFpbiA9IGVtYWlsLnNwbGl0KCdAJylbMV1cbiAgICByZXR1cm4gZG9tYWluID8gdGhpcy5hcHByb3ZlZERvbWFpbkxpc3QuaW5jbHVkZXMoZG9tYWluKSA6IGZhbHNlXG4gIH1cblxuICBoYW5kbGVHZW5lcmF0ZUVtYWlsT1RQKHZlcmlmeVR5cGU/OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyh2ZXJpZnlUeXBlKVxuICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLmdldFdoaXRlTGlzdERvbWFpbigpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnJlc3VsdCAmJiByZXNwb25zZS5yZXN1bHQuZG9tYWlucyAmJiByZXNwb25zZS5yZXN1bHQuZG9tYWlucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuYXBwcm92ZWREb21haW5MaXN0ID0gcmVzcG9uc2UucmVzdWx0LmRvbWFpbnNcbiAgICAgICAgaWYgKHRoaXMuYXBwcm92ZWREb21haW5MaXN0ICYmIHRoaXMuYXBwcm92ZWREb21haW5MaXN0Lmxlbmd0aCAmJiB0aGlzLmFwcHJvdmVkRG9tYWluTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNFbWFpbEFsbG93ZWQodGhpcy51c2VyRGV0YWlsc0Zvcm0udmFsdWVbJ3ByaW1hcnlFbWFpbCddKSkge1xuICAgICAgICAgICAgdGhpcy5vdHBTZXJ2aWNlLnNlbmRFbWFpbE90cCh0aGlzLnVzZXJEZXRhaWxzRm9ybS52YWx1ZVsncHJpbWFyeUVtYWlsJ10pXG4gICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKF9yZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxPdHBGb3JtLnJlc2V0KClcbiAgICAgICAgICAgICAgICBpZiAodmVyaWZ5VHlwZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5lbWFpbE90cFNlbnQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RW1haWxUaW1lcigpXG4gICAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5oYW5kbGVUcmFuc2xhdGVUbygnb3RwU2VudEVtYWlsJykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvci5vaykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHRoaXMuaGFuZGxlVHJhbnNsYXRlVG8oJ2VtYWlsT1RQU2VudEZhaWwnKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5oYW5kbGVUcmFuc2xhdGVUbygnZW1haWxBcHByb3ZlZFBvcHVwTXNnJykpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGhhbmRsZUdlbmVyYXRlT1RQKHZlcmlmeVR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm90cFNlcnZpY2Uuc2VuZE90cCh0aGlzLnVzZXJEZXRhaWxzRm9ybS52YWx1ZVsnbW9iaWxlJ10pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95U3ViamVjdCQpKVxuICAgICAgLnN1YnNjcmliZSgoX3JlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCdvdHBTZW50TW9iaWxlJykpXG4gICAgICAgIHRoaXMub3RwRm9ybS5yZXNldCgpXG4gICAgICAgIGlmICh2ZXJpZnlUeXBlKSB7XG4gICAgICAgICAgdGhpcy5vdHBTZW50ID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuc3RhcnRUaW1lcigpXG4gICAgICAgICAgLy90aGlzLmhhbmRsZVZlcmlmeU9UUCh2ZXJpZnlUeXBlLCB0aGlzLnVzZXJEZXRhaWxzRm9ybS52YWx1ZVsnbW9iaWxlJ10pXG4gICAgICAgIH1cbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFlcnJvci5vaykge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCdtb2JpbGVPVFBTZW50RmFpbCcpKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgaGFuZGxlUmVzZW5kT1RQKCk6IHZvaWQge1xuICAgIHRoaXMudGltZUxlZnQgPSAxNTBcbiAgICB0aGlzLnNob3dSZXNlbmRPVFAgPSB0cnVlXG4gICAgdGhpcy5zdGFydFRpbWVyKClcbiAgICBsZXQgb3RwVmFsdWUkOiBhbnlcbiAgICBvdHBWYWx1ZSQgPSB0aGlzLm90cFNlcnZpY2UucmVzZW5kT3RwKHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydtb2JpbGUnXS52YWx1ZSlcblxuICAgIG90cFZhbHVlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpXG4gICAgICAuc3Vic2NyaWJlKChfcmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHRoaXMuaGFuZGxlVHJhbnNsYXRlVG8oJ290cFNlbnRNb2JpbGUnKSlcbiAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGlmICghZXJyb3Iub2spIHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oXy5nZXQoZXJyb3IsICdlcnJvci5wYXJhbXMuZXJybXNnJykgfHwgJ1VuYWJsZSB0byByZXNlbmQgT1RQLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyIScpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBoYW5kbGVSZXNlbmRFbWFpbE9UUCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtYWlsVGltZUxlZnQgPSAxNTBcbiAgICB0aGlzLnNob3dFbWFpbFJlc2VuZE9UUCA9IHRydWVcbiAgICB0aGlzLnN0YXJ0RW1haWxUaW1lcigpXG4gICAgbGV0IG90cFZhbHVlJDogYW55XG4gICAgb3RwVmFsdWUkID0gdGhpcy5vdHBTZXJ2aWNlLnNlbmRFbWFpbE90cCh0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncHJpbWFyeUVtYWlsJ10udmFsdWUpXG4gICAgb3RwVmFsdWUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveVN1YmplY3QkKSlcbiAgICAgIC5zdWJzY3JpYmUoKF9yZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5oYW5kbGVUcmFuc2xhdGVUbygnb3RwU2VudEVtYWlsJykpXG4gICAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIWVycm9yLm9rKSB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKF8uZ2V0KGVycm9yLCAnZXJyb3IucGFyYW1zLmVycm1zZycpIHx8ICdVbmFibGUgdG8gcmVzZW5kIE9UUCwgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlciEnKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgdmVyaWZ5RW1haWxPVFAoKTogdm9pZCB7XG4gICAgdGhpcy5vdHBTZXJ2aWNlLnZlcmlmeUVtYWlsT1RQKHRoaXMuZW1haWxPdHBGb3JtLmNvbnRyb2xzWydlT3RwJ10udmFsdWUsIHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydwcmltYXJ5RW1haWwnXS52YWx1ZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpXG4gICAgICAuc3Vic2NyaWJlKChfcmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHRoaXMuaGFuZGxlVHJhbnNsYXRlVG8oJ09UUFNlbnRTdWNjZXNzJykpXG4gICAgICAgIHRoaXMudmVyaWZ5RW1haWwgPSB0cnVlXG4gICAgICAgIHRoaXMuZVZlcmlmaWVkID0gdHJ1ZVxuICAgICAgICB0aGlzLmVtYWlsT3RwU2VudCA9IGZhbHNlXG4gICAgICAgIHRoaXMuY29udGV4dFRva2VuID0gX3Jlcy5yZXN1bHQuY29udGV4dFRva2VuXG4gICAgICAgIHRoaXMuZW1haWxPdHBGb3JtLnJlc2V0KClcbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFlcnJvci5vaykge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihfLmdldChlcnJvciwgJ2Vycm9yLnBhcmFtcy5lcnJtc2cnKSB8fCB0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCdPVFBWZXJpZnlGYWlsZWQnKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxuXG4gIHZlcmlmeU1vYmlsZU9UUCgpOiB2b2lkIHtcbiAgICB0aGlzLm90cFNlcnZpY2UudmVyaWZ5T1RQKHRoaXMub3RwRm9ybS5jb250cm9sc1snb3RwJ10udmFsdWUsIHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydtb2JpbGUnXS52YWx1ZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpXG4gICAgICAuc3Vic2NyaWJlKChfcmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHRoaXMuaGFuZGxlVHJhbnNsYXRlVG8oJ09UUFNlbnRTdWNjZXNzJykpXG4gICAgICAgIHRoaXMudmVyaWZ5TW9iaWxlID0gdHJ1ZVxuICAgICAgICB0aGlzLm1WZXJpZmllZCA9IHRydWVcbiAgICAgICAgdGhpcy5vdHBTZW50ID0gZmFsc2VcbiAgICAgICAgdGhpcy5vdHBGb3JtLnJlc2V0KClcbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFlcnJvci5vaykge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihfLmdldChlcnJvciwgJ2Vycm9yLnBhcmFtcy5lcnJtc2cnKSB8fCB0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCdPVFBWZXJpZnlGYWlsZWQnKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxuXG4gIHN0YXJ0VGltZXIoKSB7XG4gICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnRpbWVMZWZ0ID4gMCkge1xuICAgICAgICB0aGlzLnRpbWVMZWZ0ID0gdGhpcy50aW1lTGVmdCAtIDFcbiAgICAgICAgaWYgKHRoaXMudGltZXJEaXYpIHtcbiAgICAgICAgICB0aGlzLnRpbWVyRGl2Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gYCR7TWF0aC5mbG9vcih0aGlzLnRpbWVMZWZ0IC8gNjApfW06ICR7dGhpcy50aW1lTGVmdCAlIDYwfXNgXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbClcbiAgICAgICAgdGhpcy5zaG93UmVzZW5kT1RQID0gdHJ1ZVxuICAgICAgfVxuICAgIH0sIDEwMDApXG4gIH1cblxuICBzdGFydEVtYWlsVGltZXIoKSB7XG4gICAgdGhpcy5lbWFpbEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZW1haWxUaW1lTGVmdCA+IDApIHtcbiAgICAgICAgdGhpcy5lbWFpbFRpbWVMZWZ0ID0gdGhpcy5lbWFpbFRpbWVMZWZ0IC0gMVxuICAgICAgICBpZiAodGhpcy5lbWFpbFRpbWVyRGl2KSB7XG4gICAgICAgICAgdGhpcy5lbWFpbFRpbWVyRGl2Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gYCR7TWF0aC5mbG9vcih0aGlzLmVtYWlsVGltZUxlZnQgLyA2MCl9bTogJHt0aGlzLmVtYWlsVGltZUxlZnQgJSA2MH1zYFxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuZW1haWxJbnRlcnZhbClcbiAgICAgICAgdGhpcy5zaG93RW1haWxSZXNlbmRPVFAgPSB0cnVlXG4gICAgICB9XG4gICAgfSwgMTAwMClcbiAgfVxuXG4gIHB1YmxpYyBjaGVja0FmdGVyU3VibWl0KF9lOiBhbnkpIHtcbiAgICAvLyB0aGlzLnJlbmRlclN1YmplY3QubmV4dCgpXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmxvZygnRm9ybSBpcyBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5JylcbiAgICBpZiAodGhpcy5iYXRjaERldGFpbHMuYmF0Y2hBdHRyaWJ1dGVzLnVzZXJQcm9maWxlRmlsZWRzICYmXG4gICAgICB0aGlzLmJhdGNoRGV0YWlscy5iYXRjaEF0dHJpYnV0ZXMudXNlclByb2ZpbGVGaWxlZHMgPT09IFwiQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZVwiKSB7XG4gICAgICB0aGlzLnN1Ym1pdFN1cmV2eSh0cnVlKVxuICAgIH1cbiAgICBpZiAodGhpcy5iYXRjaERldGFpbHMuYmF0Y2hBdHRyaWJ1dGVzLnVzZXJQcm9maWxlRmlsZWRzICYmICF0aGlzLnVwZGF0ZVByb2ZpbGUgJiZcbiAgICAgICh0aGlzLmJhdGNoRGV0YWlscy5iYXRjaEF0dHJpYnV0ZXMudXNlclByb2ZpbGVGaWxlZHMgPT09IFwiRnVsbCBpR09UIHByb2ZpbGVcIiB8fFxuICAgICAgICB0aGlzLmJhdGNoRGV0YWlscy5iYXRjaEF0dHJpYnV0ZXMudXNlclByb2ZpbGVGaWxlZHMgPT09IFwiQ3VzdG9tIGlHT1QgcHJvZmlsZVwiKSkge1xuICAgICAgdGhpcy5zdWJtaXRTdXJldnkodHJ1ZSlcbiAgICB9XG4gICAgdGhpcy5vcGVuU25hY2tiYXIoJ0Zvcm0gaXMgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseScpXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSlcbiAgfVxuXG4gIGNsb3NlUG9wdXAoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSlcbiAgfVxuXG4gIHByaXZhdGUgb3BlblNuYWNrYmFyKHByaW1hcnlNc2c6IHN0cmluZywgZHVyYXRpb246IG51bWJlciA9IDUwMDApIHtcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4ocHJpbWFyeU1zZywgJ1gnLCB7XG4gICAgICBkdXJhdGlvbixcbiAgICB9KVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtSWQgPSBfLmdldCh0aGlzLmRhdGEsICdiYXRjaERhdGEuYmF0Y2hBdHRyaWJ1dGVzLnByb2ZpbGVTdXJ2ZXlJZCcpXG4gICAgdGhpcy5nZXRGb3JtRGV0YWlscygpXG4gICAgdGhpcy5zZXRWYWx1ZUNoYW5nZUZ1bmN0aW9ucygpXG4gICAgdGhpcy5mZXRjaENhZHJlRGF0YSgpXG4gICAgdGhpcy5nZXRHcm91cERhdGEoKVxuICAgIHRoaXMuZ2V0UGVuZGluZ0RldGFpbHMoKVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gdGhpcy5sb2FkRGVzaWduYXRpb25zKClcbiAgICAgIHRoaXMuY2hlY2tTZWxlY3RlZE9yZ0hhc0Rlc2lnbmF0aW9ucygpO1xuICAgICAgLy90aGlzLmdldE1hc3RlckRlc2lnbmF0aW9uKClcbiAgICAgIHRoaXMuZ2V0TWFzdGVyTGFuZ3VhZ2UoKVxuICAgIH0sIDUwMClcbiAgfVxuXG4gIGdldEZvcm1EZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLmZvcm1JZCkge1xuICAgICAgdGhpcy5wcm9maWxlVjJTdmMuZ2V0Rm9ybVYyQnlJRCh0aGlzLmZvcm1JZCkuc3Vic2NyaWJlKChyZXNwb25jZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25jZSkge1xuICAgICAgICAgIHRoaXMuZm9ybXNEZXRpbHMgPSBfLmdldChyZXNwb25jZSwgJ3Jlc3VsdC5yZXNwb25zZScsIHt9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlQ2hhbmdlRnVuY3Rpb25zKCkge1xuICAgIGNvbnN0IHNlYXJjaERlc2lnbmF0aW9uQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnc2VhcmNoRGVzaWduYXRpb24nKVxuICAgIGlmIChzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wpIHtcbiAgICAgIGxldCBzZXR0aW5nVmFsdWVDaGFuZ2UgPSB0cnVlXG4gICAgICBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgKS5zdWJzY3JpYmUoc2VhcmNoVGV4dCA9PiB7XG4gICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbnNPZmZzZXQgPSAwXG4gICAgICAgICAgaWYgKHNlYXJjaFRleHQgJiYgc2VhcmNoVGV4dC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhpcy5kZXNpZ25hdGlvblNlYXJjaFRleHQgPSBzZWFyY2hUZXh0XG4gICAgICAgICAgICB0aGlzLmdldGRlc2lnbmF0aW9uc01ldGEoKVxuICAgICAgICAgIH0gZWxzZSBpZiAoIXNlYXJjaFRleHQpIHtcbiAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uU2VhcmNoVGV4dCA9IHNlYXJjaFRleHRcbiAgICAgICAgICAgIGlmKCFzZXR0aW5nVmFsdWVDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgdGhpcy5nZXRkZXNpZ25hdGlvbnNNZXRhKCkgXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoZWNrQ3VycmVudERlc2lnbmF0aW9uUHJlc2VudCgpXG4gICAgICAgICAgfVxuICAgICAgICAgIHNldHRpbmdWYWx1ZUNoYW5nZSA9IGZhbHNlXG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgZmV0Y2hDYWRyZURhdGEoKSB7XG4gICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciArIDFcbiAgICB0aGlzLnByb2ZpbGVWMlN2Yy5mZXRjaENhZHJlKCkuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgdGhpcy5jaXZpbFNlcnZpY2VEYXRhID0gcmVzcG9uc2UucmVzdWx0LnJlc3BvbnNlLnZhbHVlLmNpdmlsU2VydmljZVR5cGVcbiAgICAgIHRoaXMuY2l2aWxTZXJ2aWNlVHlwZXMgPSB0aGlzLmNpdmlsU2VydmljZURhdGEuY2l2aWxTZXJ2aWNlVHlwZUxpc3QubWFwKChzZXJ2aWNlOiBhbnkpID0+IHNlcnZpY2UubmFtZSlcbiAgICB9KVxuICB9XG5cbiAgZ2V0SXNDYWRyZVN0YXR1cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuaXNDYWRyZVN0YXR1cyA9IHZhbHVlXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnVzZXJEZXRhaWxzRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgdHlwZU9mQ2l2aWxTZXJ2aWNlOiAnJyxcbiAgICAgICAgc2VydmljZVR5cGU6ICcnLFxuICAgICAgICBjYWRyZU5hbWU6ICcnLFxuICAgICAgICBjYWRyZUJhdGNoOiAnJyxcbiAgICAgICAgY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eTogJycsXG4gICAgICB9KVxuICAgICAgdGhpcy5hZGRWYWxpZGF0b3JzKClcbiAgICB9XG5cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0JhdGNoRm9yTm9DYWRyZSA9IGZhbHNlXG4gICAgICB0aGlzLnJlbW92ZVZhbGlkYXRvcnMoKVxuICAgIH1cbiAgfVxuXG4gIGdldEFsbEVycm9ycygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlczogc3RyaW5nW10gPSBbXTtcbiAgICBPYmplY3Qua2V5cyh0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sRXJyb3JzID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNba2V5XS5lcnJvcnM7XG4gICAgICBpZiAoY29udHJvbEVycm9ycykge1xuICAgICAgICBPYmplY3Qua2V5cyhjb250cm9sRXJyb3JzKS5mb3JFYWNoKChlcnJvcktleSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoZXJyb3JLZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlcy5wdXNoKGAke2tleX0gaXMgcmVxdWlyZWQuYCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWlubGVuZ3RoJzpcbiAgICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRMZW5ndGggPSBjb250cm9sRXJyb3JzWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aDtcbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlcy5wdXNoKGAke2tleX0gbXVzdCBiZSBhdCBsZWFzdCAke3JlcXVpcmVkTGVuZ3RofSBjaGFyYWN0ZXJzIGxvbmcuYCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzLnB1c2goYFBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuYCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgLy8gQWRkIG1vcmUgY2FzZXMgZm9yIG90aGVyIHZhbGlkYXRvcnMgYXMgbmVlZGVkXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZXJyb3JNZXNzYWdlcztcbiAgfVxuXG4gIGFkZFZhbGlkYXRvcnMoKSB7XG4gICAgY29uc3QgZmllbGRDb250cm9sMCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnaXNDYWRyZScpXG4gICAgaWYgKGZpZWxkQ29udHJvbDApIHtcbiAgICAgIGZpZWxkQ29udHJvbDAuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgZmllbGRDb250cm9sMC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICB9XG4gICAgY29uc3QgZmllbGRDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCd0eXBlT2ZDaXZpbFNlcnZpY2UnKVxuICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgIGZpZWxkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICBmaWVsZENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgfVxuICAgIGNvbnN0IGZpZWxkQ29udHJvbDEgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJylcbiAgICBpZiAoZmllbGRDb250cm9sMSkge1xuICAgICAgZmllbGRDb250cm9sMS5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICBmaWVsZENvbnRyb2wxLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgIH1cbiAgICBjb25zdCBmaWVsZENvbnRyb2wzID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdjYWRyZUJhdGNoJylcbiAgICBpZiAoZmllbGRDb250cm9sMykge1xuICAgICAgZmllbGRDb250cm9sMy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICBmaWVsZENvbnRyb2wzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVZhbGlkYXRvcnMoKSB7XG4gICAgY29uc3QgZmllbGRDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCd0eXBlT2ZDaXZpbFNlcnZpY2UnKVxuICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgIGZpZWxkQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKVxuICAgICAgZmllbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgIH1cbiAgICBjb25zdCBmaWVsZENvbnRyb2wxID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpXG4gICAgaWYgKGZpZWxkQ29udHJvbDEpIHtcbiAgICAgIGZpZWxkQ29udHJvbDEuY2xlYXJWYWxpZGF0b3JzKClcbiAgICAgIGZpZWxkQ29udHJvbDEudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgfVxuICAgIGNvbnN0IGZpZWxkQ29udHJvbDIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlTmFtZScpXG4gICAgaWYgKGZpZWxkQ29udHJvbDIpIHtcbiAgICAgIGZpZWxkQ29udHJvbDIuY2xlYXJWYWxpZGF0b3JzKClcbiAgICAgIGZpZWxkQ29udHJvbDIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgfVxuICAgIGNvbnN0IGZpZWxkQ29udHJvbDMgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlQmF0Y2gnKVxuICAgIGlmIChmaWVsZENvbnRyb2wzKSB7XG4gICAgICBmaWVsZENvbnRyb2wzLmNsZWFyVmFsaWRhdG9ycygpXG4gICAgICBmaWVsZENvbnRyb2wzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgIH1cbiAgfVxuXG4gIGdldFNlcnZpY2UoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNlcnZpY2VUeXBlQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnc2VydmljZVR5cGUnKVxuICAgIGNvbnN0IGNhZHJlQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVOYW1lJylcbiAgICBjb25zdCBiYXRjaENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlQmF0Y2gnKVxuICAgIGNvbnN0IGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdjYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5JylcblxuICAgIGlmIChzZXJ2aWNlVHlwZUNvbnRyb2wpIHsgc2VydmljZVR5cGVDb250cm9sLnJlc2V0KCkgfVxuICAgIGlmIChjYWRyZUNvbnRyb2wpIHsgY2FkcmVDb250cm9sLnJlc2V0KCkgfVxuICAgIGlmIChiYXRjaENvbnRyb2wpIHsgYmF0Y2hDb250cm9sLnJlc2V0KCkgfVxuICAgIGlmIChjYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5Q29udHJvbCkgeyBjYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5Q29udHJvbC5yZXNldCgpIH1cblxuICAgIHRoaXMuc2VydmljZVR5cGUgPSB0aGlzLmNpdmlsU2VydmljZURhdGEuY2l2aWxTZXJ2aWNlVHlwZUxpc3QuZmluZCgoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm5hbWUgPT09IGV2ZW50KVxuICAgIHRoaXMuc2VydmljZVR5cGUgPSB0aGlzLmNpdmlsU2VydmljZURhdGEuY2l2aWxTZXJ2aWNlVHlwZUxpc3QuZmluZCgoZWxlbWVudDogYW55KSA9PiBlbGVtZW50Lm5hbWUgPT09IGV2ZW50KVxuICAgIGlmICh0aGlzLnNlcnZpY2VUeXBlKSB7XG4gICAgICB0aGlzLnNlcnZpY2VMaXN0RGF0YSA9IHRoaXMuc2VydmljZVR5cGUuc2VydmljZUxpc3RcbiAgICAgIHRoaXMuc2VydmljZU5hbWUgPSB0aGlzLnNlcnZpY2VMaXN0RGF0YS5tYXAoKHNlcnZpY2U6IGFueSkgPT4gc2VydmljZS5uYW1lKVxuICAgICAgdGhpcy5zZXJ2aWNlSWQgPSB0aGlzLnNlcnZpY2VUeXBlLmlkXG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICcnXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ1NlcnZpY2UgVHlwZSBub3QgZm91bmQnXG4gICAgfVxuICB9XG5cbiAgb25TZXJ2aWNlU2VsZWN0KGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBjYWRyZUNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlTmFtZScpXG4gICAgY29uc3QgYmF0Y2hDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdjYWRyZUJhdGNoJylcbiAgICBjb25zdCBjYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5Q29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eScpXG4gICAgaWYgKGNhZHJlQ29udHJvbCkgeyBjYWRyZUNvbnRyb2wucmVzZXQoKSB9XG4gICAgaWYgKGJhdGNoQ29udHJvbCkgeyBiYXRjaENvbnRyb2wucmVzZXQoKSB9XG4gICAgaWYgKGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlDb250cm9sKSB7IGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlDb250cm9sLnJlc2V0KCkgfVxuICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZSA9IGV2ZW50LnZhbHVlXG4gICAgaWYgKHRoaXMuc2VydmljZUxpc3REYXRhKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkU2VydmljZSA9IHRoaXMuc2VydmljZUxpc3REYXRhLmZpbmQoKHNlcnZpY2U6IGFueSkgPT4gc2VydmljZS5uYW1lID09PSB0aGlzLnNlbGVjdGVkU2VydmljZU5hbWUpXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5jaXZpbFNlcnZpY2VOYW1lID0gdGhpcy5zZWxlY3RlZFNlcnZpY2UubmFtZVxuICAgICAgICB0aGlzLmNpdmlsU2VydmljZUlkID0gdGhpcy5zZWxlY3RlZFNlcnZpY2UuaWRcbiAgICAgICAgdGhpcy5jYWRyZSA9IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlLmNhZHJlTGlzdCA/IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlLmNhZHJlTGlzdC5tYXAoKGNhZHJlOiBhbnkpID0+IGNhZHJlLm5hbWUpIDogW11cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlICYmIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHkpIHtcbiAgICAgIHRoaXMuY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eSA9IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5ID0gJ05BJ1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZFNlcnZpY2UgJiYgdGhpcy5zZWxlY3RlZFNlcnZpY2UuY2FkcmVMaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zaG93QmF0Y2hGb3JOb0NhZHJlID0gdHJ1ZVxuICAgICAgdGhpcy5zdGFydEJhdGNoID0gdGhpcy5zZWxlY3RlZFNlcnZpY2UuY29tbW9uQmF0Y2hTdGFydFllYXJcbiAgICAgIHRoaXMuZW5kQmF0Y2ggPSB0aGlzLnNlbGVjdGVkU2VydmljZS5jb21tb25CYXRjaEVuZFllYXJcbiAgICAgIHRoaXMuZXhjbHVzaW9uWWVhciA9IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlLmNvbW1vbkJhdGNoRXhjbHVzaW9uWWVhckxpc3RcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlXG4gICAgICB0aGlzLnllYXJBcnJheSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuZW5kQmF0Y2ggLSB0aGlzLnN0YXJ0QmF0Y2ggKyAxIH0sIChfLCBpbmRleCkgPT4gdGhpcy5zdGFydEJhdGNoICsgaW5kZXgpXG4gICAgICAgIC5maWx0ZXIoeWVhciA9PiAhdGhpcy5leGNsdXNpb25ZZWFyLmluY2x1ZGVzKHllYXIpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dCYXRjaEZvck5vQ2FkcmUgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIG9uQ2FkcmVTZWxlY3QoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGJhdGNoQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVCYXRjaCcpXG4gICAgY29uc3QgY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eUNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlQ29udHJvbGxpbmdBdXRob3JpdHknKVxuXG4gICAgaWYgKGJhdGNoQ29udHJvbCkgeyBiYXRjaENvbnRyb2wucmVzZXQoKSB9XG4gICAgaWYgKGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlDb250cm9sKSB7IGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlDb250cm9sLnJlc2V0KCkgfVxuICAgIHRoaXMuc2VsZWN0ZWRDYWRyZU5hbWUgPSBldmVudFxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2VydmljZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZENhZHJlID0gdGhpcy5zZWxlY3RlZFNlcnZpY2UuY2FkcmVMaXN0LmZpbmQoKGNhZHJlOiBhbnkpID0+IGNhZHJlLm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRDYWRyZU5hbWUpXG4gICAgICB0aGlzLnN0YXJ0QmF0Y2ggPSB0aGlzLnNlbGVjdGVkQ2FkcmUgPyB0aGlzLnNlbGVjdGVkQ2FkcmUuc3RhcnRCYXRjaFllYXIgOiAnJ1xuICAgICAgdGhpcy5lbmRCYXRjaCA9IHRoaXMuc2VsZWN0ZWRDYWRyZSA/IHRoaXMuc2VsZWN0ZWRDYWRyZS5lbmRCYXRjaFllYXIgOiAnJ1xuICAgICAgdGhpcy5leGNsdXNpb25ZZWFyID0gdGhpcy5zZWxlY3RlZENhZHJlID8gdGhpcy5zZWxlY3RlZENhZHJlLmV4Y3Vsc2lvblllYXJMaXN0IDogJydcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlXG4gICAgICB0aGlzLnllYXJBcnJheSA9IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuZW5kQmF0Y2ggLSB0aGlzLnN0YXJ0QmF0Y2ggKyAxIH0sIChfLCBpbmRleCkgPT4gdGhpcy5zdGFydEJhdGNoICsgaW5kZXgpXG4gICAgICAgIC5maWx0ZXIoeWVhciA9PiAhdGhpcy5leGNsdXNpb25ZZWFyLmluY2x1ZGVzKHllYXIpKVxuICAgICAgdGhpcy5jYWRyZUlkID0gdGhpcy5zZWxlY3RlZENhZHJlID8gdGhpcy5zZWxlY3RlZENhZHJlLmlkIDogJydcbiAgICB9XG5cbiAgfVxuXG4gIGdldFBlbmRpbmdEZXRhaWxzKCkge1xuICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgKyAxXG4gICAgdGhpcy5wcm9maWxlVjJTdmMuZmV0Y2hBcHByb3ZhbERldGFpbHMoKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgIGlmIChyZXNwICYmIHJlc3AucmVzdWx0ICYmIHJlc3AucmVzdWx0LmRhdGEpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nRmlsZWRzID0gcmVzcC5yZXN1bHQuZGF0YVxuICAgICAgICBpZiAodGhpcy5wZW5kaW5nRmlsZWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdGaWxlZHMuZm9yRWFjaCgodXNlcjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodXNlclsnZ3JvdXAnXSkge1xuICAgICAgICAgICAgICBsZXQgY3RybCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnZ3JvdXAnKVxuICAgICAgICAgICAgICBpZiAoY3RybCkge1xuICAgICAgICAgICAgICAgIGN0cmwucGF0Y2hWYWx1ZSh7IGdyb3VwOiB1c2VyWydncm91cCddIH0pXG4gICAgICAgICAgICAgICAgdGhpcy5wR3JvdXAgPSB1c2VyWydncm91cCddXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh1c2VyWydkZXNpZ25hdGlvbiddKSB7XG4gICAgICAgICAgICAgIGxldCBjdHJsID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdkZXNpZ25hdGlvbicpXG4gICAgICAgICAgICAgIGlmIChjdHJsKSB7XG4gICAgICAgICAgICAgICAgY3RybC5wYXRjaFZhbHVlKHsgZGVzaWduYXRpb246IHVzZXJbJ2Rlc2lnbmF0aW9uJ10gfSlcbiAgICAgICAgICAgICAgICB0aGlzLnBEZXNpZ25hdGlvbiA9IHVzZXJbJ2Rlc2lnbmF0aW9uJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2VcbiAgICAgIHRoaXMuZGVmaW5lRm9ybUF0dHJpYnV0ZXMoKVxuICAgIH0sIGVycm9yID0+IHtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlXG4gICAgfSlcbiAgfVxuXG4gIGRlZmluZUZvcm1BdHRyaWJ1dGVzKCkge1xuICAgIGlmICh0aGlzLmJhdGNoRGV0YWlscy5iYXRjaEF0dHJpYnV0ZXMudXNlclByb2ZpbGVGaWxlZHMgJiZcbiAgICAgIHRoaXMuYmF0Y2hEZXRhaWxzLmJhdGNoQXR0cmlidXRlcy5icEVucm9sTWFuZGF0b3J5UHJvZmlsZUZpZWxkcykge1xuICAgICAgbGV0IGN1c3RvbUF0dHIgPSB0aGlzLmJhdGNoRGV0YWlscy5iYXRjaEF0dHJpYnV0ZXMuYnBFbnJvbE1hbmRhdG9yeVByb2ZpbGVGaWVsZHNcbiAgICAgIGNvbnNvbGUubG9nKFwiY3VzdG9tQXR0ciBcIiwgY3VzdG9tQXR0cilcbiAgICAgIGlmICh0aGlzLmZpbmRBdHRyKGN1c3RvbUF0dHIsICduYW1lJykpIHtcbiAgICAgICAgdGhpcy5jYW5TaG93TmFtZSA9IHRydWVcbiAgICAgICAgdGhpcy5zaG93bmFtZSA9IHRydWVcbiAgICAgICAgY29uc3QgZmllbGRDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCduYW1lJylcbiAgICAgICAgaWYgKGZpZWxkQ29udHJvbCkge1xuICAgICAgICAgIGZpZWxkQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5maXJzdG5hbWUpXG4gICAgICAgICAgZmllbGRDb250cm9sLmRpc2FibGUoKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnICYmXG4gICAgICAgICAgIXRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmZpcnN0bmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmNhblNob3dOYW1lID0gZmFsc2VcbiAgICAgICAgICB0aGlzLnNob3duYW1lID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5maW5kQXR0cihjdXN0b21BdHRyLCAnZW1haWwnKSkge1xuICAgICAgICB0aGlzLmNhblNob3dFbWFpbCA9IHRydWVcbiAgICAgICAgY29uc3QgZmllbGRDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdwcmltYXJ5RW1haWwnKVxuICAgICAgICBpZiAoZmllbGRDb250cm9sKSB7XG4gICAgICAgICAgZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLnByaW1hcnlFbWFpbClcbiAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucHJpbWFyeUVtYWlsKSB7XG4gICAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucHJpbWFyeUVtYWlsKVxuICAgICAgICAgICAgdGhpcy5lVmVyaWZpZWQgPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dFbWFpbCA9IGZhbHNlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0VtYWlsID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lVmVyaWZpZWQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZpbmRBdHRyKGN1c3RvbUF0dHIsICdvcmdhbmlzYXRpb24nKSkge1xuICAgICAgICB0aGlzLmNhblNob3dPcmcgPSB0cnVlXG4gICAgICAgIHRoaXMuc2hvd09yZyA9IHRydWVcbiAgICAgICAgY29uc3QgZmllbGRDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdvcmdhbmlzYXRpb24nKVxuICAgICAgICBpZiAoZmllbGRDb250cm9sKSB7XG4gICAgICAgICAgZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMuZGVwYXJ0bWVudE5hbWUpXG4gICAgICAgICAgZmllbGRDb250cm9sLmRpc2FibGUoKVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnICYmXG4gICAgICAgICAgIXRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMuZGVwYXJ0bWVudE5hbWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5jYW5TaG93T3JnID0gZmFsc2VcbiAgICAgICAgICB0aGlzLnNob3dPcmcgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZpbmRBdHRyKGN1c3RvbUF0dHIsICdncm91cCcpKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd0dyb3VwID0gdHJ1ZVxuICAgICAgICB0aGlzLnNob3dHcm91cCA9IHRydWVcbiAgICAgICAgY29uc3QgZmllbGRDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdncm91cCcpXG4gICAgICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgICAgICBpZiAodGhpcy5wR3JvdXApIHtcbiAgICAgICAgICAgIGZpZWxkQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnBHcm91cClcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICAvLyAgIHRoaXMuY2FuU2hvd0dyb3VwID0gdHJ1ZVxuICAgICAgICAgICAgLy8gICB0aGlzLnNob3dHcm91cCA9IHRydWVcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscyAmJlxuICAgICAgICAgICAgICB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHMubGVuZ3RoICYmXG4gICAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5ncm91cFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZpZWxkQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHNbMF0uZ3JvdXApXG4gICAgICAgICAgICAgIC8vIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICAgIC8vICAgdGhpcy5jYW5TaG93R3JvdXAgPSBmYWxzZVxuICAgICAgICAgICAgICAvLyAgIHRoaXMuc2hvd0dyb3VwID0gZmFsc2VcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICAgZmllbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maW5kQXR0cihjdXN0b21BdHRyLCAnZGVzaWduYXRpb24nKSkge1xuICAgICAgICB0aGlzLmNhblNob3dEZXNpZ25hdGlvbiA9IHRydWVcbiAgICAgICAgdGhpcy5zaG93RGVzaWduYXRpb24gPSB0cnVlXG4gICAgICAgIGNvbnN0IGZpZWxkQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnZGVzaWduYXRpb24nKVxuICAgICAgICBpZiAoZmllbGRDb250cm9sKSB7XG4gICAgICAgICAgaWYgKHRoaXMucERlc2lnbmF0aW9uKSB7XG4gICAgICAgICAgICBmaWVsZENvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLnBEZXNpZ25hdGlvbilcbiAgICAgICAgICAgIC8vIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICAvLyAgIHRoaXMuY2FuU2hvd0Rlc2lnbmF0aW9uID0gdHJ1ZVxuICAgICAgICAgICAgLy8gICB0aGlzLnNob3dEZXNpZ25hdGlvbiA9IHRydWVcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscyAmJlxuICAgICAgICAgICAgICB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHMubGVuZ3RoICYmXG4gICAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5kZXNpZ25hdGlvbikge1xuICAgICAgICAgICAgICBmaWVsZENvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHNbMF0uZGVzaWduYXRpb24pXG4gICAgICAgICAgICAgIC8vIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICAgIC8vICAgdGhpcy5jYW5TaG93RGVzaWduYXRpb24gPSBmYWxzZVxuICAgICAgICAgICAgICAvLyAgIHRoaXMuc2hvd0Rlc2lnbmF0aW9uID0gZmFsc2VcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICAgZmllbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maW5kQXR0cihjdXN0b21BdHRyLCAnZW1wbG95ZWVDb2RlJykpIHtcbiAgICAgICAgdGhpcy5jYW5TaG93RW1wbG95ZWVDb2RlID0gdHJ1ZVxuICAgICAgICBjb25zdCBjb250cmwgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2VtcGxveWVlQ29kZScpXG4gICAgICAgIGlmIChjb250cmwpIHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5lbXBsb3llZUNvZGUpIHtcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWx1ZSh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmVtcGxveWVlQ29kZSlcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oRU1QX0lEX1BBVFRFUk4pXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuU2hvd0VtcGxveWVlQ29kZSA9IGZhbHNlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0VtcGxveWVlQ29kZSA9IHRydWVcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4oRU1QX0lEX1BBVFRFUk4pXSk7XG4gICAgICAgICAgICBjb250cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZpbmRBdHRyKGN1c3RvbUF0dHIsICdtb2JpbGUnKSkge1xuICAgICAgICB0aGlzLmNhbnNob3dNb2JpbGUgPSB0cnVlXG4gICAgICAgIGNvbnN0IGNvbnRybCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnbW9iaWxlJylcbiAgICAgICAgaWYgKGNvbnRybCkge1xuICAgICAgICAgIGlmICh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5tb2JpbGUgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucGhvbmVWZXJpZmllZCkge1xuICAgICAgICAgICAgY29udHJsLnNldFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZSlcbiAgICAgICAgICAgIHRoaXMubVZlcmlmaWVkID0gdHJ1ZVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApLCBWYWxpZGF0b3JzLnBhdHRlcm4oTU9CSUxFX1BBVFRFUk4pXSk7XG4gICAgICAgICAgICBjb250cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNhbnNob3dNb2JpbGUgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5tVmVyaWZpZWQgPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd01vYmlsZSA9IHRydWVcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKE1PQklMRV9QQVRURVJOKV0pO1xuICAgICAgICAgICAgY29udHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jYW5zaG93TW9iaWxlID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLm1WZXJpZmllZCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ2dlbmRlcicpKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd0dlbmRlciA9IHRydWVcbiAgICAgICAgY29uc3QgY29udHJsID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdnZW5kZXInKVxuICAgICAgICBpZiAoY29udHJsKSB7XG4gICAgICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmdlbmRlcikge1xuICAgICAgICAgICAgY29udHJsLnNldFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmdlbmRlcilcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuU2hvd0dlbmRlciA9IGZhbHNlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0dlbmRlciA9IHRydWVcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ2RvYicpKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd0RvYiA9IHRydWVcbiAgICAgICAgY29uc3QgY29udHJsID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdkb2InKVxuICAgICAgICBpZiAoY29udHJsKSB7XG4gICAgICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmRvYikge1xuICAgICAgICAgICAgbGV0IF9kb2I6IGFueSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmRvYlxuICAgICAgICAgICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gX2RvYi5zcGxpdCgnLScpXG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoTnVtYmVyKHllYXIpLCBOdW1iZXIobW9udGgpIC0gMSwgTnVtYmVyKGRheSkpXG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWREYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJylcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE1vbnRoID0gU3RyaW5nKGRhdGUuZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJylcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoYCR7Zm9ybWF0dGVkWWVhcn0tJHtmb3JtYXR0ZWRNb250aH0tJHtmb3JtYXR0ZWREYXl9YClcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkRGF0ZSlcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuU2hvd0RvYiA9IGZhbHNlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0RvYiA9IHRydWVcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ2RvbWljaWxlTWVkaXVtJykpIHtcbiAgICAgICAgdGhpcy5jYW5TaG93RG9taWNpbGVNZWRpdW0gPSB0cnVlXG4gICAgICAgIGNvbnN0IGNvbnRybCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnZG9taWNpbGVNZWRpdW0nKVxuICAgICAgICBpZiAoY29udHJsKSB7XG4gICAgICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmRvbWljaWxlTWVkaXVtKSB7XG4gICAgICAgICAgICBjb250cmwuc2V0VmFsdWUodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9taWNpbGVNZWRpdW0pXG4gICAgICAgICAgICBjb250cmwuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICAgICBjb250cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNhblNob3dEb21pY2lsZU1lZGl1bSA9IGZhbHNlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0RlY2ltYWxNZWRpdW0gPSB0cnVlXG4gICAgICAgICAgICBjb250cmwuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICAgICBjb250cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZpbmRBdHRyKGN1c3RvbUF0dHIsICdjYXRlZ29yeScpKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd0NhdGVnb3J5ID0gdHJ1ZVxuICAgICAgICBjb25zdCBjb250cmwgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhdGVnb3J5JylcbiAgICAgICAgaWYgKGNvbnRybCkge1xuICAgICAgICAgIGlmICh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5jYXRlZ29yeSkge1xuICAgICAgICAgICAgY29udHJsLnNldFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmNhdGVnb3J5KVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICAgICAgY29udHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9maWxlRm9ybVR5cGUgPT09ICdBdmFpbGFibGUgdXNlciBmaWxsZWQgaUdPVCBwcm9maWxlJykge1xuICAgICAgICAgICAgdGhpcy5jYW5TaG93Q2F0ZWdvcnkgPSBmYWxzZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3dDYXRlZ29yeSA9IHRydWVcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ3BpbkNvZGUnKSkge1xuICAgICAgICB0aGlzLmNhblNob3dwaW5Db2RlID0gdHJ1ZVxuICAgICAgICBjb25zdCBjb250cmwgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ3BpbkNvZGUnKVxuICAgICAgICBpZiAoY29udHJsKSB7XG4gICAgICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMucGluQ29kZSkge1xuICAgICAgICAgICAgY29udHJsLnNldFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMucGluQ29kZSlcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNiksIFZhbGlkYXRvcnMucGF0dGVybihQSU5fQ09ERV9QQVRURVJOKV0pXG4gICAgICAgICAgICBjb250cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNhblNob3dwaW5Db2RlID0gZmFsc2VcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93UGluQ29kZSA9IHRydWVcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCg2KSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNiksIFZhbGlkYXRvcnMucGF0dGVybihQSU5fQ09ERV9QQVRURVJOKV0pXG4gICAgICAgICAgICBjb250cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZpbmRBdHRyKGN1c3RvbUF0dHIsICdjYWRyZURldGFpbHMnKSkge1xuICAgICAgICB0aGlzLmNhblNob3dzaG93Q2FkcmVEZXRhaWxzID0gdHJ1ZVxuICAgICAgICBjb25zdCBjb250cmwgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2lzQ2FkcmUnKVxuICAgICAgICBpZiAoY29udHJsKSB7XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzKS5pbmNsdWRlcygnaXNDYWRyZScpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuaXNDYWRyZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBjb250cmwuc2V0VmFsdWUodHJ1ZSlcbiAgICAgICAgICAgICAgdGhpcy5pc0NhZHJlU3RhdHVzID0gdHJ1ZVxuICAgICAgICAgICAgICB0aGlzLnNlcnZpY2VJZCA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNpdmlsU2VydmljZVR5cGVJZFxuICAgICAgICAgICAgICB0aGlzLmNpdmlsU2VydmljZUlkID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlSWRcbiAgICAgICAgICAgICAgdGhpcy5jYWRyZUlkID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVJZFxuICAgICAgICAgICAgICB0aGlzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHkgPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5TmFtZVxuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldFNlcnZpY2UodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlVHlwZSlcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VydmljZVNlbGVjdCh7IHZhbHVlOiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VOYW1lIH0pXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5vbkNhZHJlU2VsZWN0KHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlTmFtZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyRGV0YWlsc0Zvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICB0eXBlT2ZDaXZpbFNlcnZpY2U6IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNpdmlsU2VydmljZVR5cGUsXG4gICAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZTogdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlTmFtZSxcbiAgICAgICAgICAgICAgICAgIGNhZHJlTmFtZTogdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVOYW1lLFxuICAgICAgICAgICAgICAgICAgY2FkcmVCYXRjaDogdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVCYXRjaCxcbiAgICAgICAgICAgICAgICAgIGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHk6IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlOYW1lLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0sIDEwMDApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb250cmwuc2V0VmFsdWUoZmFsc2UpXG4gICAgICAgICAgICAgIHRoaXMuaXNDYWRyZVN0YXR1cyA9IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNhblNob3dzaG93Q2FkcmVEZXRhaWxzID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuaXNDYWRyZVN0YXR1cyA9IGZhbHNlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmaW5kQXR0cihjdXN0b21BdHRyOiBhbnksIGZOYW1lOiBhbnkpIHtcbiAgICBpZiAoZk5hbWUgPT09ICduYW1lJykge1xuICAgICAgcmV0dXJuIGN1c3RvbUF0dHIuZmluZCgoX2ZpZWxkOiBhbnkpID0+IF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5maXJzdG5hbWUnKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdlbWFpbCcpIHtcbiAgICAgIHJldHVybiBjdXN0b21BdHRyLmZpbmQoKF9maWVsZDogYW55KSA9PiBfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucHJpbWFyeUVtYWlsJylcbiAgICB9XG4gICAgaWYgKGZOYW1lID09PSAnb3JnYW5pc2F0aW9uJykge1xuICAgICAgcmV0dXJuIGN1c3RvbUF0dHIuZmluZCgoX2ZpZWxkOiBhbnkpID0+IF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmRlcGFydG1lbnROYW1lJylcbiAgICB9XG4gICAgaWYgKGZOYW1lID09PSAnZ3JvdXAnKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscy5ncm91cCcpXG4gICAgfVxuICAgIGlmIChmTmFtZSA9PT0gJ2Rlc2lnbmF0aW9uJykge1xuICAgICAgcmV0dXJuIGN1c3RvbUF0dHIuZmluZCgoX2ZpZWxkOiBhbnkpID0+IF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHMuZGVzaWduYXRpb24nKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdlbXBsb3llZUNvZGUnKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMuZW1wbG95ZWVDb2RlJylcbiAgICB9XG4gICAgaWYgKGZOYW1lID09PSAnbW9iaWxlJykge1xuICAgICAgcmV0dXJuIGN1c3RvbUF0dHIuZmluZCgoX2ZpZWxkOiBhbnkpID0+IF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5tb2JpbGUnKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdnZW5kZXInKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmdlbmRlcicpXG4gICAgfVxuICAgIGlmIChmTmFtZSA9PT0gJ2RvYicpIHtcbiAgICAgIHJldHVybiBjdXN0b21BdHRyLmZpbmQoKF9maWVsZDogYW55KSA9PiBfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9iJylcbiAgICB9XG4gICAgaWYgKGZOYW1lID09PSAnZG9taWNpbGVNZWRpdW0nKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmRvbWljaWxlTWVkaXVtJylcbiAgICB9XG4gICAgaWYgKGZOYW1lID09PSAnY2F0ZWdvcnknKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmNhdGVnb3J5JylcbiAgICB9XG4gICAgaWYgKGZOYW1lID09PSAncGluQ29kZScpIHtcbiAgICAgIHJldHVybiBjdXN0b21BdHRyLmZpbmQoKF9maWVsZDogYW55KSA9PiBfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5waW5Db2RlJylcbiAgICB9XG4gICAgaWYgKGZOYW1lID09PSAnY2FkcmVEZXRhaWxzJykge1xuICAgICAgcmV0dXJuIGN1c3RvbUF0dHIuZmluZCgoX2ZpZWxkOiBhbnkpID0+IF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VUeXBlJylcbiAgICB9XG5cbiAgfVxuXG4gIGZpbmRJblByb2ZpbGUoYXR0cjogc3RyaW5nKSB7XG4gICAgaWYgKGF0dHIgPT09ICduYW1lJykge1xuICAgICAgcmV0dXJuIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmZpcnN0TmFtZSB8fCB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5maXJzdG5hbWVcbiAgICB9XG4gICAgaWYgKGF0dHIgPT09ICdncm91cCcpIHtcbiAgICAgIHJldHVybiAoIXRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmlsZUdyb3VwU3RhdHVzKSB8fFxuICAgICAgICB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2ZpbGVHcm91cFN0YXR1cyA9PT0gJ05PVC1WRVJJRklFRCcgfHwgKHRoaXMucEdyb3VwID8gdHJ1ZSA6IGZhbHNlKVxuICAgIH1cbiAgICBpZiAoYXR0ciA9PT0gJ2Rlc2lnbmF0aW9uJykge1xuICAgICAgcmV0dXJuICghdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9maWxlRGVzaWduYXRpb25TdGF0dXMpIHx8XG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmlsZURlc2lnbmF0aW9uU3RhdHVzID09PSAnTk9ULVZFUklGSUVEJyB8fCAodGhpcy5wRGVzaWduYXRpb24gPyB0cnVlIDogZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgZ2V0R3JvdXBEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgKyAxXG4gICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuZ2V0R3JvdXBzKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgICB0aGlzLmdyb3VwRGF0YSA9IHJlcy5yZXN1bHQgJiYgcmVzLnJlc3VsdC5yZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PiBlbGUgIT09ICdPdGhlcnMnKVxuICAgICAgfSwgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgICBpZiAoIWVycm9yLm9rKSB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHRoaXMuaGFuZGxlVHJhbnNsYXRlVG8oJ2dyb3VwRGF0YUZhaWxlJykpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBoYW5kbGVUcmFuc2xhdGVUbyhtZW51TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuaGFuZGxlVHJhbnNsYXRlVG8obWVudU5hbWUpXG4gIH1cblxuICBjaGVja1NlbGVjdGVkT3JnSGFzRGVzaWduYXRpb25zKCk6IHZvaWQge1xuICAgIGlmKHRoaXMub3JnYW5pc2F0aW9uSWQpIHtcbiAgICAgIGNvbnN0IGlnb3REZXNpZ25hdGlvbkJvZHk6IGFueSA9IHtcbiAgICAgICAgcmVxdWVzdDoge1xuICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIHN0YXR1czogJ0xpdmUnLFxuICAgICAgICAgICAgY2F0ZWdvcnk6ICdkZXNpZ25hdGlvbicsXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBbXG4gICAgICAgICAgICAgIHRoaXMub3JnYW5pc2F0aW9uSWQgKyAnX29kY3NfZGVzaWduYXRpb24nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIG9iamVjdFR5cGU6ICdUZXJtJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpZWxkczogWyduYW1lJ10sXG4gICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgIGxpbWl0OiAxLFxuICAgICAgICAgIHNvcnRfYnk6IHtcbiAgICAgICAgICAgIGxhc3RVcGRhdGVkT246ICdkZXNjJyxcbiAgICAgICAgICAgIG9iamVjdFR5cGU6ICdUZXJtJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZhY2V0czogW10sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2Uuc2VhcmNoSWdvdERlc2lnbmF0aW9uKGlnb3REZXNpZ25hdGlvbkJvZHkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvdW50ID0gXy5nZXQocmVzLCAncmVzdWx0LmNvdW50JywgMCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9yZ0hhc0Rlc2lnbmF0aW9ucyA9IGNvdW50ID4gMDtcbiAgICAgICAgICB0aGlzLmdldGRlc2lnbmF0aW9uc01ldGEoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3JnSGFzRGVzaWduYXRpb25zID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5nZXRkZXNpZ25hdGlvbnNNZXRhKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3JnSGFzRGVzaWduYXRpb25zID0gZmFsc2U7XG4gICAgICB0aGlzLmdldGRlc2lnbmF0aW9uc01ldGEoKTtcbiAgICB9XG4gIH1cblxuICBnZXRkZXNpZ25hdGlvbnNNZXRhKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyA9IHRydWU7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRPcmdIYXNEZXNpZ25hdGlvbnMpIHtcbiAgICAgIHRoaXMuZ2V0SWdvdERlc2lnbmF0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldERlZmF1bHREZXNpZ25hdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldElnb3REZXNpZ25hdGlvbnMoKSB7XG4gICAgY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIHN0YXR1czogXCJMaXZlXCIsXG4gICAgICAgICAgY2F0ZWdvcnk6IFwiZGVzaWduYXRpb25cIixcbiAgICAgICAgICBjYXRlZ29yaWVzOiBbXG4gICAgICAgICAgICB0aGlzLm9yZ2FuaXNhdGlvbklkICsgJ19vZGNzX2Rlc2lnbmF0aW9uJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIG9iamVjdFR5cGU6IFwiVGVybVwiXG4gICAgICAgIH0sXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIFwibmFtZVwiXG4gICAgICAgIF0sXG4gICAgICAgIG9mZnNldDogdGhpcy5kZXNpZ25hdGlvbnNPZmZzZXQsXG4gICAgICAgIGxpbWl0OiB0aGlzLmRlc2lnbmF0aW9uTGlzdExvYWRDb3VudCxcbiAgICAgICAgc29ydF9ieToge1xuICAgICAgICAgIGxhc3RVcGRhdGVkT246IFwiZGVzY1wiLFxuICAgICAgICAgIG9iamVjdFR5cGU6IFwiVGVybVwiXG4gICAgICAgIH0sXG4gICAgICAgIGZhY2V0czogW11cbiAgICAgIH1cbiAgICB9O1xuICAgIGlmKHRoaXMuZGVzaWduYXRpb25TZWFyY2hUZXh0KXtcbiAgICAgIHJlcXVlc3RCb2R5WydyZXF1ZXN0J11bJ3F1ZXJ5J10gPSB0aGlzLmRlc2lnbmF0aW9uU2VhcmNoVGV4dDtcbiAgICB9XG4gICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2Uuc2VhcmNoSWdvdERlc2lnbmF0aW9uKHJlcXVlc3RCb2R5KS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyA9IGZhbHNlO1xuICAgICAgICBpZih0aGlzLmRlc2lnbmF0aW9uc09mZnNldCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25zTWV0YSA9IF8uZ2V0KHJlcywgJ3Jlc3VsdC5UZXJtJywgW10pIGFzIGRlc2lnbmF0aW9uW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbnNNZXRhID0gWy4uLnRoaXMuZGVzaWduYXRpb25zTWV0YSwgLi4uXy5nZXQocmVzLCAncmVzdWx0LlRlcm0nLCBbXSkgYXMgZGVzaWduYXRpb25bXV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXNpZ25hdGlvbnNUb3RhbENvdW50ID0gXy5nZXQocmVzLCAncmVzdWx0LmNvdW50JywgMCk7XG4gICAgICAgIHRoaXMuY2hlY2tDdXJyZW50RGVzaWduYXRpb25QcmVzZW50KCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zID0gZmFsc2U7XG4gICAgICAgIHRoaXMub3BlblNuYWNrYmFyKCdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHJlZnJlc2ggb3IgdHJ5IGFnYWluIGxhdGVyLicpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIFxuICAgIHByaXZhdGUgZ2V0RGVmYXVsdERlc2lnbmF0aW9ucygpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RCb2R5OiBhbnkgPSB7XG4gICAgICAgIGZpbHRlckNyaXRlcmlhTWFwOiB7XG4gICAgICAgICAgc3RhdHVzOiAnQWN0aXZlJ1xuICAgICAgICB9LFxuICAgICAgICByZXF1ZXN0ZWRGaWVsZHM6IFtdLFxuICAgICAgICBwYWdlTnVtYmVyOiB0aGlzLmRlc2lnbmF0aW9uc09mZnNldCxcbiAgICAgICAgcGFnZVNpemU6IHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kZXNpZ25hdGlvblNlYXJjaFRleHQpIHtcbiAgICAgICAgcmVxdWVzdEJvZHlbJ3NlYXJjaFN0cmluZyddID0gdGhpcy5kZXNpZ25hdGlvblNlYXJjaFRleHRcbiAgICAgIH1cbiAgICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnNlYXJjaERlc2lnbmF0aW9uKHJlcXVlc3RCb2R5KS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdC5kYXRhJywgW10pIGFzIGRlc2lnbmF0aW9uW107XG4gICAgICAgICAgY29uc3QgbWFwcGVkID0gY29udGVudC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IGl0ZW0uZGVzaWduYXRpb24gfHwgJycsXG4gICAgICAgICAgICBzdGF0dXM6IGl0ZW0uc3RhdHVzIHx8ICdBY3RpdmUnLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBpZiAodGhpcy5kZXNpZ25hdGlvbnNPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25zTWV0YSA9IG1hcHBlZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbnNNZXRhID0gWy4uLnRoaXMuZGVzaWduYXRpb25zTWV0YSwgLi4ubWFwcGVkXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbnNUb3RhbENvdW50ID0gXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdC50b3RhbENvdW50JywgMCk7XG4gICAgICAgICAgdGhpcy5jaGVja0N1cnJlbnREZXNpZ25hdGlvblByZXNlbnQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm9wZW5TbmFja2JhcignU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSByZWZyZXNoIG9yIHRyeSBhZ2FpbiBsYXRlci4nKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gIGdldE1hc3Rlckxhbmd1YWdlKCk6IHZvaWQge1xuICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLmdldE1hc3Rlckxhbmd1YWdlcygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95U3ViamVjdCQpKVxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5tYXN0ZXJMYW5ndWFnZXMgPSByZXMubGFuZ3VhZ2VzXG4gICAgICAgIHRoaXMubWFzdGVyTGFuZ3VhZ2VCYWNrdXAgPSByZXMubGFuZ3VhZ2VzXG4gICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghZXJyb3Iub2spIHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5oYW5kbGVUcmFuc2xhdGVUbygndW5hYmxlRmV0Y2hNYXN0ZXJMYW5ndWFnZURhdGEnKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxuXG4gIGhhbmRsZUVtcHR5KHR5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0eXBlID09PSAnbW9iaWxlJykge1xuICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZSAmJiAhdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ21vYmlsZSddLnZhbHVlKSB7XG4gICAgICAgIHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydtb2JpbGUnXS5zZXRFcnJvcnMoeyB2YWxpZDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdwcmltYXJ5RW1haWwnKSB7XG4gICAgICBpZiAoIXRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLnByaW1hcnlFbWFpbCAmJiAhdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy52YWx1ZVsncHJpbWFyeUVtYWlsJ10pIHtcbiAgICAgICAgdGhpcy51c2VyRGV0YWlsc0Zvcm0uc2V0RXJyb3JzKHsgdmFsaWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG4gIG9uU3VibWl0Rm9ybShmb3JtOiBhbnkpIHtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgIGNvbnNvbGUubG9nKGZvcm0pXG4gICAgbGV0IHBheWxvYWQgPSB0aGlzLmdlbmVyYXRlUHJvZmlsZVBheWxvYWQoKVxuICAgIGlmICgodGhpcy5jYW5TaG93RGVzaWduYXRpb24gfHwgdGhpcy5jYW5TaG93R3JvdXApICYmICF0aGlzLnNob3dEb3B0Q2hhbmdlcykge1xuICAgICAgaWYgKHRoaXMucGVuZGluZ0ZpbGVkcykge1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlZHMuZm9yRWFjaCgoX29iajogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKF9vYmopLmluY2x1ZGVzKCdkZXNpZ25hdGlvbicpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyICsgMVxuICAgICAgICAgICAgdGhpcy5wcm9maWxlVjJTdmMud2l0aERyYXdBcHByb3ZhbFJlcXVlc3QodGhpcy5jb25maWdTcmMudW5NYXBwZWRVc2VyLmlkLCBfb2JqLndmSWQpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXNwICYmIHJlc3AucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3AucmVzdWx0Lm1lc3NhZ2UpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKF9vYmopLmluY2x1ZGVzKCdncm91cCcpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyICsgMVxuICAgICAgICAgICAgdGhpcy5wcm9maWxlVjJTdmMud2l0aERyYXdBcHByb3ZhbFJlcXVlc3QodGhpcy5jb25maWdTcmMudW5NYXBwZWRVc2VyLmlkLCBfb2JqLndmSWQpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXNwICYmIHJlc3AucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3AucmVzdWx0Lm1lc3NhZ2UpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIGlmICh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5wcmltYXJ5RW1haWwgIT09IHRoaXMudXNlckRldGFpbHNGb3JtLnZhbHVlLnByaW1hcnlFbWFpbCAmJiB0aGlzLmNhblNob3dFbWFpbCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlRW1haWwodGhpcy51c2VyRGV0YWlsc0Zvcm0udmFsdWUucHJpbWFyeUVtYWlsKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3VibWl0UHJvZmlsZShwYXlsb2FkKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucHJpbWFyeUVtYWlsICE9PSB0aGlzLnVzZXJEZXRhaWxzRm9ybS52YWx1ZS5wcmltYXJ5RW1haWwgJiYgdGhpcy5jYW5TaG93RW1haWwpIHtcbiAgICAgICAgdGhpcy51cGRhdGVFbWFpbCh0aGlzLnVzZXJEZXRhaWxzRm9ybS52YWx1ZS5wcmltYXJ5RW1haWwpXG4gICAgICB9XG4gICAgICB0aGlzLnN1Ym1pdFByb2ZpbGUocGF5bG9hZClcbiAgICB9XG4gIH1cblxuICBzdWJtaXRQcm9maWxlKHBheWxvYWQ6IGFueSkge1xuICAgIGlmIChwYXlsb2FkICYmIHBheWxvYWRbJ3JlcXVlc3QnXSAmJiBwYXlsb2FkWydyZXF1ZXN0J11bJ3Byb2ZpbGVEZXRhaWxzJ10gJiYgcGF5bG9hZFsncmVxdWVzdCddWydwcm9maWxlRGV0YWlscyddWydwZXJzb25hbERldGFpbHMnXSAmJiBwYXlsb2FkWydyZXF1ZXN0J11bJ3Byb2ZpbGVEZXRhaWxzJ11bJ3BlcnNvbmFsRGV0YWlscyddWydkb2InXSkge1xuICAgICAgbGV0IGRvYkZvcm1hdCA9IHBheWxvYWRbJ3JlcXVlc3QnXVsncHJvZmlsZURldGFpbHMnXVsncGVyc29uYWxEZXRhaWxzJ11bJ2RvYiddO1xuICAgICAgbGV0IGRvYiA9IGAke25ldyBEYXRlKGRvYkZvcm1hdCkuZ2V0RGF0ZSgpfS0ke25ldyBEYXRlKGRvYkZvcm1hdCkuZ2V0TW9udGgoKSArIDF9LSR7bmV3IERhdGUoZG9iRm9ybWF0KS5nZXRGdWxsWWVhcigpfWBcbiAgICAgIHBheWxvYWRbJ3JlcXVlc3QnXVsncHJvZmlsZURldGFpbHMnXVsncGVyc29uYWxEZXRhaWxzJ11bJ2RvYiddID0gZG9iXG4gICAgfVxuICAgIGlmICh0aGlzLnVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgKyAxXG4gICAgICB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5lZGl0UHJvZmlsZURldGFpbHMocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PT0gJ09LJykge1xuICAgICAgICAgIHRoaXMuc3VibWl0U3VyZXZ5KHRydWUpXG4gICAgICAgIH1cbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcInNvbWV0aGluZyB3ZW50IHdyb25nIVwiKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBzdWJtaXRTdXJldnkoc3RhdHVzOiBhbnkpIHtcbiAgICBsZXQgc3VyZXZ5UGF5bG9hZCA9IHtcbiAgICAgIGZvcm1JZDogXy5nZXQodGhpcy5kYXRhLCAnYmF0Y2hEYXRhLmJhdGNoQXR0cmlidXRlcy5wcm9maWxlU3VydmV5SWQnKSxcbiAgICAgIHZlcnNpb246IDQsXG4gICAgICBzdGF0dXM6ICdTVUJNSVRURUQnLFxuICAgICAgcmVzcG9uc2VzOiB0aGlzLmdlbmVyZWF0ZVN1cnZleVBheWxvYWQoc3RhdHVzKSxcbiAgICAgIGNvbnRleHRJZDogXy5nZXQodGhpcy5kYXRhLCAnYmF0Y2hEYXRhLmNvdXJzZUlkJyksXG4gICAgICBjb250ZXh0TmFtZTogXy5nZXQodGhpcy5kYXRhLCAnY291cnNlTmFtZScsICcnKSxcbiAgICB9XG4gICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciArIDFcbiAgICB0aGlzLm5wc1N2Yy5zdWJtaXRCcEZvcm1XaXRoUHJvZmlsZURldGFpbHMoc3VyZXZ5UGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICBpZiAoXy5nZXQocmVzcCwgJ3BhcmFtcy5zdGF0dXMnKSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tRm9ybSA9IGZhbHNlXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcIkZvcm0gaXMgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseVwiKVxuICAgICAgICB0aGlzLmNsb3NlUG9wdXAoKVxuICAgICAgfVxuICAgICAgaWYgKHJlc3AgJiYgcmVzcC5zdGF0dXNDb2RlICYmIHJlc3Auc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tRm9ybSA9IGZhbHNlXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihyZXNwLmVycm9yTWVzc2FnZSlcbiAgICAgIH1cbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFwic29tZXRoaW5nIHdlbnQgd3JvbmchXCIpXG4gICAgfSlcbiAgfVxuXG4gIGdlbmVyYXRlUHJvZmlsZVBheWxvYWQoKSB7XG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgdXNlcklkOiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LmlkZW50aWZpZXIsXG4gICAgICAgIHByb2ZpbGVEZXRhaWxzOiB7XG4gICAgICAgICAgZW1wbG95bWVudERldGFpbHM6IHt9LFxuICAgICAgICAgIHBlcnNvbmFsRGV0YWlsczoge30sXG4gICAgICAgICAgLy8gY2FkcmVEZXRhaWxzOiB7fSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgX3Byb2Zlc3Npb25hbERldGFpbHM6IGFueSA9IHt9XG4gICAgbGV0IHVwZGF0ZVByb2Zlc3Npb25hbERldGFpbHM6IGJvb2xlYW4gPSBmYWxzZVxuICAgIGlmICh0aGlzLnNob3dHcm91cCAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZ3JvdXAnXS52YWx1ZSAmJiAhdGhpcy5zaG93RG9wdENoYW5nZXMpIHtcbiAgICAgIF9wcm9mZXNzaW9uYWxEZXRhaWxzWydncm91cCddID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2dyb3VwJ10udmFsdWVcbiAgICAgIHRoaXMudXBkYXRlUHJvZmlsZSA9IHRydWVcbiAgICAgIHVwZGF0ZVByb2Zlc3Npb25hbERldGFpbHMgPSB0cnVlXG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dEZXNpZ25hdGlvbiAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZGVzaWduYXRpb24nXS52YWx1ZSAmJiAhdGhpcy5zaG93RG9wdENoYW5nZXMpIHtcbiAgICAgIF9wcm9mZXNzaW9uYWxEZXRhaWxzWydkZXNpZ25hdGlvbiddID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2Rlc2lnbmF0aW9uJ10udmFsdWVcbiAgICAgIHRoaXMudXBkYXRlUHJvZmlsZSA9IHRydWVcbiAgICAgIHVwZGF0ZVByb2Zlc3Npb25hbERldGFpbHMgPSB0cnVlXG4gICAgfVxuICAgIGlmICh1cGRhdGVQcm9mZXNzaW9uYWxEZXRhaWxzKSB7XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHNbJ3Byb2Zlc3Npb25hbERldGFpbHMnXSA9IFtfcHJvZmVzc2lvbmFsRGV0YWlsc11cbiAgICB9XG4gICAgaWYgKHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydlbXBsb3llZUNvZGUnXS52YWx1ZSkge1xuICAgICAgcGF5bG9hZC5yZXF1ZXN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzWydlbXBsb3llZUNvZGUnXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydlbXBsb3llZUNvZGUnXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ21vYmlsZSddLnZhbHVlKSB7XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydtb2JpbGUnXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydtb2JpbGUnXS52YWx1ZVxuICAgICAgcGF5bG9hZC5yZXF1ZXN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlsc1sncGhvbmVWZXJpZmllZCddID0gdHJ1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlKSB7XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydnZW5kZXInXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2RvYiddLnZhbHVlKSB7XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydkb2InXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydkb2InXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2RvbWljaWxlTWVkaXVtJ10udmFsdWUpIHtcbiAgICAgIHBheWxvYWQucmVxdWVzdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHNbJ2RvbWljaWxlTWVkaXVtJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZG9taWNpbGVNZWRpdW0nXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2NhdGVnb3J5J10udmFsdWUpIHtcbiAgICAgIHBheWxvYWQucmVxdWVzdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHNbJ2NhdGVnb3J5J10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2F0ZWdvcnknXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ3BpbkNvZGUnXS52YWx1ZSkge1xuICAgICAgcGF5bG9hZC5yZXF1ZXN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzWydwaW5Db2RlJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncGluQ29kZSddLnZhbHVlXG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydwaW5jb2RlJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncGluQ29kZSddLnZhbHVlXG4gICAgICB0aGlzLnVwZGF0ZVByb2ZpbGUgPSB0cnVlXG4gICAgfVxuICAgIGlmICh0aGlzLmNhblNob3dzaG93Q2FkcmVEZXRhaWxzICYmICF0aGlzLnNob3dEb3B0Q2hhbmdlcykge1xuICAgICAgbGV0IF9jYWRyZURldGFpbHM6IGFueSA9IHt9XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydpc0NhZHJlJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snaXNDYWRyZSddLnZhbHVlXG4gICAgICB0aGlzLnVwZGF0ZVByb2ZpbGUgPSB0cnVlXG4gICAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZSkge1xuICAgICAgICBfY2FkcmVEZXRhaWxzWydjaXZpbFNlcnZpY2VUeXBlJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sndHlwZU9mQ2l2aWxTZXJ2aWNlJ10udmFsdWVcbiAgICAgICAgX2NhZHJlRGV0YWlsc1snY2l2aWxTZXJ2aWNlTmFtZSddID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ3NlcnZpY2VUeXBlJ10udmFsdWVcbiAgICAgICAgX2NhZHJlRGV0YWlsc1snY2FkcmVOYW1lJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2FkcmVOYW1lJ10udmFsdWVcbiAgICAgICAgX2NhZHJlRGV0YWlsc1snY2FkcmVCYXRjaCddID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2NhZHJlQmF0Y2gnXS52YWx1ZVxuICAgICAgICBfY2FkcmVEZXRhaWxzWydjYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5TmFtZSddID0gdGhpcy5jYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5XG4gICAgICAgIF9jYWRyZURldGFpbHNbJ2NhZHJlSWQnXSA9IHRoaXMuY2FkcmVJZFxuICAgICAgICBfY2FkcmVEZXRhaWxzWydjaXZpbFNlcnZpY2VJZCddID0gdGhpcy5jaXZpbFNlcnZpY2VJZFxuICAgICAgICBfY2FkcmVEZXRhaWxzWydjaXZpbFNlcnZpY2VUeXBlSWQnXSA9IHRoaXMuc2VydmljZUlkXG4gICAgICAgIHBheWxvYWQucmVxdWVzdC5wcm9maWxlRGV0YWlsc1snY2FkcmVEZXRhaWxzJ10gPSBfY2FkcmVEZXRhaWxzXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkXG4gIH1cblxuICBmb3JtYXREYXRlKF9kb2I6IHN0cmluZyB8IERhdGUpOiBzdHJpbmcge1xuICAgIGxldCBkYXRlT2JqOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKF9kb2IgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBkYXRlT2JqID0gX2RvYjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBfZG9iID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgcGFydHMgPSBfZG9iLnNwbGl0KCctJyk7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IHBhcnRzO1xuICAgICAgICBkYXRlT2JqID0gbmV3IERhdGUoTnVtYmVyKHllYXIpLCBOdW1iZXIobW9udGgpIC0gMSwgTnVtYmVyKGRheSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gbmV3IERhdGUoX2RvYik7XG4gICAgICAgIGlmICghaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkpIHtcbiAgICAgICAgICBkYXRlT2JqID0gcGFyc2VkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZGF0ZU9iaiB8fCBpc05hTihkYXRlT2JqLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVPYmosICd5eXl5LU1NLWRkJykgfHwgJyc7XG4gIH1cblxuICBnZXRRdWVzdGlvbklkKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWZpZWxkTmFtZSB8fCAhdGhpcy5mb3Jtc0RldGlscy5maWVsZHMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZm9ybXNEZXRpbHMuZmllbGRzLmZpbmQoKGY6IGFueSkgPT4gZi5maWVsZCA9PT0gZmllbGROYW1lKSB8fCB7fTtcbiAgICByZXR1cm4gZmllbGQuaWQgfHwgJyc7XG4gIH1cblxuICBnZW5lcmVhdGVTdXJ2ZXlQYXlsb2FkKHN0YXR1czogYW55KSB7XG4gICAgbGV0IGRhdGFPYmplY3Q6IGFueSA9IFtdXG4gICAgdGhpcy5iYXRjaERldGFpbHMuYmF0Y2hBdHRyaWJ1dGVzLmJwRW5yb2xNYW5kYXRvcnlQcm9maWxlRmllbGRzLmZvckVhY2goKF9maWVsZDogYW55KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZFRvQWRkID0ge1xuICAgICAgICBxdWVzdGlvbklkOiB0aGlzLmdldFF1ZXN0aW9uSWQoX2ZpZWxkLmZpZWxkKSxcbiAgICAgICAgcXVlc3Rpb246IF9maWVsZC5kaXNwbGF5TmFtZSxcbiAgICAgICAgYW5zd2VyOiAnJyxcbiAgICAgICAgYW5zd2VyVHlwZTogX2ZpZWxkLmZpZWxkVHlwZVxuICAgICAgfVxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5maXJzdG5hbWUnKSB7XG4gICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5maXJzdE5hbWUnLCBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmZpcnN0bmFtZScsICcnKSlcbiAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZmlyc3ROYW1lIHx8IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmZpcnN0bmFtZVxuICAgICAgfVxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmRlcGFydG1lbnROYW1lJykge1xuICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5kZXBhcnRtZW50TmFtZScsICdOL0EnKVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMuZGVwYXJ0bWVudE5hbWUgP1xuICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMuZGVwYXJ0bWVudE5hbWUgOiBcIk4vQVwiXG4gICAgICB9XG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscy5ncm91cCcpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0dyb3VwICYmIHN0YXR1cykge1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2dyb3VwJ10udmFsdWVcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydncm91cCddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5ncm91cCcsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9mZXNzaW9uYWxEZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5ncm91cCA/XG4gICAgICAgICAgLy8gICB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHNbMF0uZ3JvdXAgOiBcIk4vQVwiXG4gICAgICAgIH1cbiAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICB9XG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscy5kZXNpZ25hdGlvbicpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0Rlc2lnbmF0aW9uICYmIHN0YXR1cykge1xuICAgICAgICAgIGlmICh0aGlzLnNob3dEb3B0Q2hhbmdlcyAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZGVzaWduYXRpb24nXSAmJlxuICAgICAgICAgICAgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2Rlc2lnbmF0aW9uJ10udmFsdWUgPT09ICdPdGhlcnMnICYmIHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydvdGhlckRlc2lnbmF0aW9uJ10pIHtcbiAgICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ290aGVyRGVzaWduYXRpb24nXS52YWx1ZVxuICAgICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snb3RoZXJEZXNpZ25hdGlvbiddLnZhbHVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2Rlc2lnbmF0aW9uJ10udmFsdWVcbiAgICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2Rlc2lnbmF0aW9uJ10udmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9mZXNzaW9uYWxEZXRhaWxzWzBdLmRlc2lnbmF0aW9uID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5kZXNpZ25hdGlvbiA6IFwiTi9BXCJcbiAgICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHNbMF0uZGVzaWduYXRpb24nLCAnTi9BJylcbiAgICAgICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5lbXBsb3llZUNvZGUnKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dFbXBsb3llZUNvZGUgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZW1wbG95ZWVDb2RlJ10udmFsdWVcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydlbXBsb3llZUNvZGUnXS52YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmVtcGxveWVlQ29kZScsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscyAmJiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmVtcGxveWVlQ29kZSA/XG4gICAgICAgICAgLy8gICB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmVtcGxveWVlQ29kZSA6IFwiTi9BXCJcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5wcmltYXJ5RW1haWwnKSB7XG4gICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucHJpbWFyeUVtYWlsXG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLnByaW1hcnlFbWFpbFxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZScpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd01vYmlsZSAmJiBzdGF0dXMpIHtcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydtb2JpbGUnXS52YWx1ZVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ21vYmlsZSddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZScsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMubW9iaWxlID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZSA6IFwiTi9BXCJcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5kb2InKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dEb2IgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgbGV0IF9kb2I6IGFueSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydkb2InXS52YWx1ZVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy5mb3JtYXREYXRlKF9kb2IpXG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLmZvcm1hdERhdGUoX2RvYilcbiAgICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9iKSB7XG4gICAgICAgICAgICBsZXQgX2RvYjogYW55ID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9iXG4gICAgICAgICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBfZG9iLnNwbGl0KCctJylcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShOdW1iZXIoeWVhciksIE51bWJlcihtb250aCkgLSAxLCBOdW1iZXIoZGF5KSlcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKVxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKVxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuICAgICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSBgJHtmb3JtYXR0ZWRZZWFyfS0ke2Zvcm1hdHRlZE1vbnRofS0ke2Zvcm1hdHRlZERheX1gXG4gICAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IGAke2Zvcm1hdHRlZFllYXJ9LSR7Zm9ybWF0dGVkTW9udGh9LSR7Zm9ybWF0dGVkRGF5fWBcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSBcIjE5NTAtMDYtMDFcIlxuICAgICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBcIjE5NTAtMDYtMDFcIlxuICAgICAgICAgIH1cbiAgICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmdlbmRlcicpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0dlbmRlciAmJiBzdGF0dXMpIHtcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmdlbmRlcicsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZ2VuZGVyID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmdlbmRlciA6IFwiTi9BXCJcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5kb21pY2lsZU1lZGl1bScpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0RlY2ltYWxNZWRpdW0gJiYgc3RhdHVzKSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZG9taWNpbGVNZWRpdW0nXS52YWx1ZVxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2RvbWljaWxlTWVkaXVtJ10udmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9taWNpbGVNZWRpdW0nLCAnTi9BJylcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmRvbWljaWxlTWVkaXVtID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmRvbWljaWxlTWVkaXVtIDogXCJOL0FcIlxuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmNhdGVnb3J5Jykge1xuICAgICAgICBpZiAodGhpcy5zaG93Q2F0ZWdvcnkgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2F0ZWdvcnknXS52YWx1ZVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2NhdGVnb3J5J10udmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuY2F0ZWdvcnknLCAnTi9BJylcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmNhdGVnb3J5ID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmNhdGVnb3J5IDogXCJOL0FcIlxuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMucGluQ29kZScpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1BpbkNvZGUgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncGluQ29kZSddLnZhbHVlXG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncGluQ29kZSddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMucGluQ29kZScsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscyAmJiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLnBpbkNvZGUgP1xuICAgICAgICAgIC8vICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5waW5Db2RlIDogXCJOL0FcIlxuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzJykge1xuICAgICAgICBpZiAodGhpcy5jYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snaXNDYWRyZSddLnZhbHVlICYmIHN0YXR1cykge1xuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZVxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscyAmJlxuICAgICAgICAgIC8vICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuaXNDYWRyZSA/ICdZZXMnIDogJ05vJ1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5pc0NhZHJlJykgPyAnWWVzJyA6ICdObydcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cbiAgICAgIGlmIChfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlVHlwZScpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgJiYgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZSAmJiBzdGF0dXMpIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWyd0eXBlT2ZDaXZpbFNlcnZpY2UnXS52YWx1ZVxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ3R5cGVPZkNpdmlsU2VydmljZSddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscyAmJiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VUeXBlID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNpdmlsU2VydmljZVR5cGUgOiAnTi9BJ1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VUeXBlJywgJ04vQScpXG4gICAgICAgIH1cbiAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICB9XG5cbiAgICAgIGlmIChfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlTmFtZScpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgJiYgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZSAmJiBzdGF0dXMpIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydzZXJ2aWNlVHlwZSddLnZhbHVlXG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snc2VydmljZVR5cGUnXS52YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlTmFtZSA/XG4gICAgICAgICAgLy8gICB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VOYW1lIDogJ04vQSdcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlTmFtZScsICdOL0EnKVxuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlTmFtZScpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgJiYgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZSAmJiBzdGF0dXMpIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydjYWRyZU5hbWUnXS52YWx1ZVxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2NhZHJlTmFtZSddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlTmFtZScsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVOYW1lID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlTmFtZSA6ICdOL0EnXG4gICAgICAgIH1cbiAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICB9XG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQmF0Y2gnKSB7XG4gICAgICAgIGlmICh0aGlzLmNhblNob3dzaG93Q2FkcmVEZXRhaWxzICYmIHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydpc0NhZHJlJ10udmFsdWUgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2FkcmVCYXRjaCddLnZhbHVlXG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2FkcmVCYXRjaCddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscyAmJiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jYWRyZUJhdGNoID9cbiAgICAgICAgICAvLyAgIEpTT04uc3RyaW5naWZ5KHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQmF0Y2gpIDogJ04vQSdcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVCYXRjaCcpID8gSlNPTi5zdHJpbmdpZnkodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVCYXRjaCkgOiAnTi9BJ1xuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlOYW1lJykge1xuICAgICAgICBpZiAodGhpcy5jYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snaXNDYWRyZSddLnZhbHVlICYmIHN0YXR1cykge1xuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy5jYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlOYW1lID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlOYW1lIDogJ04vQSdcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eU5hbWUnLCAnTi9BJylcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtSWQnKSB7XG4gICAgICAgIGlmICh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICYmXG4gICAgICAgICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5hZGRpdGlvbmFsUHJvcGVydGllcy5leHRlcm5hbFN5c3RlbUlkKSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuYWRkaXRpb25hbFByb3BlcnRpZXMuZXh0ZXJuYWxTeXN0ZW1JZFxuICAgICAgICAgIC8vICAgPyB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtSWQgOiBcIk4vQVwiXG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMuYWRkaXRpb25hbFByb3BlcnRpZXMuZXh0ZXJuYWxTeXN0ZW1JZCcsICdOL0EnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gJ04vQSdcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtRG9yJykge1xuICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5hZGRpdGlvbmFsUHJvcGVydGllcyAmJlxuICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuYWRkaXRpb25hbFByb3BlcnRpZXMuZXh0ZXJuYWxTeXN0ZW1Eb3IpIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuYWRkaXRpb25hbFByb3BlcnRpZXMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5hZGRpdGlvbmFsUHJvcGVydGllcy5leHRlcm5hbFN5c3RlbURvclxuICAgICAgICAgIC8vICAgPyB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtRG9yIDogXCJOL0FcIlxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtRG9yJywgJ04vQScpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSAnTi9BJ1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gJ04vQSdcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGRhdGFPYmplY3RcbiAgfVxuXG4gIHVwZGF0ZUVtYWlsKGVtYWlsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwb3N0RGF0YSA9IHtcbiAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgJ3VzZXJJZCc6IHRoaXMuY29uZmlnU3JjLnVuTWFwcGVkVXNlci5pZCxcbiAgICAgICAgJ2NvbnRleHRUb2tlbic6IHRoaXMuY29udGV4dFRva2VuLFxuICAgICAgICAncHJvZmlsZURldGFpbHMnOiB7XG4gICAgICAgICAgJ3BlcnNvbmFsRGV0YWlscyc6IHtcbiAgICAgICAgICAgICdwcmltYXJ5RW1haWwnOiBlbWFpbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG5cbiAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyICsgMVxuICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByaW1hcnlFbWFpbERldGFpbHMocG9zdERhdGEpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95U3ViamVjdCQpKVxuICAgICAgLnN1YnNjcmliZSgoX3JlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLnByaW1hcnlFbWFpbCA9IGVtYWlsXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCdlbWFpbFVwZGF0ZWQnKSlcbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgICAgaWYgKCFlcnJvci5vaykge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCd1cGRhdGVFbWFpbEZhaWxlZCcpKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgc2V0dXBTY3JvbGxMaXN0ZW5lcihvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlYXJjaERlc2lnbmF0aW9uJyk7XG4gICAgaWYgKG9wZW5lZCAmJiBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wpIHtcbiAgICAgIHNlYXJjaERlc2lnbmF0aW9uQ29udHJvbC5zZXRWYWx1ZSgnJylcbiAgICAgIHRoaXMuZGVzaWduYXRpb25zT2Zmc2V0ID0gMFxuICAgICAgdGhpcy5kZXNpZ25hdGlvbnNNZXRhID0gW107XG4gICAgICB0aGlzLmdldGRlc2lnbmF0aW9uc01ldGEoKVxuICAgICAgY29uc3Qgc2VhcmNoSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VhcmNoLWlucHV0JykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIGlmIChzZWFyY2hJbnB1dCkge1xuICAgICAgICBzZWFyY2hJbnB1dC5mb2N1cygpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWF0LXNlbGVjdC1wYW5lbCcpO1xuICAgICAgaWYgKHBhbmVsKSB7XG4gICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25EZXNpZ25hdGlvblNlbGVjdFNjcm9sbC5iaW5kKHRoaXMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRlc2lnbmF0aW9uU2VsZWN0U2Nyb2xsKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgc2Nyb2xsZWQgdG8gdGhlIGJvdHRvbSAod2l0aCBhIHNtYWxsIHRocmVzaG9sZClcbiAgICAgIGlmIChlbGVtZW50LnNjcm9sbFRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0ID49IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gNSkge1xuICAgICAgICAvLyBPbmx5IGxvYWQgbW9yZSBpZiBub3QgYWxyZWFkeSBsb2FkaW5nIGFuZCBpZiB0aGVyZSBhcmUgcG90ZW50aWFsbHkgbW9yZSBpdGVtc1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyAmJiB0aGlzLmRlc2lnbmF0aW9uc01ldGEubGVuZ3RoIDwgdGhpcy5kZXNpZ25hdGlvbnNUb3RhbENvdW50KSB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc09mZnNldCArPSAxO1xuICAgICAgICAgIHRoaXMuZ2V0ZGVzaWduYXRpb25zTWV0YSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIGNoZWNrQ3VycmVudERlc2lnbmF0aW9uUHJlc2VudCgpIHtcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgZGVzaWduYXRpb24gdmFsdWVcbiAgICBjb25zdCBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2Rlc2lnbmF0aW9uJyk7XG4gICAgY29uc3QgY3VycmVudERlc2lnbmF0aW9uID0gc2VhcmNoRGVzaWduYXRpb25Db250cm9sID8gc2VhcmNoRGVzaWduYXRpb25Db250cm9sLnZhbHVlIDogJyc7XG4gICAgLy8gQ2hlY2sgaWYgY3VycmVudCBkZXNpZ25hdGlvbiBleGlzdHMgaW4gdGhlIGxpc3RcbiAgICBpZiAoY3VycmVudERlc2lnbmF0aW9uKSB7XG4gICAgICBjb25zdCBkZXNpZ25hdGlvbkV4aXN0cyA9IHRoaXMuZGVzaWduYXRpb25zTWV0YS5zb21lKFxuICAgICAgICAoZGVzaWduYXRpb246IGFueSkgPT4gZGVzaWduYXRpb24ubmFtZS50b0xvd2VyQ2FzZSgpID09PSBjdXJyZW50RGVzaWduYXRpb24udG9Mb3dlckNhc2UoKVxuICAgICAgKTtcblxuICAgICAgLy8gSWYgZGVzaWduYXRpb24gZG9lc24ndCBleGlzdCBpbiB0aGUgbGlzdCwgYWRkIGl0XG4gICAgICBpZiAoIWRlc2lnbmF0aW9uRXhpc3RzKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBkZXNpZ25hdGlvbiBvYmplY3QgdG8gbWF0Y2ggdGhlIHN0cnVjdHVyZSBvZiBvdGhlciBpdGVtc1xuICAgICAgICBjb25zdCBuZXdEZXNpZ25hdGlvbiA9IHtcbiAgICAgICAgICBuYW1lOiBjdXJyZW50RGVzaWduYXRpb24sXG4gICAgICAgICAgc3RhdHVzOiAnQWN0aXZlJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc01ldGEudW5zaGlmdChuZXdEZXNpZ25hdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25EZXNpZ25hdGlvbkRyb3Bkb3duQ2xvc2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlYXJjaERlc2lnbmF0aW9uQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnc2VhcmNoRGVzaWduYXRpb24nKTtcbiAgICBpZiAoc2VhcmNoRGVzaWduYXRpb25Db250cm9sKSB7XG4gICAgICBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wuc2V0VmFsdWUoJycpXG4gICAgICB0aGlzLmRlc2lnbmF0aW9uU2VhcmNoVGV4dCA9ICcnXG4gICAgfVxuICAgIHRoaXMuY2hlY2tDdXJyZW50RGVzaWduYXRpb25QcmVzZW50KClcbiAgfVxuXG59XG4iLCI8ZGl2ICNmdWxsU2NyZWVuQ29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyIHRleHQtcmlnaHQgbWItMlwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbiBub3RyYW5zbGF0ZSBtYXRlcmlhbC1pY29ucyBjbG9zZS1pY29uIGN1cnNvci1wb2ludGVyXCIgbWF0cHJlZml4PVwiXCIgcm9sZT1cImltZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFttYXQtZGlhbG9nLWNsb3NlXT1cImZhbHNlXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxoMT4ge3tkYXRhPy5jb3Vyc2VOYW1lfX0gPC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInVzZXJEZXRhaWxzRm9ybVwiIGNsYXNzPVwidXNlckRldGFpbHNGb3JtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd05hbWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIG1hcmdpbi0wIHJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8ubmFtZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgcGxhY2Vob2xkZXI9XCJOYW1lXCIvPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93T3JnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgKHNob3dEb3B0Q2hhbmdlcyA/ICdwcm9maWxlSW5mby5wcmVzZW50T3JnYW5pc2F0aW9uJyA6ICdwcm9maWxlSW5mby5vcmdhbmlzYXRpb24nKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm9yZ2FuaXNhdGlvblwiIHBsYWNlaG9sZGVyPVwiT3JnYW5pc2F0aW9uXCIvPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93RW1haWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIG1hcmdpbi0wIHJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uZW1haWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicHJpbWFyeUVtYWlsXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBlbWFpbFwiIChrZXl1cCk9XCJoYW5kbGVFbXB0eSgncHJpbWFyeUVtYWlsJylcIi8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cIm1hdC1lcnJvclwiICpuZ0lmPVwidXNlckRldGFpbHNGb3JtLmdldCgncHJpbWFyeUVtYWlsJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgfHwgdXNlckRldGFpbHNGb3JtLmdldCgncHJpbWFyeUVtYWlsJykuaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxuICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uaW52YWxpZEVtYWlsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZFwiICpuZ0lmPVwidmVyaWZ5RW1haWwgJiYgIW90cFNlbnQgJiYgIWVWZXJpZmllZFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdldC1vdHBcIiAoY2xpY2spPVwiaGFuZGxlR2VuZXJhdGVFbWFpbE9UUCgnZW1haWwnKVwiPnt7ICdwcm9maWxlSW5mby5nZXRPVFAnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbWFpbE90cFNlbnRcIj5cbiAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJlbWFpbE90cEZvcm1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBlbnRlci1vdHBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5lbnRlck9UUCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+VGltZSBSZW1haW5pbmc6IDxzcGFuICNlbWFpbFRpbWVyRGl2Pjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJwcm9maWxlLWZvcm0tZmllbGQgbW9iaWxlLW51bVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlT3RwXCIgY2xhc3M9XCJpbnB1dC10ZXh0IGN1c3RvbS1zaXplXCIgcGxhY2Vob2xkZXI9XCJ7eyAncHJvZmlsZUluZm8uZW50ZXJUaGVPVFAnIHwgdHJhbnNsYXRlIH19XCIgbWF4bGVuZ3RoPVwiNlwiIC8+XG4gICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyXCIgKm5nSWY9XCJzaG93RW1haWxSZXNlbmRPVFBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lclwiPnt7ICdwcm9maWxlSW5mby5kaWROb3RSZWNlaXZlT1RQJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2VuZC1vdHBcIiAoY2xpY2spPVwiaGFuZGxlUmVzZW5kRW1haWxPVFAoKVwiPiZuYnNwOyZuYnNwO3t7ICdwcm9maWxlSW5mby5yZXNlbnRPVFAnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBtYi00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCIgKGNsaWNrKT1cInZlcmlmeUVtYWlsT1RQKClcIj57eyAncHJvZmlsZUluZm8uc3VibWl0JyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIiAqbmdJZj1cImNhblNob3dHcm91cFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLmdyb3VwJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImdyb3VwXCIgcGxhY2Vob2xkZXI9XCJ7eyAncHJvZmlsZUluZm8uY2hvb3NlQUdyb3VwJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwRGF0YVwiIHZhbHVlPVwie3tncm91cH19XCI+e3sgZ3JvdXAgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIG1iLTJcIiAqbmdJZj1cInNob3dEb3B0Q2hhbmdlc1wiPlxuICAgICAgICAgICAgICB7eydwcm9maWxlSW5mby5ncm91cE5vdGUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCByZWxhdGl2ZVwiICpuZ0lmPVwiY2FuU2hvd0Rlc2lnbmF0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uZGVzaWduYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYXV0by1jb21wbGV0ZS1yb3cgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0IGhpZ2gtemluZGV4XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzaWduYXRpb25cIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJmaWx0ZXJkZXNpZ25hdGlvbigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIChmb2N1cyk9XCJvbkRlc2lnbmF0aW9uc0ZvY3VzKClcIiAjdGV4dEJveFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ3Byb2ZpbGVJbmZvLmNob29zZUFEZXNpZ25hdGlvbicgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZGlzYWduYXRpb24tY2FyZXRcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD4gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1zZWxlY3QtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cImZpeGVkLWhlaWdodC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJ7eyAncHJvZmlsZUluZm8uY2hvb3NlQURlc2lnbmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiIGZvcm1Db250cm9sTmFtZT1cImRlc2lnbmF0aW9uXCIgIChjbG9zZWQpPVwib25EZXNpZ25hdGlvbkRyb3Bkb3duQ2xvc2VkKClcIiAob3BlbmVkQ2hhbmdlKT1cInNldHVwU2Nyb2xsTGlzdGVuZXIoJGV2ZW50KVwiICBwYW5lbENsYXNzPVwic2VhcmNoLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBTdGlja3kgc2VhcmNoIGlucHV0IGNvbnRhaW5lciAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXNlYXJjaC1jb250YWluZXJcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBkZXNpZ25hdGlvblwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hEZXNpZ25hdGlvblwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hEZXNpZ25hdGlvbj8udmFsdWVcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLWJ1dHRvblwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoRGVzaWduYXRpb24/LnNldFZhbHVlKCcnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDinJVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIE9wdGlvbnMgbGlzdCAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGRlc2lnbmF0aW9uc01ldGEgXCIgW3ZhbHVlXT1cIm9wdGlvbj8ubmFtZVwiIChjbGljayk9XCJzZWxlY3REZXNpZ25hdGlvbihvcHRpb24/Lm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgIDwhLS0gTG9hZGluZyBpbmRpY2F0b3IgLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9uc1wiIGNsYXNzPVwibG9hZGluZy1pbmRpY2F0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgTG9hZGluZyBtb3JlLi4uXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIE5vIHJlc3VsdHMgbWVzc2FnZSAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIihkZXNpZ25hdGlvbnNNZXRhICk/Lmxlbmd0aCA9PT0gMFwiIGRpc2FibGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgTm8gbWF0Y2hlcyBmb3VuZFxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwidXNlckRldGFpbHNGb3JtPy5jb250cm9sc1snZGVzaWduYXRpb24nXT8uaW52YWxpZCAmJiB1c2VyRGV0YWlsc0Zvcm0/LmNvbnRyb2xzWydkZXNpZ25hdGlvbiddPy50b3VjaGVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgYSB2YWxpZCBkZXNpZ25hdGlvbi5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIG1iLTJcIiAqbmdJZj1cInNob3dEb3B0Q2hhbmdlc1wiPlxuICAgICAgICAgICAge3sncHJvZmlsZUluZm8uZGVzaWduYXRpb25Ob3RlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYXV0by1saXN0IGZsZXggZmxleC1jb2wgaWdub3JlLWJsdXJcIiAjZHJvcGRvd25cbiAgICAgICAgICAgICpuZ0lmPVwib3BlbkRlc2lnbmF0aW9uRHJvcGRvd24gJiYgZmlsdGVyRGVzaWduYXRpb25zTWV0YS5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgKG1vdXNlZG93bik9XCJwcmV2ZW50Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtIHt7dXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydkZXNpZ25hdGlvbiddPy52YWx1ZT8udG9Mb3dlckNhc2UoKSA9PT0gZGVzaWduYXRpb24/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPyAnaXRlbS1hY3RpdmUnIDogJyd9fVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkZXNpZ25hdGlvbiBvZiBmaWx0ZXJEZXNpZ25hdGlvbnNNZXRhXCIgKGNsaWNrKT1cInNlbGVjdERlc2lnbmF0aW9uKGRlc2lnbmF0aW9uLm5hbWUpXCI+XG4gICAgICAgICAgICAgIHt7IGRlc2lnbmF0aW9uPy5uYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHJlbGF0aXZlXCIgKm5nSWY9XCJjYW5TaG93RGVzaWduYXRpb24gJiYgY2FuU2hvd090aGVyRGVzaWduYXRpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5vdGhlckRlc2lnbmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5TaG93T3RoZXJEZXNpZ25hdGlvblwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwib3RoZXJEZXNpZ25hdGlvblwiIHBsYWNlaG9sZGVyPVwie3sgJ3Byb2ZpbGVJbmZvLmVudGVyRGVzaWduYXRpb24nIHwgdHJhbnNsYXRlIH19XCIvPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd0VtcGxveWVlQ29kZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5lbXBsb3llZUlkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImVtcGxveWVlQ29kZVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgZW1wbG95ZWUgY29kZVwiLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD4gICAgXG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJtYXQtZXJyb3JcIiAqbmdJZj1cInVzZXJEZXRhaWxzRm9ybT8uZ2V0KCdlbXBsb3llZUNvZGUnKT8uaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxuICAgICAgICAgICAgICAgIFBsZWFzZSBlbnRlciBhbiBBbHBoYS1udW1lcmljIHZhbHVlIG9ubHlcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPiAgICAgICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5zaG93TW9iaWxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLm1vYmlsZU51bWJlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50cnktY29kZSBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgKzkxXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibW9iaWxlLW51bVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHQgbW9iaWxlLXRleHQgcmVsYXRpdmVcIiBtYXhsZW5ndGg9XCIxMFwiIChrZXl1cCk9XCJoYW5kbGVFbXB0eSgnbW9iaWxlJylcIlxuICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm1vYmlsZVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgbW9iaWxlIG51bWJlclwiLz5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ2ZXJpZmllZC1jaGVja1wiICpuZ0lmPVwibVZlcmlmaWVkXCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwibWF0LWVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInVzZXJEZXRhaWxzRm9ybS5nZXQoJ21vYmlsZScpLmhhc0Vycm9yKCdyZXF1aXJlZCcpIHx8IHVzZXJEZXRhaWxzRm9ybS5nZXQoJ21vYmlsZScpLmhhc0Vycm9yKCdwYXR0ZXJuJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5wbGVhc2VFbnRlclZhbGlkTW9iaWxlTnVtYmVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZFwiICpuZ0lmPVwidmVyaWZ5TW9iaWxlICYmICFvdHBTZW50ICYmICFtVmVyaWZpZWRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2V0LW90cCBzbTptci00XCIgKGNsaWNrKT1cImhhbmRsZUdlbmVyYXRlT1RQKCdwaG9uZScpXCI+e3sgJ3Byb2ZpbGVJbmZvLmdldE9UUCcgfFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3RwU2VudFwiPiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJvdHBGb3JtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZW50ZXItb3RwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIHJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uZW50ZXJPVFAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlRpbWUgUmVtYWluaW5nOiA8c3BhbiAjdGltZXJEaXY+PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInByb2ZpbGUtZm9ybS1maWVsZCBtb2JpbGUtbnVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm90cFwiIGNsYXNzPVwiaW5wdXQtdGV4dCBjdXN0b20tc2l6ZVwiIHBsYWNlaG9sZGVyPVwie3sgJ3Byb2ZpbGVJbmZvLmVudGVyVGhlT1RQJyB8IHRyYW5zbGF0ZSB9fVwiIG1heGxlbmd0aD1cIjZcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiICpuZ0lmPVwic2hvd1Jlc2VuZE9UUFwiPiAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZXJcIj57eyAncHJvZmlsZUluZm8uZGlkTm90UmVjZWl2ZU9UUCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNlbmQtb3RwXCIgKGNsaWNrKT1cImhhbmRsZVJlc2VuZE9UUCgpXCI+Jm5ic3A7Jm5ic3A7e3sgJ3Byb2ZpbGVJbmZvLnJlc2VudE9UUCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIG1iLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIiAoY2xpY2spPVwidmVyaWZ5TW9iaWxlT1RQKClcIj57eyAncHJvZmlsZUluZm8uc3VibWl0JyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93R2VuZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uZ2VuZGVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImdlbmRlclwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGdlbmRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgX2dlbmRlciBvZiBlVXNlckdlbmRlclwiIHZhbHVlPVwie3sgX2dlbmRlciB9fVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVHJhbnNsYXRlVG8oX2dlbmRlci50b0xvd2VyQ2FzZSgpKSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd0RvYlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLmRvYicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgY2xhc3M9XCJpbnB1dC10ZXh0IGljb24taW5jbHVkZS1pbnB1dFwiIFttYXhdPVwiY3VycmVudERhdGVcIiBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9iXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0ZSBvZiBiaXJ0aFwiIC8+XG4gICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHJlbGF0aXZlXCIgKm5nSWY9XCJjYW5TaG93RG9taWNpbGVNZWRpdW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIG1hcmdpbi0wIHJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5tb3RoZXJUb25ndWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGF1dG8tY29tcGxldGUtcm93IHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0IGhpZ2gtemluZGV4XCIgYXJpYS1sYWJlbD1cIkRvbWljaWxlIE1lZGl1bSAoTW90aGVyIFRvbmd1ZSlcIiBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9taWNpbGVNZWRpdW1cIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBtb3RoZXIgdG9uZ3VlXCJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJmaWx0ZXJMYW5ndWFnZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIChmb2N1cyk9XCJvbkxhbmd1YWdlRm9jdXMoKVwiICNsYW5ndWFnZVRleHRCb3gvPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1vdGhlci10b3VuZ3VlLWNhcmV0XCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZG9taWNpbGVNZWRpdW0nXS5pbnZhbGlkICYmIHVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZG9taWNpbGVNZWRpdW0nXS50b3VjaGVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCBhIHZhbGlkIG1vdGhlciB0b25ndWUuXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG8tbGFuZ3VhZ2UtbGlzdCBmbGV4IGZsZXgtY29sIGlnbm9yZS1ibHVyXCIgI2xhbmd1YWdlRHJvcGRvd25cbiAgICAgICAgICAgICAgKm5nSWY9XCJvcGVuTGFuZ3VhZ2VEcm9wZG93biAmJiBtYXN0ZXJMYW5ndWFnZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8ZGl2IChtb3VzZWRvd24pPVwicHJldmVudExhbmd1YWdlQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxhbmd1YWdlLWl0ZW0ge3t1c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2RvbWljaWxlTWVkaXVtJ10/LnZhbHVlPy50b0xvd2VyQ2FzZSgpID09PSBsYW5ndWFnZT8ubmFtZT8udG9Mb3dlckNhc2UoKSA/ICdsYW5ndWFnZS1pdGVtLWFjdGl2ZScgOiAnJ319XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgbWFzdGVyTGFuZ3VhZ2VzXCIgKGNsaWNrKT1cInNlbGVjdExhbmd1YWdlKGxhbmd1YWdlLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAge3sgbGFuZ3VhZ2U/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIiAqbmdJZj1cImNhblNob3dDYXRlZ29yeVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLmNhdGVnb3J5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGVDYXRlZ29yeVwiIHZhbHVlPVwie3sgY2F0ZWdvcnkgfX1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVRyYW5zbGF0ZVRvKGNhdGVnb3J5Py50b0xvd2VyQ2FzZSgpKSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93cGluQ29kZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICd1c2VyUHJvZmlsZS5vZmZpY2VQaW5Db2RlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImlucHV0LXRleHRcIiBtYXRJbnB1dCBtYXhsZW5ndGg9XCI2XCIgZm9ybUNvbnRyb2xOYW1lPVwicGluQ29kZVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgcGluY29kZVwiLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cIm1hdC1lcnJvclwiICpuZ0lmPVwidXNlckRldGFpbHNGb3JtPy5nZXQoJ3BpbkNvZGUnKT8uaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5pbnZhbGlkUGluQ29kZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj4gICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgICYmICFzaG93RG9wdENoYW5nZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5mcm9tR292T3JnYW5pemF0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJwcm9maWxlLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImlzQ2FkcmVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImdldElzQ2FkcmVTdGF0dXMoJGV2ZW50LnZhbHVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNhZHJlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ0cnVlXCI+WWVzPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZmFsc2VcIj5ObzwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIiAqbmdJZj1cImNhblNob3dzaG93Q2FkcmVEZXRhaWxzICYmIGlzQ2FkcmVTdGF0dXMgICYmICFzaG93RG9wdENoYW5nZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby50eXBlT2ZDaXZpbFNlcnZpY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInByb2ZpbGUtZm9ybS1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidHlwZU9mQ2l2aWxTZXJ2aWNlXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJnZXRTZXJ2aWNlKCRldmVudC52YWx1ZSlcIiAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdHlwZSBvZiBjaXZpbCBzZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzZXJ2aWNlIG9mIGNpdmlsU2VydmljZVR5cGVzXCIgW3ZhbHVlXT1cInNlcnZpY2VcIj57eyBzZXJ2aWNlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgJiYgdXNlckRldGFpbHNGb3JtLmdldCgndHlwZU9mQ2l2aWxTZXJ2aWNlJykudmFsdWUgJiYgdXNlckRldGFpbHNGb3JtLmdldCgnaXNDYWRyZScpLnZhbHVlICYmICFzaG93RG9wdENoYW5nZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5zZXJ2aWNlVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwicHJvZmlsZS1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZXJ2aWNlVHlwZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZXJ2aWNlU2VsZWN0KCRldmVudClcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBzZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNlcnZpY2Ugb2Ygc2VydmljZU5hbWVcIiBbdmFsdWVdPVwic2VydmljZVwiPnt7IHNlcnZpY2UgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpLnZhbHVlICYmIFxuICAgICAgICAgICAgICB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdpc0NhZHJlJykudmFsdWUgXG4gICAgICAgICAgICAgICYmIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3R5cGVPZkNpdmlsU2VydmljZScpLnZhbHVlICYmIChcbiAgICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgPT09ICdJbmRpYW4gQWRtaW5pc3RyYXRpdmUgU2VydmljZSAoSUFTKScgfHwgXG4gICAgICAgICAgICAgICAgICB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpLnZhbHVlID09PSAnSW5kaWFuIFBvbGljZSBTZXJ2aWNlIChJUFMpJyB8fCBcbiAgICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgPT09ICdJbmRpYW4gRm9yZXN0IFNlcnZpY2UgKElGb1MpJyBcbiAgICAgICAgICAgICAgICApICYmICFzaG93RG9wdENoYW5nZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5jYWRyZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwicHJvZmlsZS1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjYWRyZU5hbWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2FkcmVTZWxlY3QoJGV2ZW50LnZhbHVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNhZHJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHN0YXRlIG9mIGNhZHJlXCIgW3ZhbHVlXT1cInN0YXRlXCI+e3sgc3RhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0RvcHRDaGFuZ2VzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpICYmICh1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpLnZhbHVlICYmIFxuICAgICAgICAgICAgdXNlckRldGFpbHNGb3JtLmdldCgnaXNDYWRyZScpLnZhbHVlICYmIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3R5cGVPZkNpdmlsU2VydmljZScpLnZhbHVlICYmIChcbiAgICAgICAgICAgICAgICB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpLnZhbHVlID09PSAnSW5kaWFuIEFkbWluaXN0cmF0aXZlIFNlcnZpY2UgKElBUyknIHx8IFxuICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgPT09ICdJbmRpYW4gUG9saWNlIFNlcnZpY2UgKElQUyknIHx8IFxuICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgPT09ICdJbmRpYW4gRm9yZXN0IFNlcnZpY2UgKElGb1MpJyBcbiAgICAgICAgICAgICkgJiYgdXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVOYW1lJykudmFsdWUpICA/IHRydWUgOiAoKHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgJiYgXG4gICAgICAgICAgICAgICAgdXNlckRldGFpbHNGb3JtLmdldCgnaXNDYWRyZScpLnZhbHVlIFxuICAgICAgICAgICAgJiYgdXNlckRldGFpbHNGb3JtLmdldCgndHlwZU9mQ2l2aWxTZXJ2aWNlJykudmFsdWUgJiYgKFxuICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgIT09ICdJbmRpYW4gQWRtaW5pc3RyYXRpdmUgU2VydmljZSAoSUFTKScgJiYgXG4gICAgICAgICAgICAgICAgdXNlckRldGFpbHNGb3JtLmdldCgnc2VydmljZVR5cGUnKS52YWx1ZSAhPT0gJ0luZGlhbiBQb2xpY2UgU2VydmljZSAoSVBTKScgJiYgXG4gICAgICAgICAgICAgICAgdXNlckRldGFpbHNGb3JtLmdldCgnc2VydmljZVR5cGUnKS52YWx1ZSAhPT0gJ0luZGlhbiBGb3Jlc3QgU2VydmljZSAoSUZvUyknIFxuICAgICAgICAgICAgKSkpID8gdHJ1ZSA6IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uYmF0Y2gnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJwcm9maWxlLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY2FkcmVCYXRjaFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGJhdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyQXJyYXlcIiBbdmFsdWVdPVwieWVhclwiPnt7IHllYXIgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdpc0NhZHJlJykudmFsdWUgJiYgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlQmF0Y2gnKS52YWx1ZSAmJiAhc2hvd0RvcHRDaGFuZ2VzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIG1hcmdpbi0wIHJlcXVpcmVkIG1iLTNcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5jYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYWRyZUNvbnRyb2wtbmFtZVwiPnt7Y2FkcmVDb250cm9sbGluZ0F1dGhvcml0eX19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXggZmxleC1yb3cgZ2FwLTQganVzdGlmeS1lbmQgbWFyZ2luLXRvcC1tXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNhdmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidXNlckRldGFpbHNGb3JtPy5pbnZhbGlkIHx8ICFtVmVyaWZpZWQgfHwgIWVWZXJpZmllZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0Rm9ybSh1c2VyRGV0YWlsc0Zvcm0pXCI+XG4gICAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLnNhdmVDaGFuZ2VzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZGRMb2FkZXIgPiAwXCIgPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG15LTIgbG9hZGVyIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxtYXQtc3Bpbm5lciBjbGFzcz1cImlubGluZS1ibG9ja1wiPjwvbWF0LXNwaW5uZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
1854
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5yb2xsLXByb2ZpbGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvY29tcG9uZW50cy9lbnJvbGwtcHJvZmlsZS1mb3JtL2Vucm9sbC1wcm9maWxlLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvZW5yb2xsLXByb2ZpbGUtZm9ybS9lbnJvbGwtcHJvZmlsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFekYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUt0RSxPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBRS9ILG9CQUFvQjtBQUNwQixPQUFPLENBQUMsTUFBTSxRQUFRLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLdEIsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUE7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQTtBQUMxQyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUE7QUFDckMsb0JBQW9CO0FBQ3BCLE1BQU0sYUFBYSxHQUFHLHFIQUFxSCxDQUFB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QztTQUNGO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDL0UsSUFBSSx3QkFBd0IsRUFBRTtZQUM1Qix3QkFBd0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDckMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQTtTQUNoQztRQUNELElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFBO0lBQ3ZDLENBQUM7K0dBaDFEVSwwQkFBMEIsNFNBK0gzQixlQUFlO21HQS9IZCwwQkFBMEIsMHNCQy9CdkMsdTF4QkF3WkE7OzRGRHpYYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UsNEJBQTRCOzswQkFtSW5DLE1BQU07MkJBQUMsZUFBZTs0Q0FuRmlCLFFBQVE7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDTyxhQUFhO3NCQUEzRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBbUV2QixPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0csUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNTLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNHLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBZ0g3QixrQkFBa0I7c0JBRmpCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFVzZXJQcm9maWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VzZXItcHJvZmlsZS5zZXJ2aWNlJ1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IE5zVXNlclByb2ZpbGVEZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3VzZXItcHJvZmlsZS5tb2RlbCdcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zU2VydmljZSB9IGZyb20gJ0BzdW5iaXJkLWNiL3V0aWxzLXYyJ1xuaW1wb3J0IHsgUHJvZmlsZVYyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2ZpbGUtdjIuc2VydmljZSdcbmltcG9ydCB7IE90cFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vdHAuc2VydmljZSdcbmltcG9ydCB7IE5QU0dyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbnBzLWdyaWQuc2VydmljZSdcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYsIE1BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcbmltcG9ydCB7IE1hdExlZ2FjeVNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNuYWNrLWJhcidcbi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbi8vIGltcG9ydCB7IFNpZ251cFNlcnZpY2UgfSBmcm9tICdzcmMvYXBwL3JvdXRlcy9wdWJsaWMvcHVibGljLXNpZ251cC9zaWdudXAuc2VydmljZSdcbmltcG9ydCB7IGRlc2lnbmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Byb2ZpbGUtcmV2YW1wLm1vZGVsJ1xuXG5jb25zdCBNT0JJTEVfUEFUVEVSTiA9IC9eWzBdP1s2Nzg5XVxcZHs5fSQvXG5jb25zdCBQSU5fQ09ERV9QQVRURVJOID0gL15bMS05XVswLTldezV9JC9cbmNvbnN0IEVNUF9JRF9QQVRURVJOID0gL15bYS16MC05XSskL2lcbi8qIHRzbGludDpkaXNhYmxlICovXG5jb25zdCBFTUFJTF9QQVRURVJOID0gL15bYS16QS1aMC05XStbYS16QS1aMC05Ll8tXSpbYS16QS1aMC05XStAW2EtekEtWjAtOV0rKFstYS16QS1aMC05XSpbYS16QS1aMC05XSspPyhcXC5bYS16QS1aMC05LV0rKSpcXC5bYS16QS1aXXsyLDR9JC9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd3MtYXBwLWVucm9sbC1wcm9maWxlLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZW5yb2xsLXByb2ZpbGUtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Vucm9sbC1wcm9maWxlLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRW5yb2xsUHJvZmlsZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgYWZ0ZXJTdWJtaXRBY3Rpb24gPSB0aGlzLmNoZWNrQWZ0ZXJTdWJtaXQuYmluZCh0aGlzKVxuICBpc1JlYWRPbmx5ID0gZmFsc2VcbiAgYmF0Y2hEZXRhaWxzOiBhbnlcbiAgY3VzdG9tRm9ybTogYm9vbGVhbiA9IGZhbHNlXG4gIHVzZXJEZXRhaWxzRm9ybTogRm9ybUdyb3VwXG4gIGdyb3VwRGF0YTogYW55IHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgZGVzdHJveVN1YmplY3QkID0gbmV3IFN1YmplY3QoKVxuICBkZXNpZ25hdGlvbnNNZXRhOiBhbnkgPSBbXVxuICAvLyBmaWx0ZXJEZXNpZ25hdGlvbnNNZXRhOiBhbnkgPSBbXVxuICBlVXNlckdlbmRlciA9IE9iamVjdC5rZXlzKE5zVXNlclByb2ZpbGVEZXRhaWxzLkVVc2VyR2VuZGVyKVxuICBtYXN0ZXJMYW5ndWFnZXM6IGFueVxuICBtYXN0ZXJMYW5ndWFnZUJhY2t1cDogYW55XG4gIGVDYXRlZ29yeSA9IE9iamVjdC5rZXlzKE5zVXNlclByb2ZpbGVEZXRhaWxzLkVDYXRlZ29yeSlcbiAgdXNlclByb2ZpbGVPYmplY3Q6IGFueVxuICBlbGlnaWJsZTogYm9vbGVhbiA9IGZhbHNlXG4gIGlzQ2FkcmVTdGF0dXMgPSBmYWxzZVxuICBzaG93QmF0Y2hGb3JOb0NhZHJlID0gdHJ1ZVxuICBjaXZpbFNlcnZpY2VEYXRhOiBhbnlcbiAgY2l2aWxTZXJ2aWNlVHlwZXM6IGFueVxuICBzZXJ2aWNlTmFtZTogYW55XG4gIHNlcnZpY2VUeXBlOiBhbnlcbiAgc2VydmljZUxpc3REYXRhOiBhbnlcbiAgc2VydmljZUlkOiBhbnlcbiAgZXJyb3JNZXNzYWdlOiBhbnlcbiAgc2VsZWN0ZWRTZXJ2aWNlTmFtZTogYW55XG4gIHNlbGVjdGVkU2VydmljZTogYW55XG4gIGNpdmlsU2VydmljZU5hbWU6IGFueVxuICBjaXZpbFNlcnZpY2VJZDogYW55XG4gIGNhZHJlSWQ6IGFueVxuICBjYWRyZTogYW55XG4gIGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHk6IGFueVxuICBzdGFydEJhdGNoOiBhbnlcbiAgZW5kQmF0Y2g6IGFueVxuICB5ZWFyQXJyYXk6IGFueVxuICBleGNsdXNpb25ZZWFyOiBhbnlcbiAgc2VsZWN0ZWRDYWRyZU5hbWU6IGFueVxuICBzZWxlY3RlZENhZHJlOiBhbnlcbiAgdmVyaWZ5TW9iaWxlOiBib29sZWFuID0gZmFsc2VcbiAgb3RwU2VudDogYm9vbGVhbiA9IGZhbHNlXG4gIGVtYWlsT3RwU2VudDogYm9vbGVhbiA9IGZhbHNlXG4gIG90cEVudGVyZWQgPSAnJ1xuICBtVmVyaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICBlVmVyaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICBAVmlld0NoaWxkKCd0aW1lckRpdicsIHsgc3RhdGljOiBmYWxzZSB9KSB0aW1lckRpdiAhOiBhbnlcbiAgQFZpZXdDaGlsZCgnZW1haWxUaW1lckRpdicsIHsgc3RhdGljOiBmYWxzZSB9KSBlbWFpbFRpbWVyRGl2ICE6IGFueVxuICB0aW1lTGVmdCA9IDE1MFxuICBlbWFpbFRpbWVMZWZ0ID0gMTUwXG4gIGludGVydmFsOiBhbnlcbiAgZW1haWxJbnRlcnZhbDogYW55XG4gIHNob3dSZXNlbmRPVFAgPSBmYWxzZVxuICBzaG93RW1haWxSZXNlbmRPVFAgPSBmYWxzZVxuICBvdHBGb3JtOiBGb3JtR3JvdXBcbiAgZW1haWxPdHBGb3JtOiBGb3JtR3JvdXBcbiAgc2hvd25hbWUgPSBmYWxzZVxuICBzaG93RGVzaWduYXRpb24gPSBmYWxzZVxuICBzaG93R3JvdXAgPSBmYWxzZVxuICBzaG93RW1wbG95ZWVDb2RlID0gZmFsc2VcbiAgc2hvd01vYmlsZSA9IGZhbHNlXG4gIHNob3dHZW5kZXIgPSBmYWxzZVxuICBzaG93RG9iID0gZmFsc2VcbiAgc2hvd0NhdGVnb3J5ID0gZmFsc2VcbiAgc2hvd0RlY2ltYWxNZWRpdW0gPSBmYWxzZVxuICBzaG93UGluQ29kZSA9IGZhbHNlXG4gIHNob3dDYWRyZURldGFpbHMgPSBmYWxzZVxuICB1cGRhdGVQcm9maWxlID0gZmFsc2VcbiAgcGVuZGluZ0ZpbGVkczogYW55XG4gIHBHcm91cDogYW55XG4gIHBEZXNpZ25hdGlvbjogYW55XG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlXG4gIGNhblNob3dFbXBsb3llZUNvZGU6IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5zaG93TW9iaWxlOiBib29sZWFuID0gZmFsc2VcbiAgY2FuU2hvd0dlbmRlcjogYm9vbGVhbiA9IGZhbHNlXG4gIGNhblNob3dEb2I6IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5TaG93RG9taWNpbGVNZWRpdW06IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5TaG93Q2F0ZWdvcnk6IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5TaG93cGluQ29kZTogYm9vbGVhbiA9IGZhbHNlXG4gIGNhblNob3dzaG93Q2FkcmVEZXRhaWxzOiBib29sZWFuID0gZmFsc2VcbiAgY2FuU2hvd0dyb3VwOiBib29sZWFuID0gZmFsc2VcbiAgY2FuU2hvd0Rlc2lnbmF0aW9uOiBib29sZWFuID0gZmFsc2VcbiAgc2VsZWN0ZWREYXRlOiBhbnlcbiAgc2hvd0NvdW50ZXI6IG51bWJlciA9IDBcbiAgZGlzYWJsZUNvdW50ZXI6IG51bWJlciA9IDBcbiAgY2FuU2hvd0VtYWlsOiBib29sZWFuID0gZmFsc2VcbiAgc2hvd0VtYWlsOiBib29sZWFuID0gZmFsc2VcbiAgY2FuU2hvd05hbWU6IGJvb2xlYW4gPSBmYWxzZVxuICBjYW5TaG93T3JnOiBib29sZWFuID0gZmFsc2VcbiAgc2hvd09yZzogYm9vbGVhbiA9IGZhbHNlXG4gIHN1cnZleUlkOiBhbnlcbiAgc2hvd0RvcHRDaGFuZ2VzOiBib29sZWFuID0gZmFsc2VcbiAgcHJvZmlsZUZvcm1UeXBlOiBhbnlcbiAgdmVyaWZ5RW1haWwgPSBmYWxzZVxuICBhcHByb3ZlZERvbWFpbkxpc3Q6IGFueSA9IFtdXG4gIGNvbnRleHRUb2tlbjogYW55XG4gIHZlcmlmaWVkRW1haWxPdHA6IHN0cmluZyA9ICcnXG4gIHZlcmlmaWVkUGhvbmVPdHA6IHN0cmluZyA9ICcnXG4gIGN1cnJlbnREYXRlID0gbmV3IERhdGUoKVxuICBvcGVuRGVzaWduYXRpb25Ecm9wZG93biA9IGZhbHNlXG4gIG9wZW5MYW5ndWFnZURyb3Bkb3duID0gZmFsc2VcbiAgY2FuU2hvd090aGVyRGVzaWduYXRpb24gPSBmYWxzZVxuICBkZXNpZ25hdGlvbkxpc3RMb2FkQ291bnQgPSA1MFxuICBhZGRMb2FkZXIgPSAwXG4gIGlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSBmYWxzZTtcbiAgZGVzaWduYXRpb25EZWZhdWx0TG9hZENvdW50ID0gIDUwXG4gIGRlc2lnYW50aW9uRmlsdGVyRW5hYmxlID0gZmFsc2VcbiAgb3JnYW5pc2F0aW9uSWQgPSAnJ1xuICBzZWxlY3RlZE9yZ0hhc0Rlc2lnbmF0aW9ucyA9IGZhbHNlO1xuICBkZXNpZ25hdGlvbnNPZmZzZXQgPSAwO1xuICBkZXNpZ25hdGlvblNlYXJjaFRleHQgPSAnJztcbiAgZGVzaWduYXRpb25zVG90YWxDb3VudCA9IDA7XG4gIGZvcm1JZDogc3RyaW5nID0gJyc7XG4gIGZvcm1zRGV0aWxzOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RleHRCb3gnKSB0ZXh0Qm94ITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdsYW5ndWFnZVRleHRCb3gnKSBsYW5ndWFnZVRleHRCb3ghOiBFbGVtZW50UmVmXG4gIEBWaWV3Q2hpbGQoJ2xhbmd1YWdlRHJvcGRvd24nKSBsYW5ndWFnZURyb3Bkb3duITogRWxlbWVudFJlZlxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RW5yb2xsUHJvZmlsZUZvcm1Db21wb25lbnQ+LFxuICAgIHByaXZhdGUgdXNlclByb2ZpbGVTZXJ2aWNlOiBVc2VyUHJvZmlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTcmM6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHByb2ZpbGVWMlN2YzogUHJvZmlsZVYyU2VydmljZSxcbiAgICBwcml2YXRlIG90cFNlcnZpY2U6IE90cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBucHNTdmM6IE5QU0dyaWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICAvLyBwcml2YXRlIHNpZ251cFNlcnZpY2U6IFNpZ251cFNlcnZpY2UsXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICkge1xuXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSkge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRMYW5nKCdlbicpXG4gICAgICBjb25zdCBsYW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3dlYnNpdGVMYW5ndWFnZScpIVxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnVzZShsYW5nKVxuICAgIH1cblxuICAgIHRoaXMuYmF0Y2hEZXRhaWxzID0gdGhpcy5kYXRhLmJhdGNoRGF0YVxuICAgIHRoaXMuc3VydmV5SWQgPSB0aGlzLmRhdGEuc3VydmV5SWRcbiAgICB0aGlzLnNob3dEb3B0Q2hhbmdlcyA9IHRoaXMuZGF0YS5zaG93RG9wdENoYW5nZXNcbiAgICB0aGlzLnByb2ZpbGVGb3JtVHlwZSA9IHRoaXMuYmF0Y2hEZXRhaWxzLmJhdGNoQXR0cmlidXRlcy51c2VyUHJvZmlsZUZpbGVkc1xuICAgIHRoaXMudXNlckRldGFpbHNGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgb3JnYW5pc2F0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgZ3JvdXA6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBkZXNpZ25hdGlvbjogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIGVtcGxveWVlQ29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIHByaW1hcnlFbWFpbDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5wYXR0ZXJuKEVNQUlMX1BBVFRFUk4pXSksXG4gICAgICBtb2JpbGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBnZW5kZXI6IG5ldyBGb3JtQ29udHJvbCgnJywgW10pLFxuICAgICAgZG9iOiBuZXcgRm9ybUNvbnRyb2woJycsIFtdKSxcbiAgICAgIGRvbWljaWxlTWVkaXVtOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgY2F0ZWdvcnk6IG5ldyBGb3JtQ29udHJvbCgnJywgW10pLFxuICAgICAgcGluQ29kZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIGlzQ2FkcmU6IG5ldyBGb3JtQ29udHJvbCgpLFxuICAgICAgdHlwZU9mQ2l2aWxTZXJ2aWNlOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgc2VydmljZVR5cGU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBjYWRyZU5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBjYWRyZUJhdGNoOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIG90aGVyRGVzaWduYXRpb246IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBzZWFyY2hEZXNpZ25hdGlvbjogbmV3IEZvcm1Db250cm9sKCcnKVxuICAgIH0pXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlXG4gICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdCA9IHRoaXMuY29uZmlnU3JjLnVuTWFwcGVkVXNlclxuICAgIHRoaXMub3JnYW5pc2F0aW9uSWQgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncm9vdE9yZ0lkJywgXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3BlcnNvbmFsRGV0YWlscy5yb290T3JnSWQnLCAnJykpXG5cbiAgICB0aGlzLm90cEZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIG90cDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgIH0pXG4gICAgdGhpcy5lbWFpbE90cEZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGVPdHA6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICB9KVxuXG4gICAgLy8gVG8gY2hlY2sgdGhlIG1vYmlsZSBudW1iZXIgZW50ZXJlZCBieSB0aGUgdXNlciBpcyBzYW1lIG9yIG5vdCwgdmFsaWRhdGluZyB0aGUgbW9iaWxlIG51bWJlciB0byBzaG93IHRoZSBHZXQgT1RQLlxuICAgIGlmICh0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ21vYmlsZScpKSB7XG4gICAgICB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ21vYmlsZScpIS52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzICE9PSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5tb2JpbGUgfHxcbiAgICAgICAgICAgICF0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5waG9uZVZlcmlmaWVkKSB7XG4gICAgICAgICAgICBpZiAoTU9CSUxFX1BBVFRFUk4udGVzdChyZXMpKSB7XG4gICAgICAgICAgICAgIHRoaXMudmVyaWZ5TW9iaWxlID0gdHJ1ZVxuICAgICAgICAgICAgICB0aGlzLm1WZXJpZmllZCA9IGZhbHNlXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnZlcmlmeU1vYmlsZSA9IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmVyaWZ5TW9iaWxlID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gVG8gY2hlY2sgdGhlIGVtYWlsIGVudGVyZWQgYnkgdGhlIHVzZXIgaXMgc2FtZSBvciBub3QsIHZhbGlkYXRpbmcgdGhlIGVtYWlsIHRvIHNob3cgdGhlIEdldCBPVFAuXG4gICAgaWYgKHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgncHJpbWFyeUVtYWlsJykpIHtcbiAgICAgIHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgncHJpbWFyeUVtYWlsJykhLnZhbHVlQ2hhbmdlc1xuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMgIT09IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLnByaW1hcnlFbWFpbCkge1xuICAgICAgICAgICAgaWYgKEVNQUlMX1BBVFRFUk4udGVzdChyZXMpKSB7XG4gICAgICAgICAgICAgIHRoaXMudmVyaWZ5RW1haWwgPSB0cnVlXG4gICAgICAgICAgICAgIHRoaXMuZVZlcmlmaWVkID0gZmFsc2VcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudmVyaWZ5RW1haWwgPSBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZlcmlmeUVtYWlsID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuZVZlcmlmaWVkID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBzY3JvbGxUb0FjdGl2ZSh0eXBlOiBhbnkpOiB2b2lkIHtcbiAgICBsZXQgYWN0aXZlRWxlbWVudDogYW55XG4gICAgbGV0IGNvbnRhaW5lcjogYW55XG4gICAgaWYgKHR5cGUgPT09ICdsYW5ndWFnZScpIHtcbiAgICAgIGNvbnRhaW5lciA9IHRoaXMubGFuZ3VhZ2VEcm9wZG93bi5uYXRpdmVFbGVtZW50XG4gICAgICBhY3RpdmVFbGVtZW50ID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5sYW5ndWFnZS1pdGVtLWFjdGl2ZScpXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZGVzaWduYXRpb24nKSB7XG4gICAgICBjb250YWluZXIgPSB0aGlzLmRyb3Bkb3duLm5hdGl2ZUVsZW1lbnRcbiAgICAgIGFjdGl2ZUVsZW1lbnQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLml0ZW0tYWN0aXZlJylcbiAgICB9XG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGFjdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuXG4gIGhhbmRsZUNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGNsaWNrZWRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgaWYgKFxuICAgICAgdGhpcy50ZXh0Qm94ICYmICF0aGlzLnRleHRCb3gubmF0aXZlRWxlbWVudC5jb250YWlucyhjbGlja2VkRWxlbWVudCkgJiZcbiAgICAgIHRoaXMuZHJvcGRvd24gJiYgIXRoaXMuZHJvcGRvd24ubmF0aXZlRWxlbWVudC5jb250YWlucyhjbGlja2VkRWxlbWVudClcbiAgICApIHtcbiAgICAgIHRoaXMub3BlbkRlc2lnbmF0aW9uRHJvcGRvd24gPSBmYWxzZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLmxhbmd1YWdlVGV4dEJveCAmJiAhdGhpcy5sYW5ndWFnZVRleHRCb3gubmF0aXZlRWxlbWVudC5jb250YWlucyhjbGlja2VkRWxlbWVudCkgJiZcbiAgICAgIHRoaXMubGFuZ3VhZ2VEcm9wZG93biAmJiAhdGhpcy5sYW5ndWFnZURyb3Bkb3duLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoY2xpY2tlZEVsZW1lbnQpXG4gICAgKSB7XG4gICAgICB0aGlzLm9wZW5MYW5ndWFnZURyb3Bkb3duID0gZmFsc2VcbiAgICB9XG4gIH1cbiAgb25EZXNpZ25hdGlvbnNGb2N1cygpIHtcbiAgICAvLyB0aGlzLm9wZW5EZXNpZ25hdGlvbkRyb3Bkb3duID0gdHJ1ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZSgnZGVzaWduYXRpb24nKVxuICAgIH0sIDEwMClcbiAgfVxuICBvbkxhbmd1YWdlRm9jdXMoKSB7XG4gICAgdGhpcy5vcGVuTGFuZ3VhZ2VEcm9wZG93biA9IHRydWVcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoJ2xhbmd1YWdlJylcbiAgICB9LCAxMDApXG4gIH1cblxuICBmaWx0ZXJMYW5ndWFnZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5tYXN0ZXJMYW5ndWFnZXMgPSB0aGlzLm1hc3Rlckxhbmd1YWdlQmFja3VwLmZpbHRlcigodmFsOiBhbnkpID0+XG4gICAgICAgIHZhbCAmJiB2YWwubmFtZS50cmltKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKVxuICAgICAgKVxuICAgICAgaWYgKHRoaXMubWFzdGVyTGFuZ3VhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zdCB1c2VybmFtZUNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2RvbWljaWxlTWVkaXVtJylcbiAgICAgICAgaWYgKHVzZXJuYW1lQ29udHJvbCkge1xuICAgICAgICAgIHVzZXJuYW1lQ29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm9wZW5MYW5ndWFnZURyb3Bkb3duID0gdHJ1ZVxuICB9XG5cbiAgLy8gZmlsdGVyZGVzaWduYXRpb24odmFsdWU6IGFueSkge1xuICAvLyAgIGlmICh2YWx1ZS5sZW5ndGgpIHtcbiAgLy8gICAgIHRoaXMuZGVzaWdhbnRpb25GaWx0ZXJFbmFibGUgPXRydWVcbiAgLy8gICAgIHRoaXMuZmlsdGVyRGVzaWduYXRpb25zTWV0YSA9IHRoaXMuZGVzaWduYXRpb25zTWV0YS5maWx0ZXIoKHZhbDogYW55KSA9PlxuICAvLyAgICAgICB2YWwgJiYgdmFsLm5hbWUudHJpbSgpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgLy8gICAgIClcbiAgLy8gICAgIGlmICh0aGlzLmZpbHRlckRlc2lnbmF0aW9uc01ldGEubGVuZ3RoID09PSAwKSB7XG4gIC8vICAgICAgIGNvbnN0IHVzZXJuYW1lQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnZGVzaWduYXRpb24nKVxuICAvLyAgICAgICBpZiAodXNlcm5hbWVDb250cm9sKSB7XG4gIC8vICAgICAgICAgdXNlcm5hbWVDb250cm9sLnNldEVycm9ycyh7IHJlcXVpcmVkOiB0cnVlIH0pO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRoaXMuZmlsdGVyRGVzaWduYXRpb25zTWV0YSA9IHRoaXMuZGVzaWduYXRpb25zTWV0YS5zbGljZSgwLCB0aGlzLmRlc2lnbmF0aW9uRGVmYXVsdExvYWRDb3VudClcbiAgLy8gICAgIHRoaXMuZGVzaWdhbnRpb25GaWx0ZXJFbmFibGUgPWZhbHNlXG5cbiAgLy8gICAgIHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50ID0gdGhpcy5kZXNpZ25hdGlvbkRlZmF1bHRMb2FkQ291bnQ7XG4gIC8vICAgfVxuICAvLyAgIC8vIHRoaXMub3BlbkRlc2lnbmF0aW9uRHJvcGRvd24gPSB0cnVlXG4gIC8vIH1cblxuICAvLyBhc3luYyBnZXRNYXN0ZXJEZXNpZ25hdGlvbigpIHtcbiAgLy8gICB0aGlzLnNpZ251cFNlcnZpY2UuZ2V0T3JnUmVhZERhdGEodGhpcy51c2VyUHJvZmlsZU9iamVjdC5yb290T3JnSWQpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgLy8gICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmZyYW1ld29ya2lkKSB7XG4gIC8vICAgICAgIHRoaXMuc2lnbnVwU2VydmljZS5nZXRGcmFtZXdvcmtJbmZvKHJlc3VsdC5mcmFtZXdvcmtpZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAvLyAgICAgICAgIGNvbnN0IGZyYW1ld29ya0RldGFpbHMgPSBfLmdldChyZXMsICdyZXN1bHQuZnJhbWV3b3JrJylcbiAgLy8gICAgICAgICBjb25zdCBjYXRlZ29yaWVzT2ZGcmFtZXdvcmsgPSBfLmdldChmcmFtZXdvcmtEZXRhaWxzLCAnY2F0ZWdvcmllcycsIFtdKVxuICAvLyAgICAgICAgIGNvbnN0IG9yZ2FuaXNhdGlvbnNMaXN0ID0gdGhpcy5nZXRUZXJtc0J5Q29kZShjYXRlZ29yaWVzT2ZGcmFtZXdvcmssICdvcmcnKVxuICAvLyAgICAgICAgIGNvbnN0IGRpc09yZGVyZWRMaXN0ID0gXy5nZXQob3JnYW5pc2F0aW9uc0xpc3QsICdbMF0uY2hpbGRyZW4nLCBbXSlcbiAgLy8gICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc01ldGEgPSBfLnNvcnRCeShkaXNPcmRlcmVkTGlzdCwgJ25hbWUnKVxuICAvLyAgICAgICAgIHRoaXMuZmlsdGVyRGVzaWduYXRpb25zTWV0YSA9IHRoaXMuZGVzaWduYXRpb25zTWV0YS5zbGljZSgwLCB0aGlzLmRlc2lnbmF0aW9uRGVmYXVsdExvYWRDb3VudClcbiAgLy8gICAgICAgICBpZiAodGhpcy5jYW5TaG93RGVzaWduYXRpb24pIHtcbiAgLy8gICAgICAgICAgIGxldCBmaWVsZCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnZGVzaWduYXRpb24nKVxuICAvLyAgICAgICAgICAgaWYgKGZpZWxkICYmIGZpZWxkLnZhbHVlKSB7XG4gIC8vICAgICAgICAgICAgIGxldCBfdmFsdWUgPSBmaWVsZC52YWx1ZS50b0xvd2VyQ2FzZSgpXG4gIC8vICAgICAgICAgICAgIGlmICghdGhpcy5kZXNpZ25hdGlvbnNNZXRhLmZpbmQoKGQ6IGFueSkgPT4gZC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IF92YWx1ZSkpIHtcbiAgLy8gICAgICAgICAgICAgICBmaWVsZC5wYXRjaFZhbHVlKCcnKVxuICAvLyAgICAgICAgICAgICB9XG4gIC8vICAgICAgICAgICB9XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAvLyAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAvLyAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkOicsIGVycm9yKVxuICAvLyAgICAgICB9KVxuICAvLyAgICAgfVxuICAvLyAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gIC8vICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgLy8gICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9jY3VycmVkOicsIGVycm9yKVxuICAvLyAgIH0pXG4gIC8vIH1cblxuICAvLyBwcml2YXRlIGdldFRlcm1zQnlDb2RlKGNhdGVnb3JpZXM6IGFueVtdLCBjb2RlOiBzdHJpbmcpIHtcbiAgLy8gICBjb25zdCBzZWxlY3RlZENhdGVnb3J5ID0gY2F0ZWdvcmllcy5maWx0ZXIoXG4gIC8vICAgICAoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnkuY29kZSA9PT0gY29kZVxuICAvLyAgICk7XG4gIC8vICAgcmV0dXJuIF8uZ2V0KHNlbGVjdGVkQ2F0ZWdvcnksICdbMF0udGVybXMnLCBbXSk7XG4gIC8vIH1cblxuICBwcmV2ZW50Qmx1cihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxuICBwcmV2ZW50TGFuZ3VhZ2VCbHVyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgc2VsZWN0RGVzaWduYXRpb24oZGVzaWduYXRpb246IGFueSkge1xuICAgIHRoaXMudXNlckRldGFpbHNGb3JtLnBhdGNoVmFsdWUoeyBkZXNpZ25hdGlvbjogZGVzaWduYXRpb24gfSlcbiAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ290aGVyRGVzaWduYXRpb24nKVxuICAgIGlmICh0aGlzLnNob3dEb3B0Q2hhbmdlcyAmJiBkZXNpZ25hdGlvbiA9PT0gJ090aGVycycpIHtcbiAgICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgICAgZmllbGRDb250cm9sLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgZmllbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgfVxuICAgICAgdGhpcy5jYW5TaG93T3RoZXJEZXNpZ25hdGlvbiA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpZWxkQ29udHJvbCkge1xuICAgICAgICBmaWVsZENvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKClcbiAgICAgICAgZmllbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgfVxuICAgICAgdGhpcy5jYW5TaG93T3RoZXJEZXNpZ25hdGlvbiA9IGZhbHNlXG4gICAgfVxuICAgIHRoaXMub3BlbkRlc2lnbmF0aW9uRHJvcGRvd24gPSBmYWxzZVxuICB9XG5cblxuICBzZWxlY3RMYW5ndWFnZShsYW5ndWFnZTogYW55KSB7XG4gICAgdGhpcy51c2VyRGV0YWlsc0Zvcm0ucGF0Y2hWYWx1ZSh7IGRvbWljaWxlTWVkaXVtOiBsYW5ndWFnZSB9KVxuICAgIHRoaXMub3Blbkxhbmd1YWdlRHJvcGRvd24gPSBmYWxzZVxuICB9XG5cbiAgaXNFbWFpbEFsbG93ZWQoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGRvbWFpbiA9IGVtYWlsLnNwbGl0KCdAJylbMV1cbiAgICByZXR1cm4gZG9tYWluID8gdGhpcy5hcHByb3ZlZERvbWFpbkxpc3QuaW5jbHVkZXMoZG9tYWluKSA6IGZhbHNlXG4gIH1cblxuICBoYW5kbGVHZW5lcmF0ZUVtYWlsT1RQKHZlcmlmeVR5cGU/OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyh2ZXJpZnlUeXBlKVxuICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLmdldFdoaXRlTGlzdERvbWFpbigpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnJlc3VsdCAmJiByZXNwb25zZS5yZXN1bHQuZG9tYWlucyAmJiByZXNwb25zZS5yZXN1bHQuZG9tYWlucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuYXBwcm92ZWREb21haW5MaXN0ID0gcmVzcG9uc2UucmVzdWx0LmRvbWFpbnNcbiAgICAgICAgaWYgKHRoaXMuYXBwcm92ZWREb21haW5MaXN0ICYmIHRoaXMuYXBwcm92ZWREb21haW5MaXN0Lmxlbmd0aCAmJiB0aGlzLmFwcHJvdmVkRG9tYWluTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNFbWFpbEFsbG93ZWQodGhpcy51c2VyRGV0YWlsc0Zvcm0udmFsdWVbJ3ByaW1hcnlFbWFpbCddKSkge1xuICAgICAgICAgICAgdGhpcy5vdHBTZXJ2aWNlLnNlbmRFbWFpbE90cCh0aGlzLnVzZXJEZXRhaWxzRm9ybS52YWx1ZVsncHJpbWFyeUVtYWlsJ10pXG4gICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKF9yZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxPdHBGb3JtLnJlc2V0KClcbiAgICAgICAgICAgICAgICBpZiAodmVyaWZ5VHlwZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5lbWFpbE90cFNlbnQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0RW1haWxUaW1lcigpXG4gICAgICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5oYW5kbGVUcmFuc2xhdGVUbygnb3RwU2VudEVtYWlsJykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvci5vaykge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHRoaXMuaGFuZGxlVHJhbnNsYXRlVG8oJ2VtYWlsT1RQU2VudEZhaWwnKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5oYW5kbGVUcmFuc2xhdGVUbygnZW1haWxBcHByb3ZlZFBvcHVwTXNnJykpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGhhbmRsZUdlbmVyYXRlT1RQKHZlcmlmeVR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm90cFNlcnZpY2Uuc2VuZE90cCh0aGlzLnVzZXJEZXRhaWxzRm9ybS52YWx1ZVsnbW9iaWxlJ10pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95U3ViamVjdCQpKVxuICAgICAgLnN1YnNjcmliZSgoX3JlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCdvdHBTZW50TW9iaWxlJykpXG4gICAgICAgIHRoaXMub3RwRm9ybS5yZXNldCgpXG4gICAgICAgIGlmICh2ZXJpZnlUeXBlKSB7XG4gICAgICAgICAgdGhpcy5vdHBTZW50ID0gdHJ1ZVxuICAgICAgICAgIHRoaXMuc3RhcnRUaW1lcigpXG4gICAgICAgICAgLy90aGlzLmhhbmRsZVZlcmlmeU9UUCh2ZXJpZnlUeXBlLCB0aGlzLnVzZXJEZXRhaWxzRm9ybS52YWx1ZVsnbW9iaWxlJ10pXG4gICAgICAgIH1cbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFlcnJvci5vaykge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCdtb2JpbGVPVFBTZW50RmFpbCcpKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgaGFuZGxlUmVzZW5kT1RQKCk6IHZvaWQge1xuICAgIHRoaXMudGltZUxlZnQgPSAxNTBcbiAgICB0aGlzLnNob3dSZXNlbmRPVFAgPSB0cnVlXG4gICAgdGhpcy5zdGFydFRpbWVyKClcbiAgICBsZXQgb3RwVmFsdWUkOiBhbnlcbiAgICBvdHBWYWx1ZSQgPSB0aGlzLm90cFNlcnZpY2UucmVzZW5kT3RwKHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydtb2JpbGUnXS52YWx1ZSlcblxuICAgIG90cFZhbHVlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpXG4gICAgICAuc3Vic2NyaWJlKChfcmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHRoaXMuaGFuZGxlVHJhbnNsYXRlVG8oJ290cFNlbnRNb2JpbGUnKSlcbiAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGlmICghZXJyb3Iub2spIHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oXy5nZXQoZXJyb3IsICdlcnJvci5wYXJhbXMuZXJybXNnJykgfHwgJ1VuYWJsZSB0byByZXNlbmQgT1RQLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyIScpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBoYW5kbGVSZXNlbmRFbWFpbE9UUCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtYWlsVGltZUxlZnQgPSAxNTBcbiAgICB0aGlzLnNob3dFbWFpbFJlc2VuZE9UUCA9IHRydWVcbiAgICB0aGlzLnN0YXJ0RW1haWxUaW1lcigpXG4gICAgbGV0IG90cFZhbHVlJDogYW55XG4gICAgb3RwVmFsdWUkID0gdGhpcy5vdHBTZXJ2aWNlLnNlbmRFbWFpbE90cCh0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncHJpbWFyeUVtYWlsJ10udmFsdWUpXG4gICAgb3RwVmFsdWUkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveVN1YmplY3QkKSlcbiAgICAgIC5zdWJzY3JpYmUoKF9yZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5oYW5kbGVUcmFuc2xhdGVUbygnb3RwU2VudEVtYWlsJykpXG4gICAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIWVycm9yLm9rKSB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKF8uZ2V0KGVycm9yLCAnZXJyb3IucGFyYW1zLmVycm1zZycpIHx8ICdVbmFibGUgdG8gcmVzZW5kIE9UUCwgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlciEnKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgdmVyaWZ5RW1haWxPVFAoKTogdm9pZCB7XG4gICAgdGhpcy5vdHBTZXJ2aWNlLnZlcmlmeUVtYWlsT1RQKHRoaXMuZW1haWxPdHBGb3JtLmNvbnRyb2xzWydlT3RwJ10udmFsdWUsIHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydwcmltYXJ5RW1haWwnXS52YWx1ZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpXG4gICAgICAuc3Vic2NyaWJlKChfcmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHRoaXMuaGFuZGxlVHJhbnNsYXRlVG8oJ09UUFNlbnRTdWNjZXNzJykpXG4gICAgICAgIHRoaXMudmVyaWZ5RW1haWwgPSB0cnVlXG4gICAgICAgIHRoaXMuZVZlcmlmaWVkID0gdHJ1ZVxuICAgICAgICB0aGlzLmVtYWlsT3RwU2VudCA9IGZhbHNlXG4gICAgICAgIHRoaXMuY29udGV4dFRva2VuID0gX3Jlcy5yZXN1bHQuY29udGV4dFRva2VuXG4gICAgICAgIHRoaXMudmVyaWZpZWRFbWFpbE90cCA9IHRoaXMuZW1haWxPdHBGb3JtLmNvbnRyb2xzWydlT3RwJ10udmFsdWVcbiAgICAgICAgdGhpcy5lbWFpbE90cEZvcm0ucmVzZXQoKVxuICAgICAgfSwgKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIWVycm9yLm9rKSB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKF8uZ2V0KGVycm9yLCAnZXJyb3IucGFyYW1zLmVycm1zZycpIHx8IHRoaXMuaGFuZGxlVHJhbnNsYXRlVG8oJ09UUFZlcmlmeUZhaWxlZCcpKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgdmVyaWZ5TW9iaWxlT1RQKCk6IHZvaWQge1xuICAgIHRoaXMub3RwU2VydmljZS52ZXJpZnlPVFAodGhpcy5vdHBGb3JtLmNvbnRyb2xzWydvdHAnXS52YWx1ZSwgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ21vYmlsZSddLnZhbHVlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveVN1YmplY3QkKSlcbiAgICAgIC5zdWJzY3JpYmUoKF9yZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5oYW5kbGVUcmFuc2xhdGVUbygnT1RQU2VudFN1Y2Nlc3MnKSlcbiAgICAgICAgdGhpcy52ZXJpZnlNb2JpbGUgPSB0cnVlXG4gICAgICAgIHRoaXMubVZlcmlmaWVkID0gdHJ1ZVxuICAgICAgICB0aGlzLm90cFNlbnQgPSBmYWxzZVxuICAgICAgICB0aGlzLnZlcmlmaWVkUGhvbmVPdHAgPSB0aGlzLm90cEZvcm0uY29udHJvbHNbJ290cCddLnZhbHVlXG4gICAgICAgIHRoaXMub3RwRm9ybS5yZXNldCgpXG4gICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghZXJyb3Iub2spIHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oXy5nZXQoZXJyb3IsICdlcnJvci5wYXJhbXMuZXJybXNnJykgfHwgdGhpcy5oYW5kbGVUcmFuc2xhdGVUbygnT1RQVmVyaWZ5RmFpbGVkJykpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBzdGFydFRpbWVyKCkge1xuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy50aW1lTGVmdCA+IDApIHtcbiAgICAgICAgdGhpcy50aW1lTGVmdCA9IHRoaXMudGltZUxlZnQgLSAxXG4gICAgICAgIGlmICh0aGlzLnRpbWVyRGl2KSB7XG4gICAgICAgICAgdGhpcy50aW1lckRpdi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGAke01hdGguZmxvb3IodGhpcy50aW1lTGVmdCAvIDYwKX1tOiAke3RoaXMudGltZUxlZnQgJSA2MH1zYFxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpXG4gICAgICAgIHRoaXMuc2hvd1Jlc2VuZE9UUCA9IHRydWVcbiAgICAgIH1cbiAgICB9LCAxMDAwKVxuICB9XG5cbiAgc3RhcnRFbWFpbFRpbWVyKCkge1xuICAgIHRoaXMuZW1haWxJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmVtYWlsVGltZUxlZnQgPiAwKSB7XG4gICAgICAgIHRoaXMuZW1haWxUaW1lTGVmdCA9IHRoaXMuZW1haWxUaW1lTGVmdCAtIDFcbiAgICAgICAgaWYgKHRoaXMuZW1haWxUaW1lckRpdikge1xuICAgICAgICAgIHRoaXMuZW1haWxUaW1lckRpdi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGAke01hdGguZmxvb3IodGhpcy5lbWFpbFRpbWVMZWZ0IC8gNjApfW06ICR7dGhpcy5lbWFpbFRpbWVMZWZ0ICUgNjB9c2BcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmVtYWlsSW50ZXJ2YWwpXG4gICAgICAgIHRoaXMuc2hvd0VtYWlsUmVzZW5kT1RQID0gdHJ1ZVxuICAgICAgfVxuICAgIH0sIDEwMDApXG4gIH1cblxuICBwdWJsaWMgY2hlY2tBZnRlclN1Ym1pdChfZTogYW55KSB7XG4gICAgLy8gdGhpcy5yZW5kZXJTdWJqZWN0Lm5leHQoKVxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coJ0Zvcm0gaXMgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseScpXG4gICAgaWYgKHRoaXMuYmF0Y2hEZXRhaWxzLmJhdGNoQXR0cmlidXRlcy51c2VyUHJvZmlsZUZpbGVkcyAmJlxuICAgICAgdGhpcy5iYXRjaERldGFpbHMuYmF0Y2hBdHRyaWJ1dGVzLnVzZXJQcm9maWxlRmlsZWRzID09PSBcIkF2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGVcIikge1xuICAgICAgdGhpcy5zdWJtaXRTdXJldnkodHJ1ZSlcbiAgICB9XG4gICAgaWYgKHRoaXMuYmF0Y2hEZXRhaWxzLmJhdGNoQXR0cmlidXRlcy51c2VyUHJvZmlsZUZpbGVkcyAmJiAhdGhpcy51cGRhdGVQcm9maWxlICYmXG4gICAgICAodGhpcy5iYXRjaERldGFpbHMuYmF0Y2hBdHRyaWJ1dGVzLnVzZXJQcm9maWxlRmlsZWRzID09PSBcIkZ1bGwgaUdPVCBwcm9maWxlXCIgfHxcbiAgICAgICAgdGhpcy5iYXRjaERldGFpbHMuYmF0Y2hBdHRyaWJ1dGVzLnVzZXJQcm9maWxlRmlsZWRzID09PSBcIkN1c3RvbSBpR09UIHByb2ZpbGVcIikpIHtcbiAgICAgIHRoaXMuc3VibWl0U3VyZXZ5KHRydWUpXG4gICAgfVxuICAgIHRoaXMub3BlblNuYWNrYmFyKCdGb3JtIGlzIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHknKVxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpXG4gIH1cblxuICBjbG9zZVBvcHVwKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpXG4gIH1cblxuICBwcml2YXRlIG9wZW5TbmFja2JhcihwcmltYXJ5TXNnOiBzdHJpbmcsIGR1cmF0aW9uOiBudW1iZXIgPSA1MDAwKSB7XG4gICAgdGhpcy5zbmFja0Jhci5vcGVuKHByaW1hcnlNc2csICdYJywge1xuICAgICAgZHVyYXRpb24sXG4gICAgfSlcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUlkID0gXy5nZXQodGhpcy5kYXRhLCAnYmF0Y2hEYXRhLmJhdGNoQXR0cmlidXRlcy5wcm9maWxlU3VydmV5SWQnKVxuICAgIHRoaXMuZ2V0Rm9ybURldGFpbHMoKVxuICAgIHRoaXMuc2V0VmFsdWVDaGFuZ2VGdW5jdGlvbnMoKVxuICAgIHRoaXMuZmV0Y2hDYWRyZURhdGEoKVxuICAgIHRoaXMuZ2V0R3JvdXBEYXRhKClcbiAgICB0aGlzLmdldFBlbmRpbmdEZXRhaWxzKClcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIHRoaXMubG9hZERlc2lnbmF0aW9ucygpXG4gICAgICB0aGlzLmNoZWNrU2VsZWN0ZWRPcmdIYXNEZXNpZ25hdGlvbnMoKTtcbiAgICAgIC8vdGhpcy5nZXRNYXN0ZXJEZXNpZ25hdGlvbigpXG4gICAgICB0aGlzLmdldE1hc3Rlckxhbmd1YWdlKClcbiAgICB9LCA1MDApXG4gIH1cblxuICBnZXRGb3JtRGV0YWlscygpIHtcbiAgICBpZiAodGhpcy5mb3JtSWQpIHtcbiAgICAgIHRoaXMucHJvZmlsZVYyU3ZjLmdldEZvcm1WMkJ5SUQodGhpcy5mb3JtSWQpLnN1YnNjcmliZSgocmVzcG9uY2U6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uY2UpIHtcbiAgICAgICAgICB0aGlzLmZvcm1zRGV0aWxzID0gXy5nZXQocmVzcG9uY2UsICdyZXN1bHQucmVzcG9uc2UnLCB7fSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBzZXRWYWx1ZUNoYW5nZUZ1bmN0aW9ucygpIHtcbiAgICBjb25zdCBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlYXJjaERlc2lnbmF0aW9uJylcbiAgICBpZiAoc2VhcmNoRGVzaWduYXRpb25Db250cm9sKSB7XG4gICAgICBsZXQgc2V0dGluZ1ZhbHVlQ2hhbmdlID0gdHJ1ZVxuICAgICAgc2VhcmNoRGVzaWduYXRpb25Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgICkuc3Vic2NyaWJlKHNlYXJjaFRleHQgPT4ge1xuICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25zT2Zmc2V0ID0gMFxuICAgICAgICAgIGlmIChzZWFyY2hUZXh0ICYmIHNlYXJjaFRleHQubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25TZWFyY2hUZXh0ID0gc2VhcmNoVGV4dFxuICAgICAgICAgICAgdGhpcy5nZXRkZXNpZ25hdGlvbnNNZXRhKClcbiAgICAgICAgICB9IGVsc2UgaWYgKCFzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgdGhpcy5kZXNpZ25hdGlvblNlYXJjaFRleHQgPSBzZWFyY2hUZXh0XG4gICAgICAgICAgICBpZighc2V0dGluZ1ZhbHVlQ2hhbmdlKSB7XG4gICAgICAgICAgICAgIHRoaXMuZ2V0ZGVzaWduYXRpb25zTWV0YSgpIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jaGVja0N1cnJlbnREZXNpZ25hdGlvblByZXNlbnQoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzZXR0aW5nVmFsdWVDaGFuZ2UgPSBmYWxzZVxuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGZldGNoQ2FkcmVEYXRhKCkge1xuICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgKyAxXG4gICAgdGhpcy5wcm9maWxlVjJTdmMuZmV0Y2hDYWRyZSgpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgIGNvbnN0IHZhbHVlID0gcmVzcG9uc2UgJiYgcmVzcG9uc2UucmVzdWx0ICYmIHJlc3BvbnNlLnJlc3VsdC5yZXNwb25zZSAmJiByZXNwb25zZS5yZXN1bHQucmVzcG9uc2UudmFsdWVcbiAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5jaXZpbFNlcnZpY2VUeXBlKSB7XG4gICAgICAgIHRoaXMuY2l2aWxTZXJ2aWNlRGF0YSA9IHZhbHVlLmNpdmlsU2VydmljZVR5cGVcbiAgICAgICAgdGhpcy5jaXZpbFNlcnZpY2VUeXBlcyA9IHRoaXMuY2l2aWxTZXJ2aWNlRGF0YS5jaXZpbFNlcnZpY2VUeXBlTGlzdC5tYXAoKHNlcnZpY2U6IGFueSkgPT4gc2VydmljZS5uYW1lKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBnZXRJc0NhZHJlU3RhdHVzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc0NhZHJlU3RhdHVzID0gdmFsdWVcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMudXNlckRldGFpbHNGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICB0eXBlT2ZDaXZpbFNlcnZpY2U6ICcnLFxuICAgICAgICBzZXJ2aWNlVHlwZTogJycsXG4gICAgICAgIGNhZHJlTmFtZTogJycsXG4gICAgICAgIGNhZHJlQmF0Y2g6ICcnLFxuICAgICAgICBjYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5OiAnJyxcbiAgICAgIH0pXG4gICAgICB0aGlzLmFkZFZhbGlkYXRvcnMoKVxuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5zaG93QmF0Y2hGb3JOb0NhZHJlID0gZmFsc2VcbiAgICAgIHRoaXMucmVtb3ZlVmFsaWRhdG9ycygpXG4gICAgfVxuICB9XG5cbiAgZ2V0QWxsRXJyb3JzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2xFcnJvcnMgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1trZXldLmVycm9ycztcbiAgICAgIGlmIChjb250cm9sRXJyb3JzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2xFcnJvcnMpLmZvckVhY2goKGVycm9yS2V5KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChlcnJvcktleSkge1xuICAgICAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzLnB1c2goYCR7a2V5fSBpcyByZXF1aXJlZC5gKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtaW5sZW5ndGgnOlxuICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZExlbmd0aCA9IGNvbnRyb2xFcnJvcnNbJ21pbmxlbmd0aCddLnJlcXVpcmVkTGVuZ3RoO1xuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VzLnB1c2goYCR7a2V5fSBtdXN0IGJlIGF0IGxlYXN0ICR7cmVxdWlyZWRMZW5ndGh9IGNoYXJhY3RlcnMgbG9uZy5gKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZXMucHVzaChgUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy5gKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBBZGQgbW9yZSBjYXNlcyBmb3Igb3RoZXIgdmFsaWRhdG9ycyBhcyBuZWVkZWRcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBlcnJvck1lc3NhZ2VzO1xuICB9XG5cbiAgYWRkVmFsaWRhdG9ycygpIHtcbiAgICBjb25zdCBmaWVsZENvbnRyb2wwID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdpc0NhZHJlJylcbiAgICBpZiAoZmllbGRDb250cm9sMCkge1xuICAgICAgZmllbGRDb250cm9sMC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICBmaWVsZENvbnRyb2wwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgIH1cbiAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ3R5cGVPZkNpdmlsU2VydmljZScpXG4gICAgaWYgKGZpZWxkQ29udHJvbCkge1xuICAgICAgZmllbGRDb250cm9sLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIGZpZWxkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICB9XG4gICAgY29uc3QgZmllbGRDb250cm9sMSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnc2VydmljZVR5cGUnKVxuICAgIGlmIChmaWVsZENvbnRyb2wxKSB7XG4gICAgICBmaWVsZENvbnRyb2wxLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIGZpZWxkQ29udHJvbDEudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgfVxuICAgIGNvbnN0IGZpZWxkQ29udHJvbDMgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlQmF0Y2gnKVxuICAgIGlmIChmaWVsZENvbnRyb2wzKSB7XG4gICAgICBmaWVsZENvbnRyb2wzLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIGZpZWxkQ29udHJvbDMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlVmFsaWRhdG9ycygpIHtcbiAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ3R5cGVPZkNpdmlsU2VydmljZScpXG4gICAgaWYgKGZpZWxkQ29udHJvbCkge1xuICAgICAgZmllbGRDb250cm9sLmNsZWFyVmFsaWRhdG9ycygpXG4gICAgICBmaWVsZENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgfVxuICAgIGNvbnN0IGZpZWxkQ29udHJvbDEgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJylcbiAgICBpZiAoZmllbGRDb250cm9sMSkge1xuICAgICAgZmllbGRDb250cm9sMS5jbGVhclZhbGlkYXRvcnMoKVxuICAgICAgZmllbGRDb250cm9sMS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICB9XG4gICAgY29uc3QgZmllbGRDb250cm9sMiA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVOYW1lJylcbiAgICBpZiAoZmllbGRDb250cm9sMikge1xuICAgICAgZmllbGRDb250cm9sMi5jbGVhclZhbGlkYXRvcnMoKVxuICAgICAgZmllbGRDb250cm9sMi51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICB9XG4gICAgY29uc3QgZmllbGRDb250cm9sMyA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVCYXRjaCcpXG4gICAgaWYgKGZpZWxkQ29udHJvbDMpIHtcbiAgICAgIGZpZWxkQ29udHJvbDMuY2xlYXJWYWxpZGF0b3JzKClcbiAgICAgIGZpZWxkQ29udHJvbDMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgfVxuICB9XG5cbiAgZ2V0U2VydmljZShldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VydmljZVR5cGVDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpXG4gICAgY29uc3QgY2FkcmVDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdjYWRyZU5hbWUnKVxuICAgIGNvbnN0IGJhdGNoQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVCYXRjaCcpXG4gICAgY29uc3QgY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eUNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlQ29udHJvbGxpbmdBdXRob3JpdHknKVxuXG4gICAgaWYgKHNlcnZpY2VUeXBlQ29udHJvbCkgeyBzZXJ2aWNlVHlwZUNvbnRyb2wucmVzZXQoKSB9XG4gICAgaWYgKGNhZHJlQ29udHJvbCkgeyBjYWRyZUNvbnRyb2wucmVzZXQoKSB9XG4gICAgaWYgKGJhdGNoQ29udHJvbCkgeyBiYXRjaENvbnRyb2wucmVzZXQoKSB9XG4gICAgaWYgKGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlDb250cm9sKSB7IGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlDb250cm9sLnJlc2V0KCkgfVxuXG4gICAgdGhpcy5zZXJ2aWNlVHlwZSA9IHRoaXMuY2l2aWxTZXJ2aWNlRGF0YS5jaXZpbFNlcnZpY2VUeXBlTGlzdC5maW5kKChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubmFtZSA9PT0gZXZlbnQpXG4gICAgdGhpcy5zZXJ2aWNlVHlwZSA9IHRoaXMuY2l2aWxTZXJ2aWNlRGF0YS5jaXZpbFNlcnZpY2VUeXBlTGlzdC5maW5kKChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQubmFtZSA9PT0gZXZlbnQpXG4gICAgaWYgKHRoaXMuc2VydmljZVR5cGUpIHtcbiAgICAgIHRoaXMuc2VydmljZUxpc3REYXRhID0gdGhpcy5zZXJ2aWNlVHlwZS5zZXJ2aWNlTGlzdFxuICAgICAgdGhpcy5zZXJ2aWNlTmFtZSA9IHRoaXMuc2VydmljZUxpc3REYXRhLm1hcCgoc2VydmljZTogYW55KSA9PiBzZXJ2aWNlLm5hbWUpXG4gICAgICB0aGlzLnNlcnZpY2VJZCA9IHRoaXMuc2VydmljZVR5cGUuaWRcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJydcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnU2VydmljZSBUeXBlIG5vdCBmb3VuZCdcbiAgICB9XG4gIH1cblxuICBvblNlcnZpY2VTZWxlY3QoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGNhZHJlQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVOYW1lJylcbiAgICBjb25zdCBiYXRjaENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlQmF0Y2gnKVxuICAgIGNvbnN0IGNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdjYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5JylcbiAgICBpZiAoY2FkcmVDb250cm9sKSB7IGNhZHJlQ29udHJvbC5yZXNldCgpIH1cbiAgICBpZiAoYmF0Y2hDb250cm9sKSB7IGJhdGNoQ29udHJvbC5yZXNldCgpIH1cbiAgICBpZiAoY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eUNvbnRyb2wpIHsgY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eUNvbnRyb2wucmVzZXQoKSB9XG4gICAgdGhpcy5zZWxlY3RlZFNlcnZpY2VOYW1lID0gZXZlbnQudmFsdWVcbiAgICBpZiAodGhpcy5zZXJ2aWNlTGlzdERhdGEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlID0gdGhpcy5zZXJ2aWNlTGlzdERhdGEuZmluZCgoc2VydmljZTogYW55KSA9PiBzZXJ2aWNlLm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlTmFtZSlcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkU2VydmljZSkge1xuICAgICAgICB0aGlzLmNpdmlsU2VydmljZU5hbWUgPSB0aGlzLnNlbGVjdGVkU2VydmljZS5uYW1lXG4gICAgICAgIHRoaXMuY2l2aWxTZXJ2aWNlSWQgPSB0aGlzLnNlbGVjdGVkU2VydmljZS5pZFxuICAgICAgICB0aGlzLmNhZHJlID0gdGhpcy5zZWxlY3RlZFNlcnZpY2UuY2FkcmVMaXN0ID8gdGhpcy5zZWxlY3RlZFNlcnZpY2UuY2FkcmVMaXN0Lm1hcCgoY2FkcmU6IGFueSkgPT4gY2FkcmUubmFtZSkgOiBbXVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZFNlcnZpY2UgJiYgdGhpcy5zZWxlY3RlZFNlcnZpY2UuY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eSkge1xuICAgICAgdGhpcy5jYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5ID0gdGhpcy5zZWxlY3RlZFNlcnZpY2UuY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHkgPSAnTkEnXG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkU2VydmljZSAmJiB0aGlzLnNlbGVjdGVkU2VydmljZS5jYWRyZUxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnNob3dCYXRjaEZvck5vQ2FkcmUgPSB0cnVlXG4gICAgICB0aGlzLnN0YXJ0QmF0Y2ggPSB0aGlzLnNlbGVjdGVkU2VydmljZS5jb21tb25CYXRjaFN0YXJ0WWVhclxuICAgICAgdGhpcy5lbmRCYXRjaCA9IHRoaXMuc2VsZWN0ZWRTZXJ2aWNlLmNvbW1vbkJhdGNoRW5kWWVhclxuICAgICAgdGhpcy5leGNsdXNpb25ZZWFyID0gdGhpcy5zZWxlY3RlZFNlcnZpY2UuY29tbW9uQmF0Y2hFeGNsdXNpb25ZZWFyTGlzdFxuICAgICAgLy8gdHNsaW50OmRpc2FibGVcbiAgICAgIHRoaXMueWVhckFycmF5ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5lbmRCYXRjaCAtIHRoaXMuc3RhcnRCYXRjaCArIDEgfSwgKF8sIGluZGV4KSA9PiB0aGlzLnN0YXJ0QmF0Y2ggKyBpbmRleClcbiAgICAgICAgLmZpbHRlcih5ZWFyID0+ICF0aGlzLmV4Y2x1c2lvblllYXIuaW5jbHVkZXMoeWVhcikpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0JhdGNoRm9yTm9DYWRyZSA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgb25DYWRyZVNlbGVjdChldmVudDogYW55KSB7XG4gICAgY29uc3QgYmF0Y2hDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdjYWRyZUJhdGNoJylcbiAgICBjb25zdCBjYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5Q29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eScpXG5cbiAgICBpZiAoYmF0Y2hDb250cm9sKSB7IGJhdGNoQ29udHJvbC5yZXNldCgpIH1cbiAgICBpZiAoY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eUNvbnRyb2wpIHsgY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eUNvbnRyb2wucmVzZXQoKSB9XG4gICAgdGhpcy5zZWxlY3RlZENhZHJlTmFtZSA9IGV2ZW50XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2FkcmUgPSB0aGlzLnNlbGVjdGVkU2VydmljZS5jYWRyZUxpc3QuZmluZCgoY2FkcmU6IGFueSkgPT4gY2FkcmUubmFtZSA9PT0gdGhpcy5zZWxlY3RlZENhZHJlTmFtZSlcbiAgICAgIHRoaXMuc3RhcnRCYXRjaCA9IHRoaXMuc2VsZWN0ZWRDYWRyZSA/IHRoaXMuc2VsZWN0ZWRDYWRyZS5zdGFydEJhdGNoWWVhciA6ICcnXG4gICAgICB0aGlzLmVuZEJhdGNoID0gdGhpcy5zZWxlY3RlZENhZHJlID8gdGhpcy5zZWxlY3RlZENhZHJlLmVuZEJhdGNoWWVhciA6ICcnXG4gICAgICB0aGlzLmV4Y2x1c2lvblllYXIgPSB0aGlzLnNlbGVjdGVkQ2FkcmUgPyB0aGlzLnNlbGVjdGVkQ2FkcmUuZXhjdWxzaW9uWWVhckxpc3QgOiAnJ1xuICAgICAgLy8gdHNsaW50OmRpc2FibGVcbiAgICAgIHRoaXMueWVhckFycmF5ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5lbmRCYXRjaCAtIHRoaXMuc3RhcnRCYXRjaCArIDEgfSwgKF8sIGluZGV4KSA9PiB0aGlzLnN0YXJ0QmF0Y2ggKyBpbmRleClcbiAgICAgICAgLmZpbHRlcih5ZWFyID0+ICF0aGlzLmV4Y2x1c2lvblllYXIuaW5jbHVkZXMoeWVhcikpXG4gICAgICB0aGlzLmNhZHJlSWQgPSB0aGlzLnNlbGVjdGVkQ2FkcmUgPyB0aGlzLnNlbGVjdGVkQ2FkcmUuaWQgOiAnJ1xuICAgIH1cblxuICB9XG5cbiAgZ2V0UGVuZGluZ0RldGFpbHMoKSB7XG4gICAgXG4gICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciArIDFcbiAgICB0aGlzLnByb2ZpbGVWMlN2Yy5mZXRjaEFwcHJvdmFsRGV0YWlscygpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgaWYgKHJlc3AgJiYgcmVzcC5yZXN1bHQgJiYgcmVzcC5yZXN1bHQuZGF0YSkge1xuICAgICAgICB0aGlzLnBlbmRpbmdGaWxlZHMgPSByZXNwLnJlc3VsdC5kYXRhXG4gICAgICAgIGlmICh0aGlzLnBlbmRpbmdGaWxlZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMucGVuZGluZ0ZpbGVkcy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICh1c2VyWydncm91cCddKSB7XG4gICAgICAgICAgICAgIGxldCBjdHJsID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdncm91cCcpXG4gICAgICAgICAgICAgIGlmIChjdHJsKSB7XG4gICAgICAgICAgICAgICAgY3RybC5wYXRjaFZhbHVlKHsgZ3JvdXA6IHVzZXJbJ2dyb3VwJ10gfSlcbiAgICAgICAgICAgICAgICB0aGlzLnBHcm91cCA9IHVzZXJbJ2dyb3VwJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHVzZXJbJ2Rlc2lnbmF0aW9uJ10pIHtcbiAgICAgICAgICAgICAgbGV0IGN0cmwgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2Rlc2lnbmF0aW9uJylcbiAgICAgICAgICAgICAgaWYgKGN0cmwpIHtcbiAgICAgICAgICAgICAgICBjdHJsLnBhdGNoVmFsdWUoeyBkZXNpZ25hdGlvbjogdXNlclsnZGVzaWduYXRpb24nXSB9KVxuICAgICAgICAgICAgICAgIHRoaXMucERlc2lnbmF0aW9uID0gdXNlclsnZGVzaWduYXRpb24nXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxuICAgICAgdGhpcy5kZWZpbmVGb3JtQXR0cmlidXRlcygpXG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2VcbiAgICB9KVxuICB9XG5cbiAgZGVmaW5lRm9ybUF0dHJpYnV0ZXMoKSB7XG4gICAgaWYgKHRoaXMuYmF0Y2hEZXRhaWxzLmJhdGNoQXR0cmlidXRlcy51c2VyUHJvZmlsZUZpbGVkcyAmJlxuICAgICAgdGhpcy5iYXRjaERldGFpbHMuYmF0Y2hBdHRyaWJ1dGVzLmJwRW5yb2xNYW5kYXRvcnlQcm9maWxlRmllbGRzKSB7XG4gICAgICBsZXQgY3VzdG9tQXR0ciA9IHRoaXMuYmF0Y2hEZXRhaWxzLmJhdGNoQXR0cmlidXRlcy5icEVucm9sTWFuZGF0b3J5UHJvZmlsZUZpZWxkc1xuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ25hbWUnKSkge1xuICAgICAgICB0aGlzLmNhblNob3dOYW1lID0gdHJ1ZVxuICAgICAgICB0aGlzLnNob3duYW1lID0gdHJ1ZVxuICAgICAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ25hbWUnKVxuICAgICAgICBpZiAoZmllbGRDb250cm9sKSB7XG4gICAgICAgICAgZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmZpcnN0bmFtZSlcbiAgICAgICAgICBmaWVsZENvbnRyb2wuZGlzYWJsZSgpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScgJiZcbiAgICAgICAgICAhdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZmlyc3RuYW1lXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuY2FuU2hvd05hbWUgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuc2hvd25hbWUgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmZpbmRBdHRyKGN1c3RvbUF0dHIsICdlbWFpbCcpKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd0VtYWlsID0gdHJ1ZVxuICAgICAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ3ByaW1hcnlFbWFpbCcpXG4gICAgICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucHJpbWFyeUVtYWlsKVxuICAgICAgICAgIGlmICh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5wcmltYXJ5RW1haWwpIHtcbiAgICAgICAgICAgIGZpZWxkQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5wcmltYXJ5RW1haWwpXG4gICAgICAgICAgICB0aGlzLmVWZXJpZmllZCA9IHRydWVcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0VtYWlsID0gZmFsc2VcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93RW1haWwgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVWZXJpZmllZCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ29yZ2FuaXNhdGlvbicpKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd09yZyA9IHRydWVcbiAgICAgICAgdGhpcy5zaG93T3JnID0gdHJ1ZVxuICAgICAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ29yZ2FuaXNhdGlvbicpXG4gICAgICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5kZXBhcnRtZW50TmFtZSlcbiAgICAgICAgICBmaWVsZENvbnRyb2wuZGlzYWJsZSgpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScgJiZcbiAgICAgICAgICAhdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5kZXBhcnRtZW50TmFtZVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmNhblNob3dPcmcgPSBmYWxzZVxuICAgICAgICAgIHRoaXMuc2hvd09yZyA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ2dyb3VwJykpIHtcbiAgICAgICAgdGhpcy5jYW5TaG93R3JvdXAgPSB0cnVlXG4gICAgICAgIHRoaXMuc2hvd0dyb3VwID0gdHJ1ZVxuICAgICAgICBjb25zdCBmaWVsZENvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2dyb3VwJylcbiAgICAgICAgaWYgKGZpZWxkQ29udHJvbCkge1xuICAgICAgICAgIGlmICh0aGlzLnBHcm91cCkge1xuICAgICAgICAgICAgZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMucEdyb3VwKVxuICAgICAgICAgICAgLy8gaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIC8vICAgdGhpcy5jYW5TaG93R3JvdXAgPSB0cnVlXG4gICAgICAgICAgICAvLyAgIHRoaXMuc2hvd0dyb3VwID0gdHJ1ZVxuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9mZXNzaW9uYWxEZXRhaWxzICYmXG4gICAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9mZXNzaW9uYWxEZXRhaWxzWzBdLmdyb3VwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5ncm91cClcbiAgICAgICAgICAgICAgLy8gaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgICAgLy8gICB0aGlzLmNhblNob3dHcm91cCA9IGZhbHNlXG4gICAgICAgICAgICAgIC8vICAgdGhpcy5zaG93R3JvdXAgPSBmYWxzZVxuICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpZWxkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICBmaWVsZENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZpbmRBdHRyKGN1c3RvbUF0dHIsICdkZXNpZ25hdGlvbicpKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd0Rlc2lnbmF0aW9uID0gdHJ1ZVxuICAgICAgICB0aGlzLnNob3dEZXNpZ25hdGlvbiA9IHRydWVcbiAgICAgICAgY29uc3QgZmllbGRDb250cm9sID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdkZXNpZ25hdGlvbicpXG4gICAgICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgICAgICBpZiAodGhpcy5wRGVzaWduYXRpb24pIHtcbiAgICAgICAgICAgIGZpZWxkQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMucERlc2lnbmF0aW9uKVxuICAgICAgICAgICAgLy8gaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIC8vICAgdGhpcy5jYW5TaG93RGVzaWduYXRpb24gPSB0cnVlXG4gICAgICAgICAgICAvLyAgIHRoaXMuc2hvd0Rlc2lnbmF0aW9uID0gdHJ1ZVxuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9mZXNzaW9uYWxEZXRhaWxzICYmXG4gICAgICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9mZXNzaW9uYWxEZXRhaWxzWzBdLmRlc2lnbmF0aW9uKSB7XG4gICAgICAgICAgICAgIGZpZWxkQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5kZXNpZ25hdGlvbilcbiAgICAgICAgICAgICAgLy8gaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgICAgLy8gICB0aGlzLmNhblNob3dEZXNpZ25hdGlvbiA9IGZhbHNlXG4gICAgICAgICAgICAgIC8vICAgdGhpcy5zaG93RGVzaWduYXRpb24gPSBmYWxzZVxuICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpZWxkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICBmaWVsZENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZpbmRBdHRyKGN1c3RvbUF0dHIsICdlbXBsb3llZUNvZGUnKSkge1xuICAgICAgICB0aGlzLmNhblNob3dFbXBsb3llZUNvZGUgPSB0cnVlXG4gICAgICAgIGNvbnN0IGNvbnRybCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnZW1wbG95ZWVDb2RlJylcbiAgICAgICAgaWYgKGNvbnRybCkge1xuICAgICAgICAgIGlmICh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmVtcGxveWVlQ29kZSkge1xuICAgICAgICAgICAgY29udHJsLnNldFZhbHVlKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMuZW1wbG95ZWVDb2RlKVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihFTVBfSURfUEFUVEVSTildKVxuICAgICAgICAgICAgY29udHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9maWxlRm9ybVR5cGUgPT09ICdBdmFpbGFibGUgdXNlciBmaWxsZWQgaUdPVCBwcm9maWxlJykge1xuICAgICAgICAgICAgdGhpcy5jYW5TaG93RW1wbG95ZWVDb2RlID0gZmFsc2VcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93RW1wbG95ZWVDb2RlID0gdHJ1ZVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybihFTVBfSURfUEFUVEVSTildKTtcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ21vYmlsZScpKSB7XG4gICAgICAgIHRoaXMuY2Fuc2hvd01vYmlsZSA9IHRydWVcbiAgICAgICAgY29uc3QgY29udHJsID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdtb2JpbGUnKVxuICAgICAgICBpZiAoY29udHJsKSB7XG4gICAgICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZSAmJiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5waG9uZVZlcmlmaWVkKSB7XG4gICAgICAgICAgICBjb250cmwuc2V0VmFsdWUodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMubW9iaWxlKVxuICAgICAgICAgICAgdGhpcy5tVmVyaWZpZWQgPSB0cnVlXG4gICAgICAgICAgICBjb250cmwuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMCksIFZhbGlkYXRvcnMucGF0dGVybihNT0JJTEVfUEFUVEVSTildKTtcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2Fuc2hvd01vYmlsZSA9IGZhbHNlXG4gICAgICAgICAgICB0aGlzLm1WZXJpZmllZCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93TW9iaWxlID0gdHJ1ZVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApLCBWYWxpZGF0b3JzLnBhdHRlcm4oTU9CSUxFX1BBVFRFUk4pXSk7XG4gICAgICAgICAgICBjb250cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNhbnNob3dNb2JpbGUgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubVZlcmlmaWVkID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5maW5kQXR0cihjdXN0b21BdHRyLCAnZ2VuZGVyJykpIHtcbiAgICAgICAgdGhpcy5jYW5TaG93R2VuZGVyID0gdHJ1ZVxuICAgICAgICBjb25zdCBjb250cmwgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2dlbmRlcicpXG4gICAgICAgIGlmIChjb250cmwpIHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZ2VuZGVyKSB7XG4gICAgICAgICAgICBjb250cmwuc2V0VmFsdWUodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZ2VuZGVyKVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICAgICAgY29udHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9maWxlRm9ybVR5cGUgPT09ICdBdmFpbGFibGUgdXNlciBmaWxsZWQgaUdPVCBwcm9maWxlJykge1xuICAgICAgICAgICAgdGhpcy5jYW5TaG93R2VuZGVyID0gZmFsc2VcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93R2VuZGVyID0gdHJ1ZVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICAgICAgY29udHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5maW5kQXR0cihjdXN0b21BdHRyLCAnZG9iJykpIHtcbiAgICAgICAgdGhpcy5jYW5TaG93RG9iID0gdHJ1ZVxuICAgICAgICBjb25zdCBjb250cmwgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2RvYicpXG4gICAgICAgIGlmIChjb250cmwpIHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9iKSB7XG4gICAgICAgICAgICBsZXQgX2RvYjogYW55ID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9iXG4gICAgICAgICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBfZG9iLnNwbGl0KCctJylcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShOdW1iZXIoeWVhciksIE51bWJlcihtb250aCkgLSAxLCBOdW1iZXIoZGF5KSlcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKVxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKVxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShgJHtmb3JtYXR0ZWRZZWFyfS0ke2Zvcm1hdHRlZE1vbnRofS0ke2Zvcm1hdHRlZERheX1gKVxuICAgICAgICAgICAgY29udHJsLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWREYXRlKVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICAgICAgY29udHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9maWxlRm9ybVR5cGUgPT09ICdBdmFpbGFibGUgdXNlciBmaWxsZWQgaUdPVCBwcm9maWxlJykge1xuICAgICAgICAgICAgdGhpcy5jYW5TaG93RG9iID0gZmFsc2VcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93RG9iID0gdHJ1ZVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICAgICAgY29udHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5maW5kQXR0cihjdXN0b21BdHRyLCAnZG9taWNpbGVNZWRpdW0nKSkge1xuICAgICAgICB0aGlzLmNhblNob3dEb21pY2lsZU1lZGl1bSA9IHRydWVcbiAgICAgICAgY29uc3QgY29udHJsID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uZ2V0KCdkb21pY2lsZU1lZGl1bScpXG4gICAgICAgIGlmIChjb250cmwpIHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9taWNpbGVNZWRpdW0pIHtcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWx1ZSh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5kb21pY2lsZU1lZGl1bSlcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuU2hvd0RvbWljaWxlTWVkaXVtID0gZmFsc2VcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93RGVjaW1hbE1lZGl1bSA9IHRydWVcbiAgICAgICAgICAgIGNvbnRybC5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ2NhdGVnb3J5JykpIHtcbiAgICAgICAgdGhpcy5jYW5TaG93Q2F0ZWdvcnkgPSB0cnVlXG4gICAgICAgIGNvbnN0IGNvbnRybCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnY2F0ZWdvcnknKVxuICAgICAgICBpZiAoY29udHJsKSB7XG4gICAgICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmNhdGVnb3J5KSB7XG4gICAgICAgICAgICBjb250cmwuc2V0VmFsdWUodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuY2F0ZWdvcnkpXG4gICAgICAgICAgICBjb250cmwuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICAgICBjb250cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb2ZpbGVGb3JtVHlwZSA9PT0gJ0F2YWlsYWJsZSB1c2VyIGZpbGxlZCBpR09UIHByb2ZpbGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNhblNob3dDYXRlZ29yeSA9IGZhbHNlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0NhdGVnb3J5ID0gdHJ1ZVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICAgICAgY29udHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5maW5kQXR0cihjdXN0b21BdHRyLCAncGluQ29kZScpKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd3BpbkNvZGUgPSB0cnVlXG4gICAgICAgIGNvbnN0IGNvbnRybCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgncGluQ29kZScpXG4gICAgICAgIGlmIChjb250cmwpIHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5waW5Db2RlKSB7XG4gICAgICAgICAgICBjb250cmwuc2V0VmFsdWUodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5waW5Db2RlKVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpLCBWYWxpZGF0b3JzLm1heExlbmd0aCg2KSwgVmFsaWRhdG9ycy5wYXR0ZXJuKFBJTl9DT0RFX1BBVFRFUk4pXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuU2hvd3BpbkNvZGUgPSBmYWxzZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3dQaW5Db2RlID0gdHJ1ZVxuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDYpLCBWYWxpZGF0b3JzLm1heExlbmd0aCg2KSwgVmFsaWRhdG9ycy5wYXR0ZXJuKFBJTl9DT0RFX1BBVFRFUk4pXSlcbiAgICAgICAgICAgIGNvbnRybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZmluZEF0dHIoY3VzdG9tQXR0ciwgJ2NhZHJlRGV0YWlscycpKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgPSB0cnVlXG4gICAgICAgIGNvbnN0IGNvbnRybCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnaXNDYWRyZScpXG4gICAgICAgIGlmIChjb250cmwpIHtcbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXModGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMpLmluY2x1ZGVzKCdpc0NhZHJlJykpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5pc0NhZHJlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgIGNvbnRybC5zZXRWYWx1ZSh0cnVlKVxuICAgICAgICAgICAgICB0aGlzLmlzQ2FkcmVTdGF0dXMgPSB0cnVlXG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZUlkID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlVHlwZUlkXG4gICAgICAgICAgICAgIHRoaXMuY2l2aWxTZXJ2aWNlSWQgPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VJZFxuICAgICAgICAgICAgICB0aGlzLmNhZHJlSWQgPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jYWRyZUlkXG4gICAgICAgICAgICAgIHRoaXMuY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlOYW1lXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U2VydmljZSh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VUeXBlKVxuICAgICAgICAgICAgICAgIHRoaXMub25TZXJ2aWNlU2VsZWN0KHsgdmFsdWU6IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNpdmlsU2VydmljZU5hbWUgfSlcbiAgICAgICAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVOYW1lKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm9uQ2FkcmVTZWxlY3QodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVOYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnVzZXJEZXRhaWxzRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIHR5cGVPZkNpdmlsU2VydmljZTogdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlVHlwZSxcbiAgICAgICAgICAgICAgICAgIHNlcnZpY2VUeXBlOiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VOYW1lLFxuICAgICAgICAgICAgICAgICAgY2FkcmVOYW1lOiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jYWRyZU5hbWUsXG4gICAgICAgICAgICAgICAgICBjYWRyZUJhdGNoOiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jYWRyZUJhdGNoLFxuICAgICAgICAgICAgICAgICAgY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eTogdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eU5hbWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSwgMTAwMClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnRybC5zZXRWYWx1ZShmYWxzZSlcbiAgICAgICAgICAgICAgdGhpcy5pc0NhZHJlU3RhdHVzID0gZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZUZvcm1UeXBlID09PSAnQXZhaWxhYmxlIHVzZXIgZmlsbGVkIGlHT1QgcHJvZmlsZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5pc0NhZHJlU3RhdHVzID0gZmFsc2VcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJsLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgICAgICAgICAgY29udHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZpbmRBdHRyKGN1c3RvbUF0dHI6IGFueSwgZk5hbWU6IGFueSkge1xuICAgIGlmIChmTmFtZSA9PT0gJ25hbWUnKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmZpcnN0bmFtZScpXG4gICAgfVxuICAgIGlmIChmTmFtZSA9PT0gJ2VtYWlsJykge1xuICAgICAgcmV0dXJuIGN1c3RvbUF0dHIuZmluZCgoX2ZpZWxkOiBhbnkpID0+IF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5wcmltYXJ5RW1haWwnKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdvcmdhbmlzYXRpb24nKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMuZGVwYXJ0bWVudE5hbWUnKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdncm91cCcpIHtcbiAgICAgIHJldHVybiBjdXN0b21BdHRyLmZpbmQoKF9maWVsZDogYW55KSA9PiBfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5wcm9mZXNzaW9uYWxEZXRhaWxzLmdyb3VwJylcbiAgICB9XG4gICAgaWYgKGZOYW1lID09PSAnZGVzaWduYXRpb24nKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscy5kZXNpZ25hdGlvbicpXG4gICAgfVxuICAgIGlmIChmTmFtZSA9PT0gJ2VtcGxveWVlQ29kZScpIHtcbiAgICAgIHJldHVybiBjdXN0b21BdHRyLmZpbmQoKF9maWVsZDogYW55KSA9PiBfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5lbXBsb3llZUNvZGUnKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdtb2JpbGUnKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZScpXG4gICAgfVxuICAgIGlmIChmTmFtZSA9PT0gJ2dlbmRlcicpIHtcbiAgICAgIHJldHVybiBjdXN0b21BdHRyLmZpbmQoKF9maWVsZDogYW55KSA9PiBfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZ2VuZGVyJylcbiAgICB9XG4gICAgaWYgKGZOYW1lID09PSAnZG9iJykge1xuICAgICAgcmV0dXJuIGN1c3RvbUF0dHIuZmluZCgoX2ZpZWxkOiBhbnkpID0+IF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5kb2InKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdkb21pY2lsZU1lZGl1bScpIHtcbiAgICAgIHJldHVybiBjdXN0b21BdHRyLmZpbmQoKF9maWVsZDogYW55KSA9PiBfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9taWNpbGVNZWRpdW0nKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdjYXRlZ29yeScpIHtcbiAgICAgIHJldHVybiBjdXN0b21BdHRyLmZpbmQoKF9maWVsZDogYW55KSA9PiBfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuY2F0ZWdvcnknKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdwaW5Db2RlJykge1xuICAgICAgcmV0dXJuIGN1c3RvbUF0dHIuZmluZCgoX2ZpZWxkOiBhbnkpID0+IF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLnBpbkNvZGUnKVxuICAgIH1cbiAgICBpZiAoZk5hbWUgPT09ICdjYWRyZURldGFpbHMnKSB7XG4gICAgICByZXR1cm4gY3VzdG9tQXR0ci5maW5kKChfZmllbGQ6IGFueSkgPT4gX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNpdmlsU2VydmljZVR5cGUnKVxuICAgIH1cblxuICB9XG5cbiAgZmluZEluUHJvZmlsZShhdHRyOiBzdHJpbmcpIHtcbiAgICBpZiAoYXR0ciA9PT0gJ25hbWUnKSB7XG4gICAgICByZXR1cm4gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZmlyc3ROYW1lIHx8IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmZpcnN0bmFtZVxuICAgIH1cbiAgICBpZiAoYXR0ciA9PT0gJ2dyb3VwJykge1xuICAgICAgcmV0dXJuICghdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9maWxlR3JvdXBTdGF0dXMpIHx8XG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmlsZUdyb3VwU3RhdHVzID09PSAnTk9ULVZFUklGSUVEJyB8fCAodGhpcy5wR3JvdXAgPyB0cnVlIDogZmFsc2UpXG4gICAgfVxuICAgIGlmIChhdHRyID09PSAnZGVzaWduYXRpb24nKSB7XG4gICAgICByZXR1cm4gKCF0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2ZpbGVEZXNpZ25hdGlvblN0YXR1cykgfHxcbiAgICAgICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9maWxlRGVzaWduYXRpb25TdGF0dXMgPT09ICdOT1QtVkVSSUZJRUQnIHx8ICh0aGlzLnBEZXNpZ25hdGlvbiA/IHRydWUgOiBmYWxzZSlcbiAgICB9XG4gIH1cblxuICBnZXRHcm91cERhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciArIDFcbiAgICB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5nZXRHcm91cHMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveVN1YmplY3QkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICAgIHRoaXMuZ3JvdXBEYXRhID0gcmVzLnJlc3VsdCAmJiByZXMucmVzdWx0LnJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSAhPT0gJ090aGVycycpXG4gICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICAgIGlmICghZXJyb3Iub2spIHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4odGhpcy5oYW5kbGVUcmFuc2xhdGVUbygnZ3JvdXBEYXRhRmFpbGUnKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgfVxuXG4gIGhhbmRsZVRyYW5zbGF0ZVRvKG1lbnVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5oYW5kbGVUcmFuc2xhdGVUbyhtZW51TmFtZSlcbiAgfVxuXG4gIGNoZWNrU2VsZWN0ZWRPcmdIYXNEZXNpZ25hdGlvbnMoKTogdm9pZCB7XG4gICAgaWYodGhpcy5vcmdhbmlzYXRpb25JZCkge1xuICAgICAgY29uc3QgaWdvdERlc2lnbmF0aW9uQm9keTogYW55ID0ge1xuICAgICAgICByZXF1ZXN0OiB7XG4gICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgc3RhdHVzOiAnTGl2ZScsXG4gICAgICAgICAgICBjYXRlZ29yeTogJ2Rlc2lnbmF0aW9uJyxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFtcbiAgICAgICAgICAgICAgdGhpcy5vcmdhbmlzYXRpb25JZCArICdfb2Rjc19kZXNpZ25hdGlvbicsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ1Rlcm0nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmllbGRzOiBbJ25hbWUnXSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgbGltaXQ6IDEsXG4gICAgICAgICAgc29ydF9ieToge1xuICAgICAgICAgICAgbGFzdFVwZGF0ZWRPbjogJ2Rlc2MnLFxuICAgICAgICAgICAgb2JqZWN0VHlwZTogJ1Rlcm0nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmFjZXRzOiBbXSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5zZWFyY2hJZ290RGVzaWduYXRpb24oaWdvdERlc2lnbmF0aW9uQm9keSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgY291bnQgPSBfLmdldChyZXMsICdyZXN1bHQuY291bnQnLCAwKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3JnSGFzRGVzaWduYXRpb25zID0gY291bnQgPiAwO1xuICAgICAgICAgIHRoaXMuZ2V0ZGVzaWduYXRpb25zTWV0YSgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcmdIYXNEZXNpZ25hdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmdldGRlc2lnbmF0aW9uc01ldGEoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmdIYXNEZXNpZ25hdGlvbnMgPSBmYWxzZTtcbiAgICAgIHRoaXMuZ2V0ZGVzaWduYXRpb25zTWV0YSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldGRlc2lnbmF0aW9uc01ldGEoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZE9yZ0hhc0Rlc2lnbmF0aW9ucykge1xuICAgICAgdGhpcy5nZXRJZ290RGVzaWduYXRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0RGVmYXVsdERlc2lnbmF0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SWdvdERlc2lnbmF0aW9ucygpIHtcbiAgICBjb25zdCByZXF1ZXN0Qm9keTogYW55ID0ge1xuICAgICAgcmVxdWVzdDoge1xuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgc3RhdHVzOiBcIkxpdmVcIixcbiAgICAgICAgICBjYXRlZ29yeTogXCJkZXNpZ25hdGlvblwiLFxuICAgICAgICAgIGNhdGVnb3JpZXM6IFtcbiAgICAgICAgICAgIHRoaXMub3JnYW5pc2F0aW9uSWQgKyAnX29kY3NfZGVzaWduYXRpb24nLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgb2JqZWN0VHlwZTogXCJUZXJtXCJcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgXCJuYW1lXCJcbiAgICAgICAgXSxcbiAgICAgICAgb2Zmc2V0OiB0aGlzLmRlc2lnbmF0aW9uc09mZnNldCxcbiAgICAgICAgbGltaXQ6IHRoaXMuZGVzaWduYXRpb25MaXN0TG9hZENvdW50LFxuICAgICAgICBzb3J0X2J5OiB7XG4gICAgICAgICAgbGFzdFVwZGF0ZWRPbjogXCJkZXNjXCIsXG4gICAgICAgICAgb2JqZWN0VHlwZTogXCJUZXJtXCJcbiAgICAgICAgfSxcbiAgICAgICAgZmFjZXRzOiBbXVxuICAgICAgfVxuICAgIH07XG4gICAgaWYodGhpcy5kZXNpZ25hdGlvblNlYXJjaFRleHQpe1xuICAgICAgcmVxdWVzdEJvZHlbJ3JlcXVlc3QnXVsncXVlcnknXSA9IHRoaXMuZGVzaWduYXRpb25TZWFyY2hUZXh0O1xuICAgIH1cbiAgICB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5zZWFyY2hJZ290RGVzaWduYXRpb24ocmVxdWVzdEJvZHkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zID0gZmFsc2U7XG4gICAgICAgIGlmKHRoaXMuZGVzaWduYXRpb25zT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbnNNZXRhID0gXy5nZXQocmVzLCAncmVzdWx0LlRlcm0nLCBbXSkgYXMgZGVzaWduYXRpb25bXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc01ldGEgPSBbLi4udGhpcy5kZXNpZ25hdGlvbnNNZXRhLCAuLi5fLmdldChyZXMsICdyZXN1bHQuVGVybScsIFtdKSBhcyBkZXNpZ25hdGlvbltdXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc1RvdGFsQ291bnQgPSBfLmdldChyZXMsICdyZXN1bHQuY291bnQnLCAwKTtcbiAgICAgICAgdGhpcy5jaGVja0N1cnJlbnREZXNpZ25hdGlvblByZXNlbnQoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVEZXNpZ25hdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcGVuU25hY2tiYXIoJ1NvbWV0aGluZyB3ZW50IHdyb25nLiBQbGVhc2UgcmVmcmVzaCBvciB0cnkgYWdhaW4gbGF0ZXIuJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0RGVzaWduYXRpb25zKCkge1xuICAgICAgY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAgICAgZmlsdGVyQ3JpdGVyaWFNYXA6IHtcbiAgICAgICAgICBzdGF0dXM6ICdBY3RpdmUnXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVlc3RlZEZpZWxkczogW10sXG4gICAgICAgIHBhZ2VOdW1iZXI6IHRoaXMuZGVzaWduYXRpb25zT2Zmc2V0LFxuICAgICAgICBwYWdlU2l6ZTogdGhpcy5kZXNpZ25hdGlvbkxpc3RMb2FkQ291bnRcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRlc2lnbmF0aW9uU2VhcmNoVGV4dCkge1xuICAgICAgICByZXF1ZXN0Qm9keVsnc2VhcmNoU3RyaW5nJ10gPSB0aGlzLmRlc2lnbmF0aW9uU2VhcmNoVGV4dFxuICAgICAgfVxuICAgICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2Uuc2VhcmNoRGVzaWduYXRpb24ocmVxdWVzdEJvZHkpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBfLmdldChyZXMsICdyZXN1bHQucmVzdWx0LmRhdGEnLCBbXSkgYXMgZGVzaWduYXRpb25bXTtcbiAgICAgICAgICBjb25zdCBtYXBwZWQgPSBjb250ZW50Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgbmFtZTogaXRlbS5kZXNpZ25hdGlvbiB8fCAnJyxcbiAgICAgICAgICAgIHN0YXR1czogaXRlbS5zdGF0dXMgfHwgJ0FjdGl2ZScsXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIGlmICh0aGlzLmRlc2lnbmF0aW9uc09mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbnNNZXRhID0gbWFwcGVkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc01ldGEgPSBbLi4udGhpcy5kZXNpZ25hdGlvbnNNZXRhLCAuLi5tYXBwZWRdO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc1RvdGFsQ291bnQgPSBfLmdldChyZXMsICdyZXN1bHQucmVzdWx0LnRvdGFsQ291bnQnLCAwKTtcbiAgICAgICAgICB0aGlzLmNoZWNrQ3VycmVudERlc2lnbmF0aW9uUHJlc2VudCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMub3BlblNuYWNrYmFyKCdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHJlZnJlc2ggb3IgdHJ5IGFnYWluIGxhdGVyLicpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgZ2V0TWFzdGVyTGFuZ3VhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy51c2VyUHJvZmlsZVNlcnZpY2UuZ2V0TWFzdGVyTGFuZ3VhZ2VzKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm1hc3Rlckxhbmd1YWdlcyA9IHJlcy5sYW5ndWFnZXNcbiAgICAgICAgdGhpcy5tYXN0ZXJMYW5ndWFnZUJhY2t1cCA9IHJlcy5sYW5ndWFnZXNcbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFlcnJvci5vaykge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCd1bmFibGVGZXRjaE1hc3Rlckxhbmd1YWdlRGF0YScpKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgaGFuZGxlRW1wdHkodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMubW9iaWxlICYmICF0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snbW9iaWxlJ10udmFsdWUpIHtcbiAgICAgICAgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ21vYmlsZSddLnNldEVycm9ycyh7IHZhbGlkOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ3ByaW1hcnlFbWFpbCcpIHtcbiAgICAgIGlmICghdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucHJpbWFyeUVtYWlsICYmICF0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnZhbHVlWydwcmltYXJ5RW1haWwnXSkge1xuICAgICAgICB0aGlzLnVzZXJEZXRhaWxzRm9ybS5zZXRFcnJvcnMoeyB2YWxpZDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgb25TdWJtaXRGb3JtKGZvcm06IGFueSkge1xuICAgIC8qIHRzbGludDpkaXNhYmxlICovXG5cbiAgICBjb25zb2xlLmxvZyhmb3JtKVxuICAgIGxldCBwYXlsb2FkID0gdGhpcy5nZW5lcmF0ZVByb2ZpbGVQYXlsb2FkKClcbiAgICBpZiAoKHRoaXMuY2FuU2hvd0Rlc2lnbmF0aW9uIHx8IHRoaXMuY2FuU2hvd0dyb3VwKSAmJiAhdGhpcy5zaG93RG9wdENoYW5nZXMpIHtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdGaWxlZHMpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nRmlsZWRzLmZvckVhY2goKF9vYmo6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhfb2JqKS5pbmNsdWRlcygnZGVzaWduYXRpb24nKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciArIDFcbiAgICAgICAgICAgIHRoaXMucHJvZmlsZVYyU3ZjLndpdGhEcmF3QXBwcm92YWxSZXF1ZXN0KHRoaXMuY29uZmlnU3JjLnVuTWFwcGVkVXNlci5pZCwgX29iai53ZklkKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzcCAmJiByZXNwLnJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwLnJlc3VsdC5tZXNzYWdlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhfb2JqKS5pbmNsdWRlcygnZ3JvdXAnKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciArIDFcbiAgICAgICAgICAgIHRoaXMucHJvZmlsZVYyU3ZjLndpdGhEcmF3QXBwcm92YWxSZXF1ZXN0KHRoaXMuY29uZmlnU3JjLnVuTWFwcGVkVXNlci5pZCwgX29iai53ZklkKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzcCAmJiByZXNwLnJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwLnJlc3VsdC5tZXNzYWdlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucHJpbWFyeUVtYWlsICE9PSB0aGlzLnVzZXJEZXRhaWxzRm9ybS52YWx1ZS5wcmltYXJ5RW1haWwgJiYgdGhpcy5jYW5TaG93RW1haWwpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUVtYWlsKHRoaXMudXNlckRldGFpbHNGb3JtLnZhbHVlLnByaW1hcnlFbWFpbClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Ym1pdFByb2ZpbGUocGF5bG9hZClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLnByaW1hcnlFbWFpbCAhPT0gdGhpcy51c2VyRGV0YWlsc0Zvcm0udmFsdWUucHJpbWFyeUVtYWlsICYmIHRoaXMuY2FuU2hvd0VtYWlsKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRW1haWwodGhpcy51c2VyRGV0YWlsc0Zvcm0udmFsdWUucHJpbWFyeUVtYWlsKVxuICAgICAgfVxuICAgICAgdGhpcy5zdWJtaXRQcm9maWxlKHBheWxvYWQpXG4gICAgfVxuICB9XG5cbiAgc3VibWl0UHJvZmlsZShwYXlsb2FkOiBhbnkpIHtcbiAgICBpZiAodGhpcy5lVmVyaWZpZWQgJiYgdGhpcy52ZXJpZmllZEVtYWlsT3RwKSB7XG4gICAgICBwYXlsb2FkWydyZXF1ZXN0J11bJ2VtYWlsT3RwJ10gPSB0aGlzLnZlcmlmaWVkRW1haWxPdHBcbiAgICB9XG4gICAgaWYgKHRoaXMubVZlcmlmaWVkICYmIHRoaXMudmVyaWZpZWRQaG9uZU90cCkge1xuICAgICAgcGF5bG9hZFsncmVxdWVzdCddWydwaG9uZU90cCddID0gdGhpcy52ZXJpZmllZFBob25lT3RwXG4gICAgfVxuICAgIGlmIChwYXlsb2FkICYmIHBheWxvYWRbJ3JlcXVlc3QnXSAmJiBwYXlsb2FkWydyZXF1ZXN0J11bJ3Byb2ZpbGVEZXRhaWxzJ10gJiYgcGF5bG9hZFsncmVxdWVzdCddWydwcm9maWxlRGV0YWlscyddWydwZXJzb25hbERldGFpbHMnXSAmJiBwYXlsb2FkWydyZXF1ZXN0J11bJ3Byb2ZpbGVEZXRhaWxzJ11bJ3BlcnNvbmFsRGV0YWlscyddWydkb2InXSkge1xuICAgICAgbGV0IGRvYkZvcm1hdCA9IHBheWxvYWRbJ3JlcXVlc3QnXVsncHJvZmlsZURldGFpbHMnXVsncGVyc29uYWxEZXRhaWxzJ11bJ2RvYiddO1xuICAgICAgbGV0IGRvYiA9IGAke25ldyBEYXRlKGRvYkZvcm1hdCkuZ2V0RGF0ZSgpfS0ke25ldyBEYXRlKGRvYkZvcm1hdCkuZ2V0TW9udGgoKSArIDF9LSR7bmV3IERhdGUoZG9iRm9ybWF0KS5nZXRGdWxsWWVhcigpfWBcbiAgICAgIHBheWxvYWRbJ3JlcXVlc3QnXVsncHJvZmlsZURldGFpbHMnXVsncGVyc29uYWxEZXRhaWxzJ11bJ2RvYiddID0gZG9iXG4gICAgfVxuICAgIGlmICh0aGlzLnVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgKyAxXG4gICAgICB0aGlzLnVzZXJQcm9maWxlU2VydmljZS5lZGl0UHJvZmlsZURldGFpbHMocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgICBpZiAocmVzLnJlc3BvbnNlQ29kZSA9PT0gJ09LJykge1xuICAgICAgICAgIHRoaXMuc3VibWl0U3VyZXZ5KHRydWUpXG4gICAgICAgIH1cbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihlcnJvcj8uZXJyb3I/LnBhcmFtcz8uZXJybXNnIHx8IFwiU29tZXRoaW5nIHdlbnQgd3JvbmchXCIpXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdWJtaXRTdXJldnkodHJ1ZSlcbiAgICB9XG4gIH1cblxuICBzdWJtaXRTdXJldnkoc3RhdHVzOiBhbnkpIHtcbiAgICBsZXQgc3VyZXZ5UGF5bG9hZCA9IHtcbiAgICAgIGZvcm1JZDogXy5nZXQodGhpcy5kYXRhLCAnYmF0Y2hEYXRhLmJhdGNoQXR0cmlidXRlcy5wcm9maWxlU3VydmV5SWQnKSxcbiAgICAgIHZlcnNpb246IDQsXG4gICAgICBzdGF0dXM6ICdTVUJNSVRURUQnLFxuICAgICAgcmVzcG9uc2VzOiB0aGlzLmdlbmVyZWF0ZVN1cnZleVBheWxvYWQoc3RhdHVzKSxcbiAgICAgIGNvbnRleHRJZDogXy5nZXQodGhpcy5kYXRhLCAnYmF0Y2hEYXRhLmNvdXJzZUlkJyksXG4gICAgICBjb250ZXh0TmFtZTogXy5nZXQodGhpcy5kYXRhLCAnY291cnNlTmFtZScsICcnKSxcbiAgICB9XG4gICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciArIDFcbiAgICB0aGlzLm5wc1N2Yy5zdWJtaXRCcEZvcm1XaXRoUHJvZmlsZURldGFpbHMoc3VyZXZ5UGF5bG9hZCkuc3Vic2NyaWJlKChyZXNwOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICBpZiAoXy5nZXQocmVzcCwgJ3BhcmFtcy5zdGF0dXMnKSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tRm9ybSA9IGZhbHNlXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihcIkZvcm0gaXMgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseVwiKVxuICAgICAgICB0aGlzLmNsb3NlUG9wdXAoKVxuICAgICAgfVxuICAgICAgaWYgKHJlc3AgJiYgcmVzcC5zdGF0dXNDb2RlICYmIHJlc3Auc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tRm9ybSA9IGZhbHNlXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihyZXNwLmVycm9yTWVzc2FnZSlcbiAgICAgIH1cbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFwic29tZXRoaW5nIHdlbnQgd3JvbmchXCIpXG4gICAgfSlcbiAgfVxuXG4gIGdlbmVyYXRlUHJvZmlsZVBheWxvYWQoKSB7XG4gICAgbGV0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgdXNlcklkOiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LmlkZW50aWZpZXIsXG4gICAgICAgIHByb2ZpbGVEZXRhaWxzOiB7XG4gICAgICAgICAgZW1wbG95bWVudERldGFpbHM6IHt9LFxuICAgICAgICAgIHBlcnNvbmFsRGV0YWlsczoge30sXG4gICAgICAgICAgLy8gY2FkcmVEZXRhaWxzOiB7fSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgX3Byb2Zlc3Npb25hbERldGFpbHM6IGFueSA9IHt9XG4gICAgbGV0IHVwZGF0ZVByb2Zlc3Npb25hbERldGFpbHM6IGJvb2xlYW4gPSBmYWxzZVxuICAgIGlmICh0aGlzLnNob3dHcm91cCAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZ3JvdXAnXS52YWx1ZSAmJiAhdGhpcy5zaG93RG9wdENoYW5nZXMpIHtcbiAgICAgIF9wcm9mZXNzaW9uYWxEZXRhaWxzWydncm91cCddID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2dyb3VwJ10udmFsdWVcbiAgICAgIHRoaXMudXBkYXRlUHJvZmlsZSA9IHRydWVcbiAgICAgIHVwZGF0ZVByb2Zlc3Npb25hbERldGFpbHMgPSB0cnVlXG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dEZXNpZ25hdGlvbiAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZGVzaWduYXRpb24nXS52YWx1ZSAmJiAhdGhpcy5zaG93RG9wdENoYW5nZXMpIHtcbiAgICAgIF9wcm9mZXNzaW9uYWxEZXRhaWxzWydkZXNpZ25hdGlvbiddID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2Rlc2lnbmF0aW9uJ10udmFsdWVcbiAgICAgIHRoaXMudXBkYXRlUHJvZmlsZSA9IHRydWVcbiAgICAgIHVwZGF0ZVByb2Zlc3Npb25hbERldGFpbHMgPSB0cnVlXG4gICAgfVxuICAgIGlmICh1cGRhdGVQcm9mZXNzaW9uYWxEZXRhaWxzKSB7XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHNbJ3Byb2Zlc3Npb25hbERldGFpbHMnXSA9IFtfcHJvZmVzc2lvbmFsRGV0YWlsc11cbiAgICB9XG4gICAgaWYgKHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydlbXBsb3llZUNvZGUnXS52YWx1ZSkge1xuICAgICAgcGF5bG9hZC5yZXF1ZXN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzWydlbXBsb3llZUNvZGUnXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydlbXBsb3llZUNvZGUnXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ21vYmlsZSddLnZhbHVlKSB7XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydtb2JpbGUnXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydtb2JpbGUnXS52YWx1ZVxuICAgICAgcGF5bG9hZC5yZXF1ZXN0LnByb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlsc1sncGhvbmVWZXJpZmllZCddID0gdHJ1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlKSB7XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydnZW5kZXInXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2RvYiddLnZhbHVlKSB7XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydkb2InXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydkb2InXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2RvbWljaWxlTWVkaXVtJ10udmFsdWUpIHtcbiAgICAgIHBheWxvYWQucmVxdWVzdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHNbJ2RvbWljaWxlTWVkaXVtJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZG9taWNpbGVNZWRpdW0nXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2NhdGVnb3J5J10udmFsdWUpIHtcbiAgICAgIHBheWxvYWQucmVxdWVzdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHNbJ2NhdGVnb3J5J10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2F0ZWdvcnknXS52YWx1ZVxuICAgICAgdGhpcy51cGRhdGVQcm9maWxlID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ3BpbkNvZGUnXS52YWx1ZSkge1xuICAgICAgcGF5bG9hZC5yZXF1ZXN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzWydwaW5Db2RlJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncGluQ29kZSddLnZhbHVlXG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydwaW5jb2RlJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncGluQ29kZSddLnZhbHVlXG4gICAgICB0aGlzLnVwZGF0ZVByb2ZpbGUgPSB0cnVlXG4gICAgfVxuICAgIGlmICh0aGlzLmNhblNob3dzaG93Q2FkcmVEZXRhaWxzICYmICF0aGlzLnNob3dEb3B0Q2hhbmdlcykge1xuICAgICAgbGV0IF9jYWRyZURldGFpbHM6IGFueSA9IHt9XG4gICAgICBwYXlsb2FkLnJlcXVlc3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzWydpc0NhZHJlJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snaXNDYWRyZSddLnZhbHVlXG4gICAgICB0aGlzLnVwZGF0ZVByb2ZpbGUgPSB0cnVlXG4gICAgICBpZiAodGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZSkge1xuICAgICAgICBfY2FkcmVEZXRhaWxzWydjaXZpbFNlcnZpY2VUeXBlJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sndHlwZU9mQ2l2aWxTZXJ2aWNlJ10udmFsdWVcbiAgICAgICAgX2NhZHJlRGV0YWlsc1snY2l2aWxTZXJ2aWNlTmFtZSddID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ3NlcnZpY2VUeXBlJ10udmFsdWVcbiAgICAgICAgX2NhZHJlRGV0YWlsc1snY2FkcmVOYW1lJ10gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2FkcmVOYW1lJ10udmFsdWVcbiAgICAgICAgX2NhZHJlRGV0YWlsc1snY2FkcmVCYXRjaCddID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2NhZHJlQmF0Y2gnXS52YWx1ZVxuICAgICAgICBfY2FkcmVEZXRhaWxzWydjYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5TmFtZSddID0gdGhpcy5jYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5XG4gICAgICAgIF9jYWRyZURldGFpbHNbJ2NhZHJlSWQnXSA9IHRoaXMuY2FkcmVJZFxuICAgICAgICBfY2FkcmVEZXRhaWxzWydjaXZpbFNlcnZpY2VJZCddID0gdGhpcy5jaXZpbFNlcnZpY2VJZFxuICAgICAgICBfY2FkcmVEZXRhaWxzWydjaXZpbFNlcnZpY2VUeXBlSWQnXSA9IHRoaXMuc2VydmljZUlkXG4gICAgICAgIHBheWxvYWQucmVxdWVzdC5wcm9maWxlRGV0YWlsc1snY2FkcmVEZXRhaWxzJ10gPSBfY2FkcmVEZXRhaWxzXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkXG4gIH1cblxuICBmb3JtYXREYXRlKF9kb2I6IHN0cmluZyB8IERhdGUpOiBzdHJpbmcge1xuICAgIGxldCBkYXRlT2JqOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKF9kb2IgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBkYXRlT2JqID0gX2RvYjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBfZG9iID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgcGFydHMgPSBfZG9iLnNwbGl0KCctJyk7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IHBhcnRzO1xuICAgICAgICBkYXRlT2JqID0gbmV3IERhdGUoTnVtYmVyKHllYXIpLCBOdW1iZXIobW9udGgpIC0gMSwgTnVtYmVyKGRheSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gbmV3IERhdGUoX2RvYik7XG4gICAgICAgIGlmICghaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkpIHtcbiAgICAgICAgICBkYXRlT2JqID0gcGFyc2VkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZGF0ZU9iaiB8fCBpc05hTihkYXRlT2JqLmdldFRpbWUoKSkpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGVPYmosICd5eXl5LU1NLWRkJykgfHwgJyc7XG4gIH1cblxuICBnZXRRdWVzdGlvbklkKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWZpZWxkTmFtZSB8fCAhdGhpcy5mb3Jtc0RldGlscy5maWVsZHMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZm9ybXNEZXRpbHMuZmllbGRzLmZpbmQoKGY6IGFueSkgPT4gZi5maWVsZCA9PT0gZmllbGROYW1lKSB8fCB7fTtcbiAgICByZXR1cm4gZmllbGQuaWQgfHwgJyc7XG4gIH1cblxuICBnZW5lcmVhdGVTdXJ2ZXlQYXlsb2FkKHN0YXR1czogYW55KSB7XG4gICAgbGV0IGRhdGFPYmplY3Q6IGFueSA9IFtdXG4gICAgdGhpcy5iYXRjaERldGFpbHMuYmF0Y2hBdHRyaWJ1dGVzLmJwRW5yb2xNYW5kYXRvcnlQcm9maWxlRmllbGRzLmZvckVhY2goKF9maWVsZDogYW55KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZFRvQWRkID0ge1xuICAgICAgICBxdWVzdGlvbklkOiB0aGlzLmdldFF1ZXN0aW9uSWQoX2ZpZWxkLmZpZWxkKSxcbiAgICAgICAgcXVlc3Rpb246IF9maWVsZC5kaXNwbGF5TmFtZSxcbiAgICAgICAgYW5zd2VyOiAnJyxcbiAgICAgICAgYW5zd2VyVHlwZTogX2ZpZWxkLmZpZWxkVHlwZVxuICAgICAgfVxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5maXJzdG5hbWUnKSB7XG4gICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5maXJzdE5hbWUnLCBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmZpcnN0bmFtZScsICcnKSlcbiAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZmlyc3ROYW1lIHx8IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmZpcnN0bmFtZVxuICAgICAgfVxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmRlcGFydG1lbnROYW1lJykge1xuICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5kZXBhcnRtZW50TmFtZScsICdOL0EnKVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMuZGVwYXJ0bWVudE5hbWUgP1xuICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMuZGVwYXJ0bWVudE5hbWUgOiBcIk4vQVwiXG4gICAgICB9XG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscy5ncm91cCcpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0dyb3VwICYmIHN0YXR1cykge1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2dyb3VwJ10udmFsdWVcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydncm91cCddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5ncm91cCcsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9mZXNzaW9uYWxEZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5ncm91cCA/XG4gICAgICAgICAgLy8gICB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHNbMF0uZ3JvdXAgOiBcIk4vQVwiXG4gICAgICAgIH1cbiAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICB9XG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlscy5kZXNpZ25hdGlvbicpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0Rlc2lnbmF0aW9uICYmIHN0YXR1cykge1xuICAgICAgICAgIGlmICh0aGlzLnNob3dEb3B0Q2hhbmdlcyAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZGVzaWduYXRpb24nXSAmJlxuICAgICAgICAgICAgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2Rlc2lnbmF0aW9uJ10udmFsdWUgPT09ICdPdGhlcnMnICYmIHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydvdGhlckRlc2lnbmF0aW9uJ10pIHtcbiAgICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ290aGVyRGVzaWduYXRpb24nXS52YWx1ZVxuICAgICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snb3RoZXJEZXNpZ25hdGlvbiddLnZhbHVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2Rlc2lnbmF0aW9uJ10udmFsdWVcbiAgICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2Rlc2lnbmF0aW9uJ10udmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wcm9mZXNzaW9uYWxEZXRhaWxzWzBdLmRlc2lnbmF0aW9uID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucHJvZmVzc2lvbmFsRGV0YWlsc1swXS5kZXNpZ25hdGlvbiA6IFwiTi9BXCJcbiAgICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLnByb2Zlc3Npb25hbERldGFpbHNbMF0uZGVzaWduYXRpb24nLCAnTi9BJylcbiAgICAgICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5lbXBsb3llZUNvZGUnKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dFbXBsb3llZUNvZGUgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZW1wbG95ZWVDb2RlJ10udmFsdWVcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydlbXBsb3llZUNvZGUnXS52YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmVtcGxveWVlQ29kZScsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscyAmJiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmVtcGxveWVlQ29kZSA/XG4gICAgICAgICAgLy8gICB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLmVtcGxveWVlQ29kZSA6IFwiTi9BXCJcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5wcmltYXJ5RW1haWwnKSB7XG4gICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMucHJpbWFyeUVtYWlsXG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLnByaW1hcnlFbWFpbFxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZScpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd01vYmlsZSAmJiBzdGF0dXMpIHtcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydtb2JpbGUnXS52YWx1ZVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ21vYmlsZSddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZScsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMubW9iaWxlID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLm1vYmlsZSA6IFwiTi9BXCJcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5kb2InKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dEb2IgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgbGV0IF9kb2I6IGFueSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydkb2InXS52YWx1ZVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy5mb3JtYXREYXRlKF9kb2IpXG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLmZvcm1hdERhdGUoX2RvYilcbiAgICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9iKSB7XG4gICAgICAgICAgICBsZXQgX2RvYjogYW55ID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9iXG4gICAgICAgICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBfZG9iLnNwbGl0KCctJylcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShOdW1iZXIoeWVhciksIE51bWJlcihtb250aCkgLSAxLCBOdW1iZXIoZGF5KSlcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZERheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKVxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKVxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuICAgICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSBgJHtmb3JtYXR0ZWRZZWFyfS0ke2Zvcm1hdHRlZE1vbnRofS0ke2Zvcm1hdHRlZERheX1gXG4gICAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IGAke2Zvcm1hdHRlZFllYXJ9LSR7Zm9ybWF0dGVkTW9udGh9LSR7Zm9ybWF0dGVkRGF5fWBcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSBcIjE5NTAtMDYtMDFcIlxuICAgICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBcIjE5NTAtMDYtMDFcIlxuICAgICAgICAgIH1cbiAgICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmdlbmRlcicpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0dlbmRlciAmJiBzdGF0dXMpIHtcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydnZW5kZXInXS52YWx1ZVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2dlbmRlciddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmdlbmRlcicsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZ2VuZGVyID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmdlbmRlciA6IFwiTi9BXCJcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5kb21pY2lsZU1lZGl1bScpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0RlY2ltYWxNZWRpdW0gJiYgc3RhdHVzKSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZG9taWNpbGVNZWRpdW0nXS52YWx1ZVxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2RvbWljaWxlTWVkaXVtJ10udmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuZG9taWNpbGVNZWRpdW0nLCAnTi9BJylcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmRvbWljaWxlTWVkaXVtID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmRvbWljaWxlTWVkaXVtIDogXCJOL0FcIlxuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmNhdGVnb3J5Jykge1xuICAgICAgICBpZiAodGhpcy5zaG93Q2F0ZWdvcnkgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2F0ZWdvcnknXS52YWx1ZVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2NhdGVnb3J5J10udmFsdWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuY2F0ZWdvcnknLCAnTi9BJylcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmNhdGVnb3J5ID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLmNhdGVnb3J5IDogXCJOL0FcIlxuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMucGluQ29kZScpIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd1BpbkNvZGUgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncGluQ29kZSddLnZhbHVlXG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1sncGluQ29kZSddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMuZW1wbG95bWVudERldGFpbHMucGluQ29kZScsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscyAmJiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmVtcGxveW1lbnREZXRhaWxzLnBpbkNvZGUgP1xuICAgICAgICAgIC8vICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5lbXBsb3ltZW50RGV0YWlscy5waW5Db2RlIDogXCJOL0FcIlxuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzJykge1xuICAgICAgICBpZiAodGhpcy5jYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snaXNDYWRyZSddLnZhbHVlICYmIHN0YXR1cykge1xuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZVxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscyAmJlxuICAgICAgICAgIC8vICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5wZXJzb25hbERldGFpbHMuaXNDYWRyZSA/ICdZZXMnIDogJ05vJ1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLnBlcnNvbmFsRGV0YWlscy5pc0NhZHJlJykgPyAnWWVzJyA6ICdObydcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cbiAgICAgIGlmIChfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlVHlwZScpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgJiYgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZSAmJiBzdGF0dXMpIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWyd0eXBlT2ZDaXZpbFNlcnZpY2UnXS52YWx1ZVxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ3R5cGVPZkNpdmlsU2VydmljZSddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscyAmJiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VUeXBlID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNpdmlsU2VydmljZVR5cGUgOiAnTi9BJ1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VUeXBlJywgJ04vQScpXG4gICAgICAgIH1cbiAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICB9XG5cbiAgICAgIGlmIChfZmllbGQuZmllbGQgPT09ICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlTmFtZScpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgJiYgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZSAmJiBzdGF0dXMpIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydzZXJ2aWNlVHlwZSddLnZhbHVlXG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snc2VydmljZVR5cGUnXS52YWx1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlTmFtZSA/XG4gICAgICAgICAgLy8gICB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jaXZpbFNlcnZpY2VOYW1lIDogJ04vQSdcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2l2aWxTZXJ2aWNlTmFtZScsICdOL0EnKVxuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlTmFtZScpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgJiYgdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2lzQ2FkcmUnXS52YWx1ZSAmJiBzdGF0dXMpIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydjYWRyZU5hbWUnXS52YWx1ZVxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gdGhpcy51c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2NhZHJlTmFtZSddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlTmFtZScsICdOL0EnKVxuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVOYW1lID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlTmFtZSA6ICdOL0EnXG4gICAgICAgIH1cbiAgICAgICAgZGF0YU9iamVjdC5wdXNoKGZpZWxkVG9BZGQpXG4gICAgICB9XG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQmF0Y2gnKSB7XG4gICAgICAgIGlmICh0aGlzLmNhblNob3dzaG93Q2FkcmVEZXRhaWxzICYmIHRoaXMudXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydpc0NhZHJlJ10udmFsdWUgJiYgc3RhdHVzKSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2FkcmVCYXRjaCddLnZhbHVlXG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snY2FkcmVCYXRjaCddLnZhbHVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscyAmJiB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmNhZHJlRGV0YWlscy5jYWRyZUJhdGNoID9cbiAgICAgICAgICAvLyAgIEpTT04uc3RyaW5naWZ5KHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQmF0Y2gpIDogJ04vQSdcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVCYXRjaCcpID8gSlNPTi5zdHJpbmdpZnkodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVCYXRjaCkgOiAnTi9BJ1xuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaChmaWVsZFRvQWRkKVxuICAgICAgfVxuXG4gICAgICBpZiAoX2ZpZWxkLmZpZWxkID09PSAncHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlOYW1lJykge1xuICAgICAgICBpZiAodGhpcy5jYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB0aGlzLnVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snaXNDYWRyZSddLnZhbHVlICYmIHN0YXR1cykge1xuICAgICAgICAgIC8vIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gdGhpcy5jYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5XG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSB0aGlzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlOYW1lID9cbiAgICAgICAgICAvLyAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuY2FkcmVEZXRhaWxzLmNhZHJlQ29udHJvbGxpbmdBdXRob3JpdHlOYW1lIDogJ04vQSdcbiAgICAgICAgICBmaWVsZFRvQWRkLmFuc3dlciA9IF8uZ2V0KHRoaXMudXNlclByb2ZpbGVPYmplY3QsICdwcm9maWxlRGV0YWlscy5jYWRyZURldGFpbHMuY2FkcmVDb250cm9sbGluZ0F1dGhvcml0eU5hbWUnLCAnTi9BJylcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtSWQnKSB7XG4gICAgICAgIGlmICh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICYmXG4gICAgICAgICAgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5hZGRpdGlvbmFsUHJvcGVydGllcy5leHRlcm5hbFN5c3RlbUlkKSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICYmIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuYWRkaXRpb25hbFByb3BlcnRpZXMuZXh0ZXJuYWxTeXN0ZW1JZFxuICAgICAgICAgIC8vICAgPyB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtSWQgOiBcIk4vQVwiXG4gICAgICAgICAgZmllbGRUb0FkZC5hbnN3ZXIgPSBfLmdldCh0aGlzLnVzZXJQcm9maWxlT2JqZWN0LCAncHJvZmlsZURldGFpbHMuYWRkaXRpb25hbFByb3BlcnRpZXMuZXh0ZXJuYWxTeXN0ZW1JZCcsICdOL0EnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFPYmplY3RbX2ZpZWxkLm5hbWVdID0gJ04vQSdcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cblxuICAgICAgaWYgKF9maWVsZC5maWVsZCA9PT0gJ3Byb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtRG9yJykge1xuICAgICAgICBpZiAodGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5hZGRpdGlvbmFsUHJvcGVydGllcyAmJlxuICAgICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuYWRkaXRpb25hbFByb3BlcnRpZXMuZXh0ZXJuYWxTeXN0ZW1Eb3IpIHtcbiAgICAgICAgICAvLyBkYXRhT2JqZWN0W19maWVsZC5uYW1lXSA9IHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMuYWRkaXRpb25hbFByb3BlcnRpZXMgJiYgdGhpcy51c2VyUHJvZmlsZU9iamVjdC5wcm9maWxlRGV0YWlscy5hZGRpdGlvbmFsUHJvcGVydGllcy5leHRlcm5hbFN5c3RlbURvclxuICAgICAgICAgIC8vICAgPyB0aGlzLnVzZXJQcm9maWxlT2JqZWN0LnByb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtRG9yIDogXCJOL0FcIlxuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gXy5nZXQodGhpcy51c2VyUHJvZmlsZU9iamVjdCwgJ3Byb2ZpbGVEZXRhaWxzLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLmV4dGVybmFsU3lzdGVtRG9yJywgJ04vQScpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gZGF0YU9iamVjdFtfZmllbGQubmFtZV0gPSAnTi9BJ1xuICAgICAgICAgIGZpZWxkVG9BZGQuYW5zd2VyID0gJ04vQSdcbiAgICAgICAgfVxuICAgICAgICBkYXRhT2JqZWN0LnB1c2goZmllbGRUb0FkZClcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGRhdGFPYmplY3RcbiAgfVxuXG4gIHVwZGF0ZUVtYWlsKGVtYWlsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwb3N0RGF0YSA9IHtcbiAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgJ3VzZXJJZCc6IHRoaXMuY29uZmlnU3JjLnVuTWFwcGVkVXNlci5pZCxcbiAgICAgICAgJ2NvbnRleHRUb2tlbic6IHRoaXMuY29udGV4dFRva2VuLFxuICAgICAgICAncHJvZmlsZURldGFpbHMnOiB7XG4gICAgICAgICAgJ3BlcnNvbmFsRGV0YWlscyc6IHtcbiAgICAgICAgICAgICdwcmltYXJ5RW1haWwnOiBlbWFpbCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG5cbiAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyICsgMVxuICAgIHRoaXMudXNlclByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVByaW1hcnlFbWFpbERldGFpbHMocG9zdERhdGEpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95U3ViamVjdCQpKVxuICAgICAgLnN1YnNjcmliZSgoX3JlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkTG9hZGVyID0gdGhpcy5hZGRMb2FkZXIgLSAxXG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVPYmplY3QucHJvZmlsZURldGFpbHMucGVyc29uYWxEZXRhaWxzLnByaW1hcnlFbWFpbCA9IGVtYWlsXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCdlbWFpbFVwZGF0ZWQnKSlcbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgICAgaWYgKCFlcnJvci5vaykge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih0aGlzLmhhbmRsZVRyYW5zbGF0ZVRvKCd1cGRhdGVFbWFpbEZhaWxlZCcpKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgc2V0dXBTY3JvbGxMaXN0ZW5lcihvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlYXJjaERlc2lnbmF0aW9uJyk7XG4gICAgaWYgKG9wZW5lZCAmJiBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wpIHtcbiAgICAgIHNlYXJjaERlc2lnbmF0aW9uQ29udHJvbC5zZXRWYWx1ZSgnJylcbiAgICAgIHRoaXMuZGVzaWduYXRpb25zT2Zmc2V0ID0gMFxuICAgICAgdGhpcy5kZXNpZ25hdGlvbnNNZXRhID0gW107XG4gICAgICB0aGlzLmdldGRlc2lnbmF0aW9uc01ldGEoKVxuICAgICAgY29uc3Qgc2VhcmNoSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VhcmNoLWlucHV0JykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIGlmIChzZWFyY2hJbnB1dCkge1xuICAgICAgICBzZWFyY2hJbnB1dC5mb2N1cygpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWF0LXNlbGVjdC1wYW5lbCcpO1xuICAgICAgaWYgKHBhbmVsKSB7XG4gICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25EZXNpZ25hdGlvblNlbGVjdFNjcm9sbC5iaW5kKHRoaXMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRlc2lnbmF0aW9uU2VsZWN0U2Nyb2xsKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgc2Nyb2xsZWQgdG8gdGhlIGJvdHRvbSAod2l0aCBhIHNtYWxsIHRocmVzaG9sZClcbiAgICAgIGlmIChlbGVtZW50LnNjcm9sbFRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0ID49IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gNSkge1xuICAgICAgICAvLyBPbmx5IGxvYWQgbW9yZSBpZiBub3QgYWxyZWFkeSBsb2FkaW5nIGFuZCBpZiB0aGVyZSBhcmUgcG90ZW50aWFsbHkgbW9yZSBpdGVtc1xuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9ucyAmJiB0aGlzLmRlc2lnbmF0aW9uc01ldGEubGVuZ3RoIDwgdGhpcy5kZXNpZ25hdGlvbnNUb3RhbENvdW50KSB7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlRGVzaWduYXRpb25zID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc09mZnNldCArPSAxO1xuICAgICAgICAgIHRoaXMuZ2V0ZGVzaWduYXRpb25zTWV0YSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIGNoZWNrQ3VycmVudERlc2lnbmF0aW9uUHJlc2VudCgpIHtcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgZGVzaWduYXRpb24gdmFsdWVcbiAgICBjb25zdCBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wgPSB0aGlzLnVzZXJEZXRhaWxzRm9ybS5nZXQoJ2Rlc2lnbmF0aW9uJyk7XG4gICAgY29uc3QgY3VycmVudERlc2lnbmF0aW9uID0gc2VhcmNoRGVzaWduYXRpb25Db250cm9sID8gc2VhcmNoRGVzaWduYXRpb25Db250cm9sLnZhbHVlIDogJyc7XG4gICAgLy8gQ2hlY2sgaWYgY3VycmVudCBkZXNpZ25hdGlvbiBleGlzdHMgaW4gdGhlIGxpc3RcbiAgICBjb25zdCBkZXNpZ25hdGlvbmRhdGEgPSBjdXJyZW50RGVzaWduYXRpb24/LmRlc2lnbmF0aW9uID8gY3VycmVudERlc2lnbmF0aW9uLmRlc2lnbmF0aW9uIDogY3VycmVudERlc2lnbmF0aW9uXG4gICAgaWYgKGN1cnJlbnREZXNpZ25hdGlvbikge1xuICAgICAgY29uc3QgZGVzaWduYXRpb25FeGlzdHMgPSB0aGlzLmRlc2lnbmF0aW9uc01ldGEuc29tZShcbiAgICAgICAgKGRlc2lnbmF0aW9uOiBhbnkpID0+IGRlc2lnbmF0aW9uLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gZGVzaWduYXRpb25kYXRhPy50b0xvd2VyQ2FzZSgpIFxuICAgICAgKTtcblxuICAgICAgLy8gSWYgZGVzaWduYXRpb24gZG9lc24ndCBleGlzdCBpbiB0aGUgbGlzdCwgYWRkIGl0XG4gICAgICBpZiAoIWRlc2lnbmF0aW9uRXhpc3RzKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBkZXNpZ25hdGlvbiBvYmplY3QgdG8gbWF0Y2ggdGhlIHN0cnVjdHVyZSBvZiBvdGhlciBpdGVtc1xuICAgICAgICBjb25zdCBuZXdEZXNpZ25hdGlvbiA9IHtcbiAgICAgICAgICBuYW1lOiBjdXJyZW50RGVzaWduYXRpb24sXG4gICAgICAgICAgc3RhdHVzOiAnQWN0aXZlJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRlc2lnbmF0aW9uc01ldGEudW5zaGlmdChuZXdEZXNpZ25hdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25EZXNpZ25hdGlvbkRyb3Bkb3duQ2xvc2VkKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlYXJjaERlc2lnbmF0aW9uQ29udHJvbCA9IHRoaXMudXNlckRldGFpbHNGb3JtLmdldCgnc2VhcmNoRGVzaWduYXRpb24nKTtcbiAgICBpZiAoc2VhcmNoRGVzaWduYXRpb25Db250cm9sKSB7XG4gICAgICBzZWFyY2hEZXNpZ25hdGlvbkNvbnRyb2wuc2V0VmFsdWUoJycpXG4gICAgICB0aGlzLmRlc2lnbmF0aW9uU2VhcmNoVGV4dCA9ICcnXG4gICAgfVxuICAgIHRoaXMuY2hlY2tDdXJyZW50RGVzaWduYXRpb25QcmVzZW50KClcbiAgfVxuXG59XG4iLCI8ZGl2ICNmdWxsU2NyZWVuQ29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctaGVhZGVyIHRleHQtcmlnaHQgbWItMlwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbiBub3RyYW5zbGF0ZSBtYXRlcmlhbC1pY29ucyBjbG9zZS1pY29uIGN1cnNvci1wb2ludGVyXCIgbWF0cHJlZml4PVwiXCIgcm9sZT1cImltZ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFttYXQtZGlhbG9nLWNsb3NlXT1cImZhbHNlXCI+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxoMT4ge3tkYXRhPy5jb3Vyc2VOYW1lfX0gPC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cInVzZXJEZXRhaWxzRm9ybVwiIGNsYXNzPVwidXNlckRldGFpbHNGb3JtXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd05hbWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIG1hcmdpbi0wIHJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8ubmFtZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgcGxhY2Vob2xkZXI9XCJOYW1lXCIvPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93T3JnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgKHNob3dEb3B0Q2hhbmdlcyA/ICdwcm9maWxlSW5mby5wcmVzZW50T3JnYW5pc2F0aW9uJyA6ICdwcm9maWxlSW5mby5vcmdhbmlzYXRpb24nKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm9yZ2FuaXNhdGlvblwiIHBsYWNlaG9sZGVyPVwiT3JnYW5pc2F0aW9uXCIvPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93RW1haWxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIG1hcmdpbi0wIHJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uZW1haWwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicHJpbWFyeUVtYWlsXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBlbWFpbFwiIChrZXl1cCk9XCJoYW5kbGVFbXB0eSgncHJpbWFyeUVtYWlsJylcIi8+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cIm1hdC1lcnJvclwiICpuZ0lmPVwidXNlckRldGFpbHNGb3JtLmdldCgncHJpbWFyeUVtYWlsJykuaGFzRXJyb3IoJ3JlcXVpcmVkJykgfHwgdXNlckRldGFpbHNGb3JtLmdldCgncHJpbWFyeUVtYWlsJykuaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxuICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uaW52YWxpZEVtYWlsJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZFwiICpuZ0lmPVwidmVyaWZ5RW1haWwgJiYgIW90cFNlbnQgJiYgIWVWZXJpZmllZFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdldC1vdHBcIiAoY2xpY2spPVwiaGFuZGxlR2VuZXJhdGVFbWFpbE9UUCgnZW1haWwnKVwiPnt7ICdwcm9maWxlSW5mby5nZXRPVFAnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJlbWFpbE90cFNlbnRcIj5cbiAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJlbWFpbE90cEZvcm1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBlbnRlci1vdHBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5lbnRlck9UUCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+VGltZSBSZW1haW5pbmc6IDxzcGFuICNlbWFpbFRpbWVyRGl2Pjwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJwcm9maWxlLWZvcm0tZmllbGQgbW9iaWxlLW51bVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlT3RwXCIgY2xhc3M9XCJpbnB1dC10ZXh0IGN1c3RvbS1zaXplXCIgcGxhY2Vob2xkZXI9XCJ7eyAncHJvZmlsZUluZm8uZW50ZXJUaGVPVFAnIHwgdHJhbnNsYXRlIH19XCIgbWF4bGVuZ3RoPVwiNlwiIC8+XG4gICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyXCIgKm5nSWY9XCJzaG93RW1haWxSZXNlbmRPVFBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lclwiPnt7ICdwcm9maWxlSW5mby5kaWROb3RSZWNlaXZlT1RQJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc2VuZC1vdHBcIiAoY2xpY2spPVwiaGFuZGxlUmVzZW5kRW1haWxPVFAoKVwiPiZuYnNwOyZuYnNwO3t7ICdwcm9maWxlSW5mby5yZXNlbnRPVFAnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBtYi00XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCIgKGNsaWNrKT1cInZlcmlmeUVtYWlsT1RQKClcIj57eyAncHJvZmlsZUluZm8uc3VibWl0JyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIiAqbmdJZj1cImNhblNob3dHcm91cFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLmdyb3VwJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImdyb3VwXCIgcGxhY2Vob2xkZXI9XCJ7eyAncHJvZmlsZUluZm8uY2hvb3NlQUdyb3VwJyB8IHRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdyb3VwRGF0YVwiIHZhbHVlPVwie3tncm91cH19XCI+e3sgZ3JvdXAgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIG1iLTJcIiAqbmdJZj1cInNob3dEb3B0Q2hhbmdlc1wiPlxuICAgICAgICAgICAgICB7eydwcm9maWxlSW5mby5ncm91cE5vdGUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCByZWxhdGl2ZVwiICpuZ0lmPVwiY2FuU2hvd0Rlc2lnbmF0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uZGVzaWduYXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYXV0by1jb21wbGV0ZS1yb3cgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0IGhpZ2gtemluZGV4XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzaWduYXRpb25cIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJmaWx0ZXJkZXNpZ25hdGlvbigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIChmb2N1cyk9XCJvbkRlc2lnbmF0aW9uc0ZvY3VzKClcIiAjdGV4dEJveFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ3Byb2ZpbGVJbmZvLmNob29zZUFEZXNpZ25hdGlvbicgfCB0cmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZGlzYWduYXRpb24tY2FyZXRcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD4gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1zZWxlY3QtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cImZpeGVkLWhlaWdodC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJ7eyAncHJvZmlsZUluZm8uY2hvb3NlQURlc2lnbmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiIGZvcm1Db250cm9sTmFtZT1cImRlc2lnbmF0aW9uXCIgIChjbG9zZWQpPVwib25EZXNpZ25hdGlvbkRyb3Bkb3duQ2xvc2VkKClcIiAob3BlbmVkQ2hhbmdlKT1cInNldHVwU2Nyb2xsTGlzdGVuZXIoJGV2ZW50KVwiICBwYW5lbENsYXNzPVwic2VhcmNoLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBTdGlja3kgc2VhcmNoIGlucHV0IGNvbnRhaW5lciAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RpY2t5LXNlYXJjaC1jb250YWluZXJcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBkZXNpZ25hdGlvblwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hEZXNpZ25hdGlvblwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hEZXNpZ25hdGlvbj8udmFsdWVcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLWJ1dHRvblwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VhcmNoRGVzaWduYXRpb24/LnNldFZhbHVlKCcnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDinJVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIE9wdGlvbnMgbGlzdCAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGRlc2lnbmF0aW9uc01ldGEgXCIgW3ZhbHVlXT1cIm9wdGlvbj8ubmFtZVwiIChjbGljayk9XCJzZWxlY3REZXNpZ25hdGlvbihvcHRpb24/Lm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgIDwhLS0gTG9hZGluZyBpbmRpY2F0b3IgLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nTW9yZURlc2lnbmF0aW9uc1wiIGNsYXNzPVwibG9hZGluZy1pbmRpY2F0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgTG9hZGluZyBtb3JlLi4uXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIE5vIHJlc3VsdHMgbWVzc2FnZSAtLT5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIihkZXNpZ25hdGlvbnNNZXRhICk/Lmxlbmd0aCA9PT0gMFwiIGRpc2FibGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgTm8gbWF0Y2hlcyBmb3VuZFxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwidXNlckRldGFpbHNGb3JtPy5jb250cm9sc1snZGVzaWduYXRpb24nXT8uaW52YWxpZCAmJiB1c2VyRGV0YWlsc0Zvcm0/LmNvbnRyb2xzWydkZXNpZ25hdGlvbiddPy50b3VjaGVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgYSB2YWxpZCBkZXNpZ25hdGlvbi5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIG1iLTJcIiAqbmdJZj1cInNob3dEb3B0Q2hhbmdlc1wiPlxuICAgICAgICAgICAge3sncHJvZmlsZUluZm8uZGVzaWduYXRpb25Ob3RlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYXV0by1saXN0IGZsZXggZmxleC1jb2wgaWdub3JlLWJsdXJcIiAjZHJvcGRvd25cbiAgICAgICAgICAgICpuZ0lmPVwib3BlbkRlc2lnbmF0aW9uRHJvcGRvd24gJiYgZmlsdGVyRGVzaWduYXRpb25zTWV0YS5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgKG1vdXNlZG93bik9XCJwcmV2ZW50Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtIHt7dXNlckRldGFpbHNGb3JtLmNvbnRyb2xzWydkZXNpZ25hdGlvbiddPy52YWx1ZT8udG9Mb3dlckNhc2UoKSA9PT0gZGVzaWduYXRpb24/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgPyAnaXRlbS1hY3RpdmUnIDogJyd9fVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkZXNpZ25hdGlvbiBvZiBmaWx0ZXJEZXNpZ25hdGlvbnNNZXRhXCIgKGNsaWNrKT1cInNlbGVjdERlc2lnbmF0aW9uKGRlc2lnbmF0aW9uLm5hbWUpXCI+XG4gICAgICAgICAgICAgIHt7IGRlc2lnbmF0aW9uPy5uYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHJlbGF0aXZlXCIgKm5nSWY9XCJjYW5TaG93RGVzaWduYXRpb24gJiYgY2FuU2hvd090aGVyRGVzaWduYXRpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5vdGhlckRlc2lnbmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJjYW5TaG93T3RoZXJEZXNpZ25hdGlvblwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0XCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwib3RoZXJEZXNpZ25hdGlvblwiIHBsYWNlaG9sZGVyPVwie3sgJ3Byb2ZpbGVJbmZvLmVudGVyRGVzaWduYXRpb24nIHwgdHJhbnNsYXRlIH19XCIvPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd0VtcGxveWVlQ29kZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5lbXBsb3llZUlkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiaW5wdXQtdGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImVtcGxveWVlQ29kZVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgZW1wbG95ZWUgY29kZVwiLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD4gICAgXG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJtYXQtZXJyb3JcIiAqbmdJZj1cInVzZXJEZXRhaWxzRm9ybT8uZ2V0KCdlbXBsb3llZUNvZGUnKT8uaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxuICAgICAgICAgICAgICAgIFBsZWFzZSBlbnRlciBhbiBBbHBoYS1udW1lcmljIHZhbHVlIG9ubHlcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPiAgICAgICAgICAgICAgICBcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5zaG93TW9iaWxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLm1vYmlsZU51bWJlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50cnktY29kZSBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgKzkxXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibW9iaWxlLW51bVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0LXRleHQgbW9iaWxlLXRleHQgcmVsYXRpdmVcIiBtYXhsZW5ndGg9XCIxMFwiIChrZXl1cCk9XCJoYW5kbGVFbXB0eSgnbW9iaWxlJylcIlxuICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm1vYmlsZVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgbW9iaWxlIG51bWJlclwiLz5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ2ZXJpZmllZC1jaGVja1wiICpuZ0lmPVwibVZlcmlmaWVkXCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwibWF0LWVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInVzZXJEZXRhaWxzRm9ybS5nZXQoJ21vYmlsZScpLmhhc0Vycm9yKCdyZXF1aXJlZCcpIHx8IHVzZXJEZXRhaWxzRm9ybS5nZXQoJ21vYmlsZScpLmhhc0Vycm9yKCdwYXR0ZXJuJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5wbGVhc2VFbnRlclZhbGlkTW9iaWxlTnVtYmVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZFwiICpuZ0lmPVwidmVyaWZ5TW9iaWxlICYmICFvdHBTZW50ICYmICFtVmVyaWZpZWRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2V0LW90cCBzbTptci00XCIgKGNsaWNrKT1cImhhbmRsZUdlbmVyYXRlT1RQKCdwaG9uZScpXCI+e3sgJ3Byb2ZpbGVJbmZvLmdldE9UUCcgfFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3RwU2VudFwiPiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJvdHBGb3JtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZW50ZXItb3RwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIHJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uZW50ZXJPVFAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlRpbWUgUmVtYWluaW5nOiA8c3BhbiAjdGltZXJEaXY+PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInByb2ZpbGUtZm9ybS1maWVsZCBtb2JpbGUtbnVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm90cFwiIGNsYXNzPVwiaW5wdXQtdGV4dCBjdXN0b20tc2l6ZVwiIHBsYWNlaG9sZGVyPVwie3sgJ3Byb2ZpbGVJbmZvLmVudGVyVGhlT1RQJyB8IHRyYW5zbGF0ZSB9fVwiIG1heGxlbmd0aD1cIjZcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlclwiICpuZ0lmPVwic2hvd1Jlc2VuZE9UUFwiPiAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZXJcIj57eyAncHJvZmlsZUluZm8uZGlkTm90UmVjZWl2ZU9UUCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNlbmQtb3RwXCIgKGNsaWNrKT1cImhhbmRsZVJlc2VuZE9UUCgpXCI+Jm5ic3A7Jm5ic3A7e3sgJ3Byb2ZpbGVJbmZvLnJlc2VudE9UUCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIG1iLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIiAoY2xpY2spPVwidmVyaWZ5TW9iaWxlT1RQKClcIj57eyAncHJvZmlsZUluZm8uc3VibWl0JyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93R2VuZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uZ2VuZGVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImdlbmRlclwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGdlbmRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgX2dlbmRlciBvZiBlVXNlckdlbmRlclwiIHZhbHVlPVwie3sgX2dlbmRlciB9fVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVHJhbnNsYXRlVG8oX2dlbmRlci50b0xvd2VyQ2FzZSgpKSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd0RvYlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLmRvYicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgY2xhc3M9XCJpbnB1dC10ZXh0IGljb24taW5jbHVkZS1pbnB1dFwiIFttYXhdPVwiY3VycmVudERhdGVcIiBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9iXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgZGF0ZSBvZiBiaXJ0aFwiIC8+XG4gICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIHJlbGF0aXZlXCIgKm5nSWY9XCJjYW5TaG93RG9taWNpbGVNZWRpdW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIG1hcmdpbi0wIHJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5tb3RoZXJUb25ndWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGF1dG8tY29tcGxldGUtcm93IHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dC10ZXh0IGhpZ2gtemluZGV4XCIgYXJpYS1sYWJlbD1cIkRvbWljaWxlIE1lZGl1bSAoTW90aGVyIFRvbmd1ZSlcIiBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZG9taWNpbGVNZWRpdW1cIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBtb3RoZXIgdG9uZ3VlXCJcbiAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJmaWx0ZXJMYW5ndWFnZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIChmb2N1cyk9XCJvbkxhbmd1YWdlRm9jdXMoKVwiICNsYW5ndWFnZVRleHRCb3gvPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1vdGhlci10b3VuZ3VlLWNhcmV0XCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZG9taWNpbGVNZWRpdW0nXS5pbnZhbGlkICYmIHVzZXJEZXRhaWxzRm9ybS5jb250cm9sc1snZG9taWNpbGVNZWRpdW0nXS50b3VjaGVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1lcnJvclwiPlxuICAgICAgICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCBhIHZhbGlkIG1vdGhlciB0b25ndWUuXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF1dG8tbGFuZ3VhZ2UtbGlzdCBmbGV4IGZsZXgtY29sIGlnbm9yZS1ibHVyXCIgI2xhbmd1YWdlRHJvcGRvd25cbiAgICAgICAgICAgICAgKm5nSWY9XCJvcGVuTGFuZ3VhZ2VEcm9wZG93biAmJiBtYXN0ZXJMYW5ndWFnZXM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICA8ZGl2IChtb3VzZWRvd24pPVwicHJldmVudExhbmd1YWdlQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImxhbmd1YWdlLWl0ZW0ge3t1c2VyRGV0YWlsc0Zvcm0uY29udHJvbHNbJ2RvbWljaWxlTWVkaXVtJ10/LnZhbHVlPy50b0xvd2VyQ2FzZSgpID09PSBsYW5ndWFnZT8ubmFtZT8udG9Mb3dlckNhc2UoKSA/ICdsYW5ndWFnZS1pdGVtLWFjdGl2ZScgOiAnJ319XCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgbWFzdGVyTGFuZ3VhZ2VzXCIgKGNsaWNrKT1cInNlbGVjdExhbmd1YWdlKGxhbmd1YWdlLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAge3sgbGFuZ3VhZ2U/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIiAqbmdJZj1cImNhblNob3dDYXRlZ29yeVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLmNhdGVnb3J5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5XCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGVDYXRlZ29yeVwiIHZhbHVlPVwie3sgY2F0ZWdvcnkgfX1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVRyYW5zbGF0ZVRvKGNhdGVnb3J5Py50b0xvd2VyQ2FzZSgpKSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93cGluQ29kZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCBtYXJnaW4tMCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICBpMThuPVwiVGl0bGUgbGFiZWx8TGFiZWwgd2hpY2ggZXhwbGFpbnMgdGhlIHVzZXIgdG8gZW50ZXIgdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICd1c2VyUHJvZmlsZS5vZmZpY2VQaW5Db2RlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImlucHV0LXRleHRcIiBtYXRJbnB1dCBtYXhsZW5ndGg9XCI2XCIgZm9ybUNvbnRyb2xOYW1lPVwicGluQ29kZVwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgcGluY29kZVwiLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cIm1hdC1lcnJvclwiICpuZ0lmPVwidXNlckRldGFpbHNGb3JtPy5nZXQoJ3BpbkNvZGUnKT8uaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5pbnZhbGlkUGluQ29kZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj4gICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgICYmICFzaG93RG9wdENoYW5nZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5mcm9tR292T3JnYW5pemF0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJwcm9maWxlLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImlzQ2FkcmVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImdldElzQ2FkcmVTdGF0dXMoJGV2ZW50LnZhbHVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNhZHJlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ0cnVlXCI+WWVzPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiZmFsc2VcIj5ObzwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGxcIiAqbmdJZj1cImNhblNob3dzaG93Q2FkcmVEZXRhaWxzICYmIGlzQ2FkcmVTdGF0dXMgICYmICFzaG93RG9wdENoYW5nZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby50eXBlT2ZDaXZpbFNlcnZpY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInByb2ZpbGUtZm9ybS1maWVsZFwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidHlwZU9mQ2l2aWxTZXJ2aWNlXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJnZXRTZXJ2aWNlKCRldmVudC52YWx1ZSlcIiAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdHlwZSBvZiBjaXZpbCBzZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzZXJ2aWNlIG9mIGNpdmlsU2VydmljZVR5cGVzXCIgW3ZhbHVlXT1cInNlcnZpY2VcIj57eyBzZXJ2aWNlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiICpuZ0lmPVwiY2FuU2hvd3Nob3dDYWRyZURldGFpbHMgJiYgdXNlckRldGFpbHNGb3JtLmdldCgndHlwZU9mQ2l2aWxTZXJ2aWNlJykudmFsdWUgJiYgdXNlckRldGFpbHNGb3JtLmdldCgnaXNDYWRyZScpLnZhbHVlICYmICFzaG93RG9wdENoYW5nZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5zZXJ2aWNlVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwicHJvZmlsZS1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzZXJ2aWNlVHlwZVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZXJ2aWNlU2VsZWN0KCRldmVudClcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBzZXJ2aWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNlcnZpY2Ugb2Ygc2VydmljZU5hbWVcIiBbdmFsdWVdPVwic2VydmljZVwiPnt7IHNlcnZpY2UgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpLnZhbHVlICYmIFxuICAgICAgICAgICAgICB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdpc0NhZHJlJykudmFsdWUgXG4gICAgICAgICAgICAgICYmIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3R5cGVPZkNpdmlsU2VydmljZScpLnZhbHVlICYmIChcbiAgICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgPT09ICdJbmRpYW4gQWRtaW5pc3RyYXRpdmUgU2VydmljZSAoSUFTKScgfHwgXG4gICAgICAgICAgICAgICAgICB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpLnZhbHVlID09PSAnSW5kaWFuIFBvbGljZSBTZXJ2aWNlIChJUFMpJyB8fCBcbiAgICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgPT09ICdJbmRpYW4gRm9yZXN0IFNlcnZpY2UgKElGb1MpJyBcbiAgICAgICAgICAgICAgICApICYmICFzaG93RG9wdENoYW5nZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5jYWRyZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwicHJvZmlsZS1mb3JtLWZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjYWRyZU5hbWVcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2FkcmVTZWxlY3QoJGV2ZW50LnZhbHVlKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGNhZHJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHN0YXRlIG9mIGNhZHJlXCIgW3ZhbHVlXT1cInN0YXRlXCI+e3sgc3RhdGUgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd0RvcHRDaGFuZ2VzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpICYmICh1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpLnZhbHVlICYmIFxuICAgICAgICAgICAgdXNlckRldGFpbHNGb3JtLmdldCgnaXNDYWRyZScpLnZhbHVlICYmIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3R5cGVPZkNpdmlsU2VydmljZScpLnZhbHVlICYmIChcbiAgICAgICAgICAgICAgICB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdzZXJ2aWNlVHlwZScpLnZhbHVlID09PSAnSW5kaWFuIEFkbWluaXN0cmF0aXZlIFNlcnZpY2UgKElBUyknIHx8IFxuICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgPT09ICdJbmRpYW4gUG9saWNlIFNlcnZpY2UgKElQUyknIHx8IFxuICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgPT09ICdJbmRpYW4gRm9yZXN0IFNlcnZpY2UgKElGb1MpJyBcbiAgICAgICAgICAgICkgJiYgdXNlckRldGFpbHNGb3JtLmdldCgnY2FkcmVOYW1lJykudmFsdWUpICA/IHRydWUgOiAoKHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgJiYgXG4gICAgICAgICAgICAgICAgdXNlckRldGFpbHNGb3JtLmdldCgnaXNDYWRyZScpLnZhbHVlIFxuICAgICAgICAgICAgJiYgdXNlckRldGFpbHNGb3JtLmdldCgndHlwZU9mQ2l2aWxTZXJ2aWNlJykudmFsdWUgJiYgKFxuICAgICAgICAgICAgICAgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ3NlcnZpY2VUeXBlJykudmFsdWUgIT09ICdJbmRpYW4gQWRtaW5pc3RyYXRpdmUgU2VydmljZSAoSUFTKScgJiYgXG4gICAgICAgICAgICAgICAgdXNlckRldGFpbHNGb3JtLmdldCgnc2VydmljZVR5cGUnKS52YWx1ZSAhPT0gJ0luZGlhbiBQb2xpY2UgU2VydmljZSAoSVBTKScgJiYgXG4gICAgICAgICAgICAgICAgdXNlckRldGFpbHNGb3JtLmdldCgnc2VydmljZVR5cGUnKS52YWx1ZSAhPT0gJ0luZGlhbiBGb3Jlc3QgU2VydmljZSAoSUZvUyknIFxuICAgICAgICAgICAgKSkpID8gdHJ1ZSA6IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWFyZ2luLTAgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgaTE4bj1cIlRpdGxlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIHRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICB7eyAncHJvZmlsZUluZm8uYmF0Y2gnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJwcm9maWxlLWZvcm0tZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY2FkcmVCYXRjaFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IGJhdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyQXJyYXlcIiBbdmFsdWVdPVwieWVhclwiPnt7IHllYXIgfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsXCIgKm5nSWY9XCJjYW5TaG93c2hvd0NhZHJlRGV0YWlscyAmJiB1c2VyRGV0YWlsc0Zvcm0uZ2V0KCdpc0NhZHJlJykudmFsdWUgJiYgIHVzZXJEZXRhaWxzRm9ybS5nZXQoJ2NhZHJlQmF0Y2gnKS52YWx1ZSAmJiAhc2hvd0RvcHRDaGFuZ2VzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIG1hcmdpbi0wIHJlcXVpcmVkIG1iLTNcIlxuICAgICAgICAgICAgICAgIGkxOG49XCJUaXRsZSBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciB0aXRsZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdwcm9maWxlSW5mby5jYWRyZUNvbnRyb2xsaW5nQXV0aG9yaXR5JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYWRyZUNvbnRyb2wtbmFtZVwiPnt7Y2FkcmVDb250cm9sbGluZ0F1dGhvcml0eX19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGZsZXggZmxleC1yb3cgZ2FwLTQganVzdGlmeS1lbmQgbWFyZ2luLXRvcC1tXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNhdmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidXNlckRldGFpbHNGb3JtPy5pbnZhbGlkIHx8ICFtVmVyaWZpZWQgfHwgIWVWZXJpZmllZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0Rm9ybSh1c2VyRGV0YWlsc0Zvcm0pXCI+XG4gICAgICAgICAgICAgICAge3sgJ3Byb2ZpbGVJbmZvLnNhdmVDaGFuZ2VzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZGRMb2FkZXIgPiAwXCIgPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIG15LTIgbG9hZGVyIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxtYXQtc3Bpbm5lciBjbGFzcz1cImlubGluZS1ibG9ja1wiPjwvbWF0LXNwaW5uZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|