@reusa/ngx-reusa-app-lib 0.0.999 → 0.1.1
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/README.md +46 -46
- package/esm2022/lib/annimations/app-animations.mjs +1 -1
- package/esm2022/lib/components/add-employer/add-employer.component.mjs +1130 -2312
- package/esm2022/lib/components/add-participant/add-participant.component.mjs +1 -1
- package/esm2022/lib/components/add-payment/add-payment.component.mjs +16 -36
- package/esm2022/lib/components/address/address.component.mjs +58 -52
- package/esm2022/lib/components/bank-details/bank-details.component.mjs +25 -29
- package/esm2022/lib/components/captcha/captcha.component.mjs +6 -6
- package/esm2022/lib/components/card/card.component.mjs +1 -1
- package/esm2022/lib/components/content/content.component.mjs +1 -1
- package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +1 -1
- package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +14 -19
- package/esm2022/lib/components/disclosure/disclosure.component.mjs +1 -1
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +6 -6
- package/esm2022/lib/components/dropdown/dropdown.interface.mjs +1 -1
- package/esm2022/lib/components/email-update/email-update.component.mjs +32 -14
- package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +197 -192
- package/esm2022/lib/components/error/error.component.mjs +5 -22
- package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +1 -1
- package/esm2022/lib/components/file-download/file-download.component.mjs +1 -1
- package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +1 -1
- package/esm2022/lib/components/footer/footer.component.mjs +67 -90
- package/esm2022/lib/components/header/header.component.mjs +105 -169
- package/esm2022/lib/components/help/help.component.mjs +1 -1
- package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +13 -13
- package/esm2022/lib/components/info/info.component.mjs +12 -4
- package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +1 -1
- package/esm2022/lib/components/job-title/job-title.component.mjs +94 -93
- package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +82 -93
- package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +329 -0
- package/esm2022/lib/components/link/link.component.mjs +1 -1
- package/esm2022/lib/components/maintenance-detector/maintenance-detector.component.mjs +1 -1
- package/esm2022/lib/components/mask/mask.component.mjs +1 -1
- package/esm2022/lib/components/menu/menu.component.mjs +35 -44
- package/esm2022/lib/components/mfa/mfa.component.mjs +305 -103
- package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +16 -7
- package/esm2022/lib/components/mfa2/mfa2.component.mjs +260 -0
- package/esm2022/lib/components/money-expect/money-expect.component.mjs +36 -148
- package/esm2022/lib/components/msg/msg.component.mjs +1 -1
- package/esm2022/lib/components/news/news.component.mjs +1 -1
- package/esm2022/lib/components/overlay-info/overlay-info.component.mjs +1 -1
- package/esm2022/lib/components/page/page.component.mjs +1 -1
- package/esm2022/lib/components/profile/profile.component.mjs +213 -56
- package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +33 -106
- package/esm2022/lib/components/questionnaire/AppValidators.mjs +14 -165
- package/esm2022/lib/components/questionnaire/FbConstants.mjs +1 -1
- package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +60 -110
- package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +123 -367
- package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +9 -9
- package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +1028 -769
- package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +325 -157
- package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +17 -9
- package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +26 -93
- package/esm2022/lib/components/questionnaire/question-base.mjs +1 -1
- package/esm2022/lib/components/questionnaire/question-control.service.mjs +1 -2
- package/esm2022/lib/components/questionnaire/question.service.mjs +7 -5
- package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +25 -14
- package/esm2022/lib/components/read-more/read-more.component.mjs +6 -6
- package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +196 -333
- package/esm2022/lib/components/search-employer/search-employer.component.mjs +24 -47
- package/esm2022/lib/components/security-question/security-question.component.mjs +189 -0
- package/esm2022/lib/components/select/select.component.mjs +1 -1
- package/esm2022/lib/components/sign-ssn/sign-ssn.component.mjs +3 -3
- package/esm2022/lib/components/ssn/ssn.component.mjs +1 -1
- package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +4 -4
- package/esm2022/lib/components/test/test.component.mjs +1 -1
- package/esm2022/lib/components/user-login/user-login.component.mjs +226 -115
- package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +155 -287
- package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +46 -62
- package/esm2022/lib/directives/auto-focus/auto-focus.directive.mjs +1 -1
- package/esm2022/lib/directives/caps-lock.directive.mjs +1 -1
- package/esm2022/lib/directives/required-roles/required-roles.directive.mjs +1 -1
- package/esm2022/lib/enums/EmailStatusEnum.mjs +1 -1
- package/esm2022/lib/guards/auth.guard.mjs +4 -26
- package/esm2022/lib/guards/no-login/no-login.guard.mjs +1 -1
- package/esm2022/lib/interceptors/error-interceptor/http-error-interceptor.mjs +1 -1
- package/esm2022/lib/interceptors/header-interceptor/http-header.interceptor.mjs +1 -1
- package/esm2022/lib/models/EmployerDetailSearchResult.mjs +1 -1
- package/esm2022/lib/models/ErrorModel.mjs +1 -1
- package/esm2022/lib/models/FileModel.mjs +1 -1
- package/esm2022/lib/models/LexisNexisAccountCreationModel.mjs +2 -0
- package/esm2022/lib/models/LexisNexisAuthSelectionRequestModel.mjs +2 -0
- package/esm2022/lib/models/LexisNexisAuthSelectionResponseModel.mjs +2 -0
- package/esm2022/lib/models/LexisNexisResponseModel.mjs +3 -0
- package/esm2022/lib/models/LibConstants.mjs +15 -12
- package/esm2022/lib/models/NotificationModel.mjs +1 -1
- package/esm2022/lib/models/OtpAuthModel.mjs +1 -1
- package/esm2022/lib/models/PartialEmploymentModel.mjs +3 -0
- package/esm2022/lib/models/PaymentComponentModel.mjs +1 -1
- package/esm2022/lib/models/SecurityQuestionModel.mjs +3 -0
- package/esm2022/lib/models/TrendModel.mjs +1 -1
- package/esm2022/lib/models/UserDetailsModel.mjs +1 -1
- package/esm2022/lib/models/UserModel.mjs +1 -1
- package/esm2022/lib/models/claimant/ClaimantModel.mjs +1 -1
- package/esm2022/lib/models/claimant/JobResultsData.mjs +1 -1
- package/esm2022/lib/models/claimant/MatchingJobs.mjs +1 -1
- package/esm2022/lib/models/claimant/ResetPasswordModel.mjs +1 -1
- package/esm2022/lib/models/dependent.model.mjs +1 -1
- package/esm2022/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +1 -1
- package/esm2022/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +1 -2
- package/esm2022/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +1 -1
- package/esm2022/lib/models/questionnaire/ComboModel.mjs +175 -73
- package/esm2022/lib/models/questionnaire/ElementsModel.mjs +1 -1
- package/esm2022/lib/models/questionnaire/KeyValueModel.mjs +1 -1
- package/esm2022/lib/models/questionnaire/LegalDiscaimarModel.mjs +1 -1
- package/esm2022/lib/models/questionnaire/StatusModel.mjs +1 -1
- package/esm2022/lib/ngx-reusa-app-lib.component.mjs +5 -5
- package/esm2022/lib/ngx-reusa-app-lib.module.mjs +13 -27
- package/esm2022/lib/ngx-reusa-app-lib.service.mjs +1 -1
- package/esm2022/lib/pages/BasePage.mjs +22 -3
- package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +18 -22
- package/esm2022/lib/pages/common/change-password/change-password.page.mjs +124 -142
- package/esm2022/lib/pages/common/landing/landing.component.mjs +8 -7
- package/esm2022/lib/pages/common/landing2/landing2.component.mjs +4 -4
- package/esm2022/lib/pages/common/login/login.component.mjs +5 -5
- package/esm2022/lib/pages/common/not-found/not-found.page.mjs +1 -1
- package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +14 -14
- package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +5 -5
- package/esm2022/lib/pages/common/unauthorized/unauthorized.page.mjs +1 -1
- package/esm2022/lib/pages/popovers/language/language.page.mjs +1 -1
- package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +1 -1
- package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +1 -1
- package/esm2022/lib/pages/popovers/user-search/user-search.component.mjs +1 -1
- package/esm2022/lib/pipes/filter.pipe.mjs +1 -1
- package/esm2022/lib/pipes/mask/mask.email.pipe.mjs +1 -1
- package/esm2022/lib/pipes/proper-case/proper-case.pipe.mjs +1 -1
- package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +1 -1
- package/esm2022/lib/pipes/trust-html/trust-html.pipe.mjs +1 -1
- package/esm2022/lib/services/base-service.mjs +1 -1
- package/esm2022/lib/services/captcha/captcha.service.mjs +1 -1
- package/esm2022/lib/services/chatbot/chatbot.service.mjs +2 -1
- package/esm2022/lib/services/chatbot/script.const.mjs +1 -1
- package/esm2022/lib/services/claimant/claimant.service.mjs +1 -1
- package/esm2022/lib/services/claimant-service/claimant-usps-redirect.service.mjs +36 -0
- package/esm2022/lib/services/claimant-service/claimant.service.mjs +13 -1
- package/esm2022/lib/services/claims/claims.service.mjs +14 -57
- package/esm2022/lib/services/dms-service/dms.service.mjs +1 -1
- package/esm2022/lib/services/fpjs/fingerprint.service.mjs +1 -1
- package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +1 -1
- package/esm2022/lib/services/help/help.service.mjs +1 -1
- package/esm2022/lib/services/idle/idle.service.mjs +1 -1
- package/esm2022/lib/services/lexis-nexis/lexis.nexis.service.mjs +49 -0
- package/esm2022/lib/services/logger/logger.service.mjs +1 -1
- package/esm2022/lib/services/login/login.service.mjs +11 -1
- package/esm2022/lib/services/maintenance/maintenance.service.mjs +1 -1
- package/esm2022/lib/services/notification/notification.service.mjs +1 -1
- package/esm2022/lib/services/ovp/ovp.service.mjs +43 -0
- package/esm2022/lib/services/questionnaire/questionnaire.service.mjs +1 -4
- package/esm2022/lib/services/questionnaire/validation.service.mjs +1 -4
- package/esm2022/lib/services/security-service/security.service.mjs +6 -5
- package/esm2022/lib/services/tour/tour.service.mjs +1 -1
- package/esm2022/lib/services/util/util.service.mjs +5 -5
- package/esm2022/lib/services/weekly-cert/weekly-cert-v2.service.mjs +42 -0
- package/esm2022/lib/validations/AppRegex.mjs +1 -1
- package/esm2022/lib/validations/AppValidators.mjs +14 -34
- package/esm2022/public-api.mjs +5 -16
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs +7479 -10431
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
- package/lib/components/add-employer/add-employer.component.d.ts +48 -77
- package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
- package/lib/components/add-payment/add-payment.component.d.ts +2 -7
- package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
- package/lib/components/address/address.component.d.ts +3 -2
- package/lib/components/address/address.component.d.ts.map +1 -1
- package/lib/components/email-update/email-update.component.d.ts +7 -1
- package/lib/components/email-update/email-update.component.d.ts.map +1 -1
- package/lib/components/employer-grid/employer-grid.component.d.ts +3 -1
- package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
- package/lib/components/error/error.component.d.ts +2 -3
- package/lib/components/error/error.component.d.ts.map +1 -1
- package/lib/components/footer/footer.component.d.ts.map +1 -1
- package/lib/components/header/header.component.d.ts +0 -1
- package/lib/components/header/header.component.d.ts.map +1 -1
- package/lib/components/job-title/job-title.component.d.ts +21 -22
- package/lib/components/job-title/job-title.component.d.ts.map +1 -1
- package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +2 -5
- package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
- package/lib/components/lexis-nexis/lexis-nexis.component.d.ts +55 -0
- package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +1 -0
- package/lib/components/menu/menu.component.d.ts.map +1 -1
- package/lib/components/mfa/mfa.component.d.ts +26 -3
- package/lib/components/mfa/mfa.component.d.ts.map +1 -1
- package/lib/components/mfa-popup/mfa-popup.component.d.ts +4 -1
- package/lib/components/mfa-popup/mfa-popup.component.d.ts.map +1 -1
- package/lib/components/mfa2/mfa2.component.d.ts +48 -0
- package/lib/components/mfa2/mfa2.component.d.ts.map +1 -0
- package/lib/components/money-expect/money-expect.component.d.ts +4 -15
- package/lib/components/money-expect/money-expect.component.d.ts.map +1 -1
- package/lib/components/profile/profile.component.d.ts +32 -4
- package/lib/components/profile/profile.component.d.ts.map +1 -1
- package/lib/components/profile-redirect/profile-redirect.component.d.ts +2 -9
- package/lib/components/profile-redirect/profile-redirect.component.d.ts.map +1 -1
- package/lib/components/questionnaire/AppValidators.d.ts +0 -1
- package/lib/components/questionnaire/AppValidators.d.ts.map +1 -1
- package/lib/components/questionnaire/account-success/account-success.page.d.ts +10 -13
- package/lib/components/questionnaire/account-success/account-success.page.d.ts.map +1 -1
- package/lib/components/questionnaire/common-success/common-success.page.d.ts +0 -7
- package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
- package/lib/components/questionnaire/dynamic-form-question.component.d.ts +32 -14
- package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
- package/lib/components/questionnaire/dynamic-form.component.d.ts +24 -3
- package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
- package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +3 -0
- package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -1
- package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +1 -6
- package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -1
- package/lib/components/questionnaire/question-control.service.d.ts.map +1 -1
- package/lib/components/questionnaire/question.service.d.ts +1 -0
- package/lib/components/questionnaire/question.service.d.ts.map +1 -1
- package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +3 -1
- package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -1
- package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +3 -6
- package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts.map +1 -1
- package/lib/components/search-employer/search-employer.component.d.ts +2 -1
- package/lib/components/search-employer/search-employer.component.d.ts.map +1 -1
- package/lib/components/security-question/security-question.component.d.ts +37 -0
- package/lib/components/security-question/security-question.component.d.ts.map +1 -0
- package/lib/components/user-login/user-login.component.d.ts +22 -5
- package/lib/components/user-login/user-login.component.d.ts.map +1 -1
- package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +0 -6
- package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
- package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +0 -1
- package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts.map +1 -1
- package/lib/guards/auth.guard.d.ts +1 -3
- package/lib/guards/auth.guard.d.ts.map +1 -1
- package/lib/models/EmployerDetailSearchResult.d.ts +1 -3
- package/lib/models/EmployerDetailSearchResult.d.ts.map +1 -1
- package/lib/models/LexisNexisAccountCreationModel.d.ts +15 -0
- package/lib/models/LexisNexisAccountCreationModel.d.ts.map +1 -0
- package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts +16 -0
- package/lib/models/LexisNexisAuthSelectionRequestModel.d.ts.map +1 -0
- package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts +39 -0
- package/lib/models/LexisNexisAuthSelectionResponseModel.d.ts.map +1 -0
- package/lib/models/LexisNexisResponseModel.d.ts +7 -0
- package/lib/models/LexisNexisResponseModel.d.ts.map +1 -0
- package/lib/models/LibConstants.d.ts +12 -9
- package/lib/models/LibConstants.d.ts.map +1 -1
- package/lib/models/PartialEmploymentModel.d.ts +6 -0
- package/lib/models/PartialEmploymentModel.d.ts.map +1 -0
- package/lib/models/PaymentComponentModel.d.ts +1 -1
- package/lib/models/PaymentComponentModel.d.ts.map +1 -1
- package/lib/models/SecurityQuestionModel.d.ts +7 -0
- package/lib/models/SecurityQuestionModel.d.ts.map +1 -0
- package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +0 -1
- package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts.map +1 -1
- package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +3 -13
- package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts.map +1 -1
- package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +1 -2
- package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts.map +1 -1
- package/lib/models/questionnaire/ComboModel.d.ts +16 -20
- package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
- package/lib/models/questionnaire/ElementsModel.d.ts +1 -0
- package/lib/models/questionnaire/ElementsModel.d.ts.map +1 -1
- package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +0 -2
- package/lib/models/questionnaire/LegalDiscaimarModel.d.ts.map +1 -1
- package/lib/models/questionnaire/StatusModel.d.ts +0 -1
- package/lib/models/questionnaire/StatusModel.d.ts.map +1 -1
- package/lib/ngx-reusa-app-lib.module.d.ts +86 -95
- package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -1
- package/lib/pages/BasePage.d.ts +6 -3
- package/lib/pages/BasePage.d.ts.map +1 -1
- package/lib/pages/common/change-password/change-password.page.d.ts +0 -3
- package/lib/pages/common/change-password/change-password.page.d.ts.map +1 -1
- package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts +16 -0
- package/lib/services/claimant-service/claimant-usps-redirect.service.d.ts.map +1 -0
- package/lib/services/claimant-service/claimant.service.d.ts +5 -0
- package/lib/services/claimant-service/claimant.service.d.ts.map +1 -1
- package/lib/services/claims/claims.service.d.ts +5 -24
- package/lib/services/claims/claims.service.d.ts.map +1 -1
- package/lib/services/lexis-nexis/lexis.nexis.service.d.ts +23 -0
- package/lib/services/lexis-nexis/lexis.nexis.service.d.ts.map +1 -0
- package/lib/services/login/login.service.d.ts +3 -0
- package/lib/services/login/login.service.d.ts.map +1 -1
- package/lib/services/ovp/ovp.service.d.ts +17 -0
- package/lib/services/ovp/ovp.service.d.ts.map +1 -0
- package/lib/services/questionnaire/questionnaire.service.d.ts +0 -1
- package/lib/services/questionnaire/questionnaire.service.d.ts.map +1 -1
- package/lib/services/questionnaire/validation.service.d.ts +0 -3
- package/lib/services/questionnaire/validation.service.d.ts.map +1 -1
- package/lib/services/security-service/security.service.d.ts +4 -5
- package/lib/services/security-service/security.service.d.ts.map +1 -1
- package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts +17 -0
- package/lib/services/weekly-cert/weekly-cert-v2.service.d.ts.map +1 -0
- package/lib/validations/AppValidators.d.ts +3 -7
- package/lib/validations/AppValidators.d.ts.map +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +4 -15
- package/public-api.d.ts.map +1 -1
- package/esm2022/lib/components/add-wage/add-wage.component.mjs +0 -160
- package/esm2022/lib/components/associate-ssn/associate-ssn.component.mjs +0 -174
- package/esm2022/lib/components/dua-request-popup/dua-request-popup.component.mjs +0 -335
- package/esm2022/lib/components/employer-info/employer-info.component.mjs +0 -326
- package/esm2022/lib/components/employer-pay/employer-pay.component.mjs +0 -243
- package/esm2022/lib/components/employer-pay-grid/employer-pay-grid.component.mjs +0 -302
- package/esm2022/lib/components/farm-usage/farm-usage.component.mjs +0 -172
- package/esm2022/lib/components/gross-earnings/gross-earnings.component.mjs +0 -179
- package/esm2022/lib/components/idme/idme.component.mjs +0 -80
- package/esm2022/lib/components/scrollable-text/scrollable-text.component.mjs +0 -25
- package/esm2022/lib/components/sms/sms.component.mjs +0 -334
- package/esm2022/lib/components/wage-grid/wage-grid.component.mjs +0 -274
- package/esm2022/lib/models/CountyModel.mjs +0 -3
- package/esm2022/lib/models/DuaRequestModel.mjs +0 -3
- package/esm2022/lib/models/DuaRetroWeeksComponentModel.mjs +0 -6
- package/esm2022/lib/models/EmployerInfoComponentModel.mjs +0 -4
- package/esm2022/lib/models/EmployerPayInfoModel.mjs +0 -6
- package/esm2022/lib/models/FarmUsageComponentModel.mjs +0 -2
- package/esm2022/lib/models/GrossEarningsModel.mjs +0 -3
- package/esm2022/lib/models/LexisNexisOtpDetailsResponseModel.mjs +0 -3
- package/esm2022/lib/models/ReasonSeparationRequestModel.mjs +0 -3
- package/esm2022/lib/models/RetroWeeksModel.mjs +0 -3
- package/esm2022/lib/models/SendOtpRequestModel.mjs +0 -3
- package/esm2022/lib/models/VerifyOtpRequestModel.mjs +0 -3
- package/esm2022/lib/models/WageInfoModel.mjs +0 -4
- package/esm2022/lib/models/questionnaire/ScrollableTextModel.mjs +0 -3
- package/esm2022/lib/models/questionnaire/WbaHelperTextModel.mjs +0 -3
- package/esm2022/lib/services/employer/employer-service.mjs +0 -35
- package/lib/components/add-wage/add-wage.component.d.ts +0 -29
- package/lib/components/add-wage/add-wage.component.d.ts.map +0 -1
- package/lib/components/associate-ssn/associate-ssn.component.d.ts +0 -28
- package/lib/components/associate-ssn/associate-ssn.component.d.ts.map +0 -1
- package/lib/components/dua-request-popup/dua-request-popup.component.d.ts +0 -59
- package/lib/components/dua-request-popup/dua-request-popup.component.d.ts.map +0 -1
- package/lib/components/employer-info/employer-info.component.d.ts +0 -48
- package/lib/components/employer-info/employer-info.component.d.ts.map +0 -1
- package/lib/components/employer-pay/employer-pay.component.d.ts +0 -51
- package/lib/components/employer-pay/employer-pay.component.d.ts.map +0 -1
- package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts +0 -43
- package/lib/components/employer-pay-grid/employer-pay-grid.component.d.ts.map +0 -1
- package/lib/components/farm-usage/farm-usage.component.d.ts +0 -33
- package/lib/components/farm-usage/farm-usage.component.d.ts.map +0 -1
- package/lib/components/gross-earnings/gross-earnings.component.d.ts +0 -37
- package/lib/components/gross-earnings/gross-earnings.component.d.ts.map +0 -1
- package/lib/components/idme/idme.component.d.ts +0 -19
- package/lib/components/idme/idme.component.d.ts.map +0 -1
- package/lib/components/scrollable-text/scrollable-text.component.d.ts +0 -11
- package/lib/components/scrollable-text/scrollable-text.component.d.ts.map +0 -1
- package/lib/components/sms/sms.component.d.ts +0 -63
- package/lib/components/sms/sms.component.d.ts.map +0 -1
- package/lib/components/wage-grid/wage-grid.component.d.ts +0 -43
- package/lib/components/wage-grid/wage-grid.component.d.ts.map +0 -1
- package/lib/models/CountyModel.d.ts +0 -8
- package/lib/models/CountyModel.d.ts.map +0 -1
- package/lib/models/DuaRequestModel.d.ts +0 -10
- package/lib/models/DuaRequestModel.d.ts.map +0 -1
- package/lib/models/DuaRetroWeeksComponentModel.d.ts +0 -5
- package/lib/models/DuaRetroWeeksComponentModel.d.ts.map +0 -1
- package/lib/models/EmployerInfoComponentModel.d.ts +0 -9
- package/lib/models/EmployerInfoComponentModel.d.ts.map +0 -1
- package/lib/models/EmployerPayInfoModel.d.ts +0 -20
- package/lib/models/EmployerPayInfoModel.d.ts.map +0 -1
- package/lib/models/FarmUsageComponentModel.d.ts +0 -10
- package/lib/models/FarmUsageComponentModel.d.ts.map +0 -1
- package/lib/models/GrossEarningsModel.d.ts +0 -6
- package/lib/models/GrossEarningsModel.d.ts.map +0 -1
- package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts +0 -7
- package/lib/models/LexisNexisOtpDetailsResponseModel.d.ts.map +0 -1
- package/lib/models/ReasonSeparationRequestModel.d.ts +0 -7
- package/lib/models/ReasonSeparationRequestModel.d.ts.map +0 -1
- package/lib/models/RetroWeeksModel.d.ts +0 -10
- package/lib/models/RetroWeeksModel.d.ts.map +0 -1
- package/lib/models/SendOtpRequestModel.d.ts +0 -12
- package/lib/models/SendOtpRequestModel.d.ts.map +0 -1
- package/lib/models/VerifyOtpRequestModel.d.ts +0 -8
- package/lib/models/VerifyOtpRequestModel.d.ts.map +0 -1
- package/lib/models/WageInfoModel.d.ts +0 -9
- package/lib/models/WageInfoModel.d.ts.map +0 -1
- package/lib/models/questionnaire/ScrollableTextModel.d.ts +0 -4
- package/lib/models/questionnaire/ScrollableTextModel.d.ts.map +0 -1
- package/lib/models/questionnaire/WbaHelperTextModel.d.ts +0 -4
- package/lib/models/questionnaire/WbaHelperTextModel.d.ts.map +0 -1
- package/lib/services/employer/employer-service.d.ts +0 -16
- package/lib/services/employer/employer-service.d.ts.map +0 -1
|
@@ -2,11 +2,11 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewCh
|
|
|
2
2
|
import { Validators } from '@angular/forms';
|
|
3
3
|
import { QuestionControlService } from './question-control.service';
|
|
4
4
|
import { AppValidators } from './AppValidators';
|
|
5
|
-
import { QuestionService } from './question.service';
|
|
6
5
|
import { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';
|
|
7
6
|
import { ClaimAppEmployerDetailsModel } from '../../models/questionnaire/ClaimAppEmployerDetailsModel';
|
|
8
7
|
import { BasePage } from '../../pages/BasePage';
|
|
9
8
|
import { FbConstants } from './FbConstants';
|
|
9
|
+
import { HttpParams } from '@angular/common/http';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "./question.service";
|
|
12
12
|
import * as i2 from "../../services/questionnaire/questionnaire.service";
|
|
@@ -20,120 +20,119 @@ import * as i9 from "@angular/router";
|
|
|
20
20
|
import * as i10 from "@ionic/storage-angular";
|
|
21
21
|
import * as i11 from "../../services/login/login.service";
|
|
22
22
|
import * as i12 from "../../services/captcha/captcha.service";
|
|
23
|
-
import * as i13 from "
|
|
24
|
-
import * as i14 from "@angular/
|
|
25
|
-
import * as i15 from "@angular/
|
|
26
|
-
import * as i16 from "@angular/material/
|
|
27
|
-
import * as i17 from "
|
|
28
|
-
import * as i18 from "
|
|
29
|
-
import * as i19 from "
|
|
30
|
-
import * as i20 from "./
|
|
31
|
-
import * as i21 from "
|
|
32
|
-
import * as i22 from "
|
|
23
|
+
import * as i13 from "../../services/lexis-nexis/lexis.nexis.service";
|
|
24
|
+
import * as i14 from "@angular/common";
|
|
25
|
+
import * as i15 from "@angular/forms";
|
|
26
|
+
import * as i16 from "@angular/material/stepper";
|
|
27
|
+
import * as i17 from "@angular/material/button";
|
|
28
|
+
import * as i18 from "primeng/blockui";
|
|
29
|
+
import * as i19 from "../mfa/mfa.component";
|
|
30
|
+
import * as i20 from "./dynamic-form-question.component";
|
|
31
|
+
import * as i21 from "./input-focus.directive";
|
|
32
|
+
import * as i22 from "../lexis-nexis/lexis-nexis.component";
|
|
33
|
+
import * as i23 from "../../pipes/translate/dynamic-translate.pipe";
|
|
34
|
+
import * as i24 from "../../pipes/trust-html/trust-html.pipe";
|
|
33
35
|
const _c0 = ["mfa"];
|
|
34
36
|
const _c1 = ["questionnaireForm"];
|
|
35
37
|
const _c2 = ["matHorizontalStepper"];
|
|
36
38
|
function DynamicFormComponent_div_2_ion_row_5_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
-
i0.ɵɵelementStart(0, "ion-row")(1, "ion-col",
|
|
38
|
-
i0.ɵɵelement(3, "div",
|
|
39
|
+
i0.ɵɵelementStart(0, "ion-row")(1, "ion-col", 13)(2, "div", 14);
|
|
40
|
+
i0.ɵɵelement(3, "div", 15);
|
|
39
41
|
i0.ɵɵpipe(4, "trustHtml");
|
|
40
42
|
i0.ɵɵpipe(5, "dynamicTranslate");
|
|
41
43
|
i0.ɵɵelementEnd()()();
|
|
42
44
|
} if (rf & 2) {
|
|
43
|
-
const
|
|
45
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
44
46
|
i0.ɵɵadvance(1);
|
|
45
|
-
i0.ɵɵproperty("sizeXs",
|
|
47
|
+
i0.ɵɵproperty("sizeXs", ctx_r5.sizeXs)("sizeSm", ctx_r5.sizeSm)("sizeMd", ctx_r5.sizeMd)("sizeLg", ctx_r5.sizeLg)("sizeXl", ctx_r5.sizeXl)("offsetXs", ctx_r5.offsetXs)("offsetSm", ctx_r5.offsetSm)("offsetMd", ctx_r5.offsetMd)("offsetLg", ctx_r5.offsetLg)("offsetXl", ctx_r5.offsetXl);
|
|
46
48
|
i0.ɵɵadvance(2);
|
|
47
|
-
i0.ɵɵproperty("innerHtml", i0.ɵɵpipeBind1(4, 12, i0.ɵɵpipeBind2(5, 14, (
|
|
49
|
+
i0.ɵɵproperty("innerHtml", i0.ɵɵpipeBind1(4, 12, i0.ɵɵpipeBind2(5, 14, (ctx_r5.questionNumber ? ctx_r5.questionNumber + " " : "") + ctx_r5.questions[0].pages[ctx_r5.activeIndex].name, ctx_r5.dynamicParam)), i0.ɵɵsanitizeHtml)("ngClass", ctx_r5.multiMode ? "fb-heading-followup" : "fb-heading");
|
|
48
50
|
} }
|
|
49
51
|
function DynamicFormComponent_div_2_ng_container_9_ng_container_1_ion_row_1_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
-
i0.ɵɵelementStart(0, "ion-row")(1, "div",
|
|
52
|
+
i0.ɵɵelementStart(0, "ion-row")(1, "div", 16);
|
|
51
53
|
i0.ɵɵtext(2);
|
|
52
54
|
i0.ɵɵelementEnd()();
|
|
53
55
|
} if (rf & 2) {
|
|
54
|
-
const
|
|
56
|
+
const element_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
55
57
|
i0.ɵɵadvance(2);
|
|
56
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
58
|
+
i0.ɵɵtextInterpolate1(" ", element_r9.title, " ");
|
|
57
59
|
} }
|
|
58
|
-
function
|
|
59
|
-
const
|
|
60
|
-
i0.ɵɵelementStart(0, "
|
|
61
|
-
i0.ɵɵlistener("onDynamicParamUpdate", function
|
|
60
|
+
function DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
62
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "app-question", 19);
|
|
63
|
+
i0.ɵɵlistener("onDynamicParamUpdate", function DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_div_1_Template_app_question_onDynamicParamUpdate_1_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r18.updateDynamicParam($event)); });
|
|
62
64
|
i0.ɵɵelementEnd()();
|
|
63
65
|
} if (rf & 2) {
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
const ctx_r16 = i0.ɵɵnextContext(2);
|
|
67
|
-
i0.ɵɵproperty("sizeXl", panelElement_r15.sizeXL ? panelElement_r15.sizeXL : 3)("sizeLg", panelElement_r15.sizeLG ? panelElement_r15.sizeLG : 3)("sizeSm", panelElement_r15.sizeSM ? panelElement_r15.sizeSM : 12)("sizeXs", panelElement_r15.sizeXS ? panelElement_r15.sizeXS : 12)("sizeMd", panelElement_r15.sizeMD ? panelElement_r15.sizeMD : 4)("ngClass", ctx_r16.shouldFitContent(element_r8.elements) ? "col-fit-content" : "");
|
|
66
|
+
const panelElement_r16 = i0.ɵɵnextContext().$implicit;
|
|
67
|
+
const ctx_r17 = i0.ɵɵnextContext(4);
|
|
68
68
|
i0.ɵɵadvance(1);
|
|
69
|
-
i0.ɵɵproperty("potentialIssueId",
|
|
69
|
+
i0.ɵɵproperty("potentialIssueId", ctx_r17.potentialIssueId)("question", panelElement_r16)("form", ctx_r17.formGroupArray[ctx_r17.activeIndex])("forScreenQuestionnaire", ctx_r17.forScreenQuestionnaire)("dynamicParam", ctx_r17.dynamicParam);
|
|
70
70
|
} }
|
|
71
71
|
function DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
72
72
|
i0.ɵɵelementContainerStart(0);
|
|
73
|
-
i0.ɵɵtemplate(1,
|
|
73
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_div_1_Template, 2, 5, "div", 17);
|
|
74
74
|
i0.ɵɵelementContainerEnd();
|
|
75
75
|
} if (rf & 2) {
|
|
76
|
-
const
|
|
77
|
-
const
|
|
76
|
+
const panelElement_r16 = ctx.$implicit;
|
|
77
|
+
const ctx_r14 = i0.ɵɵnextContext(4);
|
|
78
78
|
i0.ɵɵadvance(1);
|
|
79
|
-
i0.ɵɵproperty("ngIf",
|
|
79
|
+
i0.ɵɵproperty("ngIf", panelElement_r16.colElement === "COL1" && ctx_r14.visibleIf(panelElement_r16.visibleIf, panelElement_r16.name, ctx_r14.formGroupArray[ctx_r14.activeIndex], panelElement_r16));
|
|
80
80
|
} }
|
|
81
81
|
function DynamicFormComponent_div_2_ng_container_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
82
82
|
i0.ɵɵelementContainerStart(0);
|
|
83
83
|
i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_9_ng_container_1_ion_row_1_Template, 3, 1, "ion-row", 2);
|
|
84
84
|
i0.ɵɵelementStart(2, "ion-row");
|
|
85
|
-
i0.ɵɵtemplate(3, DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_Template, 2, 1, "ng-container",
|
|
85
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_div_2_ng_container_9_ng_container_1_ng_container_3_Template, 2, 1, "ng-container", 10);
|
|
86
86
|
i0.ɵɵelementEnd();
|
|
87
87
|
i0.ɵɵelementContainerEnd();
|
|
88
88
|
} if (rf & 2) {
|
|
89
|
-
const
|
|
90
|
-
const
|
|
89
|
+
const element_r9 = i0.ɵɵnextContext().$implicit;
|
|
90
|
+
const ctx_r11 = i0.ɵɵnextContext(2);
|
|
91
91
|
i0.ɵɵadvance(1);
|
|
92
|
-
i0.ɵɵproperty("ngIf",
|
|
92
|
+
i0.ɵɵproperty("ngIf", ctx_r11.visibleIf(element_r9.visibleIf, "", ctx_r11.formGroupArray[ctx_r11.activeIndex], element_r9));
|
|
93
93
|
i0.ɵɵadvance(2);
|
|
94
|
-
i0.ɵɵproperty("ngForOf",
|
|
94
|
+
i0.ɵɵproperty("ngForOf", element_r9.elements);
|
|
95
95
|
} }
|
|
96
96
|
function DynamicFormComponent_div_2_ng_container_9_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
97
97
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
98
98
|
i0.ɵɵelementContainerStart(0);
|
|
99
|
-
i0.ɵɵelementStart(1, "ion-row")(2, "ion-col",
|
|
99
|
+
i0.ɵɵelementStart(1, "ion-row")(2, "ion-col", 20)(3, "app-question", 19);
|
|
100
100
|
i0.ɵɵlistener("onDynamicParamUpdate", function DynamicFormComponent_div_2_ng_container_9_ng_container_2_Template_app_question_onDynamicParamUpdate_3_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r22.updateDynamicParam($event)); });
|
|
101
101
|
i0.ɵɵelementEnd()()();
|
|
102
102
|
i0.ɵɵelementContainerEnd();
|
|
103
103
|
} if (rf & 2) {
|
|
104
|
-
const
|
|
105
|
-
const
|
|
104
|
+
const element_r9 = i0.ɵɵnextContext().$implicit;
|
|
105
|
+
const ctx_r12 = i0.ɵɵnextContext(2);
|
|
106
106
|
i0.ɵɵadvance(2);
|
|
107
|
-
i0.ɵɵproperty("sizeLg",
|
|
107
|
+
i0.ɵɵproperty("sizeLg", element_r9.sizeLG > 0 ? element_r9.sizeLG : "")("sizeSm", element_r9.sizeSM)("sizeXs", element_r9.sizeXS)("sizeXl", element_r9.sizeXL > 0 ? element_r9.sizeXL : "")("sizeMd", element_r9.sizeMD > 0 ? element_r9.sizeMD : "");
|
|
108
108
|
i0.ɵɵadvance(1);
|
|
109
|
-
i0.ɵɵproperty("potentialIssueId",
|
|
109
|
+
i0.ɵɵproperty("potentialIssueId", ctx_r12.potentialIssueId)("question", element_r9)("form", ctx_r12.formGroupArray[ctx_r12.activeIndex])("forScreenQuestionnaire", ctx_r12.forScreenQuestionnaire)("dynamicParam", ctx_r12.dynamicParam);
|
|
110
110
|
} }
|
|
111
111
|
function DynamicFormComponent_div_2_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
|
112
112
|
i0.ɵɵelementContainerStart(0);
|
|
113
113
|
i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_9_ng_container_1_Template, 4, 2, "ng-container", 2)(2, DynamicFormComponent_div_2_ng_container_9_ng_container_2_Template, 4, 10, "ng-container", 2);
|
|
114
114
|
i0.ɵɵelementContainerEnd();
|
|
115
115
|
} if (rf & 2) {
|
|
116
|
-
const
|
|
117
|
-
const
|
|
116
|
+
const element_r9 = ctx.$implicit;
|
|
117
|
+
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
118
118
|
i0.ɵɵadvance(1);
|
|
119
|
-
i0.ɵɵproperty("ngIf",
|
|
119
|
+
i0.ɵɵproperty("ngIf", element_r9.type === "panel");
|
|
120
120
|
i0.ɵɵadvance(1);
|
|
121
|
-
i0.ɵɵproperty("ngIf",
|
|
121
|
+
i0.ɵɵproperty("ngIf", element_r9.type != "panel" && element_r9.type != "hidden" && ctx_r6.visibleIf(element_r9.visibleIf, element_r9.name, ctx_r6.formGroupArray[ctx_r6.activeIndex], element_r9));
|
|
122
122
|
} }
|
|
123
|
-
function
|
|
124
|
-
i0.ɵɵelementStart(0, "
|
|
125
|
-
i0.ɵɵelement(2, "panel-app",
|
|
123
|
+
function DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
124
|
+
i0.ɵɵelementStart(0, "div")(1, "div");
|
|
125
|
+
i0.ɵɵelement(2, "panel-app", 21);
|
|
126
126
|
i0.ɵɵelementEnd()();
|
|
127
127
|
} if (rf & 2) {
|
|
128
128
|
const panelElement_r29 = i0.ɵɵnextContext().$implicit;
|
|
129
129
|
const ctx_r30 = i0.ɵɵnextContext(4);
|
|
130
|
-
i0.ɵɵproperty("sizeSm", panelElement_r29.sizeSM)("sizeXs", panelElement_r29.sizeXS)("sizeLg", panelElement_r29.sizeLG > 0 ? panelElement_r29.sizeLG : "")("sizeXl", panelElement_r29.sizeXL > 0 ? panelElement_r29.sizeXL : "")("sizeMd", panelElement_r29.sizeMD > 0 ? panelElement_r29.sizeMD : "");
|
|
131
130
|
i0.ɵɵadvance(2);
|
|
132
131
|
i0.ɵɵproperty("question", panelElement_r29)("form", ctx_r30.formGroupArray[ctx_r30.activeIndex])("forScreenQuestionnaire", ctx_r30.forScreenQuestionnaire);
|
|
133
132
|
} }
|
|
134
|
-
function
|
|
133
|
+
function DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
135
134
|
i0.ɵɵelementContainerStart(0);
|
|
136
|
-
i0.ɵɵtemplate(1,
|
|
135
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_1_div_1_Template, 3, 3, "div", 2);
|
|
137
136
|
i0.ɵɵelementContainerEnd();
|
|
138
137
|
} if (rf & 2) {
|
|
139
138
|
const panelElement_r29 = ctx.$implicit;
|
|
@@ -143,54 +142,52 @@ function DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_
|
|
|
143
142
|
} }
|
|
144
143
|
function DynamicFormComponent_div_2_ng_container_12_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
145
144
|
i0.ɵɵelementContainerStart(0);
|
|
146
|
-
i0.ɵɵ
|
|
147
|
-
i0.ɵɵtemplate(2, DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_2_Template, 2, 1, "ng-container", 9);
|
|
148
|
-
i0.ɵɵelementEnd();
|
|
145
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_12_ng_container_1_ng_container_1_Template, 2, 1, "ng-container", 10);
|
|
149
146
|
i0.ɵɵelementContainerEnd();
|
|
150
147
|
} if (rf & 2) {
|
|
151
148
|
const element_r25 = i0.ɵɵnextContext().$implicit;
|
|
152
|
-
i0.ɵɵadvance(
|
|
149
|
+
i0.ɵɵadvance(1);
|
|
153
150
|
i0.ɵɵproperty("ngForOf", element_r25.elements);
|
|
154
151
|
} }
|
|
155
152
|
function DynamicFormComponent_div_2_ng_container_12_Template(rf, ctx) { if (rf & 1) {
|
|
156
153
|
i0.ɵɵelementContainerStart(0);
|
|
157
|
-
i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_12_ng_container_1_Template,
|
|
154
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ng_container_12_ng_container_1_Template, 2, 1, "ng-container", 2);
|
|
158
155
|
i0.ɵɵelementContainerEnd();
|
|
159
156
|
} if (rf & 2) {
|
|
160
157
|
const element_r25 = ctx.$implicit;
|
|
161
|
-
const
|
|
158
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
162
159
|
i0.ɵɵadvance(1);
|
|
163
|
-
i0.ɵɵproperty("ngIf",
|
|
160
|
+
i0.ɵɵproperty("ngIf", ctx_r7.visibleIf(element_r25.visibleIf, "", ctx_r7.formGroupArray[ctx_r7.activeIndex], element_r25));
|
|
164
161
|
} }
|
|
165
162
|
function DynamicFormComponent_div_2_ion_footer_13_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
166
163
|
const _r38 = i0.ɵɵgetCurrentView();
|
|
167
|
-
i0.ɵɵelementStart(0, "div",
|
|
164
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "div", 25)(2, "div", 26)(3, "ion-button", 27);
|
|
168
165
|
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_1_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r37.cancelAction()); });
|
|
169
166
|
i0.ɵɵtext(4, " Cancel ");
|
|
170
167
|
i0.ɵɵelementEnd()();
|
|
171
|
-
i0.ɵɵelementStart(5, "div",
|
|
168
|
+
i0.ɵɵelementStart(5, "div", 28)(6, "ion-button", 29);
|
|
172
169
|
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_1_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r38); const ctx_r39 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r39.complete()); });
|
|
173
170
|
i0.ɵɵtext(7, " Next ");
|
|
174
171
|
i0.ɵɵelementEnd()()()();
|
|
175
172
|
} }
|
|
176
173
|
function DynamicFormComponent_div_2_ion_footer_13_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
177
174
|
const _r41 = i0.ɵɵgetCurrentView();
|
|
178
|
-
i0.ɵɵelementStart(0, "div",
|
|
175
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "div", 25)(2, "div", 26)(3, "ion-button", 27);
|
|
179
176
|
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_2_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r41); const ctx_r40 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r40.cancelAction()); });
|
|
180
177
|
i0.ɵɵtext(4, " Cancel ");
|
|
181
178
|
i0.ɵɵelementEnd()();
|
|
182
|
-
i0.ɵɵelementStart(5, "div",
|
|
179
|
+
i0.ɵɵelementStart(5, "div", 28)(6, "ion-button", 29);
|
|
183
180
|
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_2_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r41); const ctx_r42 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r42.complete()); });
|
|
184
181
|
i0.ɵɵtext(7, " Done ");
|
|
185
182
|
i0.ɵɵelementEnd()()()();
|
|
186
183
|
} }
|
|
187
184
|
function DynamicFormComponent_div_2_ion_footer_13_ion_grid_3_Template(rf, ctx) { if (rf & 1) {
|
|
188
185
|
const _r44 = i0.ɵɵgetCurrentView();
|
|
189
|
-
i0.ɵɵelementStart(0, "ion-grid")(1, "ion-row")(2, "ion-col",
|
|
186
|
+
i0.ɵɵelementStart(0, "ion-grid")(1, "ion-row")(2, "ion-col", 30)(3, "ion-button", 27);
|
|
190
187
|
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_ion_grid_3_Template_ion_button_click_3_listener() { i0.ɵɵrestoreView(_r44); const ctx_r43 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r43.cancelPopUp()); });
|
|
191
188
|
i0.ɵɵtext(4, " Cancel ");
|
|
192
189
|
i0.ɵɵelementEnd()();
|
|
193
|
-
i0.ɵɵelementStart(5, "ion-col",
|
|
190
|
+
i0.ɵɵelementStart(5, "ion-col", 31)(6, "ion-button", 29);
|
|
194
191
|
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_ion_grid_3_Template_ion_button_click_6_listener() { i0.ɵɵrestoreView(_r44); const ctx_r45 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r45.complete()); });
|
|
195
192
|
i0.ɵɵtext(7, " Add ");
|
|
196
193
|
i0.ɵɵelementEnd()()()();
|
|
@@ -204,61 +201,62 @@ function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_ng_template_2
|
|
|
204
201
|
} }
|
|
205
202
|
function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_3_Template(rf, ctx) { if (rf & 1) {
|
|
206
203
|
const _r58 = i0.ɵɵgetCurrentView();
|
|
207
|
-
i0.ɵɵelementStart(0, "div")(1, "button",
|
|
204
|
+
i0.ɵɵelementStart(0, "div")(1, "button", 37);
|
|
205
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r58); const ctx_r57 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r57.navCtrl.navigateRoot("claimant-induction")); });
|
|
208
206
|
i0.ɵɵtext(2, "Back");
|
|
209
207
|
i0.ɵɵelementEnd();
|
|
210
|
-
i0.ɵɵelementStart(3, "button",
|
|
211
|
-
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_3_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r58); const
|
|
208
|
+
i0.ɵɵelementStart(3, "button", 38);
|
|
209
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_3_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r58); const ctx_r59 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r59.nextPage(ctx_r59.activeIndex)); });
|
|
212
210
|
i0.ɵɵtext(4, "Next");
|
|
213
211
|
i0.ɵɵelementEnd()();
|
|
214
212
|
} }
|
|
215
213
|
function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
216
|
-
const
|
|
217
|
-
i0.ɵɵelementStart(0, "div")(1, "button",
|
|
218
|
-
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
214
|
+
const _r61 = i0.ɵɵgetCurrentView();
|
|
215
|
+
i0.ɵɵelementStart(0, "div")(1, "button", 37);
|
|
216
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r61); const ctx_r60 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r60.cancelAction()); });
|
|
219
217
|
i0.ɵɵtext(2, "Back");
|
|
220
218
|
i0.ɵɵelementEnd();
|
|
221
|
-
i0.ɵɵelementStart(3, "button",
|
|
222
|
-
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
219
|
+
i0.ɵɵelementStart(3, "button", 38);
|
|
220
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r61); const ctx_r62 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r62.complete()); });
|
|
223
221
|
i0.ɵɵtext(4, "Next");
|
|
224
222
|
i0.ɵɵelementEnd()();
|
|
225
223
|
} }
|
|
226
224
|
function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
227
|
-
const
|
|
228
|
-
i0.ɵɵelementStart(0, "div")(1, "button",
|
|
229
|
-
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
225
|
+
const _r64 = i0.ɵɵgetCurrentView();
|
|
226
|
+
i0.ɵɵelementStart(0, "div")(1, "button", 37);
|
|
227
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r64); const ctx_r63 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r63.prevPage(ctx_r63.activeIndex)); });
|
|
230
228
|
i0.ɵɵtext(2, "Back");
|
|
231
229
|
i0.ɵɵelementEnd();
|
|
232
|
-
i0.ɵɵelementStart(3, "button",
|
|
233
|
-
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
230
|
+
i0.ɵɵelementStart(3, "button", 38);
|
|
231
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r64); const ctx_r65 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r65.complete()); });
|
|
234
232
|
i0.ɵɵtext(4, "Done");
|
|
235
233
|
i0.ɵɵelementEnd()();
|
|
236
234
|
} }
|
|
237
235
|
function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
238
|
-
const
|
|
239
|
-
i0.ɵɵelementStart(0, "div")(1, "button",
|
|
240
|
-
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
236
|
+
const _r67 = i0.ɵɵgetCurrentView();
|
|
237
|
+
i0.ɵɵelementStart(0, "div")(1, "button", 39);
|
|
238
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r67); const ctx_r66 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r66.prevPage(ctx_r66.activeIndex)); });
|
|
241
239
|
i0.ɵɵtext(2, "Back");
|
|
242
240
|
i0.ɵɵelementEnd();
|
|
243
|
-
i0.ɵɵelementStart(3, "button",
|
|
244
|
-
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
241
|
+
i0.ɵɵelementStart(3, "button", 38);
|
|
242
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r67); const ctx_r68 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r68.nextPage(ctx_r68.activeIndex)); });
|
|
245
243
|
i0.ɵɵtext(4, "Next");
|
|
246
244
|
i0.ɵɵelementEnd()();
|
|
247
245
|
} }
|
|
248
246
|
function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
249
|
-
const
|
|
250
|
-
i0.ɵɵelementStart(0, "div")(1, "button",
|
|
251
|
-
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(
|
|
247
|
+
const _r70 = i0.ɵɵgetCurrentView();
|
|
248
|
+
i0.ɵɵelementStart(0, "div")(1, "button", 39);
|
|
249
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r70); const ctx_r69 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r69.cancelAction()); });
|
|
252
250
|
i0.ɵɵtext(2, "Back");
|
|
253
251
|
i0.ɵɵelementEnd();
|
|
254
|
-
i0.ɵɵelementStart(3, "button",
|
|
255
|
-
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
252
|
+
i0.ɵɵelementStart(3, "button", 38);
|
|
253
|
+
i0.ɵɵlistener("click", function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r70); const ctx_r71 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r71.nextPage(ctx_r71.activeIndex)); });
|
|
256
254
|
i0.ɵɵtext(4, "Next");
|
|
257
255
|
i0.ɵɵelementEnd()();
|
|
258
256
|
} }
|
|
259
257
|
function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_Template(rf, ctx) { if (rf & 1) {
|
|
260
|
-
i0.ɵɵelementStart(0, "mat-step",
|
|
261
|
-
i0.ɵɵtemplate(2, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_ng_template_2_Template, 1, 1, "ng-template",
|
|
258
|
+
i0.ɵɵelementStart(0, "mat-step", 35)(1, "div");
|
|
259
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_ng_template_2_Template, 1, 1, "ng-template", 36);
|
|
262
260
|
i0.ɵɵelementEnd();
|
|
263
261
|
i0.ɵɵtemplate(3, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_3_Template, 5, 0, "div", 2)(4, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_4_Template, 5, 0, "div", 2)(5, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_5_Template, 5, 0, "div", 2)(6, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_6_Template, 5, 0, "div", 2)(7, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_div_7_Template, 5, 0, "div", 2);
|
|
264
262
|
i0.ɵɵelementEnd();
|
|
@@ -278,10 +276,10 @@ function DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_Template(rf,
|
|
|
278
276
|
i0.ɵɵproperty("ngIf", ctx_r47.isEnableBackButton && !ctx_r47.questions[0].isFirstPageSubmit && !ctx_r47.isLast && ctx_r47.isFirst);
|
|
279
277
|
} }
|
|
280
278
|
function DynamicFormComponent_div_2_ion_footer_13_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
281
|
-
const
|
|
282
|
-
i0.ɵɵelementStart(0, "div")(1, "mat-horizontal-stepper",
|
|
283
|
-
i0.ɵɵlistener("selectionChange", function DynamicFormComponent_div_2_ion_footer_13_div_4_Template_mat_horizontal_stepper_selectionChange_1_listener($event) { i0.ɵɵrestoreView(
|
|
284
|
-
i0.ɵɵtemplate(3, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_Template, 8, 7, "mat-step",
|
|
279
|
+
const _r73 = i0.ɵɵgetCurrentView();
|
|
280
|
+
i0.ɵɵelementStart(0, "div")(1, "mat-horizontal-stepper", 32, 33);
|
|
281
|
+
i0.ɵɵlistener("selectionChange", function DynamicFormComponent_div_2_ion_footer_13_div_4_Template_mat_horizontal_stepper_selectionChange_1_listener($event) { i0.ɵɵrestoreView(_r73); const ctx_r72 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r72.stepChanged($event)); });
|
|
282
|
+
i0.ɵɵtemplate(3, DynamicFormComponent_div_2_ion_footer_13_div_4_mat_step_3_Template, 8, 7, "mat-step", 34);
|
|
285
283
|
i0.ɵɵelementEnd()();
|
|
286
284
|
} if (rf & 2) {
|
|
287
285
|
const ctx_r36 = i0.ɵɵnextContext(3);
|
|
@@ -291,34 +289,34 @@ function DynamicFormComponent_div_2_ion_footer_13_div_4_Template(rf, ctx) { if (
|
|
|
291
289
|
i0.ɵɵproperty("ngForOf", ctx_r36.questions[0].pages);
|
|
292
290
|
} }
|
|
293
291
|
function DynamicFormComponent_div_2_ion_footer_13_Template(rf, ctx) { if (rf & 1) {
|
|
294
|
-
i0.ɵɵelementStart(0, "ion-footer",
|
|
295
|
-
i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ion_footer_13_div_1_Template, 8, 0, "div",
|
|
292
|
+
i0.ɵɵelementStart(0, "ion-footer", 22);
|
|
293
|
+
i0.ɵɵtemplate(1, DynamicFormComponent_div_2_ion_footer_13_div_1_Template, 8, 0, "div", 23)(2, DynamicFormComponent_div_2_ion_footer_13_div_2_Template, 8, 0, "div", 23)(3, DynamicFormComponent_div_2_ion_footer_13_ion_grid_3_Template, 8, 0, "ion-grid", 2)(4, DynamicFormComponent_div_2_ion_footer_13_div_4_Template, 4, 2, "div", 2);
|
|
296
294
|
i0.ɵɵelementEnd();
|
|
297
295
|
} if (rf & 2) {
|
|
298
|
-
const
|
|
296
|
+
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
299
297
|
i0.ɵɵproperty("ngClass", "footer-fixed");
|
|
300
298
|
i0.ɵɵadvance(1);
|
|
301
|
-
i0.ɵɵproperty("ngIf",
|
|
299
|
+
i0.ɵɵproperty("ngIf", ctx_r8.hideStep && ctx_r8.pageType != "POPUP" && ctx_r8.pageType != "SCREEN");
|
|
302
300
|
i0.ɵɵadvance(1);
|
|
303
|
-
i0.ɵɵproperty("ngIf",
|
|
301
|
+
i0.ɵɵproperty("ngIf", ctx_r8.hideStep && ctx_r8.pageType == "SCREEN" && ctx_r8.questions[0].isFirstPageSubmit);
|
|
304
302
|
i0.ɵɵadvance(1);
|
|
305
|
-
i0.ɵɵproperty("ngIf",
|
|
303
|
+
i0.ɵɵproperty("ngIf", ctx_r8.hideStep && ctx_r8.pageType === "POPUP");
|
|
306
304
|
i0.ɵɵadvance(1);
|
|
307
|
-
i0.ɵɵproperty("ngIf", !
|
|
305
|
+
i0.ɵɵproperty("ngIf", !ctx_r8.hideStep);
|
|
308
306
|
} }
|
|
309
307
|
function DynamicFormComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
310
|
-
const
|
|
311
|
-
i0.ɵɵelementStart(0, "div", null,
|
|
312
|
-
i0.ɵɵlistener("ngSubmit", function DynamicFormComponent_div_2_Template_form_ngSubmit_2_listener() { i0.ɵɵrestoreView(
|
|
308
|
+
const _r75 = i0.ɵɵgetCurrentView();
|
|
309
|
+
i0.ɵɵelementStart(0, "div", null, 5)(2, "form", 6, 7);
|
|
310
|
+
i0.ɵɵlistener("ngSubmit", function DynamicFormComponent_div_2_Template_form_ngSubmit_2_listener() { i0.ɵɵrestoreView(_r75); const ctx_r74 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r74.onSubmit()); });
|
|
313
311
|
i0.ɵɵelementStart(4, "ion-grid");
|
|
314
312
|
i0.ɵɵtemplate(5, DynamicFormComponent_div_2_ion_row_5_Template, 6, 17, "ion-row", 2);
|
|
315
|
-
i0.ɵɵelementStart(6, "ion-row")(7, "ion-col",
|
|
316
|
-
i0.ɵɵtemplate(9, DynamicFormComponent_div_2_ng_container_9_Template, 3, 2, "ng-container",
|
|
313
|
+
i0.ɵɵelementStart(6, "ion-row")(7, "ion-col", 8)(8, "div", 9);
|
|
314
|
+
i0.ɵɵtemplate(9, DynamicFormComponent_div_2_ng_container_9_Template, 3, 2, "ng-container", 10);
|
|
317
315
|
i0.ɵɵelementEnd()();
|
|
318
|
-
i0.ɵɵelementStart(10, "ion-col",
|
|
319
|
-
i0.ɵɵtemplate(12, DynamicFormComponent_div_2_ng_container_12_Template, 2, 1, "ng-container",
|
|
316
|
+
i0.ɵɵelementStart(10, "ion-col", 11)(11, "div", 9);
|
|
317
|
+
i0.ɵɵtemplate(12, DynamicFormComponent_div_2_ng_container_12_Template, 2, 1, "ng-container", 10);
|
|
320
318
|
i0.ɵɵelementEnd()()()();
|
|
321
|
-
i0.ɵɵtemplate(13, DynamicFormComponent_div_2_ion_footer_13_Template, 5, 5, "ion-footer",
|
|
319
|
+
i0.ɵɵtemplate(13, DynamicFormComponent_div_2_ion_footer_13_Template, 5, 5, "ion-footer", 12);
|
|
322
320
|
i0.ɵɵelementEnd()();
|
|
323
321
|
} if (rf & 2) {
|
|
324
322
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -337,17 +335,29 @@ function DynamicFormComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
337
335
|
i0.ɵɵadvance(1);
|
|
338
336
|
i0.ɵɵproperty("ngIf", !ctx_r0.hideFooter);
|
|
339
337
|
} }
|
|
340
|
-
function
|
|
338
|
+
function DynamicFormComponent_app_lexis_nexis_3_Template(rf, ctx) { if (rf & 1) {
|
|
341
339
|
const _r77 = i0.ɵɵgetCurrentView();
|
|
342
|
-
i0.ɵɵelementStart(0, "app-
|
|
343
|
-
i0.ɵɵlistener("success", function
|
|
340
|
+
i0.ɵɵelementStart(0, "app-lexis-nexis", 40);
|
|
341
|
+
i0.ɵɵlistener("success", function DynamicFormComponent_app_lexis_nexis_3_Template_app_lexis_nexis_success_0_listener() { i0.ɵɵrestoreView(_r77); const ctx_r76 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r76.onLnSuccess()); })("error", function DynamicFormComponent_app_lexis_nexis_3_Template_app_lexis_nexis_error_0_listener() { i0.ɵɵrestoreView(_r77); const ctx_r78 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r78.onLNError()); })("usps", function DynamicFormComponent_app_lexis_nexis_3_Template_app_lexis_nexis_usps_0_listener() { i0.ɵɵrestoreView(_r77); const ctx_r79 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r79.triggerUSPS()); });
|
|
344
342
|
i0.ɵɵelementEnd();
|
|
345
343
|
} if (rf & 2) {
|
|
346
344
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
347
|
-
i0.ɵɵproperty("
|
|
345
|
+
i0.ɵɵproperty("display", ctx_r1.isLexisNexisPopupEnabled)("page", ctx_r1.flowKey)("userDetails", ctx_r1.userDetails);
|
|
346
|
+
} }
|
|
347
|
+
function DynamicFormComponent_app_mfa_4_Template(rf, ctx) { if (rf & 1) {
|
|
348
|
+
const _r82 = i0.ɵɵgetCurrentView();
|
|
349
|
+
i0.ɵɵelementStart(0, "app-mfa", 41, 42);
|
|
350
|
+
i0.ɵɵlistener("success", function DynamicFormComponent_app_mfa_4_Template_app_mfa_success_0_listener($event) { i0.ɵɵrestoreView(_r82); const ctx_r81 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r81.saveScreenQuestionnaire($event)); });
|
|
351
|
+
i0.ɵɵelementEnd();
|
|
352
|
+
} if (rf & 2) {
|
|
353
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
354
|
+
i0.ɵɵproperty("user", ctx_r2.ls.getUser())("data", ctx_r2.mfaData)("requestCode", true)("mfaError", ctx_r2.mfaError)("hideButtons", true);
|
|
348
355
|
} }
|
|
349
356
|
export class DynamicFormComponent extends BasePage {
|
|
350
|
-
|
|
357
|
+
get invalid() {
|
|
358
|
+
return this.formGroupArray.map(x => x.invalid).reduce((a, b) => a && b);
|
|
359
|
+
}
|
|
360
|
+
constructor(qes, questionnaireService, navCtrl, qcs, util, translate, logger, validationService, el, activatedRoute, storage, ls, captcha, ln, router) {
|
|
351
361
|
super();
|
|
352
362
|
this.qes = qes;
|
|
353
363
|
this.questionnaireService = questionnaireService;
|
|
@@ -362,6 +372,8 @@ export class DynamicFormComponent extends BasePage {
|
|
|
362
372
|
this.storage = storage;
|
|
363
373
|
this.ls = ls;
|
|
364
374
|
this.captcha = captcha;
|
|
375
|
+
this.ln = ln;
|
|
376
|
+
this.router = router;
|
|
365
377
|
this.blockUi = false;
|
|
366
378
|
this.showMfa = false;
|
|
367
379
|
this.questions = [];
|
|
@@ -388,8 +400,11 @@ export class DynamicFormComponent extends BasePage {
|
|
|
388
400
|
this.identifier = "";
|
|
389
401
|
this.activeIndex = 0;
|
|
390
402
|
this.errorOccured = false;
|
|
403
|
+
this.paymentDetailChangeHasError = false;
|
|
404
|
+
this.isLexisNexisPopupEnabled = false;
|
|
405
|
+
this.responseUuid = "";
|
|
391
406
|
this.storage.create().then(() => {
|
|
392
|
-
|
|
407
|
+
console.log("Storage DB created successfully.");
|
|
393
408
|
});
|
|
394
409
|
}
|
|
395
410
|
/*This will be called whenever @Input 'formData' value is changed for this control*/
|
|
@@ -424,13 +439,10 @@ export class DynamicFormComponent extends BasePage {
|
|
|
424
439
|
* Based on the value attribute, option will be set on form control after reading it from choices
|
|
425
440
|
* array.
|
|
426
441
|
*/
|
|
427
|
-
if (valueToSet
|
|
442
|
+
if (valueToSet) {
|
|
428
443
|
let choice = question.choices.filter(o => o.value == (valueToSet?.value ? valueToSet.value : valueToSet))[0];
|
|
429
444
|
this.setValueInFormControl(key, choice);
|
|
430
445
|
}
|
|
431
|
-
else if (valueToSet && question.inputType == 'date') {
|
|
432
|
-
this.setValueInFormControl(key, valueToSet);
|
|
433
|
-
}
|
|
434
446
|
}
|
|
435
447
|
else {
|
|
436
448
|
this.setValueInFormControl(key, valueToSet);
|
|
@@ -442,13 +454,12 @@ export class DynamicFormComponent extends BasePage {
|
|
|
442
454
|
let control = this.formGroupArray[this.activeIndex]?.controls[name];
|
|
443
455
|
if (control) {
|
|
444
456
|
control.patchValue(value);
|
|
445
|
-
this.logger.debug('set value in method = ' + name, value, control.value, control.disabled, control);
|
|
446
457
|
}
|
|
447
458
|
else if (name == 'dependentTable') {
|
|
448
|
-
console.
|
|
459
|
+
console.error('No form control present dependentTable ', name);
|
|
449
460
|
}
|
|
450
461
|
else {
|
|
451
|
-
console.
|
|
462
|
+
console.error('No form control present with name ', name);
|
|
452
463
|
}
|
|
453
464
|
}
|
|
454
465
|
else {
|
|
@@ -457,7 +468,7 @@ export class DynamicFormComponent extends BasePage {
|
|
|
457
468
|
}
|
|
458
469
|
/* To get the dropdown element so that value from the choices can be read and set into the form control*/
|
|
459
470
|
getFormControlConfiguration(name) {
|
|
460
|
-
let filteredValues = this.questions[0].pages[this.activeIndex].elements.filter(q => q.name == name &&
|
|
471
|
+
let filteredValues = this.questions[0].pages[this.activeIndex].elements.filter(q => q.name == name && q.type == 'dropdown');
|
|
461
472
|
if (filteredValues && filteredValues.length > 0) {
|
|
462
473
|
return filteredValues[0];
|
|
463
474
|
}
|
|
@@ -472,12 +483,12 @@ export class DynamicFormComponent extends BasePage {
|
|
|
472
483
|
if (serviceUrl.trim() != 'null') {
|
|
473
484
|
this.blockFormUi();
|
|
474
485
|
let serviceUrlValue = serviceUrl.trim();
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
}
|
|
478
|
-
|
|
486
|
+
if (this.ls.isCsr()) {
|
|
487
|
+
serviceUrlValue = serviceUrlValue;
|
|
488
|
+
}
|
|
489
|
+
const options = this.ls.isCsr() ? { params: new HttpParams().set('ssn', this.ssnForCSR) } : {};
|
|
479
490
|
this.validationService
|
|
480
|
-
.get(`${serviceUrlValue}
|
|
491
|
+
.get(`${serviceUrlValue}`, options)
|
|
481
492
|
.subscribe(res => {
|
|
482
493
|
this.loaderModel = res;
|
|
483
494
|
this.logger.debug("loader model = " + this.loaderModel);
|
|
@@ -540,6 +551,9 @@ export class DynamicFormComponent extends BasePage {
|
|
|
540
551
|
this.logger.debug('stringKey ', strKey[i], params.get(strKey[i]));
|
|
541
552
|
paramMap.set(strKey[i], params.get(strKey[i]));
|
|
542
553
|
}
|
|
554
|
+
if (paramMap.get("key") != null) {
|
|
555
|
+
this.ssnForCSR = atob(paramMap.get("key"));
|
|
556
|
+
}
|
|
543
557
|
});
|
|
544
558
|
let counter = this.questions[0].stepCounter;
|
|
545
559
|
this.activeIndex = counter ? counter : 0;
|
|
@@ -647,8 +661,8 @@ export class DynamicFormComponent extends BasePage {
|
|
|
647
661
|
}
|
|
648
662
|
}
|
|
649
663
|
}
|
|
650
|
-
|
|
651
|
-
this.potentialIssueId =
|
|
664
|
+
let currentQe = this.qes.searchBs.getValue();
|
|
665
|
+
this.potentialIssueId = currentQe?.potentialIssueId;
|
|
652
666
|
}
|
|
653
667
|
setValueSubscription(pageIndex, formGroup) {
|
|
654
668
|
var pages = this.questions[0].pages[pageIndex];
|
|
@@ -833,7 +847,7 @@ export class DynamicFormComponent extends BasePage {
|
|
|
833
847
|
this.payLoad = (this.payLoad + strIntoObj);
|
|
834
848
|
});
|
|
835
849
|
let saveData = {};
|
|
836
|
-
let currentQe = this.
|
|
850
|
+
let currentQe = this.qes.searchBs.getValue();
|
|
837
851
|
let employeeData = this.qes.employeeBs.getValue();
|
|
838
852
|
this.logger.debug('employeeData ', employeeData);
|
|
839
853
|
if (this.forScreenQuestionnaire) {
|
|
@@ -852,6 +866,7 @@ export class DynamicFormComponent extends BasePage {
|
|
|
852
866
|
saveData.questionnaireId = currentQe.questionnaireId;
|
|
853
867
|
this.logger.debug('save Data ', saveData);
|
|
854
868
|
this.util.showLoader();
|
|
869
|
+
scrollTo(0, 0);
|
|
855
870
|
this.questionnaireService
|
|
856
871
|
.saveScreenQuestionnaire(saveData)
|
|
857
872
|
.subscribe(async (res) => {
|
|
@@ -875,6 +890,9 @@ export class DynamicFormComponent extends BasePage {
|
|
|
875
890
|
this.setPrevAndNextButton();
|
|
876
891
|
}
|
|
877
892
|
this.identifier = res['uuid'];
|
|
893
|
+
setTimeout(() => {
|
|
894
|
+
BasePage.primeNGFixes();
|
|
895
|
+
}, 3000);
|
|
878
896
|
}
|
|
879
897
|
}, err => {
|
|
880
898
|
this.qcs.sharedData.clear();
|
|
@@ -886,6 +904,7 @@ export class DynamicFormComponent extends BasePage {
|
|
|
886
904
|
}
|
|
887
905
|
prevPage(index) {
|
|
888
906
|
this.activeIndex = index - 1;
|
|
907
|
+
scrollTo(0, 0);
|
|
889
908
|
this.setPrevAndNextButton();
|
|
890
909
|
}
|
|
891
910
|
visibleIf(strExp, elementName, formGroup, element) {
|
|
@@ -938,23 +957,21 @@ export class DynamicFormComponent extends BasePage {
|
|
|
938
957
|
}
|
|
939
958
|
return false;
|
|
940
959
|
}
|
|
960
|
+
getDirtyItems() {
|
|
961
|
+
return this.formGroupArray.map(y => Object.entries(y.controls).filter(value => !value[1].pristine).map(x => x[0])).reduce((x, y) => x.concat(y));
|
|
962
|
+
}
|
|
941
963
|
complete() {
|
|
942
964
|
this.logger.debug('complete method called =======');
|
|
943
965
|
if (this.mfaRequired && this.showMfa && this.mfa) {
|
|
944
966
|
this.mfa.submit();
|
|
945
967
|
}
|
|
968
|
+
scrollTo(0, 0);
|
|
946
969
|
let formGroup;
|
|
947
970
|
this.logger.debug('Submit called from complete method in dynamic form');
|
|
948
971
|
for (var i = 0; i < this.formGroupArray.length; i++) {
|
|
949
972
|
formGroup = this.formGroupArray[i];
|
|
950
973
|
this.logger.debug('Inside if', formGroup);
|
|
951
974
|
if (formGroup.invalid) {
|
|
952
|
-
let target;
|
|
953
|
-
target = this.el.nativeElement.querySelector('.ng-invalid');
|
|
954
|
-
if (target) {
|
|
955
|
-
target.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
956
|
-
target.focus();
|
|
957
|
-
}
|
|
958
975
|
this.logger.debug('Inside if', formGroup);
|
|
959
976
|
formGroup.markAllAsTouched();
|
|
960
977
|
Object.values(formGroup.controls).forEach(control => {
|
|
@@ -967,6 +984,35 @@ export class DynamicFormComponent extends BasePage {
|
|
|
967
984
|
}
|
|
968
985
|
formGroup = this.formGroupArray[this.activeIndex];
|
|
969
986
|
this.logger.debug('formGroup', formGroup);
|
|
987
|
+
// for register claimant page
|
|
988
|
+
const password = formGroup.getRawValue() && formGroup.getRawValue().password ? (formGroup.getRawValue().password).toLowerCase() : "";
|
|
989
|
+
const firstName = formGroup.getRawValue() && formGroup.getRawValue().firstName ? (formGroup.getRawValue().firstName).toLowerCase() : "";
|
|
990
|
+
const lastName = formGroup.getRawValue() && formGroup.getRawValue().lastName ? (formGroup.getRawValue().lastName).toLowerCase() : "";
|
|
991
|
+
const userId = formGroup.getRawValue() && formGroup.getRawValue().username ? (formGroup.getRawValue().username).toLowerCase() : "";
|
|
992
|
+
if (password === "" && firstName === "" && lastName === "" && userId === "") {
|
|
993
|
+
this.completeSaveQuestionnaire(formGroup);
|
|
994
|
+
}
|
|
995
|
+
else {
|
|
996
|
+
if (password !== "" && this.isPasswordValid(firstName, lastName, userId, password)) {
|
|
997
|
+
this.completeSaveQuestionnaire(formGroup);
|
|
998
|
+
}
|
|
999
|
+
else {
|
|
1000
|
+
const passwordInvalidError = {
|
|
1001
|
+
"errorId": "",
|
|
1002
|
+
"timestamp": "",
|
|
1003
|
+
"msg": [
|
|
1004
|
+
"[The password contains either/or user name, first name or last name which does not match with the password requirement\t\t.\t\t]"
|
|
1005
|
+
],
|
|
1006
|
+
"details": "uri=/questionnaire-service/questionnaire/screen-questionnaire",
|
|
1007
|
+
"error": null,
|
|
1008
|
+
"errorCode": "422"
|
|
1009
|
+
};
|
|
1010
|
+
this.onError.emit(passwordInvalidError);
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
completeSaveQuestionnaire(formGroup) {
|
|
1015
|
+
this.formRawData = formGroup;
|
|
970
1016
|
this.qcs.setData(this.activeIndex, JSON.stringify(formGroup.getRawValue()));
|
|
971
1017
|
let strIntoObj;
|
|
972
1018
|
this.payLoad = '';
|
|
@@ -975,7 +1021,7 @@ export class DynamicFormComponent extends BasePage {
|
|
|
975
1021
|
this.payLoad = (this.payLoad + strIntoObj);
|
|
976
1022
|
});
|
|
977
1023
|
let saveData = {};
|
|
978
|
-
let currentQe = this.queryModel;
|
|
1024
|
+
let currentQe = this.autoSave ? this.qes.searchBs.getValue() : this.queryModel;
|
|
979
1025
|
if (this.pageType === 'POPUP' || this.pageType === 'Json') {
|
|
980
1026
|
this.onComplete.emit(formGroup.getRawValue());
|
|
981
1027
|
this.qcs.sharedData.clear();
|
|
@@ -998,6 +1044,7 @@ export class DynamicFormComponent extends BasePage {
|
|
|
998
1044
|
this.qcs.sharedData.clear();
|
|
999
1045
|
return;
|
|
1000
1046
|
}
|
|
1047
|
+
this.inputData = saveData;
|
|
1001
1048
|
this.blockFormUi();
|
|
1002
1049
|
this.questionnaireService
|
|
1003
1050
|
.saveQuestionnaire(saveData)
|
|
@@ -1006,7 +1053,7 @@ export class DynamicFormComponent extends BasePage {
|
|
|
1006
1053
|
this.qes.searchModel.splice(this.qes.searchModel.findIndex(item => item.potentialIssueId == currentQe.potentialIssueId), 1);
|
|
1007
1054
|
this.logger.debug('remaining elements', this.qes.searchModel);
|
|
1008
1055
|
if (this.qes.searchModel.length > 0) {
|
|
1009
|
-
|
|
1056
|
+
this.qes.searchBs.next(this.qes.searchModel[0]);
|
|
1010
1057
|
}
|
|
1011
1058
|
else {
|
|
1012
1059
|
this.logger.debug('No Element Present');
|
|
@@ -1046,6 +1093,21 @@ export class DynamicFormComponent extends BasePage {
|
|
|
1046
1093
|
this.saveScreenQuestionnaire(saveData);
|
|
1047
1094
|
}
|
|
1048
1095
|
}
|
|
1096
|
+
paymentDetailsChangeError() {
|
|
1097
|
+
return this.paymentDetailChangeHasError;
|
|
1098
|
+
}
|
|
1099
|
+
isPasswordValid(firstName, lastName, userId, password) {
|
|
1100
|
+
const escapeRegExp = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
1101
|
+
const firstNameRegex = new RegExp(escapeRegExp(firstName), 'i');
|
|
1102
|
+
const lastNameRegex = new RegExp(escapeRegExp(lastName), 'i');
|
|
1103
|
+
const userIdRegex = new RegExp(escapeRegExp(userId), 'i');
|
|
1104
|
+
if (firstNameRegex.test(password) || lastNameRegex.test(password) || userIdRegex.test(password)) {
|
|
1105
|
+
return false;
|
|
1106
|
+
}
|
|
1107
|
+
else {
|
|
1108
|
+
return true;
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1049
1111
|
saveScreenQuestionnaire(data) {
|
|
1050
1112
|
this.blockFormUi();
|
|
1051
1113
|
this.questionnaireService
|
|
@@ -1062,17 +1124,47 @@ export class DynamicFormComponent extends BasePage {
|
|
|
1062
1124
|
await this.storage.set(FbConstants.waitCheckServiceUri, res[FbConstants.waitCheckServiceUri]);
|
|
1063
1125
|
await this.storage.set(FbConstants.pageToOpen, res[FbConstants.pageToOpen]);
|
|
1064
1126
|
await this.storage.set(FbConstants.uuid, res[FbConstants.uuid]);
|
|
1065
|
-
|
|
1066
|
-
|
|
1127
|
+
/*Only enable lxnx in sign-up flow for questionnaire form-builder*/
|
|
1128
|
+
if (data?.questionnaireIds?.[0] === 345) {
|
|
1129
|
+
this.flowKey = 345;
|
|
1130
|
+
this.responseUuid = res['uuid'];
|
|
1131
|
+
let ssn = this.formRawData.getRawValue() && this.formRawData.getRawValue().ssn ? (this.formRawData.getRawValue().ssn).toLowerCase() : "";
|
|
1132
|
+
this.ln.isLexisNexisIdProofingEnabled(ssn)
|
|
1133
|
+
.subscribe(res => {
|
|
1134
|
+
/*If lexis-nexis id proofing is enabled */
|
|
1135
|
+
if (res) {
|
|
1136
|
+
this.setLexisNexisAccountCreationUserDetails();
|
|
1137
|
+
this.isLexisNexisPopupEnabled = true;
|
|
1138
|
+
}
|
|
1139
|
+
else {
|
|
1140
|
+
if (this.nextButtonPage) {
|
|
1141
|
+
this.navCtrl.navigateRoot(`/${this.nextButtonPage}?identifier=${res['uuid']}`);
|
|
1142
|
+
}
|
|
1143
|
+
else {
|
|
1144
|
+
this.onComplete.emit(data);
|
|
1145
|
+
this.qcs.sharedData.clear();
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
});
|
|
1067
1149
|
}
|
|
1068
1150
|
else {
|
|
1069
|
-
this.
|
|
1070
|
-
|
|
1151
|
+
if (this.nextButtonPage) {
|
|
1152
|
+
this.navCtrl.navigateRoot(`/${this.nextButtonPage}?identifier=${res['uuid']}`);
|
|
1153
|
+
}
|
|
1154
|
+
else {
|
|
1155
|
+
this.onComplete.emit(data);
|
|
1156
|
+
this.qcs.sharedData.clear();
|
|
1157
|
+
}
|
|
1071
1158
|
}
|
|
1072
1159
|
}
|
|
1073
|
-
|
|
1074
|
-
|
|
1160
|
+
if (!(data?.questionnaireIds?.[0] === 345)) {
|
|
1161
|
+
this.unblockFormUi();
|
|
1162
|
+
this.showMfa = false;
|
|
1163
|
+
}
|
|
1075
1164
|
}, err => {
|
|
1165
|
+
if (err.msg[0].includes('There is no active claim to update payment Information')) {
|
|
1166
|
+
this.paymentDetailChangeHasError = true;
|
|
1167
|
+
}
|
|
1076
1168
|
this.logger.debug('Error occured', err);
|
|
1077
1169
|
if (this.mfaRequired) {
|
|
1078
1170
|
this.mfaError = err;
|
|
@@ -1084,6 +1176,80 @@ export class DynamicFormComponent extends BasePage {
|
|
|
1084
1176
|
this.captcha.resetCaptcha();
|
|
1085
1177
|
});
|
|
1086
1178
|
}
|
|
1179
|
+
setLexisNexisAccountCreationUserDetails() {
|
|
1180
|
+
const firstName = this.formRawData.getRawValue() && this.formRawData.getRawValue().firstName ? (this.formRawData.getRawValue().firstName).toLowerCase() : "";
|
|
1181
|
+
const lastName = this.formRawData.getRawValue() && this.formRawData.getRawValue().lastName ? (this.formRawData.getRawValue().lastName).toLowerCase() : "";
|
|
1182
|
+
let street1 = "";
|
|
1183
|
+
let city = "";
|
|
1184
|
+
let state = "";
|
|
1185
|
+
let zip = "";
|
|
1186
|
+
if (this.formRawData.getRawValue() && this.formRawData.getRawValue().diffmailaddress != null) {
|
|
1187
|
+
if (this.formRawData.getRawValue().diffmailaddress === "Y") {
|
|
1188
|
+
street1 = this.formRawData.getRawValue() && this.formRawData.getRawValue().mailAddress.streetAddress ? (this.formRawData.getRawValue().mailAddress.streetAddress).toLowerCase() : "";
|
|
1189
|
+
city = this.formRawData.getRawValue() && this.formRawData.getRawValue().mailAddress.city ? (this.formRawData.getRawValue().mailAddress.city).toLowerCase() : "";
|
|
1190
|
+
state = this.formRawData.getRawValue() && this.formRawData.getRawValue().mailAddress.state.value ? (this.formRawData.getRawValue().mailAddress.state.value).toLowerCase() : "";
|
|
1191
|
+
zip = this.formRawData.getRawValue() && this.formRawData.getRawValue().mailAddress.zip ? (this.formRawData.getRawValue().mailAddress.zip).toLowerCase() : "";
|
|
1192
|
+
}
|
|
1193
|
+
else {
|
|
1194
|
+
street1 = this.formRawData.getRawValue() && this.formRawData.getRawValue().resAdress.streetAddress ? (this.formRawData.getRawValue().resAdress.streetAddress).toLowerCase() : "";
|
|
1195
|
+
city = this.formRawData.getRawValue() && this.formRawData.getRawValue().resAdress.city ? (this.formRawData.getRawValue().resAdress.city).toLowerCase() : "";
|
|
1196
|
+
state = this.formRawData.getRawValue() && this.formRawData.getRawValue().resAdress.state.value ? (this.formRawData.getRawValue().resAdress.state.value).toLowerCase() : "";
|
|
1197
|
+
zip = this.formRawData.getRawValue() && this.formRawData.getRawValue().resAdress.zip ? (this.formRawData.getRawValue().resAdress.zip).toLowerCase() : "";
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1200
|
+
const dob = this.formRawData.getRawValue() && this.formRawData.getRawValue().dob ? (this.formRawData.getRawValue().dob).toLowerCase() : "";
|
|
1201
|
+
const email = this.formRawData.getRawValue() && this.formRawData.getRawValue().email ? (this.formRawData.getRawValue().email).toLowerCase() : "";
|
|
1202
|
+
const phone = this.formRawData.getRawValue() && this.formRawData.getRawValue().phone ? (this.formRawData.getRawValue().phone).toLowerCase() : "";
|
|
1203
|
+
const ssn = this.formRawData.getRawValue() && this.formRawData.getRawValue().ssn ? (this.formRawData.getRawValue().ssn).toLowerCase() : "";
|
|
1204
|
+
if (!window['sessionId']) {
|
|
1205
|
+
console.error('Session ID not found in window object.');
|
|
1206
|
+
return; // handle accordingly
|
|
1207
|
+
}
|
|
1208
|
+
if (window['sessionId'] != null) {
|
|
1209
|
+
this.userDetails = {
|
|
1210
|
+
session_id: window['sessionId'] ? window['sessionId'] : null,
|
|
1211
|
+
input_ip_address: null,
|
|
1212
|
+
account_first_name: firstName,
|
|
1213
|
+
account_last_name: lastName,
|
|
1214
|
+
account_address_street1: street1,
|
|
1215
|
+
account_address_city: city,
|
|
1216
|
+
account_address_state: state,
|
|
1217
|
+
account_address_zip: zip,
|
|
1218
|
+
account_date_of_birth: dob,
|
|
1219
|
+
account_email: email,
|
|
1220
|
+
account_telephone: phone,
|
|
1221
|
+
national_id_number: ssn
|
|
1222
|
+
};
|
|
1223
|
+
this.isLexisNexisPopupEnabled = true;
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
onLnSuccess() {
|
|
1227
|
+
this.isLexisNexisPopupEnabled = false;
|
|
1228
|
+
this.util.hideLoader();
|
|
1229
|
+
if (this.nextButtonPage) {
|
|
1230
|
+
this.navCtrl.navigateRoot(`/${this.nextButtonPage}?identifier=${this.responseUuid}`);
|
|
1231
|
+
}
|
|
1232
|
+
else {
|
|
1233
|
+
this.onComplete.emit(this.inputData);
|
|
1234
|
+
this.qcs.sharedData.clear();
|
|
1235
|
+
}
|
|
1236
|
+
this.unblockFormUi();
|
|
1237
|
+
this.showMfa = false;
|
|
1238
|
+
}
|
|
1239
|
+
onLNError() {
|
|
1240
|
+
this.unblockFormUi();
|
|
1241
|
+
this.showMfa = false;
|
|
1242
|
+
console.log("Please contact KDOL!");
|
|
1243
|
+
}
|
|
1244
|
+
triggerUSPS() {
|
|
1245
|
+
this.unblockFormUi();
|
|
1246
|
+
this.showMfa = false;
|
|
1247
|
+
this.isLexisNexisPopupEnabled = false;
|
|
1248
|
+
this.util.hideLoader();
|
|
1249
|
+
console.log("usps is triggered");
|
|
1250
|
+
localStorage.setItem('userDetails', JSON.stringify(this.userDetails));
|
|
1251
|
+
setTimeout(() => this.router.navigate(['/usps-redirect', ""]), 1000);
|
|
1252
|
+
}
|
|
1087
1253
|
setPrevAndNextButton() {
|
|
1088
1254
|
let compareValue = 0;
|
|
1089
1255
|
if (this.activeIndex > 0) {
|
|
@@ -1157,7 +1323,7 @@ export class DynamicFormComponent extends BasePage {
|
|
|
1157
1323
|
onSubmit() {
|
|
1158
1324
|
this.util.focusOnSubmit(this.el);
|
|
1159
1325
|
}
|
|
1160
|
-
static { this.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(i0.ɵɵdirectiveInject(i1.QuestionService), i0.ɵɵdirectiveInject(i2.QuestionnaireService), i0.ɵɵdirectiveInject(i3.NavController), i0.ɵɵdirectiveInject(i4.QuestionControlService), i0.ɵɵdirectiveInject(i5.UtilService), i0.ɵɵdirectiveInject(i6.TranslateService), i0.ɵɵdirectiveInject(i7.LoggerService), i0.ɵɵdirectiveInject(i8.ValidationService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i9.ActivatedRoute), i0.ɵɵdirectiveInject(i10.Storage), i0.ɵɵdirectiveInject(i11.LoginService), i0.ɵɵdirectiveInject(i12.CaptchaService)); }; }
|
|
1326
|
+
static { this.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(i0.ɵɵdirectiveInject(i1.QuestionService), i0.ɵɵdirectiveInject(i2.QuestionnaireService), i0.ɵɵdirectiveInject(i3.NavController), i0.ɵɵdirectiveInject(i4.QuestionControlService), i0.ɵɵdirectiveInject(i5.UtilService), i0.ɵɵdirectiveInject(i6.TranslateService), i0.ɵɵdirectiveInject(i7.LoggerService), i0.ɵɵdirectiveInject(i8.ValidationService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i9.ActivatedRoute), i0.ɵɵdirectiveInject(i10.Storage), i0.ɵɵdirectiveInject(i11.LoginService), i0.ɵɵdirectiveInject(i12.CaptchaService), i0.ɵɵdirectiveInject(i13.LexisNexisService), i0.ɵɵdirectiveInject(i9.Router)); }; }
|
|
1161
1327
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["app-dynamic-form"]], viewQuery: function DynamicFormComponent_Query(rf, ctx) { if (rf & 1) {
|
|
1162
1328
|
i0.ɵɵviewQuery(_c0, 5);
|
|
1163
1329
|
i0.ɵɵviewQuery(_c1, 5);
|
|
@@ -1167,35 +1333,37 @@ export class DynamicFormComponent extends BasePage {
|
|
|
1167
1333
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.mfa = _t.first);
|
|
1168
1334
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.questionnaireForm = _t.first);
|
|
1169
1335
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.stepper = _t.first);
|
|
1170
|
-
} }, inputs: { questions: "questions", forScreenQuestionnaire: "forScreenQuestionnaire", isEnableBackButton: "isEnableBackButton",
|
|
1336
|
+
} }, inputs: { questions: "questions", forScreenQuestionnaire: "forScreenQuestionnaire", isEnableBackButton: "isEnableBackButton", backButtonPage: "backButtonPage", nextButtonPage: "nextButtonPage", pageType: "pageType", hideFooter: "hideFooter", multiMode: "multiMode", loaderService: "loaderService", autoSave: "autoSave", mfaRequired: "mfaRequired", data: "data", readOnlyFields: "readOnlyFields", formReadOnly: "formReadOnly", queryModel: "queryModel", dynamicParam: "dynamicParam", formData: "formData", questionNumber: "questionNumber", sizeXs: "sizeXs", sizeSm: "sizeSm", sizeMd: "sizeMd", sizeLg: "sizeLg", sizeXl: "sizeXl", offsetXs: "offsetXs", offsetSm: "offsetSm", offsetMd: "offsetMd", offsetLg: "offsetLg", offsetXl: "offsetXl" }, outputs: { modelCancel: "modelCancel", onComplete: "onComplete", onError: "onError", invalid: "invalid" }, features: [i0.ɵɵProvidersFeature([QuestionControlService, {
|
|
1171
1337
|
provide: STEPPER_GLOBAL_OPTIONS,
|
|
1172
1338
|
useValue: {
|
|
1173
1339
|
showError: true,
|
|
1174
1340
|
displayDefaultIndicatorType: false
|
|
1175
1341
|
}
|
|
1176
|
-
}]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls:
|
|
1342
|
+
}]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 5, vars: 4, consts: [[3, "blocked"], ["name", "crescent"], [4, "ngIf"], [3, "display", "page", "userDetails", "success", "error", "usps", 4, "ngIf"], [3, "user", "data", "requestCode", "mfaError", "hideButtons", "success", 4, "ngIf"], ["formMainDiv", ""], ["focusInvalidInput", "", 3, "formGroup", "ngClass", "ngSubmit"], ["questionnaireForm", "ngForm"], ["size", "12", 1, "ion-padding-end", 2, "padding-left", "0px", 3, "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXs", "offsetSm", "offsetMd", "offsetLg", "offsetXl"], [1, "p-formgrid", 2, "padding-left", "8px"], [4, "ngFor", "ngForOf"], ["size", "12", "sizeSm", "12", "sizeXs", "12", 1, "ion-padding-start", 2, "padding-left", "0px", 3, "sizeMd", "sizeLg", "sizeXl", "offsetXl", "offsetLg"], [3, "ngClass", 4, "ngIf"], ["size", "12", 3, "sizeXs", "sizeSm", "sizeMd", "sizeLg", "sizeXl", "offsetXs", "offsetSm", "offsetMd", "offsetLg", "offsetXl"], [1, "p-formgrid"], ["tabindex", "0", "role", "heading", "aria-level", "1", 3, "innerHtml", "ngClass"], ["role", "heading", "aria-level", "1", 1, "heading", 2, "padding-left", "0px"], ["class", "share-row", 4, "ngIf"], [1, "share-row"], [3, "potentialIssueId", "question", "form", "forScreenQuestionnaire", "dynamicParam", "onDynamicParamUpdate"], [2, "padding-left", "0px", 3, "sizeLg", "sizeSm", "sizeXs", "sizeXl", "sizeMd"], [3, "question", "form", "forScreenQuestionnaire"], [3, "ngClass"], ["style", "text-align: right; background: white; margin-left: -5px;", 4, "ngIf"], [2, "text-align", "right", "background", "white", "margin-left", "-5px"], [1, "grid", "p-nogutter", 2, "height", "60px"], [1, "col-6", "ion-text-left", 2, "padding", "8px"], ["shape", "round", "fill", "outline", "type", "submit", 1, "button", 3, "click"], [1, "col-6", "ion-text-right", 2, "padding", "8px"], ["shape", "round", "fill", "solid", "type", "submit", 3, "click"], [1, "ion-text-left", "ion-padding-start"], [1, "ion-text-right", "ion-padding-end"], ["linear", "", "aria-busy", "true", 2, "text-align", "-webkit-center", 3, "selectedIndex", "selectionChange"], ["matHorizontalStepper", ""], [3, "stepControl", "completed", 4, "ngFor", "ngForOf"], [3, "stepControl", "completed"], ["matStepLabel", ""], ["tabindex", "0", "mat-button", "", "matStepperPrevious", "", 1, "reverse", 3, "click"], ["tabindex", "0", "mat-button", "", "matStepperNext", "", 1, "forward", 3, "click"], ["tabindex", "0", "editable", "false", "mat-button", "", "matStepperPrevious", "", 1, "reverse", 3, "click"], [3, "display", "page", "userDetails", "success", "error", "usps"], [3, "user", "data", "requestCode", "mfaError", "hideButtons", "success"], ["mfa", ""]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1177
1343
|
i0.ɵɵelementStart(0, "p-blockUI", 0);
|
|
1178
1344
|
i0.ɵɵelement(1, "ion-spinner", 1);
|
|
1179
1345
|
i0.ɵɵelementEnd();
|
|
1180
|
-
i0.ɵɵtemplate(2, DynamicFormComponent_div_2_Template, 14, 21, "div", 2)(3,
|
|
1346
|
+
i0.ɵɵtemplate(2, DynamicFormComponent_div_2_Template, 14, 21, "div", 2)(3, DynamicFormComponent_app_lexis_nexis_3_Template, 1, 3, "app-lexis-nexis", 3)(4, DynamicFormComponent_app_mfa_4_Template, 2, 5, "app-mfa", 4);
|
|
1181
1347
|
} if (rf & 2) {
|
|
1182
1348
|
i0.ɵɵproperty("blocked", ctx.blockUi);
|
|
1183
1349
|
i0.ɵɵadvance(2);
|
|
1184
1350
|
i0.ɵɵproperty("ngIf", ctx.questions && ctx.questions[0] && !ctx.showMfa);
|
|
1185
1351
|
i0.ɵɵadvance(1);
|
|
1352
|
+
i0.ɵɵproperty("ngIf", ctx.isLexisNexisPopupEnabled);
|
|
1353
|
+
i0.ɵɵadvance(1);
|
|
1186
1354
|
i0.ɵɵproperty("ngIf", ctx.showMfa);
|
|
1187
|
-
} }, dependencies: [i3.IonButton, i3.IonCol, i3.IonFooter, i3.IonGrid, i3.IonRow, i3.IonSpinner,
|
|
1355
|
+
} }, dependencies: [i3.IonButton, i3.IonCol, i3.IonFooter, i3.IonGrid, i3.IonRow, i3.IonSpinner, i14.NgClass, i14.NgForOf, i14.NgIf, i15.ɵNgNoValidate, i15.NgControlStatusGroup, i15.FormGroupDirective, i16.MatStep, i16.MatStepLabel, i16.MatStepper, i16.MatStepperNext, i16.MatStepperPrevious, i17.MatButton, i18.BlockUI, i19.MfaComponent, i20.DynamicFormQuestionComponent, i21.InputFocus, i22.LexisNexisComponent, i23.DynamicTranslatePipe, i24.TrustHtmlPipe], styles: ["[_nghost-%COMP%] .flex-container.ng-star-inserted{display:inline-flex!important}[_nghost-%COMP%] .p-fluid .p-buttonset{display:initial!important}[_nghost-%COMP%] form{margin-left:5px}[_nghost-%COMP%] .p-fluid .p-calendar{display:inline-flex!important;width:60%!important}[_nghost-%COMP%] .p-fluid .p-calendar .p-inputtext{width:100%!important}[_nghost-%COMP%] .p-fluid .p-autocomplete{display:inline-flex!important}.pageTitle[_ngcontent-%COMP%]{font-weight:600;position:absolute;right:48%}.share-row[_ngcontent-%COMP%]{display:inline-block;margin-right:10px}.share-row[_ngcontent-%COMP%] > money-expect[_ngcontent-%COMP%]{float:right}@media (max-width: 280px){[_nghost-%COMP%] span.start{font-size:18px;top:46px;position:relative}[_nghost-%COMP%] .mat-stepper-horizontal-line{display:none}[_nghost-%COMP%] .mat-horizontal-stepper-header{padding:0 28px!important}[_nghost-%COMP%] .mat-horizontal-stepper-header-container{left:46px!important}[_nghost-%COMP%] .mat-step-label{display:none!important}}@media (max-width: 576px){[_nghost-%COMP%] span.p-steps-title.ng-star-inserted{display:none!important}[_nghost-%COMP%] .p-steps.p-steps-item.p-menuitem-link.p-steps-title{display:none!important}[_nghost-%COMP%] .backinc{position:absolute;left:25px}[_nghost-%COMP%] .mat-step-label{display:none!important}[_nghost-%COMP%] .mat-step-label.mat-step-label-active{display:none!important;position:absolute;bottom:0;right:0}}@media (max-width: 576px) and (min-width: 576px){.pageTitle[_ngcontent-%COMP%]{display:none!important}.backinc[_ngcontent-%COMP%]{position:absolute;left:125px}}@media (max-width: 415px){[_nghost-%COMP%] .mat-horizontal-stepper-header-container{width:60%!important;left:46px!important}[_nghost-%COMP%] .reverse{left:5px!important}[_nghost-%COMP%] .forward{right:5px!important}}[_nghost-%COMP%] .mat-stepper-horizontal, [_nghost-%COMP%] .mat-stepper-vertical{height:70px}[_nghost-%COMP%] .mat-horizontal-stepper-header{padding:0 40px}[_nghost-%COMP%] .mat-step-label{min-width:120px;bottom:5px}[_nghost-%COMP%] .mat-step-header .mat-step-label.mat-step-label-active{bottom:5px}[_nghost-%COMP%] .mat-step-header:hover:hover{background-color:#fff!important}[_nghost-%COMP%] .mat-horizontal-stepper-header{pointer-events:none!important}[_nghost-%COMP%] .mat-step-header .mat-step-icon{background-color:#bdcad2;color:#bdcad2}[_nghost-%COMP%] .mat-step-header .mat-step-icon-selected{color:#fff;background-color:var(--ion-color-primary)}[_nghost-%COMP%] .mat-step-header .mat-step-label.mat-step-label-selected{color:var(--ion-color-primary)}[_nghost-%COMP%] mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:var(--ion-color-primary)!important;font-weight:700}[_nghost-%COMP%] .mat-step-header .mat-step-icon-selected mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:#fff!important;font-weight:700}[_nghost-%COMP%] button{background-color:var(--ion-color-primary);color:#fff}[_nghost-%COMP%] .reverse{background-color:#fff;border:1px solid var(--ion-color-primary);border-radius:30px;color:var(--ion-color-primary)!important;position:absolute;bottom:15px;left:40px;cursor:pointer}[_nghost-%COMP%] .mat-horizontal-stepper-header-container{width:50%;position:sticky;left:100px}[_nghost-%COMP%] .forward{position:absolute;right:40px;bottom:15px;border-radius:30px;cursor:pointer}[_nghost-%COMP%] .reset{position:absolute;right:50px;bottom:40px;border-radius:30px}[_nghost-%COMP%] .placeholder{visibility:hidden}[_nghost-%COMP%] .ui-state-complete .ui-steps-number{background-color:green!important}[_nghost-%COMP%] .p-steps .p-steps-item.p-highlight .p-steps-number{background-color:var(--ion-color-primary)!important;background-size:20px;color:var(--ion-color-primary)!important}[_nghost-%COMP%] .p-steps .p-steps-item .p-menuitem-link .p-steps-number{color:var(--ion-color-grey);background-size:15px;font-size:.857rem;min-width:1.714rem;height:1.714rem;line-height:1.714rem}[_nghost-%COMP%] div.p-formgrid.p-grid.ng-star-inserted{flex-wrap:wrap!important}[_nghost-%COMP%] .p-steps .p-steps-item.p-menuitem-link .p-steps-number{background-color:var(--ion-color-primary-shade)}[_nghost-%COMP%] ion-footer{bottom:0}[_nghost-%COMP%] .second{right:45%}[_nghost-%COMP%] .mat-button.mat-primary[disabled], [_nghost-%COMP%] .mat-button.mat-accent[disabled], [_nghost-%COMP%] .mat-button.mat-warn[disabled], [_nghost-%COMP%] .mat-button[disabled][disabled], [_nghost-%COMP%] .mat-icon-button.mat-primary[disabled], [_nghost-%COMP%] .mat-icon-button.mat-accent[disabled], [_nghost-%COMP%] .mat-icon-button.mat-warn[disabled], [_nghost-%COMP%] .mat-icon-button[disabled][disabled], [_nghost-%COMP%] .mat-stroked-button.mat-primary[disabled], [_nghost-%COMP%] .mat-stroked-button.mat-accent[disabled], [_nghost-%COMP%] .mat-stroked-button.mat-warn[disabled], [_nghost-%COMP%] .mat-stroked-button[disabled][disabled]{border:1px solid lightgray}[_nghost-%COMP%] h1, [_nghost-%COMP%] h2, [_nghost-%COMP%] h3, [_nghost-%COMP%] h4, [_nghost-%COMP%] h5, [_nghost-%COMP%] h6{margin-top:0!important;margin-bottom:0!important}.footer-fixed[_ngcontent-%COMP%]{position:fixed!important}.footer-sticky[_ngcontent-%COMP%]{position:sticky}@media (max-width: 768px){.footer-fixed[_ngcontent-%COMP%]{position:sticky}}.fb-heading[_ngcontent-%COMP%]{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:36px}.fb-heading-followup[_ngcontent-%COMP%]{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:24px}.qe-form[_ngcontent-%COMP%]{margin-bottom:96px}.qe-form-multiple[_ngcontent-%COMP%]{margin-bottom:8px}.fb-heading[_ngcontent-%COMP%]:focus{outline-color:#4478aa}[_nghost-%COMP%] .mat-step-header[aria-selected=false] .mat-step-icon-state-number{background-color:var(--ion-color-primary);color:#fff}[_nghost-%COMP%] .mat-step-header[aria-selected=true] .mat-step-icon-state-edit, [_nghost-%COMP%] .mat-step-header[aria-selected=true] .mat-step-icon-state-done{background-color:#0b58a3;color:#fff}"] }); }
|
|
1188
1356
|
}
|
|
1189
1357
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
|
|
1190
1358
|
type: Component,
|
|
1191
|
-
args: [{ selector: 'app-dynamic-form', changeDetection: ChangeDetectionStrategy.Default, providers: [
|
|
1359
|
+
args: [{ selector: 'app-dynamic-form', changeDetection: ChangeDetectionStrategy.Default, providers: [QuestionControlService, {
|
|
1192
1360
|
provide: STEPPER_GLOBAL_OPTIONS,
|
|
1193
1361
|
useValue: {
|
|
1194
1362
|
showError: true,
|
|
1195
1363
|
displayDefaultIndicatorType: false
|
|
1196
1364
|
}
|
|
1197
|
-
}], template: "<p-blockUI [blocked]=\"blockUi\">\r\n <ion-spinner name=\"crescent\"></ion-spinner>\r\n</p-blockUI>\r\n<div *ngIf=\"questions && questions[0] && !showMfa\" #formMainDiv>\r\n <form focusInvalidInput [formGroup]=\"formGroupArray[activeIndex]\" [ngClass]=\"multiMode ? 'qe-form-multiple' : 'qe-form'\" (ngSubmit)=\"onSubmit()\" #questionnaireForm=\"ngForm\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"questions[0].pages[activeIndex].name\">\r\n <ion-col size=\"12\" [sizeXs]=\"sizeXs\" [sizeSm]=\"sizeSm\" [sizeMd]=\"sizeMd\" [sizeLg]=\"sizeLg\" [sizeXl]=\"sizeXl\"\r\n [offsetXs]=\"offsetXs\" [offsetSm]=\"offsetSm\" [offsetMd]=\"offsetMd\" [offsetLg]=\"offsetLg\" [offsetXl]=\"offsetXl\">\r\n <div class=\"p-formgrid\">\r\n <div [innerHtml]=\"(questionNumber ? questionNumber + ' ' : '') + questions[0].pages[activeIndex].name | dynamicTranslate:dynamicParam | trustHtml\" [ngClass]=\"multiMode ? 'fb-heading-followup' : 'fb-heading'\">\r\n </div>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col style=\"padding-left: 0px;\" class=\"ion-padding-end\" size=\"12\" [sizeXs]=\"sizeXs\" [sizeSm]=\"sizeSm\"\r\n [sizeMd]=\"sizeMd\" [sizeLg]=\"sizeLg\" [sizeXl]=\"sizeXl\" [offsetXs]=\"offsetXs\" [offsetSm]=\"offsetSm\"\r\n [offsetMd]=\"offsetMd\" [offsetLg]=\"offsetLg\" [offsetXl]=\"offsetXl\">\r\n <div class=\"p-formgrid\" style=\"padding-left: 8px;\">\r\n <ng-container *ngFor=\"let element of questions[0].pages[activeIndex].elements; let i = index\">\r\n <ng-container *ngIf=\"element.type==='panel'\">\r\n\r\n <ion-row *ngIf=\"visibleIf(element.visibleIf,'',formGroupArray[activeIndex],element)\">\r\n <!-- <ion-col style=\"padding-left: 0px;\"> -->\r\n <div style=\"padding-left: 0px;\" class=\"heading\">\r\n {{element.title}}\r\n </div>\r\n <!-- </ion-col> -->\r\n </ion-row>\r\n <ion-row>\r\n <ng-container *ngFor=\"let panelElement of element.elements\">\r\n <ion-col size=\"12\" [sizeXl]=\"panelElement.sizeXL ? panelElement.sizeXL : 3\" style=\"padding-left: 0px; max-width: fit-content;\"\r\n [sizeLg]=\"panelElement.sizeLG ? panelElement.sizeLG : 3\" [sizeSm]=\"panelElement.sizeSM ? panelElement.sizeSM : 12\"\r\n [sizeXs]=\"panelElement.sizeXS ? panelElement.sizeXS : 12\" [sizeMd]=\"panelElement.sizeMD ? panelElement.sizeMD : 4\"\r\n *ngIf=\"panelElement.colElement==='COL1' && visibleIf(panelElement.visibleIf,panelElement.name,formGroupArray[activeIndex],panelElement)\"\r\n [ngClass]=\"shouldFitContent(element.elements) ? 'col-fit-content' : ''\">\r\n\r\n <app-question [potentialIssueId]=\"potentialIssueId\" [question]=\"panelElement\" [form]=\"formGroupArray[activeIndex]\"\r\n [forScreenQuestionnaire]=\"forScreenQuestionnaire\" (onDynamicParamUpdate)=\"updateDynamicParam($event)\" [dynamicParam]=\"dynamicParam\">\r\n </app-question>\r\n\r\n </ion-col>\r\n <!-- <ion-col size=\"1\" *ngIf=\"panelElement.description\" style=\"padding-top: 28px\">\r\n <app-overlay-info [overlayText]=\"panelElement.description\"></app-overlay-info>\r\n </ion-col> -->\r\n </ng-container>\r\n </ion-row>\r\n <!-- </ion-col>\r\n </ion-row> -->\r\n\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"element.type!='panel' && element.type!='hidden' && visibleIf(element.visibleIf,element.name,formGroupArray[activeIndex],element)\">\r\n <ion-row>\r\n <ion-col [sizeLg]=\"element.sizeLG>0?element.sizeLG:''\" [sizeSm]=\"element.sizeSM\"\r\n [sizeXs]=\"element.sizeXS\" [sizeXl]=\"element.sizeXL>0 ?element.sizeXL:''\"\r\n [sizeMd]=\"element.sizeMD>0 ?element.sizeMD:''\" style=\"padding-left: 0px;\">\r\n <!-- <div class=\"field\"> -->\r\n <app-question [potentialIssueId]=\"potentialIssueId\" [question]=\"element\" [form]=\"formGroupArray[activeIndex]\"\r\n [forScreenQuestionnaire]=\"forScreenQuestionnaire\" [dynamicParam]=\"dynamicParam\" \r\n (onDynamicParamUpdate)=\"updateDynamicParam($event)\" >\r\n </app-question>\r\n <!-- </div> -->\r\n </ion-col>\r\n <!-- <ion-col size=\"1\" *ngIf=\"element.description\" style=\"padding-top: 35px\">\r\n <app-overlay-info [overlayText]=\"element.description\"></app-overlay-info>\r\n </ion-col> -->\r\n </ion-row>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ion-col>\r\n <ion-col class=\"ion-padding-start\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" [sizeMd]=\"pageType==='POPUP'?6:12\"\r\n [sizeLg]=\"pageType==='POPUP'?6:10\" [sizeXl]=\"pageType==='POPUP'?5:10\" style=\"padding-left: 0px;\"\r\n [offsetXl]=\"pageType==='POPUP'?0:1\" [offsetLg]=\"pageType==='POPUP'?0:1\">\r\n <div class=\"p-formgrid\" style=\"padding-left: 8px;\">\r\n <ng-container *ngFor=\"let element of questions[0].pages[activeIndex].elements; let i = index\">\r\n <ng-container *ngIf=\" visibleIf(element.visibleIf,'',formGroupArray[activeIndex],element)\">\r\n <ion-row>\r\n <ng-container *ngFor=\"let panelElement of element.elements\">\r\n <ion-col [sizeSm]=\"panelElement.sizeSM\" [sizeXs]=\"panelElement.sizeXS\"\r\n [sizeLg]=\"panelElement.sizeLG>0?panelElement.sizeLG:''\"\r\n [sizeXl]=\"panelElement.sizeXL>0 ?panelElement.sizeXL:''\" style=\"padding-left: 0px;\"\r\n [sizeMd]=\"panelElement.sizeMD>0?panelElement.sizeMD:''\" *ngIf=\"panelElement.colElement==='COL2' &&\r\n visibleIf(panelElement.visibleIf,panelElement.name,formGroupArray[activeIndex],panelElement)\">\r\n <div>\r\n <panel-app [question]=\"panelElement\" [form]=\"formGroupArray[activeIndex]\"\r\n [forScreenQuestionnaire]=\"forScreenQuestionnaire\">\r\n </panel-app>\r\n </div>\r\n </ion-col>\r\n </ng-container>\r\n </ion-row>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n <ion-footer *ngIf=\"!hideFooter\"\r\n [ngClass]=\"'footer-fixed'\">\r\n <div style=\"text-align: right; background: white; margin-left: -5px;\"\r\n *ngIf=\"hideStep && pageType!='POPUP' && pageType!='SCREEN'\">\r\n <div class=\"grid p-nogutter\" style=\"height: 60px;\">\r\n <div class=\"col-6 ion-text-left\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" fill=\"outline\" class=\"button\" (click)=\"cancelAction()\" type=\"submit\">\r\n Cancel\r\n </ion-button>\r\n </div>\r\n <div class=\"col-6 ion-text-right\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" (click)=\"complete()\" fill=\"solid\" type=\"submit\">\r\n Next\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"text-align: right; background: white; margin-left: -5px;\"\r\n *ngIf=\"hideStep && pageType=='SCREEN' && questions[0].isFirstPageSubmit\">\r\n <div class=\"grid p-nogutter\" style=\"height: 60px;\">\r\n <div class=\"col-6 ion-text-left\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" fill=\"outline\" class=\"button\" (click)=\"cancelAction()\" type=\"submit\">\r\n Cancel\r\n </ion-button>\r\n </div>\r\n <div class=\"col-6 ion-text-right\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" (click)=\"complete()\" fill=\"solid\" type=\"submit\">\r\n Done\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n <ion-grid *ngIf=\"hideStep && pageType==='POPUP'\">\r\n <ion-row>\r\n <ion-col class=\"ion-text-left ion-padding-start\">\r\n <ion-button shape=\"round\" fill=\"outline\" class=\"button\" (click)=\"cancelPopUp()\" type=\"submit\">\r\n Cancel\r\n </ion-button>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right ion-padding-end\">\r\n <ion-button shape=\"round\" (click)=\"complete()\" fill=\"solid\" type=\"submit\">\r\n Add\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n\r\n\r\n\r\n <div *ngIf=\"!hideStep\">\r\n <mat-horizontal-stepper linear #matHorizontalStepper [selectedIndex]=\"questions[0].stepCounter\"\r\n (selectionChange)=\"stepChanged($event);\" style=\"text-align: -webkit-center;\" aria-busy=\"true\">\r\n <mat-step *ngFor=\"let element of questions[0].pages; let i = index;\" [stepControl]=\"formGroupArray[i]\"\r\n [completed]=\" i < activeIndex \">\r\n\r\n <div>\r\n <ng-template matStepLabel>{{questions[0].pages[i].navigationTitle}}</ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"!questions[0].isFirstPageSubmit && !isLast && isFirst && !isEnableBackButton\">\r\n <button class=\"reverse\" editable=\"false\" disabled mat-button matStepperPrevious>Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"nextPage(activeIndex)\">Next</button>\r\n </div>\r\n\r\n <div *ngIf=\"questions[0].isFirstPageSubmit\">\r\n <button class=\"reverse\" (click)=\"cancelAction()\" mat-button matStepperPrevious>Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"complete()\">Next</button>\r\n </div>\r\n\r\n <div *ngIf=\"!questions[0].isFirstPageSubmit && isLast && !isFirst\">\r\n <button class=\"reverse\" mat-button matStepperPrevious (click)=\"prevPage(activeIndex)\">Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"complete()\">Done</button>\r\n </div>\r\n\r\n <div *ngIf=\"!questions[0].isFirstPageSubmit && !isLast && !isFirst\">\r\n <button class=\"reverse\" editable=\"false\" mat-button matStepperPrevious \r\n (click)=\"prevPage(activeIndex)\">Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"nextPage(activeIndex)\">Next</button>\r\n </div>\r\n\r\n <div *ngIf=\"isEnableBackButton && !questions[0].isFirstPageSubmit && !isLast && isFirst\">\r\n <button class=\"reverse\" editable=\"false\" mat-button matStepperPrevious \r\n (click)=\"cancelAction()\">Back</button>\r\n <button class=\"forward\" mat-button matStepperNext (click)=\"nextPage(activeIndex)\">Next</button>\r\n </div>\r\n\r\n\r\n </mat-step>\r\n\r\n </mat-horizontal-stepper>\r\n\r\n </div>\r\n\r\n </ion-footer>\r\n </form>\r\n\r\n\r\n\r\n\r\n <!-- <div *ngIf=\"payLoad\" class=\"form-row\">\r\n <strong>Saved the following values</strong><br>{{payLoad}}\r\n </div> -->\r\n\r\n\r\n</div>\r\n\r\n<app-mfa #mfa [user]=\"ls.getUser()\" *ngIf=\"showMfa\" (success)=\"saveScreenQuestionnaire($event)\" [data]=\"mfaData\" [requestCode]=\"true\" \r\n [mfaError]=\"mfaError\" [hideButtons]=\"true\"></app-mfa>", styles: [":host ::ng-deep .flex-container.ng-star-inserted{display:inline-flex!important}:host ::ng-deep .p-fluid .p-buttonset{display:initial!important}:host ::ng-deep form{margin-left:0}:host ::ng-deep .p-fluid .p-calendar{display:inline-flex!important;width:60%!important}:host ::ng-deep .p-fluid .p-calendar .p-inputtext{width:100%!important}:host ::ng-deep .p-fluid .p-autocomplete{display:inline-flex!important}.pageTitle{font-weight:600;position:absolute;right:48%}@media (max-width: 280px){:host ::ng-deep span.start{font-size:18px;top:46px;position:relative}:host ::ng-deep .mat-stepper-horizontal-line{display:none}:host ::ng-deep .mat-horizontal-stepper-header{padding:0 28px!important}:host ::ng-deep .mat-horizontal-stepper-header-container{left:46px!important}:host ::ng-deep .mat-step-label{display:none!important}}@media (max-width: 576px){:host ::ng-deep span.p-steps-title.ng-star-inserted{display:none!important}:host ::ng-deep .p-steps.p-steps-item.p-menuitem-link.p-steps-title{display:none!important}:host ::ng-deep .backinc{position:absolute;left:25px}:host ::ng-deep .mat-step-label{display:none!important}:host ::ng-deep .mat-step-label.mat-step-label-active{display:none!important;position:absolute;bottom:0;right:0}}@media (max-width: 576px) and (min-width: 576px){.pageTitle{display:none!important}.backinc{position:absolute;left:125px}}@media (max-width: 415px){:host ::ng-deep .mat-horizontal-stepper-header-container{width:60%!important;left:46px!important}:host ::ng-deep .reverse{left:5px!important}:host ::ng-deep .forward{right:5px!important}}:host ::ng-deep .mat-stepper-horizontal,:host ::ng-deep .mat-stepper-vertical{height:70px}:host ::ng-deep .mat-horizontal-stepper-header{padding:0 40px}:host ::ng-deep .mat-step-label{min-width:120px;bottom:5px}:host ::ng-deep .mat-step-header .mat-step-label.mat-step-label-active{bottom:5px}:host ::ng-deep .mat-step-header:hover:hover{background-color:#fff!important}:host ::ng-deep .mat-horizontal-stepper-header{pointer-events:none!important}:host ::ng-deep .mat-step-header .mat-step-icon{background-color:#bdcad2;color:#bdcad2}:host ::ng-deep .mat-step-header .mat-step-icon-selected{color:#fff;background-color:var(--ion-color-primary)}:host ::ng-deep .mat-step-header .mat-step-label.mat-step-label-selected{color:var(--ion-color-primary)}:host ::ng-deep mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:var(--ion-color-primary)!important;font-weight:700}:host ::ng-deep .mat-step-header .mat-step-icon-selected mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:#fff!important;font-weight:700}:host ::ng-deep button{background-color:var(--ion-color-primary);color:#fff}:host ::ng-deep .reverse{background-color:#fff;border:1px solid var(--ion-color-primary);border-radius:30px;color:var(--ion-color-primary)!important;position:absolute;bottom:15px;left:40px;cursor:pointer}:host ::ng-deep .mat-horizontal-stepper-header-container{width:50%;position:sticky;left:100px}:host ::ng-deep .forward{position:absolute;right:40px;bottom:15px;border-radius:30px;cursor:pointer}:host ::ng-deep .reset{position:absolute;right:50px;bottom:40px;border-radius:30px}:host ::ng-deep .placeholder{visibility:hidden}:host ::ng-deep .ui-state-complete .ui-steps-number{background-color:green!important}:host ::ng-deep .p-steps .p-steps-item.p-highlight .p-steps-number{background-color:var(--ion-color-primary)!important;background-size:20px;color:var(--ion-color-primary)!important}:host ::ng-deep .p-steps .p-steps-item .p-menuitem-link .p-steps-number{color:var(--ion-color-grey);background-size:15px;font-size:.857rem;min-width:1.714rem;height:1.714rem;line-height:1.714rem}:host ::ng-deep div.p-formgrid.p-grid.ng-star-inserted{flex-wrap:wrap!important}:host ::ng-deep .p-steps .p-steps-item.p-menuitem-link .p-steps-number{background-color:var(--ion-color-primary-shade)}:host ::ng-deep ion-footer{bottom:0}:host ::ng-deep .second{right:45%}:host ::ng-deep .mat-button.mat-primary[disabled],:host ::ng-deep .mat-button.mat-accent[disabled],:host ::ng-deep .mat-button.mat-warn[disabled],:host ::ng-deep .mat-button[disabled][disabled],:host ::ng-deep .mat-icon-button.mat-primary[disabled],:host ::ng-deep .mat-icon-button.mat-accent[disabled],:host ::ng-deep .mat-icon-button.mat-warn[disabled],:host ::ng-deep .mat-icon-button[disabled][disabled],:host ::ng-deep .mat-stroked-button.mat-primary[disabled],:host ::ng-deep .mat-stroked-button.mat-accent[disabled],:host ::ng-deep .mat-stroked-button.mat-warn[disabled],:host ::ng-deep .mat-stroked-button[disabled][disabled]{border:1px solid lightgray}:host ::ng-deep h1,:host ::ng-deep h2,:host ::ng-deep h3,:host ::ng-deep h4,:host ::ng-deep h5,:host ::ng-deep h6{margin-top:0!important;margin-bottom:0!important}.footer-fixed{position:fixed!important}.footer-sticky{position:sticky}@media (max-width: 768px){.footer-fixed{position:sticky}}.fb-heading{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:36px}.fb-heading-followup{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:24px}.qe-form{margin-bottom:96px}.qe-form-multiple{margin-bottom:8px}\n"] }]
|
|
1198
|
-
}], () => [{ type: i1.QuestionService }, { type: i2.QuestionnaireService }, { type: i3.NavController }, { type: i4.QuestionControlService }, { type: i5.UtilService }, { type: i6.TranslateService }, { type: i7.LoggerService }, { type: i8.ValidationService }, { type: i0.ElementRef }, { type: i9.ActivatedRoute }, { type: i10.Storage }, { type: i11.LoginService }, { type: i12.CaptchaService }], { mfa: [{
|
|
1365
|
+
}], template: "<p-blockUI [blocked]=\"blockUi\">\r\n <ion-spinner name=\"crescent\"></ion-spinner>\r\n</p-blockUI>\r\n<div *ngIf=\"questions && questions[0] && !showMfa\" #formMainDiv>\r\n <form focusInvalidInput [formGroup]=\"formGroupArray[activeIndex]\" [ngClass]=\"multiMode ? 'qe-form-multiple' : 'qe-form'\" (ngSubmit)=\"onSubmit()\" #questionnaireForm=\"ngForm\">\r\n <ion-grid>\r\n <ion-row *ngIf=\"questions[0].pages[activeIndex].name\">\r\n <ion-col size=\"12\" [sizeXs]=\"sizeXs\" [sizeSm]=\"sizeSm\" [sizeMd]=\"sizeMd\" [sizeLg]=\"sizeLg\" [sizeXl]=\"sizeXl\"\r\n [offsetXs]=\"offsetXs\" [offsetSm]=\"offsetSm\" [offsetMd]=\"offsetMd\" [offsetLg]=\"offsetLg\" [offsetXl]=\"offsetXl\">\r\n <div class=\"p-formgrid\">\r\n <div tabindex=\"0\" [innerHtml]=\"(questionNumber ? questionNumber + ' ' : '') + questions[0].pages[activeIndex].name | dynamicTranslate:dynamicParam | trustHtml\" [ngClass]=\"multiMode ? 'fb-heading-followup' : 'fb-heading'\" role=\"heading\" aria-level=\"1\">\r\n </div>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row>\r\n <ion-col style=\"padding-left: 0px;\" class=\"ion-padding-end\" size=\"12\" [sizeXs]=\"sizeXs\" [sizeSm]=\"sizeSm\"\r\n [sizeMd]=\"sizeMd\" [sizeLg]=\"sizeLg\" [sizeXl]=\"sizeXl\" [offsetXs]=\"offsetXs\" [offsetSm]=\"offsetSm\"\r\n [offsetMd]=\"offsetMd\" [offsetLg]=\"offsetLg\" [offsetXl]=\"offsetXl\">\r\n <div class=\"p-formgrid\" style=\"padding-left: 8px;\">\r\n <ng-container *ngFor=\"let element of questions[0].pages[activeIndex].elements; let i = index\">\r\n <ng-container *ngIf=\"element.type==='panel'\">\r\n\r\n <ion-row *ngIf=\"visibleIf(element.visibleIf,'',formGroupArray[activeIndex],element)\">\r\n <!-- <ion-col style=\"padding-left: 0px;\"> -->\r\n <div style=\"padding-left: 0px;\" class=\"heading\" role=\"heading\" aria-level=\"1\">\r\n {{element.title}}\r\n </div>\r\n <!-- </ion-col> -->\r\n </ion-row>\r\n <ion-row>\r\n <ng-container *ngFor=\"let panelElement of element.elements\">\r\n <div class=\"share-row\" *ngIf=\"panelElement.colElement==='COL1' && visibleIf(panelElement.visibleIf,panelElement.name,formGroupArray[activeIndex],panelElement)\">\r\n\r\n <app-question [potentialIssueId]=\"potentialIssueId\" [question]=\"panelElement\" [form]=\"formGroupArray[activeIndex]\"\r\n [forScreenQuestionnaire]=\"forScreenQuestionnaire\" (onDynamicParamUpdate)=\"updateDynamicParam($event)\" [dynamicParam]=\"dynamicParam\">\r\n </app-question>\r\n </div>\r\n\r\n \r\n <!-- <ion-col size=\"1\" *ngIf=\"panelElement.description\" style=\"padding-top: 28px\">\r\n <app-overlay-info [overlayText]=\"panelElement.description\"></app-overlay-info>\r\n </ion-col> -->\r\n </ng-container>\r\n </ion-row>\r\n <!-- </ion-col>\r\n </ion-row> -->\r\n\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"element.type!='panel' && element.type!='hidden' && visibleIf(element.visibleIf,element.name,formGroupArray[activeIndex],element)\">\r\n <ion-row>\r\n <ion-col [sizeLg]=\"element.sizeLG>0?element.sizeLG:''\" [sizeSm]=\"element.sizeSM\"\r\n [sizeXs]=\"element.sizeXS\" [sizeXl]=\"element.sizeXL>0 ?element.sizeXL:''\"\r\n [sizeMd]=\"element.sizeMD>0 ?element.sizeMD:''\" style=\"padding-left: 0px;\">\r\n <!-- <div class=\"field\"> -->\r\n <app-question [potentialIssueId]=\"potentialIssueId\" [question]=\"element\" [form]=\"formGroupArray[activeIndex]\"\r\n [forScreenQuestionnaire]=\"forScreenQuestionnaire\" [dynamicParam]=\"dynamicParam\" \r\n (onDynamicParamUpdate)=\"updateDynamicParam($event)\" >\r\n </app-question>\r\n <!-- </div> -->\r\n </ion-col>\r\n <!-- <ion-col size=\"1\" *ngIf=\"element.description\" style=\"padding-top: 35px\">\r\n <app-overlay-info [overlayText]=\"element.description\"></app-overlay-info>\r\n </ion-col> -->\r\n </ion-row>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ion-col>\r\n <ion-col class=\"ion-padding-start\" size=\"12\" sizeSm=\"12\" sizeXs=\"12\" [sizeMd]=\"pageType==='POPUP'?6:12\"\r\n [sizeLg]=\"pageType==='POPUP'?6:10\" [sizeXl]=\"pageType==='POPUP'?5:10\" style=\"padding-left: 0px;\"\r\n [offsetXl]=\"pageType==='POPUP'?0:1\" [offsetLg]=\"pageType==='POPUP'?0:1\">\r\n <div class=\"p-formgrid\" style=\"padding-left: 8px;\">\r\n <ng-container *ngFor=\"let element of questions[0].pages[activeIndex].elements; let i = index\">\r\n <ng-container *ngIf=\" visibleIf(element.visibleIf,'',formGroupArray[activeIndex],element)\">\r\n \r\n <ng-container *ngFor=\"let panelElement of element.elements\">\r\n <div *ngIf=\"panelElement.colElement==='COL2' &&\r\n visibleIf(panelElement.visibleIf,panelElement.name,formGroupArray[activeIndex],panelElement)\">\r\n <div>\r\n <panel-app [question]=\"panelElement\" [form]=\"formGroupArray[activeIndex]\"\r\n [forScreenQuestionnaire]=\"forScreenQuestionnaire\">\r\n </panel-app>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n <ion-footer *ngIf=\"!hideFooter\"\r\n [ngClass]=\"'footer-fixed'\">\r\n <div style=\"text-align: right; background: white; margin-left: -5px;\"\r\n *ngIf=\"hideStep && pageType!='POPUP' && pageType!='SCREEN'\">\r\n <div class=\"grid p-nogutter\" style=\"height: 60px;\">\r\n <div class=\"col-6 ion-text-left\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" fill=\"outline\" class=\"button\" (click)=\"cancelAction()\" type=\"submit\">\r\n Cancel\r\n </ion-button>\r\n </div>\r\n <div class=\"col-6 ion-text-right\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" (click)=\"complete()\" fill=\"solid\" type=\"submit\">\r\n Next\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"text-align: right; background: white; margin-left: -5px;\"\r\n *ngIf=\"hideStep && pageType=='SCREEN' && questions[0].isFirstPageSubmit\">\r\n <div class=\"grid p-nogutter\" style=\"height: 60px;\">\r\n <div class=\"col-6 ion-text-left\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" fill=\"outline\" class=\"button\" (click)=\"cancelAction()\" type=\"submit\">\r\n Cancel\r\n </ion-button>\r\n </div>\r\n <div class=\"col-6 ion-text-right\" style=\"padding: 8px;\">\r\n <ion-button shape=\"round\" (click)=\"complete()\" fill=\"solid\" type=\"submit\">\r\n Done\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n <ion-grid *ngIf=\"hideStep && pageType==='POPUP'\">\r\n <ion-row>\r\n <ion-col class=\"ion-text-left ion-padding-start\">\r\n <ion-button shape=\"round\" fill=\"outline\" class=\"button\" (click)=\"cancelPopUp()\" type=\"submit\">\r\n Cancel\r\n </ion-button>\r\n </ion-col>\r\n <ion-col class=\"ion-text-right ion-padding-end\">\r\n <ion-button shape=\"round\" (click)=\"complete()\" fill=\"solid\" type=\"submit\">\r\n Add\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-grid>\r\n\r\n\r\n\r\n\r\n <div *ngIf=\"!hideStep\">\r\n <mat-horizontal-stepper linear #matHorizontalStepper [selectedIndex]=\"questions[0].stepCounter\"\r\n (selectionChange)=\"stepChanged($event);\" style=\"text-align: -webkit-center;\" aria-busy=\"true\">\r\n <mat-step *ngFor=\"let element of questions[0].pages; let i = index;\" [stepControl]=\"formGroupArray[i]\"\r\n [completed]=\" i < activeIndex \">\r\n\r\n <div>\r\n <ng-template matStepLabel>{{questions[0].pages[i].navigationTitle}}</ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"!questions[0].isFirstPageSubmit && !isLast && isFirst && !isEnableBackButton\">\r\n <button tabindex=\"0\" class=\"reverse\" (click)=\"navCtrl.navigateRoot('claimant-induction')\" mat-button matStepperPrevious>Back</button>\r\n <button tabindex=\"0\" class=\"forward\" mat-button matStepperNext (click)=\"nextPage(activeIndex)\">Next</button>\r\n </div>\r\n\r\n <div *ngIf=\"questions[0].isFirstPageSubmit\">\r\n <button tabindex=\"0\" class=\"reverse\" (click)=\"cancelAction()\" mat-button matStepperPrevious>Back</button>\r\n <button tabindex=\"0\" class=\"forward\" mat-button matStepperNext (click)=\"complete()\">Next</button>\r\n </div>\r\n\r\n <div *ngIf=\"!questions[0].isFirstPageSubmit && isLast && !isFirst\">\r\n <button tabindex=\"0\" class=\"reverse\" mat-button matStepperPrevious (click)=\"prevPage(activeIndex)\">Back</button>\r\n <button tabindex=\"0\" class=\"forward\" mat-button matStepperNext (click)=\"complete()\">Done</button>\r\n </div>\r\n\r\n <div *ngIf=\"!questions[0].isFirstPageSubmit && !isLast && !isFirst\">\r\n <button tabindex=\"0\" class=\"reverse\" editable=\"false\" mat-button matStepperPrevious \r\n (click)=\"prevPage(activeIndex)\">Back</button>\r\n <button tabindex=\"0\" class=\"forward\" mat-button matStepperNext (click)=\"nextPage(activeIndex)\">Next</button>\r\n </div>\r\n\r\n <div *ngIf=\"isEnableBackButton && !questions[0].isFirstPageSubmit && !isLast && isFirst\">\r\n <button tabindex=\"0\" class=\"reverse\" editable=\"false\" mat-button matStepperPrevious \r\n (click)=\"cancelAction()\">Back</button>\r\n <button tabindex=\"0\" class=\"forward\" mat-button matStepperNext (click)=\"nextPage(activeIndex)\">Next</button>\r\n </div>\r\n\r\n\r\n </mat-step>\r\n\r\n </mat-horizontal-stepper>\r\n\r\n </div>\r\n\r\n </ion-footer>\r\n </form>\r\n\r\n\r\n\r\n\r\n <!-- <div *ngIf=\"payLoad\" class=\"form-row\">\r\n <strong>Saved the following values</strong><br>{{payLoad}}\r\n </div> -->\r\n\r\n\r\n</div>\r\n\r\n<app-lexis-nexis *ngIf=\"isLexisNexisPopupEnabled\" [display]=\"isLexisNexisPopupEnabled\" [page]=\"flowKey\" [userDetails]=\"userDetails\" (success)=\"onLnSuccess()\" (error)=\"onLNError()\" (usps)=\"triggerUSPS()\"></app-lexis-nexis>\r\n<app-mfa #mfa [user]=\"ls.getUser()\" *ngIf=\"showMfa\" (success)=\"saveScreenQuestionnaire($event)\" [data]=\"mfaData\" [requestCode]=\"true\" \r\n [mfaError]=\"mfaError\" [hideButtons]=\"true\"></app-mfa>", styles: [":host ::ng-deep .flex-container.ng-star-inserted{display:inline-flex!important}:host ::ng-deep .p-fluid .p-buttonset{display:initial!important}:host ::ng-deep form{margin-left:5px}:host ::ng-deep .p-fluid .p-calendar{display:inline-flex!important;width:60%!important}:host ::ng-deep .p-fluid .p-calendar .p-inputtext{width:100%!important}:host ::ng-deep .p-fluid .p-autocomplete{display:inline-flex!important}.pageTitle{font-weight:600;position:absolute;right:48%}.share-row{display:inline-block;margin-right:10px}.share-row>money-expect{float:right}@media (max-width: 280px){:host ::ng-deep span.start{font-size:18px;top:46px;position:relative}:host ::ng-deep .mat-stepper-horizontal-line{display:none}:host ::ng-deep .mat-horizontal-stepper-header{padding:0 28px!important}:host ::ng-deep .mat-horizontal-stepper-header-container{left:46px!important}:host ::ng-deep .mat-step-label{display:none!important}}@media (max-width: 576px){:host ::ng-deep span.p-steps-title.ng-star-inserted{display:none!important}:host ::ng-deep .p-steps.p-steps-item.p-menuitem-link.p-steps-title{display:none!important}:host ::ng-deep .backinc{position:absolute;left:25px}:host ::ng-deep .mat-step-label{display:none!important}:host ::ng-deep .mat-step-label.mat-step-label-active{display:none!important;position:absolute;bottom:0;right:0}}@media (max-width: 576px) and (min-width: 576px){.pageTitle{display:none!important}.backinc{position:absolute;left:125px}}@media (max-width: 415px){:host ::ng-deep .mat-horizontal-stepper-header-container{width:60%!important;left:46px!important}:host ::ng-deep .reverse{left:5px!important}:host ::ng-deep .forward{right:5px!important}}:host ::ng-deep .mat-stepper-horizontal,:host ::ng-deep .mat-stepper-vertical{height:70px}:host ::ng-deep .mat-horizontal-stepper-header{padding:0 40px}:host ::ng-deep .mat-step-label{min-width:120px;bottom:5px}:host ::ng-deep .mat-step-header .mat-step-label.mat-step-label-active{bottom:5px}:host ::ng-deep .mat-step-header:hover:hover{background-color:#fff!important}:host ::ng-deep .mat-horizontal-stepper-header{pointer-events:none!important}:host ::ng-deep .mat-step-header .mat-step-icon{background-color:#bdcad2;color:#bdcad2}:host ::ng-deep .mat-step-header .mat-step-icon-selected{color:#fff;background-color:var(--ion-color-primary)}:host ::ng-deep .mat-step-header .mat-step-label.mat-step-label-selected{color:var(--ion-color-primary)}:host ::ng-deep mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:var(--ion-color-primary)!important;font-weight:700}:host ::ng-deep .mat-step-header .mat-step-icon-selected mat-icon.mat-icon.notranslate.material-icons.mat-icon-no-color.ng-star-inserted{color:#fff!important;font-weight:700}:host ::ng-deep button{background-color:var(--ion-color-primary);color:#fff}:host ::ng-deep .reverse{background-color:#fff;border:1px solid var(--ion-color-primary);border-radius:30px;color:var(--ion-color-primary)!important;position:absolute;bottom:15px;left:40px;cursor:pointer}:host ::ng-deep .mat-horizontal-stepper-header-container{width:50%;position:sticky;left:100px}:host ::ng-deep .forward{position:absolute;right:40px;bottom:15px;border-radius:30px;cursor:pointer}:host ::ng-deep .reset{position:absolute;right:50px;bottom:40px;border-radius:30px}:host ::ng-deep .placeholder{visibility:hidden}:host ::ng-deep .ui-state-complete .ui-steps-number{background-color:green!important}:host ::ng-deep .p-steps .p-steps-item.p-highlight .p-steps-number{background-color:var(--ion-color-primary)!important;background-size:20px;color:var(--ion-color-primary)!important}:host ::ng-deep .p-steps .p-steps-item .p-menuitem-link .p-steps-number{color:var(--ion-color-grey);background-size:15px;font-size:.857rem;min-width:1.714rem;height:1.714rem;line-height:1.714rem}:host ::ng-deep div.p-formgrid.p-grid.ng-star-inserted{flex-wrap:wrap!important}:host ::ng-deep .p-steps .p-steps-item.p-menuitem-link .p-steps-number{background-color:var(--ion-color-primary-shade)}:host ::ng-deep ion-footer{bottom:0}:host ::ng-deep .second{right:45%}:host ::ng-deep .mat-button.mat-primary[disabled],:host ::ng-deep .mat-button.mat-accent[disabled],:host ::ng-deep .mat-button.mat-warn[disabled],:host ::ng-deep .mat-button[disabled][disabled],:host ::ng-deep .mat-icon-button.mat-primary[disabled],:host ::ng-deep .mat-icon-button.mat-accent[disabled],:host ::ng-deep .mat-icon-button.mat-warn[disabled],:host ::ng-deep .mat-icon-button[disabled][disabled],:host ::ng-deep .mat-stroked-button.mat-primary[disabled],:host ::ng-deep .mat-stroked-button.mat-accent[disabled],:host ::ng-deep .mat-stroked-button.mat-warn[disabled],:host ::ng-deep .mat-stroked-button[disabled][disabled]{border:1px solid lightgray}:host ::ng-deep h1,:host ::ng-deep h2,:host ::ng-deep h3,:host ::ng-deep h4,:host ::ng-deep h5,:host ::ng-deep h6{margin-top:0!important;margin-bottom:0!important}.footer-fixed{position:fixed!important}.footer-sticky{position:sticky}@media (max-width: 768px){.footer-fixed{position:sticky}}.fb-heading{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:36px}.fb-heading-followup{font-family:var(--app-font-light);color:var(--ion-color-medium-gray);font-size:24px}.qe-form{margin-bottom:96px}.qe-form-multiple{margin-bottom:8px}.fb-heading:focus{outline-color:#4478aa}:host ::ng-deep .mat-step-header[aria-selected=false] .mat-step-icon-state-number{background-color:var(--ion-color-primary);color:#fff}:host ::ng-deep .mat-step-header[aria-selected=true] .mat-step-icon-state-edit,:host ::ng-deep .mat-step-header[aria-selected=true] .mat-step-icon-state-done{background-color:#0b58a3;color:#fff}\n"] }]
|
|
1366
|
+
}], () => [{ type: i1.QuestionService }, { type: i2.QuestionnaireService }, { type: i3.NavController }, { type: i4.QuestionControlService }, { type: i5.UtilService }, { type: i6.TranslateService }, { type: i7.LoggerService }, { type: i8.ValidationService }, { type: i0.ElementRef }, { type: i9.ActivatedRoute }, { type: i10.Storage }, { type: i11.LoginService }, { type: i12.CaptchaService }, { type: i13.LexisNexisService }, { type: i9.Router }], { mfa: [{
|
|
1199
1367
|
type: ViewChild,
|
|
1200
1368
|
args: ['mfa']
|
|
1201
1369
|
}], questionnaireForm: [{
|
|
@@ -1207,8 +1375,6 @@ export class DynamicFormComponent extends BasePage {
|
|
|
1207
1375
|
type: Input
|
|
1208
1376
|
}], isEnableBackButton: [{
|
|
1209
1377
|
type: Input
|
|
1210
|
-
}], potentialIssueIdBs: [{
|
|
1211
|
-
type: Input
|
|
1212
1378
|
}], backButtonPage: [{
|
|
1213
1379
|
type: Input
|
|
1214
1380
|
}], nextButtonPage: [{
|
|
@@ -1268,6 +1434,8 @@ export class DynamicFormComponent extends BasePage {
|
|
|
1268
1434
|
type: Input
|
|
1269
1435
|
}], offsetXl: [{
|
|
1270
1436
|
type: Input
|
|
1437
|
+
}], invalid: [{
|
|
1438
|
+
type: Output
|
|
1271
1439
|
}] }); })();
|
|
1272
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DynamicFormComponent, { className: "DynamicFormComponent", filePath: "lib\\components\\questionnaire\\dynamic-form.component.ts", lineNumber:
|
|
1273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2R5bmFtaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SixPQUFPLEVBQW9CLFVBQVUsRUFBb0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBeUIsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUtyRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUl2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ2hCdEMsK0JBQXNELGtCQUFBLGNBQUE7SUFJaEQsMEJBQ007OztJQUNSLGlCQUFNLEVBQUEsRUFBQTs7O0lBTFcsZUFBaUI7SUFBakIsc0NBQWlCLHlCQUFBLHlCQUFBLHlCQUFBLHlCQUFBLDZCQUFB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QVM7bUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUcsS0FBSyxFQUFDO1lBS3ZDLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxzQkFBc0I7a0JBQTlCLEtBQUs7WUFDRyxrQkFBa0I7a0JBQTFCLEtBQUs7WUFDRyxrQkFBa0I7a0JBQTFCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFNRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNJLFdBQVc7a0JBQXBCLE1BQU07WUFDRyxVQUFVO2tCQUFuQixNQUFNO1lBQ0csT0FBTztrQkFBaEIsTUFBTTtZQUM0QixPQUFPO2tCQUF6QyxTQUFTO21CQUFDLHNCQUFzQjtZQUN4QixJQUFJO2tCQUFaLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFFRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFFRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSzs7a0ZBaERLLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm4sIEZvcm1Db250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFF1ZXN0aW9uQmFzZSB9IGZyb20gJy4vcXVlc3Rpb24tYmFzZSc7XG5pbXBvcnQgeyBRdWVzdGlvbkNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9xdWVzdGlvbi1jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwVmFsaWRhdG9ycyB9IGZyb20gJy4vQXBwVmFsaWRhdG9ycyc7XG5cbmltcG9ydCB7IFF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4vcXVlc3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU3RlcHBlclNlbGVjdGlvbkV2ZW50LCBTVEVQUEVSX0dMT0JBTF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgTWF0U3RlcHBlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xdWVzdGlvbm5haXJlL3ZhbGlkYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcbmltcG9ydCB7IENsYWltQXBwRW1wbG95ZXJEZXRhaWxzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9DbGFpbUFwcEVtcGxveWVyRGV0YWlsc01vZGVsJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVTYXZlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9RdWVzdGlvbm5haXJlU2F2ZU1vZGVsJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlUGFnZSB9IGZyb20gJy4uLy4uL3BhZ2VzL0Jhc2VQYWdlJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWwnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmFnZSB9IGZyb20gJ0Bpb25pYy9zdG9yYWdlLWFuZ3VsYXInO1xuaW1wb3J0IHsgRmJDb25zdGFudHMgfSBmcm9tICcuL0ZiQ29uc3RhbnRzJztcbmltcG9ydCB7IEVsZW1lbnRzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcXVlc3Rpb25uYWlyZS9FbGVtZW50c01vZGVsJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9FcnJvck1vZGVsJztcbmltcG9ydCB7IE1mYUNvbXBvbmVudCB9IGZyb20gJy4uL21mYS9tZmEuY29tcG9uZW50JztcbmltcG9ydCB7IExvYWRlck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvTG9hZGVyTW9kZWwnO1xuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENhcHRjaGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FwdGNoYS9jYXB0Y2hhLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWR5bmFtaWMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICBwcm92aWRlcnM6IFtRdWVzdGlvblNlcnZpY2UsIFF1ZXN0aW9uQ29udHJvbFNlcnZpY2UsIHtcbiAgICBwcm92aWRlOiBTVEVQUEVSX0dMT0JBTF9PUFRJT05TLFxuICAgIHVzZVZhbHVlOiB7XG4gICAgICBzaG93RXJyb3I6IHRydWUsXG4gICAgICBkaXNwbGF5RGVmYXVsdEluZGljYXRvclR5cGU6IGZhbHNlXG4gICAgfVxuICB9XSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VQYWdlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBcbiAgQFZpZXdDaGlsZCgnbWZhJykgbWZhOiBNZmFDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgncXVlc3Rpb25uYWlyZUZvcm0nLCB7c3RhdGljIDogZmFsc2V9KSBcbiAgcHVibGljIHF1ZXN0aW9ubmFpcmVGb3JtOiBOZ0Zvcm07XG4gIHB1YmxpYyBwb3RlbnRpYWxJc3N1ZUlkOiBudW1iZXI7XG4gIHB1YmxpYyBibG9ja1VpID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93TWZhID0gZmFsc2U7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uczogUXVlc3Rpb25CYXNlPHN0cmluZz5bXSA9IFtdO1xuICBASW5wdXQoKSBmb3JTY3JlZW5RdWVzdGlvbm5haXJlOiBRdWVzdGlvbkJhc2U8Ym9vbGVhbj47XG4gIEBJbnB1dCgpIGlzRW5hYmxlQmFja0J1dHRvbjpCb29sZWFuO1xuICBASW5wdXQoKSBwb3RlbnRpYWxJc3N1ZUlkQnM6IGFueTtcbiAgQElucHV0KCkgYmFja0J1dHRvblBhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgbmV4dEJ1dHRvblBhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgcGFnZVR5cGU6IHN0cmluZztcbiAgQElucHV0KCkgaGlkZUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtdWx0aU1vZGU6IGJvb2xlYW4gPSBmYWxzZTsgLy93aGVuIG11bHRpcGxlIGZvcm1zIGFyZSBkaXNwbGF5ZWQgb25lIGJlbG93IHRoZSBhbm90aGVyXG4gIEBJbnB1dCgpIGxvYWRlclNlcnZpY2U6c3RyaW5nO1xuICBwdWJsaWMgbG9hZGVyTW9kZWwgOiBMb2FkZXJNb2RlbDtcbiAgLyoqXG4gICAqIHdoZW4gYXV0b1NhdmUgaXMgZmFsc2UsIGNvbXBvbmVudCB3aWxsIG9ubHkgZW1pdCB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gYnVpbGVyIGRhdGEgd2hpY2ggbmVlZHMgdG8gYmUgc2F2ZWQgYnkgdGhlIGNhbGxpbmcgY29tcG9uZW50XG4gICAqIG9ubHkgYXBwbGljYWJsZSB3aGVuIHBhZ2VUeXBlIGlzIG5vdCBQT1BVUCBhbmQgSlNPTlxuICAqKi9cbiAgQElucHV0KCkgYXV0b1NhdmU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBtZmFSZXF1aXJlZCA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIG1vZGVsQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgb25Db21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBWaWV3Q2hpbGQoJ21hdEhvcml6b250YWxTdGVwcGVyJykgc3RlcHBlcjogTWF0U3RlcHBlcjtcbiAgQElucHV0KCkgZGF0YTogYW55O1xuICBASW5wdXQoKSByZWFkT25seUZpZWxkczogc3RyaW5nW107XG4gIEBJbnB1dCgpIGZvcm1SZWFkT25seTogQm9vbGVhbjtcbiAgQElucHV0KCkgcXVlcnlNb2RlbDogUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWw7XG4gIEBJbnB1dCgpIGR5bmFtaWNQYXJhbSA6IGFueTtcbiAgQElucHV0KCkgZm9ybURhdGE6IGFueTtcbiAgQElucHV0KCkgcXVlc3Rpb25OdW1iZXI6IG51bWJlciA9IG51bGw7XG5cbiAgQElucHV0KCkgc2l6ZVhzIDogbnVtYmVyO1xuICBASW5wdXQoKSBzaXplU20gOiBudW1iZXI7XG4gIEBJbnB1dCgpIHNpemVNZCA6IG51bWJlcjtcbiAgQElucHV0KCkgc2l6ZUxnIDogbnVtYmVyO1xuICBASW5wdXQoKSBzaXplWGwgOiBudW1iZXI7XG5cbiAgQElucHV0KCkgb2Zmc2V0WHMgOiBudW1iZXI7XG4gIEBJbnB1dCgpIG9mZnNldFNtIDogbnVtYmVyO1xuICBASW5wdXQoKSBvZmZzZXRNZCA6IG51bWJlcjtcbiAgQElucHV0KCkgb2Zmc2V0TGcgOiBudW1iZXI7XG4gIEBJbnB1dCgpIG9mZnNldFhsIDogbnVtYmVyO1xuXG4gIC8vIGZvcm06IEZvcm1Hcm91cDtcbiAgZm9ybUdyb3VwQXJyYXk6IFVudHlwZWRGb3JtR3JvdXBbXSA9IFtdO1xuICBwYXlMb2FkID0gJyc7XG4gIGl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gIGlzRmlyc3Q6IGJvb2xlYW4gPSB0cnVlO1xuICBpc0xhc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3VibWl0dGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGhpZGVTdGVwOiBib29sZWFuID0gZmFsc2U7XG4gIGlkZW50aWZpZXI6IHN0cmluZyA9IFwiXCI7XG4gIGFjdGl2ZUluZGV4OiBudW1iZXIgPSAwO1xuICBlcnJvck9jY3VyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWZhRGF0YSA6IGFueTtcbiAgbWZhRXJyb3IgOiBFcnJvck1vZGVsO1xuICBzc25Gb3JDU1IgOiBzdHJpbmc7XG4gIFxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcWVzOiBRdWVzdGlvblNlcnZpY2UsIHB1YmxpYyBxdWVzdGlvbm5haXJlU2VydmljZTogUXVlc3Rpb25uYWlyZVNlcnZpY2UsIHB1YmxpYyBuYXZDdHJsOiBOYXZDb250cm9sbGVyLFxuICAgIHByaXZhdGUgcWNzOiBRdWVzdGlvbkNvbnRyb2xTZXJ2aWNlLCBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UscHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHB1YmxpYyB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UsIHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHVibGljIHN0b3JhZ2UgOiBTdG9yYWdlLCBwdWJsaWMgbHMgOiBMb2dpblNlcnZpY2UsIHB1YmxpYyBjYXB0Y2hhIDogQ2FwdGNoYVNlcnZpY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3RvcmFnZS5jcmVhdGUoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiU3RvcmFnZSBEQiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS5cIik7XG4gICAgfSlcbiAgfVxuXG4gIC8qVGhpcyB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBASW5wdXQgJ2Zvcm1EYXRhJyB2YWx1ZSBpcyBjaGFuZ2VkIGZvciB0aGlzIGNvbnRyb2wqLyAgIFxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYoY2hhbmdlcy5mb3JtRGF0YT8uY3VycmVudFZhbHVlKXtcbiAgICAgIGlmKGNoYW5nZXMuZm9ybURhdGEuY3VycmVudFZhbHVlKXtcbiAgICAgICAgdGhpcy5zZXRGb3JtVmFsdWVzKGNoYW5nZXMuZm9ybURhdGEuY3VycmVudFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoY2hhbmdlcy5yZWFkT25seUZpZWxkcz8uY3VycmVudFZhbHVlKXtcbiAgICAgIGZvciAobGV0IGNudHJsTmFtZSBvZiBjaGFuZ2VzLnJlYWRPbmx5RmllbGRzLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkpIHtcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cEFycmF5W3RoaXMuYWN0aXZlSW5kZXhdPy5nZXQoY250cmxOYW1lKS5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYoY2hhbmdlcy5yZWFkT25seUZpZWxkcz8ucHJldmlvdXNWYWx1ZSAmJiBjaGFuZ2VzLnJlYWRPbmx5RmllbGRzLmN1cnJlbnRWYWx1ZSA9PSBudWxsKXtcbiAgICAgIGZvciAobGV0IGNudHJsTmFtZSBvZiBjaGFuZ2VzLnJlYWRPbmx5RmllbGRzLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF0/LmdldChjbnRybE5hbWUpKSB7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRGb3JtVmFsdWVzKGRhdGEpe1xuICAgIE9iamVjdC5rZXlzKGRhdGEpXG4gICAgICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHF1ZXN0aW9uID0gdGhpcy5nZXRGb3JtQ29udHJvbENvbmZpZ3VyYXRpb24oa2V5KTtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVUb1NldCA9IGRhdGFba2V5XTtcbiAgICAgICAgICAgICAgICBpZihxdWVzdGlvbil7XG4gICAgICAgICAgICAgICAgICAvKiogRm9yIGRyb3Bkb3duIGZvcm0gY29udHJvbCwgZXhwZWN0aW5nIHRvIGdldCBkYXRhIGluIGZvcm0ge3ZhbHVlIDogXCJzb21lVmFsdWVcIiwgdGV4dDogbnVsbH0uXG4gICAgICAgICAgICAgICAgICAgKiBCYXNlZCBvbiB0aGUgdmFsdWUgYXR0cmlidXRlLCBvcHRpb24gd2lsbCBiZSBzZXQgb24gZm9ybSBjb250cm9sIGFmdGVyIHJlYWRpbmcgaXQgZnJvbSBjaG9pY2VzXG4gICAgICAgICAgICAgICAgICAgKiBhcnJheS5cbiAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICBpZih2YWx1ZVRvU2V0ICYmIHF1ZXN0aW9uLnR5cGUgPT0gJ2Ryb3Bkb3duJyl7XG4gICAgICAgICAgICAgICAgICBsZXQgY2hvaWNlID0gcXVlc3Rpb24uY2hvaWNlcy5maWx0ZXIobyA9PiBvLnZhbHVlID09ICh2YWx1ZVRvU2V0Py52YWx1ZSA/IHZhbHVlVG9TZXQudmFsdWUgOiB2YWx1ZVRvU2V0KSlbMF07XG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlSW5Gb3JtQ29udHJvbChrZXksIGNob2ljZSk7XG4gICAgICAgICAgICAgICAgIH0gZWxzZSBpZih2YWx1ZVRvU2V0ICYmIHF1ZXN0aW9uLmlucHV0VHlwZSA9PSAnZGF0ZScpe1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUluRm9ybUNvbnRyb2woa2V5LCB2YWx1ZVRvU2V0KTtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUluRm9ybUNvbnRyb2woa2V5LCB2YWx1ZVRvU2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICB9XG5cbiAgc2V0VmFsdWVJbkZvcm1Db250cm9sKG5hbWUsIHZhbHVlKXtcbiAgICBpZih0aGlzLmZvcm1Hcm91cEFycmF5ICYmIHRoaXMuZm9ybUdyb3VwQXJyYXkubGVuZ3RoID4gMCl7XG4gICAgICBsZXQgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF0/LmNvbnRyb2xzW25hbWVdO1xuICAgICAgaWYoY29udHJvbCl7XG4gICAgICAgIGNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdzZXQgdmFsdWUgaW4gbWV0aG9kID0gJyArIG5hbWUsdmFsdWUsIGNvbnRyb2wudmFsdWUsIGNvbnRyb2wuZGlzYWJsZWQsIGNvbnRyb2wpO1xuICAgICAgfSBlbHNlIGlmKG5hbWUgPT0gJ2RlcGVuZGVudFRhYmxlJyl7XG4gICAgICAgIGNvbnNvbGUud2FybignTm8gZm9ybSBjb250cm9sIHByZXNlbnQgZGVwZW5kZW50VGFibGUgJywgbmFtZSk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgY29uc29sZS53YXJuKCdObyBmb3JtIGNvbnRyb2wgcHJlc2VudCB3aXRoIG5hbWUgJywgbmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcIk5vIGZvcm0gZ3JvdXAgcHJlc2VudCBzbyBza2lwcGluZyB2YWx1ZSBhc3NpZ25tZW50IGZyb20gZGF0YS5cIik7XG4gICAgfVxuICB9XG5cbiAgLyogVG8gZ2V0IHRoZSBkcm9wZG93biBlbGVtZW50IHNvIHRoYXQgdmFsdWUgZnJvbSB0aGUgY2hvaWNlcyBjYW4gYmUgcmVhZCBhbmQgc2V0IGludG8gdGhlIGZvcm0gY29udHJvbCovXG4gIGdldEZvcm1Db250cm9sQ29uZmlndXJhdGlvbihuYW1lKXtcbiAgICBsZXQgZmlsdGVyZWRWYWx1ZXMgPSB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlc1t0aGlzLmFjdGl2ZUluZGV4XS5lbGVtZW50cy5maWx0ZXIocSA9PiBxLm5hbWUgPT0gbmFtZSAmJiAocS50eXBlID09ICdkcm9wZG93bicgfHwgcS5pbnB1dFR5cGUgPT0gJ2RhdGUnKSk7XG4gICAgaWYoZmlsdGVyZWRWYWx1ZXMgJiYgZmlsdGVyZWRWYWx1ZXMubGVuZ3RoID4gMCl7XG4gICAgICByZXR1cm4gZmlsdGVyZWRWYWx1ZXNbMF07XG4gICAgfWVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0dXBMb2FkZXJNb2RlbCgpIHtcbiAgXG4gICAgaWYgKHRoaXMubG9hZGVyU2VydmljZSkge1xuICAgICAgbGV0IHNlcnZpY2VVcmxzOiBzdHJpbmdbXSA9IHRoaXMubG9hZGVyU2VydmljZS5zcGxpdCgnLCcpO1xuICAgICAgbGV0IHNlcnZpY2VVcmwgPSBzZXJ2aWNlVXJsc1t0aGlzLmFjdGl2ZUluZGV4XTtcbiAgICAgIGlmKHNlcnZpY2VVcmwudHJpbSgpICE9ICdudWxsJyl7XG4gICAgICB0aGlzLmJsb2NrRm9ybVVpKCk7XG4gICAgICBsZXQgc2VydmljZVVybFZhbHVlID0gc2VydmljZVVybC50cmltKCk7XG4gICAgICAvKmlmKHRoaXMubHMuaXNDc3IoKSl7XG4gICAgICAgIHNlcnZpY2VVcmxWYWx1ZSA9IHNlcnZpY2VVcmxWYWx1ZTsgICAgICAgXG4gICAgICB9Ki9cbiAgICAgIC8vY29uc3Qgb3B0aW9ucyA9IHRoaXMubHMuaXNDc3IoKSA/IHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnc3NuJywgdGhpcy5zc25Gb3JDU1IpIH0gOiB7fTtcbiAgICAgIHRoaXMudmFsaWRhdGlvblNlcnZpY2VcbiAgICAgICAgLmdldDxMb2FkZXJNb2RlbD4oYCR7c2VydmljZVVybFZhbHVlfWApXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVyTW9kZWwgPSByZXM7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcImxvYWRlciBtb2RlbCAgPSBcIiArIHRoaXMubG9hZGVyTW9kZWwpOyAgICAgICBcbiAgICAgICAgICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xuICAgICAgICAgICAgaWYodGhpcy5sb2FkZXJNb2RlbCAmJiB0aGlzLmxvYWRlck1vZGVsLmRpc2FibGVDb250cm9sTmFtZXMpe1xuICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5RmllbGRzID0gdGhpcy5sb2FkZXJNb2RlbC5kaXNhYmxlQ29udHJvbE5hbWVzO1xuICAgICAgICAgICAgICBmb3IgKGxldCBjbnRybE5hbWUgb2YgdGhpcy5yZWFkT25seUZpZWxkcykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cEFycmF5W3RoaXMuYWN0aXZlSW5kZXhdPy5nZXQoY250cmxOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodGhpcy5xY3MuZ2V0RGF0YSh0aGlzLmFjdGl2ZUluZGV4KSAhPSBudWxsKXtcbiAgICAgICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IEpTT04ucGFyc2UodGhpcy5xY3MuZ2V0RGF0YSh0aGlzLmFjdGl2ZUluZGV4KSk7XG4gICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF0ucGF0Y2hWYWx1ZSh0aGlzLmZvcm1EYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHRoaXMubG9hZGVyTW9kZWwgJiYgdGhpcy5sb2FkZXJNb2RlbC5kYXRhKXtcbiAgICAgICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IHRoaXMubG9hZGVyTW9kZWwuZGF0YTtcbiAgICAgICAgICAgICAgdGhpcy5zZXRGb3JtVmFsdWVzKHRoaXMuZm9ybURhdGEpO1xuICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXRpbC5oaWRlTG9hZGVyKCk7XG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XG4gICAgICAgICAgICB0aGlzLnVuYmxvY2tGb3JtVWkoKTtcbiAgICAgICAgICB9KVxuICAgIH0gXG4gIH0gZWxzZSB7XG4gICAgaWYodGhpcy5xY3MuZ2V0RGF0YSh0aGlzLmFjdGl2ZUluZGV4KSAhPSBudWxsKXtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBKU09OLnBhcnNlKHRoaXMucWNzLmdldERhdGEodGhpcy5hY3RpdmVJbmRleCkpO1xuICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XS5wYXRjaFZhbHVlKHRoaXMuZm9ybURhdGEpO1xuICAgIH1cbiAgICBpZih0aGlzLmRhdGEpe1xuICAgICAgdGhpcy5mb3JtRGF0YSA9IHRoaXMuZGF0YTtcbiAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyh0aGlzLmZvcm1EYXRhKTtcbiAgICB9IGVsc2UgaWYodGhpcy5mb3JtRGF0YSl7XG4gICAgICB0aGlzLnNldEZvcm1WYWx1ZXModGhpcy5mb3JtRGF0YSk7XG4gICAgfSAgXG4gIH0gXG59XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0luaXQgbWV0aG9kIGNhbGxlZCBmcm9tIGR5bmFtaWMgZm9ybScsIHRoaXMucXVlc3Rpb25zKVxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCcgYmFja0J1dHRvblBhZ2UgJywgdGhpcy5iYWNrQnV0dG9uUGFnZSwgJyBuZXh0QnV0dG9uUGFnZScsIHRoaXMubmV4dEJ1dHRvblBhZ2UpO1xuICAgIGlmICghdGhpcy5xdWVzdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5oaWRlU3RlcCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNGaXJzdCA9IHRydWU7XG4gICAgfVxuICAgIGxldCBzdHJLZXkgPSBbXTtcbiAgICBsZXQgcGFyYW1NYXAgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgc3RyS2V5ID0gW10gPSBwYXJhbXMua2V5cztcbiAgICAgIHRoaXMuaWRlbnRpZmllciA9IHBhcmFtcy5nZXQoJ2lkZW50aWZpZXInKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyS2V5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdzdHJpbmdLZXkgJywgc3RyS2V5W2ldLCBwYXJhbXMuZ2V0KHN0cktleVtpXSkpO1xuICAgICAgICBwYXJhbU1hcC5zZXQoc3RyS2V5W2ldLCBwYXJhbXMuZ2V0KHN0cktleVtpXSkpO1xuICAgICAgfVxuICAgIH1cbiAgICApO1xuICAgIFxuICAgIGxldCBjb3VudGVyID0gdGhpcy5xdWVzdGlvbnNbMF0uc3RlcENvdW50ZXI7XG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IGNvdW50ZXIgPyBjb3VudGVyIDogMCA7XG4gICAgLy90aGlzLnN0ZXBwZXJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJCbG9jayBzdGF0ZW1lbnQgZXhlY3V0aW9uIG5vLlwiLCB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlcy5sZW5ndGgpO1xuICAgICAgZm9ybUdyb3VwID0gdGhpcy5xY3MudG9Gb3JtR3JvdXAodGhpcy5xdWVzdGlvbnMsIGksIHBhcmFtTWFwKTtcbiAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbihpLCBmb3JtR3JvdXApO1xuXG4gICAgICB0aGlzLnNldFZhbHVlU3Vic2NyaXB0aW9uKGksIGZvcm1Hcm91cCk7XG4gICAgICB0aGlzLnNldFJlYWRPbmx5KGksIGZvcm1Hcm91cCk7XG4gICAgICB2YXIgcGFnZXM6IGFueSA9IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzW2ldO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3BhZ2VzJywgcGFnZXMpXG4gICAgICBsZXQgdmFsaWRhdG9yRnVuY3Rpb25MaXN0OiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcbiAgICAgIGlmIChwYWdlcy5lbGVtZW50cykge1xuICAgICAgICBwYWdlcy5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50IDogRWxlbWVudHNNb2RlbCkgPT4ge1xuXG4gICAgICAgICAgbGV0IGNvbnRybFR5cGU6IHN0cmluZyA9IGVsZW1lbnQudHlwZTtcbiAgICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3BhbmVsJykge1xuICAgICAgICAgICAgLy90aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIElmJyxlbGVtZW50KVxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKHBhbmVsRWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgIGlmIChwYW5lbEVsZW1lbnQucmVxdWlyZWRJZiAmJiAoKHBhbmVsRWxlbWVudC50eXBlICE9ICdidXR0b24nICYmIHBhbmVsRWxlbWVudC50eXBlICE9ICdzaW1wbGVMYWJlbCcmJiBwYW5lbEVsZW1lbnQudHlwZSAhPSAnbGFiZWwnKSB8fCBwYW5lbEVsZW1lbnQuY29tcG9uZW50TmFtZSA9PSAnYXBwLWxpbmsnIHx8IHBhbmVsRWxlbWVudC5jb21wb25lbnROYW1lID09ICdhcHAtc2lnbi1zc24nKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuc2V0UmVxdWlyZWRJZlZhbGlkYXRpb24ocGFuZWxFbGVtZW50LCB0aGlzLnFjcy5nZXRBbGxEYXRhKCkpKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChwYW5lbEVsZW1lbnQudmFsaWRhdG9ycykge1xuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gcGFuZWxFbGVtZW50LnZhbGlkYXRvcnM7XG4gICAgICAgICAgICAgICAgLy90aGlzLmxvZ2dlci5kZWJ1ZyhcInBhbmVsIHZhbGlkYXRpb24uMTExXCIscGFuZWxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2godmFsaWRhdG9yID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2V4cHJlc3Npb24nICYmIHBhbmVsRWxlbWVudC5pbnB1dFR5cGUgJiYgcGFuZWxFbGVtZW50LmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgZXhwcmVzc2lvbicpXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuc2V0RGF0ZVZhbGlkYXRpb24ocGFuZWxFbGVtZW50LCB0aGlzLnFjcy5nZXRBbGxEYXRhKCkpKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2V4cHJlc3Npb24nICYmIHBhbmVsRWxlbWVudC5pbnB1dFR5cGUgJiYgcGFuZWxFbGVtZW50LmlucHV0VHlwZSA9PT0gJ3RleHQnXG4gICAgICAgICAgICAgICAgICAgICYmIHBhbmVsRWxlbWVudC5jdXN0b21UYWcgJiYgKHBhbmVsRWxlbWVudC5jdXN0b21UYWcgPT09ICdwYXNzd29yZCcgfHwgIHBhbmVsRWxlbWVudC5jdXN0b21UYWcgPT09ICdlbWFpbCcgfHwgIHBhbmVsRWxlbWVudC5jdXN0b21UYWcgPT09ICdzc24nKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIGV4cHJlc3Npb24nKVxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChBcHBWYWxpZGF0b3JzLnNldFBhc3N3b3JkVmFsaWRhdGlvbihwYW5lbEVsZW1lbnQsIHRoaXMucWNzLmdldEFsbERhdGEoKSkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnY3VzdG9tdmFsaWRhdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goQXBwVmFsaWRhdG9ycy5jdXN0b21WYWxpZGF0aW9uKHBhbmVsRWxlbWVudCwgdmFsaWRhdG9yLCB0aGlzLnV0aWwuZ2V0U3RhdGUoKSkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgZWxzZScsZWxlbWVudClcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnJlcXVpcmVkSWYgJiYgKChlbGVtZW50LnR5cGUgIT0gJ2J1dHRvbicgJiYgZWxlbWVudC50eXBlICE9ICdzaW1wbGVMYWJlbCcgJiYgZWxlbWVudC50eXBlICE9ICdsYWJlbCcpIHx8IGVsZW1lbnQuY29tcG9uZW50TmFtZSA9PSAnYXBwLWxpbmsnIHx8IGVsZW1lbnQuY29tcG9uZW50TmFtZSA9PSAnYXBwLXNpZ24tc3NuJykpIHtcbiAgICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goQXBwVmFsaWRhdG9ycy5zZXRSZXF1aXJlZElmVmFsaWRhdGlvbihlbGVtZW50LCB0aGlzLnFjcy5nZXRBbGxEYXRhKCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LnZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSBlbGVtZW50LnZhbGlkYXRvcnM7XG4gICAgICAgICAgICAgIHZhbGlkYXRvckxpc3QuZm9yRWFjaCh2YWxpZGF0b3IgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2V4cHJlc3Npb24nICYmIGVsZW1lbnQuaW5wdXRUeXBlICYmIGVsZW1lbnQuaW5wdXRUeXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgZXhwcmVzc2lvbicpXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChBcHBWYWxpZGF0b3JzLnNldERhdGVWYWxpZGF0aW9uKGVsZW1lbnQsIHRoaXMucWNzLmdldEFsbERhdGEoKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdjdXN0b212YWxpZGF0aW9uJykge1xuICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goQXBwVmFsaWRhdG9ycy5jdXN0b21WYWxpZGF0aW9uKGVsZW1lbnQsIHZhbGlkYXRvciwgdGhpcy51dGlsLmdldFN0YXRlKCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5zZXJ2aWNlVHlwZSAmJiBlbGVtZW50LnNlcnZpY2VUeXBlID09PSAnVkFMSURBVEUnKSB7XG4gICAgICAgICAgICAgIC8vdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goQXBwVmFsaWRhdG9ycy5jcmVhdGVWYWxpZGF0b3IodGhpcy52YWxpZGF0aW9uU2VydmljZSxlbGVtZW50KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvcm1Hcm91cC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvckZ1bmN0aW9uTGlzdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheS5wdXNoKGZvcm1Hcm91cCk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInBhZ2VzLnFlRGF0YVwiLCBwYWdlcy5xZURhdGEpO1xuICAgICAgaWYocGFnZXMucWVEYXRhKXtcbiAgICAgICAgZm9ybUdyb3VwLnBhdGNoVmFsdWUocGFnZXMucWVEYXRhKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwic2V0IHZhbHVlcyBhcyBwZXIgbG9hZGVyIHNlcnZpY2UgPSBcIiwgdGhpcy5mb3JtRGF0YSk7XG4gICAgICBpZiAodGhpcy5mb3JtRGF0YSAmJiB0aGlzLmZvcm1EYXRhKSB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyh0aGlzLmZvcm1EYXRhKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvcm1SZWFkT25seSkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cEFycmF5W2ldLmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJlYWRPbmx5RmllbGRzICYmIHRoaXMucmVhZE9ubHlGaWVsZHMpIHtcbiAgICAgICAgZm9yIChsZXQgY250cmxOYW1lIG9mIHRoaXMucmVhZE9ubHlGaWVsZHMpIHtcbiAgICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXBBcnJheVtpXS5nZXQoY250cmxOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVtpXS5nZXQoY250cmxOYW1lKS5kaXNhYmxlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cExvYWRlck1vZGVsKCk7XG4gICAgXG4gICAgaWYgKHRoaXMucGFnZVR5cGUgPT09ICdQT1BVUCcpIHtcbiAgICAgIGxldCBtb2RlbCA9IG5ldyBDbGFpbUFwcEVtcGxveWVyRGV0YWlsc01vZGVsKCk7XG4gICAgICBtb2RlbCA9IHRoaXMuZGF0YTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbMF0ucGF0Y2hWYWx1ZShtb2RlbCk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygndGhpcy5mb3JtR3JvdXBBcnJheSBhZnRlciBJRicsIHRoaXMuZm9ybUdyb3VwQXJyYXkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhZ2VUeXBlID09PSAnSnNvbicgJiYgdGhpcy5mb3JtRGF0YSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVswXS5wYXRjaFZhbHVlKHRoaXMuZm9ybURhdGEpO1xuICAgICAgaWYgKHRoaXMuZm9ybVJlYWRPbmx5KSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbMF0uZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgY250cmxOYW1lIG9mIHRoaXMucmVhZE9ubHlGaWVsZHMpIHtcbiAgICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXBBcnJheVswXS5nZXQoY250cmxOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVswXS5nZXQoY250cmxOYW1lKS5kaXNhYmxlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwicG90ZW5pdGFsIGlzc3VlIGZvciBRZSBpcyA6IFwiLCB0aGlzLnBvdGVudGlhbElzc3VlSWRCcyk7XG4gICAgdGhpcy5wb3RlbnRpYWxJc3N1ZUlkID0gdGhpcy5wb3RlbnRpYWxJc3N1ZUlkQnM7XG4gIH1cblxuICBzZXRWYWx1ZVN1YnNjcmlwdGlvbihwYWdlSW5kZXg6IG51bWJlciwgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgdmFyIHBhZ2VzOiBhbnkgPSB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlc1twYWdlSW5kZXhdO1xuICAgIGlmIChwYWdlcy5lbGVtZW50cykge1xuICAgICAgcGFnZXMuZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgbGV0IGNvbnRybFR5cGU6IHN0cmluZyA9IGVsZW1lbnQudHlwZTtcbiAgICAgICAgaWYgKGVsZW1lbnQuc3Vic2NyaWJlVmFsdWVPZikge1xuICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50LnN1YnNjcmliZVZhbHVlT2ZdXG4gICAgICAgICAgICAgICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS5zZXRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgICB9XG5cblxuICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3BhbmVsJykge1xuICAgICAgICAgIC8vICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIHBhbmVsQ29udHJsVHlwZScsICBlbGVtZW50LmVsZW1lbnRzKVxuICAgICAgICAgIGVsZW1lbnQuZWxlbWVudHMuZm9yRWFjaChwYW5lbEVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgaWYgKHBhbmVsRWxlbWVudC5zdWJzY3JpYmVWYWx1ZU9mKSB7XG4gICAgICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1twYW5lbEVsZW1lbnQuc3Vic2NyaWJlVmFsdWVPZl0udmFsdWVDaGFuZ2VzLlxuICAgICAgICAgICAgICAgIHN1YnNjcmliZSgoY2hhbmdlKSA9PiBmb3JtR3JvdXAuY29udHJvbHNbcGFuZWxFbGVtZW50Lm5hbWVdLnNldFZhbHVlKGNoYW5nZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFJlYWRPbmx5KHBhZ2VJbmRleDogbnVtYmVyLCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICB2YXIgcGFnZXM6IGFueSA9IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzW3BhZ2VJbmRleF07XG4gICAgaWYgKHBhZ2VzLmVsZW1lbnRzKSB7XG4gICAgICBwYWdlcy5lbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBsZXQgY29udHJsVHlwZTogc3RyaW5nID0gZWxlbWVudC50eXBlO1xuICAgICAgICBpZiAoZWxlbWVudC5yZWFkb25seSkge1xuICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLmRpc2FibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAncGFuZWwnKSB7XG4gICAgICAgICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgcGFuZWxDb250cmxUeXBlJywgIGVsZW1lbnQuZWxlbWVudHMpXG4gICAgICAgICAgZWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKHBhbmVsRWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudC5yZWFkb25seSkge1xuICAgICAgICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbcGFuZWxFbGVtZW50Lm5hbWVdLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRWYWxpZGF0aW9uKHBhZ2VJbmRleDogbnVtYmVyLCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICB2YXIgcGFnZXM6IGFueSA9IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzW3BhZ2VJbmRleF07XG4gICAgLy90aGlzLnF1ZXN0aW9uc1swXS5wYWdlcy5mb3JFYWNoKHBhZ2VzID0+IHtcbiAgICBpZiAocGFnZXMuZWxlbWVudHMpIHtcbiAgICAgIHBhZ2VzLmVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGxldCBjb250cmxUeXBlOiBzdHJpbmcgPSBlbGVtZW50LnR5cGU7XG4gICAgICAgIC8vICB0aGlzLmxvZ2dlci5kZWJ1ZygnZWxlbWVudCA9PSAnLGVsZW1lbnQpO1xuICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3RleHQnIHx8IGNvbnRybFR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yVGV4dENvbnRyb2woZWxlbWVudCwgZm9ybUdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yQ29tbWVudENvbnRyb2woZWxlbWVudCwgZm9ybUdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xuICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkZvckRyb3BEb3duQ29udHJvbChlbGVtZW50LCBmb3JtR3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAncmFkaW9ncm91cCcgfHwgY29udHJsVHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICB0aGlzLnNldFZhbGlkYXRpb25Gb3JSYWRpb0NvbnRyb2woZWxlbWVudCwgZm9ybUdyb3VwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBjb250cmxUeXBlID09PSAnc2luZ2xlc2VsZWN0Y2hlY2tib3gnIHx8IGNvbnRybFR5cGUgPT09ICdzaW1wbGVjaGVja2JveCcgfHwgY29udHJsVHlwZSA9PT0gJ211bHRpY2hlY2tib3gnKSB7XG4gICAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3NpbmdsZXNlbGVjdGNoZWNrYm94IGNhbGxlZCcsZWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yQ2hlY2tCb3hDb250cm9sKGVsZW1lbnQsIGZvcm1Hcm91cCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3BhbmVsJykge1xuICAgICAgICAgIC8vICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIHBhbmVsQ29udHJsVHlwZScsICBlbGVtZW50LmVsZW1lbnRzKVxuICAgICAgICAgIGVsZW1lbnQuZWxlbWVudHMuZm9yRWFjaChwYW5lbEVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgbGV0IHBhbmVsQ29udHJsVHlwZTogc3RyaW5nID0gcGFuZWxFbGVtZW50LnR5cGU7XG5cbiAgICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICdkcm9wZG93bicpIHtcbiAgICAgICAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBwYW5lbENvbnRybFR5cGUnLCBwYW5lbEVsZW1lbnQpXG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkZvckRyb3BEb3duQ29udHJvbChwYW5lbEVsZW1lbnQsIGZvcm1Hcm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAndGV4dCcgfHwgcGFuZWxDb250cmxUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1ZygncGFuZWxDb250cmxUeXBlJywgIHBhbmVsQ29udHJsVHlwZSwncGFuZWxFbGVtZW50JyxwYW5lbEVsZW1lbnQpXG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkZvclRleHRDb250cm9sKHBhbmVsRWxlbWVudCwgZm9ybUdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICdyYWRpb2dyb3VwJyB8fCBwYW5lbENvbnRybFR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkZvclJhZGlvQ29udHJvbChwYW5lbEVsZW1lbnQsIGZvcm1Hcm91cCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYW5lbENvbnRybFR5cGUgPT09ICdjaGVja2JveCcgfHwgcGFuZWxDb250cmxUeXBlID09PSAnc2luZ2xlc2VsZWN0Y2hlY2tib3gnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkZvckNoZWNrQm94Q29udHJvbChwYW5lbEVsZW1lbnQsIGZvcm1Hcm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gICAgLy99KTtcbiAgfVxuXG5cbiAgc2V0VmFsaWRhdGlvbkZvckNoZWNrQm94Q29udHJvbChlbGVtZW50OiBhbnksIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGlmIChmb3JtR3JvdXAgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0pIHtcbiAgICAgIGxldCB2YWxpZGF0b3JGdW5jdGlvbkxpc3Q6IEFycmF5PFZhbGlkYXRvckZuPiA9IFtdO1xuICAgICAgaWYgKGVsZW1lbnQuaXNSZXF1aXJlZCAmJiAhZWxlbWVudC5yZXF1aXJlZElmKSB7XG4gICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JGdW5jdGlvbkxpc3QpO1xuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHNldFZhbGlkYXRpb25Gb3JSYWRpb0NvbnRyb2woZWxlbWVudDogYW55LCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICBpZiAoZm9ybUdyb3VwICYmIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdKSB7XG4gICAgICBsZXQgdmFsaWRhdG9yRnVuY3Rpb25MaXN0OiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcblxuICAgICAgaWYgKGVsZW1lbnQuaXNSZXF1aXJlZCAmJiAhZWxlbWVudC5yZXF1aXJlZElmKSB7XG4gICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JGdW5jdGlvbkxpc3QpO1xuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxuXG5cbiAgc2V0VmFsaWRhdGlvbkZvckRyb3BEb3duQ29udHJvbChlbGVtZW50OiBhbnksIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGlmIChmb3JtR3JvdXAgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0pIHtcbiAgICAgIGxldCB2YWxpZGF0b3JGdW5jdGlvbkxpc3Q6IEFycmF5PFZhbGlkYXRvckZuPiA9IFtdO1xuICAgICAgLy9WYWxpZGF0aW9uIG5lZWQgdG8gYmUgY2hlY2tcbiAgICAgIGlmIChlbGVtZW50LmlzUmVxdWlyZWQgJiYgIWVsZW1lbnQucmVxdWlyZWRJZikge1xuICAgICAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKCdzZXRWYWxpZGF0aW9uRm9yRHJvcERvd25Db250cm9sJywgZWxlbWVudC5uYW1lKVxuICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIH1cbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnNldFZhbGlkYXRvcnModmFsaWRhdG9yRnVuY3Rpb25MaXN0KTtcbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblxuICAgIH1cbiAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKGVsZW1lbnQubmFtZSwnZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0nLGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdKTtcbiAgfVxuXG5cbiAgc2V0VmFsaWRhdGlvbkZvckNvbW1lbnRDb250cm9sKGVsZW1lbnQ6IGFueSwgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgaWYgKGZvcm1Hcm91cCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXSkge1xuICAgICAgbGV0IHZhbGlkYXRvckZ1bmN0aW9uTGlzdDogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XG4gICAgICBpZiAoZWxlbWVudC5pc1JlcXVpcmVkICYmICFlbGVtZW50LnJlcXVpcmVkSWYpIHtcbiAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICB9XG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvckZ1bmN0aW9uTGlzdCk7XG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0VmFsaWRhdGlvbkZvclRleHRDb250cm9sKGVsZW1lbnQ6IGFueSwgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3NldFZhbGlkYXRpb25Gb3JUZXh0Q29udHJvbCcsZWxlbWVudCk7XG4gICAgaWYgKGZvcm1Hcm91cCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXSkge1xuICAgICAgbGV0IHZhbGlkYXRvckZ1bmN0aW9uTGlzdDogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XG4gICAgICBpZiAoZWxlbWVudC5pc1JlcXVpcmVkICYmICFlbGVtZW50LnJlcXVpcmVkSWYpIHtcbiAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ3NldFZhbGlkYXRpb25Gb3JUZXh0Q29udHJvbCBpc1JlcXVpcmVkICcsZWxlbWVudCk7XG4gICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgaWYgKGVsZW1lbnQudmFsaWRhdG9ycykge1xuICAgICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IGVsZW1lbnQudmFsaWRhdG9ycztcbiAgICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKHZhbGlkYXRvciA9PiB7XG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnZXhwcmVzc2lvbicgJiYgZWxlbWVudC5pbnB1dFR5cGUgJiYgZWxlbWVudC5pbnB1dFR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICAgICAgLy90aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIGV4cHJlc3Npb24nKVxuICAgICAgICAgICAgLy8gdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goQXBwVmFsaWRhdG9ycy5zZXREYXRlVmFsaWRhdGlvbih2YWxpZGF0b3IuZXhwcmVzc2lvbiwgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpLCB7IGRhdGVDb21wYXJpc2lvbjogdHJ1ZSB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3JlZ2V4Jykge1xuICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRvci5yZWdleCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICd0ZXh0JyAmJiB2YWxpZGF0b3IubWluTGVuZ3RoKSB7XG4gICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0b3IubWluTGVuZ3RoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3RleHQnICYmIHZhbGlkYXRvci5tYXhMZW5ndGgpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHZhbGlkYXRvci5tYXhMZW5ndGgpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnbnVtZXJpYycpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMubWF4KHZhbGlkYXRvci5tYXhWYWx1ZSkpO1xuICAgICAgICAgIH1cblxuXG4gICAgICAgIH0pXG5cbiAgICAgIH1cbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnNldFZhbGlkYXRvcnModmFsaWRhdG9yRnVuY3Rpb25MaXN0KTtcbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcblxuICAgIH1cbiAgfVxuXG4gIG5leHRQYWdlKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIm5leHQgcGFnZSBjYWxsZWQgLS0tLSBcIilcbiAgICBsZXQgZm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXBBcnJheVtpbmRleF07XG4gICAgaWYgKGZvcm1Hcm91cC5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIGlmJywgZm9ybUdyb3VwKTtcbiAgICAgIGZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICBPYmplY3QudmFsdWVzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5xY3Muc2V0RGF0YSh0aGlzLmFjdGl2ZUluZGV4LCBKU09OLnN0cmluZ2lmeShmb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSkpO1xuICAgIC8vTG9naWMgdG8gc2F2ZSBzdGFydFxuICAgIGxldCBzdHJJbnRvT2JqO1xuICAgIHRoaXMucWNzLmdldEFsbERhdGEoKS5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgc3RySW50b09iaiA9IChkYXRhKTtcbiAgICAgIHRoaXMucGF5TG9hZCA9ICh0aGlzLnBheUxvYWQgKyBzdHJJbnRvT2JqKTtcbiAgICB9KTtcblxuICAgIGxldCBzYXZlRGF0YSA9IHt9IGFzIFF1ZXN0aW9ubmFpcmVTYXZlTW9kZWw7XG4gICAgbGV0IGN1cnJlbnRRZSA9IHRoaXMucXVlcnlNb2RlbDtcbiAgICBsZXQgZW1wbG95ZWVEYXRhID0gdGhpcy5xZXMuZW1wbG95ZWVCcy5nZXRWYWx1ZSgpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdlbXBsb3llZURhdGEgJywgZW1wbG95ZWVEYXRhKTtcbiAgICBpZiAodGhpcy5mb3JTY3JlZW5RdWVzdGlvbm5haXJlKSB7XG4gICAgICBsZXQgZGF0YUFycjogc3RyaW5nW10gPSBbXTtcbiAgICAgIHRoaXMucWNzLmdldEFsbERhdGEoKS5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgICBkYXRhQXJyLnB1c2goZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIHNhdmVEYXRhLnNjcmVlblF1ZXN0aW9ubmFpcmVEYXRhID0gZGF0YUFycjtcbiAgICAgIHNhdmVEYXRhLnVzZXJUeXBlID0gY3VycmVudFFlLnVzZXJUeXBlO1xuICAgICAgc2F2ZURhdGEuZmxvd0Zyb20gPSBjdXJyZW50UWUuZmxvd0Zyb207XG4gICAgICBzYXZlRGF0YS5xdWVzdGlvbm5haXJlSWRzID0gY3VycmVudFFlLnF1ZXN0aW9ubmFpcmVJZHM7XG4gICAgICBzYXZlRGF0YS5lbXBNb2RlbCA9IGVtcGxveWVlRGF0YTtcbiAgICAgIHNhdmVEYXRhLnV1aWQgPSB0aGlzLmlkZW50aWZpZXI7Ly9jdXJyZW50UWUudXVpZDtcbiAgICAgIHNhdmVEYXRhLmZsb3dLZXkgPSBjdXJyZW50UWUuZmxvd0tleTtcbiAgICAgIHNhdmVEYXRhLmFjdGl2ZVBhZ2VJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXg7XG4gICAgICBzYXZlRGF0YS5xdWVzdGlvbm5haXJlSWQgPSBjdXJyZW50UWUucXVlc3Rpb25uYWlyZUlkO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3NhdmUgRGF0YSAnLCBzYXZlRGF0YSlcbiAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XG4gICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlXG4gICAgICAgIC5zYXZlU2NyZWVuUXVlc3Rpb25uYWlyZShzYXZlRGF0YSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBhc3luYyByZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcocmVzKTtcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJyZXMgdXVpZCA9PT09IFwiICwgcmVzW0ZiQ29uc3RhbnRzLnV1aWRdKTtcbiAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS51dWlkLm5leHQocmVzW0ZiQ29uc3RhbnRzLnV1aWRdKTtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy51dWlkLCByZXNbRmJDb25zdGFudHMudXVpZF0pO1xuICAgICAgICAgICAgICBpZihyZXNbJ3JlZGlyZWN0VG9FbmQnXSA9PT0gdHJ1ZSl7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5zdWNjZXNzRWxlbWVudC5uZXh0KHJlc1tGYkNvbnN0YW50cy5zdWNjZXNzUGFnZUVsZW1lbnRdKTtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLndhaXRGb3JQcm9jZXNzaW5nLm5leHQocmVzW0ZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5wYWdlVG9PcGVuLm5leHQocmVzW0ZiQ29uc3RhbnRzLnBhZ2VUb09wZW5dKTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoRmJDb25zdGFudHMuc3VjY2Vzc1BhZ2VFbGVtZW50LCByZXNbRmJDb25zdGFudHMuc3VjY2Vzc1BhZ2VFbGVtZW50XSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy53YWl0Rm9yUHJvY2Vzc2luZywgcmVzW0ZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nXSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy5wYWdlVG9PcGVuLCByZXNbRmJDb25zdGFudHMucGFnZVRvT3Blbl0pO1xuICAgICAgICAgICAgICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZVJvb3QoYC8ke3RoaXMubmV4dEJ1dHRvblBhZ2V9P2lkZW50aWZpZXI9JHtyZXNbJ3V1aWQnXX1gKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UHJldkFuZE5leHRCdXR0b24oKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSByZXNbJ3V1aWQnXTsgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLnFjcy5zaGFyZWREYXRhLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLmVycm9yT2NjdXJlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xuXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuXG4gIH1cblxuICBwcmV2UGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4IC0gMTtcbiAgICB0aGlzLnNldFByZXZBbmROZXh0QnV0dG9uKCk7XG4gIH1cblxuICB2aXNpYmxlSWYoc3RyRXhwOiBzdHJpbmcsIGVsZW1lbnROYW1lOiBzdHJpbmcsIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCwgZWxlbWVudDogYW55KSB7XG5cblxuICAgIGlmICghc3RyRXhwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbGV0IGlzVmlzaWJsZSA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZihzdHJFeHAuaW5jbHVkZXMoJyYmJykpe1xuICAgICAgbGV0IGV4cHIgOiBzdHJpbmdbXSA9IHN0ckV4cC5zcGxpdCgnJiYnKTtcbiAgICAgIGlzVmlzaWJsZSA9IEFwcFZhbGlkYXRvcnMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMF0udHJpbSgpLCBmb3JtR3JvdXApICYmIEFwcFZhbGlkYXRvcnMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMV0udHJpbSgpLCBmb3JtR3JvdXApO1xuXG4gICAgICBpZihleHByLmxlbmd0aCA+PSAzKXtcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlICYmIEFwcFZhbGlkYXRvcnMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMl0udHJpbSgpLCBmb3JtR3JvdXApXG4gICAgICB9XG4gICAgICBpZihleHByLmxlbmd0aCA+PSA0KXtcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlICYmIEFwcFZhbGlkYXRvcnMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbM10udHJpbSgpLCBmb3JtR3JvdXApXG4gICAgICB9XG4gICAgICBpZihleHByLmxlbmd0aCA9PSA1KXtcbiAgICAgICAgaXNWaXNpYmxlID0gaXNWaXNpYmxlICYmIEFwcFZhbGlkYXRvcnMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbNF0udHJpbSgpLCBmb3JtR3JvdXApXG4gICAgICB9XG4gICAgICBpZihleHByLmxlbmd0aCA+IDUpe1xuICAgICAgICAgIHRocm93IFwiQXBwVmFsaWRhdG9ycyA6IE1vcmUgdGhhbiA1ICcmJicgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQuXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYoc3RyRXhwLmluY2x1ZGVzKCd8fCcpKXtcbiAgICAgIGxldCBleHByIDogc3RyaW5nW10gPSBzdHJFeHAuc3BsaXQoJ3x8Jyk7XG4gICAgICBpc1Zpc2libGUgPSBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzBdLnRyaW0oKSwgZm9ybUdyb3VwKSB8fCBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzFdLnRyaW0oKSwgZm9ybUdyb3VwKVxuICAgICAgaWYoZXhwci5sZW5ndGggPj0gMyl7XG4gICAgICAgIGlzVmlzaWJsZSA9IGlzVmlzaWJsZSB8fCBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzJdLnRyaW0oKSwgZm9ybUdyb3VwKVxuICAgICAgfVxuICAgICAgaWYoZXhwci5sZW5ndGggPj0gNCl7XG4gICAgICAgIGlzVmlzaWJsZSA9IGlzVmlzaWJsZSB8fCBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzNdLnRyaW0oKSwgZm9ybUdyb3VwKVxuICAgICAgfVxuICAgICAgaWYoZXhwci5sZW5ndGggPT0gNSl7XG4gICAgICAgIGlzVmlzaWJsZSA9IGlzVmlzaWJsZSB8fCBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzRdLnRyaW0oKSwgZm9ybUdyb3VwKVxuICAgICAgfVxuICAgICAgaWYoZXhwci5sZW5ndGggPiA1KXtcbiAgICAgICAgICB0aHJvdyBcIkFwcFZhbGlkYXRvcnMgOiBNb3JlIHRoYW4gNSAnfHwnIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKCFzdHJFeHAuaW5jbHVkZXMoJ3x8JykgJiYgIXN0ckV4cC5pbmNsdWRlcygnJiYnKSl7XG4gICAgICBpc1Zpc2libGUgPSBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShzdHJFeHAudHJpbSgpLCBmb3JtR3JvdXApO1xuICAgIH1cblxuICAgIGlmKGlzVmlzaWJsZSl7XG4gICAgICByZXR1cm4gaXNWaXNpYmxlO1xuICAgIH1cbiAgICBcbiAgICBpZiAoZWxlbWVudE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnROYW1lXSAmJiAhZWxlbWVudC5zdWJzY3JpYmVWYWx1ZU9mKSB7XG4gICAgICBpZih0aGlzLmZvcm1EYXRhICYmICF0aGlzLmZvcm1EYXRhW2VsZW1lbnROYW1lXSl7XG4gICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50TmFtZV0uc2V0VmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cblxuICBjb21wbGV0ZSgpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnY29tcGxldGUgbWV0aG9kIGNhbGxlZCA9PT09PT09Jyk7XG4gICAgaWYodGhpcy5tZmFSZXF1aXJlZCAmJiB0aGlzLnNob3dNZmEgJiYgdGhpcy5tZmEpe1xuICAgICAgdGhpcy5tZmEuc3VibWl0KCk7XG4gICAgfVxuXG4gICAgbGV0IGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnU3VibWl0IGNhbGxlZCBmcm9tIGNvbXBsZXRlIG1ldGhvZCBpbiBkeW5hbWljIGZvcm0nKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZvcm1Hcm91cEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3JtR3JvdXAgPSB0aGlzLmZvcm1Hcm91cEFycmF5W2ldO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBpZicsIGZvcm1Hcm91cCk7XG4gICAgICBpZiAoZm9ybUdyb3VwLmludmFsaWQpIHtcbiAgICAgICAgbGV0IHRhcmdldDtcbiAgICAgICAgdGFyZ2V0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5uZy1pbnZhbGlkJylcbiAgICAgICAgaWYodGFyZ2V0KVxuICAgICAgICB7XG4gICAgICAgICAgdGFyZ2V0LnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJ30pO1xuICAgICAgICAgIHRhcmdldC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgaWYnLCBmb3JtR3JvdXApO1xuICAgICAgICBmb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgICBPYmplY3QudmFsdWVzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW52YWxpZCBGb3JtIENvbnRyb2xzJywgT2JqZWN0LnZhbHVlcyhmb3JtR3JvdXAuY29udHJvbHMpLmZpbHRlcihjID0+IGMuaW52YWxpZCkpO1xuICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVGb3JtLm9uU3VibWl0KHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnZm9ybUdyb3VwJywgZm9ybUdyb3VwKTtcbiAgICB0aGlzLnFjcy5zZXREYXRhKHRoaXMuYWN0aXZlSW5kZXgsIEpTT04uc3RyaW5naWZ5KGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKSk7XG4gICAgbGV0IHN0ckludG9PYmo7XG4gICAgdGhpcy5wYXlMb2FkID0gJyc7XG4gICAgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICBzdHJJbnRvT2JqID0gKGRhdGEpO1xuICAgICAgdGhpcy5wYXlMb2FkID0gKHRoaXMucGF5TG9hZCArIHN0ckludG9PYmopO1xuICAgIH0pO1xuXG4gICAgbGV0IHNhdmVEYXRhID0ge30gYXMgUXVlc3Rpb25uYWlyZVNhdmVNb2RlbDtcbiAgICBsZXQgY3VycmVudFFlID0gdGhpcy5xdWVyeU1vZGVsO1xuXG4gICAgaWYgKHRoaXMucGFnZVR5cGUgPT09ICdQT1BVUCcgfHwgdGhpcy5wYWdlVHlwZSA9PT0gJ0pzb24nKSB7XG4gICAgICB0aGlzLm9uQ29tcGxldGUuZW1pdChmb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSk7XG4gICAgICB0aGlzLnFjcy5zaGFyZWREYXRhLmNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZvclNjcmVlblF1ZXN0aW9ubmFpcmUpIHtcbiAgICAgIHNhdmVEYXRhLmRhdGEgPSB0aGlzLnBheUxvYWQvL0pTT04uc3RyaW5naWZ5KHRoaXMucGF5TG9hZCk7XG4gICAgICBzYXZlRGF0YS5wb3RlbnRpYWxJc3N1ZUlkID0gY3VycmVudFFlLnBvdGVudGlhbElzc3VlSWQ7XG4gICAgICBzYXZlRGF0YS5mbG93QWJsZUFuZEF2YWlsYWJsZSA9IGN1cnJlbnRRZS5mbG93QWJsZUFuZEF2YWlsYWJsZTtcbiAgICAgIHNhdmVEYXRhLnVzZXJUeXBlID0gY3VycmVudFFlLnVzZXJUeXBlO1xuICAgICAgc2F2ZURhdGEuZmxvd0Zyb20gPSBjdXJyZW50UWUuZmxvd0Zyb207XG4gICAgICBzYXZlRGF0YS5mbG93V0NBYmxlQW5kQXZhaWxhYmxlID0gY3VycmVudFFlLmZsb3dXQ0FibGVBbmRBdmFpbGFibGU7XG4gICAgICBzYXZlRGF0YS5jbGFpbUFwcGxpY2F0aW9uSWQgPSBjdXJyZW50UWUuY2xhaW1BcHBsaWNhdGlvbklkO1xuICAgICAgc2F2ZURhdGEucXVlc3Rpb25uYWlyZUlkcyA9IGN1cnJlbnRRZS5xdWVzdGlvbm5haXJlSWRzO1xuICAgICAgc2F2ZURhdGEucXVlc3Rpb25uYWlyZUlkID0gY3VycmVudFFlLnF1ZXN0aW9ubmFpcmVJZDtcbiAgICAgIHNhdmVEYXRhLmFjdGl2ZVBhZ2VJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXg7XG4gICAgICBpZighdGhpcy5hdXRvU2F2ZSl7XG4gICAgICAgIHNhdmVEYXRhLmF1dG9TYXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25Db21wbGV0ZS5lbWl0KHNhdmVEYXRhKTtcbiAgICAgICAgdGhpcy5xY3Muc2hhcmVkRGF0YS5jbGVhcigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBcbiAgICAgIHRoaXMuYmxvY2tGb3JtVWkoKVxuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZVxuICAgICAgICAuc2F2ZVF1ZXN0aW9ubmFpcmUoc2F2ZURhdGEpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xuICAgICAgICAgICAgdGhpcy5xZXMuc2VhcmNoTW9kZWwuc3BsaWNlKHRoaXMucWVzLnNlYXJjaE1vZGVsLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ucG90ZW50aWFsSXNzdWVJZCA9PSBjdXJyZW50UWUucG90ZW50aWFsSXNzdWVJZCksIDEpO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3JlbWFpbmluZyBlbGVtZW50cycsIHRoaXMucWVzLnNlYXJjaE1vZGVsKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnFlcy5zZWFyY2hNb2RlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIC8vdGhpcy5xZXMuc2VhcmNoQnMubmV4dCh0aGlzLnFlcy5zZWFyY2hNb2RlbFswXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTm8gRWxlbWVudCBQcmVzZW50Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uQ29tcGxldGUuZW1pdChyZXMpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMucWNzLnNoYXJlZERhdGEuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xuICAgICAgICAgICAgdGhpcy5jYXB0Y2hhLnJlc2V0Q2FwdGNoYSgpO1xuICAgICAgICAgICAgdGhpcy5vbkVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkYXRhQXJyOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpLmZvckVhY2goZGF0YSA9PiB7XG4gICAgICAgIGRhdGFBcnIucHVzaChkYXRhKTtcbiAgICAgIH0pO1xuICAgICAgc2F2ZURhdGEuc2NyZWVuUXVlc3Rpb25uYWlyZURhdGEgPSBkYXRhQXJyO1xuICAgICAgc2F2ZURhdGEudXNlclR5cGUgPSBjdXJyZW50UWUudXNlclR5cGU7XG4gICAgICBzYXZlRGF0YS5mbG93RnJvbSA9IGN1cnJlbnRRZS5mbG93RnJvbTtcbiAgICAgIHNhdmVEYXRhLmlzU2NyZWVuUXVlc3Rpb25uYWlyZSA9IHRydWU7XG4gICAgICBzYXZlRGF0YS5xdWVzdGlvbm5haXJlSWRzID0gY3VycmVudFFlLnF1ZXN0aW9ubmFpcmVJZHM7XG4gICAgICBzYXZlRGF0YS51dWlkID0gdGhpcy5pZGVudGlmaWVyOy8vY3VycmVudFFlLnV1aWQ7XG4gICAgICBzYXZlRGF0YS5mbG93S2V5ID0gY3VycmVudFFlLmZsb3dLZXk7XG4gICAgICBzYXZlRGF0YS5xdWVzdGlvbm5haXJlSWQgPSBjdXJyZW50UWUucXVlc3Rpb25uYWlyZUlkO1xuICAgICAgc2F2ZURhdGEuYWN0aXZlUGFnZUluZGV4ID0gdGhpcy5hY3RpdmVJbmRleDtcblxuICAgICAgaWYoIXRoaXMuYXV0b1NhdmUpe1xuICAgICAgICB0aGlzLm9uQ29tcGxldGUuZW1pdChzYXZlRGF0YSk7XG4gICAgICAgIHRoaXMucWNzLnNoYXJlZERhdGEuY2xlYXIoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYodGhpcy5tZmFSZXF1aXJlZCl7XG4gICAgICAgIHRoaXMuc2hvd01mYSA9IHRydWU7XG4gICAgICAgIHRoaXMubWZhRGF0YSA9IHNhdmVEYXRhO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNhdmVTY3JlZW5RdWVzdGlvbm5haXJlKHNhdmVEYXRhKTtcbiAgICB9XG4gIH1cblxuICBzYXZlU2NyZWVuUXVlc3Rpb25uYWlyZShkYXRhKXtcbiAgICB0aGlzLmJsb2NrRm9ybVVpKClcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlXG4gICAgICAgIC5zYXZlU2NyZWVuUXVlc3Rpb25uYWlyZShkYXRhKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2Uuc3VjY2Vzc0VsZW1lbnQubmV4dChyZXNbRmJDb25zdGFudHMuc3VjY2Vzc1BhZ2VFbGVtZW50XSk7XG4gICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UudXVpZC5uZXh0KHJlc1tGYkNvbnN0YW50cy51dWlkXSk7XG4gICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2Uud2FpdEZvclByb2Nlc3NpbmcubmV4dChyZXNbRmJDb25zdGFudHMud2FpdEZvclByb2Nlc3NpbmddKTtcbiAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS53YWl0Q2hlY2tTZXJ2aWNlVXJpLm5leHQocmVzW0ZiQ29uc3RhbnRzLndhaXRDaGVja1NlcnZpY2VVcmldKTtcbiAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5wYWdlVG9PcGVuLm5leHQocmVzW0ZiQ29uc3RhbnRzLnBhZ2VUb09wZW5dKTtcblxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KEZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudCwgcmVzW0ZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudF0pO1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KEZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nLCByZXNbRmJDb25zdGFudHMud2FpdEZvclByb2Nlc3NpbmddKTtcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy53YWl0Q2hlY2tTZXJ2aWNlVXJpLCByZXNbRmJDb25zdGFudHMud2FpdENoZWNrU2VydmljZVVyaV0pO1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KEZiQ29uc3RhbnRzLnBhZ2VUb09wZW4sIHJlc1tGYkNvbnN0YW50cy5wYWdlVG9PcGVuXSk7XG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoRmJDb25zdGFudHMudXVpZCwgcmVzW0ZiQ29uc3RhbnRzLnV1aWRdKTtcblxuICAgICAgICAgICAgICBpZih0aGlzLm5leHRCdXR0b25QYWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlUm9vdChgLyR7dGhpcy5uZXh0QnV0dG9uUGFnZX0/aWRlbnRpZmllcj0ke3Jlc1sndXVpZCddfWApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db21wbGV0ZS5lbWl0KGRhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMucWNzLnNoYXJlZERhdGEuY2xlYXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy51bmJsb2NrRm9ybVVpKCk7XG4gICAgICAgICAgICB0aGlzLnNob3dNZmEgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRXJyb3Igb2NjdXJlZCcsIGVycik7XG4gICAgICAgICAgICBpZih0aGlzLm1mYVJlcXVpcmVkKXtcbiAgICAgICAgICAgICAgdGhpcy5tZmFFcnJvciA9IGVycjtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdChlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy51bmJsb2NrRm9ybVVpKCk7XG4gICAgICAgICAgICB0aGlzLmNhcHRjaGEucmVzZXRDYXB0Y2hhKCk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICB9XG5cbiAgc2V0UHJldkFuZE5leHRCdXR0b24oKSB7XG4gICAgbGV0IGNvbXBhcmVWYWx1ZTogbnVtYmVyID0gMDtcbiAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA+IDApIHtcbiAgICAgIGNvbXBhcmVWYWx1ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPiAwKSB7XG4gICAgICB0aGlzLmlzRmlyc3QgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA9PT0gMSAmJiB0aGlzLmlzUHJldmlvdXNQYWdlQVBsYWNlaG9sZGVyKHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzWzBdKSkge1xuICAgICAgdGhpcy5pc0ZpcnN0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNMYXN0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPT09IDApIHtcbiAgICAgIHRoaXMuaXNGaXJzdCA9IHRydWU7XG4gICAgICB0aGlzLmlzTGFzdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ID09PSB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLmlzTGFzdCA9IHRydWU7XG4gICAgICB0aGlzLmlzRmlyc3QgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA8IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuaXNMYXN0ID0gZmFsc2U7XG4gICAgfSAgIFxuICAgIHRoaXMuc2V0dXBMb2FkZXJNb2RlbCgpO1xuICB9XG5cbiAgaXNQcmV2aW91c1BhZ2VBUGxhY2Vob2xkZXIocGFnZSA6IGFueSl7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJpc1BsYWNlSG9sZGVyID0gXCIgKyBwYWdlW1wiaXNQbGFjZUhvbGRlclwiXSk7XG4gICAgbGV0IHBsYWNlSG9sZGVyOiBib29sZWFuID0gIHBhZ2VbXCJpc1BsYWNlSG9sZGVyXCJdO1xuICAgIHJldHVybiBwbGFjZUhvbGRlci52YWx1ZU9mKCk7XG4gIH1cblxuICBzdGVwQ2hhbmdlZChldmVudDogU3RlcHBlclNlbGVjdGlvbkV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzbHlTZWxlY3RlZEluZGV4ID4gZXZlbnQuc2VsZWN0ZWRJbmRleCkge1xuICAgICAgZXZlbnQucHJldmlvdXNseVNlbGVjdGVkU3RlcC5pbnRlcmFjdGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2FuY2VsQWN0aW9uKCkge1xuICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZVJvb3QodGhpcy5iYWNrQnV0dG9uUGFnZSk7XG4gIH1cblxuICBjYW5jZWxQb3BVcCgpIHtcbiAgICBsZXQgZm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XTtcbiAgICB0aGlzLm1vZGVsQ2FuY2VsLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdjYW5jZWxQb3BVcCBjYWxsZWQnLCBmb3JtR3JvdXApXG4gIH1cblxuICB1cGxvYWRGaWxlKHF1ZXVlOiBGaWxlW10pIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygncXVldWUxMTEgJywgcXVldWUpO1xuICAgIC8vcXVldWVbMF0uc2l6ZVxuICB9XG5cbiAgYmxvY2tGb3JtVWkoKXtcbiAgICB0aGlzLmJsb2NrVWkgPSB0cnVlO1xuICB9XG5cbiAgdW5ibG9ja0Zvcm1VaSgpe1xuICAgIHRoaXMuYmxvY2tVaSA9IGZhbHNlO1xuICB9XG5cbiAgc2hvdWxkRml0Q29udGVudChlbGVtZW50cyA6IEVsZW1lbnRzTW9kZWxbXSl7XG4gICAgbGV0IHNob3VsZEZpdENvbnRlbnQgOiBib29sZWFuID0gdHJ1ZTsgXG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmKGVsZW1lbnQuY3VzdG9tVGFnID09ICdjb21wb25lbnQnKXtcbiAgICAgICAgc2hvdWxkRml0Q29udGVudCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNob3VsZEZpdENvbnRlbnQ7XG4gIH1cblxuICB1cGRhdGVEeW5hbWljUGFyYW0oZXZlbnQpe1xuICAgIGlmKEFycmF5LmlzQXJyYXkoZXZlbnQpKXtcbiAgICAgIHRoaXMuZHluYW1pY1BhcmFtID0gWy4uLmV2ZW50XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5keW5hbWljUGFyYW0gPSBPYmplY3QuYXNzaWduKHt9ICwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIG9uU3VibWl0KCl7XG4gICAgdGhpcy51dGlsLmZvY3VzT25TdWJtaXQodGhpcy5lbCk7XG4gIH1cbn1cbiIsIjxwLWJsb2NrVUkgW2Jsb2NrZWRdPVwiYmxvY2tVaVwiPlxyXG4gIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxyXG48L3AtYmxvY2tVST5cclxuPGRpdiAqbmdJZj1cInF1ZXN0aW9ucyAmJiBxdWVzdGlvbnNbMF0gJiYgIXNob3dNZmFcIiAjZm9ybU1haW5EaXY+XHJcbiAgPGZvcm0gZm9jdXNJbnZhbGlkSW5wdXQgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF1cIiBbbmdDbGFzc109XCJtdWx0aU1vZGUgPyAncWUtZm9ybS1tdWx0aXBsZScgOiAncWUtZm9ybSdcIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiICNxdWVzdGlvbm5haXJlRm9ybT1cIm5nRm9ybVwiPlxyXG4gICAgPGlvbi1ncmlkPlxyXG4gICAgICA8aW9uLXJvdyAqbmdJZj1cInF1ZXN0aW9uc1swXS5wYWdlc1thY3RpdmVJbmRleF0ubmFtZVwiPlxyXG4gICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIFtzaXplWHNdPVwic2l6ZVhzXCIgW3NpemVTbV09XCJzaXplU21cIiBbc2l6ZU1kXT1cInNpemVNZFwiIFtzaXplTGddPVwic2l6ZUxnXCIgW3NpemVYbF09XCJzaXplWGxcIlxyXG4gICAgICAgICAgW29mZnNldFhzXT1cIm9mZnNldFhzXCIgW29mZnNldFNtXT1cIm9mZnNldFNtXCIgW29mZnNldE1kXT1cIm9mZnNldE1kXCIgW29mZnNldExnXT1cIm9mZnNldExnXCIgW29mZnNldFhsXT1cIm9mZnNldFhsXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IFtpbm5lckh0bWxdPVwiKHF1ZXN0aW9uTnVtYmVyID8gcXVlc3Rpb25OdW1iZXIgKyAnICcgOiAnJykgKyBxdWVzdGlvbnNbMF0ucGFnZXNbYWN0aXZlSW5kZXhdLm5hbWUgfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB8IHRydXN0SHRtbFwiIFtuZ0NsYXNzXT1cIm11bHRpTW9kZSA/ICdmYi1oZWFkaW5nLWZvbGxvd3VwJyA6ICdmYi1oZWFkaW5nJ1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPC9pb24tcm93PlxyXG4gICAgICA8aW9uLXJvdz5cclxuICAgICAgICA8aW9uLWNvbCBzdHlsZT1cInBhZGRpbmctbGVmdDogMHB4O1wiIGNsYXNzPVwiaW9uLXBhZGRpbmctZW5kXCIgc2l6ZT1cIjEyXCIgW3NpemVYc109XCJzaXplWHNcIiBbc2l6ZVNtXT1cInNpemVTbVwiXHJcbiAgICAgICAgICBbc2l6ZU1kXT1cInNpemVNZFwiIFtzaXplTGddPVwic2l6ZUxnXCIgW3NpemVYbF09XCJzaXplWGxcIiBbb2Zmc2V0WHNdPVwib2Zmc2V0WHNcIiBbb2Zmc2V0U21dPVwib2Zmc2V0U21cIlxyXG4gICAgICAgICAgW29mZnNldE1kXT1cIm9mZnNldE1kXCIgW29mZnNldExnXT1cIm9mZnNldExnXCIgW29mZnNldFhsXT1cIm9mZnNldFhsXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mb3JtZ3JpZFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgcXVlc3Rpb25zWzBdLnBhZ2VzW2FjdGl2ZUluZGV4XS5lbGVtZW50czsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbGVtZW50LnR5cGU9PT0ncGFuZWwnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJ2aXNpYmxlSWYoZWxlbWVudC52aXNpYmxlSWYsJycsZm9ybUdyb3VwQXJyYXlbYWN0aXZlSW5kZXhdLGVsZW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPGlvbi1jb2wgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDBweDtcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDBweDtcIiBjbGFzcz1cImhlYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2VsZW1lbnQudGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8L2lvbi1jb2w+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhbmVsRWxlbWVudCBvZiBlbGVtZW50LmVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cIjEyXCIgW3NpemVYbF09XCJwYW5lbEVsZW1lbnQuc2l6ZVhMID8gcGFuZWxFbGVtZW50LnNpemVYTCA6IDNcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMHB4OyBtYXgtd2lkdGg6IGZpdC1jb250ZW50O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2l6ZUxnXT1cInBhbmVsRWxlbWVudC5zaXplTEcgPyBwYW5lbEVsZW1lbnQuc2l6ZUxHIDogM1wiIFtzaXplU21dPVwicGFuZWxFbGVtZW50LnNpemVTTSA/IHBhbmVsRWxlbWVudC5zaXplU00gOiAxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2l6ZVhzXT1cInBhbmVsRWxlbWVudC5zaXplWFMgPyBwYW5lbEVsZW1lbnQuc2l6ZVhTIDogMTJcIiBbc2l6ZU1kXT1cInBhbmVsRWxlbWVudC5zaXplTUQgPyBwYW5lbEVsZW1lbnQuc2l6ZU1EIDogNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsRWxlbWVudC5jb2xFbGVtZW50PT09J0NPTDEnICYmIHZpc2libGVJZihwYW5lbEVsZW1lbnQudmlzaWJsZUlmLHBhbmVsRWxlbWVudC5uYW1lLGZvcm1Hcm91cEFycmF5W2FjdGl2ZUluZGV4XSxwYW5lbEVsZW1lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNob3VsZEZpdENvbnRlbnQoZWxlbWVudC5lbGVtZW50cykgPyAnY29sLWZpdC1jb250ZW50JyA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC1xdWVzdGlvbiBbcG90ZW50aWFsSXNzdWVJZF09XCJwb3RlbnRpYWxJc3N1ZUlkXCIgW3F1ZXN0aW9uXT1cInBhbmVsRWxlbWVudFwiIFtmb3JtXT1cImZvcm1Hcm91cEFycmF5W2FjdGl2ZUluZGV4XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JTY3JlZW5RdWVzdGlvbm5haXJlXT1cImZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIiAob25EeW5hbWljUGFyYW1VcGRhdGUpPVwidXBkYXRlRHluYW1pY1BhcmFtKCRldmVudClcIiBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9hcHAtcXVlc3Rpb24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxpb24tY29sIHNpemU9XCIxXCIgKm5nSWY9XCJwYW5lbEVsZW1lbnQuZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctdG9wOiAyOHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwicGFuZWxFbGVtZW50LmRlc2NyaXB0aW9uXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgIDwvaW9uLXJvdz4gLS0+XHJcblxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZWxlbWVudC50eXBlIT0ncGFuZWwnICYmIGVsZW1lbnQudHlwZSE9J2hpZGRlbicgJiYgdmlzaWJsZUlmKGVsZW1lbnQudmlzaWJsZUlmLGVsZW1lbnQubmFtZSxmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF0sZWxlbWVudClcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbc2l6ZUxnXT1cImVsZW1lbnQuc2l6ZUxHPjA/ZWxlbWVudC5zaXplTEc6JydcIiBbc2l6ZVNtXT1cImVsZW1lbnQuc2l6ZVNNXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2l6ZVhzXT1cImVsZW1lbnQuc2l6ZVhTXCIgW3NpemVYbF09XCJlbGVtZW50LnNpemVYTD4wID9lbGVtZW50LnNpemVYTDonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVNZF09XCJlbGVtZW50LnNpemVNRD4wID9lbGVtZW50LnNpemVNRDonJ1wiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmllbGRcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1xdWVzdGlvbiBbcG90ZW50aWFsSXNzdWVJZF09XCJwb3RlbnRpYWxJc3N1ZUlkXCIgW3F1ZXN0aW9uXT1cImVsZW1lbnRcIiBbZm9ybV09XCJmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2ZvclNjcmVlblF1ZXN0aW9ubmFpcmVdPVwiZm9yU2NyZWVuUXVlc3Rpb25uYWlyZVwiIFtkeW5hbWljUGFyYW1dPVwiZHluYW1pY1BhcmFtXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAob25EeW5hbWljUGFyYW1VcGRhdGUpPVwidXBkYXRlRHluYW1pY1BhcmFtKCRldmVudClcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcXVlc3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8aW9uLWNvbCBzaXplPVwiMVwiICpuZ0lmPVwiZWxlbWVudC5kZXNjcmlwdGlvblwiIHN0eWxlPVwicGFkZGluZy10b3A6IDM1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhcHAtb3ZlcmxheS1pbmZvIFtvdmVybGF5VGV4dF09XCJlbGVtZW50LmRlc2NyaXB0aW9uXCI+PC9hcHAtb3ZlcmxheS1pbmZvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD4gLS0+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXBhZGRpbmctc3RhcnRcIiBzaXplPVwiMTJcIiBzaXplU209XCIxMlwiIHNpemVYcz1cIjEyXCIgW3NpemVNZF09XCJwYWdlVHlwZT09PSdQT1BVUCc/NjoxMlwiXHJcbiAgICAgICAgICBbc2l6ZUxnXT1cInBhZ2VUeXBlPT09J1BPUFVQJz82OjEwXCIgW3NpemVYbF09XCJwYWdlVHlwZT09PSdQT1BVUCc/NToxMFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAwcHg7XCJcclxuICAgICAgICAgIFtvZmZzZXRYbF09XCJwYWdlVHlwZT09PSdQT1BVUCc/MDoxXCIgW29mZnNldExnXT1cInBhZ2VUeXBlPT09J1BPUFVQJz8wOjFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZvcm1ncmlkXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDhweDtcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBxdWVzdGlvbnNbMF0ucGFnZXNbYWN0aXZlSW5kZXhdLmVsZW1lbnRzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiB2aXNpYmxlSWYoZWxlbWVudC52aXNpYmxlSWYsJycsZm9ybUdyb3VwQXJyYXlbYWN0aXZlSW5kZXhdLGVsZW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZWxFbGVtZW50IG9mIGVsZW1lbnQuZWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBbc2l6ZVNtXT1cInBhbmVsRWxlbWVudC5zaXplU01cIiBbc2l6ZVhzXT1cInBhbmVsRWxlbWVudC5zaXplWFNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3NpemVMZ109XCJwYW5lbEVsZW1lbnQuc2l6ZUxHPjA/cGFuZWxFbGVtZW50LnNpemVMRzonJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc2l6ZVhsXT1cInBhbmVsRWxlbWVudC5zaXplWEw+MCA/cGFuZWxFbGVtZW50LnNpemVYTDonJ1wiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAwcHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzaXplTWRdPVwicGFuZWxFbGVtZW50LnNpemVNRD4wP3BhbmVsRWxlbWVudC5zaXplTUQ6JydcIiAqbmdJZj1cInBhbmVsRWxlbWVudC5jb2xFbGVtZW50PT09J0NPTDInICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUlmKHBhbmVsRWxlbWVudC52aXNpYmxlSWYscGFuZWxFbGVtZW50Lm5hbWUsZm9ybUdyb3VwQXJyYXlbYWN0aXZlSW5kZXhdLHBhbmVsRWxlbWVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYW5lbC1hcHAgW3F1ZXN0aW9uXT1cInBhbmVsRWxlbWVudFwiIFtmb3JtXT1cImZvcm1Hcm91cEFycmF5W2FjdGl2ZUluZGV4XVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZvclNjcmVlblF1ZXN0aW9ubmFpcmVdPVwiZm9yU2NyZWVuUXVlc3Rpb25uYWlyZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3BhbmVsLWFwcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8L2lvbi1yb3c+XHJcbiAgICA8L2lvbi1ncmlkPlxyXG5cclxuICAgIDxpb24tZm9vdGVyICpuZ0lmPVwiIWhpZGVGb290ZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCInZm9vdGVyLWZpeGVkJ1wiPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7IGJhY2tncm91bmQ6IHdoaXRlOyBtYXJnaW4tbGVmdDogLTVweDtcIlxyXG4gICAgICAgICpuZ0lmPVwiaGlkZVN0ZXAgJiYgcGFnZVR5cGUhPSdQT1BVUCcgJiYgcGFnZVR5cGUhPSdTQ1JFRU4nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgcC1ub2d1dHRlclwiIHN0eWxlPVwiaGVpZ2h0OiA2MHB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGlvbi10ZXh0LWxlZnRcIiBzdHlsZT1cInBhZGRpbmc6IDhweDtcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIGZpbGw9XCJvdXRsaW5lXCIgY2xhc3M9XCJidXR0b25cIiAoY2xpY2spPVwiY2FuY2VsQWN0aW9uKClcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IGlvbi10ZXh0LXJpZ2h0XCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiY29tcGxldGUoKVwiIGZpbGw9XCJzb2xpZFwiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICBOZXh0XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IHJpZ2h0OyBiYWNrZ3JvdW5kOiB3aGl0ZTsgbWFyZ2luLWxlZnQ6IC01cHg7XCJcclxuICAgICAgICAqbmdJZj1cImhpZGVTdGVwICYmIHBhZ2VUeXBlPT0nU0NSRUVOJyAmJiBxdWVzdGlvbnNbMF0uaXNGaXJzdFBhZ2VTdWJtaXRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBwLW5vZ3V0dGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDYwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgaW9uLXRleHQtbGVmdFwiIHN0eWxlPVwicGFkZGluZzogOHB4O1wiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjYW5jZWxBY3Rpb24oKVwiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgaW9uLXRleHQtcmlnaHRcIiBzdHlsZT1cInBhZGRpbmc6IDhweDtcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJjb21wbGV0ZSgpXCIgZmlsbD1cInNvbGlkXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgIERvbmVcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aW9uLWdyaWQgKm5nSWY9XCJoaWRlU3RlcCAmJiBwYWdlVHlwZT09PSdQT1BVUCdcIj5cclxuICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdCBpb24tcGFkZGluZy1zdGFydFwiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjYW5jZWxQb3BVcCgpXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0IGlvbi1wYWRkaW5nLWVuZFwiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImNvbXBsZXRlKClcIiBmaWxsPVwic29saWRcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgQWRkXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgIDwvaW9uLWdyaWQ+XHJcblxyXG5cclxuXHJcblxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWhpZGVTdGVwXCI+XHJcbiAgICAgICAgPG1hdC1ob3Jpem9udGFsLXN0ZXBwZXIgbGluZWFyICNtYXRIb3Jpem9udGFsU3RlcHBlciBbc2VsZWN0ZWRJbmRleF09XCJxdWVzdGlvbnNbMF0uc3RlcENvdW50ZXJcIlxyXG4gICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzdGVwQ2hhbmdlZCgkZXZlbnQpO1wiIHN0eWxlPVwidGV4dC1hbGlnbjogLXdlYmtpdC1jZW50ZXI7XCIgYXJpYS1idXN5PVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPG1hdC1zdGVwICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mICBxdWVzdGlvbnNbMF0ucGFnZXM7ICBsZXQgaSA9IGluZGV4O1wiIFtzdGVwQ29udHJvbF09XCJmb3JtR3JvdXBBcnJheVtpXVwiXHJcbiAgICAgICAgICAgIFtjb21wbGV0ZWRdPVwiICBpIDwgYWN0aXZlSW5kZXggXCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+e3txdWVzdGlvbnNbMF0ucGFnZXNbaV0ubmF2aWdhdGlvblRpdGxlfX08L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcXVlc3Rpb25zWzBdLmlzRmlyc3RQYWdlU3VibWl0ICYmICFpc0xhc3QgJiYgaXNGaXJzdCAmJiAhaXNFbmFibGVCYWNrQnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJldmVyc2VcIiBlZGl0YWJsZT1cImZhbHNlXCIgZGlzYWJsZWQgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXM+QmFjazwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmb3J3YXJkXCIgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyTmV4dCAoY2xpY2spPVwibmV4dFBhZ2UoYWN0aXZlSW5kZXgpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbnNbMF0uaXNGaXJzdFBhZ2VTdWJtaXRcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicmV2ZXJzZVwiIChjbGljayk9XCJjYW5jZWxBY3Rpb24oKVwiIG1hdC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzPkJhY2s8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZm9yd2FyZFwiIG1hdC1idXR0b24gbWF0U3RlcHBlck5leHQgKGNsaWNrKT1cImNvbXBsZXRlKClcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWVzdGlvbnNbMF0uaXNGaXJzdFBhZ2VTdWJtaXQgJiYgaXNMYXN0ICYmICFpc0ZpcnN0XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJldmVyc2VcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cyAoY2xpY2spPVwicHJldlBhZ2UoYWN0aXZlSW5kZXgpXCI+QmFjazwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmb3J3YXJkXCIgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyTmV4dCAoY2xpY2spPVwiY29tcGxldGUoKVwiPkRvbmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXN0aW9uc1swXS5pc0ZpcnN0UGFnZVN1Ym1pdCAmJiAhaXNMYXN0ICYmICFpc0ZpcnN0XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJldmVyc2VcIiBlZGl0YWJsZT1cImZhbHNlXCIgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXMgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZQYWdlKGFjdGl2ZUluZGV4KVwiPkJhY2s8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZm9yd2FyZFwiIG1hdC1idXR0b24gbWF0U3RlcHBlck5leHQgKGNsaWNrKT1cIm5leHRQYWdlKGFjdGl2ZUluZGV4KVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNFbmFibGVCYWNrQnV0dG9uICYmICFxdWVzdGlvbnNbMF0uaXNGaXJzdFBhZ2VTdWJtaXQgJiYgIWlzTGFzdCAmJiBpc0ZpcnN0XCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInJldmVyc2VcIiBlZGl0YWJsZT1cImZhbHNlXCIgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXMgXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbEFjdGlvbigpXCI+QmFjazwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJmb3J3YXJkXCIgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyTmV4dCAoY2xpY2spPVwibmV4dFBhZ2UoYWN0aXZlSW5kZXgpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgPC9tYXQtc3RlcD5cclxuXHJcbiAgICAgICAgPC9tYXQtaG9yaXpvbnRhbC1zdGVwcGVyPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9pb24tZm9vdGVyPlxyXG4gIDwvZm9ybT5cclxuXHJcblxyXG5cclxuXHJcbiAgPCEtLSA8ZGl2ICpuZ0lmPVwicGF5TG9hZFwiIGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgPHN0cm9uZz5TYXZlZCB0aGUgZm9sbG93aW5nIHZhbHVlczwvc3Ryb25nPjxicj57e3BheUxvYWR9fVxyXG4gICAgPC9kaXY+ICAtLT5cclxuXHJcblxyXG48L2Rpdj5cclxuXHJcbjxhcHAtbWZhICNtZmEgW3VzZXJdPVwibHMuZ2V0VXNlcigpXCIgKm5nSWY9XCJzaG93TWZhXCIgKHN1Y2Nlc3MpPVwic2F2ZVNjcmVlblF1ZXN0aW9ubmFpcmUoJGV2ZW50KVwiIFtkYXRhXT1cIm1mYURhdGFcIiBbcmVxdWVzdENvZGVdPVwidHJ1ZVwiIFxyXG4gICAgICAgICBbbWZhRXJyb3JdPVwibWZhRXJyb3JcIiBbaGlkZUJ1dHRvbnNdPVwidHJ1ZVwiPjwvYXBwLW1mYT4iXX0=
|
|
1440
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DynamicFormComponent, { className: "DynamicFormComponent", filePath: "lib\\components\\questionnaire\\dynamic-form.component.ts", lineNumber: 48 }); })();
|
|
1441
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9xdWVzdGlvbm5haXJlL2R5bmFtaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcXVlc3Rpb25uYWlyZS9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SixPQUFPLEVBQW9CLFVBQVUsRUFBb0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJaEQsT0FBTyxFQUF5QixzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBS3JGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBSXZHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUloRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDdEI1QywrQkFBc0Qsa0JBQUEsY0FBQTtJQUloRCwwQkFDTTs7O0lBQ1IsaUJBQU0sRUFBQSxFQUFBOzs7SUFMVyxlQUFpQjtJQUFqQixzQ0FBaUIseUJBQUEseUJBQUEseUJBQUEseUJBQUEsNkJBQUEsNkJBQUEsNkJBQUEsNkJBQUEsNkJBQUE7SUFHZCxlQUE2STtJQUE3SSxpT0FBNkksb0VBQUE7OztJQWEzSiwrQkFBcUYsY0FBQTtJQUdqRixZQUNGO0lBQUEsaUJBQU0sRUFBQTs7O0lBREosZUFDRjtJQURFLGlEQUNGOzs7O0lBS0UsK0JBQWdLLHVCQUFBO0lBRzFHLGlRQUF3QixlQUFBLGtDQUEwQixDQUFBLElBQUM7SUFDdkcsaUJBQWUsRUFBQTs7OztJQUZELGVBQXFDO0lBQXJDLDJEQUFxQyw4QkFBQSxxREFBQSwwREFBQSxzQ0FBQTs7O0lBSHZELDZCQUE0RDtJQUMxRCx5SEFLTTtJQU1SLDBCQUFlOzs7O0lBWFcsZUFBc0k7SUFBdEksb01BQXNJOzs7SUFYcEssNkJBQTZDO0lBRTNDLGlIQU1VO0lBQ1YsK0JBQVM7SUFDUCw0SEFZZTtJQUNqQixpQkFBVTtJQUlaLDBCQUFlOzs7O0lBekJILGVBQXlFO0lBQXpFLDJIQUF5RTtJQVExQyxlQUFtQjtJQUFuQiw2Q0FBbUI7Ozs7SUFrQjlELDZCQUMySTtJQUN6SSwrQkFBUyxrQkFBQSx1QkFBQTtJQU9ILDRPQUF3QixlQUFBLGtDQUEwQixDQUFBLElBQUM7SUFDckQsaUJBQWUsRUFBQSxFQUFBO0lBT3JCLDBCQUFlOzs7O0lBZEYsZUFBNkM7SUFBN0MsdUVBQTZDLDZCQUFBLDZCQUFBLDBEQUFBLDBEQUFBO0lBSXRDLGVBQXFDO0lBQXJDLDJEQUFxQyx3QkFBQSxxREFBQSwwREFBQSxzQ0FBQTs7O0lBcEMzRCw2QkFBOEY7SUFDNUYsNEdBMkJlLGdHQUFBO0lBbUJqQiwwQkFBZTs7OztJQTlDRSxlQUE0QjtJQUE1QixrREFBNEI7SUE2QnhDLGVBQXNJO0lBQXRJLGtNQUFzSTs7O0lBNEJuSSwyQkFDOEYsVUFBQTtJQUUxRixnQ0FFWTtJQUNkLGlCQUFNLEVBQUE7Ozs7SUFITyxlQUF5QjtJQUF6QiwyQ0FBeUIscURBQUEsMERBQUE7OztJQUoxQyw2QkFBNEQ7SUFDMUQseUhBT007SUFDUiwwQkFBZTs7OztJQVJQLGVBQ3FGO0lBRHJGLG9NQUNxRjs7O0lBSmpHLDZCQUEyRjtJQUV2Riw2SEFTZTtJQUNuQiwwQkFBZTs7O0lBVjRCLGVBQW1CO0lBQW5CLDhDQUFtQjs7O0lBSGhFLDZCQUE4RjtJQUM1Riw2R0FZZTtJQUNqQiwwQkFBZTs7OztJQWJFLGVBQTJFO0lBQTNFLDBIQUEyRTs7OztJQXFCbEcsK0JBQzhELGNBQUEsY0FBQSxxQkFBQTtJQUdBLDRMQUFTLGVBQUEsc0JBQWMsQ0FBQSxJQUFDO0lBQzlFLHdCQUNGO0lBQUEsaUJBQWEsRUFBQTtJQUVmLCtCQUF3RCxxQkFBQTtJQUM1Qiw0TEFBUyxlQUFBLGtCQUFVLENBQUEsSUFBQztJQUM1QyxzQkFDRjtJQUFBLGlCQUFhLEVBQUEsRUFBQSxFQUFBOzs7O0lBSW5CLCtCQUMyRSxjQUFBLGNBQUEscUJBQUE7SUFHYiw0TEFBUyxlQUFBLHNCQUFjLENBQUEsSUFBQztJQUM5RSx3QkFDRjtJQUFBLGlCQUFhLEVBQUE7SUFFZiwrQkFBd0QscUJBQUE7SUFDNUIsNExBQVMsZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFDNUMsc0JBQ0Y7SUFBQSxpQkFBYSxFQUFBLEVBQUEsRUFBQTs7OztJQUluQixnQ0FBaUQsY0FBQSxrQkFBQSxxQkFBQTtJQUdhLGlNQUFTLGVBQUEscUJBQWEsQ0FBQSxJQUFDO0lBQzdFLHdCQUNGO0lBQUEsaUJBQWEsRUFBQTtJQUVmLG1DQUFnRCxxQkFBQTtJQUNwQixpTUFBUyxlQUFBLGtCQUFVLENBQUEsSUFBQztJQUM1QyxxQkFDRjtJQUFBLGlCQUFhLEVBQUEsRUFBQSxFQUFBOzs7SUFlZSxZQUF5Qzs7OztJQUF6Qyx1RUFBeUM7Ozs7SUFHckUsMkJBQTBGLGlCQUFBO0lBQ25ELHlNQUFTLGVBQUEsNkJBQXFCLG9CQUFvQixDQUFDLENBQUEsSUFBQztJQUErQixvQkFBSTtJQUFBLGlCQUFTO0lBQ3JJLGtDQUErRjtJQUFoQyx5TUFBUyxlQUFBLHFDQUFxQixDQUFBLElBQUM7SUFBQyxvQkFBSTtJQUFBLGlCQUFTLEVBQUE7Ozs7SUFHOUcsMkJBQTRDLGlCQUFBO0lBQ0wseU1BQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7SUFBK0Isb0JBQUk7SUFBQSxpQkFBUztJQUN6RyxrQ0FBb0Y7SUFBckIseU1BQVMsZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFBQyxvQkFBSTtJQUFBLGlCQUFTLEVBQUE7Ozs7SUFHbkcsMkJBQW1FLGlCQUFBO0lBQ0UseU1BQVMsZUFBQSxxQ0FBcUIsQ0FBQSxJQUFDO0lBQUMsb0JBQUk7SUFBQSxpQkFBUztJQUNoSCxrQ0FBb0Y7SUFBckIseU1BQVMsZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFBQyxvQkFBSTtJQUFBLGlCQUFTLEVBQUE7Ozs7SUFHbkcsMkJBQW9FLGlCQUFBO0lBRWxFLHlNQUFTLGVBQUEscUNBQXFCLENBQUEsSUFBQztJQUFDLG9CQUFJO0lBQUEsaUJBQVM7SUFDN0Msa0NBQStGO0lBQWhDLHlNQUFTLGVBQUEscUNBQXFCLENBQUEsSUFBQztJQUFDLG9CQUFJO0lBQUEsaUJBQVMsRUFBQTs7OztJQUc5RywyQkFBeUYsaUJBQUE7SUFFdkYseU1BQVMsZUFBQSxzQkFBYyxDQUFBLElBQUM7SUFBQyxvQkFBSTtJQUFBLGlCQUFTO0lBQ3RDLGtDQUErRjtJQUFoQyx5TUFBUyxlQUFBLHFDQUFxQixDQUFBLElBQUM7SUFBQyxvQkFBSTtJQUFBLGlCQUFTLEVBQUE7OztJQS9CaEgsb0NBQ21DLFVBQUE7SUFHL0IsMkhBQWlGO0lBQ25GLGlCQUFNO0lBRU4sMEdBR00sNkZBQUEsNkZBQUEsNkZBQUEsNkZBQUE7SUF5QlIsaUJBQVc7Ozs7SUFuQzRELDJEQUFpQywwQ0FBQTtJQU9oRyxlQUFrRjtJQUFsRixtSUFBa0Y7SUFLbEYsZUFBb0M7SUFBcEMsNkRBQW9DO0lBS3BDLGVBQTJEO0lBQTNELG9HQUEyRDtJQUszRCxlQUE0RDtJQUE1RCxxR0FBNEQ7SUFNNUQsZUFBaUY7SUFBakYsa0lBQWlGOzs7O0lBL0I3RiwyQkFBdUIscUNBQUE7SUFFbkIsa09BQW1CLGVBQUEsMkJBQW1CLENBQUEsSUFBRTtJQUN4QywwR0FtQ1c7SUFFYixpQkFBeUIsRUFBQTs7O0lBdkM0QixlQUEwQztJQUExQyxnRUFBMEM7SUFFL0QsZUFBeUI7SUFBekIsb0RBQXlCOzs7SUFyRDdELHNDQUMyQjtJQUN6QiwwRkFjTSw2RUFBQSxzRkFBQSw0RUFBQTtJQThFUixpQkFBYTs7O0lBN0ZiLHdDQUEwQjtJQUVyQixlQUF5RDtJQUF6RCxtR0FBeUQ7SUFlekQsZUFBc0U7SUFBdEUsOEdBQXNFO0lBYzlELGVBQW9DO0lBQXBDLHFFQUFvQztJQWtCekMsZUFBZTtJQUFmLHVDQUFlOzs7O0lBN0kzQixvQ0FBZ0UsaUJBQUE7SUFDMkQsdUtBQVksZUFBQSxrQkFBVSxDQUFBLElBQUM7SUFDOUksZ0NBQVU7SUFDUixvRkFRVTtJQUNWLCtCQUFTLGlCQUFBLGFBQUE7SUFLSCw4RkErQ2U7SUFDakIsaUJBQU0sRUFBQTtJQUVSLG9DQUUwRSxjQUFBO0lBRXRFLGdHQWNlO0lBQ2pCLGlCQUFNLEVBQUEsRUFBQSxFQUFBO0lBS1osNEZBOEZhO0lBQ2YsaUJBQU8sRUFBQTs7O0lBekxpQixlQUF5QztJQUF6QyxxRUFBeUMsOERBQUE7SUFFbkQsZUFBMEM7SUFBMUMseUVBQTBDO0lBVW9CLGVBQWlCO0lBQWpCLHNDQUFpQix5QkFBQSx5QkFBQSx5QkFBQSx5QkFBQSw2QkFBQSw2QkFBQSw2QkFBQSw2QkFBQSw2QkFBQTtJQUlqRCxlQUE2QztJQUE3QyxnRkFBNkM7SUFrRGQsZUFBa0M7SUFBbEMsNkRBQWtDLGdEQUFBLGdEQUFBLGlEQUFBLGlEQUFBO0lBSWpFLGVBQTZDO0lBQTdDLGdGQUE2QztJQW9CMUUsZUFBaUI7SUFBakIseUNBQWlCOzs7O0lBMkdsQywyQ0FBMk07SUFBdkUsNExBQVcsZUFBQSxxQkFBYSxDQUFBLElBQUMsMktBQVUsZUFBQSxtQkFBVyxDQUFBLElBQXJCLHlLQUErQixlQUFBLHFCQUFhLENBQUEsSUFBNUM7SUFBOEMsaUJBQWtCOzs7SUFBM0sseURBQW9DLHdCQUFBLG1DQUFBOzs7O0lBQ3RGLHVDQUNvRDtJQURBLGtMQUFXLGVBQUEsdUNBQStCLENBQUEsSUFBQztJQUMzQyxpQkFBVTs7O0lBRGhELDBDQUFxQix3QkFBQSxxQkFBQSw2QkFBQSxxQkFBQTs7QUQzSm5DLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxRQUFRO0lBd0VoRCxJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsWUFBbUIsR0FBb0IsRUFBUyxvQkFBMEMsRUFBUyxPQUFzQixFQUMvRyxHQUEyQixFQUFTLElBQWlCLEVBQVMsU0FBMkIsRUFDekYsTUFBcUIsRUFBUyxpQkFBb0MsRUFBUyxFQUFjLEVBQVUsY0FBOEIsRUFDbEksT0FBaUIsRUFBUyxFQUFpQixFQUFTLE9BQXdCLEVBQVMsRUFBcUIsRUFBVSxNQUFjO1FBQ3pJLEtBQUssRUFBRSxDQUFDO1FBSlMsUUFBRyxHQUFILEdBQUcsQ0FBaUI7UUFBUyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUMvRyxRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUFTLFNBQUksR0FBSixJQUFJLENBQWE7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUN6RixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUFTLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDbEksWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQWU7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUFTLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXhFcEksWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2QsY0FBUyxHQUEyQixFQUFFLENBQUM7UUFNdkMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUM1QixjQUFTLEdBQVksS0FBSyxDQUFDLENBQUMseURBQXlEO1FBRzlGOzs7V0FHRztRQUNNLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsZ0JBQVcsR0FBYSxLQUFLLENBQUM7UUFDN0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzFDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUTlCLG1CQUFjLEdBQVcsSUFBSSxDQUFDO1FBY3ZDLG1CQUFtQjtRQUNuQixtQkFBYyxHQUF1QixFQUFFLENBQUM7UUFDeEMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFVBQUssR0FBZSxFQUFFLENBQUM7UUFDdkIsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN4QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBSTlCLGdDQUEyQixHQUFhLEtBQUssQ0FBQztRQUU5Qyw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFFMUMsaUJBQVksR0FBWSxFQUFFLENBQUM7UUFjekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxvRkFBb0Y7SUFDcEYsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUM7WUFDaEMsSUFBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBQztnQkFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7UUFDRCxJQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFDO1lBQ3RDLEtBQUssSUFBSSxTQUFTLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUU7Z0JBQ3pELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ2pFO2FBQ0Y7U0FDRjthQUFNLElBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxhQUFhLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFDO1lBQzdGLEtBQUssSUFBSSxTQUFTLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUU7Z0JBQzFELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO29CQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ2hFO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsSUFBSTtRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNiLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsSUFBRyxRQUFRLEVBQUM7Z0JBQ1Y7OzttQkFHRztnQkFDSixJQUFHLFVBQVUsRUFBQztvQkFDYixJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM3RyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUN4QzthQUNEO2lCQUFJO2dCQUNILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDN0M7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSztRQUMvQixJQUFHLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3ZELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRSxJQUFHLE9BQU8sRUFBQztnQkFDVCxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzNCO2lCQUFNLElBQUcsSUFBSSxJQUFJLGdCQUFnQixFQUFDO2dCQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hFO2lCQUFJO2dCQUNILE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDM0Q7U0FDRjthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQywrREFBK0QsQ0FBQyxDQUFDO1NBQy9FO0lBQ0gsQ0FBQztJQUVELHlHQUF5RztJQUN6RywyQkFBMkIsQ0FBQyxJQUFJO1FBQzlCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsQ0FBQztRQUM1SCxJQUFHLGNBQWMsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUM3QyxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQjthQUFLO1lBQ0osT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFFZCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxXQUFXLEdBQWEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUQsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQyxJQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxNQUFNLEVBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxlQUFlLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN4QyxJQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUM7b0JBQ2pCLGVBQWUsR0FBRyxlQUFlLENBQUM7aUJBQ25DO2dCQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvRixJQUFJLENBQUMsaUJBQWlCO3FCQUNuQixHQUFHLENBQWMsR0FBRyxlQUFlLEVBQUUsRUFBRSxPQUFPLENBQUM7cUJBQy9DLFNBQVMsQ0FDUixHQUFHLENBQUMsRUFBRTtvQkFDSixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JCLElBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFDO3dCQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUM7d0JBQzNELEtBQUssSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTs0QkFDekMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0NBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs2QkFDakU7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsSUFBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxFQUFDO3dCQUM1QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7d0JBQy9ELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQ2pFO29CQUNELElBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBQzt3QkFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQzt3QkFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQ25DO2dCQUNILENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtvQkFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixDQUFDLENBQUMsQ0FBQTthQUNQO1NBQ0Y7YUFBTTtZQUNMLElBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBQztnQkFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2pFO1lBQ0QsSUFBRyxJQUFJLENBQUMsSUFBSSxFQUFDO2dCQUNYLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDbkM7aUJBQU0sSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFDO2dCQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNuQztTQUNGO0lBQ0gsQ0FBQztJQUVDLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDekUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUNyQjtRQUNELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuRCxNQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hEO1lBQ0QsSUFBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBQztnQkFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzVDO1FBQ0gsQ0FBQyxDQUNBLENBQUM7UUFFRixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUU7UUFDMUMsY0FBYztRQUNkLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxTQUEyQixDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25GLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUVqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLElBQUksS0FBSyxHQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUNqQyxJQUFJLHFCQUFxQixHQUF1QixFQUFFLENBQUM7WUFDbkQsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO2dCQUNsQixLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQXVCLEVBQUUsRUFBRTtvQkFFakQsSUFBSSxVQUFVLEdBQVcsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDdEMsSUFBSSxVQUFVLEtBQUssT0FBTyxFQUFFO3dCQUMxQix3Q0FBd0M7d0JBQ3hDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFOzRCQUN0QyxJQUFJLFlBQVksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksYUFBYSxJQUFHLFlBQVksQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksWUFBWSxDQUFDLGFBQWEsSUFBSSxVQUFVLElBQUksWUFBWSxDQUFDLGFBQWEsSUFBSSxjQUFjLENBQUMsRUFBRTtnQ0FDak8scUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7NkJBQ3hHOzRCQUVELElBQUksWUFBWSxDQUFDLFVBQVUsRUFBRTtnQ0FDM0IsSUFBSSxhQUFhLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztnQ0FDNUMseURBQXlEO2dDQUN6RCxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO29DQUNoQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLFlBQVksQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUU7d0NBQ2xHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUE7d0NBQ3RDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO3FDQUNsRztvQ0FDRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLFlBQVksQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLFNBQVMsS0FBSyxNQUFNOzJDQUM3RixZQUFZLENBQUMsU0FBUyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsS0FBSyxVQUFVLElBQUssWUFBWSxDQUFDLFNBQVMsS0FBSyxPQUFPLElBQUssWUFBWSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRTt3Q0FDbEosSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQTt3Q0FDdEMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUNBQ3RHO29DQUNELElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxrQkFBa0IsRUFBRTt3Q0FDekMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO3FDQUMzRztnQ0FDSCxDQUFDLENBRUEsQ0FBQTs2QkFDRjt3QkFDSCxDQUFDLENBQ0EsQ0FBQTtxQkFDRjt5QkFBTTt3QkFDTCwwQ0FBMEM7d0JBQzFDLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxhQUFhLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsYUFBYSxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUMsYUFBYSxJQUFJLGNBQWMsQ0FBQyxFQUFFOzRCQUNwTSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDbkc7d0JBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFOzRCQUN0QixJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDOzRCQUN2QyxhQUFhLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dDQUNoQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLE9BQU8sQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUU7b0NBQ3hGLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUE7b0NBQ3RDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lDQUM3RjtnQ0FDRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUU7b0NBQ3pDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztpQ0FDdEc7NEJBQ0gsQ0FBQyxDQUVBLENBQUE7eUJBQ0Y7d0JBQ0QsSUFBSSxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFOzRCQUM3RCw0RkFBNEY7eUJBQzdGO3FCQUNGO29CQUNELFNBQVMsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEQsSUFBRyxLQUFLLENBQUMsTUFBTSxFQUFDO2dCQUNkLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3BDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hFLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNuQztZQUNELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNsQztZQUNELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUM5QyxLQUFLLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3pDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO3FCQUNqRDtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksS0FBSyxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQztZQUMvQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDeEU7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNsQztpQkFBTTtnQkFDTCxLQUFLLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7b0JBQ3pDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO3FCQUNqRDtpQkFDRjthQUNGO1NBQ0Y7UUFFRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxFQUFFLGdCQUFnQixDQUFDO0lBQ3RELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFpQixFQUFFLFNBQTJCO1FBQ2pFLElBQUksS0FBSyxHQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNsQixLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxVQUFVLEdBQVcsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDdEMsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7b0JBQzVCLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDO3lCQUNqQyxZQUFZO3lCQUNaLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUNqRjtnQkFHRCxJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUU7b0JBQzFCLGtFQUFrRTtvQkFDbEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQ3RDLElBQUksWUFBWSxDQUFDLGdCQUFnQixFQUFFOzRCQUNqQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFlBQVk7Z0NBQzVELFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7eUJBQ2pGO29CQUNILENBQUMsQ0FDQSxDQUFBO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsU0FBaUIsRUFBRSxTQUEyQjtRQUN4RCxJQUFJLEtBQUssR0FBUSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksVUFBVSxHQUFXLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtvQkFDcEIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQzVDO2dCQUVELElBQUksVUFBVSxLQUFLLE9BQU8sRUFBRTtvQkFDMUIsa0VBQWtFO29CQUNsRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTt3QkFDdEMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFOzRCQUNwQixTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzt5QkFDakQ7b0JBQ0gsQ0FBQyxDQUNBLENBQUE7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxTQUFpQixFQUFFLFNBQTJCO1FBQzFELElBQUksS0FBSyxHQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELDRDQUE0QztRQUM1QyxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksVUFBVSxHQUFXLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3RDLDZDQUE2QztnQkFDN0MsSUFBSSxVQUFVLEtBQUssTUFBTSxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUU7b0JBQ3BELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ3REO2dCQUNELElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDekQ7Z0JBQ0QsSUFBSSxVQUFVLEtBQUssVUFBVSxFQUFFO29CQUM3QixJQUFJLENBQUMsK0JBQStCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxJQUFJLFVBQVUsS0FBSyxZQUFZLElBQUksVUFBVSxLQUFLLGNBQWMsRUFBRTtvQkFDaEUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztpQkFDdkQ7Z0JBQ0QsSUFBSSxVQUFVLEtBQUssVUFBVSxJQUFJLFVBQVUsS0FBSyxzQkFBc0IsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLElBQUksVUFBVSxLQUFLLGVBQWUsRUFBRTtvQkFDM0ksNERBQTREO29CQUM1RCxJQUFJLENBQUMsK0JBQStCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2lCQUMxRDtnQkFFRCxJQUFJLFVBQVUsS0FBSyxPQUFPLEVBQUU7b0JBQzFCLGtFQUFrRTtvQkFDbEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQ3RDLElBQUksZUFBZSxHQUFXLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBRWhELElBQUksZUFBZSxLQUFLLFVBQVUsRUFBRTs0QkFDbEMsNERBQTREOzRCQUM1RCxJQUFJLENBQUMsK0JBQStCLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO3lCQUMvRDt3QkFDRCxJQUFJLGVBQWUsS0FBSyxNQUFNLElBQUksZUFBZSxLQUFLLFFBQVEsRUFBRTs0QkFDOUQscUZBQXFGOzRCQUNyRixJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO3lCQUMzRDt3QkFDRCxJQUFJLGVBQWUsS0FBSyxZQUFZLElBQUksZUFBZSxLQUFLLGNBQWMsRUFBRTs0QkFDMUUsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQzt5QkFDNUQ7d0JBRUQsSUFBSSxlQUFlLEtBQUssVUFBVSxJQUFJLGVBQWUsS0FBSyxzQkFBc0IsRUFBRTs0QkFDaEYsSUFBSSxDQUFDLCtCQUErQixDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQzt5QkFDL0Q7b0JBQ0gsQ0FBQyxDQUNBLENBQUM7aUJBQ0g7WUFDSCxDQUFDLENBQ0EsQ0FBQTtTQUNGO1FBQ0QsS0FBSztJQUNQLENBQUM7SUFHRCwrQkFBK0IsQ0FBQyxPQUFZLEVBQUUsU0FBMkI7UUFDdkUsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakQsSUFBSSxxQkFBcUIsR0FBdUIsRUFBRSxDQUFDO1lBQ25ELElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQzdDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDakQ7WUFDRCxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUN0RSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVELDRCQUE0QixDQUFDLE9BQVksRUFBRSxTQUEyQjtRQUNwRSxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqRCxJQUFJLHFCQUFxQixHQUF1QixFQUFFLENBQUM7WUFFbkQsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDN0MscUJBQXFCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNqRDtZQUNELFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3RFLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0lBR0QsK0JBQStCLENBQUMsT0FBWSxFQUFFLFNBQTJCO1FBQ3ZFLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pELElBQUkscUJBQXFCLEdBQXVCLEVBQUUsQ0FBQztZQUNuRCw2QkFBNkI7WUFDN0IsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDN0Msb0VBQW9FO2dCQUNwRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDdEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUUzRDtRQUNELHNHQUFzRztJQUN4RyxDQUFDO0lBR0QsOEJBQThCLENBQUMsT0FBWSxFQUFFLFNBQTJCO1FBQ3RFLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pELElBQUkscUJBQXFCLEdBQXVCLEVBQUUsQ0FBQztZQUNuRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUM3QyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDdEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUMzRDtJQUNILENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxPQUFZLEVBQUUsU0FBMkI7UUFDbkUsNERBQTREO1FBQzVELElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2pELElBQUkscUJBQXFCLEdBQXVCLEVBQUUsQ0FBQztZQUNuRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUM3Qyx3RUFBd0U7Z0JBQ3hFLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDakQ7WUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3RCLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ3ZDLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ2hDLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLE1BQU0sRUFBRTt3QkFDeEYsd0NBQXdDO3dCQUN4Qyx1SUFBdUk7cUJBQ3hJO29CQUNELElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7d0JBQzlCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO3FCQUNqRTtvQkFDRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUU7d0JBQ3BELHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO3FCQUN2RTtvQkFDRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUU7d0JBQ3BELHFCQUFxQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO3FCQUN2RTtvQkFDRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO3dCQUNoQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztxQkFDaEU7Z0JBR0gsQ0FBQyxDQUFDLENBQUE7YUFFSDtZQUNELFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3RFLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FFM0Q7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUMzQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDMUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNsRCxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RSxxQkFBcUI7UUFDckIsSUFBSSxVQUFVLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNuQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLEVBQTRCLENBQUM7UUFDNUMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0MsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pELElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLElBQUksT0FBTyxHQUFhLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENBQUM7WUFDM0MsUUFBUSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUN2QyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO1lBQ2pDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBLGlCQUFpQjtZQUNqRCxRQUFRLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDckMsUUFBUSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzVDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQztZQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QixRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLG9CQUFvQjtpQkFDdEIsdUJBQXVCLENBQUMsUUFBUSxDQUFDO2lCQUNqQyxTQUFTLENBQ1IsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO2dCQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksR0FBRyxFQUFFO29CQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQzVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDM0QsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDaEUsSUFBRyxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxFQUFDO3dCQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQzt3QkFDbkYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQzt3QkFDckYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUV2RSxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQzt3QkFDNUYsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7d0JBQzFGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7d0JBQzVFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsZUFBZSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNoRjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7d0JBQzdCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO3FCQUM3QjtvQkFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQzFCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDVjtZQUNILENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtnQkFDSixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTlCLENBQUMsQ0FDRixDQUFDO1NBQ0w7SUFHSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLFFBQVEsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWMsRUFBRSxXQUFtQixFQUFFLFNBQTJCLEVBQUUsT0FBWTtRQUd0RixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksU0FBUyxHQUFhLEtBQUssQ0FBQztRQUNoQyxJQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUM7WUFDdkIsSUFBSSxJQUFJLEdBQWMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxTQUFTLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxhQUFhLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRTdJLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUM7Z0JBQ2xCLFNBQVMsR0FBRyxTQUFTLElBQUksYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTthQUN4RjtZQUNELElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUM7Z0JBQ2xCLFNBQVMsR0FBRyxTQUFTLElBQUksYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTthQUN4RjtZQUNELElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUM7Z0JBQ2xCLFNBQVMsR0FBRyxTQUFTLElBQUksYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTthQUN4RjtZQUNELElBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7Z0JBQ2YsTUFBTSxpRUFBaUUsQ0FBQzthQUMzRTtTQUNGO1FBRUQsSUFBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDO1lBQ3ZCLElBQUksSUFBSSxHQUFjLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtZQUM1SSxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO2dCQUNsQixTQUFTLEdBQUcsU0FBUyxJQUFJLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUE7YUFDeEY7WUFDRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO2dCQUNsQixTQUFTLEdBQUcsU0FBUyxJQUFJLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUE7YUFDeEY7WUFDRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO2dCQUNsQixTQUFTLEdBQUcsU0FBUyxJQUFJLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUE7YUFDeEY7WUFDRCxJQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO2dCQUNmLE1BQU0saUVBQWlFLENBQUM7YUFDM0U7U0FDRjtRQUVELElBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQztZQUNsRCxTQUFTLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUMzRTtRQUVELElBQUcsU0FBUyxFQUFDO1lBQ1gsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxJQUFJLFdBQVcsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFO1lBQy9FLElBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUM7Z0JBQzlDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2hEO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFBLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLENBQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlJLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRCxJQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFDO1lBQzlDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDbkI7UUFDRCxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxTQUEyQixDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUE7UUFFdkUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25ELFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDMUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDbEQsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN4QixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDckcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDM0MsT0FBTzthQUNSO1NBQ0Y7UUFDRCxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTFDLDZCQUE2QjtRQUM3QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNySSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4SSxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNySSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVuSSxJQUFHLFFBQVEsS0FBSyxFQUFFLElBQUksU0FBUyxLQUFLLEVBQUUsSUFBSSxRQUFRLEtBQUssRUFBRSxJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUM7WUFDekUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzNDO2FBQUs7WUFDSixJQUFHLFFBQVEsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFDakY7Z0JBQ0UsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzNDO2lCQUNHO2dCQUNGLE1BQU0sb0JBQW9CLEdBQUc7b0JBQzNCLFNBQVMsRUFBRSxFQUFFO29CQUNiLFdBQVcsRUFBRSxFQUFFO29CQUNmLEtBQUssRUFBRTt3QkFDSCxrSUFBa0k7cUJBQ3JJO29CQUNELFNBQVMsRUFBRSwrREFBK0Q7b0JBQzFFLE9BQU8sRUFBRSxJQUFJO29CQUNiLFdBQVcsRUFBRSxLQUFLO2lCQUNuQixDQUFBO2dCQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDekM7U0FDRjtJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxTQUFTO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksVUFBVSxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFFBQVEsR0FBRyxFQUE0QixDQUFDO1FBQzVDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRS9FLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUU7WUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUNoQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUEsQ0FBQSwrQkFBK0I7WUFDM0QsUUFBUSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN2RCxRQUFRLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFDO1lBQy9ELFFBQVEsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUN2QyxRQUFRLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDdkMsUUFBUSxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQztZQUNuRSxRQUFRLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUFDO1lBQzNELFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7WUFDdkQsUUFBUSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM1QyxJQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBQztnQkFDaEIsUUFBUSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUIsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQ2xCLElBQUksQ0FBQyxvQkFBb0I7aUJBQ3RCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztpQkFDM0IsU0FBUyxDQUNSLEdBQUcsQ0FBQyxFQUFFO2dCQUNKLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDNUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDakQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztpQkFDekM7Z0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO2dCQUNKLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FDRixDQUFDO1NBQ0w7YUFBTTtZQUNMLElBQUksT0FBTyxHQUFhLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztZQUNILFFBQVEsQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENBQUM7WUFDM0MsUUFBUSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUN2QyxRQUFRLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7WUFDdkQsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsaUJBQWlCO1lBQ2pELFFBQVEsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUNyQyxRQUFRLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUM7WUFDckQsUUFBUSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBRTVDLElBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFDO2dCQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzVCLE9BQU87YUFDUjtZQUNELElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBQztnQkFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO2dCQUN4QixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBQzFDLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUTtRQUNuRCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQVksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRixNQUFNLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlELE1BQU0sV0FBVyxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxRCxJQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDO1lBQzdGLE9BQU8sS0FBSyxDQUFBO1NBQ2I7YUFBSTtZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBSTtRQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLG9CQUFvQjthQUNwQix1QkFBdUIsQ0FBQyxJQUFJLENBQUM7YUFDN0IsU0FBUyxDQUNSLEtBQUssRUFBQyxHQUFHLEVBQUMsRUFBRTtZQUNWLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFFdkUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO2dCQUMxRixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDOUYsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDNUUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDaEUsbUVBQW1FO2dCQUNuRSxJQUFHLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBQztvQkFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7b0JBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNoQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDekksSUFBSSxDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUM7eUJBQ3pDLFNBQVMsQ0FDUixHQUFHLENBQUMsRUFBRTt3QkFDSiwwQ0FBMEM7d0JBQzFDLElBQUcsR0FBRyxFQUFDOzRCQUNMLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDOzRCQUMvQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO3lCQUN0Qzs2QkFBTTs0QkFDTCxJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUM7Z0NBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsZUFBZSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUNoRjtpQ0FBTTtnQ0FDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQ0FDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7NkJBQzdCO3lCQUNGO29CQUNILENBQUMsQ0FDRixDQUFDO2lCQUNIO3FCQUFNO29CQUNMLElBQUcsSUFBSSxDQUFDLGNBQWMsRUFBQzt3QkFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxlQUFlLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ2hGO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDN0I7aUJBQ0Y7YUFDRjtZQUNELElBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFDO2dCQUN4QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyx3REFBd0QsQ0FBQyxFQUFDO2dCQUMvRSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDO2FBQ3pDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hDLElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBQztnQkFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7YUFDckI7aUJBQUk7Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEI7WUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQ0YsQ0FBQztJQUNSLENBQUM7SUFFRCx1Q0FBdUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUosSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUM7WUFDMUYsSUFBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLGVBQWUsS0FBSyxHQUFHLEVBQUM7Z0JBQ3hELE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNyTCxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEssS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDL0ssR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDOUo7aUJBQU07Z0JBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pMLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUM1SixLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzSyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUMxSjtTQUNGO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0ksTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakosTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakosTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFD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O2tCQUF0QixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFNRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNJLFdBQVc7a0JBQXBCLE1BQU07WUFDRyxVQUFVO2tCQUFuQixNQUFNO1lBQ0csT0FBTztrQkFBaEIsTUFBTTtZQUM0QixPQUFPO2tCQUF6QyxTQUFTO21CQUFDLHNCQUFzQjtZQUN4QixJQUFJO2tCQUFaLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFFRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFFRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQTBCRixPQUFPO2tCQURWLE1BQU07O2tGQXhFSSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm4sIEZvcm1Db250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBRdWVzdGlvbkJhc2UgfSBmcm9tICcuL3F1ZXN0aW9uLWJhc2UnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbkNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9xdWVzdGlvbi1jb250cm9sLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBcHBWYWxpZGF0b3JzIH0gZnJvbSAnLi9BcHBWYWxpZGF0b3JzJztcclxuXHJcbmltcG9ydCB7IFF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4vcXVlc3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IFN0ZXBwZXJTZWxlY3Rpb25FdmVudCwgU1RFUFBFUl9HTE9CQUxfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcclxuaW1wb3J0IHsgTWF0U3RlcHBlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcXVlc3Rpb25uYWlyZS92YWxpZGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xhaW1BcHBFbXBsb3llckRldGFpbHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0NsYWltQXBwRW1wbG95ZXJEZXRhaWxzTW9kZWwnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlU2F2ZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUXVlc3Rpb25uYWlyZVNhdmVNb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVBhZ2UgfSBmcm9tICcuLi8uLi9wYWdlcy9CYXNlUGFnZSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvUXVlc3Rpb25uYWlyZVF1ZXJ5TW9kZWwnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2UgfSBmcm9tICdAaW9uaWMvc3RvcmFnZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgRmJDb25zdGFudHMgfSBmcm9tICcuL0ZiQ29uc3RhbnRzJztcclxuaW1wb3J0IHsgRWxlbWVudHNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0VsZW1lbnRzTW9kZWwnO1xyXG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXJyb3JNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9FcnJvck1vZGVsJztcclxuaW1wb3J0IHsgTWZhQ29tcG9uZW50IH0gZnJvbSAnLi4vbWZhL21mYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9xdWVzdGlvbm5haXJlL0xvYWRlck1vZGVsJztcclxuaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2FwdGNoYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXB0Y2hhL2NhcHRjaGEuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IExleGlzTmV4aXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGV4aXMtbmV4aXMvbGV4aXMubmV4aXMuc2VydmljZSc7XHJcbmltcG9ydCB7IExleGlzTmV4aXNBY2NvdW50Q3JlYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9MZXhpc05leGlzQWNjb3VudENyZWF0aW9uTW9kZWwnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1keW5hbWljLWZvcm0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICBwcm92aWRlcnM6IFtRdWVzdGlvbkNvbnRyb2xTZXJ2aWNlLCB7XHJcbiAgICBwcm92aWRlOiBTVEVQUEVSX0dMT0JBTF9PUFRJT05TLFxyXG4gICAgdXNlVmFsdWU6IHtcclxuICAgICAgc2hvd0Vycm9yOiB0cnVlLFxyXG4gICAgICBkaXNwbGF5RGVmYXVsdEluZGljYXRvclR5cGU6IGZhbHNlXHJcbiAgICB9XHJcbiAgfV0sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1Db21wb25lbnQgZXh0ZW5kcyBCYXNlUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBcclxuICBAVmlld0NoaWxkKCdtZmEnKSBtZmE6IE1mYUNvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZCgncXVlc3Rpb25uYWlyZUZvcm0nLCB7c3RhdGljIDogZmFsc2V9KSBcclxuICBwdWJsaWMgcXVlc3Rpb25uYWlyZUZvcm06IE5nRm9ybTtcclxuICBwdWJsaWMgcG90ZW50aWFsSXNzdWVJZDogbnVtYmVyO1xyXG4gIHB1YmxpYyBibG9ja1VpID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dNZmEgPSBmYWxzZTtcclxuICBASW5wdXQoKSBxdWVzdGlvbnM6IFF1ZXN0aW9uQmFzZTxzdHJpbmc+W10gPSBbXTtcclxuICBASW5wdXQoKSBmb3JTY3JlZW5RdWVzdGlvbm5haXJlOiBRdWVzdGlvbkJhc2U8Ym9vbGVhbj47XHJcbiAgQElucHV0KCkgaXNFbmFibGVCYWNrQnV0dG9uOkJvb2xlYW47XHJcbiAgQElucHV0KCkgYmFja0J1dHRvblBhZ2U6IHN0cmluZztcclxuICBASW5wdXQoKSBuZXh0QnV0dG9uUGFnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBhZ2VUeXBlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGlkZUZvb3RlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG11bHRpTW9kZTogYm9vbGVhbiA9IGZhbHNlOyAvL3doZW4gbXVsdGlwbGUgZm9ybXMgYXJlIGRpc3BsYXllZCBvbmUgYmVsb3cgdGhlIGFub3RoZXJcclxuICBASW5wdXQoKSBsb2FkZXJTZXJ2aWNlOnN0cmluZztcclxuICBwdWJsaWMgbG9hZGVyTW9kZWwgOiBMb2FkZXJNb2RlbDtcclxuICAvKipcclxuICAgKiB3aGVuIGF1dG9TYXZlIGlzIGZhbHNlLCBjb21wb25lbnQgd2lsbCBvbmx5IGVtaXQgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIGJ1aWxlciBkYXRhIHdoaWNoIG5lZWRzIHRvIGJlIHNhdmVkIGJ5IHRoZSBjYWxsaW5nIGNvbXBvbmVudFxyXG4gICAqIG9ubHkgYXBwbGljYWJsZSB3aGVuIHBhZ2VUeXBlIGlzIG5vdCBQT1BVUCBhbmQgSlNPTlxyXG4gICoqL1xyXG4gIEBJbnB1dCgpIGF1dG9TYXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBtZmFSZXF1aXJlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgbW9kZWxDYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uRXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQFZpZXdDaGlsZCgnbWF0SG9yaXpvbnRhbFN0ZXBwZXInKSBzdGVwcGVyOiBNYXRTdGVwcGVyO1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuICBASW5wdXQoKSByZWFkT25seUZpZWxkczogc3RyaW5nW107XHJcbiAgQElucHV0KCkgZm9ybVJlYWRPbmx5OiBCb29sZWFuO1xyXG4gIEBJbnB1dCgpIHF1ZXJ5TW9kZWw6IFF1ZXN0aW9ubmFpcmVRdWVyeU1vZGVsO1xyXG4gIEBJbnB1dCgpIGR5bmFtaWNQYXJhbSA6IGFueTtcclxuICBASW5wdXQoKSBmb3JtRGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIHF1ZXN0aW9uTnVtYmVyOiBudW1iZXIgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBzaXplWHMgOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2l6ZVNtIDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNpemVNZCA6IG51bWJlcjtcclxuICBASW5wdXQoKSBzaXplTGcgOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2l6ZVhsIDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoKSBvZmZzZXRYcyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBvZmZzZXRTbSA6IG51bWJlcjtcclxuICBASW5wdXQoKSBvZmZzZXRNZCA6IG51bWJlcjtcclxuICBASW5wdXQoKSBvZmZzZXRMZyA6IG51bWJlcjtcclxuICBASW5wdXQoKSBvZmZzZXRYbCA6IG51bWJlcjtcclxuXHJcbiAgLy8gZm9ybTogRm9ybUdyb3VwO1xyXG4gIGZvcm1Hcm91cEFycmF5OiBVbnR5cGVkRm9ybUdyb3VwW10gPSBbXTtcclxuICBwYXlMb2FkID0gJyc7XHJcbiAgaXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuICBpc0ZpcnN0OiBib29sZWFuID0gdHJ1ZTtcclxuICBpc0xhc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzdWJtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBoaWRlU3RlcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlkZW50aWZpZXI6IHN0cmluZyA9IFwiXCI7XHJcbiAgYWN0aXZlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgZXJyb3JPY2N1cmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWZhRGF0YSA6IGFueTtcclxuICBtZmFFcnJvciA6IEVycm9yTW9kZWw7XHJcbiAgc3NuRm9yQ1NSIDogc3RyaW5nO1xyXG4gIHBheW1lbnREZXRhaWxDaGFuZ2VIYXNFcnJvciA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgaXNMZXhpc05leGlzUG9wdXBFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaW5wdXREYXRhIDogUXVlc3Rpb25uYWlyZVNhdmVNb2RlbDtcclxuICByZXNwb25zZVV1aWQgOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHVzZXJEZXRhaWxzIDogTGV4aXNOZXhpc0FjY291bnRDcmVhdGlvbk1vZGVsO1xyXG4gIGZvcm1SYXdEYXRhIDogYW55O1xyXG4gIGZsb3dLZXkgOiBudW1iZXI7XHJcbiAgXHJcbiAgQE91dHB1dCgpXHJcbiAgZ2V0IGludmFsaWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBBcnJheS5tYXAoeCA9PiB4LmludmFsaWQpLnJlZHVjZSgoYSxiKSA9PiBhICYmIGIpO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcWVzOiBRdWVzdGlvblNlcnZpY2UsIHB1YmxpYyBxdWVzdGlvbm5haXJlU2VydmljZTogUXVlc3Rpb25uYWlyZVNlcnZpY2UsIHB1YmxpYyBuYXZDdHJsOiBOYXZDb250cm9sbGVyLFxyXG4gICAgcHJpdmF0ZSBxY3M6IFF1ZXN0aW9uQ29udHJvbFNlcnZpY2UsIHB1YmxpYyB1dGlsOiBVdGlsU2VydmljZSxwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwdWJsaWMgdmFsaWRhdGlvblNlcnZpY2U6IFZhbGlkYXRpb25TZXJ2aWNlLCBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHVibGljIHN0b3JhZ2UgOiBTdG9yYWdlLCBwdWJsaWMgbHMgOiBMb2dpblNlcnZpY2UsIHB1YmxpYyBjYXB0Y2hhIDogQ2FwdGNoYVNlcnZpY2UsIHB1YmxpYyBsbjogTGV4aXNOZXhpc1NlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnN0b3JhZ2UuY3JlYXRlKCkudGhlbigoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiU3RvcmFnZSBEQiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS5cIik7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLypUaGlzIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIEBJbnB1dCAnZm9ybURhdGEnIHZhbHVlIGlzIGNoYW5nZWQgZm9yIHRoaXMgY29udHJvbCovICAgXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYoY2hhbmdlcy5mb3JtRGF0YT8uY3VycmVudFZhbHVlKXtcclxuICAgICAgaWYoY2hhbmdlcy5mb3JtRGF0YS5jdXJyZW50VmFsdWUpe1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyhjaGFuZ2VzLmZvcm1EYXRhLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmKGNoYW5nZXMucmVhZE9ubHlGaWVsZHM/LmN1cnJlbnRWYWx1ZSl7XHJcbiAgICAgIGZvciAobGV0IGNudHJsTmFtZSBvZiBjaGFuZ2VzLnJlYWRPbmx5RmllbGRzLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cEFycmF5W3RoaXMuYWN0aXZlSW5kZXhdPy5nZXQoY250cmxOYW1lKSkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkuZGlzYWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmKGNoYW5nZXMucmVhZE9ubHlGaWVsZHM/LnByZXZpb3VzVmFsdWUgJiYgY2hhbmdlcy5yZWFkT25seUZpZWxkcy5jdXJyZW50VmFsdWUgPT0gbnVsbCl7XHJcbiAgICAgIGZvciAobGV0IGNudHJsTmFtZSBvZiBjaGFuZ2VzLnJlYWRPbmx5RmllbGRzLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF0/LmdldChjbnRybE5hbWUpLmVuYWJsZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Rm9ybVZhbHVlcyhkYXRhKXtcclxuICAgIE9iamVjdC5rZXlzKGRhdGEpXHJcbiAgICAgICAgICAgICAgLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBxdWVzdGlvbiA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2xDb25maWd1cmF0aW9uKGtleSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWVUb1NldCA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmKHF1ZXN0aW9uKXtcclxuICAgICAgICAgICAgICAgICAgLyoqIEZvciBkcm9wZG93biBmb3JtIGNvbnRyb2wsIGV4cGVjdGluZyB0byBnZXQgZGF0YSBpbiBmb3JtIHt2YWx1ZSA6IFwic29tZVZhbHVlXCIsIHRleHQ6IG51bGx9LlxyXG4gICAgICAgICAgICAgICAgICAgKiBCYXNlZCBvbiB0aGUgdmFsdWUgYXR0cmlidXRlLCBvcHRpb24gd2lsbCBiZSBzZXQgb24gZm9ybSBjb250cm9sIGFmdGVyIHJlYWRpbmcgaXQgZnJvbSBjaG9pY2VzXHJcbiAgICAgICAgICAgICAgICAgICAqIGFycmF5LlxyXG4gICAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgICBpZih2YWx1ZVRvU2V0KXtcclxuICAgICAgICAgICAgICAgICAgbGV0IGNob2ljZSA9IHF1ZXN0aW9uLmNob2ljZXMuZmlsdGVyKG8gPT4gby52YWx1ZSA9PSAodmFsdWVUb1NldD8udmFsdWUgPyB2YWx1ZVRvU2V0LnZhbHVlIDogdmFsdWVUb1NldCkpWzBdO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlSW5Gb3JtQ29udHJvbChrZXksIGNob2ljZSk7XHJcbiAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVJbkZvcm1Db250cm9sKGtleSwgdmFsdWVUb1NldCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZUluRm9ybUNvbnRyb2wobmFtZSwgdmFsdWUpe1xyXG4gICAgaWYodGhpcy5mb3JtR3JvdXBBcnJheSAmJiB0aGlzLmZvcm1Hcm91cEFycmF5Lmxlbmd0aCA+IDApe1xyXG4gICAgICBsZXQgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF0/LmNvbnRyb2xzW25hbWVdO1xyXG4gICAgICBpZihjb250cm9sKXtcclxuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xyXG4gICAgICB9IGVsc2UgaWYobmFtZSA9PSAnZGVwZW5kZW50VGFibGUnKXtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBmb3JtIGNvbnRyb2wgcHJlc2VudCBkZXBlbmRlbnRUYWJsZSAnLCBuYW1lKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gZm9ybSBjb250cm9sIHByZXNlbnQgd2l0aCBuYW1lICcsIG5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLndhcm4oXCJObyBmb3JtIGdyb3VwIHByZXNlbnQgc28gc2tpcHBpbmcgdmFsdWUgYXNzaWdubWVudCBmcm9tIGRhdGEuXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyogVG8gZ2V0IHRoZSBkcm9wZG93biBlbGVtZW50IHNvIHRoYXQgdmFsdWUgZnJvbSB0aGUgY2hvaWNlcyBjYW4gYmUgcmVhZCBhbmQgc2V0IGludG8gdGhlIGZvcm0gY29udHJvbCovXHJcbiAgZ2V0Rm9ybUNvbnRyb2xDb25maWd1cmF0aW9uKG5hbWUpe1xyXG4gICAgbGV0IGZpbHRlcmVkVmFsdWVzID0gdGhpcy5xdWVzdGlvbnNbMF0ucGFnZXNbdGhpcy5hY3RpdmVJbmRleF0uZWxlbWVudHMuZmlsdGVyKHEgPT4gcS5uYW1lID09IG5hbWUgJiYgcS50eXBlID09ICdkcm9wZG93bicpO1xyXG4gICAgaWYoZmlsdGVyZWRWYWx1ZXMgJiYgZmlsdGVyZWRWYWx1ZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgIHJldHVybiBmaWx0ZXJlZFZhbHVlc1swXTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXR1cExvYWRlck1vZGVsKCkge1xyXG4gIFxyXG4gICAgaWYgKHRoaXMubG9hZGVyU2VydmljZSkge1xyXG4gICAgICBsZXQgc2VydmljZVVybHM6IHN0cmluZ1tdID0gdGhpcy5sb2FkZXJTZXJ2aWNlLnNwbGl0KCcsJyk7XHJcbiAgICAgIGxldCBzZXJ2aWNlVXJsID0gc2VydmljZVVybHNbdGhpcy5hY3RpdmVJbmRleF07XHJcbiAgICAgIGlmKHNlcnZpY2VVcmwudHJpbSgpICE9ICdudWxsJyl7XHJcbiAgICAgIHRoaXMuYmxvY2tGb3JtVWkoKTtcclxuICAgICAgbGV0IHNlcnZpY2VVcmxWYWx1ZSA9IHNlcnZpY2VVcmwudHJpbSgpO1xyXG4gICAgICBpZih0aGlzLmxzLmlzQ3NyKCkpe1xyXG4gICAgICAgIHNlcnZpY2VVcmxWYWx1ZSA9IHNlcnZpY2VVcmxWYWx1ZTsgICAgICAgXHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMubHMuaXNDc3IoKSA/IHsgcGFyYW1zOiBuZXcgSHR0cFBhcmFtcygpLnNldCgnc3NuJywgdGhpcy5zc25Gb3JDU1IpIH0gOiB7fTtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uU2VydmljZVxyXG4gICAgICAgIC5nZXQ8TG9hZGVyTW9kZWw+KGAke3NlcnZpY2VVcmxWYWx1ZX1gLCBvcHRpb25zKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlck1vZGVsID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcImxvYWRlciBtb2RlbCAgPSBcIiArIHRoaXMubG9hZGVyTW9kZWwpOyAgICAgICBcclxuICAgICAgICAgICAgdGhpcy51bmJsb2NrRm9ybVVpKCk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubG9hZGVyTW9kZWwgJiYgdGhpcy5sb2FkZXJNb2RlbC5kaXNhYmxlQ29udHJvbE5hbWVzKXtcclxuICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5RmllbGRzID0gdGhpcy5sb2FkZXJNb2RlbC5kaXNhYmxlQ29udHJvbE5hbWVzO1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IGNudHJsTmFtZSBvZiB0aGlzLnJlYWRPbmx5RmllbGRzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVt0aGlzLmFjdGl2ZUluZGV4XT8uZ2V0KGNudHJsTmFtZSkuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLnFjcy5nZXREYXRhKHRoaXMuYWN0aXZlSW5kZXgpICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybURhdGEgPSBKU09OLnBhcnNlKHRoaXMucWNzLmdldERhdGEodGhpcy5hY3RpdmVJbmRleCkpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbdGhpcy5hY3RpdmVJbmRleF0ucGF0Y2hWYWx1ZSh0aGlzLmZvcm1EYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZih0aGlzLmxvYWRlck1vZGVsICYmIHRoaXMubG9hZGVyTW9kZWwuZGF0YSl7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb3JtRGF0YSA9IHRoaXMubG9hZGVyTW9kZWwuZGF0YTtcclxuICAgICAgICAgICAgICB0aGlzLnNldEZvcm1WYWx1ZXModGhpcy5mb3JtRGF0YSk7XHJcbiAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuZXJyb3JIYW5kbGVyKGVycik7XHJcbiAgICAgICAgICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xyXG4gICAgICAgICAgfSlcclxuICAgIH0gXHJcbiAgfSBlbHNlIHtcclxuICAgIGlmKHRoaXMucWNzLmdldERhdGEodGhpcy5hY3RpdmVJbmRleCkgIT0gbnVsbCl7XHJcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBKU09OLnBhcnNlKHRoaXMucWNzLmdldERhdGEodGhpcy5hY3RpdmVJbmRleCkpO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cEFycmF5W3RoaXMuYWN0aXZlSW5kZXhdLnBhdGNoVmFsdWUodGhpcy5mb3JtRGF0YSk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLmRhdGEpe1xyXG4gICAgICB0aGlzLmZvcm1EYXRhID0gdGhpcy5kYXRhO1xyXG4gICAgICB0aGlzLnNldEZvcm1WYWx1ZXModGhpcy5mb3JtRGF0YSk7XHJcbiAgICB9IGVsc2UgaWYodGhpcy5mb3JtRGF0YSl7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyh0aGlzLmZvcm1EYXRhKTtcclxuICAgIH0gIFxyXG4gIH0gXHJcbn1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5pdCBtZXRob2QgY2FsbGVkIGZyb20gZHluYW1pYyBmb3JtJywgdGhpcy5xdWVzdGlvbnMpXHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnIGJhY2tCdXR0b25QYWdlICcsIHRoaXMuYmFja0J1dHRvblBhZ2UsICcgbmV4dEJ1dHRvblBhZ2UnLCB0aGlzLm5leHRCdXR0b25QYWdlKTtcclxuICAgIGlmICghdGhpcy5xdWVzdGlvbnMpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLmhpZGVTdGVwID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNGaXJzdCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RyS2V5ID0gW107XHJcbiAgICBsZXQgcGFyYW1NYXAgPSBuZXcgTWFwKCk7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHN0cktleSA9IFtdID0gcGFyYW1zLmtleXM7XHJcbiAgICAgIHRoaXMuaWRlbnRpZmllciA9IHBhcmFtcy5nZXQoJ2lkZW50aWZpZXInKTtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJLZXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1Zygnc3RyaW5nS2V5ICcsIHN0cktleVtpXSwgcGFyYW1zLmdldChzdHJLZXlbaV0pKTtcclxuICAgICAgICBwYXJhbU1hcC5zZXQoc3RyS2V5W2ldLCBwYXJhbXMuZ2V0KHN0cktleVtpXSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHBhcmFtTWFwLmdldChcImtleVwiKSAhPSBudWxsKXtcclxuICAgICAgICB0aGlzLnNzbkZvckNTUiA9IGF0b2IocGFyYW1NYXAuZ2V0KFwia2V5XCIpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgKTtcclxuICAgIFxyXG4gICAgbGV0IGNvdW50ZXIgPSB0aGlzLnF1ZXN0aW9uc1swXS5zdGVwQ291bnRlcjtcclxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSBjb3VudGVyID8gY291bnRlciA6IDAgO1xyXG4gICAgLy90aGlzLnN0ZXBwZXJcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5xdWVzdGlvbnNbMF0ucGFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJCbG9jayBzdGF0ZW1lbnQgZXhlY3V0aW9uIG5vLlwiLCB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlcy5sZW5ndGgpO1xyXG4gICAgICBmb3JtR3JvdXAgPSB0aGlzLnFjcy50b0Zvcm1Hcm91cCh0aGlzLnF1ZXN0aW9ucywgaSwgcGFyYW1NYXApO1xyXG4gICAgICB0aGlzLnNldFZhbGlkYXRpb24oaSwgZm9ybUdyb3VwKTtcclxuXHJcbiAgICAgIHRoaXMuc2V0VmFsdWVTdWJzY3JpcHRpb24oaSwgZm9ybUdyb3VwKTtcclxuICAgICAgdGhpcy5zZXRSZWFkT25seShpLCBmb3JtR3JvdXApO1xyXG4gICAgICB2YXIgcGFnZXM6IGFueSA9IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzW2ldO1xyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygncGFnZXMnLCBwYWdlcylcclxuICAgICAgbGV0IHZhbGlkYXRvckZ1bmN0aW9uTGlzdDogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XHJcbiAgICAgIGlmIChwYWdlcy5lbGVtZW50cykge1xyXG4gICAgICAgIHBhZ2VzLmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQgOiBFbGVtZW50c01vZGVsKSA9PiB7XHJcblxyXG4gICAgICAgICAgbGV0IGNvbnRybFR5cGU6IHN0cmluZyA9IGVsZW1lbnQudHlwZTtcclxuICAgICAgICAgIGlmIChjb250cmxUeXBlID09PSAncGFuZWwnKSB7XHJcbiAgICAgICAgICAgIC8vdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBJZicsZWxlbWVudClcclxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKHBhbmVsRWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHBhbmVsRWxlbWVudC5yZXF1aXJlZElmICYmICgocGFuZWxFbGVtZW50LnR5cGUgIT0gJ2J1dHRvbicgJiYgcGFuZWxFbGVtZW50LnR5cGUgIT0gJ3NpbXBsZUxhYmVsJyYmIHBhbmVsRWxlbWVudC50eXBlICE9ICdsYWJlbCcpIHx8IHBhbmVsRWxlbWVudC5jb21wb25lbnROYW1lID09ICdhcHAtbGluaycgfHwgcGFuZWxFbGVtZW50LmNvbXBvbmVudE5hbWUgPT0gJ2FwcC1zaWduLXNzbicpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChBcHBWYWxpZGF0b3JzLnNldFJlcXVpcmVkSWZWYWxpZGF0aW9uKHBhbmVsRWxlbWVudCwgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAocGFuZWxFbGVtZW50LnZhbGlkYXRvcnMpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0b3JMaXN0ID0gcGFuZWxFbGVtZW50LnZhbGlkYXRvcnM7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKFwicGFuZWwgdmFsaWRhdGlvbi4xMTFcIixwYW5lbEVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKHZhbGlkYXRvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2V4cHJlc3Npb24nICYmIHBhbmVsRWxlbWVudC5pbnB1dFR5cGUgJiYgcGFuZWxFbGVtZW50LmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBleHByZXNzaW9uJylcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChBcHBWYWxpZGF0b3JzLnNldERhdGVWYWxpZGF0aW9uKHBhbmVsRWxlbWVudCwgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpKSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnZXhwcmVzc2lvbicgJiYgcGFuZWxFbGVtZW50LmlucHV0VHlwZSAmJiBwYW5lbEVsZW1lbnQuaW5wdXRUeXBlID09PSAndGV4dCdcclxuICAgICAgICAgICAgICAgICAgICAmJiBwYW5lbEVsZW1lbnQuY3VzdG9tVGFnICYmIChwYW5lbEVsZW1lbnQuY3VzdG9tVGFnID09PSAncGFzc3dvcmQnIHx8ICBwYW5lbEVsZW1lbnQuY3VzdG9tVGFnID09PSAnZW1haWwnIHx8ICBwYW5lbEVsZW1lbnQuY3VzdG9tVGFnID09PSAnc3NuJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIGV4cHJlc3Npb24nKVxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuc2V0UGFzc3dvcmRWYWxpZGF0aW9uKHBhbmVsRWxlbWVudCwgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpKSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnY3VzdG9tdmFsaWRhdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChBcHBWYWxpZGF0b3JzLmN1c3RvbVZhbGlkYXRpb24ocGFuZWxFbGVtZW50LCB2YWxpZGF0b3IsIHRoaXMudXRpbC5nZXRTdGF0ZSgpKSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBlbHNlJyxlbGVtZW50KVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5yZXF1aXJlZElmICYmICgoZWxlbWVudC50eXBlICE9ICdidXR0b24nICYmIGVsZW1lbnQudHlwZSAhPSAnc2ltcGxlTGFiZWwnICYmIGVsZW1lbnQudHlwZSAhPSAnbGFiZWwnKSB8fCBlbGVtZW50LmNvbXBvbmVudE5hbWUgPT0gJ2FwcC1saW5rJyB8fCBlbGVtZW50LmNvbXBvbmVudE5hbWUgPT0gJ2FwcC1zaWduLXNzbicpKSB7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goQXBwVmFsaWRhdG9ycy5zZXRSZXF1aXJlZElmVmFsaWRhdGlvbihlbGVtZW50LCB0aGlzLnFjcy5nZXRBbGxEYXRhKCkpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC52YWxpZGF0b3JzKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbGlkYXRvckxpc3QgPSBlbGVtZW50LnZhbGlkYXRvcnM7XHJcbiAgICAgICAgICAgICAgdmFsaWRhdG9yTGlzdC5mb3JFYWNoKHZhbGlkYXRvciA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdleHByZXNzaW9uJyAmJiBlbGVtZW50LmlucHV0VHlwZSAmJiBlbGVtZW50LmlucHV0VHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgZXhwcmVzc2lvbicpXHJcbiAgICAgICAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuc2V0RGF0ZVZhbGlkYXRpb24oZWxlbWVudCwgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICdjdXN0b212YWxpZGF0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChBcHBWYWxpZGF0b3JzLmN1c3RvbVZhbGlkYXRpb24oZWxlbWVudCwgdmFsaWRhdG9yLCB0aGlzLnV0aWwuZ2V0U3RhdGUoKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnNlcnZpY2VUeXBlICYmIGVsZW1lbnQuc2VydmljZVR5cGUgPT09ICdWQUxJREFURScpIHtcclxuICAgICAgICAgICAgICAvL3ZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKEFwcFZhbGlkYXRvcnMuY3JlYXRlVmFsaWRhdG9yKHRoaXMudmFsaWRhdGlvblNlcnZpY2UsZWxlbWVudCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb3JtR3JvdXAuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JGdW5jdGlvbkxpc3QpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXkucHVzaChmb3JtR3JvdXApO1xyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInBhZ2VzLnFlRGF0YVwiLCBwYWdlcy5xZURhdGEpO1xyXG4gICAgICBpZihwYWdlcy5xZURhdGEpe1xyXG4gICAgICAgIGZvcm1Hcm91cC5wYXRjaFZhbHVlKHBhZ2VzLnFlRGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJzZXQgdmFsdWVzIGFzIHBlciBsb2FkZXIgc2VydmljZSA9IFwiLCB0aGlzLmZvcm1EYXRhKTtcclxuICAgICAgaWYgKHRoaXMuZm9ybURhdGEgJiYgdGhpcy5mb3JtRGF0YSkge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlcyh0aGlzLmZvcm1EYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5mb3JtUmVhZE9ubHkpIHtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cEFycmF5W2ldLmRpc2FibGUoKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5yZWFkT25seUZpZWxkcyAmJiB0aGlzLnJlYWRPbmx5RmllbGRzKSB7XHJcbiAgICAgICAgZm9yIChsZXQgY250cmxOYW1lIG9mIHRoaXMucmVhZE9ubHlGaWVsZHMpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cEFycmF5W2ldLmdldChjbnRybE5hbWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwQXJyYXlbaV0uZ2V0KGNudHJsTmFtZSkuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0dXBMb2FkZXJNb2RlbCgpO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5wYWdlVHlwZSA9PT0gJ1BPUFVQJykge1xyXG4gICAgICBsZXQgbW9kZWwgPSBuZXcgQ2xhaW1BcHBFbXBsb3llckRldGFpbHNNb2RlbCgpO1xyXG4gICAgICBtb2RlbCA9IHRoaXMuZGF0YTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVswXS5wYXRjaFZhbHVlKG1vZGVsKTtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3RoaXMuZm9ybUdyb3VwQXJyYXkgYWZ0ZXIgSUYnLCB0aGlzLmZvcm1Hcm91cEFycmF5KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wYWdlVHlwZSA9PT0gJ0pzb24nICYmIHRoaXMuZm9ybURhdGEpIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVswXS5wYXRjaFZhbHVlKHRoaXMuZm9ybURhdGEpO1xyXG4gICAgICBpZiAodGhpcy5mb3JtUmVhZE9ubHkpIHtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cEFycmF5WzBdLmRpc2FibGUoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBjbnRybE5hbWUgb2YgdGhpcy5yZWFkT25seUZpZWxkcykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwQXJyYXlbMF0uZ2V0KGNudHJsTmFtZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXBBcnJheVswXS5nZXQoY250cmxOYW1lKS5kaXNhYmxlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGN1cnJlbnRRZSA9IHRoaXMucWVzLnNlYXJjaEJzLmdldFZhbHVlKCk7XHJcbiAgICB0aGlzLnBvdGVudGlhbElzc3VlSWQgPSBjdXJyZW50UWU/LnBvdGVudGlhbElzc3VlSWQ7XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZVN1YnNjcmlwdGlvbihwYWdlSW5kZXg6IG51bWJlciwgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XHJcbiAgICB2YXIgcGFnZXM6IGFueSA9IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzW3BhZ2VJbmRleF07XHJcbiAgICBpZiAocGFnZXMuZWxlbWVudHMpIHtcclxuICAgICAgcGFnZXMuZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBsZXQgY29udHJsVHlwZTogc3RyaW5nID0gZWxlbWVudC50eXBlO1xyXG4gICAgICAgIGlmIChlbGVtZW50LnN1YnNjcmliZVZhbHVlT2YpIHtcclxuICAgICAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50LnN1YnNjcmliZVZhbHVlT2ZdXHJcbiAgICAgICAgICAgICAgICAgICAgLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0uc2V0VmFsdWUodmFsdWUpKTtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3BhbmVsJykge1xyXG4gICAgICAgICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgcGFuZWxDb250cmxUeXBlJywgIGVsZW1lbnQuZWxlbWVudHMpXHJcbiAgICAgICAgICBlbGVtZW50LmVsZW1lbnRzLmZvckVhY2gocGFuZWxFbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKHBhbmVsRWxlbWVudC5zdWJzY3JpYmVWYWx1ZU9mKSB7XHJcbiAgICAgICAgICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW3BhbmVsRWxlbWVudC5zdWJzY3JpYmVWYWx1ZU9mXS52YWx1ZUNoYW5nZXMuXHJcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmUoKGNoYW5nZSkgPT4gZm9ybUdyb3VwLmNvbnRyb2xzW3BhbmVsRWxlbWVudC5uYW1lXS5zZXRWYWx1ZShjaGFuZ2UpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRSZWFkT25seShwYWdlSW5kZXg6IG51bWJlciwgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XHJcbiAgICB2YXIgcGFnZXM6IGFueSA9IHRoaXMucXVlc3Rpb25zWzBdLnBhZ2VzW3BhZ2VJbmRleF07XHJcbiAgICBpZiAocGFnZXMuZWxlbWVudHMpIHtcclxuICAgICAgcGFnZXMuZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBsZXQgY29udHJsVHlwZTogc3RyaW5nID0gZWxlbWVudC50eXBlO1xyXG4gICAgICAgIGlmIChlbGVtZW50LnJlYWRvbmx5KSB7XHJcbiAgICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS5kaXNhYmxlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3BhbmVsJykge1xyXG4gICAgICAgICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgcGFuZWxDb250cmxUeXBlJywgIGVsZW1lbnQuZWxlbWVudHMpXHJcbiAgICAgICAgICBlbGVtZW50LmVsZW1lbnRzLmZvckVhY2gocGFuZWxFbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQucmVhZG9ubHkpIHtcclxuICAgICAgICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbcGFuZWxFbGVtZW50Lm5hbWVdLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWxpZGF0aW9uKHBhZ2VJbmRleDogbnVtYmVyLCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcclxuICAgIHZhciBwYWdlczogYW55ID0gdGhpcy5xdWVzdGlvbnNbMF0ucGFnZXNbcGFnZUluZGV4XTtcclxuICAgIC8vdGhpcy5xdWVzdGlvbnNbMF0ucGFnZXMuZm9yRWFjaChwYWdlcyA9PiB7XHJcbiAgICBpZiAocGFnZXMuZWxlbWVudHMpIHtcclxuICAgICAgcGFnZXMuZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBsZXQgY29udHJsVHlwZTogc3RyaW5nID0gZWxlbWVudC50eXBlO1xyXG4gICAgICAgIC8vICB0aGlzLmxvZ2dlci5kZWJ1ZygnZWxlbWVudCA9PSAnLGVsZW1lbnQpO1xyXG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAndGV4dCcgfHwgY29udHJsVHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkZvclRleHRDb250cm9sKGVsZW1lbnQsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAnY29tbWVudCcpIHtcclxuICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkZvckNvbW1lbnRDb250cm9sKGVsZW1lbnQsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFZhbGlkYXRpb25Gb3JEcm9wRG93bkNvbnRyb2woZWxlbWVudCwgZm9ybUdyb3VwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbnRybFR5cGUgPT09ICdyYWRpb2dyb3VwJyB8fCBjb250cmxUeXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xyXG4gICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yUmFkaW9Db250cm9sKGVsZW1lbnQsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb250cmxUeXBlID09PSAnY2hlY2tib3gnIHx8IGNvbnRybFR5cGUgPT09ICdzaW5nbGVzZWxlY3RjaGVja2JveCcgfHwgY29udHJsVHlwZSA9PT0gJ3NpbXBsZWNoZWNrYm94JyB8fCBjb250cmxUeXBlID09PSAnbXVsdGljaGVja2JveCcpIHtcclxuICAgICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdzaW5nbGVzZWxlY3RjaGVja2JveCBjYWxsZWQnLGVsZW1lbnQpO1xyXG4gICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yQ2hlY2tCb3hDb250cm9sKGVsZW1lbnQsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY29udHJsVHlwZSA9PT0gJ3BhbmVsJykge1xyXG4gICAgICAgICAgLy8gIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgcGFuZWxDb250cmxUeXBlJywgIGVsZW1lbnQuZWxlbWVudHMpXHJcbiAgICAgICAgICBlbGVtZW50LmVsZW1lbnRzLmZvckVhY2gocGFuZWxFbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgbGV0IHBhbmVsQ29udHJsVHlwZTogc3RyaW5nID0gcGFuZWxFbGVtZW50LnR5cGU7XHJcblxyXG4gICAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgICAgICAgICAgLy8gdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBwYW5lbENvbnRybFR5cGUnLCBwYW5lbEVsZW1lbnQpXHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRWYWxpZGF0aW9uRm9yRHJvcERvd25Db250cm9sKHBhbmVsRWxlbWVudCwgZm9ybUdyb3VwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAndGV4dCcgfHwgcGFuZWxDb250cmxUeXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdwYW5lbENvbnRybFR5cGUnLCAgcGFuZWxDb250cmxUeXBlLCdwYW5lbEVsZW1lbnQnLHBhbmVsRWxlbWVudClcclxuICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRpb25Gb3JUZXh0Q29udHJvbChwYW5lbEVsZW1lbnQsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHBhbmVsQ29udHJsVHlwZSA9PT0gJ3JhZGlvZ3JvdXAnIHx8IHBhbmVsQ29udHJsVHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRpb25Gb3JSYWRpb0NvbnRyb2wocGFuZWxFbGVtZW50LCBmb3JtR3JvdXApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAocGFuZWxDb250cmxUeXBlID09PSAnY2hlY2tib3gnIHx8IHBhbmVsQ29udHJsVHlwZSA9PT0gJ3NpbmdsZXNlbGVjdGNoZWNrYm94Jykge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvbkZvckNoZWNrQm94Q29udHJvbChwYW5lbEVsZW1lbnQsIGZvcm1Hcm91cCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIC8vfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0VmFsaWRhdGlvbkZvckNoZWNrQm94Q29udHJvbChlbGVtZW50OiBhbnksIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xyXG4gICAgaWYgKGZvcm1Hcm91cCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXSkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yRnVuY3Rpb25MaXN0OiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcclxuICAgICAgaWYgKGVsZW1lbnQuaXNSZXF1aXJlZCAmJiAhZWxlbWVudC5yZXF1aXJlZElmKSB7XHJcbiAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JGdW5jdGlvbkxpc3QpO1xyXG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRWYWxpZGF0aW9uRm9yUmFkaW9Db250cm9sKGVsZW1lbnQ6IGFueSwgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XHJcbiAgICBpZiAoZm9ybUdyb3VwICYmIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdKSB7XHJcbiAgICAgIGxldCB2YWxpZGF0b3JGdW5jdGlvbkxpc3Q6IEFycmF5PFZhbGlkYXRvckZuPiA9IFtdO1xyXG5cclxuICAgICAgaWYgKGVsZW1lbnQuaXNSZXF1aXJlZCAmJiAhZWxlbWVudC5yZXF1aXJlZElmKSB7XHJcbiAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIH1cclxuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JGdW5jdGlvbkxpc3QpO1xyXG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgc2V0VmFsaWRhdGlvbkZvckRyb3BEb3duQ29udHJvbChlbGVtZW50OiBhbnksIGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xyXG4gICAgaWYgKGZvcm1Hcm91cCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXSkge1xyXG4gICAgICBsZXQgdmFsaWRhdG9yRnVuY3Rpb25MaXN0OiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcclxuICAgICAgLy9WYWxpZGF0aW9uIG5lZWQgdG8gYmUgY2hlY2tcclxuICAgICAgaWYgKGVsZW1lbnQuaXNSZXF1aXJlZCAmJiAhZWxlbWVudC5yZXF1aXJlZElmKSB7XHJcbiAgICAgICAgLy90aGlzLmxvZ2dlci5kZWJ1Zygnc2V0VmFsaWRhdGlvbkZvckRyb3BEb3duQ29udHJvbCcsIGVsZW1lbnQubmFtZSlcclxuICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgfVxyXG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvckZ1bmN0aW9uTGlzdCk7XHJcbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICB9XHJcbiAgICAvL3RoaXMubG9nZ2VyLmRlYnVnKGVsZW1lbnQubmFtZSwnZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0nLGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdKTtcclxuICB9XHJcblxyXG5cclxuICBzZXRWYWxpZGF0aW9uRm9yQ29tbWVudENvbnRyb2woZWxlbWVudDogYW55LCBmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApIHtcclxuICAgIGlmIChmb3JtR3JvdXAgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0pIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckZ1bmN0aW9uTGlzdDogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XHJcbiAgICAgIGlmIChlbGVtZW50LmlzUmVxdWlyZWQgJiYgIWVsZW1lbnQucmVxdWlyZWRJZikge1xyXG4gICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnNldFZhbGlkYXRvcnModmFsaWRhdG9yRnVuY3Rpb25MaXN0KTtcclxuICAgICAgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VmFsaWRhdGlvbkZvclRleHRDb250cm9sKGVsZW1lbnQ6IGFueSwgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKSB7XHJcbiAgICAvLyB0aGlzLmxvZ2dlci5kZWJ1Zygnc2V0VmFsaWRhdGlvbkZvclRleHRDb250cm9sJyxlbGVtZW50KTtcclxuICAgIGlmIChmb3JtR3JvdXAgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnQubmFtZV0pIHtcclxuICAgICAgbGV0IHZhbGlkYXRvckZ1bmN0aW9uTGlzdDogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XHJcbiAgICAgIGlmIChlbGVtZW50LmlzUmVxdWlyZWQgJiYgIWVsZW1lbnQucmVxdWlyZWRJZikge1xyXG4gICAgICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdzZXRWYWxpZGF0aW9uRm9yVGV4dENvbnRyb2wgaXNSZXF1aXJlZCAnLGVsZW1lbnQpO1xyXG4gICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlbGVtZW50LnZhbGlkYXRvcnMpIHtcclxuICAgICAgICBsZXQgdmFsaWRhdG9yTGlzdCA9IGVsZW1lbnQudmFsaWRhdG9ycztcclxuICAgICAgICB2YWxpZGF0b3JMaXN0LmZvckVhY2godmFsaWRhdG9yID0+IHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ2V4cHJlc3Npb24nICYmIGVsZW1lbnQuaW5wdXRUeXBlICYmIGVsZW1lbnQuaW5wdXRUeXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICAgICAgLy90aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIGV4cHJlc3Npb24nKVxyXG4gICAgICAgICAgICAvLyB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChBcHBWYWxpZGF0b3JzLnNldERhdGVWYWxpZGF0aW9uKHZhbGlkYXRvci5leHByZXNzaW9uLCB0aGlzLnFjcy5nZXRBbGxEYXRhKCksIHsgZGF0ZUNvbXBhcmlzaW9uOiB0cnVlIH0pKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3JlZ2V4Jykge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JGdW5jdGlvbkxpc3QucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4odmFsaWRhdG9yLnJlZ2V4KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodmFsaWRhdG9yLnR5cGUgPT09ICd0ZXh0JyAmJiB2YWxpZGF0b3IubWluTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvckZ1bmN0aW9uTGlzdC5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHZhbGlkYXRvci5taW5MZW5ndGgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IudHlwZSA9PT0gJ3RleHQnICYmIHZhbGlkYXRvci5tYXhMZW5ndGgpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsaWRhdG9yLm1heExlbmd0aCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHZhbGlkYXRvci50eXBlID09PSAnbnVtZXJpYycpIHtcclxuICAgICAgICAgICAgdmFsaWRhdG9yRnVuY3Rpb25MaXN0LnB1c2goVmFsaWRhdG9ycy5tYXgodmFsaWRhdG9yLm1heFZhbHVlKSk7XHJcbiAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgfVxyXG4gICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudC5uYW1lXS5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvckZ1bmN0aW9uTGlzdCk7XHJcbiAgICAgIGZvcm1Hcm91cC5jb250cm9sc1tlbGVtZW50Lm5hbWVdLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZXh0UGFnZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIm5leHQgcGFnZSBjYWxsZWQgLS0tLSBcIilcclxuICAgIGxldCBmb3JtR3JvdXAgPSB0aGlzLmZvcm1Hcm91cEFycmF5W2luZGV4XTtcclxuICAgIGlmIChmb3JtR3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5zaWRlIGlmJywgZm9ybUdyb3VwKTtcclxuICAgICAgZm9ybUdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgT2JqZWN0LnZhbHVlcyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucWNzLnNldERhdGEodGhpcy5hY3RpdmVJbmRleCwgSlNPTi5zdHJpbmdpZnkoZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkpKTtcclxuICAgIC8vTG9naWMgdG8gc2F2ZSBzdGFydFxyXG4gICAgbGV0IHN0ckludG9PYmo7XHJcbiAgICB0aGlzLnFjcy5nZXRBbGxEYXRhKCkuZm9yRWFjaChkYXRhID0+IHtcclxuICAgICAgc3RySW50b09iaiA9IChkYXRhKTtcclxuICAgICAgdGhpcy5wYXlMb2FkID0gKHRoaXMucGF5TG9hZCArIHN0ckludG9PYmopO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHNhdmVEYXRhID0ge30gYXMgUXVlc3Rpb25uYWlyZVNhdmVNb2RlbDtcclxuICAgIGxldCBjdXJyZW50UWUgPSB0aGlzLnFlcy5zZWFyY2hCcy5nZXRWYWx1ZSgpO1xyXG4gICAgbGV0IGVtcGxveWVlRGF0YSA9IHRoaXMucWVzLmVtcGxveWVlQnMuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdlbXBsb3llZURhdGEgJywgZW1wbG95ZWVEYXRhKTtcclxuICAgIGlmICh0aGlzLmZvclNjcmVlblF1ZXN0aW9ubmFpcmUpIHtcclxuICAgICAgbGV0IGRhdGFBcnI6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIHRoaXMucWNzLmdldEFsbERhdGEoKS5mb3JFYWNoKGRhdGEgPT4ge1xyXG4gICAgICAgIGRhdGFBcnIucHVzaChkYXRhKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHNhdmVEYXRhLnNjcmVlblF1ZXN0aW9ubmFpcmVEYXRhID0gZGF0YUFycjtcclxuICAgICAgc2F2ZURhdGEudXNlclR5cGUgPSBjdXJyZW50UWUudXNlclR5cGU7XHJcbiAgICAgIHNhdmVEYXRhLmZsb3dGcm9tID0gY3VycmVudFFlLmZsb3dGcm9tO1xyXG4gICAgICBzYXZlRGF0YS5xdWVzdGlvbm5haXJlSWRzID0gY3VycmVudFFlLnF1ZXN0aW9ubmFpcmVJZHM7XHJcbiAgICAgIHNhdmVEYXRhLmVtcE1vZGVsID0gZW1wbG95ZWVEYXRhO1xyXG4gICAgICBzYXZlRGF0YS51dWlkID0gdGhpcy5pZGVudGlmaWVyOy8vY3VycmVudFFlLnV1aWQ7XHJcbiAgICAgIHNhdmVEYXRhLmZsb3dLZXkgPSBjdXJyZW50UWUuZmxvd0tleTtcclxuICAgICAgc2F2ZURhdGEuYWN0aXZlUGFnZUluZGV4ID0gdGhpcy5hY3RpdmVJbmRleDtcclxuICAgICAgc2F2ZURhdGEucXVlc3Rpb25uYWlyZUlkID0gY3VycmVudFFlLnF1ZXN0aW9ubmFpcmVJZDtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3NhdmUgRGF0YSAnLCBzYXZlRGF0YSlcclxuICAgICAgdGhpcy51dGlsLnNob3dMb2FkZXIoKTtcclxuICAgICAgc2Nyb2xsVG8oMCwwKTtcclxuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZVxyXG4gICAgICAgIC5zYXZlU2NyZWVuUXVlc3Rpb25uYWlyZShzYXZlRGF0YSlcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgYXN5bmMgcmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKHJlcyk7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJyZXMgdXVpZCA9PT09IFwiICwgcmVzW0ZiQ29uc3RhbnRzLnV1aWRdKTtcclxuICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLnV1aWQubmV4dChyZXNbRmJDb25zdGFudHMudXVpZF0pO1xyXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoRmJDb25zdGFudHMudXVpZCwgcmVzW0ZiQ29uc3RhbnRzLnV1aWRdKTtcclxuICAgICAgICAgICAgICBpZihyZXNbJ3JlZGlyZWN0VG9FbmQnXSA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLnN1Y2Nlc3NFbGVtZW50Lm5leHQocmVzW0ZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudF0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS53YWl0Rm9yUHJvY2Vzc2luZy5uZXh0KHJlc1tGYkNvbnN0YW50cy53YWl0Rm9yUHJvY2Vzc2luZ10pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5wYWdlVG9PcGVuLm5leHQocmVzW0ZiQ29uc3RhbnRzLnBhZ2VUb09wZW5dKTtcclxuXHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KEZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudCwgcmVzW0ZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudF0pO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy53YWl0Rm9yUHJvY2Vzc2luZywgcmVzW0ZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nXSk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KEZiQ29uc3RhbnRzLnBhZ2VUb09wZW4sIHJlc1tGYkNvbnN0YW50cy5wYWdlVG9PcGVuXSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVSb290KGAvJHt0aGlzLm5leHRCdXR0b25QYWdlfT9pZGVudGlmaWVyPSR7cmVzWyd1dWlkJ119YCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleCArIDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFByZXZBbmROZXh0QnV0dG9uKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuaWRlbnRpZmllciA9IHJlc1sndXVpZCddOyAgIFxyXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgQmFzZVBhZ2UucHJpbWVOR0ZpeGVzKCk7ICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfSwgMzAwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnFjcy5zaGFyZWREYXRhLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JPY2N1cmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnIpO1xyXG5cclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBwcmV2UGFnZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXggLSAxO1xyXG4gICAgc2Nyb2xsVG8oMCwwKTtcclxuICAgIHRoaXMuc2V0UHJldkFuZE5leHRCdXR0b24oKTtcclxuICB9XHJcblxyXG4gIHZpc2libGVJZihzdHJFeHA6IHN0cmluZywgZWxlbWVudE5hbWU6IHN0cmluZywgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLCBlbGVtZW50OiBhbnkpIHtcclxuXHJcblxyXG4gICAgaWYgKCFzdHJFeHApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBsZXQgaXNWaXNpYmxlIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYoc3RyRXhwLmluY2x1ZGVzKCcmJicpKXtcclxuICAgICAgbGV0IGV4cHIgOiBzdHJpbmdbXSA9IHN0ckV4cC5zcGxpdCgnJiYnKTtcclxuICAgICAgaXNWaXNpYmxlID0gQXBwVmFsaWRhdG9ycy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclswXS50cmltKCksIGZvcm1Hcm91cCkgJiYgQXBwVmFsaWRhdG9ycy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclsxXS50cmltKCksIGZvcm1Hcm91cCk7XHJcblxyXG4gICAgICBpZihleHByLmxlbmd0aCA+PSAzKXtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgQXBwVmFsaWRhdG9ycy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclsyXS50cmltKCksIGZvcm1Hcm91cClcclxuICAgICAgfVxyXG4gICAgICBpZihleHByLmxlbmd0aCA+PSA0KXtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgQXBwVmFsaWRhdG9ycy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwclszXS50cmltKCksIGZvcm1Hcm91cClcclxuICAgICAgfVxyXG4gICAgICBpZihleHByLmxlbmd0aCA9PSA1KXtcclxuICAgICAgICBpc1Zpc2libGUgPSBpc1Zpc2libGUgJiYgQXBwVmFsaWRhdG9ycy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoZXhwcls0XS50cmltKCksIGZvcm1Hcm91cClcclxuICAgICAgfVxyXG4gICAgICBpZihleHByLmxlbmd0aCA+IDUpe1xyXG4gICAgICAgICAgdGhyb3cgXCJBcHBWYWxpZGF0b3JzIDogTW9yZSB0aGFuIDUgJyYmJyBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZC5cIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmKHN0ckV4cC5pbmNsdWRlcygnfHwnKSl7XHJcbiAgICAgIGxldCBleHByIDogc3RyaW5nW10gPSBzdHJFeHAuc3BsaXQoJ3x8Jyk7XHJcbiAgICAgIGlzVmlzaWJsZSA9IEFwcFZhbGlkYXRvcnMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMF0udHJpbSgpLCBmb3JtR3JvdXApIHx8IEFwcFZhbGlkYXRvcnMuY2FsY3VsYXRlT3BlcmFuZFZhbHVlKGV4cHJbMV0udHJpbSgpLCBmb3JtR3JvdXApXHJcbiAgICAgIGlmKGV4cHIubGVuZ3RoID49IDMpe1xyXG4gICAgICAgIGlzVmlzaWJsZSA9IGlzVmlzaWJsZSB8fCBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzJdLnRyaW0oKSwgZm9ybUdyb3VwKVxyXG4gICAgICB9XHJcbiAgICAgIGlmKGV4cHIubGVuZ3RoID49IDQpe1xyXG4gICAgICAgIGlzVmlzaWJsZSA9IGlzVmlzaWJsZSB8fCBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzNdLnRyaW0oKSwgZm9ybUdyb3VwKVxyXG4gICAgICB9XHJcbiAgICAgIGlmKGV4cHIubGVuZ3RoID09IDUpe1xyXG4gICAgICAgIGlzVmlzaWJsZSA9IGlzVmlzaWJsZSB8fCBBcHBWYWxpZGF0b3JzLmNhbGN1bGF0ZU9wZXJhbmRWYWx1ZShleHByWzRdLnRyaW0oKSwgZm9ybUdyb3VwKVxyXG4gICAgICB9XHJcbiAgICAgIGlmKGV4cHIubGVuZ3RoID4gNSl7XHJcbiAgICAgICAgICB0aHJvdyBcIkFwcFZhbGlkYXRvcnMgOiBNb3JlIHRoYW4gNSAnfHwnIGV4cHJlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkLlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIXN0ckV4cC5pbmNsdWRlcygnfHwnKSAmJiAhc3RyRXhwLmluY2x1ZGVzKCcmJicpKXtcclxuICAgICAgaXNWaXNpYmxlID0gQXBwVmFsaWRhdG9ycy5jYWxjdWxhdGVPcGVyYW5kVmFsdWUoc3RyRXhwLnRyaW0oKSwgZm9ybUdyb3VwKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihpc1Zpc2libGUpe1xyXG4gICAgICByZXR1cm4gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAoZWxlbWVudE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2VsZW1lbnROYW1lXSAmJiAhZWxlbWVudC5zdWJzY3JpYmVWYWx1ZU9mKSB7XHJcbiAgICAgIGlmKHRoaXMuZm9ybURhdGEgJiYgIXRoaXMuZm9ybURhdGFbZWxlbWVudE5hbWVdKXtcclxuICAgICAgICBmb3JtR3JvdXAuY29udHJvbHNbZWxlbWVudE5hbWVdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlydHlJdGVtcygpe1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwQXJyYXkubWFwKHk9Pk9iamVjdC5lbnRyaWVzKHkuY29udHJvbHMpLmZpbHRlcih2YWx1ZSA9PiAhdmFsdWVbMV0ucHJpc3RpbmUpLm1hcCh4ID0+IHhbMF0pKS5yZWR1Y2UoKHgseSk9PnguY29uY2F0KHkpKTtcclxuICB9XHJcblxyXG4gIGNvbXBsZXRlKCkge1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2NvbXBsZXRlIG1ldGhvZCBjYWxsZWQgPT09PT09PScpO1xyXG4gICAgaWYodGhpcy5tZmFSZXF1aXJlZCAmJiB0aGlzLnNob3dNZmEgJiYgdGhpcy5tZmEpe1xyXG4gICAgICB0aGlzLm1mYS5zdWJtaXQoKTtcclxuICAgIH1cclxuICAgIHNjcm9sbFRvKDAsMCk7XHJcbiAgICBsZXQgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ1N1Ym1pdCBjYWxsZWQgZnJvbSBjb21wbGV0ZSBtZXRob2QgaW4gZHluYW1pYyBmb3JtJylcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZm9ybUdyb3VwQXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXBBcnJheVtpXTtcclxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0luc2lkZSBpZicsIGZvcm1Hcm91cCk7XHJcbiAgICAgIGlmIChmb3JtR3JvdXAuaW52YWxpZCkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdJbnNpZGUgaWYnLCBmb3JtR3JvdXApO1xyXG4gICAgICAgIGZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goY29udHJvbCA9PiB7XHJcbiAgICAgICAgICBjb250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0ludmFsaWQgRm9ybSBDb250cm9scycsIE9iamVjdC52YWx1ZXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5maWx0ZXIoYyA9PiBjLmludmFsaWQpKTtcclxuICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVGb3JtLm9uU3VibWl0KHVuZGVmaW5lZCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmb3JtR3JvdXAgPSB0aGlzLmZvcm1Hcm91cEFycmF5W3RoaXMuYWN0aXZlSW5kZXhdO1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2Zvcm1Hcm91cCcsIGZvcm1Hcm91cCk7XHJcblxyXG4gICAgLy8gZm9yIHJlZ2lzdGVyIGNsYWltYW50IHBhZ2VcclxuICAgIGNvbnN0IHBhc3N3b3JkID0gZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkgJiYgZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkucGFzc3dvcmQgPyAoZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkucGFzc3dvcmQpLnRvTG93ZXJDYXNlKCkgOiBcIlwiO1xyXG4gICAgY29uc3QgZmlyc3ROYW1lID0gZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkgJiYgZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkuZmlyc3ROYW1lID8gKGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLmZpcnN0TmFtZSkudG9Mb3dlckNhc2UoKSA6IFwiXCI7XHJcbiAgICBjb25zdCBsYXN0TmFtZSA9IGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpICYmIGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLmxhc3ROYW1lID8gKGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLmxhc3ROYW1lKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuICAgIGNvbnN0IHVzZXJJZCA9IGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpICYmIGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLnVzZXJuYW1lID8gKGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpLnVzZXJuYW1lKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuXHJcbiAgICBpZihwYXNzd29yZCA9PT0gXCJcIiAmJiBmaXJzdE5hbWUgPT09IFwiXCIgJiYgbGFzdE5hbWUgPT09IFwiXCIgJiYgdXNlcklkID09PSBcIlwiKXtcclxuICAgICAgdGhpcy5jb21wbGV0ZVNhdmVRdWVzdGlvbm5haXJlKGZvcm1Hcm91cCk7XHJcbiAgICB9IGVsc2V7XHJcbiAgICAgIGlmKHBhc3N3b3JkICE9PSBcIlwiICYmIHRoaXMuaXNQYXNzd29yZFZhbGlkKGZpcnN0TmFtZSwgbGFzdE5hbWUsIHVzZXJJZCwgcGFzc3dvcmQpKVxyXG4gICAgICB7XHJcbiAgICAgICAgdGhpcy5jb21wbGV0ZVNhdmVRdWVzdGlvbm5haXJlKGZvcm1Hcm91cCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICBjb25zdCBwYXNzd29yZEludmFsaWRFcnJvciA9IHtcclxuICAgICAgICAgIFwiZXJyb3JJZFwiOiBcIlwiLFxyXG4gICAgICAgICAgXCJ0aW1lc3RhbXBcIjogXCJcIixcclxuICAgICAgICAgIFwibXNnXCI6IFtcclxuICAgICAgICAgICAgICBcIltUaGUgcGFzc3dvcmQgY29udGFpbnMgZWl0aGVyL29yIHVzZXIgbmFtZSwgZmlyc3QgbmFtZSBvciBsYXN0IG5hbWUgd2hpY2ggZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgcGFzc3dvcmQgcmVxdWlyZW1lbnRcXHRcXHQuXFx0XFx0XVwiXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgXCJkZXRhaWxzXCI6IFwidXJpPS9xdWVzdGlvbm5haXJlLXNlcnZpY2UvcXVlc3Rpb25uYWlyZS9zY3JlZW4tcXVlc3Rpb25uYWlyZVwiLFxyXG4gICAgICAgICAgXCJlcnJvclwiOiBudWxsLFxyXG4gICAgICAgICAgXCJlcnJvckNvZGVcIjogXCI0MjJcIlxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdChwYXNzd29yZEludmFsaWRFcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBsZXRlU2F2ZVF1ZXN0aW9ubmFpcmUoZm9ybUdyb3VwKXtcclxuICAgIHRoaXMuZm9ybVJhd0RhdGEgPSBmb3JtR3JvdXA7XHJcbiAgICB0aGlzLnFjcy5zZXREYXRhKHRoaXMuYWN0aXZlSW5kZXgsIEpTT04uc3RyaW5naWZ5KGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKSk7XHJcbiAgICBsZXQgc3RySW50b09iajtcclxuICAgIHRoaXMucGF5TG9hZCA9ICcnO1xyXG4gICAgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpLmZvckVhY2goZGF0YSA9PiB7XHJcbiAgICAgIHN0ckludG9PYmogPSAoZGF0YSk7XHJcbiAgICAgIHRoaXMucGF5TG9hZCA9ICh0aGlzLnBheUxvYWQgKyBzdHJJbnRvT2JqKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBzYXZlRGF0YSA9IHt9IGFzIFF1ZXN0aW9ubmFpcmVTYXZlTW9kZWw7XHJcbiAgICBsZXQgY3VycmVudFFlID0gdGhpcy5hdXRvU2F2ZSA/IHRoaXMucWVzLnNlYXJjaEJzLmdldFZhbHVlKCkgOiB0aGlzLnF1ZXJ5TW9kZWw7XHJcblxyXG4gICAgaWYgKHRoaXMucGFnZVR5cGUgPT09ICdQT1BVUCcgfHwgdGhpcy5wYWdlVHlwZSA9PT0gJ0pzb24nKSB7XHJcbiAgICAgIHRoaXMub25Db21wbGV0ZS5lbWl0KGZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpKTtcclxuICAgICAgdGhpcy5xY3Muc2hhcmVkRGF0YS5jbGVhcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmZvclNjcmVlblF1ZXN0aW9ubmFpcmUpIHtcclxuICAgICAgc2F2ZURhdGEuZGF0YSA9IHRoaXMucGF5TG9hZC8vSlNPTi5zdHJpbmdpZnkodGhpcy5wYXlMb2FkKTtcclxuICAgICAgc2F2ZURhdGEucG90ZW50aWFsSXNzdWVJZCA9IGN1cnJlbnRRZS5wb3RlbnRpYWxJc3N1ZUlkO1xyXG4gICAgICBzYXZlRGF0YS5mbG93QWJsZUFuZEF2YWlsYWJsZSA9IGN1cnJlbnRRZS5mbG93QWJsZUFuZEF2YWlsYWJsZTtcclxuICAgICAgc2F2ZURhdGEudXNlclR5cGUgPSBjdXJyZW50UWUudXNlclR5cGU7XHJcbiAgICAgIHNhdmVEYXRhLmZsb3dGcm9tID0gY3VycmVudFFlLmZsb3dGcm9tO1xyXG4gICAgICBzYXZlRGF0YS5mbG93V0NBYmxlQW5kQXZhaWxhYmxlID0gY3VycmVudFFlLmZsb3dXQ0FibGVBbmRBdmFpbGFibGU7XHJcbiAgICAgIHNhdmVEYXRhLmNsYWltQXBwbGljYXRpb25JZCA9IGN1cnJlbnRRZS5jbGFpbUFwcGxpY2F0aW9uSWQ7XHJcbiAgICAgIHNhdmVEYXRhLnF1ZXN0aW9ubmFpcmVJZHMgPSBjdXJyZW50UWUucXVlc3Rpb25uYWlyZUlkcztcclxuICAgICAgc2F2ZURhdGEucXVlc3Rpb25uYWlyZUlkID0gY3VycmVudFFlLnF1ZXN0aW9ubmFpcmVJZDtcclxuICAgICAgc2F2ZURhdGEuYWN0aXZlUGFnZUluZGV4ID0gdGhpcy5hY3RpdmVJbmRleDtcclxuICAgICAgaWYoIXRoaXMuYXV0b1NhdmUpe1xyXG4gICAgICAgIHNhdmVEYXRhLmF1dG9TYXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQoc2F2ZURhdGEpO1xyXG4gICAgICAgIHRoaXMucWNzLnNoYXJlZERhdGEuY2xlYXIoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbnB1dERhdGEgPSBzYXZlRGF0YTtcclxuICAgICAgdGhpcy5ibG9ja0Zvcm1VaSgpXHJcbiAgICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2VcclxuICAgICAgICAuc2F2ZVF1ZXN0aW9ubmFpcmUoc2F2ZURhdGEpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xyXG4gICAgICAgICAgICB0aGlzLnFlcy5zZWFyY2hNb2RlbC5zcGxpY2UodGhpcy5xZXMuc2VhcmNoTW9kZWwuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5wb3RlbnRpYWxJc3N1ZUlkID09IGN1cnJlbnRRZS5wb3RlbnRpYWxJc3N1ZUlkKSwgMSk7XHJcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdyZW1haW5pbmcgZWxlbWVudHMnLCB0aGlzLnFlcy5zZWFyY2hNb2RlbCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnFlcy5zZWFyY2hNb2RlbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5xZXMuc2VhcmNoQnMubmV4dCh0aGlzLnFlcy5zZWFyY2hNb2RlbFswXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ05vIEVsZW1lbnQgUHJlc2VudCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMub25Db21wbGV0ZS5lbWl0KHJlcyk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5xY3Muc2hhcmVkRGF0YS5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aGlzLnVuYmxvY2tGb3JtVWkoKTtcclxuICAgICAgICAgICAgdGhpcy5jYXB0Y2hhLnJlc2V0Q2FwdGNoYSgpO1xyXG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdChlcnIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGF0YUFycjogc3RyaW5nW10gPSBbXTtcclxuICAgICAgdGhpcy5xY3MuZ2V0QWxsRGF0YSgpLmZvckVhY2goZGF0YSA9PiB7XHJcbiAgICAgICAgZGF0YUFyci5wdXNoKGRhdGEpO1xyXG4gICAgICB9KTtcclxuICAgICAgc2F2ZURhdGEuc2NyZWVuUXVlc3Rpb25uYWlyZURhdGEgPSBkYXRhQXJyO1xyXG4gICAgICBzYXZlRGF0YS51c2VyVHlwZSA9IGN1cnJlbnRRZS51c2VyVHlwZTtcclxuICAgICAgc2F2ZURhdGEuZmxvd0Zyb20gPSBjdXJyZW50UWUuZmxvd0Zyb207XHJcbiAgICAgIHNhdmVEYXRhLmlzU2NyZWVuUXVlc3Rpb25uYWlyZSA9IHRydWU7XHJcbiAgICAgIHNhdmVEYXRhLnF1ZXN0aW9ubmFpcmVJZHMgPSBjdXJyZW50UWUucXVlc3Rpb25uYWlyZUlkcztcclxuICAgICAgc2F2ZURhdGEudXVpZCA9IHRoaXMuaWRlbnRpZmllcjsvL2N1cnJlbnRRZS51dWlkO1xyXG4gICAgICBzYXZlRGF0YS5mbG93S2V5ID0gY3VycmVudFFlLmZsb3dLZXk7XHJcbiAgICAgIHNhdmVEYXRhLnF1ZXN0aW9ubmFpcmVJZCA9IGN1cnJlbnRRZS5xdWVzdGlvbm5haXJlSWQ7XHJcbiAgICAgIHNhdmVEYXRhLmFjdGl2ZVBhZ2VJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXg7XHJcblxyXG4gICAgICBpZighdGhpcy5hdXRvU2F2ZSl7XHJcbiAgICAgICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQoc2F2ZURhdGEpO1xyXG4gICAgICAgIHRoaXMucWNzLnNoYXJlZERhdGEuY2xlYXIoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5tZmFSZXF1aXJlZCl7XHJcbiAgICAgICAgdGhpcy5zaG93TWZhID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1mYURhdGEgPSBzYXZlRGF0YTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zYXZlU2NyZWVuUXVlc3Rpb25uYWlyZShzYXZlRGF0YSk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIHBheW1lbnREZXRhaWxzQ2hhbmdlRXJyb3IoKXtcclxuICAgIHJldHVybiB0aGlzLnBheW1lbnREZXRhaWxDaGFuZ2VIYXNFcnJvcjtcclxuICB9XHJcblxyXG4gIGlzUGFzc3dvcmRWYWxpZChmaXJzdE5hbWUsIGxhc3ROYW1lLCB1c2VySWQsIHBhc3N3b3JkKXtcclxuICAgIGNvbnN0IGVzY2FwZVJlZ0V4cCA9IChzdHIgOiBTdHJpbmcpID0+IHN0ci5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpO1xyXG4gICAgY29uc3QgZmlyc3ROYW1lUmVnZXggPSBuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cChmaXJzdE5hbWUpLCAnaScpO1xyXG4gICAgY29uc3QgbGFzdE5hbWVSZWdleCA9IG5ldyBSZWdFeHAoZXNjYXBlUmVnRXhwKGxhc3ROYW1lKSwgJ2knKTtcclxuICAgIGNvbnN0IHVzZXJJZFJlZ2V4ID0gbmV3IFJlZ0V4cChlc2NhcGVSZWdFeHAodXNlcklkKSwgJ2knKTtcclxuICAgIGlmKGZpcnN0TmFtZVJlZ2V4LnRlc3QocGFzc3dvcmQpIHx8IGxhc3ROYW1lUmVnZXgudGVzdChwYXNzd29yZCkgfHwgdXNlcklkUmVnZXgudGVzdChwYXNzd29yZCkpe1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1lbHNle1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVTY3JlZW5RdWVzdGlvbm5haXJlKGRhdGEpe1xyXG4gICAgdGhpcy5ibG9ja0Zvcm1VaSgpXHJcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlXHJcbiAgICAgICAgLnNhdmVTY3JlZW5RdWVzdGlvbm5haXJlKGRhdGEpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIGFzeW5jIHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLnN1Y2Nlc3NFbGVtZW50Lm5leHQocmVzW0ZiQ29uc3RhbnRzLnN1Y2Nlc3NQYWdlRWxlbWVudF0pO1xyXG4gICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UudXVpZC5uZXh0KHJlc1tGYkNvbnN0YW50cy51dWlkXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS53YWl0Rm9yUHJvY2Vzc2luZy5uZXh0KHJlc1tGYkNvbnN0YW50cy53YWl0Rm9yUHJvY2Vzc2luZ10pO1xyXG4gICAgICAgICAgICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2Uud2FpdENoZWNrU2VydmljZVVyaS5uZXh0KHJlc1tGYkNvbnN0YW50cy53YWl0Q2hlY2tTZXJ2aWNlVXJpXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5wYWdlVG9PcGVuLm5leHQocmVzW0ZiQ29uc3RhbnRzLnBhZ2VUb09wZW5dKTtcclxuXHJcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy5zdWNjZXNzUGFnZUVsZW1lbnQsIHJlc1tGYkNvbnN0YW50cy5zdWNjZXNzUGFnZUVsZW1lbnRdKTtcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KEZiQ29uc3RhbnRzLndhaXRGb3JQcm9jZXNzaW5nLCByZXNbRmJDb25zdGFudHMud2FpdEZvclByb2Nlc3NpbmddKTtcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2Uuc2V0KEZiQ29uc3RhbnRzLndhaXRDaGVja1NlcnZpY2VVcmksIHJlc1tGYkNvbnN0YW50cy53YWl0Q2hlY2tTZXJ2aWNlVXJpXSk7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChGYkNvbnN0YW50cy5wYWdlVG9PcGVuLCByZXNbRmJDb25zdGFudHMucGFnZVRvT3Blbl0pO1xyXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoRmJDb25zdGFudHMudXVpZCwgcmVzW0ZiQ29uc3RhbnRzLnV1aWRdKTtcclxuICAgICAgICAgICAgICAvKk9ubHkgZW5hYmxlIGx4bnggaW4gc2lnbi11cCBmbG93IGZvciBxdWVzdGlvbm5haXJlIGZvcm0tYnVpbGRlciovXHJcbiAgICAgICAgICAgICAgaWYoZGF0YT8ucXVlc3Rpb25uYWlyZUlkcz8uWzBdID09PSAzNDUpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mbG93S2V5ID0gMzQ1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZVV1aWQgPSByZXNbJ3V1aWQnXTtcclxuICAgICAgICAgICAgICAgIGxldCBzc24gPSB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkgJiYgdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLnNzbiA/ICh0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkuc3NuKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMubG4uaXNMZXhpc05leGlzSWRQcm9vZmluZ0VuYWJsZWQoc3NuKVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvKklmIGxleGlzLW5leGlzIGlkIHByb29maW5nIGlzIGVuYWJsZWQgKi9cclxuICAgICAgICAgICAgICAgICAgICBpZihyZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMZXhpc05leGlzQWNjb3VudENyZWF0aW9uVXNlckRldGFpbHMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMZXhpc05leGlzUG9wdXBFbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5uZXh0QnV0dG9uUGFnZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZVJvb3QoYC8ke3RoaXMubmV4dEJ1dHRvblBhZ2V9P2lkZW50aWZpZXI9JHtyZXNbJ3V1aWQnXX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Db21wbGV0ZS5lbWl0KGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnFjcy5zaGFyZWREYXRhLmNsZWFyKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm5leHRCdXR0b25QYWdlKXtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlUm9vdChgLyR7dGhpcy5uZXh0QnV0dG9uUGFnZX0/aWRlbnRpZmllcj0ke3Jlc1sndXVpZCddfWApO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vbkNvbXBsZXRlLmVtaXQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucWNzLnNoYXJlZERhdGEuY2xlYXIoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoIShkYXRhPy5xdWVzdGlvbm5haXJlSWRzPy5bMF0gPT09IDM0NSkpe1xyXG4gICAgICAgICAgICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd01mYSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgaWYoZXJyLm1zZ1swXS5pbmNsdWRlcygnVGhlcmUgaXMgbm8gYWN0aXZlIGNsYWltIHRvIHVwZGF0ZSBwYXltZW50IEluZm9ybWF0aW9uJykpe1xyXG4gICAgICAgICAgICAgIHRoaXMucGF5bWVudERldGFpbENoYW5nZUhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRXJyb3Igb2NjdXJlZCcsIGVycik7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubWZhUmVxdWlyZWQpe1xyXG4gICAgICAgICAgICAgIHRoaXMubWZhRXJyb3IgPSBlcnI7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRoaXMub25FcnJvci5lbWl0KGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy51bmJsb2NrRm9ybVVpKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FwdGNoYS5yZXNldENhcHRjaGEoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gIH1cclxuXHJcbiAgc2V0TGV4aXNOZXhpc0FjY291bnRDcmVhdGlvblVzZXJEZXRhaWxzKCl7XHJcbiAgICBjb25zdCBmaXJzdE5hbWUgPSB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkgJiYgdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLmZpcnN0TmFtZSA/ICh0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkuZmlyc3ROYW1lKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuICAgIGNvbnN0IGxhc3ROYW1lID0gdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpICYmIHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5sYXN0TmFtZSA/ICh0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkubGFzdE5hbWUpLnRvTG93ZXJDYXNlKCkgOiBcIlwiO1xyXG4gICAgbGV0IHN0cmVldDEgPSBcIlwiO1xyXG4gICAgbGV0IGNpdHkgPSBcIlwiO1xyXG4gICAgbGV0IHN0YXRlID0gXCJcIjtcclxuICAgIGxldCB6aXAgPSBcIlwiO1xyXG4gICAgaWYodGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpICYmIHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5kaWZmbWFpbGFkZHJlc3MgIT0gbnVsbCl7XHJcbiAgICAgIGlmKHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5kaWZmbWFpbGFkZHJlc3MgPT09IFwiWVwiKXtcclxuICAgICAgICBzdHJlZXQxID0gdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpICYmIHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5tYWlsQWRkcmVzcy5zdHJlZXRBZGRyZXNzID8gKHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5tYWlsQWRkcmVzcy5zdHJlZXRBZGRyZXNzKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuICAgICAgICBjaXR5ID0gdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpICYmIHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5tYWlsQWRkcmVzcy5jaXR5ID8gKHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5tYWlsQWRkcmVzcy5jaXR5KS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuICAgICAgICBzdGF0ZSA9IHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKSAmJiB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkubWFpbEFkZHJlc3Muc3RhdGUudmFsdWUgPyAodGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLm1haWxBZGRyZXNzLnN0YXRlLnZhbHVlKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuICAgICAgICB6aXAgPSB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkgJiYgdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLm1haWxBZGRyZXNzLnppcCA/ICh0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkubWFpbEFkZHJlc3MuemlwKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzdHJlZXQxID0gdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpICYmIHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5yZXNBZHJlc3Muc3RyZWV0QWRkcmVzcyA/ICh0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkucmVzQWRyZXNzLnN0cmVldEFkZHJlc3MpLnRvTG93ZXJDYXNlKCkgOiBcIlwiO1xyXG4gICAgICAgIGNpdHkgPSB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkgJiYgdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLnJlc0FkcmVzcy5jaXR5ID8gKHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5yZXNBZHJlc3MuY2l0eSkudG9Mb3dlckNhc2UoKSA6IFwiXCI7XHJcbiAgICAgICAgc3RhdGUgPSB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkgJiYgdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLnJlc0FkcmVzcy5zdGF0ZS52YWx1ZSA/ICh0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkucmVzQWRyZXNzLnN0YXRlLnZhbHVlKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuICAgICAgICB6aXAgPSB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkgJiYgdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLnJlc0FkcmVzcy56aXAgPyAodGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLnJlc0FkcmVzcy56aXApLnRvTG93ZXJDYXNlKCkgOiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBkb2IgPSB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkgJiYgdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLmRvYiA/ICh0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkuZG9iKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuICAgIGNvbnN0IGVtYWlsID0gdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpICYmIHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5lbWFpbCA/ICh0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkuZW1haWwpLnRvTG93ZXJDYXNlKCkgOiBcIlwiO1xyXG4gICAgY29uc3QgcGhvbmUgPSB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkgJiYgdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLnBob25lID8gKHRoaXMuZm9ybVJhd0RhdGEuZ2V0UmF3VmFsdWUoKS5waG9uZSkudG9Mb3dlckNhc2UoKSA6IFwiXCI7XHJcbiAgICBjb25zdCBzc24gPSB0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkgJiYgdGhpcy5mb3JtUmF3RGF0YS5nZXRSYXdWYWx1ZSgpLnNzbiA/ICh0aGlzLmZvcm1SYXdEYXRhLmdldFJhd1ZhbHVlKCkuc3NuKS50b0xvd2VyQ2FzZSgpIDogXCJcIjtcclxuXHJcbiAgICBpZiAoIXdpbmRvd1snc2Vzc2lvbklkJ10pIHtcclxuICAgICAgY29uc29sZS5lcnJvcignU2Vzc2lvbiBJRCBub3QgZm91bmQgaW4gd2luZG93IG9iamVjdC4nKTtcclxuICAgICAgcmV0dXJuOyAvLyBoYW5kbGUgYWNjb3JkaW5nbHlcclxuICAgIH1cclxuXHJcbiAgICBpZih3aW5kb3dbJ3Nlc3Npb25JZCddICE9IG51bGwpe1xyXG4gICAgICB0aGlzLnVzZXJEZXRhaWxzID0ge1xyXG4gICAgICAgIHNlc3Npb25faWQ6IHdpbmRvd1snc2Vzc2lvbklkJ10gPyB3aW5kb3dbJ3Nlc3Npb25JZCddIDogbnVsbCxcclxuICAgICAgICBpbnB1dF9pcF9hZGRyZXNzOiBudWxsLCAvLyBzZW5kIG51bGxcclxuICAgICAgICBhY2NvdW50X2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcclxuICAgICAgICBhY2NvdW50X2xhc3RfbmFtZTogbGFzdE5hbWUsXHJcbiAgICAgICAgYWNjb3VudF9hZGRyZXNzX3N0cmVldDE6IHN0cmVldDEsXHJcbiAgICAgICAgYWNjb3VudF9hZGRyZXNzX2NpdHk6IGNpdHksXHJcbiAgICAgICAgYWNjb3VudF9hZGRyZXNzX3N0YXRlOiBzdGF0ZSxcclxuICAgICAgICBhY2NvdW50X2FkZHJlc3NfemlwOiB6aXAsXHJcbiAgICAgICAgYWNjb3VudF9kYXRlX29mX2JpcnRoOiBkb2IsIC8vXCJZWVlZTU1ERFwiXHJcbiAgICAgICAgYWNjb3VudF9lbWFpbDogZW1haWwsXHJcbiAgICAgICAgYWNjb3VudF90ZWxlcGhvbmU6IHBob25lLFxyXG4gICAgICAgIG5hdGlvbmFsX2lkX251bWJlcjogc3NuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pc0xleGlzTmV4aXNQb3B1cEVuYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25MblN1Y2Nlc3MoKXtcclxuICAgIHRoaXMuaXNMZXhpc05leGlzUG9wdXBFbmFibGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xyXG4gICAgaWYodGhpcy5uZXh0QnV0dG9uUGFnZSkge1xyXG4gICAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVSb290KGAvJHt0aGlzLm5leHRCdXR0b25QYWdlfT9pZGVudGlmaWVyPSR7dGhpcy5yZXNwb25zZVV1aWR9YCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9uQ29tcGxldGUuZW1pdCh0aGlzLmlucHV0RGF0YSk7XHJcbiAgICAgIHRoaXMucWNzLnNoYXJlZERhdGEuY2xlYXIoKTtcclxuICAgIH1cclxuICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xyXG4gICAgdGhpcy5zaG93TWZhID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkxORXJyb3IoKXtcclxuICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xyXG4gICAgdGhpcy5zaG93TWZhID0gZmFsc2U7XHJcbiAgICBjb25zb2xlLmxvZyhcIlBsZWFzZSBjb250YWN0IEtET0whXCIpO1xyXG4gIH1cclxuXHJcbiAgdHJpZ2dlclVTUFMoKXtcclxuICAgIHRoaXMudW5ibG9ja0Zvcm1VaSgpO1xyXG4gICAgdGhpcy5zaG93TWZhID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy51dGlsLmhpZGVMb2FkZXIoKTtcclxuICAgIGNvbnNvbGUubG9nKFwidXNwcyBpcyB0cmlnZ2VyZWRcIilcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1c2VyRGV0YWlscycsIEpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRldGFpbHMpKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvdXNwcy1yZWRpcmVjdCcsIFwiXCJdKSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2QW5kTmV4dEJ1dHRvbigpIHtcclxuICAgIGxldCBjb21wYXJlVmFsdWU6IG51bWJlciA9IDA7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA+IDApIHtcclxuICAgICAgY29tcGFyZVZhbHVlID0gMTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5pc0ZpcnN0ID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPT09IDEgJiYgdGhpcy5pc1ByZXZpb3VzUGFnZUFQbGFjZWhvbGRlcih0aGlzLnF1ZXN0aW9uc1swXS5wYWdlc1swXSkpIHtcclxuICAgICAgdGhpcy5pc0ZpcnN0ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc0xhc3QgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5hY3RpdmVJbmRleCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmlzRmlyc3QgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzTGFzdCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ID09PSB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHRoaXMuaXNMYXN0ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc0ZpcnN0ID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPCB0aGlzLnF1ZXN0aW9uc1swXS5wYWdlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIHRoaXMuaXNMYXN0ID0gZmFsc2U7XHJcbiAgICB9ICAgXHJcbiAgICB0aGlzLnNldHVwTG9hZGVyTW9kZWwoKTtcclxuICB9XHJcblxyXG4gIGlzUHJldmlvdXNQYWdlQVBsYWNlaG9sZGVyKHBhZ2UgOiBhbnkpe1xyXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXCJpc1BsYWNlSG9sZGVyID0gXCIgKyBwYWdlW1wiaXNQbGFjZUhvbGRlclwiXSk7XHJcbiAgICBsZXQgcGxhY2VIb2xkZXI6IGJvb2xlYW4gPSAgcGFnZVtcImlzUGxhY2VIb2xkZXJcIl07XHJcbiAgICByZXR1cm4gcGxhY2VIb2xkZXIudmFsdWVPZigpO1xyXG4gIH1cclxuXHJcbiAgc3RlcENoYW5nZWQoZXZlbnQ6IFN0ZXBwZXJTZWxlY3Rpb25FdmVudCkge1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzbHlTZWxlY3RlZEluZGV4ID4gZXZlbnQuc2VsZWN0ZWRJbmRleCkge1xyXG4gICAgICBldmVudC5wcmV2aW91c2x5U2VsZWN0ZWRTdGVwLmludGVyYWN0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbmNlbEFjdGlvbigpIHtcclxuICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZVJvb3QodGhpcy5iYWNrQnV0dG9uUGFnZSk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxQb3BVcCgpIHtcclxuICAgIGxldCBmb3JtR3JvdXAgPSB0aGlzLmZvcm1Hcm91cEFycmF5W3RoaXMuYWN0aXZlSW5kZXhdO1xyXG4gICAgdGhpcy5tb2RlbENhbmNlbC5lbWl0KGZhbHNlKTtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdjYW5jZWxQb3BVcCBjYWxsZWQnLCBmb3JtR3JvdXApXHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlKHF1ZXVlOiBGaWxlW10pIHtcclxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdxdWV1ZTExMSAnLCBxdWV1ZSk7XHJcbiAgICAvL3F1ZXVlWzBdLnNpemVcclxuICB9XHJcblxyXG4gIGJsb2NrRm9ybVVpKCl7XHJcbiAgICB0aGlzLmJsb2NrVWkgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgdW5ibG9ja0Zvcm1VaSgpe1xyXG4gICAgdGhpcy5ibG9ja1VpID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzaG91bGRGaXRDb250ZW50KGVsZW1lbnRzIDogRWxlbWVudHNNb2RlbFtdKXtcclxuICAgIGxldCBzaG91bGRGaXRDb250ZW50IDogYm9vbGVhbiA9IHRydWU7IFxyXG4gICAgZWxlbWVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgaWYoZWxlbWVudC5jdXN0b21UYWcgPT0gJ2NvbXBvbmVudCcpe1xyXG4gICAgICAgIHNob3VsZEZpdENvbnRlbnQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHNob3VsZEZpdENvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEeW5hbWljUGFyYW0oZXZlbnQpe1xyXG4gICAgaWYoQXJyYXkuaXNBcnJheShldmVudCkpe1xyXG4gICAgICB0aGlzLmR5bmFtaWNQYXJhbSA9IFsuLi5ldmVudF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmR5bmFtaWNQYXJhbSA9IE9iamVjdC5hc3NpZ24oe30gLCBldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpe1xyXG4gICAgdGhpcy51dGlsLmZvY3VzT25TdWJtaXQodGhpcy5lbCk7XHJcbiAgfVxyXG59XHJcbiIsIjxwLWJsb2NrVUkgW2Jsb2NrZWRdPVwiYmxvY2tVaVwiPlxyXG4gIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxyXG48L3AtYmxvY2tVST5cclxuPGRpdiAqbmdJZj1cInF1ZXN0aW9ucyAmJiBxdWVzdGlvbnNbMF0gJiYgIXNob3dNZmFcIiAjZm9ybU1haW5EaXY+XHJcbiAgPGZvcm0gZm9jdXNJbnZhbGlkSW5wdXQgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF1cIiBbbmdDbGFzc109XCJtdWx0aU1vZGUgPyAncWUtZm9ybS1tdWx0aXBsZScgOiAncWUtZm9ybSdcIiAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiICNxdWVzdGlvbm5haXJlRm9ybT1cIm5nRm9ybVwiPlxyXG4gICAgPGlvbi1ncmlkPlxyXG4gICAgICA8aW9uLXJvdyAqbmdJZj1cInF1ZXN0aW9uc1swXS5wYWdlc1thY3RpdmVJbmRleF0ubmFtZVwiPlxyXG4gICAgICAgIDxpb24tY29sIHNpemU9XCIxMlwiIFtzaXplWHNdPVwic2l6ZVhzXCIgW3NpemVTbV09XCJzaXplU21cIiBbc2l6ZU1kXT1cInNpemVNZFwiIFtzaXplTGddPVwic2l6ZUxnXCIgW3NpemVYbF09XCJzaXplWGxcIlxyXG4gICAgICAgICAgW29mZnNldFhzXT1cIm9mZnNldFhzXCIgW29mZnNldFNtXT1cIm9mZnNldFNtXCIgW29mZnNldE1kXT1cIm9mZnNldE1kXCIgW29mZnNldExnXT1cIm9mZnNldExnXCIgW29mZnNldFhsXT1cIm9mZnNldFhsXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mb3JtZ3JpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiMFwiIFtpbm5lckh0bWxdPVwiKHF1ZXN0aW9uTnVtYmVyID8gcXVlc3Rpb25OdW1iZXIgKyAnICcgOiAnJykgKyBxdWVzdGlvbnNbMF0ucGFnZXNbYWN0aXZlSW5kZXhdLm5hbWUgfCBkeW5hbWljVHJhbnNsYXRlOmR5bmFtaWNQYXJhbSB8IHRydXN0SHRtbFwiIFtuZ0NsYXNzXT1cIm11bHRpTW9kZSA/ICdmYi1oZWFkaW5nLWZvbGxvd3VwJyA6ICdmYi1oZWFkaW5nJ1wiIHJvbGU9XCJoZWFkaW5nXCIgYXJpYS1sZXZlbD1cIjFcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPGlvbi1yb3c+XHJcbiAgICAgICAgPGlvbi1jb2wgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDBweDtcIiBjbGFzcz1cImlvbi1wYWRkaW5nLWVuZFwiIHNpemU9XCIxMlwiIFtzaXplWHNdPVwic2l6ZVhzXCIgW3NpemVTbV09XCJzaXplU21cIlxyXG4gICAgICAgICAgW3NpemVNZF09XCJzaXplTWRcIiBbc2l6ZUxnXT1cInNpemVMZ1wiIFtzaXplWGxdPVwic2l6ZVhsXCIgW29mZnNldFhzXT1cIm9mZnNldFhzXCIgW29mZnNldFNtXT1cIm9mZnNldFNtXCJcclxuICAgICAgICAgIFtvZmZzZXRNZF09XCJvZmZzZXRNZFwiIFtvZmZzZXRMZ109XCJvZmZzZXRMZ1wiIFtvZmZzZXRYbF09XCJvZmZzZXRYbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtZm9ybWdyaWRcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogOHB4O1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHF1ZXN0aW9uc1swXS5wYWdlc1thY3RpdmVJbmRleF0uZWxlbWVudHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWxlbWVudC50eXBlPT09J3BhbmVsJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwidmlzaWJsZUlmKGVsZW1lbnQudmlzaWJsZUlmLCcnLGZvcm1Hcm91cEFycmF5W2FjdGl2ZUluZGV4XSxlbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxpb24tY29sIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAwcHg7XCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZy1sZWZ0OiAwcHg7XCIgY2xhc3M9XCJoZWFkaW5nXCIgcm9sZT1cImhlYWRpbmdcIiBhcmlhLWxldmVsPVwiMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ZWxlbWVudC50aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDwvaW9uLWNvbD4gLS0+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZWxFbGVtZW50IG9mIGVsZW1lbnQuZWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hhcmUtcm93XCIgKm5nSWY9XCJwYW5lbEVsZW1lbnQuY29sRWxlbWVudD09PSdDT0wxJyAmJiB2aXNpYmxlSWYocGFuZWxFbGVtZW50LnZpc2libGVJZixwYW5lbEVsZW1lbnQubmFtZSxmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF0scGFuZWxFbGVtZW50KVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhcHAtcXVlc3Rpb24gW3BvdGVudGlhbElzc3VlSWRdPVwicG90ZW50aWFsSXNzdWVJZFwiIFtxdWVzdGlvbl09XCJwYW5lbEVsZW1lbnRcIiBbZm9ybV09XCJmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9yU2NyZWVuUXVlc3Rpb25uYWlyZV09XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlXCIgKG9uRHluYW1pY1BhcmFtVXBkYXRlKT1cInVwZGF0ZUR5bmFtaWNQYXJhbSgkZXZlbnQpXCIgW2R5bmFtaWNQYXJhbV09XCJkeW5hbWljUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXF1ZXN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW9uLWNvbCBzaXplPVwiMVwiICpuZ0lmPVwicGFuZWxFbGVtZW50LmRlc2NyaXB0aW9uXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogMjhweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1vdmVybGF5LWluZm8gW292ZXJsYXlUZXh0XT1cInBhbmVsRWxlbWVudC5kZXNjcmlwdGlvblwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgICAgICAgICAgIDwhLS0gPC9pb24tY29sPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1yb3c+IC0tPlxyXG5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImVsZW1lbnQudHlwZSE9J3BhbmVsJyAmJiBlbGVtZW50LnR5cGUhPSdoaWRkZW4nICYmIHZpc2libGVJZihlbGVtZW50LnZpc2libGVJZixlbGVtZW50Lm5hbWUsZm9ybUdyb3VwQXJyYXlbYWN0aXZlSW5kZXhdLGVsZW1lbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLXJvdz5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgW3NpemVMZ109XCJlbGVtZW50LnNpemVMRz4wP2VsZW1lbnQuc2l6ZUxHOicnXCIgW3NpemVTbV09XCJlbGVtZW50LnNpemVTTVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVYc109XCJlbGVtZW50LnNpemVYU1wiIFtzaXplWGxdPVwiZWxlbWVudC5zaXplWEw+MCA/ZWxlbWVudC5zaXplWEw6JydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzaXplTWRdPVwiZWxlbWVudC5zaXplTUQ+MCA/ZWxlbWVudC5zaXplTUQ6JydcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZpZWxkXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcXVlc3Rpb24gW3BvdGVudGlhbElzc3VlSWRdPVwicG90ZW50aWFsSXNzdWVJZFwiIFtxdWVzdGlvbl09XCJlbGVtZW50XCIgW2Zvcm1dPVwiZm9ybUdyb3VwQXJyYXlbYWN0aXZlSW5kZXhdXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JTY3JlZW5RdWVzdGlvbm5haXJlXT1cImZvclNjcmVlblF1ZXN0aW9ubmFpcmVcIiBbZHluYW1pY1BhcmFtXT1cImR5bmFtaWNQYXJhbVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgKG9uRHluYW1pY1BhcmFtVXBkYXRlKT1cInVwZGF0ZUR5bmFtaWNQYXJhbSgkZXZlbnQpXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYXBwLXF1ZXN0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gPGlvbi1jb2wgc2l6ZT1cIjFcIiAqbmdJZj1cImVsZW1lbnQuZGVzY3JpcHRpb25cIiBzdHlsZT1cInBhZGRpbmctdG9wOiAzNXB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLW92ZXJsYXktaW5mbyBbb3ZlcmxheVRleHRdPVwiZWxlbWVudC5kZXNjcmlwdGlvblwiPjwvYXBwLW92ZXJsYXktaW5mbz5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+IC0tPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi1wYWRkaW5nLXN0YXJ0XCIgc2l6ZT1cIjEyXCIgc2l6ZVNtPVwiMTJcIiBzaXplWHM9XCIxMlwiIFtzaXplTWRdPVwicGFnZVR5cGU9PT0nUE9QVVAnPzY6MTJcIlxyXG4gICAgICAgICAgW3NpemVMZ109XCJwYWdlVHlwZT09PSdQT1BVUCc/NjoxMFwiIFtzaXplWGxdPVwicGFnZVR5cGU9PT0nUE9QVVAnPzU6MTBcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMHB4O1wiXHJcbiAgICAgICAgICBbb2Zmc2V0WGxdPVwicGFnZVR5cGU9PT0nUE9QVVAnPzA6MVwiIFtvZmZzZXRMZ109XCJwYWdlVHlwZT09PSdQT1BVUCc/MDoxXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mb3JtZ3JpZFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgcXVlc3Rpb25zWzBdLnBhZ2VzW2FjdGl2ZUluZGV4XS5lbGVtZW50czsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIgdmlzaWJsZUlmKGVsZW1lbnQudmlzaWJsZUlmLCcnLGZvcm1Hcm91cEFycmF5W2FjdGl2ZUluZGV4XSxlbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZWxFbGVtZW50IG9mIGVsZW1lbnQuZWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFuZWxFbGVtZW50LmNvbEVsZW1lbnQ9PT0nQ09MMicgJiZcclxuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlSWYocGFuZWxFbGVtZW50LnZpc2libGVJZixwYW5lbEVsZW1lbnQubmFtZSxmb3JtR3JvdXBBcnJheVthY3RpdmVJbmRleF0scGFuZWxFbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhbmVsLWFwcCBbcXVlc3Rpb25dPVwicGFuZWxFbGVtZW50XCIgW2Zvcm1dPVwiZm9ybUdyb3VwQXJyYXlbYWN0aXZlSW5kZXhdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9yU2NyZWVuUXVlc3Rpb25uYWlyZV09XCJmb3JTY3JlZW5RdWVzdGlvbm5haXJlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFuZWwtYXBwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPC9pb24tcm93PlxyXG4gICAgPC9pb24tZ3JpZD5cclxuXHJcbiAgICA8aW9uLWZvb3RlciAqbmdJZj1cIiFoaWRlRm9vdGVyXCJcclxuICAgIFtuZ0NsYXNzXT1cIidmb290ZXItZml4ZWQnXCI+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDsgYmFja2dyb3VuZDogd2hpdGU7IG1hcmdpbi1sZWZ0OiAtNXB4O1wiXHJcbiAgICAgICAgKm5nSWY9XCJoaWRlU3RlcCAmJiBwYWdlVHlwZSE9J1BPUFVQJyAmJiBwYWdlVHlwZSE9J1NDUkVFTidcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBwLW5vZ3V0dGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDYwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgaW9uLXRleHQtbGVmdFwiIHN0eWxlPVwicGFkZGluZzogOHB4O1wiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgZmlsbD1cIm91dGxpbmVcIiBjbGFzcz1cImJ1dHRvblwiIChjbGljayk9XCJjYW5jZWxBY3Rpb24oKVwiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgaW9uLXRleHQtcmlnaHRcIiBzdHlsZT1cInBhZGRpbmc6IDhweDtcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIChjbGljayk9XCJjb21wbGV0ZSgpXCIgZmlsbD1cInNvbGlkXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgIE5leHRcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7IGJhY2tncm91bmQ6IHdoaXRlOyBtYXJnaW4tbGVmdDogLTVweDtcIlxyXG4gICAgICAgICpuZ0lmPVwiaGlkZVN0ZXAgJiYgcGFnZVR5cGU9PSdTQ1JFRU4nICYmIHF1ZXN0aW9uc1swXS5pc0ZpcnN0UGFnZVN1Ym1pdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIHAtbm9ndXR0ZXJcIiBzdHlsZT1cImhlaWdodDogNjBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBpb24tdGV4dC1sZWZ0XCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbmNlbEFjdGlvbigpXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgIENhbmNlbFxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBpb24tdGV4dC1yaWdodFwiIHN0eWxlPVwicGFkZGluZzogOHB4O1wiPlxyXG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImNvbXBsZXRlKClcIiBmaWxsPVwic29saWRcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgRG9uZVxyXG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpb24tZ3JpZCAqbmdJZj1cImhpZGVTdGVwICYmIHBhZ2VUeXBlPT09J1BPUFVQJ1wiPlxyXG4gICAgICAgIDxpb24tcm93PlxyXG4gICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0IGlvbi1wYWRkaW5nLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiBmaWxsPVwib3V0bGluZVwiIGNsYXNzPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNhbmNlbFBvcFVwKClcIiB0eXBlPVwic3VibWl0XCI+XHJcbiAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHQgaW9uLXBhZGRpbmctZW5kXCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiY29tcGxldGUoKVwiIGZpbGw9XCJzb2xpZFwiIHR5cGU9XCJzdWJtaXRcIj5cclxuICAgICAgICAgICAgICBBZGRcclxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgPC9pb24tY29sPlxyXG4gICAgICAgIDwvaW9uLXJvdz5cclxuICAgICAgPC9pb24tZ3JpZD5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaGlkZVN0ZXBcIj5cclxuICAgICAgICA8bWF0LWhvcml6b250YWwtc3RlcHBlciBsaW5lYXIgI21hdEhvcml6b250YWxTdGVwcGVyIFtzZWxlY3RlZEluZGV4XT1cInF1ZXN0aW9uc1swXS5zdGVwQ291bnRlclwiXHJcbiAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInN0ZXBDaGFuZ2VkKCRldmVudCk7XCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiAtd2Via2l0LWNlbnRlcjtcIiBhcmlhLWJ1c3k9XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8bWF0LXN0ZXAgKm5nRm9yPVwibGV0IGVsZW1lbnQgb2YgIHF1ZXN0aW9uc1swXS5wYWdlczsgIGxldCBpID0gaW5kZXg7XCIgW3N0ZXBDb250cm9sXT1cImZvcm1Hcm91cEFycmF5W2ldXCJcclxuICAgICAgICAgICAgW2NvbXBsZXRlZF09XCIgIGkgPCBhY3RpdmVJbmRleCBcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdFN0ZXBMYWJlbD57e3F1ZXN0aW9uc1swXS5wYWdlc1tpXS5uYXZpZ2F0aW9uVGl0bGV9fTwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWVzdGlvbnNbMF0uaXNGaXJzdFBhZ2VTdWJtaXQgJiYgIWlzTGFzdCAmJiBpc0ZpcnN0ICYmICFpc0VuYWJsZUJhY2tCdXR0b25cIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwicmV2ZXJzZVwiIChjbGljayk9XCJuYXZDdHJsLm5hdmlnYXRlUm9vdCgnY2xhaW1hbnQtaW5kdWN0aW9uJylcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cz5CYWNrPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImZvcndhcmRcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJOZXh0IChjbGljayk9XCJuZXh0UGFnZShhY3RpdmVJbmRleClcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uc1swXS5pc0ZpcnN0UGFnZVN1Ym1pdFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJyZXZlcnNlXCIgKGNsaWNrKT1cImNhbmNlbEFjdGlvbigpXCIgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyUHJldmlvdXM+QmFjazwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJmb3J3YXJkXCIgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyTmV4dCAoY2xpY2spPVwiY29tcGxldGUoKVwiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXF1ZXN0aW9uc1swXS5pc0ZpcnN0UGFnZVN1Ym1pdCAmJiBpc0xhc3QgJiYgIWlzRmlyc3RcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwicmV2ZXJzZVwiIG1hdC1idXR0b24gbWF0U3RlcHBlclByZXZpb3VzIChjbGljayk9XCJwcmV2UGFnZShhY3RpdmVJbmRleClcIj5CYWNrPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImZvcndhcmRcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJOZXh0IChjbGljayk9XCJjb21wbGV0ZSgpXCI+RG9uZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcXVlc3Rpb25zWzBdLmlzRmlyc3RQYWdlU3VibWl0ICYmICFpc0xhc3QgJiYgIWlzRmlyc3RcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwicmV2ZXJzZVwiIGVkaXRhYmxlPVwiZmFsc2VcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cyBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicHJldlBhZ2UoYWN0aXZlSW5kZXgpXCI+QmFjazwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJmb3J3YXJkXCIgbWF0LWJ1dHRvbiBtYXRTdGVwcGVyTmV4dCAoY2xpY2spPVwibmV4dFBhZ2UoYWN0aXZlSW5kZXgpXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0VuYWJsZUJhY2tCdXR0b24gJiYgIXF1ZXN0aW9uc1swXS5pc0ZpcnN0UGFnZVN1Ym1pdCAmJiAhaXNMYXN0ICYmIGlzRmlyc3RcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwicmV2ZXJzZVwiIGVkaXRhYmxlPVwiZmFsc2VcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJQcmV2aW91cyBcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsQWN0aW9uKClcIj5CYWNrPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cImZvcndhcmRcIiBtYXQtYnV0dG9uIG1hdFN0ZXBwZXJOZXh0IChjbGljayk9XCJuZXh0UGFnZShhY3RpdmVJbmRleClcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8L21hdC1zdGVwPlxyXG5cclxuICAgICAgICA8L21hdC1ob3Jpem9udGFsLXN0ZXBwZXI+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L2lvbi1mb290ZXI+XHJcbiAgPC9mb3JtPlxyXG5cclxuXHJcblxyXG5cclxuICA8IS0tIDxkaXYgKm5nSWY9XCJwYXlMb2FkXCIgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG4gICAgICA8c3Ryb25nPlNhdmVkIHRoZSBmb2xsb3dpbmcgdmFsdWVzPC9zdHJvbmc+PGJyPnt7cGF5TG9hZH19XHJcbiAgICA8L2Rpdj4gIC0tPlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGFwcC1sZXhpcy1uZXhpcyAqbmdJZj1cImlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZFwiIFtkaXNwbGF5XT1cImlzTGV4aXNOZXhpc1BvcHVwRW5hYmxlZFwiIFtwYWdlXT1cImZsb3dLZXlcIiBbdXNlckRldGFpbHNdPVwidXNlckRldGFpbHNcIiAoc3VjY2Vzcyk9XCJvbkxuU3VjY2VzcygpXCIgKGVycm9yKT1cIm9uTE5FcnJvcigpXCIgKHVzcHMpPVwidHJpZ2dlclVTUFMoKVwiPjwvYXBwLWxleGlzLW5leGlzPlxyXG48YXBwLW1mYSAjbWZhIFt1c2VyXT1cImxzLmdldFVzZXIoKVwiICpuZ0lmPVwic2hvd01mYVwiIChzdWNjZXNzKT1cInNhdmVTY3JlZW5RdWVzdGlvbm5haXJlKCRldmVudClcIiBbZGF0YV09XCJtZmFEYXRhXCIgW3JlcXVlc3RDb2RlXT1cInRydWVcIiBcclxuICAgICAgICAgW21mYUVycm9yXT1cIm1mYUVycm9yXCIgW2hpZGVCdXR0b25zXT1cInRydWVcIj48L2FwcC1tZmE+Il19
|