@acorex/modules 20.7.17 → 20.7.19
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/assessment-management/index.d.ts +0 -1
- package/business-core/index.d.ts +32 -2
- package/common/index.d.ts +21 -0
- package/customer-management/index.d.ts +1 -27
- package/document-management/index.d.ts +0 -1
- package/fesm2022/acorex-modules-application-management.mjs +19 -27
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-CULLP39a.mjs} +65 -67
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-CULLP39a.mjs.map +1 -0
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-BLjzQMgD.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-BLjzQMgD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-Dy1fV5UY.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-Dy1fV5UY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-UWn57QXA.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-UWn57QXA.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs → acorex-modules-assessment-management-assessment-case.entity-DMSrj4-x.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs.map → acorex-modules-assessment-management-assessment-case.entity-DMSrj4-x.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs → acorex-modules-assessment-management-assessment-session.entity-Amq-d0wb.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs.map → acorex-modules-assessment-management-assessment-session.entity-Amq-d0wb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs → acorex-modules-assessment-management-fill-assessment-session.command-CdxcGakt.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-CdxcGakt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs → acorex-modules-assessment-management-preview-questionnaire.command-C5zwNwJi.mjs} +4 -4
- package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-C5zwNwJi.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs → acorex-modules-assessment-management-question-bank-item.entity-MlspdBfD.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-MlspdBfD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-DswgENO1.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs.map → acorex-modules-assessment-management-questionnaire-builder-edit.component-DswgENO1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-C3BXFr5P.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs.map → acorex-modules-assessment-management-questionnaire-builder-view.component-C3BXFr5P.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs → acorex-modules-assessment-management-questionnaire-builder.component-BMR71H5h.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs.map → acorex-modules-assessment-management-questionnaire-builder.component-BMR71H5h.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-Bj-JfJqq.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-Bj-JfJqq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-CVF6-BFW.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs.map → acorex-modules-assessment-management-questionnaire-viewer.service-CVF6-BFW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs → acorex-modules-assessment-management-questionnaire.entity-BZj3A4yO.mjs} +2 -2
- package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs.map → acorex-modules-assessment-management-questionnaire.entity-BZj3A4yO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs → acorex-modules-assessment-management-view-session-answers.command-BVwF-Qvd.mjs} +3 -3
- package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs.map → acorex-modules-assessment-management-view-session-answers.command-BVwF-Qvd.mjs.map} +1 -1
- package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs → acorex-modules-auth-acorex-modules-auth-CCFM_tlK.mjs} +13 -13
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs.map → acorex-modules-auth-acorex-modules-auth-CCFM_tlK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DJE47I8p.mjs → acorex-modules-auth-app-chooser.component-CK5MfqD3.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DJE47I8p.mjs.map → acorex-modules-auth-app-chooser.component-CK5MfqD3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-CI_lkyb7.mjs → acorex-modules-auth-login.module-CoRuFgHW.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-CI_lkyb7.mjs.map → acorex-modules-auth-login.module-CoRuFgHW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-CdY380qS.mjs → acorex-modules-auth-master.layout-DtQSZBEK.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-CdY380qS.mjs.map → acorex-modules-auth-master.layout-DtQSZBEK.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-menu.provider-Bk9KXBU3.mjs → acorex-modules-auth-menu.provider-CBNyM4Ax.mjs} +2 -14
- package/fesm2022/acorex-modules-auth-menu.provider-CBNyM4Ax.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs → acorex-modules-auth-oauth-callback.component-CLdkbMqN.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs.map → acorex-modules-auth-oauth-callback.component-CLdkbMqN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-Dw_v_EFQ.mjs → acorex-modules-auth-password.component-DFh6ylyI.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-Dw_v_EFQ.mjs.map → acorex-modules-auth-password.component-DFh6ylyI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CefISnvd.mjs → acorex-modules-auth-password.component-zygAB4zy.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-CefISnvd.mjs.map → acorex-modules-auth-password.component-zygAB4zy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-CwcJHbAi.mjs → acorex-modules-auth-routes-44-jn5HH.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-CwcJHbAi.mjs.map → acorex-modules-auth-routes-44-jn5HH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs → acorex-modules-auth-tenant-chooser.component-B7og_Ed1.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs.map → acorex-modules-auth-tenant-chooser.component-B7og_Ed1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-BOZB6sLo.mjs → acorex-modules-auth-two-factor.module--ToitCHE.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-BOZB6sLo.mjs.map → acorex-modules-auth-two-factor.module--ToitCHE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs → acorex-modules-auth-user-sessions.component-B49q0G5k.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs.map → acorex-modules-auth-user-sessions.component-B49q0G5k.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-business-core.mjs +124 -1
- package/fesm2022/acorex-modules-business-core.mjs.map +1 -1
- package/fesm2022/acorex-modules-common.mjs +49 -0
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +21 -22
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-customer-management-customer.entity-B7-T9_T7.mjs → acorex-modules-customer-management-customer.entity-BOUGKl2b.mjs} +53 -1
- package/fesm2022/acorex-modules-customer-management-customer.entity-BOUGKl2b.mjs.map +1 -0
- package/fesm2022/{acorex-modules-customer-management-lead.entity-Da9JTLOl.mjs → acorex-modules-customer-management-lead.entity-C-juNxOd.mjs} +19 -14
- package/fesm2022/acorex-modules-customer-management-lead.entity-C-juNxOd.mjs.map +1 -0
- package/fesm2022/acorex-modules-customer-management.mjs +34 -152
- package/fesm2022/acorex-modules-customer-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +28 -39
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +51 -42
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +21 -17
- package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-MfqQx2iN.mjs → acorex-modules-help-desk-acorex-modules-help-desk-6uU5upBy.mjs} +65 -70
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-6uU5upBy.mjs.map +1 -0
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CATwc3fe.mjs → acorex-modules-help-desk-capture-screen.component-CqtTzbgS.mjs} +2 -2
- package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CATwc3fe.mjs.map → acorex-modules-help-desk-capture-screen.component-CqtTzbgS.mjs.map} +1 -1
- package/fesm2022/acorex-modules-help-desk.mjs +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +85 -76
- package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-learning-management.mjs +105 -137
- package/fesm2022/acorex-modules-learning-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +64 -198
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-meeting-management.mjs +45 -39
- package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-order-management-menu.provider-DeMKkRZa.mjs +61 -0
- package/fesm2022/acorex-modules-order-management-menu.provider-DeMKkRZa.mjs.map +1 -0
- package/fesm2022/acorex-modules-order-management.mjs +2 -2
- package/fesm2022/acorex-modules-organization-management.mjs +140 -90
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-ndbiBVUt.mjs → acorex-modules-platform-management-acorex-modules-platform-management-fAjKD6Y5.mjs} +20 -17
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-ndbiBVUt.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-fAjKD6Y5.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-w-Ix2VZA.mjs → acorex-modules-platform-management-menu-list.component-BJsd86Vf.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-menu-list.component-w-Ix2VZA.mjs.map → acorex-modules-platform-management-menu-list.component-BJsd86Vf.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-procurement-management.mjs +13 -18
- package/fesm2022/acorex-modules-procurement-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-product-catalog.mjs +24 -27
- package/fesm2022/acorex-modules-product-catalog.mjs.map +1 -1
- package/fesm2022/acorex-modules-reservation-management.mjs +91 -54
- package/fesm2022/acorex-modules-reservation-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs → acorex-modules-settings-management-acorex-modules-settings-management-fj933lbu.mjs} +6 -6
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-fj933lbu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs → acorex-modules-settings-management-permission-definition.provider-CW3wSb7v.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs.map → acorex-modules-settings-management-permission-definition.provider-CW3wSb7v.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs → acorex-modules-settings-management-setting-page.component-BqJ31scm.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs.map → acorex-modules-settings-management-setting-page.component-BqJ31scm.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs → acorex-modules-settings-management-setting-view.component-D7QpT246.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs.map → acorex-modules-settings-management-setting-view.component-D7QpT246.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/fesm2022/acorex-modules-subscription-management.mjs +19 -28
- package/fesm2022/acorex-modules-subscription-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-tenant-management.mjs +9 -16
- package/fesm2022/acorex-modules-tenant-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +51 -36
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/learning-management/index.d.ts +6 -0
- package/meeting-management/index.d.ts +0 -1
- package/package.json +10 -10
- package/reservation-management/index.d.ts +13 -12
- package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-menu.provider-Bk9KXBU3.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-customer.entity-B7-T9_T7.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-lead.entity-Da9JTLOl.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-DNFSDcpD.mjs +0 -60
- package/fesm2022/acorex-modules-customer-management-lifecycle-stage.entity-DNFSDcpD.mjs.map +0 -1
- package/fesm2022/acorex-modules-customer-management-sales-territory.entity-Bw5YU_a3.mjs +0 -60
- package/fesm2022/acorex-modules-customer-management-sales-territory.entity-Bw5YU_a3.mjs.map +0 -1
- package/fesm2022/acorex-modules-help-desk-acorex-modules-help-desk-MfqQx2iN.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-menu.provider-CDXy5oMa.mjs +0 -68
- package/fesm2022/acorex-modules-order-management-menu.provider-CDXy5oMa.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-modules-assessment-management-acorex-modules-assessment-management-CULLP39a.mjs","sources":["../tmp-esm2022/assessment-management/lib/const.js","../tmp-esm2022/assessment-management/lib/entity.provider.js","../tmp-esm2022/assessment-management/lib/features.keys.js","../tmp-esm2022/assessment-management/lib/feature-definition.provider.js","../tmp-esm2022/assessment-management/lib/menu.keys.js","../tmp-esm2022/assessment-management/lib/permission.keys.js","../tmp-esm2022/assessment-management/lib/menu.provider.js","../tmp-esm2022/assessment-management/lib/permission-definition.provider.js","../tmp-esm2022/assessment-management/lib/search.provider.js","../tmp-esm2022/assessment-management/lib/manifest.js","../tmp-esm2022/assessment-management/lib/entities/assessment-case/assessment-case.service.js","../tmp-esm2022/assessment-management/lib/entities/assessment-case/assessment-case.module.js","../tmp-esm2022/assessment-management/lib/entities/assessment-session/assessment-session.service.js","../tmp-esm2022/assessment-management/lib/entities/assessment-session/assessment-session.module.js","../tmp-esm2022/assessment-management/lib/entities/question-bank-item/question-bank-item.service.js","../tmp-esm2022/assessment-management/lib/entities/question-bank-item/question-bank-item.module.js","../tmp-esm2022/assessment-management/lib/entities/questionnaire/questionnaire.service.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.config.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-builder/questionnaire-builder.module.js","../tmp-esm2022/assessment-management/lib/entities/questionnaire/questionnaire.module.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/questionnaire-viewer.config.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/widgets/answers-viewer-widget.config.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/questionnaire-viewer.viewmodel.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/questionnaire-viewer-question.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/views/single-page-view.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/views/page-per-group-view.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/views/page-per-question-view.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/views/side-menu-view.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/questionnaire-viewer.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/questionnaire-viewer-edit.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/questionnaire-viewer.module.js","../tmp-esm2022/assessment-management/lib/assessment-management.module.js","../tmp-esm2022/assessment-management/lib/entities/question-bank-item/question-bank-item.types.js","../tmp-esm2022/assessment-management/lib/entities/questionnaire/questionnaire.types.js","../tmp-esm2022/assessment-management/lib/entities/assessment-case/assessment-case.types.js","../tmp-esm2022/assessment-management/lib/entities/assessment-session/assessment-session.types.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/utils/pre-post-content.utils.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/components/pre-questionnaire-content/pre-questionnaire-content.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/components/post-questionnaire-content/post-questionnaire-content.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/questionnaire-viewer-page.component.js","../tmp-esm2022/assessment-management/lib/features/questionnaire-viewer/questionnaire-viewer-standalone-page.component.js","../tmp-esm2022/assessment-management/acorex-modules-assessment-management.js"],"sourcesContent":["//#region ---- Root Configuration ----\nconst config = { i18n: 'assessment-management' };\nexport const RootConfig = {\n config,\n module: {\n module: 'assessment-management',\n route: 'assessment-management',\n name: 'AssessmentManagement',\n title: '@assessment-management:module.title',\n icon: 'fa-light fa-clipboard-list-check',\n },\n entities: {\n questionBankItem: {\n name: 'QuestionBankItem',\n title: '@assessment-management:question-bank.entities.question-bank-item.title',\n titlePlural: '@assessment-management:question-bank.entities.question-bank-item.plural',\n icon: 'fa-light fa-question-circle',\n },\n questionnaire: {\n name: 'Questionnaire',\n title: '@assessment-management:questionnaires.entities.questionnaire.title',\n titlePlural: '@assessment-management:questionnaires.entities.questionnaire.plural',\n icon: 'fa-light fa-clipboard-list',\n },\n assessmentCase: {\n name: 'AssessmentCase',\n title: '@assessment-management:cases.entities.assessment-case.title',\n titlePlural: '@assessment-management:cases.entities.assessment-case.plural',\n icon: 'fa-light fa-briefcase',\n },\n assessmentSession: {\n name: 'AssessmentSession',\n title: '@assessment-management:sessions.entities.assessment-session.title',\n titlePlural: '@assessment-management:sessions.entities.assessment-session.plural',\n icon: 'fa-light fa-clipboard-check',\n },\n },\n};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQTBDO0FBRTFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLENBQUM7QUFFakQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLE1BQU07SUFDTixNQUFNLEVBQUU7UUFDSixNQUFNLEVBQUUsdUJBQXVCO1FBQy9CLEtBQUssRUFBRSx1QkFBdUI7UUFDOUIsSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixLQUFLLEVBQUUscUNBQXFDO1FBQzVDLElBQUksRUFBRSxrQ0FBa0M7S0FDM0M7SUFDRCxRQUFRLEVBQUU7UUFDTixnQkFBZ0IsRUFBRTtZQUNkLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsS0FBSyxFQUFFLHdFQUF3RTtZQUMvRSxXQUFXLEVBQUUseUVBQXlFO1lBQ3RGLElBQUksRUFBRSw2QkFBNkI7U0FDdEM7UUFDRCxhQUFhLEVBQUU7WUFDWCxJQUFJLEVBQUUsZUFBZTtZQUNyQixLQUFLLEVBQUUsb0VBQW9FO1lBQzNFLFdBQVcsRUFBRSxxRUFBcUU7WUFDbEYsSUFBSSxFQUFFLDRCQUE0QjtTQUNyQztRQUNELGNBQWMsRUFBRTtZQUNaLElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsS0FBSyxFQUFFLDZEQUE2RDtZQUNwRSxXQUFXLEVBQUUsOERBQThEO1lBQzNFLElBQUksRUFBRSx1QkFBdUI7U0FDaEM7UUFDRCxpQkFBaUIsRUFBRTtZQUNmLElBQUksRUFBRSxtQkFBbUI7WUFDekIsS0FBSyxFQUFFLG1FQUFtRTtZQUMxRSxXQUFXLEVBQUUsb0VBQW9FO1lBQ2pGLElBQUksRUFBRSw2QkFBNkI7U0FDdEM7S0FDSjtDQUNKLENBQUM7QUFFRixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBSb290IENvbmZpZ3VyYXRpb24gICAtLS0tXG5cbmNvbnN0IGNvbmZpZyA9IHsgaTE4bjogJ2Fzc2Vzc21lbnQtbWFuYWdlbWVudCcgfTtcblxuZXhwb3J0IGNvbnN0IFJvb3RDb25maWcgPSB7XG4gICAgY29uZmlnLFxuICAgIG1vZHVsZToge1xuICAgICAgICBtb2R1bGU6ICdhc3Nlc3NtZW50LW1hbmFnZW1lbnQnLFxuICAgICAgICByb3V0ZTogJ2Fzc2Vzc21lbnQtbWFuYWdlbWVudCcsXG4gICAgICAgIG5hbWU6ICdBc3Nlc3NtZW50TWFuYWdlbWVudCcsXG4gICAgICAgIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDptb2R1bGUudGl0bGUnLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY2xpcGJvYXJkLWxpc3QtY2hlY2snLFxuICAgIH0sXG4gICAgZW50aXRpZXM6IHtcbiAgICAgICAgcXVlc3Rpb25CYW5rSXRlbToge1xuICAgICAgICAgICAgbmFtZTogJ1F1ZXN0aW9uQmFua0l0ZW0nLFxuICAgICAgICAgICAgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9uLWJhbmsuZW50aXRpZXMucXVlc3Rpb24tYmFuay1pdGVtLnRpdGxlJyxcbiAgICAgICAgICAgIHRpdGxlUGx1cmFsOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbi1iYW5rLmVudGl0aWVzLnF1ZXN0aW9uLWJhbmstaXRlbS5wbHVyYWwnLFxuICAgICAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXF1ZXN0aW9uLWNpcmNsZScsXG4gICAgICAgIH0sXG4gICAgICAgIHF1ZXN0aW9ubmFpcmU6IHtcbiAgICAgICAgICAgIG5hbWU6ICdRdWVzdGlvbm5haXJlJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5lbnRpdGllcy5xdWVzdGlvbm5haXJlLnRpdGxlJyxcbiAgICAgICAgICAgIHRpdGxlUGx1cmFsOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5lbnRpdGllcy5xdWVzdGlvbm5haXJlLnBsdXJhbCcsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY2xpcGJvYXJkLWxpc3QnLFxuICAgICAgICB9LFxuICAgICAgICBhc3Nlc3NtZW50Q2FzZToge1xuICAgICAgICAgICAgbmFtZTogJ0Fzc2Vzc21lbnRDYXNlJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpjYXNlcy5lbnRpdGllcy5hc3Nlc3NtZW50LWNhc2UudGl0bGUnLFxuICAgICAgICAgICAgdGl0bGVQbHVyYWw6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OmNhc2VzLmVudGl0aWVzLmFzc2Vzc21lbnQtY2FzZS5wbHVyYWwnLFxuICAgICAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWJyaWVmY2FzZScsXG4gICAgICAgIH0sXG4gICAgICAgIGFzc2Vzc21lbnRTZXNzaW9uOiB7XG4gICAgICAgICAgICBuYW1lOiAnQXNzZXNzbWVudFNlc3Npb24nLFxuICAgICAgICAgICAgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnNlc3Npb25zLmVudGl0aWVzLmFzc2Vzc21lbnQtc2Vzc2lvbi50aXRsZScsXG4gICAgICAgICAgICB0aXRsZVBsdXJhbDogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6c2Vzc2lvbnMuZW50aXRpZXMuYXNzZXNzbWVudC1zZXNzaW9uLnBsdXJhbCcsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY2xpcGJvYXJkLWNoZWNrJyxcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nimport { inject, Injector } from '@angular/core';\nimport { RootConfig } from './const';\n//#endregion\n//#region ---- Entity Provider ----\nexport class AXMAssessmentManagementEntityProvider {\n constructor() {\n this.injector = inject(Injector);\n }\n async get(moduleName, entityName) {\n if (moduleName === RootConfig.module.name) {\n switch (entityName) {\n case RootConfig.entities.questionBankItem.name:\n return (await import('./entities/question-bank-item/question-bank-item.entity')).factory(this.injector);\n case RootConfig.entities.questionnaire.name:\n return (await import('./entities/questionnaire/questionnaire.entity')).factory(this.injector);\n case RootConfig.entities.assessmentCase.name:\n return (await import('./entities/assessment-case/assessment-case.entity')).factory(this.injector);\n case RootConfig.entities.assessmentSession.name:\n return (await import('./entities/assessment-session/assessment-session.entity')).factory(this.injector);\n }\n }\n return null;\n }\n async list() {\n const m = RootConfig.module.name;\n return Promise.resolve(Object.values(RootConfig.entities).map((e) => ({ name: e.name, module: m })));\n }\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0eS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxZQUFZO0FBRVosdUNBQXVDO0FBRXZDLE1BQU0sT0FBTyxxQ0FBcUM7SUFBbEQ7UUFDcUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQTRCakQsQ0FBQztJQTFCRyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQWtCLEVBQUUsVUFBa0I7UUFDNUMsSUFBSSxVQUFVLEtBQUssVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QyxRQUFRLFVBQVUsRUFBRSxDQUFDO2dCQUNqQixLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtvQkFDMUMsT0FBTyxDQUFDLE1BQU0sTUFBTSxDQUFDLHlEQUF5RCxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUU1RyxLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUk7b0JBQ3ZDLE9BQU8sQ0FBQyxNQUFNLE1BQU0sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFbEcsS0FBSyxVQUFVLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJO29CQUN4QyxPQUFPLENBQUMsTUFBTSxNQUFNLENBQUMsbURBQW1ELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRXRHLEtBQUssVUFBVSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJO29CQUMzQyxPQUFPLENBQUMsTUFBTSxNQUFNLENBQUMseURBQXlELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEgsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDTixNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNqQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQy9FLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBFbnRpdHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZWZpbml0aW9uTG9hZGVyIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgRW50aXR5IFByb3ZpZGVyICAgLS0tLVxuXG5leHBvcnQgY2xhc3MgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRFbnRpdHlQcm92aWRlciBpbXBsZW1lbnRzIEFYUEVudGl0eURlZmluaXRpb25Mb2FkZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gICAgYXN5bmMgZ2V0KG1vZHVsZU5hbWU6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBFbnRpdHkgfCBudWxsPiB7XG4gICAgICAgIGlmIChtb2R1bGVOYW1lID09PSBSb290Q29uZmlnLm1vZHVsZS5uYW1lKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGVudGl0eU5hbWUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFJvb3RDb25maWcuZW50aXRpZXMucXVlc3Rpb25CYW5rSXRlbS5uYW1lOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGF3YWl0IGltcG9ydCgnLi9lbnRpdGllcy9xdWVzdGlvbi1iYW5rLWl0ZW0vcXVlc3Rpb24tYmFuay1pdGVtLmVudGl0eScpKS5mYWN0b3J5KHRoaXMuaW5qZWN0b3IpO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBSb290Q29uZmlnLmVudGl0aWVzLnF1ZXN0aW9ubmFpcmUubmFtZTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBpbXBvcnQoJy4vZW50aXRpZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLmVudGl0eScpKS5mYWN0b3J5KHRoaXMuaW5qZWN0b3IpO1xuXG4gICAgICAgICAgICAgICAgY2FzZSBSb290Q29uZmlnLmVudGl0aWVzLmFzc2Vzc21lbnRDYXNlLm5hbWU6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYXdhaXQgaW1wb3J0KCcuL2VudGl0aWVzL2Fzc2Vzc21lbnQtY2FzZS9hc3Nlc3NtZW50LWNhc2UuZW50aXR5JykpLmZhY3RvcnkodGhpcy5pbmplY3Rvcik7XG5cbiAgICAgICAgICAgICAgICBjYXNlIFJvb3RDb25maWcuZW50aXRpZXMuYXNzZXNzbWVudFNlc3Npb24ubmFtZTpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhd2FpdCBpbXBvcnQoJy4vZW50aXRpZXMvYXNzZXNzbWVudC1zZXNzaW9uL2Fzc2Vzc21lbnQtc2Vzc2lvbi5lbnRpdHknKSkuZmFjdG9yeSh0aGlzLmluamVjdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGFzeW5jIGxpc3QoKTogUHJvbWlzZTx7IG5hbWU6IHN0cmluZzsgbW9kdWxlOiBzdHJpbmcgfVtdPiB7XG4gICAgICAgIGNvbnN0IG0gPSBSb290Q29uZmlnLm1vZHVsZS5uYW1lO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhSb290Q29uZmlnLmVudGl0aWVzKS5tYXAoKGUpID0+ICh7IG5hbWU6IGUubmFtZSwgbW9kdWxlOiBtIH0pKVxuICAgICAgICApO1xuICAgIH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","export const AXMAssessmentManagementFeatureKeys = {\n QuestionnaireManagement: 'AssessmentManagement:Feature:Questionnaire.Management',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMua2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy5rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHO0lBQ2hELHVCQUF1QixFQUFFLHVEQUF1RDtDQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50RmVhdHVyZUtleXMgPSB7XG4gIFF1ZXN0aW9ubmFpcmVNYW5hZ2VtZW50OiAnQXNzZXNzbWVudE1hbmFnZW1lbnQ6RmVhdHVyZTpRdWVzdGlvbm5haXJlLk1hbmFnZW1lbnQnLFxufSBhcyBjb25zdDtcblxuIl19","//#region ---- Imports ----\nimport { AXMAssessmentManagementFeatureKeys } from './features.keys';\n//#endregion\n//#region ---- Feature Definition Provider ----\n/**\n * Assessment Management Feature Definition Provider.\n * Provides feature definitions for the Assessment Management module.\n */\nexport class AXMAssessmentManagementFeatureDefinitionProvider {\n async provide(context) {\n // Question Bank feature\n context.addFeature(AXMAssessmentManagementFeatureKeys.QuestionnaireManagement, {\n title: '@assessment-management:features.questionnaire-management.title',\n description: '@assessment-management:features.questionnaire-management.description',\n defaultValue: true,\n type: 'boolean',\n });\n }\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmUtZGVmaW5pdGlvbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFNL0IsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckUsWUFBWTtBQUVaLG1EQUFtRDtBQUVuRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZ0RBQWdEO0lBQ3pELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBNEM7UUFDdEQsd0JBQXdCO1FBQ3hCLE9BQU8sQ0FBQyxVQUFVLENBQUMsa0NBQWtDLENBQUMsdUJBQXVCLEVBQUU7WUFDM0UsS0FBSyxFQUFFLGdFQUFnRTtZQUN2RSxXQUFXLEVBQUUsc0VBQXNFO1lBQ25GLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQUVELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7XG4gICAgQVhQRmVhdHVyZURlZmluaXRpb25Qcm92aWRlcixcbiAgICBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50RmVhdHVyZUtleXMgfSBmcm9tICcuL2ZlYXR1cmVzLmtleXMnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBGZWF0dXJlIERlZmluaXRpb24gUHJvdmlkZXIgICAtLS0tXG5cbi8qKlxuICogQXNzZXNzbWVudCBNYW5hZ2VtZW50IEZlYXR1cmUgRGVmaW5pdGlvbiBQcm92aWRlci5cbiAqIFByb3ZpZGVzIGZlYXR1cmUgZGVmaW5pdGlvbnMgZm9yIHRoZSBBc3Nlc3NtZW50IE1hbmFnZW1lbnQgbW9kdWxlLlxuICovXG5leHBvcnQgY2xhc3MgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyIGltcGxlbWVudHMgQVhQRmVhdHVyZURlZmluaXRpb25Qcm92aWRlciB7XG4gICAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAvLyBRdWVzdGlvbiBCYW5rIGZlYXR1cmVcbiAgICAgICAgY29udGV4dC5hZGRGZWF0dXJlKEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50RmVhdHVyZUtleXMuUXVlc3Rpb25uYWlyZU1hbmFnZW1lbnQsIHtcbiAgICAgICAgICAgIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpmZWF0dXJlcy5xdWVzdGlvbm5haXJlLW1hbmFnZW1lbnQudGl0bGUnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OmZlYXR1cmVzLnF1ZXN0aW9ubmFpcmUtbWFuYWdlbWVudC5kZXNjcmlwdGlvbicsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","export const AXPAssessmentManagementMenuKeys = {\n Questionnaires: 'AssessmentManagement:Menu:Questionnaires',\n Cases: 'AssessmentManagement:Menu:Cases',\n QuestionBankItems: 'AssessmentManagement:Menu:QuestionBankItems',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL21lbnUua2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRztJQUMzQyxjQUFjLEVBQUUsMENBQTBDO0lBQzFELEtBQUssRUFBRSxpQ0FBaUM7SUFDeEMsaUJBQWlCLEVBQUUsNkNBQTZDO0NBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVhQQXNzZXNzbWVudE1hbmFnZW1lbnRNZW51S2V5cyA9IHtcbiAgICBRdWVzdGlvbm5haXJlczogJ0Fzc2Vzc21lbnRNYW5hZ2VtZW50Ok1lbnU6UXVlc3Rpb25uYWlyZXMnLFxuICAgIENhc2VzOiAnQXNzZXNzbWVudE1hbmFnZW1lbnQ6TWVudTpDYXNlcycsXG4gICAgUXVlc3Rpb25CYW5rSXRlbXM6ICdBc3Nlc3NtZW50TWFuYWdlbWVudDpNZW51OlF1ZXN0aW9uQmFua0l0ZW1zJyxcbn0gYXMgY29uc3Q7XG5cbiJdfQ==","export const AXMAssessmentManagementPermissionKeys = {\n AssessmentManagement: {\n QuestionBank: 'AssessmentManagement:QuestionBank:Management',\n Questionnaire: {\n Management: 'AssessmentManagement:Questionnaire:Management',\n Create: 'AssessmentManagement:Questionnaire:Create',\n Edit: 'AssessmentManagement:Questionnaire:Edit',\n Delete: 'AssessmentManagement:Questionnaire:Delete',\n },\n Case: {\n Management: 'AssessmentManagement:Case:Management',\n Create: 'AssessmentManagement:Case:Create',\n Edit: 'AssessmentManagement:Case:Edit',\n Delete: 'AssessmentManagement:Case:Delete',\n },\n Session: {\n Management: 'AssessmentManagement:Session:Management',\n Create: 'AssessmentManagement:Session:Create',\n Edit: 'AssessmentManagement:Session:Edit',\n Delete: 'AssessmentManagement:Session:Delete',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL3Blcm1pc3Npb24ua2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRztJQUNqRCxvQkFBb0IsRUFBRTtRQUNsQixZQUFZLEVBQUUsOENBQThDO1FBQzVELGFBQWEsRUFBRTtZQUNYLFVBQVUsRUFBRSwrQ0FBK0M7WUFDM0QsTUFBTSxFQUFFLDJDQUEyQztZQUNuRCxJQUFJLEVBQUUseUNBQXlDO1lBQy9DLE1BQU0sRUFBRSwyQ0FBMkM7U0FDdEQ7UUFDRCxJQUFJLEVBQUU7WUFDRixVQUFVLEVBQUUsc0NBQXNDO1lBQ2xELE1BQU0sRUFBRSxrQ0FBa0M7WUFDMUMsSUFBSSxFQUFFLGdDQUFnQztZQUN0QyxNQUFNLEVBQUUsa0NBQWtDO1NBQzdDO1FBQ0QsT0FBTyxFQUFFO1lBQ0wsVUFBVSxFQUFFLHlDQUF5QztZQUNyRCxNQUFNLEVBQUUscUNBQXFDO1lBQzdDLElBQUksRUFBRSxtQ0FBbUM7WUFDekMsTUFBTSxFQUFFLHFDQUFxQztTQUNoRDtLQUNKO0NBQ0ssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWE1Bc3Nlc3NtZW50TWFuYWdlbWVudFBlcm1pc3Npb25LZXlzID0ge1xuICAgIEFzc2Vzc21lbnRNYW5hZ2VtZW50OiB7XG4gICAgICAgIFF1ZXN0aW9uQmFuazogJ0Fzc2Vzc21lbnRNYW5hZ2VtZW50OlF1ZXN0aW9uQmFuazpNYW5hZ2VtZW50JyxcbiAgICAgICAgUXVlc3Rpb25uYWlyZToge1xuICAgICAgICAgICAgTWFuYWdlbWVudDogJ0Fzc2Vzc21lbnRNYW5hZ2VtZW50OlF1ZXN0aW9ubmFpcmU6TWFuYWdlbWVudCcsXG4gICAgICAgICAgICBDcmVhdGU6ICdBc3Nlc3NtZW50TWFuYWdlbWVudDpRdWVzdGlvbm5haXJlOkNyZWF0ZScsXG4gICAgICAgICAgICBFZGl0OiAnQXNzZXNzbWVudE1hbmFnZW1lbnQ6UXVlc3Rpb25uYWlyZTpFZGl0JyxcbiAgICAgICAgICAgIERlbGV0ZTogJ0Fzc2Vzc21lbnRNYW5hZ2VtZW50OlF1ZXN0aW9ubmFpcmU6RGVsZXRlJyxcbiAgICAgICAgfSxcbiAgICAgICAgQ2FzZToge1xuICAgICAgICAgICAgTWFuYWdlbWVudDogJ0Fzc2Vzc21lbnRNYW5hZ2VtZW50OkNhc2U6TWFuYWdlbWVudCcsXG4gICAgICAgICAgICBDcmVhdGU6ICdBc3Nlc3NtZW50TWFuYWdlbWVudDpDYXNlOkNyZWF0ZScsXG4gICAgICAgICAgICBFZGl0OiAnQXNzZXNzbWVudE1hbmFnZW1lbnQ6Q2FzZTpFZGl0JyxcbiAgICAgICAgICAgIERlbGV0ZTogJ0Fzc2Vzc21lbnRNYW5hZ2VtZW50OkNhc2U6RGVsZXRlJyxcbiAgICAgICAgfSxcbiAgICAgICAgU2Vzc2lvbjoge1xuICAgICAgICAgICAgTWFuYWdlbWVudDogJ0Fzc2Vzc21lbnRNYW5hZ2VtZW50OlNlc3Npb246TWFuYWdlbWVudCcsXG4gICAgICAgICAgICBDcmVhdGU6ICdBc3Nlc3NtZW50TWFuYWdlbWVudDpTZXNzaW9uOkNyZWF0ZScsXG4gICAgICAgICAgICBFZGl0OiAnQXNzZXNzbWVudE1hbmFnZW1lbnQ6U2Vzc2lvbjpFZGl0JyxcbiAgICAgICAgICAgIERlbGV0ZTogJ0Fzc2Vzc21lbnRNYW5hZ2VtZW50OlNlc3Npb246RGVsZXRlJyxcbiAgICAgICAgfSxcbiAgICB9LFxufSBhcyBjb25zdDtcblxuIl19","//#region ---- Imports ----\nimport { AXPCommonMenuKeys } from '@acorex/modules/common';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport { AXPAssessmentManagementMenuKeys } from './menu.keys';\nimport { AXMAssessmentManagementPermissionKeys } from './permission.keys';\n//#endregion\n//#region ---- Menu Provider ----\nexport class AXMAssessmentManagementMenuProvider {\n constructor() {\n this.entityService = inject(AXPEntityService);\n }\n async provide(context) {\n const module = RootConfig.module;\n // Configuration > Forms & Assessments: Question Bank, Questionnaires\n const formsMenu = context.find(AXPCommonMenuKeys.FormsAndAssessments);\n if (!formsMenu.exists) {\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXPCommonMenuKeys.FormsAndAssessments,\n priority: 8935,\n text: '@general:menus.forms-and-assessments.title',\n icon: 'fa-light fa-clipboard-list-check',\n type: 'menu',\n children: [],\n },\n ]);\n }\n context.find(AXPCommonMenuKeys.FormsAndAssessments).addItems([\n {\n name: AXPAssessmentManagementMenuKeys.QuestionBankItems,\n text: '@assessment-management:question-bank.entities.question-bank-item.plural',\n path: this.entityService.withEntity(module.name, RootConfig.entities.questionBankItem.name).createPath(),\n icon: RootConfig.entities.questionBankItem.icon,\n priority: 1,\n policy: {\n permissions: [AXMAssessmentManagementPermissionKeys.AssessmentManagement.QuestionBank],\n },\n },\n {\n name: AXPAssessmentManagementMenuKeys.Questionnaires,\n text: RootConfig.entities.questionnaire.titlePlural,\n path: this.entityService.withEntity(module.name, RootConfig.entities.questionnaire.name).createPath(),\n icon: RootConfig.entities.questionnaire.icon,\n priority: 2,\n policy: {\n permissions: [AXMAssessmentManagementPermissionKeys.AssessmentManagement.Questionnaire.Management],\n },\n },\n ]);\n // Root under MODULES: Assessments (Cases)\n context.addItems([\n {\n name: AXPAssessmentManagementMenuKeys.Cases,\n priority: 9010,\n text: '@general:menus.assessments.title',\n icon: RootConfig.entities.assessmentCase.icon,\n path: this.entityService.withEntity(module.name, RootConfig.entities.assessmentCase.name).createPath(),\n policy: {\n features: [module.name],\n permissions: [AXMAssessmentManagementPermissionKeys.AssessmentManagement.Case.Management],\n },\n },\n ]);\n }\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9tZW51LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFFLFlBQVk7QUFFWixxQ0FBcUM7QUFFckMsTUFBTSxPQUFPLG1DQUFtQztJQUFoRDtRQUNZLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUEwRHJELENBQUM7SUF4REcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUErQjtRQUN6QyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRWpDLHFFQUFxRTtRQUNyRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDbkQ7b0JBQ0ksSUFBSSxFQUFFLGlCQUFpQixDQUFDLG1CQUFtQjtvQkFDM0MsUUFBUSxFQUFFLElBQUk7b0JBQ2QsSUFBSSxFQUFFLDRDQUE0QztvQkFDbEQsSUFBSSxFQUFFLGtDQUFrQztvQkFDeEMsSUFBSSxFQUFFLE1BQU07b0JBQ1osUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUN6RDtnQkFDSSxJQUFJLEVBQUUsK0JBQStCLENBQUMsaUJBQWlCO2dCQUN2RCxJQUFJLEVBQUUseUVBQXlFO2dCQUMvRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRTtnQkFDeEcsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSTtnQkFDL0MsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxFQUFFO29CQUNKLFdBQVcsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQztpQkFDekY7YUFDSjtZQUNEO2dCQUNJLElBQUksRUFBRSwrQkFBK0IsQ0FBQyxjQUFjO2dCQUNwRCxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsV0FBVztnQkFDbkQsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFO2dCQUNyRyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSTtnQkFDNUMsUUFBUSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxFQUFFO29CQUNKLFdBQVcsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7aUJBQ3JHO2FBQ0o7U0FDSixDQUFDLENBQUM7UUFFSCwwQ0FBMEM7UUFDMUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNiO2dCQUNJLElBQUksRUFBRSwrQkFBK0IsQ0FBQyxLQUFLO2dCQUMzQyxRQUFRLEVBQUUsSUFBSTtnQkFDZCxJQUFJLEVBQUUsa0NBQWtDO2dCQUN4QyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSTtnQkFDN0MsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFO2dCQUN0RyxNQUFNLEVBQUU7b0JBQ0osUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDdkIsV0FBVyxFQUFFLENBQUMscUNBQXFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztpQkFDNUY7YUFDSjtTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQUVELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEFYUENvbW1vbk1lbnVLZXlzIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBNZW51UHJvdmlkZXIsIEFYUE1lbnVQcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4vY29uc3QnO1xuaW1wb3J0IHsgQVhQQXNzZXNzbWVudE1hbmFnZW1lbnRNZW51S2V5cyB9IGZyb20gJy4vbWVudS5rZXlzJztcbmltcG9ydCB7IEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50UGVybWlzc2lvbktleXMgfSBmcm9tICcuL3Blcm1pc3Npb24ua2V5cyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE1lbnUgUHJvdmlkZXIgICAtLS0tXG5cbmV4cG9ydCBjbGFzcyBBWE1Bc3Nlc3NtZW50TWFuYWdlbWVudE1lbnVQcm92aWRlciBpbXBsZW1lbnRzIEFYUE1lbnVQcm92aWRlciB7XG4gICAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eVNlcnZpY2UpO1xuXG4gICAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBNZW51UHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IFJvb3RDb25maWcubW9kdWxlO1xuXG4gICAgICAgIC8vIENvbmZpZ3VyYXRpb24gPiBGb3JtcyAmIEFzc2Vzc21lbnRzOiBRdWVzdGlvbiBCYW5rLCBRdWVzdGlvbm5haXJlc1xuICAgICAgICBjb25zdCBmb3Jtc01lbnUgPSBjb250ZXh0LmZpbmQoQVhQQ29tbW9uTWVudUtleXMuRm9ybXNBbmRBc3Nlc3NtZW50cyk7XG4gICAgICAgIGlmICghZm9ybXNNZW51LmV4aXN0cykge1xuICAgICAgICAgICAgY29udGV4dC5maW5kKEFYUENvbW1vbk1lbnVLZXlzLkNvbmZpZ3VyYXRpb24pLmFkZEl0ZW1zKFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IEFYUENvbW1vbk1lbnVLZXlzLkZvcm1zQW5kQXNzZXNzbWVudHMsXG4gICAgICAgICAgICAgICAgICAgIHByaW9yaXR5OiA4OTM1LFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnQGdlbmVyYWw6bWVudXMuZm9ybXMtYW5kLWFzc2Vzc21lbnRzLnRpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNsaXBib2FyZC1saXN0LWNoZWNrJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ21lbnUnLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5maW5kKEFYUENvbW1vbk1lbnVLZXlzLkZvcm1zQW5kQXNzZXNzbWVudHMpLmFkZEl0ZW1zKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBWFBBc3Nlc3NtZW50TWFuYWdlbWVudE1lbnVLZXlzLlF1ZXN0aW9uQmFua0l0ZW1zLFxuICAgICAgICAgICAgICAgIHRleHQ6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9uLWJhbmsuZW50aXRpZXMucXVlc3Rpb24tYmFuay1pdGVtLnBsdXJhbCcsXG4gICAgICAgICAgICAgICAgcGF0aDogdGhpcy5lbnRpdHlTZXJ2aWNlLndpdGhFbnRpdHkobW9kdWxlLm5hbWUsIFJvb3RDb25maWcuZW50aXRpZXMucXVlc3Rpb25CYW5rSXRlbS5uYW1lKS5jcmVhdGVQYXRoKCksXG4gICAgICAgICAgICAgICAgaWNvbjogUm9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbkJhbmtJdGVtLmljb24sXG4gICAgICAgICAgICAgICAgcHJpb3JpdHk6IDEsXG4gICAgICAgICAgICAgICAgcG9saWN5OiB7XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zOiBbQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRQZXJtaXNzaW9uS2V5cy5Bc3Nlc3NtZW50TWFuYWdlbWVudC5RdWVzdGlvbkJhbmtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEFYUEFzc2Vzc21lbnRNYW5hZ2VtZW50TWVudUtleXMuUXVlc3Rpb25uYWlyZXMsXG4gICAgICAgICAgICAgICAgdGV4dDogUm9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbm5haXJlLnRpdGxlUGx1cmFsLFxuICAgICAgICAgICAgICAgIHBhdGg6IHRoaXMuZW50aXR5U2VydmljZS53aXRoRW50aXR5KG1vZHVsZS5uYW1lLCBSb290Q29uZmlnLmVudGl0aWVzLnF1ZXN0aW9ubmFpcmUubmFtZSkuY3JlYXRlUGF0aCgpLFxuICAgICAgICAgICAgICAgIGljb246IFJvb3RDb25maWcuZW50aXRpZXMucXVlc3Rpb25uYWlyZS5pY29uLFxuICAgICAgICAgICAgICAgIHByaW9yaXR5OiAyLFxuICAgICAgICAgICAgICAgIHBvbGljeToge1xuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uczogW0FYTUFzc2Vzc21lbnRNYW5hZ2VtZW50UGVybWlzc2lvbktleXMuQXNzZXNzbWVudE1hbmFnZW1lbnQuUXVlc3Rpb25uYWlyZS5NYW5hZ2VtZW50XSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXSk7XG5cbiAgICAgICAgLy8gUm9vdCB1bmRlciBNT0RVTEVTOiBBc3Nlc3NtZW50cyAoQ2FzZXMpXG4gICAgICAgIGNvbnRleHQuYWRkSXRlbXMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IEFYUEFzc2Vzc21lbnRNYW5hZ2VtZW50TWVudUtleXMuQ2FzZXMsXG4gICAgICAgICAgICAgICAgcHJpb3JpdHk6IDkwMTAsXG4gICAgICAgICAgICAgICAgdGV4dDogJ0BnZW5lcmFsOm1lbnVzLmFzc2Vzc21lbnRzLnRpdGxlJyxcbiAgICAgICAgICAgICAgICBpY29uOiBSb290Q29uZmlnLmVudGl0aWVzLmFzc2Vzc21lbnRDYXNlLmljb24sXG4gICAgICAgICAgICAgICAgcGF0aDogdGhpcy5lbnRpdHlTZXJ2aWNlLndpdGhFbnRpdHkobW9kdWxlLm5hbWUsIFJvb3RDb25maWcuZW50aXRpZXMuYXNzZXNzbWVudENhc2UubmFtZSkuY3JlYXRlUGF0aCgpLFxuICAgICAgICAgICAgICAgIHBvbGljeToge1xuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlczogW21vZHVsZS5uYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnM6IFtBWE1Bc3Nlc3NtZW50TWFuYWdlbWVudFBlcm1pc3Npb25LZXlzLkFzc2Vzc21lbnRNYW5hZ2VtZW50LkNhc2UuTWFuYWdlbWVudF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgIH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { AXMAssessmentManagementPermissionKeys } from './permission.keys';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Permission Provider ----\nexport class AXMAssessmentManagementPermissionDefinitionProvider {\n async define(context) {\n const keys = AXMAssessmentManagementPermissionKeys.AssessmentManagement;\n // I18n path constants for cleaner code\n const MODULE_PERMISSIONS = '@assessment-management:module.permissions';\n const QUESTION_BANK_PERMISSIONS = '@assessment-management:question-bank.permissions.question-bank';\n const QUESTIONNAIRE_PERMISSIONS = '@assessment-management:questionnaires.permissions.questionnaire';\n const CASE_PERMISSIONS = '@assessment-management:cases.permissions.assessment-case';\n const SESSION_PERMISSIONS = '@assessment-management:sessions.permissions.assessment-session';\n context\n .addGroup(RootConfig.module.name, `${MODULE_PERMISSIONS}.title`, `${MODULE_PERMISSIONS}.description`)\n // QuestionBank Permission\n .addPermission(keys.QuestionBank, `${QUESTION_BANK_PERMISSIONS}.management.title`, `${QUESTION_BANK_PERMISSIONS}.management.description`)\n .endPermission()\n // Questionnaire Permissions\n .addPermission(keys.Questionnaire.Management, `${QUESTIONNAIRE_PERMISSIONS}.management.title`, `${QUESTIONNAIRE_PERMISSIONS}.management.description`)\n .addChild(keys.Questionnaire.Create, `${QUESTIONNAIRE_PERMISSIONS}.create.title`, `${QUESTIONNAIRE_PERMISSIONS}.create.description`)\n .addChild(keys.Questionnaire.Edit, `${QUESTIONNAIRE_PERMISSIONS}.edit.title`, `${QUESTIONNAIRE_PERMISSIONS}.edit.description`)\n .addChild(keys.Questionnaire.Delete, `${QUESTIONNAIRE_PERMISSIONS}.delete.title`, `${QUESTIONNAIRE_PERMISSIONS}.delete.description`)\n .endPermission()\n // AssessmentCase Permissions\n .addPermission(keys.Case.Management, `${CASE_PERMISSIONS}.management.title`, `${CASE_PERMISSIONS}.management.description`)\n .addChild(keys.Case.Create, `${CASE_PERMISSIONS}.create.title`, `${CASE_PERMISSIONS}.create.description`)\n .addChild(keys.Case.Edit, `${CASE_PERMISSIONS}.edit.title`, `${CASE_PERMISSIONS}.edit.description`)\n .addChild(keys.Case.Delete, `${CASE_PERMISSIONS}.delete.title`, `${CASE_PERMISSIONS}.delete.description`)\n .endPermission()\n // AssessmentSession Permissions\n .addPermission(keys.Session.Management, `${SESSION_PERMISSIONS}.management.title`, `${SESSION_PERMISSIONS}.management.description`)\n .addChild(keys.Session.Create, `${SESSION_PERMISSIONS}.create.title`, `${SESSION_PERMISSIONS}.create.description`)\n .addChild(keys.Session.Edit, `${SESSION_PERMISSIONS}.edit.title`, `${SESSION_PERMISSIONS}.edit.description`)\n .addChild(keys.Session.Delete, `${SESSION_PERMISSIONS}.delete.title`, `${SESSION_PERMISSIONS}.delete.description`)\n .endPermission()\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentManagementPermissionDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentManagementPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentManagementPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL3Blcm1pc3Npb24tZGVmaW5pdGlvbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRXJDLFlBQVk7QUFFWiwyQ0FBMkM7QUFHM0MsTUFBTSxPQUFPLG1EQUFtRDtJQUM5RCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQStDO1FBQzFELE1BQU0sSUFBSSxHQUFHLHFDQUFxQyxDQUFDLG9CQUFvQixDQUFDO1FBRXhFLHVDQUF1QztRQUN2QyxNQUFNLGtCQUFrQixHQUFHLDJDQUEyQyxDQUFDO1FBQ3ZFLE1BQU0seUJBQXlCLEdBQUcsZ0VBQWdFLENBQUM7UUFDbkcsTUFBTSx5QkFBeUIsR0FBRyxpRUFBaUUsQ0FBQztRQUNwRyxNQUFNLGdCQUFnQixHQUFHLDBEQUEwRCxDQUFDO1FBQ3BGLE1BQU0sbUJBQW1CLEdBQUcsZ0VBQWdFLENBQUM7UUFFN0YsT0FBTzthQUNKLFFBQVEsQ0FDUCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFDdEIsR0FBRyxrQkFBa0IsUUFBUSxFQUM3QixHQUFHLGtCQUFrQixjQUFjLENBQ3BDO1lBRUQsMEJBQTBCO2FBQ3pCLGFBQWEsQ0FDWixJQUFJLENBQUMsWUFBWSxFQUNqQixHQUFHLHlCQUF5QixtQkFBbUIsRUFDL0MsR0FBRyx5QkFBeUIseUJBQXlCLENBQ3REO2FBQ0EsYUFBYSxFQUFFO1lBRWhCLDRCQUE0QjthQUMzQixhQUFhLENBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQzdCLEdBQUcseUJBQXlCLG1CQUFtQixFQUMvQyxHQUFHLHlCQUF5Qix5QkFBeUIsQ0FDdEQ7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQ3pCLEdBQUcseUJBQXlCLGVBQWUsRUFDM0MsR0FBRyx5QkFBeUIscUJBQXFCLENBQ2xEO2FBQ0EsUUFBUSxDQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUN2QixHQUFHLHlCQUF5QixhQUFhLEVBQ3pDLEdBQUcseUJBQXlCLG1CQUFtQixDQUNoRDthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFDekIsR0FBRyx5QkFBeUIsZUFBZSxFQUMzQyxHQUFHLHlCQUF5QixxQkFBcUIsQ0FDbEQ7YUFDQSxhQUFhLEVBQUU7WUFFaEIsNkJBQTZCO2FBQzVCLGFBQWEsQ0FDWixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFDcEIsR0FBRyxnQkFBZ0IsbUJBQW1CLEVBQ3RDLEdBQUcsZ0JBQWdCLHlCQUF5QixDQUM3QzthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFDaEIsR0FBRyxnQkFBZ0IsZUFBZSxFQUNsQyxHQUFHLGdCQUFnQixxQkFBcUIsQ0FDekM7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQ2QsR0FBRyxnQkFBZ0IsYUFBYSxFQUNoQyxHQUFHLGdCQUFnQixtQkFBbUIsQ0FDdkM7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQ2hCLEdBQUcsZ0JBQWdCLGVBQWUsRUFDbEMsR0FBRyxnQkFBZ0IscUJBQXFCLENBQ3pDO2FBQ0EsYUFBYSxFQUFFO1lBRWhCLGdDQUFnQzthQUMvQixhQUFhLENBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQ3ZCLEdBQUcsbUJBQW1CLG1CQUFtQixFQUN6QyxHQUFHLG1CQUFtQix5QkFBeUIsQ0FDaEQ7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQ25CLEdBQUcsbUJBQW1CLGVBQWUsRUFDckMsR0FBRyxtQkFBbUIscUJBQXFCLENBQzVDO2FBQ0EsUUFBUSxDQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUNqQixHQUFHLG1CQUFtQixhQUFhLEVBQ25DLEdBQUcsbUJBQW1CLG1CQUFtQixDQUMxQzthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFDbkIsR0FBRyxtQkFBbUIsZUFBZSxFQUNyQyxHQUFHLG1CQUFtQixxQkFBcUIsQ0FDNUM7YUFDQSxhQUFhLEVBQUU7YUFFZixRQUFRLEVBQUUsQ0FBQztJQUNoQixDQUFDOytHQWhHVSxtREFBbUQ7bUhBQW5ELG1EQUFtRDs7NEZBQW5ELG1EQUFtRDtrQkFEL0QsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciwgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRQZXJtaXNzaW9uS2V5cyB9IGZyb20gJy4vcGVybWlzc2lvbi5rZXlzJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgUGVybWlzc2lvbiBQcm92aWRlciAgIC0tLS1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50UGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIge1xuICBhc3luYyBkZWZpbmUoY29udGV4dDogQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlckNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXlzID0gQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRQZXJtaXNzaW9uS2V5cy5Bc3Nlc3NtZW50TWFuYWdlbWVudDtcblxuICAgIC8vIEkxOG4gcGF0aCBjb25zdGFudHMgZm9yIGNsZWFuZXIgY29kZVxuICAgIGNvbnN0IE1PRFVMRV9QRVJNSVNTSU9OUyA9ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50Om1vZHVsZS5wZXJtaXNzaW9ucyc7XG4gICAgY29uc3QgUVVFU1RJT05fQkFOS19QRVJNSVNTSU9OUyA9ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9uLWJhbmsucGVybWlzc2lvbnMucXVlc3Rpb24tYmFuayc7XG4gICAgY29uc3QgUVVFU1RJT05OQUlSRV9QRVJNSVNTSU9OUyA9ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLnBlcm1pc3Npb25zLnF1ZXN0aW9ubmFpcmUnO1xuICAgIGNvbnN0IENBU0VfUEVSTUlTU0lPTlMgPSAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpjYXNlcy5wZXJtaXNzaW9ucy5hc3Nlc3NtZW50LWNhc2UnO1xuICAgIGNvbnN0IFNFU1NJT05fUEVSTUlTU0lPTlMgPSAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpzZXNzaW9ucy5wZXJtaXNzaW9ucy5hc3Nlc3NtZW50LXNlc3Npb24nO1xuXG4gICAgY29udGV4dFxuICAgICAgLmFkZEdyb3VwKFxuICAgICAgICBSb290Q29uZmlnLm1vZHVsZS5uYW1lLFxuICAgICAgICBgJHtNT0RVTEVfUEVSTUlTU0lPTlN9LnRpdGxlYCxcbiAgICAgICAgYCR7TU9EVUxFX1BFUk1JU1NJT05TfS5kZXNjcmlwdGlvbmBcbiAgICAgIClcblxuICAgICAgLy8gUXVlc3Rpb25CYW5rIFBlcm1pc3Npb25cbiAgICAgIC5hZGRQZXJtaXNzaW9uKFxuICAgICAgICBrZXlzLlF1ZXN0aW9uQmFuayxcbiAgICAgICAgYCR7UVVFU1RJT05fQkFOS19QRVJNSVNTSU9OU30ubWFuYWdlbWVudC50aXRsZWAsXG4gICAgICAgIGAke1FVRVNUSU9OX0JBTktfUEVSTUlTU0lPTlN9Lm1hbmFnZW1lbnQuZGVzY3JpcHRpb25gXG4gICAgICApXG4gICAgICAuZW5kUGVybWlzc2lvbigpXG5cbiAgICAgIC8vIFF1ZXN0aW9ubmFpcmUgUGVybWlzc2lvbnNcbiAgICAgIC5hZGRQZXJtaXNzaW9uKFxuICAgICAgICBrZXlzLlF1ZXN0aW9ubmFpcmUuTWFuYWdlbWVudCxcbiAgICAgICAgYCR7UVVFU1RJT05OQUlSRV9QRVJNSVNTSU9OU30ubWFuYWdlbWVudC50aXRsZWAsXG4gICAgICAgIGAke1FVRVNUSU9OTkFJUkVfUEVSTUlTU0lPTlN9Lm1hbmFnZW1lbnQuZGVzY3JpcHRpb25gXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuUXVlc3Rpb25uYWlyZS5DcmVhdGUsXG4gICAgICAgIGAke1FVRVNUSU9OTkFJUkVfUEVSTUlTU0lPTlN9LmNyZWF0ZS50aXRsZWAsXG4gICAgICAgIGAke1FVRVNUSU9OTkFJUkVfUEVSTUlTU0lPTlN9LmNyZWF0ZS5kZXNjcmlwdGlvbmBcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5RdWVzdGlvbm5haXJlLkVkaXQsXG4gICAgICAgIGAke1FVRVNUSU9OTkFJUkVfUEVSTUlTU0lPTlN9LmVkaXQudGl0bGVgLFxuICAgICAgICBgJHtRVUVTVElPTk5BSVJFX1BFUk1JU1NJT05TfS5lZGl0LmRlc2NyaXB0aW9uYFxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLlF1ZXN0aW9ubmFpcmUuRGVsZXRlLFxuICAgICAgICBgJHtRVUVTVElPTk5BSVJFX1BFUk1JU1NJT05TfS5kZWxldGUudGl0bGVgLFxuICAgICAgICBgJHtRVUVTVElPTk5BSVJFX1BFUk1JU1NJT05TfS5kZWxldGUuZGVzY3JpcHRpb25gXG4gICAgICApXG4gICAgICAuZW5kUGVybWlzc2lvbigpXG5cbiAgICAgIC8vIEFzc2Vzc21lbnRDYXNlIFBlcm1pc3Npb25zXG4gICAgICAuYWRkUGVybWlzc2lvbihcbiAgICAgICAga2V5cy5DYXNlLk1hbmFnZW1lbnQsXG4gICAgICAgIGAke0NBU0VfUEVSTUlTU0lPTlN9Lm1hbmFnZW1lbnQudGl0bGVgLFxuICAgICAgICBgJHtDQVNFX1BFUk1JU1NJT05TfS5tYW5hZ2VtZW50LmRlc2NyaXB0aW9uYFxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLkNhc2UuQ3JlYXRlLFxuICAgICAgICBgJHtDQVNFX1BFUk1JU1NJT05TfS5jcmVhdGUudGl0bGVgLFxuICAgICAgICBgJHtDQVNFX1BFUk1JU1NJT05TfS5jcmVhdGUuZGVzY3JpcHRpb25gXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuQ2FzZS5FZGl0LFxuICAgICAgICBgJHtDQVNFX1BFUk1JU1NJT05TfS5lZGl0LnRpdGxlYCxcbiAgICAgICAgYCR7Q0FTRV9QRVJNSVNTSU9OU30uZWRpdC5kZXNjcmlwdGlvbmBcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5DYXNlLkRlbGV0ZSxcbiAgICAgICAgYCR7Q0FTRV9QRVJNSVNTSU9OU30uZGVsZXRlLnRpdGxlYCxcbiAgICAgICAgYCR7Q0FTRV9QRVJNSVNTSU9OU30uZGVsZXRlLmRlc2NyaXB0aW9uYFxuICAgICAgKVxuICAgICAgLmVuZFBlcm1pc3Npb24oKVxuXG4gICAgICAvLyBBc3Nlc3NtZW50U2Vzc2lvbiBQZXJtaXNzaW9uc1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuU2Vzc2lvbi5NYW5hZ2VtZW50LFxuICAgICAgICBgJHtTRVNTSU9OX1BFUk1JU1NJT05TfS5tYW5hZ2VtZW50LnRpdGxlYCxcbiAgICAgICAgYCR7U0VTU0lPTl9QRVJNSVNTSU9OU30ubWFuYWdlbWVudC5kZXNjcmlwdGlvbmBcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5TZXNzaW9uLkNyZWF0ZSxcbiAgICAgICAgYCR7U0VTU0lPTl9QRVJNSVNTSU9OU30uY3JlYXRlLnRpdGxlYCxcbiAgICAgICAgYCR7U0VTU0lPTl9QRVJNSVNTSU9OU30uY3JlYXRlLmRlc2NyaXB0aW9uYFxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLlNlc3Npb24uRWRpdCxcbiAgICAgICAgYCR7U0VTU0lPTl9QRVJNSVNTSU9OU30uZWRpdC50aXRsZWAsXG4gICAgICAgIGAke1NFU1NJT05fUEVSTUlTU0lPTlN9LmVkaXQuZGVzY3JpcHRpb25gXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuU2Vzc2lvbi5EZWxldGUsXG4gICAgICAgIGAke1NFU1NJT05fUEVSTUlTU0lPTlN9LmRlbGV0ZS50aXRsZWAsXG4gICAgICAgIGAke1NFU1NJT05fUEVSTUlTU0lPTlN9LmRlbGV0ZS5kZXNjcmlwdGlvbmBcbiAgICAgIClcbiAgICAgIC5lbmRQZXJtaXNzaW9uKClcblxuICAgICAgLmVuZEdyb3VwKCk7XG4gIH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nimport { AXPSearchCommandProvider } from '@acorex/platform/common';\nimport { RootConfig } from './const';\n//#endregion\n//#region ---- Search Provider ----\nexport class AXMAssessmentManagementSearchCommandProvider extends AXPSearchCommandProvider {\n constructor() {\n super(...arguments);\n this.commands = [\n {\n group: 'entity',\n title: 'New Questionnaire',\n icon: RootConfig.entities.questionnaire.icon,\n description: 'Create a new assessment questionnaire, survey, checklist, or test.',\n command: {\n name: 'create-entity',\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}`,\n },\n },\n },\n {\n group: 'entity',\n title: 'New Question',\n icon: RootConfig.entities.questionBankItem.icon,\n description: 'Create a new question for the question bank.',\n command: {\n name: 'create-entity',\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.questionBankItem.name}`,\n },\n },\n },\n {\n group: 'entity',\n title: 'New Assessment Case',\n icon: RootConfig.entities.assessmentCase.icon,\n description: 'Assign a questionnaire to a target entity for a purpose.',\n command: {\n name: 'create-entity',\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}`,\n },\n },\n },\n {\n group: 'entity',\n title: 'New Assessment Session',\n icon: RootConfig.entities.assessmentSession.icon,\n description: 'Create a new assessment session for filling out a questionnaire.',\n command: {\n name: 'create-entity',\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}`,\n },\n },\n },\n ];\n }\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL3NlYXJjaC5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLHdCQUF3QixFQUFtQixNQUFNLHlCQUF5QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFckMsWUFBWTtBQUVaLHVDQUF1QztBQUV2QyxNQUFNLE9BQU8sNENBQTZDLFNBQVEsd0JBQXdCO0lBQTFGOztRQUNJLGFBQVEsR0FBc0I7WUFDMUI7Z0JBQ0ksS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUk7Z0JBQzVDLFdBQVcsRUFBRSxvRUFBb0U7Z0JBQ2pGLE9BQU8sRUFBRTtvQkFDTCxJQUFJLEVBQUUsZUFBZTtvQkFDckIsT0FBTyxFQUFFO3dCQUNMLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtxQkFDaEY7aUJBQ0o7YUFDSjtZQUNEO2dCQUNJLEtBQUssRUFBRSxRQUFRO2dCQUNmLEtBQUssRUFBRSxjQUFjO2dCQUNyQixJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJO2dCQUMvQyxXQUFXLEVBQUUsOENBQThDO2dCQUMzRCxPQUFPLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDTCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtxQkFDbkY7aUJBQ0o7YUFDSjtZQUNEO2dCQUNJLEtBQUssRUFBRSxRQUFRO2dCQUNmLEtBQUssRUFBRSxxQkFBcUI7Z0JBQzVCLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJO2dCQUM3QyxXQUFXLEVBQUUsMERBQTBEO2dCQUN2RSxPQUFPLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDTCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUU7cUJBQ2pGO2lCQUNKO2FBQ0o7WUFDRDtnQkFDSSxLQUFLLEVBQUUsUUFBUTtnQkFDZixLQUFLLEVBQUUsd0JBQXdCO2dCQUMvQixJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNoRCxXQUFXLEVBQUUsa0VBQWtFO2dCQUMvRSxPQUFPLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLE9BQU8sRUFBRTt3QkFDTCxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRTtxQkFDcEY7aUJBQ0o7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDO0NBQUE7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBTZWFyY2hDb21tYW5kUHJvdmlkZXIsIEFYUFNlYXJjaFJlc3VsdCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgU2VhcmNoIFByb3ZpZGVyICAgLS0tLVxuXG5leHBvcnQgY2xhc3MgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRTZWFyY2hDb21tYW5kUHJvdmlkZXIgZXh0ZW5kcyBBWFBTZWFyY2hDb21tYW5kUHJvdmlkZXIge1xuICAgIGNvbW1hbmRzOiBBWFBTZWFyY2hSZXN1bHRbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZ3JvdXA6ICdlbnRpdHknLFxuICAgICAgICAgICAgdGl0bGU6ICdOZXcgUXVlc3Rpb25uYWlyZScsXG4gICAgICAgICAgICBpY29uOiBSb290Q29uZmlnLmVudGl0aWVzLnF1ZXN0aW9ubmFpcmUuaWNvbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQ3JlYXRlIGEgbmV3IGFzc2Vzc21lbnQgcXVlc3Rpb25uYWlyZSwgc3VydmV5LCBjaGVja2xpc3QsIG9yIHRlc3QuJyxcbiAgICAgICAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnY3JlYXRlLWVudGl0eScsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbm5haXJlLm5hbWV9YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgZ3JvdXA6ICdlbnRpdHknLFxuICAgICAgICAgICAgdGl0bGU6ICdOZXcgUXVlc3Rpb24nLFxuICAgICAgICAgICAgaWNvbjogUm9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbkJhbmtJdGVtLmljb24sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0NyZWF0ZSBhIG5ldyBxdWVzdGlvbiBmb3IgdGhlIHF1ZXN0aW9uIGJhbmsuJyxcbiAgICAgICAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnY3JlYXRlLWVudGl0eScsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBlbnRpdHk6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbkJhbmtJdGVtLm5hbWV9YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgZ3JvdXA6ICdlbnRpdHknLFxuICAgICAgICAgICAgdGl0bGU6ICdOZXcgQXNzZXNzbWVudCBDYXNlJyxcbiAgICAgICAgICAgIGljb246IFJvb3RDb25maWcuZW50aXRpZXMuYXNzZXNzbWVudENhc2UuaWNvbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQXNzaWduIGEgcXVlc3Rpb25uYWlyZSB0byBhIHRhcmdldCBlbnRpdHkgZm9yIGEgcHVycG9zZS4nLFxuICAgICAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjcmVhdGUtZW50aXR5JyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIGVudGl0eTogYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLmFzc2Vzc21lbnRDYXNlLm5hbWV9YCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgZ3JvdXA6ICdlbnRpdHknLFxuICAgICAgICAgICAgdGl0bGU6ICdOZXcgQXNzZXNzbWVudCBTZXNzaW9uJyxcbiAgICAgICAgICAgIGljb246IFJvb3RDb25maWcuZW50aXRpZXMuYXNzZXNzbWVudFNlc3Npb24uaWNvbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQ3JlYXRlIGEgbmV3IGFzc2Vzc21lbnQgc2Vzc2lvbiBmb3IgZmlsbGluZyBvdXQgYSBxdWVzdGlvbm5haXJlLicsXG4gICAgICAgICAgICBjb21tYW5kOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2NyZWF0ZS1lbnRpdHknLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5OiBgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMuYXNzZXNzbWVudFNlc3Npb24ubmFtZX1gLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF07XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { RootConfig } from './const';\n//#endregion\n//#region ---- Manifest Definition ----\n/**\n * Assessment Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const AssessmentManagementManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n required: false,\n // Module dependencies (optional)\n};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvbWFuaWZlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFckMsWUFBWTtBQUVaLDJDQUEyQztBQUUzQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBc0I7SUFDN0QsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSTtJQUM1QixPQUFPLEVBQUUsT0FBTztJQUNoQixLQUFLLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLO0lBQzlCLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7SUFDNUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSTtJQUM1QixRQUFRLEVBQUUsS0FBSztJQUVmLGlDQUFpQztDQUNsQyxDQUFDO0FBRUYsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQTW9kdWxlTWFuaWZlc3QgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4vY29uc3QnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBNYW5pZmVzdCBEZWZpbml0aW9uICAgLS0tLVxuXG4vKipcbiAqIEFzc2Vzc21lbnQgTWFuYWdlbWVudCBNb2R1bGUgTWFuaWZlc3QuXG4gKiBEZWZpbmVzIG1vZHVsZSBtZXRhZGF0YSwgZmVhdHVyZXMsIGFuZCBwcm92aWRlciByZWZlcmVuY2VzLlxuICovXG5leHBvcnQgY29uc3QgQXNzZXNzbWVudE1hbmFnZW1lbnRNYW5pZmVzdDogQVhQTW9kdWxlTWFuaWZlc3QgPSB7XG4gIG5hbWU6IFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gIHZlcnNpb246ICcxLjAuMCcsXG4gIHRpdGxlOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgaWNvbjogUm9vdENvbmZpZy5tb2R1bGUuaWNvbixcbiAgaTE4bjogUm9vdENvbmZpZy5jb25maWcuaTE4bixcbiAgcmVxdWlyZWQ6IGZhbHNlLFxuXG4gIC8vIE1vZHVsZSBkZXBlbmRlbmNpZXMgKG9wdGlvbmFsKVxufTtcblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nimport { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Service ----\nexport class AXMAssessmentCaseService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMAssessmentCaseServiceImpl extends AXMAssessmentCaseService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentCaseServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentCaseServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentCaseServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1jYXNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvYXNzZXNzbWVudC1jYXNlL2Fzc2Vzc21lbnQtY2FzZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBR3pDLFlBQVk7QUFFWiwrQkFBK0I7QUFFL0IsTUFBTSxPQUFnQix3QkFBeUIsU0FBUSx3QkFHdEQ7Q0FBSTtBQUdMLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSx3QkFBd0I7SUFDeEU7UUFDRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7K0dBSFUsNEJBQTRCO21IQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEFYTUVudGl0eUNydWRTZXJ2aWNlSW1wbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRBc3Nlc3NtZW50Q2FzZUVudGl0eU1vZGVsIH0gZnJvbSAnLi9hc3Nlc3NtZW50LWNhc2UudHlwZXMnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlICAgLS0tLVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNQXNzZXNzbWVudENhc2VTZXJ2aWNlIGV4dGVuZHMgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPFxuICBzdHJpbmcsXG4gIEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50QXNzZXNzbWVudENhc2VFbnRpdHlNb2RlbFxuPiB7IH1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTUFzc2Vzc21lbnRDYXNlU2VydmljZUltcGwgZXh0ZW5kcyBBWE1Bc3Nlc3NtZW50Q2FzZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMuYXNzZXNzbWVudENhc2UubmFtZX1gKTtcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuXG4iXX0=","//#region ---- Imports ----\nimport { NgModule } from '@angular/core';\nimport { AXMAssessmentCaseService, AXMAssessmentCaseServiceImpl } from './assessment-case.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Module ----\nexport class AXMAssessmentCaseEntityModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentCaseEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentCaseEntityModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentCaseEntityModule, providers: [\n {\n provide: AXMAssessmentCaseService,\n useClass: AXMAssessmentCaseServiceImpl,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentCaseEntityModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n {\n provide: AXMAssessmentCaseService,\n useClass: AXMAssessmentCaseServiceImpl,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1jYXNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9hc3Nlc3NtZW50LWNhc2UvYXNzZXNzbWVudC1jYXNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFbkcsWUFBWTtBQUVaLDhCQUE4QjtBQVU5QixNQUFNLE9BQU8sNkJBQTZCOytHQUE3Qiw2QkFBNkI7Z0hBQTdCLDZCQUE2QjtnSEFBN0IsNkJBQTZCLGFBUDdCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLHdCQUF3QjtnQkFDakMsUUFBUSxFQUFFLDRCQUE0QjthQUN2QztTQUNGOzs0RkFFVSw2QkFBNkI7a0JBUnpDLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSx3QkFBd0I7NEJBQ2pDLFFBQVEsRUFBRSw0QkFBNEI7eUJBQ3ZDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNQXNzZXNzbWVudENhc2VTZXJ2aWNlLCBBWE1Bc3Nlc3NtZW50Q2FzZVNlcnZpY2VJbXBsIH0gZnJvbSAnLi9hc3Nlc3NtZW50LWNhc2Uuc2VydmljZSc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE1vZHVsZSAgIC0tLS1cblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNQXNzZXNzbWVudENhc2VTZXJ2aWNlLFxuICAgICAgdXNlQ2xhc3M6IEFYTUFzc2Vzc21lbnRDYXNlU2VydmljZUltcGwsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQXNzZXNzbWVudENhc2VFbnRpdHlNb2R1bGUgeyB9XG5cbi8vI2VuZHJlZ2lvblxuXG5cbiJdfQ==","//#region ---- Imports ----\nimport { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Service ----\nexport class AXMAssessmentSessionService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMAssessmentSessionServiceImpl extends AXMAssessmentSessionService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentSessionServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentSessionServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentSessionServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1zZXNzaW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvYXNzZXNzbWVudC1zZXNzaW9uL2Fzc2Vzc21lbnQtc2Vzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBR3pDLFlBQVk7QUFFWiwrQkFBK0I7QUFFL0IsTUFBTSxPQUFnQiwyQkFBNEIsU0FBUSx3QkFHekQ7Q0FBSTtBQUdMLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSwyQkFBMkI7SUFDOUU7UUFDRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQzsrR0FIVSwrQkFBK0I7bUhBQS9CLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFEM0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Bc3Nlc3NtZW50TWFuYWdlbWVudEFzc2Vzc21lbnRTZXNzaW9uRW50aXR5TW9kZWwgfSBmcm9tICcuL2Fzc2Vzc21lbnQtc2Vzc2lvbi50eXBlcyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFNlcnZpY2UgICAtLS0tXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWE1Bc3Nlc3NtZW50U2Vzc2lvblNlcnZpY2UgZXh0ZW5kcyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGw8XG4gIHN0cmluZyxcbiAgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRBc3Nlc3NtZW50U2Vzc2lvbkVudGl0eU1vZGVsXG4+IHsgfVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNQXNzZXNzbWVudFNlc3Npb25TZXJ2aWNlSW1wbCBleHRlbmRzIEFYTUFzc2Vzc21lbnRTZXNzaW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy5hc3Nlc3NtZW50U2Vzc2lvbi5uYW1lfWApO1xuICB9XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { NgModule } from '@angular/core';\nimport { AXMAssessmentSessionService, AXMAssessmentSessionServiceImpl } from './assessment-session.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Module ----\nexport class AXMAssessmentSessionEntityModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentSessionEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentSessionEntityModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentSessionEntityModule, providers: [\n {\n provide: AXMAssessmentSessionService,\n useClass: AXMAssessmentSessionServiceImpl,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentSessionEntityModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n {\n provide: AXMAssessmentSessionService,\n useClass: AXMAssessmentSessionServiceImpl,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1zZXNzaW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9hc3Nlc3NtZW50LXNlc3Npb24vYXNzZXNzbWVudC1zZXNzaW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFNUcsWUFBWTtBQUVaLDhCQUE4QjtBQVU5QixNQUFNLE9BQU8sZ0NBQWdDOytHQUFoQyxnQ0FBZ0M7Z0hBQWhDLGdDQUFnQztnSEFBaEMsZ0NBQWdDLGFBUGhDO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsUUFBUSxFQUFFLCtCQUErQjthQUMxQztTQUNGOzs0RkFFVSxnQ0FBZ0M7a0JBUjVDLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSwyQkFBMkI7NEJBQ3BDLFFBQVEsRUFBRSwrQkFBK0I7eUJBQzFDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNQXNzZXNzbWVudFNlc3Npb25TZXJ2aWNlLCBBWE1Bc3Nlc3NtZW50U2Vzc2lvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9hc3Nlc3NtZW50LXNlc3Npb24uc2VydmljZSc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE1vZHVsZSAgIC0tLS1cblxuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNQXNzZXNzbWVudFNlc3Npb25TZXJ2aWNlLFxuICAgICAgdXNlQ2xhc3M6IEFYTUFzc2Vzc21lbnRTZXNzaW9uU2VydmljZUltcGwsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQXNzZXNzbWVudFNlc3Npb25FbnRpdHlNb2R1bGUgeyB9XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Service ----\nexport class AXMQuestionBankItemService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMQuestionBankItemServiceImpl extends AXMQuestionBankItemService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.questionBankItem.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionBankItemServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionBankItemServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionBankItemServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tYmFuay1pdGVtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvcXVlc3Rpb24tYmFuay1pdGVtL3F1ZXN0aW9uLWJhbmstaXRlbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBR3pDLFlBQVk7QUFFWiwrQkFBK0I7QUFFL0IsTUFBTSxPQUFnQiwwQkFBMkIsU0FBUSx3QkFHeEQ7Q0FBSTtBQUdMLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSwwQkFBMEI7SUFDMUU7UUFDSSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzsrR0FIUSw4QkFBOEI7bUhBQTlCLDhCQUE4Qjs7NEZBQTlCLDhCQUE4QjtrQkFEMUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1Bc3Nlc3NtZW50TWFuYWdlbWVudFF1ZXN0aW9uQmFua0l0ZW1FbnRpdHlNb2RlbCB9IGZyb20gJy4vcXVlc3Rpb24tYmFuay1pdGVtLnR5cGVzJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgU2VydmljZSAgIC0tLS1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYTVF1ZXN0aW9uQmFua0l0ZW1TZXJ2aWNlIGV4dGVuZHMgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPFxuICAgIHN0cmluZyxcbiAgICBBWE1Bc3Nlc3NtZW50TWFuYWdlbWVudFF1ZXN0aW9uQmFua0l0ZW1FbnRpdHlNb2RlbFxuPiB7IH1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTVF1ZXN0aW9uQmFua0l0ZW1TZXJ2aWNlSW1wbCBleHRlbmRzIEFYTVF1ZXN0aW9uQmFua0l0ZW1TZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLnF1ZXN0aW9uQmFua0l0ZW0ubmFtZX1gKTtcbiAgICB9XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { NgModule } from '@angular/core';\nimport { AXMQuestionBankItemServiceImpl, AXMQuestionBankItemService } from './question-bank-item.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Module ----\nexport class AXMQuestionBankItemEntityModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionBankItemEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionBankItemEntityModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionBankItemEntityModule, providers: [\n {\n provide: AXMQuestionBankItemService,\n useClass: AXMQuestionBankItemServiceImpl,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionBankItemEntityModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n {\n provide: AXMQuestionBankItemService,\n useClass: AXMQuestionBankItemServiceImpl,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tYmFuay1pdGVtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9xdWVzdGlvbi1iYW5rLWl0ZW0vcXVlc3Rpb24tYmFuay1pdGVtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFMUcsWUFBWTtBQUVaLDhCQUE4QjtBQVU5QixNQUFNLE9BQU8sK0JBQStCOytHQUEvQiwrQkFBK0I7Z0hBQS9CLCtCQUErQjtnSEFBL0IsK0JBQStCLGFBUDdCO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLDBCQUEwQjtnQkFDbkMsUUFBUSxFQUFFLDhCQUE4QjthQUMzQztTQUNKOzs0RkFFUSwrQkFBK0I7a0JBUjNDLFFBQVE7bUJBQUM7b0JBQ04sU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFFBQVEsRUFBRSw4QkFBOEI7eUJBQzNDO3FCQUNKO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25CYW5rSXRlbVNlcnZpY2VJbXBsLCBBWE1RdWVzdGlvbkJhbmtJdGVtU2VydmljZSB9IGZyb20gJy4vcXVlc3Rpb24tYmFuay1pdGVtLnNlcnZpY2UnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBNb2R1bGUgICAtLS0tXG5cbkBOZ01vZHVsZSh7XG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFYTVF1ZXN0aW9uQmFua0l0ZW1TZXJ2aWNlLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IEFYTVF1ZXN0aW9uQmFua0l0ZW1TZXJ2aWNlSW1wbCxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1RdWVzdGlvbkJhbmtJdGVtRW50aXR5TW9kdWxlIHsgfVxuXG4vLyNlbmRyZWdpb25cblxuIl19","//#region ---- Imports ----\nimport { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Service ----\nexport class AXMQuestionnaireService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMQuestionnaireServiceImpl extends AXMQuestionnaireService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBR3pDLFlBQVk7QUFFWiwrQkFBK0I7QUFFL0IsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSx3QkFHckQ7Q0FBSTtBQUdMLE1BQU0sT0FBTywyQkFBNEIsU0FBUSx1QkFBdUI7SUFDcEU7UUFDSSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7K0dBSFEsMkJBQTJCO21IQUEzQiwyQkFBMkI7OzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEFYTUVudGl0eUNydWRTZXJ2aWNlSW1wbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRRdWVzdGlvbm5haXJlRW50aXR5TW9kZWwgfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUudHlwZXMnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlICAgLS0tLVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNUXVlc3Rpb25uYWlyZVNlcnZpY2UgZXh0ZW5kcyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGw8XG4gICAgc3RyaW5nLFxuICAgIEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50UXVlc3Rpb25uYWlyZUVudGl0eU1vZGVsXG4+IHsgfVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUXVlc3Rpb25uYWlyZVNlcnZpY2VJbXBsIGV4dGVuZHMgQVhNUXVlc3Rpb25uYWlyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMucXVlc3Rpb25uYWlyZS5uYW1lfWApO1xuICAgIH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","import { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '@acorex/platform/layout/widgets';\nexport const AXMQuestionnaireBuilderWidget = {\n name: 'questionnaire-builder-editor',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.title',\n categories: AXP_WIDGETS_EDITOR_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: '@assessment-management:questionnaires.components.questionnaire-builder.description',\n icon: 'fa-light fa-clipboard-list',\n defaultFilterWidgetName: 'string-filter',\n type: 'editor',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./questionnaire-builder-view.component').then((c) => c.AXMQuestionnaireBuilderWidgetViewComponent),\n },\n edit: {\n component: () => import('./questionnaire-builder-edit.component').then((c) => c.AXMQuestionnaireBuilderWidgetEditComponent),\n },\n print: {\n component: () => import('./questionnaire-builder-edit.component').then((c) => c.AXMQuestionnaireBuilderWidgetEditComponent),\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQW1CLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkgsT0FBTyxFQUFFLHNCQUFzQixFQUE2QyxpQkFBaUIsRUFBeUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5SixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBNkQ7SUFDbkcsSUFBSSxFQUFFLDhCQUE4QjtJQUNwQyxLQUFLLEVBQUUsOEVBQThFO0lBQ3JGLFVBQVUsRUFBRSwyQkFBMkI7SUFDdkMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDO0lBQzFDLFdBQVcsRUFBRSxvRkFBb0Y7SUFDakcsSUFBSSxFQUFFLDRCQUE0QjtJQUNsQyx1QkFBdUIsRUFBRSxlQUFlO0lBQ3hDLElBQUksRUFBRSxRQUFRO0lBQ2QsT0FBTyxFQUFFO1FBQ0wsU0FBUyxFQUFFLEtBQUs7S0FDbkI7SUFDRCxVQUFVLEVBQUU7UUFDUixpQkFBaUI7UUFDakIsc0JBQXNCO0tBQ3pCO0lBQ0QsVUFBVSxFQUFFO1FBQ1IsSUFBSSxFQUFFO1lBQ0YsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDO1NBQzlIO1FBQ0QsSUFBSSxFQUFFO1lBQ0YsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDO1NBQzlIO1FBQ0QsS0FBSyxFQUFFO1lBQ0gsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDO1NBQzlIO0tBQ0o7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQX1dJREdFVFNfRURJVE9SX0NBVEVHT1JZLCBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IEFYUF9EQVRBX1BBVEhfUFJPUEVSVFksIEFYUF9ESVNBQkxFRF9QUk9QRVJUWSwgQVhQX0xBQkVMX1BST1BFUlRZLCBBWFBfTkFNRV9QUk9QRVJUWSwgQVhQX1JFQURPTkxZX1BST1BFUlRZIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0cyc7XG5cbmV4cG9ydCBjb25zdCBBWE1RdWVzdGlvbm5haXJlQnVpbGRlcldpZGdldDogQVhQV2lkZ2V0Q29uZmlnPEFYTVF1ZXN0aW9ubmFpcmVCdWlsZGVyV2lkZ2V0Q29uZmlnVHlwZT4gPSB7XG4gICAgbmFtZTogJ3F1ZXN0aW9ubmFpcmUtYnVpbGRlci1lZGl0b3InLFxuICAgIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtYnVpbGRlci50aXRsZScsXG4gICAgY2F0ZWdvcmllczogQVhQX1dJREdFVFNfRURJVE9SX0NBVEVHT1JZLFxuICAgIGdyb3VwczogW0FYUFdpZGdldEdyb3VwRW51bS5VdGlsaXR5V2lkZ2V0XSxcbiAgICBkZXNjcmlwdGlvbjogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLWJ1aWxkZXIuZGVzY3JpcHRpb24nLFxuICAgIGljb246ICdmYS1saWdodCBmYS1jbGlwYm9hcmQtbGlzdCcsXG4gICAgZGVmYXVsdEZpbHRlcldpZGdldE5hbWU6ICdzdHJpbmctZmlsdGVyJyxcbiAgICB0eXBlOiAnZWRpdG9yJyxcbiAgICBvcHRpb25zOiB7XG4gICAgICAgIG5lZWRMYWJlbDogZmFsc2UsXG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgIEFYUF9OQU1FX1BST1BFUlRZLFxuICAgICAgICBBWFBfREFUQV9QQVRIX1BST1BFUlRZLFxuICAgIF0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICB2aWV3OiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9xdWVzdGlvbm5haXJlLWJ1aWxkZXItdmlldy5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYTVF1ZXN0aW9ubmFpcmVCdWlsZGVyV2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXQ6IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci1lZGl0LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNUXVlc3Rpb25uYWlyZUJ1aWxkZXJXaWRnZXRFZGl0Q29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJpbnQ6IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci1lZGl0LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNUXVlc3Rpb25uYWlyZUJ1aWxkZXJXaWRnZXRFZGl0Q29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZXhwb3J0IHR5cGUgQVhNUXVlc3Rpb25uYWlyZUJ1aWxkZXJXaWRnZXRDb25maWdUeXBlID0ge1xuICAgIHR5cGU6ICdlZGl0b3InO1xufTtcblxuIl19","import { NgModule } from '@angular/core';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXMQuestionnaireBuilderWidget } from './questionnaire-builder.config';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\nexport class AXMQuestionnaireBuilderFeatureModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireBuilderFeatureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireBuilderFeatureModule, imports: [i1.AXPWidgetCoreModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireBuilderFeatureModule, imports: [AXPWidgetCoreModule.forChild({\n widgets: [AXMQuestionnaireBuilderWidget],\n })] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireBuilderFeatureModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXPWidgetCoreModule.forChild({\n widgets: [AXMQuestionnaireBuilderWidget],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1idWlsZGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFZL0UsTUFBTSxPQUFPLG9DQUFvQzsrR0FBcEMsb0NBQW9DO2dIQUFwQyxvQ0FBb0M7Z0hBQXBDLG9DQUFvQyxZQVJ6QyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7Z0JBQ3pCLE9BQU8sRUFBRSxDQUFDLDZCQUE2QixDQUFDO2FBQzNDLENBQUM7OzRGQU1HLG9DQUFvQztrQkFWaEQsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsbUJBQW1CLENBQUMsUUFBUSxDQUFDOzRCQUN6QixPQUFPLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQzt5QkFDM0MsQ0FBQztxQkFDTDtvQkFDRCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsU0FBUyxFQUFFLEVBQUU7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlQnVpbGRlcldpZGdldCB9IGZyb20gJy4vcXVlc3Rpb25uYWlyZS1idWlsZGVyLmNvbmZpZyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBBWFBXaWRnZXRDb3JlTW9kdWxlLmZvckNoaWxkKHtcbiAgICAgICAgICAgIHdpZGdldHM6IFtBWE1RdWVzdGlvbm5haXJlQnVpbGRlcldpZGdldF0sXG4gICAgICAgIH0pLFxuICAgIF0sXG4gICAgZXhwb3J0czogW10sXG4gICAgZGVjbGFyYXRpb25zOiBbXSxcbiAgICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1RdWVzdGlvbm5haXJlQnVpbGRlckZlYXR1cmVNb2R1bGUgeyB9XG5cbiJdfQ==","//#region ---- Imports ----\nimport { NgModule } from '@angular/core';\nimport { AXMQuestionnaireServiceImpl, AXMQuestionnaireService } from './questionnaire.service';\nimport { AXMQuestionnaireBuilderFeatureModule } from '../../features/questionnaire-builder/questionnaire-builder.module';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Module ----\nexport class AXMQuestionnaireEntityModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireEntityModule, imports: [AXMQuestionnaireBuilderFeatureModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireEntityModule, providers: [\n {\n provide: AXMQuestionnaireService,\n useClass: AXMQuestionnaireServiceImpl,\n },\n ], imports: [AXMQuestionnaireBuilderFeatureModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireEntityModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXMQuestionnaireBuilderFeatureModule],\n providers: [\n {\n provide: AXMQuestionnaireService,\n useClass: AXMQuestionnaireServiceImpl,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQzs7QUFFekgsWUFBWTtBQUVaLDhCQUE4QjtBQVk5QixNQUFNLE9BQU8sNEJBQTRCOytHQUE1Qiw0QkFBNEI7Z0hBQTVCLDRCQUE0QixZQVQzQixvQ0FBb0M7Z0hBU3JDLDRCQUE0QixhQVIxQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSx1QkFBdUI7Z0JBQ2hDLFFBQVEsRUFBRSwyQkFBMkI7YUFDeEM7U0FFSixZQVBTLG9DQUFvQzs7NEZBU3JDLDRCQUE0QjtrQkFWeEMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQztvQkFDL0MsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSx1QkFBdUI7NEJBQ2hDLFFBQVEsRUFBRSwyQkFBMkI7eUJBQ3hDO3FCQUVKO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVNlcnZpY2VJbXBsLCBBWE1RdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4vcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVCdWlsZGVyRmVhdHVyZU1vZHVsZSB9IGZyb20gJy4uLy4uL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci9xdWVzdGlvbm5haXJlLWJ1aWxkZXIubW9kdWxlJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgTW9kdWxlICAgLS0tLVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtBWE1RdWVzdGlvbm5haXJlQnVpbGRlckZlYXR1cmVNb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBWE1RdWVzdGlvbm5haXJlU2VydmljZSxcbiAgICAgICAgICAgIHVzZUNsYXNzOiBBWE1RdWVzdGlvbm5haXJlU2VydmljZUltcGwsXG4gICAgICAgIH0sXG5cbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1RdWVzdGlvbm5haXJlRW50aXR5TW9kdWxlIHsgfVxuXG4vLyNlbmRyZWdpb25cblxuIl19","import { AXP_WIDGETS_ADVANCE_CATEGORY, AXPWidgetGroupEnum, createBooleanProperty, createSelectProperty, createStringProperty } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP } from '@acorex/platform/layout/widgets';\nexport const AXMQuestionnaireViewerWidget = {\n name: 'questionnaire-viewer',\n title: '@assessment-management:questionnaires.components.questionnaire-viewer.title',\n categories: AXP_WIDGETS_ADVANCE_CATEGORY,\n groups: [AXPWidgetGroupEnum.UtilityWidget],\n description: '@assessment-management:questionnaires.components.questionnaire-viewer.description',\n icon: 'fa-light fa-clipboard-question',\n defaultFilterWidgetName: 'string-filter',\n type: 'view',\n options: {\n needLabel: false,\n },\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n createStringProperty({\n name: 'questionnaireId',\n title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.questionnaire-id.title',\n path: 'options.questionnaireId',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n }),\n createSelectProperty({\n name: 'viewMode',\n title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.title',\n path: 'options.viewMode',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n defaultValue: 'single-page',\n dataSource: [\n { id: 'single-page', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.single-page' },\n { id: 'page-per-group', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-group' },\n { id: 'page-per-question', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.page-per-question' },\n { id: 'side-menu', title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.view-mode.options.side-menu' },\n ],\n }),\n createBooleanProperty({\n name: 'showTimer',\n title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-timer.title',\n path: 'options.showTimer',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n defaultValue: false,\n }),\n createBooleanProperty({\n name: 'showProgressBar',\n title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-progress-bar.title',\n path: 'options.showProgressBar',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n defaultValue: true,\n }),\n createBooleanProperty({\n name: 'showSectionTitles',\n title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-section-titles.title',\n path: 'options.showSectionTitles',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n defaultValue: true,\n }),\n createBooleanProperty({\n name: 'showQuestionNumbers',\n title: '@assessment-management:questionnaires.components.questionnaire-viewer.fields.show-question-numbers.title',\n path: 'options.showQuestionNumbers',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n defaultValue: true,\n }),\n AXP_READONLY_PROPERTY,\n ],\n components: {\n view: {\n component: () => import('./questionnaire-viewer-edit.component').then((c) => c.AXMQuestionnaireViewerWidgetEditComponent),\n },\n edit: {\n component: () => import('./questionnaire-viewer-edit.component').then((c) => c.AXMQuestionnaireViewerWidgetEditComponent),\n },\n print: {\n component: () => import('./questionnaire-viewer-edit.component').then((c) => c.AXMQuestionnaireViewerWidgetEditComponent),\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS12aWV3ZXIuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3F1ZXN0aW9ubmFpcmUtdmlld2VyLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNEJBQTRCLEVBQW1CLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDM0wsT0FBTyxFQUFFLHNCQUFzQixFQUE2QyxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNMLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUE0RDtJQUNqRyxJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLEtBQUssRUFBRSw2RUFBNkU7SUFDcEYsVUFBVSxFQUFFLDRCQUE0QjtJQUN4QyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUM7SUFDMUMsV0FBVyxFQUFFLG1GQUFtRjtJQUNoRyxJQUFJLEVBQUUsZ0NBQWdDO0lBQ3RDLHVCQUF1QixFQUFFLGVBQWU7SUFDeEMsSUFBSSxFQUFFLE1BQU07SUFDWixPQUFPLEVBQUU7UUFDTCxTQUFTLEVBQUUsS0FBSztLQUNuQjtJQUNELFVBQVUsRUFBRTtRQUNSLGlCQUFpQjtRQUNqQixzQkFBc0I7UUFDdEIsb0JBQW9CLENBQUM7WUFDakIsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixLQUFLLEVBQUUscUdBQXFHO1lBQzVHLElBQUksRUFBRSx5QkFBeUI7WUFDL0IsS0FBSyxFQUFFLDJCQUEyQjtTQUNyQyxDQUFDO1FBQ0Ysb0JBQW9CLENBQUM7WUFDakIsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLDhGQUE4RjtZQUNyRyxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLEtBQUssRUFBRSwyQkFBMkI7WUFDbEMsWUFBWSxFQUFFLGFBQWE7WUFDM0IsVUFBVSxFQUFFO2dCQUNSLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsNEdBQTRHLEVBQUU7Z0JBQzFJLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSwrR0FBK0csRUFBRTtnQkFDaEosRUFBRSxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLGtIQUFrSCxFQUFFO2dCQUN0SixFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLDBHQUEwRyxFQUFFO2FBQ3pJO1NBQ0osQ0FBQztRQUNGLHFCQUFxQixDQUFDO1lBQ2xCLElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRSwrRkFBK0Y7WUFDdEcsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixLQUFLLEVBQUUsMkJBQTJCO1lBQ2xDLFlBQVksRUFBRSxLQUFLO1NBQ3RCLENBQUM7UUFDRixxQkFBcUIsQ0FBQztZQUNsQixJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLEtBQUssRUFBRSxzR0FBc0c7WUFDN0csSUFBSSxFQUFFLHlCQUF5QjtZQUMvQixLQUFLLEVBQUUsMkJBQTJCO1lBQ2xDLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixxQkFBcUIsQ0FBQztZQUNsQixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLEtBQUssRUFBRSx3R0FBd0c7WUFDL0csSUFBSSxFQUFFLDJCQUEyQjtZQUNqQyxLQUFLLEVBQUUsMkJBQTJCO1lBQ2xDLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixxQkFBcUIsQ0FBQztZQUNsQixJQUFJLEVBQUUscUJBQXFCO1lBQzNCLEtBQUssRUFBRSwwR0FBMEc7WUFDakgsSUFBSSxFQUFFLDZCQUE2QjtZQUNuQyxLQUFLLEVBQUUsMkJBQTJCO1lBQ2xDLFlBQVksRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFDRixxQkFBcUI7S0FDeEI7SUFDRCxVQUFVLEVBQUU7UUFDUixJQUFJLEVBQUU7WUFDRixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMseUNBQXlDLENBQUM7U0FDNUg7UUFDRCxJQUFJLEVBQUU7WUFDRixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMseUNBQXlDLENBQUM7U0FDNUg7UUFDRCxLQUFLLEVBQUU7WUFDSCxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMseUNBQXlDLENBQUM7U0FDNUg7S0FDSjtDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBfV0lER0VUU19BRFZBTkNFX0NBVEVHT1JZLCBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSwgY3JlYXRlQm9vbGVhblByb3BlcnR5LCBjcmVhdGVTZWxlY3RQcm9wZXJ0eSwgY3JlYXRlU3RyaW5nUHJvcGVydHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBWFBfREFUQV9QQVRIX1BST1BFUlRZLCBBWFBfRElTQUJMRURfUFJPUEVSVFksIEFYUF9MQUJFTF9QUk9QRVJUWSwgQVhQX05BTUVfUFJPUEVSVFksIEFYUF9SRUFET05MWV9QUk9QRVJUWSwgQVhQX0JFSEFWSU9SX1BST1BFUlRZX0dST1VQIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0cyc7XG5cbmV4cG9ydCBjb25zdCBBWE1RdWVzdGlvbm5haXJlVmlld2VyV2lkZ2V0OiBBWFBXaWRnZXRDb25maWc8QVhNUXVlc3Rpb25uYWlyZVZpZXdlcldpZGdldENvbmZpZ1R5cGU+ID0ge1xuICAgIG5hbWU6ICdxdWVzdGlvbm5haXJlLXZpZXdlcicsXG4gICAgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIudGl0bGUnLFxuICAgIGNhdGVnb3JpZXM6IEFYUF9XSURHRVRTX0FEVkFOQ0VfQ0FURUdPUlksXG4gICAgZ3JvdXBzOiBbQVhQV2lkZ2V0R3JvdXBFbnVtLlV0aWxpdHlXaWRnZXRdLFxuICAgIGRlc2NyaXB0aW9uOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmRlc2NyaXB0aW9uJyxcbiAgICBpY29uOiAnZmEtbGlnaHQgZmEtY2xpcGJvYXJkLXF1ZXN0aW9uJyxcbiAgICBkZWZhdWx0RmlsdGVyV2lkZ2V0TmFtZTogJ3N0cmluZy1maWx0ZXInLFxuICAgIHR5cGU6ICd2aWV3JyxcbiAgICBvcHRpb25zOiB7XG4gICAgICAgIG5lZWRMYWJlbDogZmFsc2UsXG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgIEFYUF9OQU1FX1BST1BFUlRZLFxuICAgICAgICBBWFBfREFUQV9QQVRIX1BST1BFUlRZLFxuICAgICAgICBjcmVhdGVTdHJpbmdQcm9wZXJ0eSh7XG4gICAgICAgICAgICBuYW1lOiAncXVlc3Rpb25uYWlyZUlkJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy5xdWVzdGlvbm5haXJlLWlkLnRpdGxlJyxcbiAgICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnF1ZXN0aW9ubmFpcmVJZCcsXG4gICAgICAgICAgICBncm91cDogQVhQX0JFSEFWSU9SX1BST1BFUlRZX0dST1VQLFxuICAgICAgICB9KSxcbiAgICAgICAgY3JlYXRlU2VsZWN0UHJvcGVydHkoe1xuICAgICAgICAgICAgbmFtZTogJ3ZpZXdNb2RlJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy52aWV3LW1vZGUudGl0bGUnLFxuICAgICAgICAgICAgcGF0aDogJ29wdGlvbnMudmlld01vZGUnLFxuICAgICAgICAgICAgZ3JvdXA6IEFYUF9CRUhBVklPUl9QUk9QRVJUWV9HUk9VUCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogJ3NpbmdsZS1wYWdlJyxcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IFtcbiAgICAgICAgICAgICAgICB7IGlkOiAnc2luZ2xlLXBhZ2UnLCB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMudmlldy1tb2RlLm9wdGlvbnMuc2luZ2xlLXBhZ2UnIH0sXG4gICAgICAgICAgICAgICAgeyBpZDogJ3BhZ2UtcGVyLWdyb3VwJywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnBhZ2UtcGVyLWdyb3VwJyB9LFxuICAgICAgICAgICAgICAgIHsgaWQ6ICdwYWdlLXBlci1xdWVzdGlvbicsIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy52aWV3LW1vZGUub3B0aW9ucy5wYWdlLXBlci1xdWVzdGlvbicgfSxcbiAgICAgICAgICAgICAgICB7IGlkOiAnc2lkZS1tZW51JywgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnZpZXctbW9kZS5vcHRpb25zLnNpZGUtbWVudScgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgICBjcmVhdGVCb29sZWFuUHJvcGVydHkoe1xuICAgICAgICAgICAgbmFtZTogJ3Nob3dUaW1lcicsXG4gICAgICAgICAgICB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMuc2hvdy10aW1lci50aXRsZScsXG4gICAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93VGltZXInLFxuICAgICAgICAgICAgZ3JvdXA6IEFYUF9CRUhBVklPUl9QUk9QRVJUWV9HUk9VUCxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgICBjcmVhdGVCb29sZWFuUHJvcGVydHkoe1xuICAgICAgICAgICAgbmFtZTogJ3Nob3dQcm9ncmVzc0JhcicsXG4gICAgICAgICAgICB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5maWVsZHMuc2hvdy1wcm9ncmVzcy1iYXIudGl0bGUnLFxuICAgICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd1Byb2dyZXNzQmFyJyxcbiAgICAgICAgICAgIGdyb3VwOiBBWFBfQkVIQVZJT1JfUFJPUEVSVFlfR1JPVVAsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgICBjcmVhdGVCb29sZWFuUHJvcGVydHkoe1xuICAgICAgICAgICAgbmFtZTogJ3Nob3dTZWN0aW9uVGl0bGVzJyxcbiAgICAgICAgICAgIHRpdGxlOiAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZpZWxkcy5zaG93LXNlY3Rpb24tdGl0bGVzLnRpdGxlJyxcbiAgICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dTZWN0aW9uVGl0bGVzJyxcbiAgICAgICAgICAgIGdyb3VwOiBBWFBfQkVIQVZJT1JfUFJPUEVSVFlfR1JPVVAsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgICBjcmVhdGVCb29sZWFuUHJvcGVydHkoe1xuICAgICAgICAgICAgbmFtZTogJ3Nob3dRdWVzdGlvbk51bWJlcnMnLFxuICAgICAgICAgICAgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmllbGRzLnNob3ctcXVlc3Rpb24tbnVtYmVycy50aXRsZScsXG4gICAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93UXVlc3Rpb25OdW1iZXJzJyxcbiAgICAgICAgICAgIGdyb3VwOiBBWFBfQkVIQVZJT1JfUFJPUEVSVFlfR1JPVVAsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgICBBWFBfUkVBRE9OTFlfUFJPUEVSVFksXG4gICAgXSxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIHZpZXc6IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLWVkaXQuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWE1RdWVzdGlvbm5haXJlVmlld2VyV2lkZ2V0RWRpdENvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXQ6IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLWVkaXQuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWE1RdWVzdGlvbm5haXJlVmlld2VyV2lkZ2V0RWRpdENvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgICAgIHByaW50OiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9xdWVzdGlvbm5haXJlLXZpZXdlci1lZGl0LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNUXVlc3Rpb25uYWlyZVZpZXdlcldpZGdldEVkaXRDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5leHBvcnQgdHlwZSBBWE1RdWVzdGlvbm5haXJlVmlld2VyV2lkZ2V0Q29uZmlnVHlwZSA9IHtcbiAgICB0eXBlOiAndmlldyc7XG4gICAgcXVlc3Rpb25uYWlyZUlkPzogc3RyaW5nO1xuICAgIHZpZXdNb2RlPzogJ3NpbmdsZS1wYWdlJyB8ICdwYWdlLXBlci1ncm91cCcgfCAncGFnZS1wZXItcXVlc3Rpb24nIHwgJ3NpZGUtbWVudSc7XG4gICAgc2hvd1RpbWVyPzogYm9vbGVhbjtcbiAgICBzaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuICAgIHNob3dTZWN0aW9uVGl0bGVzPzogYm9vbGVhbjtcbiAgICBzaG93UXVlc3Rpb25OdW1iZXJzPzogYm9vbGVhbjtcbiAgICByZWFkb25seT86IGJvb2xlYW47XG59O1xuXG4iXX0=","//#region ---- Imports ----\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core';\nimport { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/layout/widgets';\n//#endregion\n//#region ---- Widget Config ----\nexport const AXMAnswersViewerWidget = {\n name: 'answers-viewer',\n title: 'Answers Viewer',\n description: 'Shows answer status badge and button to view answers',\n icon: 'fa-light fa-file-lines',\n categories: AXP_WIDGETS_ADVANCE_CATEGORY,\n groups: [AXPWidgetGroupEnum.EntityWidget],\n type: 'editor',\n properties: [\n AXP_NAME_PROPERTY,\n AXP_DATA_PATH_PROPERTY,\n AXP_DISABLED_PROPERTY,\n ],\n components: {\n designer: {\n component: () => import('./answers-viewer-widget-edit.component').then((c) => c.AXMAnswersViewerWidgetEditComponent),\n },\n view: {\n component: () => import('./answers-viewer-widget-view.component').then((c) => c.AXMAnswersViewerWidgetViewComponent),\n },\n edit: {\n component: () => import('./answers-viewer-widget-edit.component').then((c) => c.AXMAnswersViewerWidgetEditComponent),\n },\n column: {\n component: () => import('./answers-viewer-widget-column.component').then((c) => c.AXMAnswersViewerWidgetColumnComponent),\n },\n },\n};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5zd2Vycy12aWV3ZXItd2lkZ2V0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLXZpZXdlci93aWRnZXRzL2Fuc3dlcnMtdmlld2VyLXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSw0QkFBNEIsRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuSCxZQUFZO0FBRVoscUNBQXFDO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFvQjtJQUNuRCxJQUFJLEVBQUUsZ0JBQWdCO0lBQ3RCLEtBQUssRUFBRSxnQkFBZ0I7SUFDdkIsV0FBVyxFQUFFLHNEQUFzRDtJQUNuRSxJQUFJLEVBQUUsd0JBQXdCO0lBQzlCLFVBQVUsRUFBRSw0QkFBNEI7SUFDeEMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDO0lBQ3pDLElBQUksRUFBRSxRQUFRO0lBQ2QsVUFBVSxFQUFFO1FBQ1IsaUJBQWlCO1FBQ2pCLHNCQUFzQjtRQUN0QixxQkFBcUI7S0FDeEI7SUFDRCxVQUFVLEVBQUU7UUFDUixRQUFRLEVBQUU7WUFDTixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQUM7U0FDdkg7UUFDRCxJQUFJLEVBQUU7WUFDRixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQUM7U0FDdkg7UUFDRCxJQUFJLEVBQUU7WUFDRixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQUM7U0FDdkg7UUFDRCxNQUFNLEVBQUU7WUFDSixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMscUNBQXFDLENBQUM7U0FDM0g7S0FDSjtDQUNKLENBQUM7QUFFRixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBfV0lER0VUU19BRFZBTkNFX0NBVEVHT1JZLCBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IEFYUF9OQU1FX1BST1BFUlRZLCBBWFBfREFUQV9QQVRIX1BST1BFUlRZLCBBWFBfRElTQUJMRURfUFJPUEVSVFkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXRzJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgV2lkZ2V0IENvbmZpZyAgIC0tLS1cblxuZXhwb3J0IGNvbnN0IEFYTUFuc3dlcnNWaWV3ZXJXaWRnZXQ6IEFYUFdpZGdldENvbmZpZyA9IHtcbiAgICBuYW1lOiAnYW5zd2Vycy12aWV3ZXInLFxuICAgIHRpdGxlOiAnQW5zd2VycyBWaWV3ZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnU2hvd3MgYW5zd2VyIHN0YXR1cyBiYWRnZSBhbmQgYnV0dG9uIHRvIHZpZXcgYW5zd2VycycsXG4gICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWZpbGUtbGluZXMnLFxuICAgIGNhdGVnb3JpZXM6IEFYUF9XSURHRVRTX0FEVkFOQ0VfQ0FURUdPUlksXG4gICAgZ3JvdXBzOiBbQVhQV2lkZ2V0R3JvdXBFbnVtLkVudGl0eVdpZGdldF0sXG4gICAgdHlwZTogJ2VkaXRvcicsXG4gICAgcHJvcGVydGllczogW1xuICAgICAgICBBWFBfTkFNRV9QUk9QRVJUWSxcbiAgICAgICAgQVhQX0RBVEFfUEFUSF9QUk9QRVJUWSxcbiAgICAgICAgQVhQX0RJU0FCTEVEX1BST1BFUlRZLFxuICAgIF0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBkZXNpZ25lcjoge1xuICAgICAgICAgICAgY29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vYW5zd2Vycy12aWV3ZXItd2lkZ2V0LWVkaXQuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWE1BbnN3ZXJzVmlld2VyV2lkZ2V0RWRpdENvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgICAgIHZpZXc6IHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2Fuc3dlcnMtdmlld2VyLXdpZGdldC12aWV3LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNQW5zd2Vyc1ZpZXdlcldpZGdldFZpZXdDb21wb25lbnQpLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0OiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hbnN3ZXJzLXZpZXdlci13aWRnZXQtZWRpdC5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYTUFuc3dlcnNWaWV3ZXJXaWRnZXRFZGl0Q29tcG9uZW50KSxcbiAgICAgICAgfSxcbiAgICAgICAgY29sdW1uOiB7XG4gICAgICAgICAgICBjb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hbnN3ZXJzLXZpZXdlci13aWRnZXQtY29sdW1uLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNQW5zd2Vyc1ZpZXdlcldpZGdldENvbHVtbkNvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { computed, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { get } from 'lodash-es';\nimport { AXMQuestionBankItemService } from '../../entities/question-bank-item/question-bank-item.service';\nimport { AXMQuestionnaireService } from '../../entities/questionnaire/questionnaire.service';\n//#endregion\n//#region ---- ViewModel ----\nexport const AXMQuestionnaireViewerViewModel = signalStore(withState(() => ({\n // Data\n questionnaireData: null,\n structure: null,\n config: null,\n // State\n isLoading: true,\n error: null,\n // Navigation\n currentSectionIndex: 0,\n currentQuestionIndex: 0,\n // Timer\n timerElapsed: 0, // seconds\n timerInterval: null,\n // References\n form: null,\n widgetContainer: null,\n // Validation errors\n validationErrors: [],\n})), withComputed((store) => ({\n //#region ---- View Mode ----\n viewMode: computed(() => {\n const config = store.config();\n const configMode = config?.viewMode;\n const structure = store.structure();\n const displaySettings = structure?.displaySettings;\n const displaySettingsViewMode = displaySettings?.viewMode;\n return configMode !== undefined\n ? configMode\n : (displaySettingsViewMode !== undefined ? displaySettingsViewMode : 'single-page');\n }),\n //#endregion\n //#region ---- Sections & Questions ----\n sections: computed(() => {\n const data = store.questionnaireData();\n return data?.sections || [];\n }),\n currentSection: computed(() => {\n const data = store.questionnaireData();\n if (!data)\n return null;\n const sections = data.sections;\n const index = store.currentSectionIndex();\n return sections[index] || null;\n }),\n currentQuestion: computed(() => {\n const data = store.questionnaireData();\n if (!data)\n return null;\n const sections = data.sections;\n const index = store.currentSectionIndex();\n const section = sections[index];\n if (!section)\n return null;\n const questionIndex = store.currentQuestionIndex();\n return section.questions[questionIndex] || null;\n }),\n totalQuestionsCount: computed(() => {\n const data = store.questionnaireData();\n if (!data)\n return 0;\n return data.sections.reduce((sum, section) => sum + section.questions.length, 0);\n }),\n totalSectionsCount: computed(() => {\n const data = store.questionnaireData();\n return data?.sections.length || 0;\n }),\n //#endregion\n //#region ---- Progress ----\n progressMode: computed(() => {\n const config = store.config();\n const configValue = config?.progressMode;\n const structure = store.structure();\n const displaySettings = structure?.displaySettings;\n const displaySettingsValue = displaySettings?.progressMode;\n return configValue !== undefined\n ? configValue\n : (displaySettingsValue !== undefined ? displaySettingsValue : 'answered');\n }),\n answeredQuestionsCount: computed(() => {\n const data = store.questionnaireData();\n const container = store.widgetContainer();\n if (!data || !container?.contextService) {\n return 0;\n }\n try {\n const contextService = container.contextService;\n const changeEvent = contextService.changeEvent();\n const contextData = contextService.data() || {};\n let answeredCount = 0;\n for (const section of data.sections) {\n for (const question of section.questions) {\n const widgetPath = question.question.interface?.path;\n if (!widgetPath)\n continue;\n const value = get(contextData, widgetPath);\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && Object.keys(value).length === 0);\n if (!isEmpty) {\n answeredCount++;\n }\n }\n }\n return answeredCount;\n }\n catch (error) {\n console.error('[QuestionnaireViewer] Error counting answered questions:', error);\n return 0;\n }\n }),\n progressPercentage: computed(() => {\n const data = store.questionnaireData();\n if (!data)\n return 0;\n const totalQuestions = data.sections.reduce((sum, section) => sum + section.questions.length, 0);\n if (totalQuestions === 0)\n return 0;\n // Calculate progress mode\n const config = store.config();\n const structure = store.structure();\n const configValue = config?.progressMode;\n const displaySettings = structure?.displaySettings;\n const displaySettingsValue = displaySettings?.progressMode;\n const progressMode = configValue !== undefined\n ? configValue\n : (displaySettingsValue !== undefined ? displaySettingsValue : 'answered');\n // Calculate view mode\n const configMode = config?.viewMode;\n const displaySettingsViewMode = displaySettings?.viewMode;\n const viewMode = configMode !== undefined\n ? configMode\n : (displaySettingsViewMode !== undefined ? displaySettingsViewMode : 'single-page');\n if (progressMode === 'answered') {\n // Calculate answered count directly\n const container = store.widgetContainer();\n if (!container?.contextService)\n return 0;\n try {\n const contextService = container.contextService;\n const contextData = contextService.data() || {};\n let answeredCount = 0;\n for (const section of data.sections) {\n for (const question of section.questions) {\n const widgetPath = question.question.interface?.path;\n if (!widgetPath)\n continue;\n const value = get(contextData, widgetPath);\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && Object.keys(value).length === 0);\n if (!isEmpty) {\n answeredCount++;\n }\n }\n }\n return Math.round((answeredCount / totalQuestions) * 100);\n }\n catch (error) {\n return 0;\n }\n }\n if (progressMode === 'navigation') {\n if (viewMode === 'page-per-group' || viewMode === 'side-menu') {\n const totalSections = data.sections.length;\n const currentSection = store.currentSectionIndex();\n return Math.round(((currentSection + 1) / totalSections) * 100);\n }\n if (viewMode === 'page-per-question') {\n let currentQuestionIndex = 0;\n const currentSIndex = store.currentSectionIndex();\n const currentQIndex = store.currentQuestionIndex();\n for (let i = 0; i < currentSIndex; i++) {\n currentQuestionIndex += data.sections[i].questions.length;\n }\n currentQuestionIndex += currentQIndex + 1;\n return Math.round((currentQuestionIndex / totalQuestions) * 100);\n }\n return 0;\n }\n return 0;\n }),\n //#endregion\n //#region ---- Display Settings ----\n showProgressBar: computed(() => {\n const config = store.config();\n const configValue = config?.showProgressBar;\n const structure = store.structure();\n const displaySettings = structure?.displaySettings;\n const displaySettingsValue = displaySettings?.showProgressBar;\n return configValue !== undefined\n ? configValue\n : (displaySettingsValue !== undefined ? displaySettingsValue : true);\n }),\n showTimer: computed(() => {\n const config = store.config();\n const configValue = config?.timer?.showTimer;\n const structure = store.structure();\n const displaySettings = structure?.displaySettings;\n const displaySettingsValue = displaySettings?.showTimer;\n return configValue !== undefined\n ? configValue\n : (displaySettingsValue !== undefined ? displaySettingsValue : false);\n }),\n timerTimeLimit: computed(() => {\n const config = store.config();\n return config?.timer?.timeLimit;\n }),\n showSectionTitles: computed(() => {\n const config = store.config();\n const configValue = config?.showSectionTitles;\n const structure = store.structure();\n const displaySettings = structure?.displaySettings;\n const displaySettingsValue = displaySettings?.showSectionTitles;\n return configValue !== undefined\n ? configValue\n : (displaySettingsValue !== undefined ? displaySettingsValue : true);\n }),\n showQuestionNumbers: computed(() => {\n const config = store.config();\n const configValue = config?.showQuestionNumbers;\n const structure = store.structure();\n const displaySettings = structure?.displaySettings;\n const displaySettingsValue = displaySettings?.showQuestionNumbers;\n return configValue !== undefined\n ? configValue\n : (displaySettingsValue !== undefined ? displaySettingsValue : true);\n }),\n showQuestionCounter: computed(() => {\n const config = store.config();\n const configValue = config?.showQuestionCounter;\n const structure = store.structure();\n const displaySettings = structure?.displaySettings;\n const displaySettingsValue = displaySettings?.showQuestionCounter;\n return configValue !== undefined\n ? configValue\n : (displaySettingsValue !== undefined ? displaySettingsValue : false);\n }),\n currentQuestionPosition: computed(() => {\n const data = store.questionnaireData();\n if (!data)\n return { current: 0, total: 0 };\n // Calculate view mode\n const config = store.config();\n const structure = store.structure();\n const configMode = config?.viewMode;\n const displaySettings = structure?.displaySettings;\n const displaySettingsViewMode = displaySettings?.viewMode;\n const viewMode = configMode !== undefined\n ? configMode\n : (displaySettingsViewMode !== undefined ? displaySettingsViewMode : 'single-page');\n const total = data.sections.reduce((sum, section) => sum + section.questions.length, 0);\n if (viewMode === 'page-per-question') {\n let current = 0;\n const currentSIndex = store.currentSectionIndex();\n const currentQIndex = store.currentQuestionIndex();\n for (let i = 0; i < currentSIndex; i++) {\n current += data.sections[i].questions.length;\n }\n current += currentQIndex + 1;\n return { current, total };\n }\n return { current: 0, total };\n }),\n timerText: computed(() => {\n const config = store.config();\n const timeLimit = config?.timer?.timeLimit;\n if (!timeLimit)\n return '';\n const elapsed = store.timerElapsed();\n const remaining = Math.max(0, timeLimit - elapsed);\n const hours = Math.floor(remaining / 3600);\n const minutes = Math.floor((remaining % 3600) / 60);\n const seconds = remaining % 60;\n if (hours > 0) {\n return `${hours}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\n }\n return `${minutes}:${seconds.toString().padStart(2, '0')}`;\n }),\n timerWidget: computed(() => {\n const config = store.config();\n const timeLimit = config?.timer?.timeLimit;\n if (!timeLimit)\n return null;\n const widgetNode = {\n type: 'stopwatch',\n name: 'questionnaire-timer',\n path: 'timer.elapsed',\n options: {\n mode: 'count-down',\n timeLimit: timeLimit,\n format: timeLimit >= 3600 ? 'hh:mm:ss' : 'mm:ss',\n autoStart: true,\n showControls: false,\n },\n mode: 'edit',\n };\n return widgetNode;\n }),\n validateBeforeNavigation: computed(() => {\n const config = store.config();\n const configValue = config?.validateBeforeNavigation;\n const structure = store.structure();\n const displaySettings = structure?.displaySettings;\n const displaySettingsValue = displaySettings?.validateBeforeNavigation;\n return configValue !== undefined\n ? configValue\n : (displaySettingsValue !== undefined ? displaySettingsValue : true);\n }),\n //#endregion\n //#region ---- Navigation ----\n canNavigateNext: computed(() => {\n const data = store.questionnaireData();\n if (!data)\n return false;\n // Calculate view mode\n const config = store.config();\n const structure = store.structure();\n const configMode = config?.viewMode;\n const displaySettings = structure?.displaySettings;\n const displaySettingsViewMode = displaySettings?.viewMode;\n const viewMode = configMode !== undefined\n ? configMode\n : (displaySettingsViewMode !== undefined ? displaySettingsViewMode : 'single-page');\n const sections = data.sections;\n if (viewMode === 'page-per-group' || viewMode === 'side-menu') {\n const currentSIndex = store.currentSectionIndex();\n return currentSIndex < sections.length - 1;\n }\n else if (viewMode === 'page-per-question') {\n const currentSIndex = store.currentSectionIndex();\n const currentQIndex = store.currentQuestionIndex();\n const currentSection = sections[currentSIndex];\n if (!currentSection)\n return false;\n return (currentQIndex < currentSection.questions.length - 1 ||\n currentSIndex < sections.length - 1);\n }\n return false;\n }),\n canNavigatePrevious: computed(() => {\n const data = store.questionnaireData();\n if (!data)\n return false;\n // Calculate view mode\n const config = store.config();\n const structure = store.structure();\n const configMode = config?.viewMode;\n const displaySettings = structure?.displaySettings;\n const displaySettingsViewMode = displaySettings?.viewMode;\n const viewMode = configMode !== undefined\n ? configMode\n : (displaySettingsViewMode !== undefined ? displaySettingsViewMode : 'single-page');\n if (viewMode === 'page-per-group' || viewMode === 'side-menu') {\n const currentSIndex = store.currentSectionIndex();\n return currentSIndex > 0;\n }\n else if (viewMode === 'page-per-question') {\n const currentQIndex = store.currentQuestionIndex();\n const currentSIndex = store.currentSectionIndex();\n return currentQIndex > 0 || currentSIndex > 0;\n }\n return false;\n }),\n /**\n * Check if we're on the last step\n */\n isLastStep: computed(() => {\n const data = store.questionnaireData();\n if (!data)\n return false;\n // Calculate view mode\n const config = store.config();\n const structure = store.structure();\n const configMode = config?.viewMode;\n const displaySettings = structure?.displaySettings;\n const displaySettingsViewMode = displaySettings?.viewMode;\n const viewMode = configMode !== undefined\n ? configMode\n : (displaySettingsViewMode !== undefined ? displaySettingsViewMode : 'single-page');\n const sections = data.sections;\n if (viewMode === 'single-page') {\n // For single-page, we're always on the last step\n return true;\n }\n else if (viewMode === 'page-per-group' || viewMode === 'side-menu') {\n const currentSIndex = store.currentSectionIndex();\n return currentSIndex >= sections.length - 1;\n }\n else if (viewMode === 'page-per-question') {\n const currentSIndex = store.currentSectionIndex();\n const currentQIndex = store.currentQuestionIndex();\n const currentSection = sections[currentSIndex];\n if (!currentSection)\n return false;\n // Check if we're on the last question of the last section\n return (currentSIndex === sections.length - 1 &&\n currentQIndex === currentSection.questions.length - 1);\n }\n return false;\n }),\n /**\n * Check if all required questions are answered\n */\n areAllRequiredQuestionsAnswered: computed(() => {\n const data = store.questionnaireData();\n const container = store.widgetContainer();\n if (!data || !container?.contextService)\n return false;\n try {\n const contextService = container.contextService;\n const contextData = contextService.data() || {};\n for (const section of data.sections) {\n for (const question of section.questions) {\n // Only check required questions\n if (!question.isRequired)\n continue;\n // Check visibility condition (if question is not visible, skip)\n // TODO: Implement visibility condition evaluation\n // For now, check all required questions\n const widgetPath = question.question.interface?.path;\n if (!widgetPath)\n continue;\n const value = get(contextData, widgetPath);\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && Object.keys(value).length === 0);\n if (isEmpty) {\n return false;\n }\n }\n }\n return true;\n }\n catch (error) {\n console.error('[QuestionnaireViewer] Error checking required questions:', error);\n return false;\n }\n }),\n //#endregion\n})), withMethods((store, questionnaireService = inject(AXMQuestionnaireService), questionBankService = inject(AXMQuestionBankItemService), toastService = inject(AXToastService), translationService = inject(AXTranslationService)) => ({\n //#region ---- Registration ----\n registerForm(form) {\n patchState(store, { form });\n },\n registerWidgetContainer(container) {\n patchState(store, { widgetContainer: container });\n },\n //#endregion\n //#region ---- Data Loading ----\n async loadQuestionnaire(id, initialAnswers, config) {\n patchState(store, { isLoading: true, error: null, config: config || null });\n try {\n const questionnaire = await questionnaireService.getOne(id);\n if (!questionnaire) {\n throw new Error('Questionnaire not found');\n }\n const structure = questionnaire.structure || { sections: [] };\n const sectionsWithQuestions = await Promise.all(structure.sections.map(async (section, sectionIndex) => {\n const questions = await Promise.all(section.items.map(async (item, itemIndex) => {\n const questionDetails = await questionBankService\n .getOne(item.questionBankItemId)\n .catch(() => null);\n const indexBasedPath = `answers.${sectionIndex}-${itemIndex}`;\n let widgetInterface = questionDetails?.interface;\n if (widgetInterface) {\n const path = item.id ? `answers.${item.id}` : indexBasedPath;\n const name = item.id || `answer-${sectionIndex}-${itemIndex}`;\n // Get existing validations from options or directly from interface\n const existingOptions = widgetInterface.options || {};\n const existingValidations = existingOptions.validations || widgetInterface.validations || [];\n const validations = [...existingValidations];\n if (item.isRequired) {\n const hasRequiredValidation = validations.some(v => v.rule === 'required');\n if (!hasRequiredValidation) {\n validations.push({\n rule: 'required',\n message: 'This field is required.',\n });\n }\n }\n // Apply readonly mode from config\n const isReadonly = config?.readonly ?? false;\n widgetInterface = {\n ...widgetInterface,\n path: path,\n name: name,\n options: {\n ...existingOptions,\n readonly: isReadonly || existingOptions.readonly,\n validations: validations.length > 0 ? validations : undefined,\n },\n };\n }\n return {\n id: item.id,\n questionBankItemId: item.questionBankItemId,\n sectionId: section.id,\n order: item.order,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n question: questionDetails\n ? {\n id: questionDetails.id,\n title: questionDetails.title,\n description: questionDetails.description,\n difficulty: questionDetails.difficulty,\n scoringType: questionDetails.scoringType,\n interface: widgetInterface || questionDetails.interface,\n }\n : {\n id: item.questionBankItemId,\n title: 'Question',\n description: undefined,\n difficulty: undefined,\n interface: undefined,\n },\n };\n }));\n return {\n id: section.id,\n title: section.title,\n description: section.description,\n order: section.order,\n visibilityCondition: section.visibilityCondition,\n questions: questions.sort((a, b) => a.order - b.order),\n };\n }));\n patchState(store, {\n questionnaireData: {\n id: questionnaire.id,\n title: questionnaire.title,\n description: questionnaire.description,\n type: questionnaire.type,\n sections: sectionsWithQuestions.sort((a, b) => a.order - b.order),\n scoringType: questionnaire.scoringType,\n passingScore: questionnaire.passingScore,\n },\n isLoading: false,\n });\n // Set initial answers in widget container context if provided\n if (initialAnswers && Object.keys(initialAnswers).length > 0) {\n const container = store.widgetContainer();\n if (container?.contextService) {\n const currentData = container.contextService.data() || {};\n const existingAnswers = currentData.answers || {};\n const mergedData = { ...currentData, answers: { ...existingAnswers, ...initialAnswers } };\n container.contextService.set(mergedData);\n }\n }\n }\n catch (err) {\n patchState(store, {\n error: err.message || 'Failed to load questionnaire',\n isLoading: false,\n });\n }\n },\n async loadStructure(structure, config, initialAnswers) {\n patchState(store, { isLoading: true, error: null, structure, config: config || null });\n try {\n if (!structure.sections || structure.sections.length === 0) {\n patchState(store, {\n questionnaireData: {\n id: 'preview',\n title: 'Preview',\n description: undefined,\n type: 'questionnaire',\n sections: [],\n },\n isLoading: false,\n });\n return;\n }\n const sectionsWithQuestions = await Promise.all(structure.sections.map(async (section, sectionIndex) => {\n const questions = await Promise.all((section.items || []).map(async (item, itemIndex) => {\n const questionDetails = await questionBankService\n .getOne(item.questionBankItemId)\n .catch(() => null);\n const indexBasedPath = `answers.${sectionIndex}-${itemIndex}`;\n let widgetInterface = item.interfaceOverride || questionDetails?.interface;\n if (widgetInterface) {\n const path = item.id ? `answers.${item.id}` : indexBasedPath;\n const name = item.id || `answer-${sectionIndex}-${itemIndex}`;\n // Get existing validations from options or directly from interface\n const existingOptions = widgetInterface.options || {};\n const existingValidations = existingOptions.validations || widgetInterface.validations || [];\n const validations = [...existingValidations];\n if (item.isRequired) {\n const hasRequiredValidation = validations.some(v => v.rule === 'required');\n if (!hasRequiredValidation) {\n validations.push({\n rule: 'required',\n options: {\n message: 'This field is required.',\n },\n });\n }\n }\n // Apply readonly mode from config\n const isReadonly = config?.readonly ?? false;\n widgetInterface = {\n ...widgetInterface,\n path: path,\n name: name,\n options: {\n ...existingOptions,\n readonly: isReadonly || existingOptions.readonly,\n validations: validations.length > 0 ? validations : undefined,\n },\n };\n }\n const questionData = questionDetails\n ? {\n id: questionDetails.id,\n title: questionDetails.title,\n description: questionDetails.description,\n difficulty: questionDetails.difficulty,\n scoringType: questionDetails.scoringType,\n interface: widgetInterface,\n }\n : {\n id: item.questionBankItemId,\n title: 'Question',\n description: undefined,\n difficulty: undefined,\n scoringType: undefined,\n interface: widgetInterface,\n };\n return {\n id: item.id,\n questionBankItemId: item.questionBankItemId,\n sectionId: section.id,\n order: item.order,\n isRequired: item.isRequired,\n visibilityCondition: item.visibilityCondition,\n requiredCondition: item.requiredCondition,\n scoringOverride: item.scoringOverride,\n question: questionData,\n };\n }));\n return {\n id: section.id,\n title: section.title,\n description: section.description,\n order: section.order,\n visibilityCondition: section.visibilityCondition,\n questions: questions.sort((a, b) => a.order - b.order),\n };\n }));\n patchState(store, {\n questionnaireData: {\n id: 'preview',\n title: 'Preview',\n description: undefined,\n type: 'questionnaire',\n sections: sectionsWithQuestions.sort((a, b) => a.order - b.order),\n },\n isLoading: false,\n });\n // Set initial answers in widget container context if provided\n if (initialAnswers && Object.keys(initialAnswers).length > 0) {\n const container = store.widgetContainer();\n if (container?.contextService) {\n const currentData = container.contextService.data() || {};\n const existingAnswers = currentData.answers || {};\n const mergedData = { ...currentData, answers: { ...existingAnswers, ...initialAnswers } };\n container.contextService.set(mergedData);\n }\n }\n }\n catch (err) {\n console.error('[QuestionnaireViewer] Error loading structure:', err);\n patchState(store, {\n error: err.message || 'Failed to load structure',\n isLoading: false,\n });\n }\n },\n //#endregion\n //#region ---- Validation ----\n /**\n * Check if a question is visible based on visibility condition\n */\n isQuestionVisible(question) {\n // TODO: Implement visibility condition evaluation\n // For now, return true (all questions are visible)\n return true;\n },\n /**\n * Get visible questions for current page based on view mode\n */\n getVisibleQuestions() {\n const data = store.questionnaireData();\n if (!data)\n return [];\n // Calculate view mode from config/structure\n const config = store.config();\n const structure = store.structure();\n const configMode = config?.viewMode;\n const displaySettings = structure?.displaySettings;\n const displaySettingsViewMode = displaySettings?.viewMode;\n const viewMode = configMode !== undefined\n ? configMode\n : (displaySettingsViewMode !== undefined ? displaySettingsViewMode : 'single-page');\n const sections = data.sections;\n const visibleQuestions = [];\n if (viewMode === 'single-page') {\n // All questions in all sections\n for (const section of sections) {\n for (const question of section.questions) {\n if (this.isQuestionVisible(question)) {\n visibleQuestions.push(question);\n }\n }\n }\n }\n else if (viewMode === 'page-per-group' || viewMode === 'side-menu') {\n // Questions in current section\n const currentSIndex = store.currentSectionIndex();\n const currentSection = sections[currentSIndex];\n if (currentSection) {\n for (const question of currentSection.questions) {\n if (this.isQuestionVisible(question)) {\n visibleQuestions.push(question);\n }\n }\n }\n }\n else if (viewMode === 'page-per-question') {\n // Current question only\n const currentSIndex = store.currentSectionIndex();\n const currentQIndex = store.currentQuestionIndex();\n const currentSection = sections[currentSIndex];\n if (currentSection) {\n const currentQuestion = currentSection.questions[currentQIndex];\n if (currentQuestion && this.isQuestionVisible(currentQuestion)) {\n visibleQuestions.push(currentQuestion);\n }\n }\n }\n return visibleQuestions;\n },\n /**\n * Validate a single question\n */\n async validateQuestion(question) {\n const container = store.widgetContainer();\n if (!container?.contextService) {\n return 'Widget container not available';\n }\n try {\n const contextService = container.contextService;\n const contextData = contextService.data() || {};\n const widgetPath = question.question.interface?.path;\n if (!widgetPath) {\n return null; // No widget path, skip validation\n }\n const value = get(contextData, widgetPath);\n // Check required validation\n if (question.isRequired) {\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && Object.keys(value).length === 0);\n if (isEmpty) {\n return 'This field is required.';\n }\n }\n // TODO: Add other validation rules from widget interface\n // For now, only required validation is implemented\n return null;\n }\n catch (error) {\n console.error('[QuestionnaireViewer] Error validating question:', error);\n return 'Validation error occurred';\n }\n },\n /**\n * Validate all visible questions on current page\n */\n async validateCurrentPage() {\n const form = store.form();\n if (!form) {\n console.warn('[QuestionnaireViewer] Form not available for validation');\n return { isValid: true, errors: [] };\n }\n // Get visible questions\n const visibleQuestions = this.getVisibleQuestions();\n // Get sections for lookup\n const data = store.questionnaireData();\n if (!data) {\n return { isValid: true, errors: [] };\n }\n const sections = data.sections;\n // Validate form first to trigger validation (this ensures form state is updated)\n await form.validate();\n // Manually validate each visible question\n // The form validation doesn't provide paths in the rules, so we validate manually\n const errors = [];\n const container = store.widgetContainer();\n if (container?.contextService) {\n const contextService = container.contextService;\n const contextData = contextService.data() || {};\n for (const question of visibleQuestions) {\n const widgetPath = question.question.interface?.path;\n if (!widgetPath)\n continue;\n const value = get(contextData, widgetPath);\n // Check required validation\n if (question.isRequired) {\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && value !== null && Object.keys(value).length === 0);\n if (isEmpty) {\n const section = sections.find(s => s.id === question.sectionId);\n const questionTitle = question.question.title || 'This field';\n const errorMessage = await translationService.translateAsync('@acorex:validation.messages.required') || `${questionTitle} is required`;\n // Replace {{ title }} placeholder if present, otherwise use the message as-is\n const finalErrorMessage = errorMessage.includes('{{ title }}')\n ? errorMessage.replace('{{ title }}', questionTitle)\n : errorMessage;\n errors.push({\n questionId: question.id,\n questionTitle: question.question.title,\n sectionId: section?.id,\n sectionTitle: section?.title,\n error: finalErrorMessage,\n });\n }\n }\n // TODO: Add other validation rules from widget interface\n }\n }\n patchState(store, { validationErrors: errors });\n if (errors.length > 0) {\n const errorMessage = await translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.validation.current-page-error') || `Please complete ${errors.length} required question(s) on this page.`;\n toastService.show({\n color: 'danger',\n title: await translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.validation.error-title') || 'Validation Error',\n content: errorMessage,\n location: 'bottom-center',\n closeButton: true,\n timeOut: 5000,\n timeOutProgress: true,\n });\n }\n return {\n isValid: errors.length === 0,\n errors,\n };\n },\n /**\n * Validate all questions in entire questionnaire\n */\n async validateAllQuestions() {\n const form = store.form();\n if (!form) {\n return { isValid: true, errors: [] };\n }\n const data = store.questionnaireData();\n if (!data) {\n return { isValid: true, errors: [] };\n }\n // Validate form first to trigger validation (this ensures form state is updated)\n await form.validate();\n // Manually validate all visible questions\n // The form validation doesn't provide paths in the rules, so we validate manually\n const errors = [];\n const container = store.widgetContainer();\n if (container?.contextService) {\n const contextService = container.contextService;\n const contextData = contextService.data() || {};\n for (const section of data.sections) {\n for (const question of section.questions) {\n // Only include visible questions\n if (!this.isQuestionVisible(question)) {\n continue;\n }\n const widgetPath = question.question.interface?.path;\n if (!widgetPath)\n continue;\n const value = get(contextData, widgetPath);\n // Check required validation\n if (question.isRequired) {\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && value !== null && Object.keys(value).length === 0);\n if (isEmpty) {\n const questionTitle = question.question.title || 'This field';\n const errorMessage = await translationService.translateAsync('@acorex:validation.messages.required') || `${questionTitle} is required`;\n // Replace {{ title }} placeholder if present, otherwise use the message as-is\n const finalErrorMessage = errorMessage.includes('{{ title }}')\n ? errorMessage.replace('{{ title }}', questionTitle)\n : errorMessage;\n errors.push({\n questionId: question.id,\n questionTitle: question.question.title,\n sectionId: section.id,\n sectionTitle: section.title,\n error: finalErrorMessage,\n });\n }\n }\n // TODO: Add other validation rules from widget interface\n }\n }\n }\n patchState(store, { validationErrors: errors });\n if (errors.length > 0) {\n const errorMessage = await translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.validation.all-questions-error') || `Please complete ${errors.length} required question(s) in the questionnaire.`;\n toastService.show({\n color: 'danger',\n title: await translationService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.validation.error-title') || 'Validation Error',\n content: errorMessage,\n location: 'bottom-center',\n closeButton: true,\n timeOut: 5000,\n timeOutProgress: true,\n });\n }\n return {\n isValid: errors.length === 0,\n errors,\n };\n },\n //#endregion\n //#region ---- Navigation ----\n async navigateNext() {\n const validationResult = await this.validateCurrentPage();\n if (!validationResult.isValid) {\n return false;\n }\n const data = store.questionnaireData();\n if (!data)\n return false;\n // Calculate view mode\n const config = store.config();\n const structure = store.structure();\n const configMode = config?.viewMode;\n const displaySettings = structure?.displaySettings;\n const displaySettingsViewMode = displaySettings?.viewMode;\n const viewMode = configMode !== undefined\n ? configMode\n : (displaySettingsViewMode !== undefined ? displaySettingsViewMode : 'single-page');\n const sections = data.sections;\n if (viewMode === 'page-per-group' || viewMode === 'side-menu') {\n const currentSIndex = store.currentSectionIndex();\n if (currentSIndex < sections.length - 1) {\n patchState(store, {\n currentSectionIndex: currentSIndex + 1,\n currentQuestionIndex: 0,\n });\n return true;\n }\n }\n else if (viewMode === 'page-per-question') {\n const currentSIndex = store.currentSectionIndex();\n const currentQIndex = store.currentQuestionIndex();\n const currentSection = sections[currentSIndex];\n if (!currentSection)\n return false;\n if (currentQIndex < currentSection.questions.length - 1) {\n patchState(store, { currentQuestionIndex: currentQIndex + 1 });\n return true;\n }\n else if (currentSIndex < sections.length - 1) {\n patchState(store, {\n currentSectionIndex: currentSIndex + 1,\n currentQuestionIndex: 0,\n });\n return true;\n }\n }\n return false;\n },\n async navigatePrevious() {\n const data = store.questionnaireData();\n if (!data)\n return false;\n // Calculate view mode\n const config = store.config();\n const structure = store.structure();\n const configMode = config?.viewMode;\n const displaySettings = structure?.displaySettings;\n const displaySettingsViewMode = displaySettings?.viewMode;\n const viewMode = configMode !== undefined\n ? configMode\n : (displaySettingsViewMode !== undefined ? displaySettingsViewMode : 'single-page');\n const sections = data.sections;\n if (viewMode === 'page-per-group' || viewMode === 'side-menu') {\n const currentSIndex = store.currentSectionIndex();\n if (currentSIndex > 0) {\n patchState(store, {\n currentSectionIndex: currentSIndex - 1,\n currentQuestionIndex: 0,\n });\n return true;\n }\n }\n else if (viewMode === 'page-per-question') {\n const currentQIndex = store.currentQuestionIndex();\n const currentSIndex = store.currentSectionIndex();\n if (currentQIndex > 0) {\n patchState(store, { currentQuestionIndex: currentQIndex - 1 });\n return true;\n }\n else if (currentSIndex > 0) {\n const prevSection = sections[currentSIndex - 1];\n patchState(store, {\n currentSectionIndex: currentSIndex - 1,\n currentQuestionIndex: prevSection.questions.length - 1,\n });\n return true;\n }\n }\n return false;\n },\n /**\n * Check if current section is valid (without showing toast)\n */\n async isCurrentSectionValid() {\n const form = store.form();\n if (!form) {\n return true;\n }\n // Get visible questions\n const visibleQuestions = this.getVisibleQuestions();\n // Get sections for lookup\n const data = store.questionnaireData();\n if (!data) {\n return true;\n }\n const sections = data.sections;\n // Validate form first to trigger validation\n await form.validate();\n // Manually validate each visible question\n const container = store.widgetContainer();\n if (container?.contextService) {\n const contextService = container.contextService;\n const contextData = contextService.data() || {};\n for (const question of visibleQuestions) {\n const widgetPath = question.question.interface?.path;\n if (!widgetPath)\n continue;\n const value = get(contextData, widgetPath);\n // Check required validation\n if (question.isRequired) {\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && value !== null && Object.keys(value).length === 0);\n if (isEmpty) {\n return false;\n }\n }\n }\n }\n return true;\n },\n /**\n * Check if a section can be navigated to\n */\n async isSectionNavigable(sectionIndex) {\n const data = store.questionnaireData();\n if (!data)\n return false;\n const sections = data.sections;\n if (sectionIndex < 0 || sectionIndex >= sections.length) {\n return false;\n }\n // If navigating to current section, always allowed\n if (sectionIndex === store.currentSectionIndex()) {\n return true;\n }\n // If validation before navigation is disabled, always allowed\n const validateBeforeNav = store.validateBeforeNavigation();\n if (!validateBeforeNav) {\n return true;\n }\n // Check if current section is valid\n return await this.isCurrentSectionValid();\n },\n async navigateToSection(index) {\n const data = store.questionnaireData();\n if (!data)\n return false;\n const sections = data.sections;\n if (index < 0 || index >= sections.length) {\n return false;\n }\n // Check if navigation is allowed\n const canNavigate = await this.isSectionNavigable(index);\n if (!canNavigate) {\n // Validate and show toast if validation is enabled\n const validateBeforeNav = store.validateBeforeNavigation();\n if (validateBeforeNav) {\n await this.validateCurrentPage();\n }\n return false;\n }\n patchState(store, {\n currentSectionIndex: index,\n currentQuestionIndex: 0,\n });\n return true;\n },\n async navigateToQuestion(sectionIndex, questionIndex) {\n const data = store.questionnaireData();\n if (!data)\n return false;\n const sections = data.sections;\n if (sectionIndex < 0 || sectionIndex >= sections.length) {\n return false;\n }\n const section = sections[sectionIndex];\n if (questionIndex < 0 || questionIndex >= section.questions.length) {\n return false;\n }\n // Validate current page before navigating\n const validationResult = await this.validateCurrentPage();\n if (!validationResult.isValid) {\n return false;\n }\n patchState(store, {\n currentSectionIndex: sectionIndex,\n currentQuestionIndex: questionIndex,\n });\n return true;\n },\n //#endregion\n //#region ---- Answers ----\n getAllAnswers() {\n const container = store.widgetContainer();\n if (!container?.contextService)\n return {};\n try {\n const contextService = container.contextService;\n const contextData = contextService.data() || {};\n // Extract answers from context data - answers are stored under 'answers' property\n return contextData.answers || {};\n }\n catch (error) {\n console.error('[QuestionnaireViewer] Error getting all answers:', error);\n return {};\n }\n },\n getQuestionsWithAnswers() {\n const data = store.questionnaireData();\n const container = store.widgetContainer();\n if (!data || !container?.contextService)\n return [];\n try {\n const contextService = container.contextService;\n const contextData = contextService.data() || {};\n const questionsWithAnswers = [];\n for (const section of data.sections) {\n for (const question of section.questions) {\n const widgetPath = question.question.interface?.path;\n const answer = widgetPath ? get(contextData, widgetPath) : undefined;\n questionsWithAnswers.push({\n questionId: question.id,\n questionBankItemId: question.questionBankItemId,\n sectionId: section.id,\n title: question.question.title,\n description: question.question.description,\n answer: answer,\n isRequired: question.isRequired,\n question,\n });\n }\n }\n return questionsWithAnswers;\n }\n catch (error) {\n console.error('[QuestionnaireViewer] Error getting questions with answers:', error);\n return [];\n }\n },\n /**\n * Get count of unanswered required questions in a section\n * Used for badge display in side-menu view\n */\n getSectionUnansweredRequiredCount(sectionId) {\n const data = store.questionnaireData();\n const container = store.widgetContainer();\n if (!data || !container?.contextService)\n return 0;\n try {\n const contextService = container.contextService;\n const contextData = contextService.data() || {};\n let unansweredCount = 0;\n const section = data.sections.find(s => s.id === sectionId);\n if (!section)\n return 0;\n for (const question of section.questions) {\n // Only count required questions\n if (!question.isRequired)\n continue;\n // Check visibility condition (if question is not visible, skip)\n // TODO: Implement visibility condition evaluation\n // For now, check all required questions\n const widgetPath = question.question.interface?.path;\n if (!widgetPath)\n continue;\n const value = get(contextData, widgetPath);\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && Object.keys(value).length === 0);\n if (isEmpty) {\n unansweredCount++;\n }\n }\n return unansweredCount;\n }\n catch (error) {\n console.error('[QuestionnaireViewer] Error counting unanswered required questions:', error);\n return 0;\n }\n },\n async submit() {\n const validationResult = await this.validateAllQuestions();\n if (!validationResult.isValid) {\n return {\n success: false,\n answers: this.getAllAnswers(),\n errors: validationResult.errors,\n };\n }\n return {\n success: true,\n answers: this.getAllAnswers(),\n };\n },\n //#endregion\n //#region ---- Timer ----\n startTimer() {\n this.stopTimer();\n patchState(store, { timerElapsed: 0 });\n const interval = setInterval(() => {\n const config = store.config();\n const timeLimit = config?.timer?.timeLimit;\n const elapsed = store.timerElapsed();\n if (timeLimit && elapsed >= timeLimit) {\n this.stopTimer();\n // TODO: Handle time limit reached\n }\n else {\n patchState(store, { timerElapsed: elapsed + 1 });\n }\n }, 1000);\n patchState(store, { timerInterval: interval });\n },\n stopTimer() {\n const interval = store.timerInterval();\n if (interval) {\n clearInterval(interval);\n patchState(store, { timerInterval: null });\n }\n },\n updateTimerElapsed(value) {\n patchState(store, { timerElapsed: value });\n },\n //#endregion\n})));\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS12aWV3ZXIudmlld21vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3F1ZXN0aW9ubmFpcmUtdmlld2VyLnZpZXdtb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDMUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUEwQjdGLFlBQVk7QUFFWixpQ0FBaUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsV0FBVyxDQUN0RCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNiLE9BQU87SUFDUCxpQkFBaUIsRUFBRSxJQUFzQztJQUN6RCxTQUFTLEVBQUUsSUFBd0M7SUFDbkQsTUFBTSxFQUFFLElBQXdDO0lBRWhELFFBQVE7SUFDUixTQUFTLEVBQUUsSUFBSTtJQUNmLEtBQUssRUFBRSxJQUFxQjtJQUU1QixhQUFhO0lBQ2IsbUJBQW1CLEVBQUUsQ0FBQztJQUN0QixvQkFBb0IsRUFBRSxDQUFDO0lBRXZCLFFBQVE7SUFD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SSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixrQ0FBa0M7WUFDdEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxZQUFZLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckQsQ0FBQztRQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVULFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDNUIsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxZQUFZO0NBQ2YsQ0FBQyxDQUNMLENBQ0osQ0FBQztBQUVGLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFdpZGdldENvbnRhaW5lckNvbXBvbmVudCwgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBhdGNoU3RhdGUsIHNpZ25hbFN0b3JlLCB3aXRoQ29tcHV0ZWQsIHdpdGhNZXRob2RzLCB3aXRoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbkJhbmtJdGVtU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3F1ZXN0aW9uLWJhbmstaXRlbS9xdWVzdGlvbi1iYW5rLWl0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLnR5cGVzJztcbmltcG9ydCB7XG4gICAgUXVlc3Rpb25uYWlyZVZpZXdlckNvbmZpZyxcbiAgICBRdWVzdGlvbm5haXJlVmlld2VyRGF0YSxcbiAgICBRdWVzdGlvbm5haXJlVmlld2VyUXVlc3Rpb24sXG4gICAgUXVlc3Rpb25uYWlyZVZpZXdlclNlY3Rpb24sXG59IGZyb20gJy4vcXVlc3Rpb25uYWlyZS12aWV3ZXIudHlwZXMnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBWYWxpZGF0aW9uIEVycm9yIFR5cGVzICAgLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVWYWxpZGF0aW9uRXJyb3Ige1xuICAgIHF1ZXN0aW9uSWQ6IHN0cmluZztcbiAgICBxdWVzdGlvblRpdGxlOiBzdHJpbmc7XG4gICAgc2VjdGlvbklkPzogc3RyaW5nO1xuICAgIHNlY3Rpb25UaXRsZT86IHN0cmluZztcbiAgICBlcnJvcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVWYWxpZGF0aW9uUmVzdWx0IHtcbiAgICBpc1ZhbGlkOiBib29sZWFuO1xuICAgIGVycm9yczogUXVlc3Rpb25uYWlyZVZhbGlkYXRpb25FcnJvcltdO1xufVxuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBWaWV3TW9kZWwgICAtLS0tXG5cbmV4cG9ydCBjb25zdCBBWE1RdWVzdGlvbm5haXJlVmlld2VyVmlld01vZGVsID0gc2lnbmFsU3RvcmUoXG4gICAgd2l0aFN0YXRlKCgpID0+ICh7XG4gICAgICAgIC8vIERhdGFcbiAgICAgICAgcXVlc3Rpb25uYWlyZURhdGE6IG51bGwgYXMgUXVlc3Rpb25uYWlyZVZpZXdlckRhdGEgfCBudWxsLFxuICAgICAgICBzdHJ1Y3R1cmU6IG51bGwgYXMgUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB8IG51bGwsXG4gICAgICAgIGNvbmZpZzogbnVsbCBhcyBRdWVzdGlvbm5haXJlVmlld2VyQ29uZmlnIHwgbnVsbCxcblxuICAgICAgICAvLyBTdGF0ZVxuICAgICAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgICAgIGVycm9yOiBudWxsIGFzIHN0cmluZyB8IG51bGwsXG5cbiAgICAgICAgLy8gTmF2aWdhdGlvblxuICAgICAgICBjdXJyZW50U2VjdGlvbkluZGV4OiAwLFxuICAgICAgICBjdXJyZW50UXVlc3Rpb25JbmRleDogMCxcblxuICAgICAgICAvLyBUaW1lclxuICAgICAgICB0aW1lckVsYXBzZWQ6IDAsIC8vIHNlY29uZHNcbiAgICAgICAgdGltZXJJbnRlcnZhbDogbnVsbCBhcyBhbnksXG5cbiAgICAgICAgLy8gUmVmZXJlbmNlc1xuICAgICAgICBmb3JtOiBudWxsIGFzIGFueSxcbiAgICAgICAgd2lkZ2V0Q29udGFpbmVyOiBudWxsIGFzIEFYUFdpZGdldENvbnRhaW5lckNvbXBvbmVudCB8IG51bGwsXG5cbiAgICAgICAgLy8gVmFsaWRhdGlvbiBlcnJvcnNcbiAgICAgICAgdmFsaWRhdGlvbkVycm9yczogW10gYXMgUXVlc3Rpb25uYWlyZVZhbGlkYXRpb25FcnJvcltdLFxuICAgIH0pKSxcblxuICAgIHdpdGhDb21wdXRlZCgoc3RvcmUpID0+ICh7XG4gICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgVmlldyBNb2RlICAgLS0tLVxuXG4gICAgICAgIHZpZXdNb2RlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBzdG9yZS5jb25maWcoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ01vZGUgPSBjb25maWc/LnZpZXdNb2RlO1xuICAgICAgICAgICAgY29uc3Qgc3RydWN0dXJlID0gc3RvcmUuc3RydWN0dXJlKCk7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3MgPSBzdHJ1Y3R1cmU/LmRpc3BsYXlTZXR0aW5ncztcblxuICAgICAgICAgICAgY29uc3QgZGlzcGxheVNldHRpbmdzVmlld01vZGUgPSBkaXNwbGF5U2V0dGluZ3M/LnZpZXdNb2RlO1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ01vZGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gY29uZmlnTW9kZVxuICAgICAgICAgICAgICAgIDogKGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlICE9PSB1bmRlZmluZWQgPyBkaXNwbGF5U2V0dGluZ3NWaWV3TW9kZSA6ICdzaW5nbGUtcGFnZScpO1xuICAgICAgICB9KSxcblxuICAgICAgICAvLyNlbmRyZWdpb25cblxuICAgICAgICAvLyNyZWdpb24gLS0tLSAgIFNlY3Rpb25zICYgUXVlc3Rpb25zICAgLS0tLVxuXG4gICAgICAgIHNlY3Rpb25zOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhPy5zZWN0aW9ucyB8fCBbXTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgY3VycmVudFNlY3Rpb246IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzdG9yZS5xdWVzdGlvbm5haXJlRGF0YSgpO1xuICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25zID0gZGF0YS5zZWN0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gc3RvcmUuY3VycmVudFNlY3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgcmV0dXJuIHNlY3Rpb25zW2luZGV4XSB8fCBudWxsO1xuICAgICAgICB9KSxcblxuICAgICAgICBjdXJyZW50UXVlc3Rpb246IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzdG9yZS5xdWVzdGlvbm5haXJlRGF0YSgpO1xuICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25zID0gZGF0YS5zZWN0aW9ucztcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gc3RvcmUuY3VycmVudFNlY3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHNlY3Rpb25zW2luZGV4XTtcbiAgICAgICAgICAgIGlmICghc2VjdGlvbikgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjb25zdCBxdWVzdGlvbkluZGV4ID0gc3RvcmUuY3VycmVudFF1ZXN0aW9uSW5kZXgoKTtcbiAgICAgICAgICAgIHJldHVybiBzZWN0aW9uLnF1ZXN0aW9uc1txdWVzdGlvbkluZGV4XSB8fCBudWxsO1xuICAgICAgICB9KSxcblxuICAgICAgICB0b3RhbFF1ZXN0aW9uc0NvdW50OiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgIGlmICghZGF0YSkgcmV0dXJuIDA7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5zZWN0aW9ucy5yZWR1Y2UoKHN1bSwgc2VjdGlvbikgPT4gc3VtICsgc2VjdGlvbi5xdWVzdGlvbnMubGVuZ3RoLCAwKTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgdG90YWxTZWN0aW9uc0NvdW50OiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhPy5zZWN0aW9ucy5sZW5ndGggfHwgMDtcbiAgICAgICAgfSksXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBQcm9ncmVzcyAgIC0tLS1cblxuICAgICAgICBwcm9ncmVzc01vZGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHN0b3JlLmNvbmZpZygpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlnVmFsdWUgPSBjb25maWc/LnByb2dyZXNzTW9kZTtcbiAgICAgICAgICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0b3JlLnN0cnVjdHVyZSgpO1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheVNldHRpbmdzID0gc3RydWN0dXJlPy5kaXNwbGF5U2V0dGluZ3M7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5nc1ZhbHVlID0gZGlzcGxheVNldHRpbmdzPy5wcm9ncmVzc01vZGU7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnVmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gY29uZmlnVmFsdWVcbiAgICAgICAgICAgICAgICA6IChkaXNwbGF5U2V0dGluZ3NWYWx1ZSAhPT0gdW5kZWZpbmVkID8gZGlzcGxheVNldHRpbmdzVmFsdWUgOiAnYW5zd2VyZWQnKTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgYW5zd2VyZWRRdWVzdGlvbnNDb3VudDogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHN0b3JlLnF1ZXN0aW9ubmFpcmVEYXRhKCk7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBzdG9yZS53aWRnZXRDb250YWluZXIoKTtcbiAgICAgICAgICAgIGlmICghZGF0YSB8fCAhY29udGFpbmVyPy5jb250ZXh0U2VydmljZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gY29udGFpbmVyLmNvbnRleHRTZXJ2aWNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50ID0gY29udGV4dFNlcnZpY2UuY2hhbmdlRXZlbnQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0RGF0YSA9IGNvbnRleHRTZXJ2aWNlLmRhdGEoKSB8fCB7fTtcblxuICAgICAgICAgICAgICAgIGxldCBhbnN3ZXJlZENvdW50ID0gMDtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBkYXRhLnNlY3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFBhdGggPSBxdWVzdGlvbi5xdWVzdGlvbi5pbnRlcmZhY2U/LnBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpZGdldFBhdGgpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldChjb250ZXh0RGF0YSwgd2lkZ2V0UGF0aCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRW1wdHkgPSB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9PT0gJycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnN3ZXJlZENvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYW5zd2VyZWRDb3VudDtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1F1ZXN0aW9ubmFpcmVWaWV3ZXJdIEVycm9yIGNvdW50aW5nIGFuc3dlcmVkIHF1ZXN0aW9uczonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuXG4gICAgICAgIHByb2dyZXNzUGVyY2VudGFnZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHN0b3JlLnF1ZXN0aW9ubmFpcmVEYXRhKCk7XG4gICAgICAgICAgICBpZiAoIWRhdGEpIHJldHVybiAwO1xuXG4gICAgICAgICAgICBjb25zdCB0b3RhbFF1ZXN0aW9ucyA9IGRhdGEuc2VjdGlvbnMucmVkdWNlKChzdW0sIHNlY3Rpb24pID0+IHN1bSArIHNlY3Rpb24ucXVlc3Rpb25zLmxlbmd0aCwgMCk7XG4gICAgICAgICAgICBpZiAodG90YWxRdWVzdGlvbnMgPT09IDApIHJldHVybiAwO1xuXG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgcHJvZ3Jlc3MgbW9kZVxuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gc3RvcmUuY29uZmlnKCk7XG4gICAgICAgICAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdG9yZS5zdHJ1Y3R1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ1ZhbHVlID0gY29uZmlnPy5wcm9ncmVzc01vZGU7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3MgPSBzdHJ1Y3R1cmU/LmRpc3BsYXlTZXR0aW5ncztcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5nc1ZhbHVlID0gZGlzcGxheVNldHRpbmdzPy5wcm9ncmVzc01vZGU7XG4gICAgICAgICAgICBjb25zdCBwcm9ncmVzc01vZGUgPSBjb25maWdWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBjb25maWdWYWx1ZVxuICAgICAgICAgICAgICAgIDogKGRpc3BsYXlTZXR0aW5nc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBkaXNwbGF5U2V0dGluZ3NWYWx1ZSA6ICdhbnN3ZXJlZCcpO1xuXG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgdmlldyBtb2RlXG4gICAgICAgICAgICBjb25zdCBjb25maWdNb2RlID0gY29uZmlnPy52aWV3TW9kZTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlID0gZGlzcGxheVNldHRpbmdzPy52aWV3TW9kZTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlID0gY29uZmlnTW9kZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBjb25maWdNb2RlXG4gICAgICAgICAgICAgICAgOiAoZGlzcGxheVNldHRpbmdzVmlld01vZGUgIT09IHVuZGVmaW5lZCA/IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlIDogJ3NpbmdsZS1wYWdlJyk7XG5cbiAgICAgICAgICAgIGlmIChwcm9ncmVzc01vZGUgPT09ICdhbnN3ZXJlZCcpIHtcbiAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgYW5zd2VyZWQgY291bnQgZGlyZWN0bHlcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBzdG9yZS53aWRnZXRDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lcj8uY29udGV4dFNlcnZpY2UpIHJldHVybiAwO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSBjb250YWluZXIuY29udGV4dFNlcnZpY2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHREYXRhID0gY29udGV4dFNlcnZpY2UuZGF0YSgpIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICBsZXQgYW5zd2VyZWRDb3VudCA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIGRhdGEuc2VjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRQYXRoID0gcXVlc3Rpb24ucXVlc3Rpb24uaW50ZXJmYWNlPy5wYXRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0UGF0aCkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldChjb250ZXh0RGF0YSwgd2lkZ2V0UGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNFbXB0eSA9IHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuc3dlcmVkQ291bnQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgoYW5zd2VyZWRDb3VudCAvIHRvdGFsUXVlc3Rpb25zKSAqIDEwMCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHJvZ3Jlc3NNb2RlID09PSAnbmF2aWdhdGlvbicpIHtcbiAgICAgICAgICAgICAgICBpZiAodmlld01vZGUgPT09ICdwYWdlLXBlci1ncm91cCcgfHwgdmlld01vZGUgPT09ICdzaWRlLW1lbnUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsU2VjdGlvbnMgPSBkYXRhLnNlY3Rpb25zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNlY3Rpb24gPSBzdG9yZS5jdXJyZW50U2VjdGlvbkluZGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKCgoY3VycmVudFNlY3Rpb24gKyAxKSAvIHRvdGFsU2VjdGlvbnMpICogMTAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmlld01vZGUgPT09ICdwYWdlLXBlci1xdWVzdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRRdWVzdGlvbkluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNJbmRleCA9IHN0b3JlLmN1cnJlbnRTZWN0aW9uSW5kZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFFJbmRleCA9IHN0b3JlLmN1cnJlbnRRdWVzdGlvbkluZGV4KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50U0luZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRRdWVzdGlvbkluZGV4ICs9IGRhdGEuc2VjdGlvbnNbaV0ucXVlc3Rpb25zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UXVlc3Rpb25JbmRleCArPSBjdXJyZW50UUluZGV4ICsgMTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgoY3VycmVudFF1ZXN0aW9uSW5kZXggLyB0b3RhbFF1ZXN0aW9ucykgKiAxMDApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSksXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBEaXNwbGF5IFNldHRpbmdzICAgLS0tLVxuXG4gICAgICAgIHNob3dQcm9ncmVzc0JhcjogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gc3RvcmUuY29uZmlnKCk7XG4gICAgICAgICAgICBjb25zdCBjb25maWdWYWx1ZSA9IGNvbmZpZz8uc2hvd1Byb2dyZXNzQmFyO1xuICAgICAgICAgICAgY29uc3Qgc3RydWN0dXJlID0gc3RvcmUuc3RydWN0dXJlKCk7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3MgPSBzdHJ1Y3R1cmU/LmRpc3BsYXlTZXR0aW5ncztcblxuICAgICAgICAgICAgY29uc3QgZGlzcGxheVNldHRpbmdzVmFsdWUgPSBkaXNwbGF5U2V0dGluZ3M/LnNob3dQcm9ncmVzc0JhcjtcbiAgICAgICAgICAgIHJldHVybiBjb25maWdWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBjb25maWdWYWx1ZVxuICAgICAgICAgICAgICAgIDogKGRpc3BsYXlTZXR0aW5nc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBkaXNwbGF5U2V0dGluZ3NWYWx1ZSA6IHRydWUpO1xuICAgICAgICB9KSxcblxuICAgICAgICBzaG93VGltZXI6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHN0b3JlLmNvbmZpZygpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlnVmFsdWUgPSBjb25maWc/LnRpbWVyPy5zaG93VGltZXI7XG4gICAgICAgICAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdG9yZS5zdHJ1Y3R1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5ncyA9IHN0cnVjdHVyZT8uZGlzcGxheVNldHRpbmdzO1xuXG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3NWYWx1ZSA9IGRpc3BsYXlTZXR0aW5ncz8uc2hvd1RpbWVyO1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ1ZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGNvbmZpZ1ZhbHVlXG4gICAgICAgICAgICAgICAgOiAoZGlzcGxheVNldHRpbmdzVmFsdWUgIT09IHVuZGVmaW5lZCA/IGRpc3BsYXlTZXR0aW5nc1ZhbHVlIDogZmFsc2UpO1xuICAgICAgICB9KSxcblxuICAgICAgICB0aW1lclRpbWVMaW1pdDogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gc3RvcmUuY29uZmlnKCk7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnPy50aW1lcj8udGltZUxpbWl0O1xuICAgICAgICB9KSxcblxuICAgICAgICBzaG93U2VjdGlvblRpdGxlczogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gc3RvcmUuY29uZmlnKCk7XG4gICAgICAgICAgICBjb25zdCBjb25maWdWYWx1ZSA9IGNvbmZpZz8uc2hvd1NlY3Rpb25UaXRsZXM7XG4gICAgICAgICAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdG9yZS5zdHJ1Y3R1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5ncyA9IHN0cnVjdHVyZT8uZGlzcGxheVNldHRpbmdzO1xuXG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3NWYWx1ZSA9IGRpc3BsYXlTZXR0aW5ncz8uc2hvd1NlY3Rpb25UaXRsZXM7XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnVmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gY29uZmlnVmFsdWVcbiAgICAgICAgICAgICAgICA6IChkaXNwbGF5U2V0dGluZ3NWYWx1ZSAhPT0gdW5kZWZpbmVkID8gZGlzcGxheVNldHRpbmdzVmFsdWUgOiB0cnVlKTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgc2hvd1F1ZXN0aW9uTnVtYmVyczogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gc3RvcmUuY29uZmlnKCk7XG4gICAgICAgICAgICBjb25zdCBjb25maWdWYWx1ZSA9IGNvbmZpZz8uc2hvd1F1ZXN0aW9uTnVtYmVycztcbiAgICAgICAgICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0b3JlLnN0cnVjdHVyZSgpO1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheVNldHRpbmdzID0gc3RydWN0dXJlPy5kaXNwbGF5U2V0dGluZ3M7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5nc1ZhbHVlID0gZGlzcGxheVNldHRpbmdzPy5zaG93UXVlc3Rpb25OdW1iZXJzO1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ1ZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGNvbmZpZ1ZhbHVlXG4gICAgICAgICAgICAgICAgOiAoZGlzcGxheVNldHRpbmdzVmFsdWUgIT09IHVuZGVmaW5lZCA/IGRpc3BsYXlTZXR0aW5nc1ZhbHVlIDogdHJ1ZSk7XG4gICAgICAgIH0pLFxuXG4gICAgICAgIHNob3dRdWVzdGlvbkNvdW50ZXI6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHN0b3JlLmNvbmZpZygpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlnVmFsdWUgPSBjb25maWc/LnNob3dRdWVzdGlvbkNvdW50ZXI7XG4gICAgICAgICAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdG9yZS5zdHJ1Y3R1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5ncyA9IHN0cnVjdHVyZT8uZGlzcGxheVNldHRpbmdzO1xuXG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3NWYWx1ZSA9IGRpc3BsYXlTZXR0aW5ncz8uc2hvd1F1ZXN0aW9uQ291bnRlcjtcbiAgICAgICAgICAgIHJldHVybiBjb25maWdWYWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBjb25maWdWYWx1ZVxuICAgICAgICAgICAgICAgIDogKGRpc3BsYXlTZXR0aW5nc1ZhbHVlICE9PSB1bmRlZmluZWQgPyBkaXNwbGF5U2V0dGluZ3NWYWx1ZSA6IGZhbHNlKTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgY3VycmVudFF1ZXN0aW9uUG9zaXRpb246IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzdG9yZS5xdWVzdGlvbm5haXJlRGF0YSgpO1xuICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm4geyBjdXJyZW50OiAwLCB0b3RhbDogMCB9O1xuXG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgdmlldyBtb2RlXG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBzdG9yZS5jb25maWcoKTtcbiAgICAgICAgICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0b3JlLnN0cnVjdHVyZSgpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlnTW9kZSA9IGNvbmZpZz8udmlld01vZGU7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3MgPSBzdHJ1Y3R1cmU/LmRpc3BsYXlTZXR0aW5ncztcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlID0gZGlzcGxheVNldHRpbmdzPy52aWV3TW9kZTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlID0gY29uZmlnTW9kZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBjb25maWdNb2RlXG4gICAgICAgICAgICAgICAgOiAoZGlzcGxheVNldHRpbmdzVmlld01vZGUgIT09IHVuZGVmaW5lZCA/IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlIDogJ3NpbmdsZS1wYWdlJyk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gZGF0YS5zZWN0aW9ucy5yZWR1Y2UoKHN1bSwgc2VjdGlvbikgPT4gc3VtICsgc2VjdGlvbi5xdWVzdGlvbnMubGVuZ3RoLCAwKTtcblxuICAgICAgICAgICAgaWYgKHZpZXdNb2RlID09PSAncGFnZS1wZXItcXVlc3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTSW5kZXggPSBzdG9yZS5jdXJyZW50U2VjdGlvbkluZGV4KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFFJbmRleCA9IHN0b3JlLmN1cnJlbnRRdWVzdGlvbkluZGV4KCk7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbnRTSW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50ICs9IGRhdGEuc2VjdGlvbnNbaV0ucXVlc3Rpb25zLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudCArPSBjdXJyZW50UUluZGV4ICsgMTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7IGN1cnJlbnQsIHRvdGFsIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7IGN1cnJlbnQ6IDAsIHRvdGFsIH07XG4gICAgICAgIH0pLFxuXG4gICAgICAgIHRpbWVyVGV4dDogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gc3RvcmUuY29uZmlnKCk7XG4gICAgICAgICAgICBjb25zdCB0aW1lTGltaXQgPSBjb25maWc/LnRpbWVyPy50aW1lTGltaXQ7XG4gICAgICAgICAgICBpZiAoIXRpbWVMaW1pdCkgcmV0dXJuICcnO1xuXG4gICAgICAgICAgICBjb25zdCBlbGFwc2VkID0gc3RvcmUudGltZXJFbGFwc2VkKCk7XG4gICAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSBNYXRoLm1heCgwLCB0aW1lTGltaXQgLSBlbGFwc2VkKTtcblxuICAgICAgICAgICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHJlbWFpbmluZyAvIDM2MDApO1xuICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKHJlbWFpbmluZyAlIDM2MDApIC8gNjApO1xuICAgICAgICAgICAgY29uc3Qgc2Vjb25kcyA9IHJlbWFpbmluZyAlIDYwO1xuXG4gICAgICAgICAgICBpZiAoaG91cnMgPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2hvdXJzfToke21pbnV0ZXMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke3NlY29uZHMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYCR7bWludXRlc306JHtzZWNvbmRzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgICAgICB9KSxcblxuICAgICAgICB0aW1lcldpZGdldDogY29tcHV0ZWQ8QVhQV2lkZ2V0Tm9kZSB8IG51bGw+KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHN0b3JlLmNvbmZpZygpO1xuICAgICAgICAgICAgY29uc3QgdGltZUxpbWl0ID0gY29uZmlnPy50aW1lcj8udGltZUxpbWl0O1xuICAgICAgICAgICAgaWYgKCF0aW1lTGltaXQpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCB3aWRnZXROb2RlOiBBWFBXaWRnZXROb2RlID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzdG9wd2F0Y2gnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdxdWVzdGlvbm5haXJlLXRpbWVyJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAndGltZXIuZWxhcHNlZCcsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBtb2RlOiAnY291bnQtZG93bicsXG4gICAgICAgICAgICAgICAgICAgIHRpbWVMaW1pdDogdGltZUxpbWl0LFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IHRpbWVMaW1pdCA+PSAzNjAwID8gJ2hoOm1tOnNzJyA6ICdtbTpzcycsXG4gICAgICAgICAgICAgICAgICAgIGF1dG9TdGFydDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NvbnRyb2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1vZGU6ICdlZGl0JyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiB3aWRnZXROb2RlO1xuICAgICAgICB9KSxcblxuICAgICAgICB2YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb246IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHN0b3JlLmNvbmZpZygpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlnVmFsdWUgPSBjb25maWc/LnZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0b3JlLnN0cnVjdHVyZSgpO1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheVNldHRpbmdzID0gc3RydWN0dXJlPy5kaXNwbGF5U2V0dGluZ3M7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5nc1ZhbHVlID0gZGlzcGxheVNldHRpbmdzPy52YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb247XG4gICAgICAgICAgICByZXR1cm4gY29uZmlnVmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gY29uZmlnVmFsdWVcbiAgICAgICAgICAgICAgICA6IChkaXNwbGF5U2V0dGluZ3NWYWx1ZSAhPT0gdW5kZWZpbmVkID8gZGlzcGxheVNldHRpbmdzVmFsdWUgOiB0cnVlKTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBOYXZpZ2F0aW9uICAgLS0tLVxuXG4gICAgICAgIGNhbk5hdmlnYXRlTmV4dDogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHN0b3JlLnF1ZXN0aW9ubmFpcmVEYXRhKCk7XG4gICAgICAgICAgICBpZiAoIWRhdGEpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHZpZXcgbW9kZVxuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gc3RvcmUuY29uZmlnKCk7XG4gICAgICAgICAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdG9yZS5zdHJ1Y3R1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ01vZGUgPSBjb25maWc/LnZpZXdNb2RlO1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheVNldHRpbmdzID0gc3RydWN0dXJlPy5kaXNwbGF5U2V0dGluZ3M7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3NWaWV3TW9kZSA9IGRpc3BsYXlTZXR0aW5ncz8udmlld01vZGU7XG4gICAgICAgICAgICBjb25zdCB2aWV3TW9kZSA9IGNvbmZpZ01vZGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gY29uZmlnTW9kZVxuICAgICAgICAgICAgICAgIDogKGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlICE9PSB1bmRlZmluZWQgPyBkaXNwbGF5U2V0dGluZ3NWaWV3TW9kZSA6ICdzaW5nbGUtcGFnZScpO1xuXG4gICAgICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGRhdGEuc2VjdGlvbnM7XG5cbiAgICAgICAgICAgIGlmICh2aWV3TW9kZSA9PT0gJ3BhZ2UtcGVyLWdyb3VwJyB8fCB2aWV3TW9kZSA9PT0gJ3NpZGUtbWVudScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U0luZGV4ID0gc3RvcmUuY3VycmVudFNlY3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U0luZGV4IDwgc2VjdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmlld01vZGUgPT09ICdwYWdlLXBlci1xdWVzdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U0luZGV4ID0gc3RvcmUuY3VycmVudFNlY3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRRSW5kZXggPSBzdG9yZS5jdXJyZW50UXVlc3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uID0gc2VjdGlvbnNbY3VycmVudFNJbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50U2VjdGlvbikgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFFJbmRleCA8IGN1cnJlbnRTZWN0aW9uLnF1ZXN0aW9ucy5sZW5ndGggLSAxIHx8XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTSW5kZXggPCBzZWN0aW9ucy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KSxcblxuICAgICAgICBjYW5OYXZpZ2F0ZVByZXZpb3VzOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgIGlmICghZGF0YSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBDYWxjdWxhdGUgdmlldyBtb2RlXG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBzdG9yZS5jb25maWcoKTtcbiAgICAgICAgICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0b3JlLnN0cnVjdHVyZSgpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlnTW9kZSA9IGNvbmZpZz8udmlld01vZGU7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3MgPSBzdHJ1Y3R1cmU/LmRpc3BsYXlTZXR0aW5ncztcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlID0gZGlzcGxheVNldHRpbmdzPy52aWV3TW9kZTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdNb2RlID0gY29uZmlnTW9kZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyBjb25maWdNb2RlXG4gICAgICAgICAgICAgICAgOiAoZGlzcGxheVNldHRpbmdzVmlld01vZGUgIT09IHVuZGVmaW5lZCA/IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlIDogJ3NpbmdsZS1wYWdlJyk7XG5cbiAgICAgICAgICAgIGlmICh2aWV3TW9kZSA9PT0gJ3BhZ2UtcGVyLWdyb3VwJyB8fCB2aWV3TW9kZSA9PT0gJ3NpZGUtbWVudScpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U0luZGV4ID0gc3RvcmUuY3VycmVudFNlY3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U0luZGV4ID4gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmlld01vZGUgPT09ICdwYWdlLXBlci1xdWVzdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UUluZGV4ID0gc3RvcmUuY3VycmVudFF1ZXN0aW9uSW5kZXgoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U0luZGV4ID0gc3RvcmUuY3VycmVudFNlY3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UUluZGV4ID4gMCB8fCBjdXJyZW50U0luZGV4ID4gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ2hlY2sgaWYgd2UncmUgb24gdGhlIGxhc3Qgc3RlcFxuICAgICAgICAgKi9cbiAgICAgICAgaXNMYXN0U3RlcDogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHN0b3JlLnF1ZXN0aW9ubmFpcmVEYXRhKCk7XG4gICAgICAgICAgICBpZiAoIWRhdGEpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHZpZXcgbW9kZVxuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gc3RvcmUuY29uZmlnKCk7XG4gICAgICAgICAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdG9yZS5zdHJ1Y3R1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ01vZGUgPSBjb25maWc/LnZpZXdNb2RlO1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheVNldHRpbmdzID0gc3RydWN0dXJlPy5kaXNwbGF5U2V0dGluZ3M7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3NWaWV3TW9kZSA9IGRpc3BsYXlTZXR0aW5ncz8udmlld01vZGU7XG4gICAgICAgICAgICBjb25zdCB2aWV3TW9kZSA9IGNvbmZpZ01vZGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gY29uZmlnTW9kZVxuICAgICAgICAgICAgICAgIDogKGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlICE9PSB1bmRlZmluZWQgPyBkaXNwbGF5U2V0dGluZ3NWaWV3TW9kZSA6ICdzaW5nbGUtcGFnZScpO1xuXG4gICAgICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGRhdGEuc2VjdGlvbnM7XG5cbiAgICAgICAgICAgIGlmICh2aWV3TW9kZSA9PT0gJ3NpbmdsZS1wYWdlJykge1xuICAgICAgICAgICAgICAgIC8vIEZvciBzaW5nbGUtcGFnZSwgd2UncmUgYWx3YXlzIG9uIHRoZSBsYXN0IHN0ZXBcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmlld01vZGUgPT09ICdwYWdlLXBlci1ncm91cCcgfHwgdmlld01vZGUgPT09ICdzaWRlLW1lbnUnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNJbmRleCA9IHN0b3JlLmN1cnJlbnRTZWN0aW9uSW5kZXgoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFNJbmRleCA+PSBzZWN0aW9ucy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2aWV3TW9kZSA9PT0gJ3BhZ2UtcGVyLXF1ZXN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTSW5kZXggPSBzdG9yZS5jdXJyZW50U2VjdGlvbkluZGV4KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFFJbmRleCA9IHN0b3JlLmN1cnJlbnRRdWVzdGlvbkluZGV4KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNlY3Rpb24gPSBzZWN0aW9uc1tjdXJyZW50U0luZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRTZWN0aW9uKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSBvbiB0aGUgbGFzdCBxdWVzdGlvbiBvZiB0aGUgbGFzdCBzZWN0aW9uXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNJbmRleCA9PT0gc2VjdGlvbnMubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UUluZGV4ID09PSBjdXJyZW50U2VjdGlvbi5xdWVzdGlvbnMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNrIGlmIGFsbCByZXF1aXJlZCBxdWVzdGlvbnMgYXJlIGFuc3dlcmVkXG4gICAgICAgICAqL1xuICAgICAgICBhcmVBbGxSZXF1aXJlZFF1ZXN0aW9uc0Fuc3dlcmVkOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHN0b3JlLndpZGdldENvbnRhaW5lcigpO1xuICAgICAgICAgICAgaWYgKCFkYXRhIHx8ICFjb250YWluZXI/LmNvbnRleHRTZXJ2aWNlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSBjb250YWluZXIuY29udGV4dFNlcnZpY2U7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGV4dERhdGEgPSBjb250ZXh0U2VydmljZS5kYXRhKCkgfHwge307XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgZGF0YS5zZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNoZWNrIHJlcXVpcmVkIHF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWVzdGlvbi5pc1JlcXVpcmVkKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdmlzaWJpbGl0eSBjb25kaXRpb24gKGlmIHF1ZXN0aW9uIGlzIG5vdCB2aXNpYmxlLCBza2lwKVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogSW1wbGVtZW50IHZpc2liaWxpdHkgY29uZGl0aW9uIGV2YWx1YXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBub3csIGNoZWNrIGFsbCByZXF1aXJlZCBxdWVzdGlvbnNcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkZ2V0UGF0aCA9IHF1ZXN0aW9uLnF1ZXN0aW9uLmludGVyZmFjZT8ucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0UGF0aCkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGNvbnRleHREYXRhLCB3aWRnZXRQYXRoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNFbXB0eSA9IHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tRdWVzdGlvbm5haXJlVmlld2VyXSBFcnJvciBjaGVja2luZyByZXF1aXJlZCBxdWVzdGlvbnM6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG5cbiAgICAgICAgLy8jZW5kcmVnaW9uXG4gICAgfSkpLFxuXG4gICAgd2l0aE1ldGhvZHMoXG4gICAgICAgIChcbiAgICAgICAgICAgIHN0b3JlLFxuICAgICAgICAgICAgcXVlc3Rpb25uYWlyZVNlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVNlcnZpY2UpLFxuICAgICAgICAgICAgcXVlc3Rpb25CYW5rU2VydmljZSA9IGluamVjdChBWE1RdWVzdGlvbkJhbmtJdGVtU2VydmljZSksXG4gICAgICAgICAgICB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpLFxuICAgICAgICAgICAgdHJhbnNsYXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKSxcbiAgICAgICAgKSA9PiAoe1xuICAgICAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBSZWdpc3RyYXRpb24gICAtLS0tXG5cbiAgICAgICAgICAgIHJlZ2lzdGVyRm9ybShmb3JtOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGZvcm0gfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZWdpc3RlcldpZGdldENvbnRhaW5lcihjb250YWluZXI6IEFYUFdpZGdldENvbnRhaW5lckNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgd2lkZ2V0Q29udGFpbmVyOiBjb250YWluZXIgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvLyNlbmRyZWdpb25cblxuICAgICAgICAgICAgLy8jcmVnaW9uIC0tLS0gICBEYXRhIExvYWRpbmcgICAtLS0tXG5cbiAgICAgICAgICAgIGFzeW5jIGxvYWRRdWVzdGlvbm5haXJlKGlkOiBzdHJpbmcsIGluaXRpYWxBbnN3ZXJzPzogUmVjb3JkPHN0cmluZywgYW55PiwgY29uZmlnPzogUXVlc3Rpb25uYWlyZVZpZXdlckNvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgaXNMb2FkaW5nOiB0cnVlLCBlcnJvcjogbnVsbCwgY29uZmlnOiBjb25maWcgfHwgbnVsbCB9KTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9ubmFpcmUgPSBhd2FpdCBxdWVzdGlvbm5haXJlU2VydmljZS5nZXRPbmUoaWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXN0aW9ubmFpcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUXVlc3Rpb25uYWlyZSBub3QgZm91bmQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdHVyZTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSA9IHF1ZXN0aW9ubmFpcmUuc3RydWN0dXJlIHx8IHsgc2VjdGlvbnM6IFtdIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbnNXaXRoUXVlc3Rpb25zOiBRdWVzdGlvbm5haXJlVmlld2VyU2VjdGlvbltdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUuc2VjdGlvbnMubWFwKGFzeW5jIChzZWN0aW9uLCBzZWN0aW9uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbnM6IFF1ZXN0aW9ubmFpcmVWaWV3ZXJRdWVzdGlvbltdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uaXRlbXMubWFwKGFzeW5jIChpdGVtLCBpdGVtSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRGV0YWlscyA9IGF3YWl0IHF1ZXN0aW9uQmFua1NlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0T25lKGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiBudWxsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXhCYXNlZFBhdGggPSBgYW5zd2Vycy4ke3NlY3Rpb25JbmRleH0tJHtpdGVtSW5kZXh9YDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdpZGdldEludGVyZmFjZSA9IHF1ZXN0aW9uRGV0YWlscz8uaW50ZXJmYWNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZGdldEludGVyZmFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBpdGVtLmlkID8gYGFuc3dlcnMuJHtpdGVtLmlkfWAgOiBpbmRleEJhc2VkUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gaXRlbS5pZCB8fCBgYW5zd2VyLSR7c2VjdGlvbkluZGV4fS0ke2l0ZW1JbmRleH1gO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IGV4aXN0aW5nIHZhbGlkYXRpb25zIGZyb20gb3B0aW9ucyBvciBkaXJlY3RseSBmcm9tIGludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9ucyA9IHdpZGdldEludGVyZmFjZS5vcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsaWRhdGlvbnMgPSBleGlzdGluZ09wdGlvbnMudmFsaWRhdGlvbnMgfHwgd2lkZ2V0SW50ZXJmYWNlLnZhbGlkYXRpb25zIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb25zID0gWy4uLmV4aXN0aW5nVmFsaWRhdGlvbnNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzUmVxdWlyZWRWYWxpZGF0aW9uID0gdmFsaWRhdGlvbnMuc29tZSh2ID0+IHYucnVsZSA9PT0gJ3JlcXVpcmVkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzUmVxdWlyZWRWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGx5IHJlYWRvbmx5IG1vZGUgZnJvbSBjb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1JlYWRvbmx5ID0gY29uZmlnPy5yZWFkb25seSA/PyBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldEludGVyZmFjZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ud2lkZ2V0SW50ZXJmYWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leGlzdGluZ09wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seTogaXNSZWFkb25seSB8fCBleGlzdGluZ09wdGlvbnMucmVhZG9ubHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uczogdmFsaWRhdGlvbnMubGVuZ3RoID4gMCA/IHZhbGlkYXRpb25zIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25CYW5rSXRlbUlkOiBpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uSWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXF1aXJlZDogaXRlbS5pc1JlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IGl0ZW0udmlzaWJpbGl0eUNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZENvbmRpdGlvbjogaXRlbS5yZXF1aXJlZENvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGU6IGl0ZW0uc2NvcmluZ092ZXJyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiBxdWVzdGlvbkRldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcXVlc3Rpb25EZXRhaWxzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHF1ZXN0aW9uRGV0YWlscy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBxdWVzdGlvbkRldGFpbHMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmaWN1bHR5OiBxdWVzdGlvbkRldGFpbHMuZGlmZmljdWx0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdUeXBlOiBxdWVzdGlvbkRldGFpbHMuc2NvcmluZ1R5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2U6IHdpZGdldEludGVyZmFjZSB8fCBxdWVzdGlvbkRldGFpbHMuaW50ZXJmYWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0ucXVlc3Rpb25CYW5rSXRlbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdRdWVzdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmljdWx0eTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IHNlY3Rpb24udmlzaWJpbGl0eUNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25zOiBxdWVzdGlvbnMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbm5haXJlRGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBxdWVzdGlvbm5haXJlLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBxdWVzdGlvbm5haXJlLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBxdWVzdGlvbm5haXJlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHF1ZXN0aW9ubmFpcmUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnNXaXRoUXVlc3Rpb25zLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nVHlwZTogcXVlc3Rpb25uYWlyZS5zY29yaW5nVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzaW5nU2NvcmU6IHF1ZXN0aW9ubmFpcmUucGFzc2luZ1Njb3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIGFuc3dlcnMgaW4gd2lkZ2V0IGNvbnRhaW5lciBjb250ZXh0IGlmIHByb3ZpZGVkXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbml0aWFsQW5zd2VycyAmJiBPYmplY3Qua2V5cyhpbml0aWFsQW5zd2VycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gc3RvcmUud2lkZ2V0Q29udGFpbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyPy5jb250ZXh0U2VydmljZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gY29udGFpbmVyLmNvbnRleHRTZXJ2aWNlLmRhdGEoKSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0Fuc3dlcnMgPSAoY3VycmVudERhdGEgYXMgYW55KS5hbnN3ZXJzIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lcmdlZERhdGEgPSB7IC4uLmN1cnJlbnREYXRhLCBhbnN3ZXJzOiB7IC4uLmV4aXN0aW5nQW5zd2VycywgLi4uaW5pdGlhbEFuc3dlcnMgfSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5jb250ZXh0U2VydmljZS5zZXQobWVyZ2VkRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBsb2FkIHF1ZXN0aW9ubmFpcmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYXN5bmMgbG9hZFN0cnVjdHVyZShzdHJ1Y3R1cmU6IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUsIGNvbmZpZz86IFF1ZXN0aW9ubmFpcmVWaWV3ZXJDb25maWcsIGluaXRpYWxBbnN3ZXJzPzogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgaXNMb2FkaW5nOiB0cnVlLCBlcnJvcjogbnVsbCwgc3RydWN0dXJlLCBjb25maWc6IGNvbmZpZyB8fCBudWxsIH0pO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUuc2VjdGlvbnMgfHwgc3RydWN0dXJlLnNlY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9ubmFpcmVEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHJldmlldycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnUHJldmlldycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdxdWVzdGlvbm5haXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbnNXaXRoUXVlc3Rpb25zOiBRdWVzdGlvbm5haXJlVmlld2VyU2VjdGlvbltdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUuc2VjdGlvbnMubWFwKGFzeW5jIChzZWN0aW9uLCBzZWN0aW9uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbnM6IFF1ZXN0aW9ubmFpcmVWaWV3ZXJRdWVzdGlvbltdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWN0aW9uLml0ZW1zIHx8IFtdKS5tYXAoYXN5bmMgKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25EZXRhaWxzID0gYXdhaXQgcXVlc3Rpb25CYW5rU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRPbmUoaXRlbS5xdWVzdGlvbkJhbmtJdGVtSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKCgpID0+IG51bGwpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleEJhc2VkUGF0aCA9IGBhbnN3ZXJzLiR7c2VjdGlvbkluZGV4fS0ke2l0ZW1JbmRleH1gO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2lkZ2V0SW50ZXJmYWNlID0gaXRlbS5pbnRlcmZhY2VPdmVycmlkZSB8fCBxdWVzdGlvbkRldGFpbHM/LmludGVyZmFjZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZGdldEludGVyZmFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBpdGVtLmlkID8gYGFuc3dlcnMuJHtpdGVtLmlkfWAgOiBpbmRleEJhc2VkUGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gaXRlbS5pZCB8fCBgYW5zd2VyLSR7c2VjdGlvbkluZGV4fS0ke2l0ZW1JbmRleH1gO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IGV4aXN0aW5nIHZhbGlkYXRpb25zIGZyb20gb3B0aW9ucyBvciBkaXJlY3RseSBmcm9tIGludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9ucyA9IHdpZGdldEludGVyZmFjZS5vcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsaWRhdGlvbnMgPSBleGlzdGluZ09wdGlvbnMudmFsaWRhdGlvbnMgfHwgd2lkZ2V0SW50ZXJmYWNlLnZhbGlkYXRpb25zIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb25zID0gWy4uLmV4aXN0aW5nVmFsaWRhdGlvbnNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzUmVxdWlyZWRWYWxpZGF0aW9uID0gdmFsaWRhdGlvbnMuc29tZSh2ID0+IHYucnVsZSA9PT0gJ3JlcXVpcmVkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzUmVxdWlyZWRWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFwcGx5IHJlYWRvbmx5IG1vZGUgZnJvbSBjb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1JlYWRvbmx5ID0gY29uZmlnPy5yZWFkb25seSA/PyBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldEludGVyZmFjZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ud2lkZ2V0SW50ZXJmYWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leGlzdGluZ09wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seTogaXNSZWFkb25seSB8fCBleGlzdGluZ09wdGlvbnMucmVhZG9ubHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uczogdmFsaWRhdGlvbnMubGVuZ3RoID4gMCA/IHZhbGlkYXRpb25zIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRGF0YSA9IHF1ZXN0aW9uRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcXVlc3Rpb25EZXRhaWxzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcXVlc3Rpb25EZXRhaWxzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcXVlc3Rpb25EZXRhaWxzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmaWN1bHR5OiBxdWVzdGlvbkRldGFpbHMuZGlmZmljdWx0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1R5cGU6IHF1ZXN0aW9uRGV0YWlscy5zY29yaW5nVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlOiB3aWRnZXRJbnRlcmZhY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5xdWVzdGlvbkJhbmtJdGVtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnUXVlc3Rpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmaWN1bHR5OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JpbmdUeXBlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZTogd2lkZ2V0SW50ZXJmYWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25CYW5rSXRlbUlkOiBpdGVtLnF1ZXN0aW9uQmFua0l0ZW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uSWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXF1aXJlZDogaXRlbS5pc1JlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IGl0ZW0udmlzaWJpbGl0eUNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZENvbmRpdGlvbjogaXRlbS5yZXF1aXJlZENvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29yaW5nT3ZlcnJpZGU6IGl0ZW0uc2NvcmluZ092ZXJyaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uOiBxdWVzdGlvbkRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzZWN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc2VjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IHNlY3Rpb24ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDb25kaXRpb246IHNlY3Rpb24udmlzaWJpbGl0eUNvbmRpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25zOiBxdWVzdGlvbnMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbm5haXJlRGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAncHJldmlldycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdQcmV2aWV3JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdxdWVzdGlvbm5haXJlJyBhcyBjb25zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uczogc2VjdGlvbnNXaXRoUXVlc3Rpb25zLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCBhbnN3ZXJzIGluIHdpZGdldCBjb250YWluZXIgY29udGV4dCBpZiBwcm92aWRlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbEFuc3dlcnMgJiYgT2JqZWN0LmtleXMoaW5pdGlhbEFuc3dlcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHN0b3JlLndpZGdldENvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcj8uY29udGV4dFNlcnZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IGNvbnRhaW5lci5jb250ZXh0U2VydmljZS5kYXRhKCkgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdBbnN3ZXJzID0gKGN1cnJlbnREYXRhIGFzIGFueSkuYW5zd2VycyB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtZXJnZWREYXRhID0geyAuLi5jdXJyZW50RGF0YSwgYW5zd2VyczogeyAuLi5leGlzdGluZ0Fuc3dlcnMsIC4uLmluaXRpYWxBbnN3ZXJzIH0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuY29udGV4dFNlcnZpY2Uuc2V0KG1lcmdlZERhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1F1ZXN0aW9ubmFpcmVWaWV3ZXJdIEVycm9yIGxvYWRpbmcgc3RydWN0dXJlOicsIGVycik7XG4gICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnIubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGxvYWQgc3RydWN0dXJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgICAgICAvLyNyZWdpb24gLS0tLSAgIFZhbGlkYXRpb24gICAtLS0tXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2hlY2sgaWYgYSBxdWVzdGlvbiBpcyB2aXNpYmxlIGJhc2VkIG9uIHZpc2liaWxpdHkgY29uZGl0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlzUXVlc3Rpb25WaXNpYmxlKHF1ZXN0aW9uOiBRdWVzdGlvbm5haXJlVmlld2VyUXVlc3Rpb24pOiBib29sZWFuIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBJbXBsZW1lbnQgdmlzaWJpbGl0eSBjb25kaXRpb24gZXZhbHVhdGlvblxuICAgICAgICAgICAgICAgIC8vIEZvciBub3csIHJldHVybiB0cnVlIChhbGwgcXVlc3Rpb25zIGFyZSB2aXNpYmxlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBHZXQgdmlzaWJsZSBxdWVzdGlvbnMgZm9yIGN1cnJlbnQgcGFnZSBiYXNlZCBvbiB2aWV3IG1vZGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ2V0VmlzaWJsZVF1ZXN0aW9ucygpOiBRdWVzdGlvbm5haXJlVmlld2VyUXVlc3Rpb25bXSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHN0b3JlLnF1ZXN0aW9ubmFpcmVEYXRhKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm4gW107XG5cbiAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgdmlldyBtb2RlIGZyb20gY29uZmlnL3N0cnVjdHVyZVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHN0b3JlLmNvbmZpZygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0b3JlLnN0cnVjdHVyZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ01vZGUgPSBjb25maWc/LnZpZXdNb2RlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5ncyA9IHN0cnVjdHVyZT8uZGlzcGxheVNldHRpbmdzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlID0gZGlzcGxheVNldHRpbmdzPy52aWV3TW9kZTtcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3TW9kZSA9IGNvbmZpZ01vZGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICA/IGNvbmZpZ01vZGVcbiAgICAgICAgICAgICAgICAgICAgOiAoZGlzcGxheVNldHRpbmdzVmlld01vZGUgIT09IHVuZGVmaW5lZCA/IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlIDogJ3NpbmdsZS1wYWdlJyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGRhdGEuc2VjdGlvbnM7XG4gICAgICAgICAgICAgICAgY29uc3QgdmlzaWJsZVF1ZXN0aW9uczogUXVlc3Rpb25uYWlyZVZpZXdlclF1ZXN0aW9uW10gPSBbXTtcblxuICAgICAgICAgICAgICAgIGlmICh2aWV3TW9kZSA9PT0gJ3NpbmdsZS1wYWdlJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbGwgcXVlc3Rpb25zIGluIGFsbCBzZWN0aW9uc1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1F1ZXN0aW9uVmlzaWJsZShxdWVzdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVF1ZXN0aW9ucy5wdXNoKHF1ZXN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZpZXdNb2RlID09PSAncGFnZS1wZXItZ3JvdXAnIHx8IHZpZXdNb2RlID09PSAnc2lkZS1tZW51Jykge1xuICAgICAgICAgICAgICAgICAgICAvLyBRdWVzdGlvbnMgaW4gY3VycmVudCBzZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTSW5kZXggPSBzdG9yZS5jdXJyZW50U2VjdGlvbkluZGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uID0gc2VjdGlvbnNbY3VycmVudFNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2VjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBjdXJyZW50U2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1F1ZXN0aW9uVmlzaWJsZShxdWVzdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVF1ZXN0aW9ucy5wdXNoKHF1ZXN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZpZXdNb2RlID09PSAncGFnZS1wZXItcXVlc3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnQgcXVlc3Rpb24gb25seVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U0luZGV4ID0gc3RvcmUuY3VycmVudFNlY3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UUluZGV4ID0gc3RvcmUuY3VycmVudFF1ZXN0aW9uSW5kZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNlY3Rpb24gPSBzZWN0aW9uc1tjdXJyZW50U0luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UXVlc3Rpb24gPSBjdXJyZW50U2VjdGlvbi5xdWVzdGlvbnNbY3VycmVudFFJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFF1ZXN0aW9uICYmIHRoaXMuaXNRdWVzdGlvblZpc2libGUoY3VycmVudFF1ZXN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVRdWVzdGlvbnMucHVzaChjdXJyZW50UXVlc3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZpc2libGVRdWVzdGlvbnM7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFZhbGlkYXRlIGEgc2luZ2xlIHF1ZXN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFzeW5jIHZhbGlkYXRlUXVlc3Rpb24ocXVlc3Rpb246IFF1ZXN0aW9ubmFpcmVWaWV3ZXJRdWVzdGlvbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHN0b3JlLndpZGdldENvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyPy5jb250ZXh0U2VydmljZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1dpZGdldCBjb250YWluZXIgbm90IGF2YWlsYWJsZSc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSBjb250YWluZXIuY29udGV4dFNlcnZpY2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHREYXRhID0gY29udGV4dFNlcnZpY2UuZGF0YSgpIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRQYXRoID0gcXVlc3Rpb24ucXVlc3Rpb24uaW50ZXJmYWNlPy5wYXRoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0UGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7IC8vIE5vIHdpZGdldCBwYXRoLCBza2lwIHZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGNvbnRleHREYXRhLCB3aWRnZXRQYXRoKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayByZXF1aXJlZCB2YWxpZGF0aW9uXG4gICAgICAgICAgICAgICAgICAgIGlmIChxdWVzdGlvbi5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0VtcHR5ID0gdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IEFkZCBvdGhlciB2YWxpZGF0aW9uIHJ1bGVzIGZyb20gd2lkZ2V0IGludGVyZmFjZVxuICAgICAgICAgICAgICAgICAgICAvLyBGb3Igbm93LCBvbmx5IHJlcXVpcmVkIHZhbGlkYXRpb24gaXMgaW1wbGVtZW50ZWRcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUXVlc3Rpb25uYWlyZVZpZXdlcl0gRXJyb3IgdmFsaWRhdGluZyBxdWVzdGlvbjonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnVmFsaWRhdGlvbiBlcnJvciBvY2N1cnJlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBWYWxpZGF0ZSBhbGwgdmlzaWJsZSBxdWVzdGlvbnMgb24gY3VycmVudCBwYWdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFzeW5jIHZhbGlkYXRlQ3VycmVudFBhZ2UoKTogUHJvbWlzZTxRdWVzdGlvbm5haXJlVmFsaWRhdGlvblJlc3VsdD4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm0gPSBzdG9yZS5mb3JtKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFmb3JtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignW1F1ZXN0aW9ubmFpcmVWaWV3ZXJdIEZvcm0gbm90IGF2YWlsYWJsZSBmb3IgdmFsaWRhdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBlcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gR2V0IHZpc2libGUgcXVlc3Rpb25zXG4gICAgICAgICAgICAgICAgY29uc3QgdmlzaWJsZVF1ZXN0aW9ucyA9IHRoaXMuZ2V0VmlzaWJsZVF1ZXN0aW9ucygpO1xuXG4gICAgICAgICAgICAgICAgLy8gR2V0IHNlY3Rpb25zIGZvciBsb29rdXBcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgZXJyb3JzOiBbXSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGRhdGEuc2VjdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAvLyBWYWxpZGF0ZSBmb3JtIGZpcnN0IHRvIHRyaWdnZXIgdmFsaWRhdGlvbiAodGhpcyBlbnN1cmVzIGZvcm0gc3RhdGUgaXMgdXBkYXRlZClcbiAgICAgICAgICAgICAgICBhd2FpdCBmb3JtLnZhbGlkYXRlKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBNYW51YWxseSB2YWxpZGF0ZSBlYWNoIHZpc2libGUgcXVlc3Rpb25cbiAgICAgICAgICAgICAgICAvLyBUaGUgZm9ybSB2YWxpZGF0aW9uIGRvZXNuJ3QgcHJvdmlkZSBwYXRocyBpbiB0aGUgcnVsZXMsIHNvIHdlIHZhbGlkYXRlIG1hbnVhbGx5XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JzOiBRdWVzdGlvbm5haXJlVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBzdG9yZS53aWRnZXRDb250YWluZXIoKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXI/LmNvbnRleHRTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gY29udGFpbmVyLmNvbnRleHRTZXJ2aWNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0RGF0YSA9IGNvbnRleHRTZXJ2aWNlLmRhdGEoKSB8fCB7fTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHZpc2libGVRdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFBhdGggPSBxdWVzdGlvbi5xdWVzdGlvbi5pbnRlcmZhY2U/LnBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpZGdldFBhdGgpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldChjb250ZXh0RGF0YSwgd2lkZ2V0UGF0aCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHJlcXVpcmVkIHZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVzdGlvbi5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNFbXB0eSA9IHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHNlY3Rpb25zLmZpbmQocyA9PiBzLmlkID09PSBxdWVzdGlvbi5zZWN0aW9uSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvblRpdGxlID0gcXVlc3Rpb24ucXVlc3Rpb24udGl0bGUgfHwgJ1RoaXMgZmllbGQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBhd2FpdCB0cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQGFjb3JleDp2YWxpZGF0aW9uLm1lc3NhZ2VzLnJlcXVpcmVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGAke3F1ZXN0aW9uVGl0bGV9IGlzIHJlcXVpcmVkYDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHt7IHRpdGxlIH19IHBsYWNlaG9sZGVyIGlmIHByZXNlbnQsIG90aGVyd2lzZSB1c2UgdGhlIG1lc3NhZ2UgYXMtaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ3t7IHRpdGxlIH19JylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZXJyb3JNZXNzYWdlLnJlcGxhY2UoJ3t7IHRpdGxlIH19JywgcXVlc3Rpb25UaXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZXJyb3JNZXNzYWdlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHF1ZXN0aW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25UaXRsZTogcXVlc3Rpb24ucXVlc3Rpb24udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uSWQ6IHNlY3Rpb24/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvblRpdGxlOiBzZWN0aW9uPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmaW5hbEVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBBZGQgb3RoZXIgdmFsaWRhdGlvbiBydWxlcyBmcm9tIHdpZGdldCBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgdmFsaWRhdGlvbkVycm9yczogZXJyb3JzIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF3YWl0IHRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIudmFsaWRhdGlvbi5jdXJyZW50LXBhZ2UtZXJyb3InXG4gICAgICAgICAgICAgICAgICAgICkgfHwgYFBsZWFzZSBjb21wbGV0ZSAke2Vycm9ycy5sZW5ndGh9IHJlcXVpcmVkIHF1ZXN0aW9uKHMpIG9uIHRoaXMgcGFnZS5gO1xuXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhd2FpdCB0cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci52YWxpZGF0aW9uLmVycm9yLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCAnVmFsaWRhdGlvbiBFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lT3V0OiA1MDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBlcnJvcnMubGVuZ3RoID09PSAwLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVmFsaWRhdGUgYWxsIHF1ZXN0aW9ucyBpbiBlbnRpcmUgcXVlc3Rpb25uYWlyZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhc3luYyB2YWxpZGF0ZUFsbFF1ZXN0aW9ucygpOiBQcm9taXNlPFF1ZXN0aW9ubmFpcmVWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybSA9IHN0b3JlLmZvcm0oKTtcbiAgICAgICAgICAgICAgICBpZiAoIWZvcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgZXJyb3JzOiBbXSB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzdG9yZS5xdWVzdGlvbm5haXJlRGF0YSgpO1xuICAgICAgICAgICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBlcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgZm9ybSBmaXJzdCB0byB0cmlnZ2VyIHZhbGlkYXRpb24gKHRoaXMgZW5zdXJlcyBmb3JtIHN0YXRlIGlzIHVwZGF0ZWQpXG4gICAgICAgICAgICAgICAgYXdhaXQgZm9ybS52YWxpZGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gTWFudWFsbHkgdmFsaWRhdGUgYWxsIHZpc2libGUgcXVlc3Rpb25zXG4gICAgICAgICAgICAgICAgLy8gVGhlIGZvcm0gdmFsaWRhdGlvbiBkb2Vzbid0IHByb3ZpZGUgcGF0aHMgaW4gdGhlIHJ1bGVzLCBzbyB3ZSB2YWxpZGF0ZSBtYW51YWxseVxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yczogUXVlc3Rpb25uYWlyZVZhbGlkYXRpb25FcnJvcltdID0gW107XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gc3RvcmUud2lkZ2V0Q29udGFpbmVyKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyPy5jb250ZXh0U2VydmljZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0U2VydmljZSA9IGNvbnRhaW5lci5jb250ZXh0U2VydmljZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGV4dERhdGEgPSBjb250ZXh0U2VydmljZS5kYXRhKCkgfHwge307XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIGRhdGEuc2VjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGluY2x1ZGUgdmlzaWJsZSBxdWVzdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNRdWVzdGlvblZpc2libGUocXVlc3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFBhdGggPSBxdWVzdGlvbi5xdWVzdGlvbi5pbnRlcmZhY2U/LnBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3aWRnZXRQYXRoKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGNvbnRleHREYXRhLCB3aWRnZXRQYXRoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHJlcXVpcmVkIHZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVlc3Rpb24uaXNSZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0VtcHR5ID0gdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvblRpdGxlID0gcXVlc3Rpb24ucXVlc3Rpb24udGl0bGUgfHwgJ1RoaXMgZmllbGQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYXdhaXQgdHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdAYWNvcmV4OnZhbGlkYXRpb24ubWVzc2FnZXMucmVxdWlyZWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGAke3F1ZXN0aW9uVGl0bGV9IGlzIHJlcXVpcmVkYDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSB7eyB0aXRsZSB9fSBwbGFjZWhvbGRlciBpZiBwcmVzZW50LCBvdGhlcndpc2UgdXNlIHRoZSBtZXNzYWdlIGFzLWlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5hbEVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZS5pbmNsdWRlcygne3sgdGl0bGUgfX0nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZXJyb3JNZXNzYWdlLnJlcGxhY2UoJ3t7IHRpdGxlIH19JywgcXVlc3Rpb25UaXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGVycm9yTWVzc2FnZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHF1ZXN0aW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uVGl0bGU6IHF1ZXN0aW9uLnF1ZXN0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25JZDogc2VjdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uVGl0bGU6IHNlY3Rpb24udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZpbmFsRXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBBZGQgb3RoZXIgdmFsaWRhdGlvbiBydWxlcyBmcm9tIHdpZGdldCBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgdmFsaWRhdGlvbkVycm9yczogZXJyb3JzIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGF3YWl0IHRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIudmFsaWRhdGlvbi5hbGwtcXVlc3Rpb25zLWVycm9yJ1xuICAgICAgICAgICAgICAgICAgICApIHx8IGBQbGVhc2UgY29tcGxldGUgJHtlcnJvcnMubGVuZ3RofSByZXF1aXJlZCBxdWVzdGlvbihzKSBpbiB0aGUgcXVlc3Rpb25uYWlyZS5gO1xuXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhd2FpdCB0cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci52YWxpZGF0aW9uLmVycm9yLXRpdGxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCAnVmFsaWRhdGlvbiBFcnJvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lT3V0OiA1MDAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZU91dFByb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBlcnJvcnMubGVuZ3RoID09PSAwLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcnMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgICAgICAgICAvLyNyZWdpb24gLS0tLSAgIE5hdmlnYXRpb24gICAtLS0tXG5cbiAgICAgICAgICAgIGFzeW5jIG5hdmlnYXRlTmV4dCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdGhpcy52YWxpZGF0ZUN1cnJlbnRQYWdlKCk7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzdG9yZS5xdWVzdGlvbm5haXJlRGF0YSgpO1xuICAgICAgICAgICAgICAgIGlmICghZGF0YSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHZpZXcgbW9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHN0b3JlLmNvbmZpZygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0b3JlLnN0cnVjdHVyZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZ01vZGUgPSBjb25maWc/LnZpZXdNb2RlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5ncyA9IHN0cnVjdHVyZT8uZGlzcGxheVNldHRpbmdzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlID0gZGlzcGxheVNldHRpbmdzPy52aWV3TW9kZTtcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3TW9kZSA9IGNvbmZpZ01vZGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICA/IGNvbmZpZ01vZGVcbiAgICAgICAgICAgICAgICAgICAgOiAoZGlzcGxheVNldHRpbmdzVmlld01vZGUgIT09IHVuZGVmaW5lZCA/IGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlIDogJ3NpbmdsZS1wYWdlJyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGRhdGEuc2VjdGlvbnM7XG5cbiAgICAgICAgICAgICAgICBpZiAodmlld01vZGUgPT09ICdwYWdlLXBlci1ncm91cCcgfHwgdmlld01vZGUgPT09ICdzaWRlLW1lbnUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTSW5kZXggPSBzdG9yZS5jdXJyZW50U2VjdGlvbkluZGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U0luZGV4IDwgc2VjdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWN0aW9uSW5kZXg6IGN1cnJlbnRTSW5kZXggKyAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRRdWVzdGlvbkluZGV4OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmlld01vZGUgPT09ICdwYWdlLXBlci1xdWVzdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNJbmRleCA9IHN0b3JlLmN1cnJlbnRTZWN0aW9uSW5kZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFFJbmRleCA9IHN0b3JlLmN1cnJlbnRRdWVzdGlvbkluZGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWN0aW9uID0gc2VjdGlvbnNbY3VycmVudFNJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3VycmVudFNlY3Rpb24pIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFFJbmRleCA8IGN1cnJlbnRTZWN0aW9uLnF1ZXN0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGN1cnJlbnRRdWVzdGlvbkluZGV4OiBjdXJyZW50UUluZGV4ICsgMSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRTSW5kZXggPCBzZWN0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlY3Rpb25JbmRleDogY3VycmVudFNJbmRleCArIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFF1ZXN0aW9uSW5kZXg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYXN5bmMgbmF2aWdhdGVQcmV2aW91cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB2aWV3IG1vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBzdG9yZS5jb25maWcoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdG9yZS5zdHJ1Y3R1cmUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWdNb2RlID0gY29uZmlnPy52aWV3TW9kZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3MgPSBzdHJ1Y3R1cmU/LmRpc3BsYXlTZXR0aW5ncztcbiAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5U2V0dGluZ3NWaWV3TW9kZSA9IGRpc3BsYXlTZXR0aW5ncz8udmlld01vZGU7XG4gICAgICAgICAgICAgICAgY29uc3Qgdmlld01vZGUgPSBjb25maWdNb2RlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBjb25maWdNb2RlXG4gICAgICAgICAgICAgICAgICAgIDogKGRpc3BsYXlTZXR0aW5nc1ZpZXdNb2RlICE9PSB1bmRlZmluZWQgPyBkaXNwbGF5U2V0dGluZ3NWaWV3TW9kZSA6ICdzaW5nbGUtcGFnZScpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSBkYXRhLnNlY3Rpb25zO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdNb2RlID09PSAncGFnZS1wZXItZ3JvdXAnIHx8IHZpZXdNb2RlID09PSAnc2lkZS1tZW51Jykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U0luZGV4ID0gc3RvcmUuY3VycmVudFNlY3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VjdGlvbkluZGV4OiBjdXJyZW50U0luZGV4IC0gMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UXVlc3Rpb25JbmRleDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZpZXdNb2RlID09PSAncGFnZS1wZXItcXVlc3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRRSW5kZXggPSBzdG9yZS5jdXJyZW50UXVlc3Rpb25JbmRleCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U0luZGV4ID0gc3RvcmUuY3VycmVudFNlY3Rpb25JbmRleCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBjdXJyZW50UXVlc3Rpb25JbmRleDogY3VycmVudFFJbmRleCAtIDEgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50U0luZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldlNlY3Rpb24gPSBzZWN0aW9uc1tjdXJyZW50U0luZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlY3Rpb25JbmRleDogY3VycmVudFNJbmRleCAtIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFF1ZXN0aW9uSW5kZXg6IHByZXZTZWN0aW9uLnF1ZXN0aW9ucy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2hlY2sgaWYgY3VycmVudCBzZWN0aW9uIGlzIHZhbGlkICh3aXRob3V0IHNob3dpbmcgdG9hc3QpXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGFzeW5jIGlzQ3VycmVudFNlY3Rpb25WYWxpZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtID0gc3RvcmUuZm9ybSgpO1xuICAgICAgICAgICAgICAgIGlmICghZm9ybSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBHZXQgdmlzaWJsZSBxdWVzdGlvbnNcbiAgICAgICAgICAgICAgICBjb25zdCB2aXNpYmxlUXVlc3Rpb25zID0gdGhpcy5nZXRWaXNpYmxlUXVlc3Rpb25zKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBHZXQgc2VjdGlvbnMgZm9yIGxvb2t1cFxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBzdG9yZS5xdWVzdGlvbm5haXJlRGF0YSgpO1xuICAgICAgICAgICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSBkYXRhLnNlY3Rpb25zO1xuXG4gICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgZm9ybSBmaXJzdCB0byB0cmlnZ2VyIHZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICBhd2FpdCBmb3JtLnZhbGlkYXRlKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBNYW51YWxseSB2YWxpZGF0ZSBlYWNoIHZpc2libGUgcXVlc3Rpb25cbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBzdG9yZS53aWRnZXRDb250YWluZXIoKTtcblxuICAgICAgICAgICAgICAgIGlmIChjb250YWluZXI/LmNvbnRleHRTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gY29udGFpbmVyLmNvbnRleHRTZXJ2aWNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0RGF0YSA9IGNvbnRleHRTZXJ2aWNlLmRhdGEoKSB8fCB7fTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHZpc2libGVRdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFBhdGggPSBxdWVzdGlvbi5xdWVzdGlvbi5pbnRlcmZhY2U/LnBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpZGdldFBhdGgpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldChjb250ZXh0RGF0YSwgd2lkZ2V0UGF0aCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHJlcXVpcmVkIHZhbGlkYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVzdGlvbi5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNFbXB0eSA9IHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDaGVjayBpZiBhIHNlY3Rpb24gY2FuIGJlIG5hdmlnYXRlZCB0b1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhc3luYyBpc1NlY3Rpb25OYXZpZ2FibGUoc2VjdGlvbkluZGV4OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25zID0gZGF0YS5zZWN0aW9ucztcbiAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbkluZGV4IDwgMCB8fCBzZWN0aW9uSW5kZXggPj0gc2VjdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBJZiBuYXZpZ2F0aW5nIHRvIGN1cnJlbnQgc2VjdGlvbiwgYWx3YXlzIGFsbG93ZWRcbiAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbkluZGV4ID09PSBzdG9yZS5jdXJyZW50U2VjdGlvbkluZGV4KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gSWYgdmFsaWRhdGlvbiBiZWZvcmUgbmF2aWdhdGlvbiBpcyBkaXNhYmxlZCwgYWx3YXlzIGFsbG93ZWRcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0ZUJlZm9yZU5hdiA9IHN0b3JlLnZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdGVCZWZvcmVOYXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgY3VycmVudCBzZWN0aW9uIGlzIHZhbGlkXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaXNDdXJyZW50U2VjdGlvblZhbGlkKCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhc3luYyBuYXZpZ2F0ZVRvU2VjdGlvbihpbmRleDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHN0b3JlLnF1ZXN0aW9ubmFpcmVEYXRhKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZWN0aW9ucyA9IGRhdGEuc2VjdGlvbnM7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIG5hdmlnYXRpb24gaXMgYWxsb3dlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGNhbk5hdmlnYXRlID0gYXdhaXQgdGhpcy5pc1NlY3Rpb25OYXZpZ2FibGUoaW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmICghY2FuTmF2aWdhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgYW5kIHNob3cgdG9hc3QgaWYgdmFsaWRhdGlvbiBpcyBlbmFibGVkXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlQmVmb3JlTmF2ID0gc3RvcmUudmFsaWRhdGVCZWZvcmVOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZUJlZm9yZU5hdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZUN1cnJlbnRQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlY3Rpb25JbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRRdWVzdGlvbkluZGV4OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYXN5bmMgbmF2aWdhdGVUb1F1ZXN0aW9uKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHJldHVybiBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25zID0gZGF0YS5zZWN0aW9ucztcbiAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbkluZGV4IDwgMCB8fCBzZWN0aW9uSW5kZXggPj0gc2VjdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAocXVlc3Rpb25JbmRleCA8IDAgfHwgcXVlc3Rpb25JbmRleCA+PSBzZWN0aW9uLnF1ZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIGN1cnJlbnQgcGFnZSBiZWZvcmUgbmF2aWdhdGluZ1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlQ3VycmVudFBhZ2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQuaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VjdGlvbkluZGV4OiBzZWN0aW9uSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRRdWVzdGlvbkluZGV4OiBxdWVzdGlvbkluZGV4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgQW5zd2VycyAgIC0tLS1cblxuICAgICAgICAgICAgZ2V0QWxsQW5zd2VycygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBzdG9yZS53aWRnZXRDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lcj8uY29udGV4dFNlcnZpY2UpIHJldHVybiB7fTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gY29udGFpbmVyLmNvbnRleHRTZXJ2aWNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0RGF0YSA9IGNvbnRleHRTZXJ2aWNlLmRhdGEoKSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRXh0cmFjdCBhbnN3ZXJzIGZyb20gY29udGV4dCBkYXRhIC0gYW5zd2VycyBhcmUgc3RvcmVkIHVuZGVyICdhbnN3ZXJzJyBwcm9wZXJ0eVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGNvbnRleHREYXRhIGFzIGFueSkuYW5zd2VycyB8fCB7fTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUXVlc3Rpb25uYWlyZVZpZXdlcl0gRXJyb3IgZ2V0dGluZyBhbGwgYW5zd2VyczonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRRdWVzdGlvbnNXaXRoQW5zd2VycygpOiBBcnJheTx7XG4gICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIHNlY3Rpb25JZDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgYW5zd2VyOiBhbnk7XG4gICAgICAgICAgICAgICAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgcXVlc3Rpb246IFF1ZXN0aW9ubmFpcmVWaWV3ZXJRdWVzdGlvbjtcbiAgICAgICAgICAgIH0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBzdG9yZS53aWRnZXRDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEgfHwgIWNvbnRhaW5lcj8uY29udGV4dFNlcnZpY2UpIHJldHVybiBbXTtcblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHRTZXJ2aWNlID0gY29udGFpbmVyLmNvbnRleHRTZXJ2aWNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZXh0RGF0YSA9IGNvbnRleHRTZXJ2aWNlLmRhdGEoKSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25zV2l0aEFuc3dlcnM6IEFycmF5PHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbklkOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbnN3ZXI6IGFueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb246IFF1ZXN0aW9ubmFpcmVWaWV3ZXJRdWVzdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgfT4gPSBbXTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2YgZGF0YS5zZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFBhdGggPSBxdWVzdGlvbi5xdWVzdGlvbi5pbnRlcmZhY2U/LnBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYW5zd2VyID0gd2lkZ2V0UGF0aCA/IGdldChjb250ZXh0RGF0YSwgd2lkZ2V0UGF0aCkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbnNXaXRoQW5zd2Vycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogcXVlc3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uQmFua0l0ZW1JZDogcXVlc3Rpb24ucXVlc3Rpb25CYW5rSXRlbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uSWQ6IHNlY3Rpb24uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBxdWVzdGlvbi5xdWVzdGlvbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHF1ZXN0aW9uLnF1ZXN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnN3ZXI6IGFuc3dlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZXF1aXJlZDogcXVlc3Rpb24uaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcXVlc3Rpb25zV2l0aEFuc3dlcnM7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1F1ZXN0aW9ubmFpcmVWaWV3ZXJdIEVycm9yIGdldHRpbmcgcXVlc3Rpb25zIHdpdGggYW5zd2VyczonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdldCBjb3VudCBvZiB1bmFuc3dlcmVkIHJlcXVpcmVkIHF1ZXN0aW9ucyBpbiBhIHNlY3Rpb25cbiAgICAgICAgICAgICAqIFVzZWQgZm9yIGJhZGdlIGRpc3BsYXkgaW4gc2lkZS1tZW51IHZpZXdcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZ2V0U2VjdGlvblVuYW5zd2VyZWRSZXF1aXJlZENvdW50KHNlY3Rpb25JZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gc3RvcmUucXVlc3Rpb25uYWlyZURhdGEoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBzdG9yZS53aWRnZXRDb250YWluZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEgfHwgIWNvbnRhaW5lcj8uY29udGV4dFNlcnZpY2UpIHJldHVybiAwO1xuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSBjb250YWluZXIuY29udGV4dFNlcnZpY2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRleHREYXRhID0gY29udGV4dFNlcnZpY2UuZGF0YSgpIHx8IHt9O1xuICAgICAgICAgICAgICAgICAgICBsZXQgdW5hbnN3ZXJlZENvdW50ID0gMDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWN0aW9uID0gZGF0YS5zZWN0aW9ucy5maW5kKHMgPT4gcy5pZCA9PT0gc2VjdGlvbklkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWN0aW9uKSByZXR1cm4gMDtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNvdW50IHJlcXVpcmVkIHF1ZXN0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWVzdGlvbi5pc1JlcXVpcmVkKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdmlzaWJpbGl0eSBjb25kaXRpb24gKGlmIHF1ZXN0aW9uIGlzIG5vdCB2aXNpYmxlLCBza2lwKVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogSW1wbGVtZW50IHZpc2liaWxpdHkgY29uZGl0aW9uIGV2YWx1YXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBub3csIGNoZWNrIGFsbCByZXF1aXJlZCBxdWVzdGlvbnNcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkZ2V0UGF0aCA9IHF1ZXN0aW9uLnF1ZXN0aW9uLmludGVyZmFjZT8ucGF0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0UGF0aCkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGNvbnRleHREYXRhLCB3aWRnZXRQYXRoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNFbXB0eSA9IHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hbnN3ZXJlZENvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5hbnN3ZXJlZENvdW50O1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tRdWVzdGlvbm5haXJlVmlld2VyXSBFcnJvciBjb3VudGluZyB1bmFuc3dlcmVkIHJlcXVpcmVkIHF1ZXN0aW9uczonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGFzeW5jIHN1Ym1pdCgpOiBQcm9taXNlPHsgc3VjY2VzczogYm9vbGVhbjsgYW5zd2VyczogUmVjb3JkPHN0cmluZywgYW55PjsgZXJyb3JzPzogUXVlc3Rpb25uYWlyZVZhbGlkYXRpb25FcnJvcltdIH0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdGhpcy52YWxpZGF0ZUFsbFF1ZXN0aW9ucygpO1xuICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdGlvblJlc3VsdC5pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuc3dlcnM6IHRoaXMuZ2V0QWxsQW5zd2VycygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiB2YWxpZGF0aW9uUmVzdWx0LmVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBhbnN3ZXJzOiB0aGlzLmdldEFsbEFuc3dlcnMoKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy8jZW5kcmVnaW9uXG5cbiAgICAgICAgICAgIC8vI3JlZ2lvbiAtLS0tICAgVGltZXIgICAtLS0tXG5cbiAgICAgICAgICAgIHN0YXJ0VGltZXIoKTogdm9pZCB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcblxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgdGltZXJFbGFwc2VkOiAwIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBzdG9yZS5jb25maWcoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZUxpbWl0ID0gY29uZmlnPy50aW1lcj8udGltZUxpbWl0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGFwc2VkID0gc3RvcmUudGltZXJFbGFwc2VkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVMaW1pdCAmJiBlbGFwc2VkID49IHRpbWVMaW1pdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSB0aW1lIGxpbWl0IHJlYWNoZWRcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgdGltZXJFbGFwc2VkOiBlbGFwc2VkICsgMSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDEwMDApO1xuXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyB0aW1lckludGVydmFsOiBpbnRlcnZhbCB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3BUaW1lcigpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHN0b3JlLnRpbWVySW50ZXJ2YWwoKTtcbiAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgdGltZXJJbnRlcnZhbDogbnVsbCB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGVUaW1lckVsYXBzZWQodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgdGltZXJFbGFwc2VkOiB2YWx1ZSB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vI2VuZHJlZ2lvblxuICAgICAgICB9KSxcbiAgICApLFxuKTtcblxuLy8jZW5kcmVnaW9uIl19","//#region ---- Imports ----\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXMQuestionnaireViewerViewModel } from './questionnaire-viewer.viewmodel';\nimport { get } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\n//#endregion\n//#region ---- Component ----\n/**\n * Reusable Question Component\n * Displays a single question with its widget interface\n */\nexport class AXMQuestionnaireViewerQuestionComponent {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.vm = inject(AXMQuestionnaireViewerViewModel, { optional: true });\n //#endregion\n //#region ---- Inputs ----\n this.question = input.required(...(ngDevMode ? [{ debugName: \"question\" }] : []));\n /** Context data when used outside questionnaire viewer (e.g. review step). Used for isAnswered when vm is null. */\n this.contextData = input(undefined, ...(ngDevMode ? [{ debugName: \"contextData\" }] : []));\n this.sectionOrder = input.required(...(ngDevMode ? [{ debugName: \"sectionOrder\" }] : []));\n this.questionIndex = input.required(...(ngDevMode ? [{ debugName: \"questionIndex\" }] : []));\n this.showQuestionNumbers = input(true, ...(ngDevMode ? [{ debugName: \"showQuestionNumbers\" }] : []));\n this.showQuestionCounter = input(false, ...(ngDevMode ? [{ debugName: \"showQuestionCounter\" }] : []));\n this.currentPosition = input(undefined, ...(ngDevMode ? [{ debugName: \"currentPosition\" }] : []));\n /** Widget render mode: 'edit' for answering, 'view' for read-only display (e.g. review step). */\n this.mode = input('edit', ...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n /**\n * Check if question is answered\n */\n this.isAnswered = computed(() => {\n const question = this.question();\n const contextDataInput = this.contextData();\n const container = this.vm?.widgetContainer();\n const data = contextDataInput ?? container?.contextService?.data() ?? {};\n if (!question || !question.question.interface?.path)\n return false;\n try {\n const widgetPath = question.question.interface.path;\n const value = get(data, widgetPath);\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && value !== null && Object.keys(value).length === 0);\n return !isEmpty;\n }\n catch (error) {\n console.error('[QuestionnaireViewerQuestion] Error checking if answered:', error);\n return false;\n }\n }, ...(ngDevMode ? [{ debugName: \"isAnswered\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerQuestionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerQuestionComponent, isStandalone: true, selector: \"axm-questionnaire-viewer-question\", inputs: { question: { classPropertyName: \"question\", publicName: \"question\", isSignal: true, isRequired: true, transformFunction: null }, contextData: { classPropertyName: \"contextData\", publicName: \"contextData\", isSignal: true, isRequired: false, transformFunction: null }, sectionOrder: { classPropertyName: \"sectionOrder\", publicName: \"sectionOrder\", isSignal: true, isRequired: true, transformFunction: null }, questionIndex: { classPropertyName: \"questionIndex\", publicName: \"questionIndex\", isSignal: true, isRequired: true, transformFunction: null }, showQuestionNumbers: { classPropertyName: \"showQuestionNumbers\", publicName: \"showQuestionNumbers\", isSignal: true, isRequired: false, transformFunction: null }, showQuestionCounter: { classPropertyName: \"showQuestionCounter\", publicName: \"showQuestionCounter\", isSignal: true, isRequired: false, transformFunction: null }, currentPosition: { classPropertyName: \"currentPosition\", publicName: \"currentPosition\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `\n <div class=\"__question-item\" [class.__answered]=\"isAnswered()\">\n <div class=\"__question-header\">\n @if (showQuestionNumbers() || (showQuestionCounter() && currentPosition())) {\n <div class=\"__question-header-left\">\n @if (showQuestionNumbers()) {\n <span class=\"__question-number\">{{ sectionOrder() }}.{{ questionIndex() }}</span>\n }\n @if (showQuestionCounter() && currentPosition()) {\n <span class=\"__question-counter\">\n Question {{ currentPosition()!.current }} of {{ currentPosition()!.total }}\n </span>\n }\n </div>\n }\n <div class=\"__question-header-right\">\n <h3 class=\"__question-title\">{{ question().question.title }}</h3>\n @if (isAnswered()) {\n <span class=\"__answered-badge\">Answered</span>\n } @else if (question().isRequired) {\n <span class=\"__required-badge\">Required</span>\n }\n </div>\n </div>\n @if (question().question.description) {\n <p class=\"__question-description\">{{ question().question.description }}</p>\n }\n\n <!-- Question Widget -->\n <div class=\"__question-widget\">\n @if (question().question.interface) {\n <ng-container axp-widget-renderer [node]=\"question().question.interface\" [mode]=\"mode()\"></ng-container>\n } @else {\n <p class=\"__widget-placeholder\">No widget interface configured</p>\n }\n </div>\n </div>\n `, isInline: true, styles: [\".__question-item{padding:1rem;text-align:left;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.__question-item.__answered{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-300),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-50),.3)}.__question-header{display:flex;width:100%;min-width:0px;align-items:flex-start;justify-content:space-between;gap:1rem}.__question-header-left{display:flex;flex-shrink:0;align-items:center;gap:.75rem}.__question-number{font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}.__question-counter{font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__question-header-right{display:flex;min-width:0px;flex:1 1 0%;flex-wrap:wrap;align-items:flex-start;gap:.5rem}.__question-title{min-width:0px;flex:1 1 0%;text-align:left;font-size:1rem;line-height:1.5rem;font-weight:500;--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.__answered-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-success-800),var(--tw-text-opacity, 1))}.__required-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__question-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__question-widget{margin-top:.75rem;text-align:left}.__widget-placeholder{border-radius:.25rem;border-width:1px;border-style:dashed;padding:1rem;font-size:.875rem;line-height:1.25rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"directive\", type: i1.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\", \"onLoad\"], exportAs: [\"widgetRenderer\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerQuestionComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-viewer-question', template: `\n <div class=\"__question-item\" [class.__answered]=\"isAnswered()\">\n <div class=\"__question-header\">\n @if (showQuestionNumbers() || (showQuestionCounter() && currentPosition())) {\n <div class=\"__question-header-left\">\n @if (showQuestionNumbers()) {\n <span class=\"__question-number\">{{ sectionOrder() }}.{{ questionIndex() }}</span>\n }\n @if (showQuestionCounter() && currentPosition()) {\n <span class=\"__question-counter\">\n Question {{ currentPosition()!.current }} of {{ currentPosition()!.total }}\n </span>\n }\n </div>\n }\n <div class=\"__question-header-right\">\n <h3 class=\"__question-title\">{{ question().question.title }}</h3>\n @if (isAnswered()) {\n <span class=\"__answered-badge\">Answered</span>\n } @else if (question().isRequired) {\n <span class=\"__required-badge\">Required</span>\n }\n </div>\n </div>\n @if (question().question.description) {\n <p class=\"__question-description\">{{ question().question.description }}</p>\n }\n\n <!-- Question Widget -->\n <div class=\"__question-widget\">\n @if (question().question.interface) {\n <ng-container axp-widget-renderer [node]=\"question().question.interface\" [mode]=\"mode()\"></ng-container>\n } @else {\n <p class=\"__widget-placeholder\">No widget interface configured</p>\n }\n </div>\n </div>\n `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXTranslationModule, AXPWidgetCoreModule], styles: [\".__question-item{padding:1rem;text-align:left;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.__question-item.__answered{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-300),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-50),.3)}.__question-header{display:flex;width:100%;min-width:0px;align-items:flex-start;justify-content:space-between;gap:1rem}.__question-header-left{display:flex;flex-shrink:0;align-items:center;gap:.75rem}.__question-number{font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}.__question-counter{font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.__question-header-right{display:flex;min-width:0px;flex:1 1 0%;flex-wrap:wrap;align-items:flex-start;gap:.5rem}.__question-title{min-width:0px;flex:1 1 0%;text-align:left;font-size:1rem;line-height:1.5rem;font-weight:500;--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.__answered-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-success-800),var(--tw-text-opacity, 1))}.__required-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.__question-description{margin-top:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__question-widget{margin-top:.75rem;text-align:left}.__widget-placeholder{border-radius:.25rem;border-width:1px;border-style:dashed;padding:1rem;font-size:.875rem;line-height:1.25rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}\\n\"] }]\n }], propDecorators: { question: [{ type: i0.Input, args: [{ isSignal: true, alias: \"question\", required: true }] }], contextData: [{ type: i0.Input, args: [{ isSignal: true, alias: \"contextData\", required: false }] }], sectionOrder: [{ type: i0.Input, args: [{ isSignal: true, alias: \"sectionOrder\", required: true }] }], questionIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: \"questionIndex\", required: true }] }], showQuestionNumbers: [{ type: i0.Input, args: [{ isSignal: true, alias: \"showQuestionNumbers\", required: false }] }], showQuestionCounter: [{ type: i0.Input, args: [{ isSignal: true, alias: \"showQuestionCounter\", required: false }] }], currentPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: \"currentPosition\", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"mode\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS12aWV3ZXItcXVlc3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3F1ZXN0aW9ubmFpcmUtdmlld2VyLXF1ZXN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBRWhDLFlBQVk7QUFFWixpQ0FBaUM7QUFFakM7OztHQUdHO0FBb0dILE1BQU0sT0FBTyx1Q0FBdUM7SUFuR3BEO1FBb0dJLCtDQUErQztRQUU1QixPQUFFLEdBQUcsTUFBTSxDQUFDLCtCQUErQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFcEYsWUFBWTtRQUVaLDhCQUE4QjtRQUU5QixhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsbURBQStCLENBQUM7UUFFekQsbUhBQW1IO1FBQ25ILGdCQUFXLEdBQUcsS0FBSyxDQUFrQyxTQUFTLHVEQUFDLENBQUM7UUFDaEUsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSx1REFBVSxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsd0RBQVUsQ0FBQztRQUN6Qyx3QkFBbUIsR0FBRyxLQUFLLENBQVUsSUFBSSwrREFBQyxDQUFDO1FBQzNDLHdCQUFtQixHQUFHLEtBQUssQ0FBVSxLQUFLLCtEQUFDLENBQUM7UUFDNUMsb0JBQWUsR0FBRyxLQUFLLENBQWlELFNBQVMsMkRBQUMsQ0FBQztRQUVuRixpR0FBaUc7UUFDakcsU0FBSSxHQUFHLEtBQUssQ0FBa0IsTUFBTSxnREFBQyxDQUFDO1FBRXRDLFlBQVk7UUFFWiwyQ0FBMkM7UUFFM0M7O1dBRUc7UUFDSCxlQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksR0FBRyxnQkFBZ0IsSUFBSSxTQUFTLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6RSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUVsRSxJQUFJLENBQUM7Z0JBQ0QsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNwRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUVwQyxNQUFNLE9BQU8sR0FBRyxLQUFLLEtBQUssSUFBSTtvQkFDMUIsS0FBSyxLQUFLLFNBQVM7b0JBQ25CLEtBQUssS0FBSyxFQUFFO29CQUNaLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztvQkFDNUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFFckYsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUNwQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRixPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1FBQ0wsQ0FBQyxzREFBQyxDQUFDO0tBR047K0dBdERZLHVDQUF1QzttR0FBdkMsdUNBQXVDLDZ0Q0FqR3RDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBcUNULHV4RUEwRFMsWUFBWSw4QkFBRSxtQkFBbUIsOEJBQUUsbUJBQW1COzs0RkFFdkQsdUNBQXVDO2tCQW5HbkQsU0FBUzsrQkFDSSxtQ0FBbUMsWUFDbkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FxQ1QsbUJBeURnQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlVmlld2VyUXVlc3Rpb24gfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLnR5cGVzJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCAgIC0tLS1cblxuLyoqXG4gKiBSZXVzYWJsZSBRdWVzdGlvbiBDb21wb25lbnRcbiAqIERpc3BsYXlzIGEgc2luZ2xlIHF1ZXN0aW9uIHdpdGggaXRzIHdpZGdldCBpbnRlcmZhY2VcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItcXVlc3Rpb24nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3F1ZXN0aW9uLWl0ZW1cIiBbY2xhc3MuX19hbnN3ZXJlZF09XCJpc0Fuc3dlcmVkKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3F1ZXN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd1F1ZXN0aW9uTnVtYmVycygpIHx8IChzaG93UXVlc3Rpb25Db3VudGVyKCkgJiYgY3VycmVudFBvc2l0aW9uKCkpKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcXVlc3Rpb24taGVhZGVyLWxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93UXVlc3Rpb25OdW1iZXJzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJfX3F1ZXN0aW9uLW51bWJlclwiPnt7IHNlY3Rpb25PcmRlcigpIH19Lnt7IHF1ZXN0aW9uSW5kZXgoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dRdWVzdGlvbkNvdW50ZXIoKSAmJiBjdXJyZW50UG9zaXRpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIl9fcXVlc3Rpb24tY291bnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb24ge3sgY3VycmVudFBvc2l0aW9uKCkhLmN1cnJlbnQgfX0gb2Yge3sgY3VycmVudFBvc2l0aW9uKCkhLnRvdGFsIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19xdWVzdGlvbi1oZWFkZXItcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiX19xdWVzdGlvbi10aXRsZVwiPnt7IHF1ZXN0aW9uKCkucXVlc3Rpb24udGl0bGUgfX08L2gzPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGlzQW5zd2VyZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIl9fYW5zd2VyZWQtYmFkZ2VcIj5BbnN3ZXJlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAocXVlc3Rpb24oKS5pc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiX19yZXF1aXJlZC1iYWRnZVwiPlJlcXVpcmVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAocXVlc3Rpb24oKS5xdWVzdGlvbi5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgPHAgY2xhc3M9XCJfX3F1ZXN0aW9uLWRlc2NyaXB0aW9uXCI+e3sgcXVlc3Rpb24oKS5xdWVzdGlvbi5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPCEtLSBRdWVzdGlvbiBXaWRnZXQgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19xdWVzdGlvbi13aWRnZXRcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHF1ZXN0aW9uKCkucXVlc3Rpb24uaW50ZXJmYWNlKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cInF1ZXN0aW9uKCkucXVlc3Rpb24uaW50ZXJmYWNlXCIgW21vZGVdPVwibW9kZSgpXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJfX3dpZGdldC1wbGFjZWhvbGRlclwiPk5vIHdpZGdldCBpbnRlcmZhY2UgY29uZmlndXJlZDwvcD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBzdHlsZXM6IFtgXG4gICAgICAgIC5fX3F1ZXN0aW9uLWl0ZW0ge1xuICAgICAgICAgICAgQGFwcGx5IGF4LXRyYW5zaXRpb24tYWxsIGF4LWR1cmF0aW9uLTIwMCBheC1wLTQgYXgtdGV4dC1sZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fcXVlc3Rpb24taXRlbS5fX2Fuc3dlcmVkIHtcbiAgICAgICAgICAgIEBhcHBseSBheC1ib3JkZXItcHJpbWFyeS0zMDAgYXgtYmctcHJpbWFyeS01MC8zMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5fX3F1ZXN0aW9uLWhlYWRlciB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1pdGVtcy1zdGFydCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTQgYXgtbWluLXctMCBheC13LWZ1bGw7XG4gICAgICAgIH1cblxuICAgICAgICAuX19xdWVzdGlvbi1oZWFkZXItbGVmdCB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTMgYXgtZmxleC1zaHJpbmstMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5fX3F1ZXN0aW9uLW51bWJlciB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtdGV4dC1zbSBheC1mb250LXNlbWlib2xkIGF4LXRleHQtcHJpbWFyeS02MDA7XG4gICAgICAgIH1cblxuICAgICAgICAuX19xdWVzdGlvbi1jb3VudGVyIHtcbiAgICAgICAgICAgIEBhcHBseSBheC10ZXh0LXhzIGF4LWZvbnQtbWVkaXVtIGF4LXRleHQtbmV1dHJhbC01MDA7XG4gICAgICAgIH1cblxuICAgICAgICAuX19xdWVzdGlvbi1oZWFkZXItcmlnaHQge1xuICAgICAgICAgICAgQGFwcGx5IGF4LWZsZXggYXgtaXRlbXMtc3RhcnQgYXgtZ2FwLTIgYXgtZmxleC13cmFwIGF4LWZsZXgtMSBheC1taW4tdy0wO1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fcXVlc3Rpb24tdGl0bGUge1xuICAgICAgICAgICAgQGFwcGx5IGF4LXRleHQtYmFzZSBheC1mb250LW1lZGl1bSBheC10ZXh0LW5ldXRyYWwtOTAwIGF4LWZsZXgtMSBheC1taW4tdy0wIGF4LXRleHQtbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5fX2Fuc3dlcmVkLWJhZGdlIHtcbiAgICAgICAgICAgIEBhcHBseSBheC1weC0yIGF4LXB5LTEgYXgtdGV4dC14cyBheC1mb250LW1lZGl1bSBheC1yb3VuZGVkO1xuICAgICAgICAgICAgQGFwcGx5IGF4LWJnLXN1Y2Nlc3MtMTAwIGF4LXRleHQtc3VjY2Vzcy04MDA7XG4gICAgICAgIH1cblxuICAgICAgICAuX19yZXF1aXJlZC1iYWRnZSB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtcHgtMiBheC1weS0xIGF4LXRleHQteHMgYXgtZm9udC1tZWRpdW0gYXgtcm91bmRlZDtcbiAgICAgICAgICAgIEBhcHBseSBheC1iZy13YXJuaW5nLTEwMCBheC10ZXh0LXdhcm5pbmctODAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fcXVlc3Rpb24tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgQGFwcGx5IGF4LXRleHQtc20gYXgtdGV4dC1uZXV0cmFsLTYwMCBheC1tdC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fcXVlc3Rpb24td2lkZ2V0IHtcbiAgICAgICAgICAgIEBhcHBseSBheC1tdC0zIGF4LXRleHQtbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5fX3dpZGdldC1wbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtdGV4dC1zbSBheC10ZXh0LW5ldXRyYWwtNTAwIGF4LWl0YWxpYyBheC1wLTQgYXgtYm9yZGVyIGF4LWJvcmRlci1kYXNoZWQgYXgtcm91bmRlZDtcbiAgICAgICAgICAgIEBhcHBseSBheC1iZy1uZXV0cmFsLTUwO1xuICAgICAgICB9XG4gICAgYF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhQV2lkZ2V0Q29yZU1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJRdWVzdGlvbkNvbXBvbmVudCB7XG4gICAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAmIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICAgIHByb3RlY3RlZCByZWFkb25seSB2bSA9IGluamVjdChBWE1RdWVzdGlvbm5haXJlVmlld2VyVmlld01vZGVsLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIElucHV0cyAgIC0tLS1cblxuICAgIHF1ZXN0aW9uID0gaW5wdXQucmVxdWlyZWQ8UXVlc3Rpb25uYWlyZVZpZXdlclF1ZXN0aW9uPigpO1xuXG4gICAgLyoqIENvbnRleHQgZGF0YSB3aGVuIHVzZWQgb3V0c2lkZSBxdWVzdGlvbm5haXJlIHZpZXdlciAoZS5nLiByZXZpZXcgc3RlcCkuIFVzZWQgZm9yIGlzQW5zd2VyZWQgd2hlbiB2bSBpcyBudWxsLiAqL1xuICAgIGNvbnRleHREYXRhID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgICBzZWN0aW9uT3JkZXIgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gICAgcXVlc3Rpb25JbmRleCA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgICBzaG93UXVlc3Rpb25OdW1iZXJzID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgc2hvd1F1ZXN0aW9uQ291bnRlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBjdXJyZW50UG9zaXRpb24gPSBpbnB1dDx7IGN1cnJlbnQ6IG51bWJlcjsgdG90YWw6IG51bWJlciB9IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqIFdpZGdldCByZW5kZXIgbW9kZTogJ2VkaXQnIGZvciBhbnN3ZXJpbmcsICd2aWV3JyBmb3IgcmVhZC1vbmx5IGRpc3BsYXkgKGUuZy4gcmV2aWV3IHN0ZXApLiAqL1xuICAgIG1vZGUgPSBpbnB1dDwnZWRpdCcgfCAndmlldyc+KCdlZGl0Jyk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgUHJvcGVydGllcyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHF1ZXN0aW9uIGlzIGFuc3dlcmVkXG4gICAgICovXG4gICAgaXNBbnN3ZXJlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uKCk7XG4gICAgICAgIGNvbnN0IGNvbnRleHREYXRhSW5wdXQgPSB0aGlzLmNvbnRleHREYXRhKCk7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMudm0/LndpZGdldENvbnRhaW5lcigpO1xuICAgICAgICBjb25zdCBkYXRhID0gY29udGV4dERhdGFJbnB1dCA/PyBjb250YWluZXI/LmNvbnRleHRTZXJ2aWNlPy5kYXRhKCkgPz8ge307XG4gICAgICAgIGlmICghcXVlc3Rpb24gfHwgIXF1ZXN0aW9uLnF1ZXN0aW9uLmludGVyZmFjZT8ucGF0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXRQYXRoID0gcXVlc3Rpb24ucXVlc3Rpb24uaW50ZXJmYWNlLnBhdGg7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldChkYXRhLCB3aWRnZXRQYXRoKTtcblxuICAgICAgICAgICAgY29uc3QgaXNFbXB0eSA9IHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCk7XG5cbiAgICAgICAgICAgIHJldHVybiAhaXNFbXB0eTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tRdWVzdGlvbm5haXJlVmlld2VyUXVlc3Rpb25dIEVycm9yIGNoZWNraW5nIGlmIGFuc3dlcmVkOicsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXMQuestionnaireViewerViewModel } from '../questionnaire-viewer.viewmodel';\nimport { AXMQuestionnaireViewerQuestionComponent } from '../questionnaire-viewer-question.component';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Component ----\n/**\n * Single Page View Component\n * Displays all sections and questions on a single page\n */\nexport class AXMQuestionnaireViewerSinglePageViewComponent {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.vm = inject(AXMQuestionnaireViewerViewModel);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerSinglePageViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerSinglePageViewComponent, isStandalone: true, selector: \"axm-questionnaire-viewer-single-page-view\", ngImport: i0, template: `\n @for (section of vm.sections(); track section.id) {\n <div class=\"__single-page-section\">\n @if (vm.showSectionTitles()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ section.title }}</h2>\n @if (section.description) {\n <p class=\"__section-description\">{{ section.description }}</p>\n }\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of section.questions; track question.id; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\">\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n `, isInline: true, styles: [\"axm-questionnaire-viewer-single-page-view{display:flex;height:100%;flex-direction:column;gap:1.5rem;overflow-y:auto;overflow-x:hidden;padding:1rem}axm-questionnaire-viewer-single-page-view .__single-page-section{display:flex}axm-questionnaire-viewer-single-page-view .__single-page-section{flex-direction:column}axm-questionnaire-viewer-single-page-view .__single-page-section{gap:1rem}axm-questionnaire-viewer-single-page-view .__single-page-section{flex-shrink:0}axm-questionnaire-viewer-single-page-view .__single-page-section{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}axm-questionnaire-viewer-single-page-view .__section-header{margin-bottom:.5rem}axm-questionnaire-viewer-single-page-view .__section-header{display:flex}axm-questionnaire-viewer-single-page-view .__section-header{flex-direction:column}axm-questionnaire-viewer-single-page-view .__section-header{gap:.125rem}axm-questionnaire-viewer-single-page-view .__section-title{font-size:1.25rem;line-height:1.75rem}axm-questionnaire-viewer-single-page-view .__section-title{font-weight:600}axm-questionnaire-viewer-single-page-view .__section-title{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-single-page-view .__section-description{font-size:.875rem;line-height:1.25rem}axm-questionnaire-viewer-single-page-view .__section-description{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-single-page-view .__questions-list{display:flex}axm-questionnaire-viewer-single-page-view .__questions-list{flex-direction:column}axm-questionnaire-viewer-single-page-view .__questions-list{gap:1rem}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{display:flex}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{flex-direction:column}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{gap:.75rem}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{border-radius:.25rem}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{border-width:1px}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{padding:1rem}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: AXMQuestionnaireViewerQuestionComponent, selector: \"axm-questionnaire-viewer-question\", inputs: [\"question\", \"contextData\", \"sectionOrder\", \"questionIndex\", \"showQuestionNumbers\", \"showQuestionCounter\", \"currentPosition\", \"mode\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerSinglePageViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-viewer-single-page-view', template: `\n @for (section of vm.sections(); track section.id) {\n <div class=\"__single-page-section\">\n @if (vm.showSectionTitles()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ section.title }}</h2>\n @if (section.description) {\n <p class=\"__section-description\">{{ section.description }}</p>\n }\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of section.questions; track question.id; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\">\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXMQuestionnaireViewerQuestionComponent], styles: [\"axm-questionnaire-viewer-single-page-view{display:flex;height:100%;flex-direction:column;gap:1.5rem;overflow-y:auto;overflow-x:hidden;padding:1rem}axm-questionnaire-viewer-single-page-view .__single-page-section{display:flex}axm-questionnaire-viewer-single-page-view .__single-page-section{flex-direction:column}axm-questionnaire-viewer-single-page-view .__single-page-section{gap:1rem}axm-questionnaire-viewer-single-page-view .__single-page-section{flex-shrink:0}axm-questionnaire-viewer-single-page-view .__single-page-section{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}axm-questionnaire-viewer-single-page-view .__section-header{margin-bottom:.5rem}axm-questionnaire-viewer-single-page-view .__section-header{display:flex}axm-questionnaire-viewer-single-page-view .__section-header{flex-direction:column}axm-questionnaire-viewer-single-page-view .__section-header{gap:.125rem}axm-questionnaire-viewer-single-page-view .__section-title{font-size:1.25rem;line-height:1.75rem}axm-questionnaire-viewer-single-page-view .__section-title{font-weight:600}axm-questionnaire-viewer-single-page-view .__section-title{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-single-page-view .__section-description{font-size:.875rem;line-height:1.25rem}axm-questionnaire-viewer-single-page-view .__section-description{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-single-page-view .__questions-list{display:flex}axm-questionnaire-viewer-single-page-view .__questions-list{flex-direction:column}axm-questionnaire-viewer-single-page-view .__questions-list{gap:1rem}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{display:flex}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{flex-direction:column}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{gap:.75rem}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{border-radius:.25rem}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{border-width:1px}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{padding:1rem}axm-questionnaire-viewer-single-page-view .__questions-list .__question-item{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXBhZ2Utdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcXVlc3Rpb25uYWlyZS12aWV3ZXIvdmlld3Mvc2luZ2xlLXBhZ2Utdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFFckcsWUFBWTtBQUVaLGlDQUFpQztBQUVqQzs7O0dBR0c7QUErREgsTUFBTSxPQUFPLDZDQUE2QztJQTlEMUQ7UUErREksK0NBQStDO1FBRTVCLE9BQUUsR0FBRyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztLQUduRTsrR0FOWSw2Q0FBNkM7bUdBQTdDLDZDQUE2QyxxR0E1RDVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUJULG1rRkFpQ1MsWUFBWSwrQkFBRSx1Q0FBdUM7OzRGQUV0RCw2Q0FBNkM7a0JBOUR6RCxTQUFTOytCQUNJLDJDQUEyQyxZQUMzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXlCVCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQStCcEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLFlBQVksRUFBRSx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLXZpZXdlci52aWV3bW9kZWwnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS12aWV3ZXItcXVlc3Rpb24uY29tcG9uZW50JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFNpbmdsZSBQYWdlIFZpZXcgQ29tcG9uZW50XG4gKiBEaXNwbGF5cyBhbGwgc2VjdGlvbnMgYW5kIHF1ZXN0aW9ucyBvbiBhIHNpbmdsZSBwYWdlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXNpbmdsZS1wYWdlLXZpZXcnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgICAgICBAZm9yIChzZWN0aW9uIG9mIHZtLnNlY3Rpb25zKCk7IHRyYWNrIHNlY3Rpb24uaWQpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3NpbmdsZS1wYWdlLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICBAaWYgKHZtLnNob3dTZWN0aW9uVGl0bGVzKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJfX3NlY3Rpb24tdGl0bGVcIj57eyBzZWN0aW9uLnRpdGxlIH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzZWN0aW9uLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiX19zZWN0aW9uLWRlc2NyaXB0aW9uXCI+e3sgc2VjdGlvbi5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3F1ZXN0aW9ucy1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zOyB0cmFjayBxdWVzdGlvbi5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1xdWVzdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWN0aW9uT3JkZXJdPVwic2VjdGlvbi5vcmRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25JbmRleF09XCJpICsgMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1F1ZXN0aW9uTnVtYmVyc109XCJ2bS5zaG93UXVlc3Rpb25OdW1iZXJzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dRdWVzdGlvbkNvdW50ZXJdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9heG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItcXVlc3Rpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgIGAsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZXM6IFtgXG4gICAgICAgIGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1zaW5nbGUtcGFnZS12aWV3IHtcbiAgICAgICAgICAgIEBhcHBseSBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC02IGF4LXAtNCBheC1oLWZ1bGwgYXgtb3ZlcmZsb3cteS1hdXRvIGF4LW92ZXJmbG93LXgtaGlkZGVuO1xuICAgICAgICAgICAgLl9fc2luZ2xlLXBhZ2Utc2VjdGlvbiB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgO1xuICAgICAgICAgICAgICAgIEBhcHBseSBheC1iZy13aGl0ZSBheC1mbGV4LXNocmluay0wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuX19zZWN0aW9uLWhlYWRlciB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTAuNSBheC1tYi0yO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuX19zZWN0aW9uLXRpdGxlIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYXgtdGV4dC14bCBheC1mb250LXNlbWlib2xkIGF4LXRleHQtbmV1dHJhbC05MDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5fX3NlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIEBhcHBseSBheC10ZXh0LXNtIGF4LXRleHQtbmV1dHJhbC02MDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5fX3F1ZXN0aW9ucy1saXN0IHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNDtcblxuICAgICAgICAgICAgICAgIC5fX3F1ZXN0aW9uLWl0ZW0ge1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMyBheC1wLTQgYXgtYm9yZGVyIGF4LWJvcmRlci1uZXV0cmFsLTIwMCBheC1yb3VuZGVkO1xuICAgICAgICAgICAgICAgICAgICBAYXBwbHkgYXgtYmctbmV1dHJhbC01MDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWE1RdWVzdGlvbm5haXJlVmlld2VyUXVlc3Rpb25Db21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1RdWVzdGlvbm5haXJlVmlld2VyU2luZ2xlUGFnZVZpZXdDb21wb25lbnQge1xuICAgIC8vI3JlZ2lvbiAtLS0tICAgU2VydmljZXMgJiBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVZpZXdlclZpZXdNb2RlbCk7XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXMQuestionnaireViewerViewModel } from '../questionnaire-viewer.viewmodel';\nimport { AXMQuestionnaireViewerQuestionComponent } from '../questionnaire-viewer-question.component';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Component ----\n/**\n * Page Per Group View Component\n * Displays one section (group) per page\n */\nexport class AXMQuestionnaireViewerPagePerGroupViewComponent {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.vm = inject(AXMQuestionnaireViewerViewModel);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerPagePerGroupViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerPagePerGroupViewComponent, isStandalone: true, selector: \"axm-questionnaire-viewer-page-per-group-view\", ngImport: i0, template: `\n @if (vm.currentSection(); as section) {\n <div class=\"__page-section\">\n @if (vm.showSectionTitles()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ section.title }}</h2>\n @if (section.description) {\n <p class=\"__section-description\">{{ section.description }}</p>\n }\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of section.questions; track question.id; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\">\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n `, isInline: true, styles: [\"axm-questionnaire-viewer-page-per-group-view{display:flex;flex-direction:column;gap:1rem;padding:1rem}axm-questionnaire-viewer-page-per-group-view .__page-section{display:flex}axm-questionnaire-viewer-page-per-group-view .__page-section{flex-direction:column}axm-questionnaire-viewer-page-per-group-view .__page-section{gap:1rem}axm-questionnaire-viewer-page-per-group-view .__page-section{flex-shrink:0}axm-questionnaire-viewer-page-per-group-view .__page-section{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__section-header{display:flex}axm-questionnaire-viewer-page-per-group-view .__section-header{flex-shrink:0}axm-questionnaire-viewer-page-per-group-view .__section-header{flex-direction:column}axm-questionnaire-viewer-page-per-group-view .__section-header{gap:.125rem}axm-questionnaire-viewer-page-per-group-view .__section-title{font-size:1.5rem;line-height:2rem}axm-questionnaire-viewer-page-per-group-view .__section-title{font-weight:600}axm-questionnaire-viewer-page-per-group-view .__section-title{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__section-description{font-size:.875rem;line-height:1.25rem}axm-questionnaire-viewer-page-per-group-view .__section-description{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__questions-list{display:flex}axm-questionnaire-viewer-page-per-group-view .__questions-list{flex:1 1 0%}axm-questionnaire-viewer-page-per-group-view .__questions-list{flex-direction:column}axm-questionnaire-viewer-page-per-group-view .__questions-list{gap:1rem}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{display:flex}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{flex-direction:column}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{gap:.75rem}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{border-radius:.25rem}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{border-width:1px}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{padding:1rem}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__navigation{display:flex}axm-questionnaire-viewer-page-per-group-view .__navigation{align-items:center}axm-questionnaire-viewer-page-per-group-view .__navigation{justify-content:space-between}axm-questionnaire-viewer-page-per-group-view .__navigation{border-top-width:1px}axm-questionnaire-viewer-page-per-group-view .__navigation{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__navigation{padding:1rem}axm-questionnaire-viewer-page-per-group-view .__navigation{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: AXMQuestionnaireViewerQuestionComponent, selector: \"axm-questionnaire-viewer-question\", inputs: [\"question\", \"contextData\", \"sectionOrder\", \"questionIndex\", \"showQuestionNumbers\", \"showQuestionCounter\", \"currentPosition\", \"mode\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerPagePerGroupViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-viewer-page-per-group-view', template: `\n @if (vm.currentSection(); as section) {\n <div class=\"__page-section\">\n @if (vm.showSectionTitles()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ section.title }}</h2>\n @if (section.description) {\n <p class=\"__section-description\">{{ section.description }}</p>\n }\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of section.questions; track question.id; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\">\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXMQuestionnaireViewerQuestionComponent], styles: [\"axm-questionnaire-viewer-page-per-group-view{display:flex;flex-direction:column;gap:1rem;padding:1rem}axm-questionnaire-viewer-page-per-group-view .__page-section{display:flex}axm-questionnaire-viewer-page-per-group-view .__page-section{flex-direction:column}axm-questionnaire-viewer-page-per-group-view .__page-section{gap:1rem}axm-questionnaire-viewer-page-per-group-view .__page-section{flex-shrink:0}axm-questionnaire-viewer-page-per-group-view .__page-section{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__section-header{display:flex}axm-questionnaire-viewer-page-per-group-view .__section-header{flex-shrink:0}axm-questionnaire-viewer-page-per-group-view .__section-header{flex-direction:column}axm-questionnaire-viewer-page-per-group-view .__section-header{gap:.125rem}axm-questionnaire-viewer-page-per-group-view .__section-title{font-size:1.5rem;line-height:2rem}axm-questionnaire-viewer-page-per-group-view .__section-title{font-weight:600}axm-questionnaire-viewer-page-per-group-view .__section-title{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__section-description{font-size:.875rem;line-height:1.25rem}axm-questionnaire-viewer-page-per-group-view .__section-description{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__questions-list{display:flex}axm-questionnaire-viewer-page-per-group-view .__questions-list{flex:1 1 0%}axm-questionnaire-viewer-page-per-group-view .__questions-list{flex-direction:column}axm-questionnaire-viewer-page-per-group-view .__questions-list{gap:1rem}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{display:flex}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{flex-direction:column}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{gap:.75rem}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{border-radius:.25rem}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{border-width:1px}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{padding:1rem}axm-questionnaire-viewer-page-per-group-view .__questions-list .__question-item{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__navigation{display:flex}axm-questionnaire-viewer-page-per-group-view .__navigation{align-items:center}axm-questionnaire-viewer-page-per-group-view .__navigation{justify-content:space-between}axm-questionnaire-viewer-page-per-group-view .__navigation{border-top-width:1px}axm-questionnaire-viewer-page-per-group-view .__navigation{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}axm-questionnaire-viewer-page-per-group-view .__navigation{padding:1rem}axm-questionnaire-viewer-page-per-group-view .__navigation{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1wZXItZ3JvdXAtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcXVlc3Rpb25uYWlyZS12aWV3ZXIvdmlld3MvcGFnZS1wZXItZ3JvdXAtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFFckcsWUFBWTtBQUVaLGlDQUFpQztBQUVqQzs7O0dBR0c7QUFvRUgsTUFBTSxPQUFPLCtDQUErQztJQW5FNUQ7UUFvRUksK0NBQStDO1FBRTVCLE9BQUUsR0FBRyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztLQUduRTsrR0FOWSwrQ0FBK0M7bUdBQS9DLCtDQUErQyx3R0FqRTlDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBeUJULDh4R0FzQ1MsWUFBWSwrQkFBRSx1Q0FBdUM7OzRGQUV0RCwrQ0FBK0M7a0JBbkUzRCxTQUFTOytCQUNJLDhDQUE4QyxZQUM5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXlCVCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQW9DcEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLFlBQVksRUFBRSx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLXZpZXdlci52aWV3bW9kZWwnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS12aWV3ZXItcXVlc3Rpb24uY29tcG9uZW50JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFBhZ2UgUGVyIEdyb3VwIFZpZXcgQ29tcG9uZW50XG4gKiBEaXNwbGF5cyBvbmUgc2VjdGlvbiAoZ3JvdXApIHBlciBwYWdlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXBhZ2UtcGVyLWdyb3VwLXZpZXcnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgICAgICBAaWYgKHZtLmN1cnJlbnRTZWN0aW9uKCk7IGFzIHNlY3Rpb24pIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3BhZ2Utc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIEBpZiAodm0uc2hvd1NlY3Rpb25UaXRsZXMoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cIl9fc2VjdGlvbi10aXRsZVwiPnt7IHNlY3Rpb24udGl0bGUgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJfX3NlY3Rpb24tZGVzY3JpcHRpb25cIj57eyBzZWN0aW9uLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcXVlc3Rpb25zLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAocXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnM7IHRyYWNrIHF1ZXN0aW9uLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8YXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXF1ZXN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25PcmRlcl09XCJzZWN0aW9uLm9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbkluZGV4XT1cImkgKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93UXVlc3Rpb25OdW1iZXJzXT1cInZtLnNob3dRdWVzdGlvbk51bWJlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1F1ZXN0aW9uQ291bnRlcl09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2F4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1xdWVzdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0eWxlczogW2BcbiAgICAgICAgYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXBhZ2UtcGVyLWdyb3VwLXZpZXcge1xuICAgICAgICAgICAgQGFwcGx5IGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgYXgtcC00O1xuICAgICAgICAgICAgLl9fcGFnZS1zZWN0aW9uIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCA7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGF4LWJnLXdoaXRlIGF4LWZsZXgtc2hyaW5rLTA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5fX3NlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMC41IGF4LWZsZXgtc2hyaW5rLTA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5fX3NlY3Rpb24tdGl0bGUge1xuICAgICAgICAgICAgICAgIEBhcHBseSBheC10ZXh0LTJ4bCBheC1mb250LXNlbWlib2xkIGF4LXRleHQtbmV1dHJhbC05MDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5fX3NlY3Rpb24tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIEBhcHBseSBheC10ZXh0LXNtIGF4LXRleHQtbmV1dHJhbC02MDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5fX3F1ZXN0aW9ucy1saXN0IHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1mbGV4LTEgO1xuXG4gICAgICAgICAgICAgICAgLl9fcXVlc3Rpb24taXRlbSB7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0zIGF4LXAtNCBheC1ib3JkZXIgYXgtYm9yZGVyLW5ldXRyYWwtMjAwIGF4LXJvdW5kZWQ7XG4gICAgICAgICAgICAgICAgICAgIEBhcHBseSBheC1iZy1uZXV0cmFsLTUwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLl9fbmF2aWdhdGlvbiB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLWNlbnRlciBheC1wLTQgYXgtYm9yZGVyLXQgYXgtYm9yZGVyLW5ldXRyYWwtMjAwO1xuICAgICAgICAgICAgICAgIEBhcHBseSBheC1iZy13aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIGBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJRdWVzdGlvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJQYWdlUGVyR3JvdXBWaWV3Q29tcG9uZW50IHtcbiAgICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZtID0gaW5qZWN0KEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJWaWV3TW9kZWwpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","//#region ---- Imports ----\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXMQuestionnaireViewerViewModel } from '../questionnaire-viewer.viewmodel';\nimport { AXMQuestionnaireViewerQuestionComponent } from '../questionnaire-viewer-question.component';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Component ----\n/**\n * Page Per Question View Component\n * Displays one question per page\n */\nexport class AXMQuestionnaireViewerPagePerQuestionViewComponent {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.vm = inject(AXMQuestionnaireViewerViewModel);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerPagePerQuestionViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerPagePerQuestionViewComponent, isStandalone: true, selector: \"axm-questionnaire-viewer-page-per-question-view\", ngImport: i0, template: `\n @if (vm.currentQuestion(); as question) {\n <div class=\"__page-question\">\n @if (vm.showSectionTitles() && vm.currentSection()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ vm.currentSection()!.title }}</h2>\n @if (vm.currentSection()!.description) {\n <p class=\"__section-description\">{{ vm.currentSection()!.description }}</p>\n }\n </div>\n }\n\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"vm.currentSectionIndex() + 1\"\n [questionIndex]=\"vm.currentQuestionIndex() + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"vm.showQuestionCounter()\"\n [currentPosition]=\"vm.currentQuestionPosition()\">\n </axm-questionnaire-viewer-question>\n </div>\n }\n `, isInline: true, styles: [\"axm-questionnaire-viewer-page-per-question-view{display:flex;flex-direction:column;gap:1rem;padding:1rem;flex-shrink:0;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}axm-questionnaire-viewer-page-per-question-view .__section-header{display:flex}axm-questionnaire-viewer-page-per-question-view .__section-header{flex-shrink:0}axm-questionnaire-viewer-page-per-question-view .__section-header{flex-direction:column}axm-questionnaire-viewer-page-per-question-view .__section-header{gap:.125rem}axm-questionnaire-viewer-page-per-question-view .__section-title{font-size:1.25rem;line-height:1.75rem}axm-questionnaire-viewer-page-per-question-view .__section-title{font-weight:600}axm-questionnaire-viewer-page-per-question-view .__section-title{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-page-per-question-view .__section-description{font-size:.875rem;line-height:1.25rem}axm-questionnaire-viewer-page-per-question-view .__section-description{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: AXMQuestionnaireViewerQuestionComponent, selector: \"axm-questionnaire-viewer-question\", inputs: [\"question\", \"contextData\", \"sectionOrder\", \"questionIndex\", \"showQuestionNumbers\", \"showQuestionCounter\", \"currentPosition\", \"mode\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerPagePerQuestionViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-viewer-page-per-question-view', template: `\n @if (vm.currentQuestion(); as question) {\n <div class=\"__page-question\">\n @if (vm.showSectionTitles() && vm.currentSection()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ vm.currentSection()!.title }}</h2>\n @if (vm.currentSection()!.description) {\n <p class=\"__section-description\">{{ vm.currentSection()!.description }}</p>\n }\n </div>\n }\n\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"vm.currentSectionIndex() + 1\"\n [questionIndex]=\"vm.currentQuestionIndex() + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"vm.showQuestionCounter()\"\n [currentPosition]=\"vm.currentQuestionPosition()\">\n </axm-questionnaire-viewer-question>\n </div>\n }\n `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXMQuestionnaireViewerQuestionComponent], styles: [\"axm-questionnaire-viewer-page-per-question-view{display:flex;flex-direction:column;gap:1rem;padding:1rem;flex-shrink:0;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}axm-questionnaire-viewer-page-per-question-view .__section-header{display:flex}axm-questionnaire-viewer-page-per-question-view .__section-header{flex-shrink:0}axm-questionnaire-viewer-page-per-question-view .__section-header{flex-direction:column}axm-questionnaire-viewer-page-per-question-view .__section-header{gap:.125rem}axm-questionnaire-viewer-page-per-question-view .__section-title{font-size:1.25rem;line-height:1.75rem}axm-questionnaire-viewer-page-per-question-view .__section-title{font-weight:600}axm-questionnaire-viewer-page-per-question-view .__section-title{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-page-per-question-view .__section-description{font-size:.875rem;line-height:1.25rem}axm-questionnaire-viewer-page-per-question-view .__section-description{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1wZXItcXVlc3Rpb24tdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcXVlc3Rpb25uYWlyZS12aWV3ZXIvdmlld3MvcGFnZS1wZXItcXVlc3Rpb24tdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFFckcsWUFBWTtBQUVaLGlDQUFpQztBQUVqQzs7O0dBR0c7QUErQ0gsTUFBTSxPQUFPLGtEQUFrRDtJQTlDL0Q7UUErQ0ksK0NBQStDO1FBRTVCLE9BQUUsR0FBRyxNQUFNLENBQUMsK0JBQStCLENBQUMsQ0FBQztLQUduRTsrR0FOWSxrREFBa0Q7bUdBQWxELGtEQUFrRCwyR0E1Q2pEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBc0JULDZvQ0FvQlMsWUFBWSwrQkFBRSx1Q0FBdUM7OzRGQUV0RCxrREFBa0Q7a0JBOUM5RCxTQUFTOytCQUNJLGlEQUFpRCxZQUNqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNCVCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQWtCcEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLFlBQVksRUFBRSx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLXZpZXdlci52aWV3bW9kZWwnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS12aWV3ZXItcXVlc3Rpb24uY29tcG9uZW50JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFBhZ2UgUGVyIFF1ZXN0aW9uIFZpZXcgQ29tcG9uZW50XG4gKiBEaXNwbGF5cyBvbmUgcXVlc3Rpb24gcGVyIHBhZ2VcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItcGFnZS1wZXItcXVlc3Rpb24tdmlldycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGlmICh2bS5jdXJyZW50UXVlc3Rpb24oKTsgYXMgcXVlc3Rpb24pIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIl9fcGFnZS1xdWVzdGlvblwiPlxuICAgICAgICAgICAgQGlmICh2bS5zaG93U2VjdGlvblRpdGxlcygpICYmIHZtLmN1cnJlbnRTZWN0aW9uKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3NlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiX19zZWN0aW9uLXRpdGxlXCI+e3sgdm0uY3VycmVudFNlY3Rpb24oKSEudGl0bGUgfX08L2gyPlxuICAgICAgICAgICAgICAgIEBpZiAodm0uY3VycmVudFNlY3Rpb24oKSEuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIl9fc2VjdGlvbi1kZXNjcmlwdGlvblwiPnt7IHZtLmN1cnJlbnRTZWN0aW9uKCkhLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8YXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXF1ZXN0aW9uXG4gICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCJcbiAgICAgICAgICAgICAgICBbc2VjdGlvbk9yZGVyXT1cInZtLmN1cnJlbnRTZWN0aW9uSW5kZXgoKSArIDFcIlxuICAgICAgICAgICAgICAgIFtxdWVzdGlvbkluZGV4XT1cInZtLmN1cnJlbnRRdWVzdGlvbkluZGV4KCkgKyAxXCJcbiAgICAgICAgICAgICAgICBbc2hvd1F1ZXN0aW9uTnVtYmVyc109XCJ2bS5zaG93UXVlc3Rpb25OdW1iZXJzKClcIlxuICAgICAgICAgICAgICAgIFtzaG93UXVlc3Rpb25Db3VudGVyXT1cInZtLnNob3dRdWVzdGlvbkNvdW50ZXIoKVwiXG4gICAgICAgICAgICAgICAgW2N1cnJlbnRQb3NpdGlvbl09XCJ2bS5jdXJyZW50UXVlc3Rpb25Qb3NpdGlvbigpXCI+XG4gICAgICAgICAgICA8L2F4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1xdWVzdGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVzOiBbYFxuICAgICAgICBheG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItcGFnZS1wZXItcXVlc3Rpb24tdmlldyB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1wLTQ7XG4gICAgICAgICAgICBAYXBwbHkgYXgtYmctd2hpdGUgYXgtZmxleC1zaHJpbmstMDtcbiAgICAgICAgICAgIC5fX3NlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgICAgIEBhcHBseSBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0wLjUgYXgtZmxleC1zaHJpbmstMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLl9fc2VjdGlvbi10aXRsZSB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGF4LXRleHQteGwgYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LW5ldXRyYWwtOTAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuX19zZWN0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYXgtdGV4dC1zbSBheC10ZXh0LW5ldXRyYWwtNjAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgYF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclF1ZXN0aW9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclBhZ2VQZXJRdWVzdGlvblZpZXdDb21wb25lbnQge1xuICAgIC8vI3JlZ2lvbiAtLS0tICAgU2VydmljZXMgJiBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVZpZXdlclZpZXdNb2RlbCk7XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDrawerDirectiveModule } from '@acorex/cdk/drawer';\nimport { AXResizableDirective } from '@acorex/cdk/resizable';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXMQuestionnaireViewerViewModel } from '../questionnaire-viewer.viewmodel';\nimport { AXMQuestionnaireViewerQuestionComponent } from '../questionnaire-viewer-question.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/tabs\";\nimport * as i2 from \"@acorex/components/badge\";\nimport * as i3 from \"@acorex/components/drawer\";\nimport * as i4 from \"@acorex/components/button\";\nimport * as i5 from \"@acorex/components/decorators\";\n//#endregion\n//#region ---- Component ----\n/**\n * Side Menu View Component\n * Displays sections in a left sidebar (tabs) and all questions from selected section on the right\n */\nexport class AXMQuestionnaireViewerSideMenuViewComponent {\n //#endregion\n //#region ---- Lifecycle ----\n constructor() {\n //#region ---- Services & Dependencies ----\n this.vm = inject(AXMQuestionnaireViewerViewModel);\n this.deviceService = inject(AXPDeviceService);\n this.sidebarDrawerCollapsed = signal(true, ...(ngDevMode ? [{ debugName: \"sidebarDrawerCollapsed\" }] : []));\n this.sectionNavigabilityCache = signal(new Map(), ...(ngDevMode ? [{ debugName: \"sectionNavigabilityCache\" }] : []));\n // Update navigability cache when validation state changes\n effect(async () => {\n const sections = this.vm.sections();\n const currentIndex = this.vm.currentSectionIndex();\n const validateBeforeNav = this.vm.validateBeforeNavigation();\n // Only check if validation is enabled\n if (validateBeforeNav && sections.length > 0) {\n const cache = new Map();\n for (let i = 0; i < sections.length; i++) {\n if (i === currentIndex) {\n cache.set(i, true); // Current section is always navigable\n }\n else {\n const navigable = await this.vm.isSectionNavigable(i);\n cache.set(i, navigable);\n }\n }\n this.sectionNavigabilityCache.set(cache);\n }\n else {\n // If validation is disabled, all sections are navigable\n const cache = new Map();\n sections.forEach((_, i) => cache.set(i, true));\n this.sectionNavigabilityCache.set(cache);\n }\n });\n }\n //#endregion\n //#region ---- Methods ----\n /**\n * Handle section tab click\n */\n async handleSectionClick(sectionIndex) {\n await this.vm.navigateToSection(sectionIndex);\n // Close drawer on mobile after selection\n if (this.deviceService.isSmall() || this.deviceService.isMedium()) {\n this.sidebarDrawerCollapsed.set(true);\n }\n }\n /**\n * Get badge count for section (unanswered required questions)\n */\n getSectionBadgeCount(sectionId) {\n return this.vm.getSectionUnansweredRequiredCount(sectionId);\n }\n /**\n * Check if section tab should be disabled\n */\n isSectionDisabled(sectionIndex) {\n const currentIndex = this.vm.currentSectionIndex();\n // Current section is never disabled\n if (sectionIndex === currentIndex) {\n return false;\n }\n // If validation is disabled, no tabs are disabled\n const validateBeforeNav = this.vm.validateBeforeNavigation();\n if (!validateBeforeNav) {\n return false;\n }\n // Check cache\n const cache = this.sectionNavigabilityCache();\n return cache.has(sectionIndex) ? !cache.get(sectionIndex) : false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerSideMenuViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerSideMenuViewComponent, isStandalone: true, selector: \"axm-questionnaire-viewer-side-menu-view\", ngImport: i0, template: `\n <div class=\"__side-menu-container\">\n <!-- Desktop Sidebar (Large screens) -->\n @if (deviceService.isLarge()) {\n <div class=\"__desktop-sidebar\" [axResizable]=\"true\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (section of vm.sections(); track section.id; let i = $index) {\n <ax-tab-item\n [text]=\"section.title\"\n (onClick)=\"handleSectionClick(i)\"\n [active]=\"vm.currentSectionIndex() === i\"\n [disabled]=\"isSectionDisabled(i)\">\n @if (getSectionBadgeCount(section.id) > 0) {\n <ax-badge [text]=\"getSectionBadgeCount(section.id).toString()\" [color]=\"'danger'\">\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n\n <!-- Mobile/Tablet: Drawer Container -->\n @if (deviceService.isSmall() || deviceService.isMedium()) {\n <ax-drawer-container class=\"__drawer-container\">\n <!-- Sidebar Drawer (Mobile) -->\n <ax-drawer\n #sidebarDrawer\n [location]=\"'start'\"\n [mode]=\"'overlay'\"\n [collapsed]=\"sidebarDrawerCollapsed()\"\n [closeOnBackdropClick]=\"true\"\n (onBackdropClick)=\"sidebarDrawerCollapsed.set(true)\"\n class=\"__sidebar-drawer ax-w-[250px]\">\n <ax-content class=\"__sidebar-content\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (section of vm.sections(); track section.id; let i = $index) {\n <ax-tab-item\n [text]=\"section.title\"\n (onClick)=\"handleSectionClick(i)\"\n [active]=\"vm.currentSectionIndex() === i\"\n [disabled]=\"isSectionDisabled(i)\">\n @if (getSectionBadgeCount(section.id) > 0) {\n <ax-badge [text]=\"getSectionBadgeCount(section.id).toString()\" [color]=\"'danger'\">\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer>\n\n <!-- Main Content (Mobile) -->\n <ax-content class=\"__main-content\">\n <!-- Mobile Menu Button -->\n <div class=\"__mobile-menu-button\">\n <ax-button look=\"blank\" (onClick)=\"sidebarDrawerCollapsed.set(!sidebarDrawerCollapsed())\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-bars\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n <div class=\"__questions-container\">\n @if (vm.showSectionTitles()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ section.title }}</h2>\n @if (section.description) {\n <p class=\"__section-description\">{{ section.description }}</p>\n }\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of section.questions; track question.id; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\">\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n </ax-content>\n </ax-drawer-container>\n } @else {\n <!-- Desktop Main Content -->\n <div class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n <div class=\"__questions-container\">\n @if (vm.showSectionTitles()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ section.title }}</h2>\n @if (section.description) {\n <p class=\"__section-description\">{{ section.description }}</p>\n }\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of section.questions; track question.id; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\">\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n `, isInline: true, styles: [\".__side-menu-container,.__drawer-container{display:flex;height:100%;width:100%;overflow:hidden}.__sidebar-drawer{height:100%;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.__sidebar-content{height:100%;overflow-y:auto}.__desktop-sidebar{display:flex;height:100%;min-height:0px;flex-shrink:0;flex-direction:column;overflow:hidden;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.__sidebar-tabs{--ax-comp-tabs-default-border-radius: 0;height:100%;min-height:0px;flex:1 1 0%;overflow-y:auto}.__sidebar-tabs ax-tab-item{margin-top:0;margin-bottom:0}.__sidebar-tabs ax-tab-item{padding-top:.75rem;padding-bottom:.75rem}.__sidebar-tabs ax-tab-item{font-weight:600}.__main-content{display:flex;height:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}.__mobile-menu-button{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));padding:.5rem}.__questions-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;gap:1rem;overflow-y:auto;padding:1rem}.__section-header{margin-bottom:1rem;display:flex;flex-direction:column;gap:.125rem}.__section-title{font-size:1.5rem;line-height:2rem;font-weight:600;--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.__section-description{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__questions-list{display:flex;flex:1 1 0%;flex-direction:column;gap:1rem}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: AXMQuestionnaireViewerQuestionComponent, selector: \"axm-questionnaire-viewer-question\", inputs: [\"question\", \"contextData\", \"sectionOrder\", \"questionIndex\", \"showQuestionNumbers\", \"showQuestionCounter\", \"currentPosition\", \"mode\"] }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"component\", type: i1.AXTabsComponent, selector: \"ax-tabs\", inputs: [\"look\", \"location\", \"fitParent\", \"minWidth\", \"content\"], outputs: [\"onActiveTabChanged\"] }, { kind: \"component\", type: i1.AXTabItemComponent, selector: \"ax-tab-item\", inputs: [\"disabled\", \"text\", \"key\", \"headerTemplate\", \"active\"], outputs: [\"disabledChange\", \"onClick\", \"onBlur\", \"onFocus\", \"activeChange\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i2.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"ngmodule\", type: AXDrawerModule }, { kind: \"component\", type: i3.AXDrawerComponent, selector: \"ax-drawer\", inputs: [\"location\", \"showBackdrop\", \"mode\", \"transition\", \"closeOnBackdropClick\", \"backdropClass\", \"collapsed\", \"singleOpenMode\"], outputs: [\"onBackdropClick\", \"collapsedStateChanged\"] }, { kind: \"component\", type: i3.AXDrawerContainerComponent, selector: \"ax-drawer-container\" }, { kind: \"ngmodule\", type: AXDrawerDirectiveModule }, { kind: \"directive\", type: AXResizableDirective, selector: \"[axResizable]\", inputs: [\"axResizable\", \"minWidth\", \"maxWidth\", \"dblClickAction\", \"width\", \"defaultWidth\"], outputs: [\"axResizableChange\", \"minWidthChange\", \"maxWidthChange\", \"dblClickActionChange\", \"widthChange\", \"defaultWidthChange\", \"onResizingStarted\", \"onResizingEnded\", \"onResizingDblClick\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i4.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerSideMenuViewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-viewer-side-menu-view', template: `\n <div class=\"__side-menu-container\">\n <!-- Desktop Sidebar (Large screens) -->\n @if (deviceService.isLarge()) {\n <div class=\"__desktop-sidebar\" [axResizable]=\"true\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (section of vm.sections(); track section.id; let i = $index) {\n <ax-tab-item\n [text]=\"section.title\"\n (onClick)=\"handleSectionClick(i)\"\n [active]=\"vm.currentSectionIndex() === i\"\n [disabled]=\"isSectionDisabled(i)\">\n @if (getSectionBadgeCount(section.id) > 0) {\n <ax-badge [text]=\"getSectionBadgeCount(section.id).toString()\" [color]=\"'danger'\">\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n }\n\n <!-- Mobile/Tablet: Drawer Container -->\n @if (deviceService.isSmall() || deviceService.isMedium()) {\n <ax-drawer-container class=\"__drawer-container\">\n <!-- Sidebar Drawer (Mobile) -->\n <ax-drawer\n #sidebarDrawer\n [location]=\"'start'\"\n [mode]=\"'overlay'\"\n [collapsed]=\"sidebarDrawerCollapsed()\"\n [closeOnBackdropClick]=\"true\"\n (onBackdropClick)=\"sidebarDrawerCollapsed.set(true)\"\n class=\"__sidebar-drawer ax-w-[250px]\">\n <ax-content class=\"__sidebar-content\">\n <ax-tabs class=\"__sidebar-tabs\" [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (section of vm.sections(); track section.id; let i = $index) {\n <ax-tab-item\n [text]=\"section.title\"\n (onClick)=\"handleSectionClick(i)\"\n [active]=\"vm.currentSectionIndex() === i\"\n [disabled]=\"isSectionDisabled(i)\">\n @if (getSectionBadgeCount(section.id) > 0) {\n <ax-badge [text]=\"getSectionBadgeCount(section.id).toString()\" [color]=\"'danger'\">\n </ax-badge>\n }\n </ax-tab-item>\n }\n </ax-tabs>\n </ax-content>\n </ax-drawer>\n\n <!-- Main Content (Mobile) -->\n <ax-content class=\"__main-content\">\n <!-- Mobile Menu Button -->\n <div class=\"__mobile-menu-button\">\n <ax-button look=\"blank\" (onClick)=\"sidebarDrawerCollapsed.set(!sidebarDrawerCollapsed())\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-bars\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n <div class=\"__questions-container\">\n @if (vm.showSectionTitles()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ section.title }}</h2>\n @if (section.description) {\n <p class=\"__section-description\">{{ section.description }}</p>\n }\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of section.questions; track question.id; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\">\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n </ax-content>\n </ax-drawer-container>\n } @else {\n <!-- Desktop Main Content -->\n <div class=\"__main-content\">\n <!-- Questions Content -->\n @if (vm.currentSection(); as section) {\n <div class=\"__questions-container\">\n @if (vm.showSectionTitles()) {\n <div class=\"__section-header\">\n <h2 class=\"__section-title\">{{ section.title }}</h2>\n @if (section.description) {\n <p class=\"__section-description\">{{ section.description }}</p>\n }\n </div>\n }\n\n <div class=\"__questions-list\">\n @for (question of section.questions; track question.id; let i = $index) {\n <axm-questionnaire-viewer-question\n [question]=\"question\"\n [sectionOrder]=\"section.order\"\n [questionIndex]=\"i + 1\"\n [showQuestionNumbers]=\"vm.showQuestionNumbers()\"\n [showQuestionCounter]=\"false\">\n </axm-questionnaire-viewer-question>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n AXMQuestionnaireViewerQuestionComponent,\n AXTabsModule,\n AXBadgeModule,\n AXDrawerModule,\n AXDrawerDirectiveModule,\n AXResizableDirective,\n AXButtonModule,\n AXDecoratorModule,\n ], styles: [\".__side-menu-container,.__drawer-container{display:flex;height:100%;width:100%;overflow:hidden}.__sidebar-drawer{height:100%;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.__sidebar-content{height:100%;overflow-y:auto}.__desktop-sidebar{display:flex;height:100%;min-height:0px;flex-shrink:0;flex-direction:column;overflow:hidden;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.__sidebar-tabs{--ax-comp-tabs-default-border-radius: 0;height:100%;min-height:0px;flex:1 1 0%;overflow-y:auto}.__sidebar-tabs ax-tab-item{margin-top:0;margin-bottom:0}.__sidebar-tabs ax-tab-item{padding-top:.75rem;padding-bottom:.75rem}.__sidebar-tabs ax-tab-item{font-weight:600}.__main-content{display:flex;height:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}.__mobile-menu-button{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));padding:.5rem}.__questions-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;gap:1rem;overflow-y:auto;padding:1rem}.__section-header{margin-bottom:1rem;display:flex;flex-direction:column;gap:.125rem}.__section-title{font-size:1.5rem;line-height:2rem;font-weight:600;--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.__section-description{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.__questions-list{display:flex;flex:1 1 0%;flex-direction:column;gap:1rem}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1tZW51LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3ZpZXdzL3NpZGUtbWVudS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVksTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7O0FBRXJHLFlBQVk7QUFFWixpQ0FBaUM7QUFFakM7OztHQUdHO0FBcU1ILE1BQU0sT0FBTywyQ0FBMkM7SUFRcEQsWUFBWTtJQUVaLGlD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LGNBQWM7d0JBQ2QsaUJBQWlCO3FCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYRHJhd2VyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RyYXdlcic7XG5pbXBvcnQgeyBBWERyYXdlckRpcmVjdGl2ZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY2RrL2RyYXdlcic7XG5pbXBvcnQgeyBBWFJlc2l6YWJsZURpcmVjdGl2ZSB9IGZyb20gJ0BhY29yZXgvY2RrL3Jlc2l6YWJsZSc7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFBEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLXZpZXdlci52aWV3bW9kZWwnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclF1ZXN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vcXVlc3Rpb25uYWlyZS12aWV3ZXItcXVlc3Rpb24uY29tcG9uZW50JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFNpZGUgTWVudSBWaWV3IENvbXBvbmVudFxuICogRGlzcGxheXMgc2VjdGlvbnMgaW4gYSBsZWZ0IHNpZGViYXIgKHRhYnMpIGFuZCBhbGwgcXVlc3Rpb25zIGZyb20gc2VsZWN0ZWQgc2VjdGlvbiBvbiB0aGUgcmlnaHRcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItc2lkZS1tZW51LXZpZXcnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJfX3NpZGUtbWVudS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDwhLS0gRGVza3RvcCBTaWRlYmFyIChMYXJnZSBzY3JlZW5zKSAtLT5cbiAgICAgICAgICAgIEBpZiAoZGV2aWNlU2VydmljZS5pc0xhcmdlKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2Rlc2t0b3Atc2lkZWJhclwiIFtheFJlc2l6YWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGF4LXRhYnMgY2xhc3M9XCJfX3NpZGViYXItdGFic1wiIFtsb29rXT1cIid3aXRoLWxpbmUtY29sb3InXCIgW2xvY2F0aW9uXT1cIidlbmQnXCIgW2ZpdFBhcmVudF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHNlY3Rpb24gb2Ygdm0uc2VjdGlvbnMoKTsgdHJhY2sgc2VjdGlvbi5pZDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPGF4LXRhYi1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJzZWN0aW9uLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZVNlY3Rpb25DbGljayhpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlXT1cInZtLmN1cnJlbnRTZWN0aW9uSW5kZXgoKSA9PT0gaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNTZWN0aW9uRGlzYWJsZWQoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZ2V0U2VjdGlvbkJhZGdlQ291bnQoc2VjdGlvbi5pZCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtYmFkZ2UgW3RleHRdPVwiZ2V0U2VjdGlvbkJhZGdlQ291bnQoc2VjdGlvbi5pZCkudG9TdHJpbmcoKVwiIFtjb2xvcl09XCInZGFuZ2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9heC10YWItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvYXgtdGFicz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8IS0tIE1vYmlsZS9UYWJsZXQ6IERyYXdlciBDb250YWluZXIgLS0+XG4gICAgICAgICAgICBAaWYgKGRldmljZVNlcnZpY2UuaXNTbWFsbCgpIHx8IGRldmljZVNlcnZpY2UuaXNNZWRpdW0oKSkge1xuICAgICAgICAgICAgPGF4LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJfX2RyYXdlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIFNpZGViYXIgRHJhd2VyIChNb2JpbGUpIC0tPlxuICAgICAgICAgICAgICAgIDxheC1kcmF3ZXJcbiAgICAgICAgICAgICAgICAgICAgI3NpZGViYXJEcmF3ZXJcbiAgICAgICAgICAgICAgICAgICAgW2xvY2F0aW9uXT1cIidzdGFydCdcIlxuICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCInb3ZlcmxheSdcIlxuICAgICAgICAgICAgICAgICAgICBbY29sbGFwc2VkXT1cInNpZGViYXJEcmF3ZXJDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbG9zZU9uQmFja2Ryb3BDbGlja109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQmFja2Ryb3BDbGljayk9XCJzaWRlYmFyRHJhd2VyQ29sbGFwc2VkLnNldCh0cnVlKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiX19zaWRlYmFyLWRyYXdlciBheC13LVsyNTBweF1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWNvbnRlbnQgY2xhc3M9XCJfX3NpZGViYXItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXRhYnMgY2xhc3M9XCJfX3NpZGViYXItdGFic1wiIFtsb29rXT1cIid3aXRoLWxpbmUtY29sb3InXCIgW2xvY2F0aW9uXT1cIidlbmQnXCIgW2ZpdFBhcmVudF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoc2VjdGlvbiBvZiB2bS5zZWN0aW9ucygpOyB0cmFjayBzZWN0aW9uLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC10YWItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJzZWN0aW9uLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlU2VjdGlvbkNsaWNrKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZV09XCJ2bS5jdXJyZW50U2VjdGlvbkluZGV4KCkgPT09IGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNTZWN0aW9uRGlzYWJsZWQoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChnZXRTZWN0aW9uQmFkZ2VDb3VudChzZWN0aW9uLmlkKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWJhZGdlIFt0ZXh0XT1cImdldFNlY3Rpb25CYWRnZUNvdW50KHNlY3Rpb24uaWQpLnRvU3RyaW5nKClcIiBbY29sb3JdPVwiJ2RhbmdlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdGFiLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC10YWJzPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9heC1kcmF3ZXI+XG5cbiAgICAgICAgICAgICAgICA8IS0tIE1haW4gQ29udGVudCAoTW9iaWxlKSAtLT5cbiAgICAgICAgICAgICAgICA8YXgtY29udGVudCBjbGFzcz1cIl9fbWFpbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTW9iaWxlIE1lbnUgQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19tb2JpbGUtbWVudS1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwic2lkZWJhckRyYXdlckNvbGxhcHNlZC5zZXQoIXNpZGViYXJEcmF3ZXJDb2xsYXBzZWQoKSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtYmFyc1wiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFF1ZXN0aW9ucyBDb250ZW50IC0tPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHZtLmN1cnJlbnRTZWN0aW9uKCk7IGFzIHNlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcXVlc3Rpb25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh2bS5zaG93U2VjdGlvblRpdGxlcygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cIl9fc2VjdGlvbi10aXRsZVwiPnt7IHNlY3Rpb24udGl0bGUgfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2VjdGlvbi5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiX19zZWN0aW9uLWRlc2NyaXB0aW9uXCI+e3sgc2VjdGlvbi5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcXVlc3Rpb25zLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9uczsgdHJhY2sgcXVlc3Rpb24uaWQ7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1xdWVzdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VjdGlvbk9yZGVyXT1cInNlY3Rpb24ub3JkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25JbmRleF09XCJpICsgMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93UXVlc3Rpb25OdW1iZXJzXT1cInZtLnNob3dRdWVzdGlvbk51bWJlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93UXVlc3Rpb25Db3VudGVyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItcXVlc3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICAgICAgPC9heC1kcmF3ZXItY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8IS0tIERlc2t0b3AgTWFpbiBDb250ZW50IC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fbWFpbi1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPCEtLSBRdWVzdGlvbnMgQ29udGVudCAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKHZtLmN1cnJlbnRTZWN0aW9uKCk7IGFzIHNlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19xdWVzdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodm0uc2hvd1NlY3Rpb25UaXRsZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiX19zZWN0aW9uLXRpdGxlXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNlY3Rpb24uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiX19zZWN0aW9uLWRlc2NyaXB0aW9uXCI+e3sgc2VjdGlvbi5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19xdWVzdGlvbnMtbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAocXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnM7IHRyYWNrIHF1ZXN0aW9uLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1xdWVzdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25PcmRlcl09XCJzZWN0aW9uLm9yZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25JbmRleF09XCJpICsgMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dRdWVzdGlvbk51bWJlcnNdPVwidm0uc2hvd1F1ZXN0aW9uTnVtYmVycygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1F1ZXN0aW9uQ291bnRlcl09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItcXVlc3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgIC5fX3NpZGUtbWVudS1jb250YWluZXIge1xuICAgICAgICAgICAgQGFwcGx5IGF4LWZsZXggYXgtaC1mdWxsIGF4LXctZnVsbCBheC1vdmVyZmxvdy1oaWRkZW47XG4gICAgICAgIH1cblxuICAgICAgICAuX19kcmF3ZXItY29udGFpbmVyIHtcbiAgICAgICAgICAgIEBhcHBseSBheC1mbGV4IGF4LWgtZnVsbCBheC13LWZ1bGwgYXgtb3ZlcmZsb3ctaGlkZGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fc2lkZWJhci1kcmF3ZXIge1xuICAgICAgICAgICAgQGFwcGx5IGF4LWJnLXdoaXRlIGF4LWJvcmRlci1lIGF4LWJvcmRlci1uZXV0cmFsLTIwMCBheC1oLWZ1bGw7XG4gICAgICAgIH1cblxuICAgICAgICAuX19zaWRlYmFyLWNvbnRlbnQge1xuICAgICAgICAgICAgQGFwcGx5IGF4LWgtZnVsbCBheC1vdmVyZmxvdy15LWF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAuX19kZXNrdG9wLXNpZGViYXIge1xuICAgICAgICAgICAgQGFwcGx5IGF4LWJvcmRlci1lIGF4LWJvcmRlci1uZXV0cmFsLTIwMCBheC1iZy13aGl0ZSBheC1mbGV4LXNocmluay0wIGF4LWgtZnVsbCBheC1vdmVyZmxvdy1oaWRkZW4gYXgtZmxleCBheC1mbGV4LWNvbCBheC1taW4taC0wO1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fc2lkZWJhci10YWJzIHtcbiAgICAgICAgICAgIC0tYXgtY29tcC10YWJzLWRlZmF1bHQtYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgICAgIEBhcHBseSBheC1oLWZ1bGwgYXgtb3ZlcmZsb3cteS1hdXRvIGF4LWZsZXgtMSBheC1taW4taC0wO1xuICAgICAgICAgICAgYXgtdGFiLWl0ZW0ge1xuICAgICAgICAgICAgICAgIEBhcHBseSBheC1mb250LXNlbWlib2xkIGF4LW15LTAgYXgtcHktMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5fX21haW4tY29udGVudCB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1mbGV4LWNvbCBheC1mbGV4LTEgYXgtaC1mdWxsIGF4LW92ZXJmbG93LWhpZGRlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5fX21vYmlsZS1tZW51LWJ1dHRvbiB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtcC0yIGF4LWJvcmRlci1iIGF4LWJvcmRlci1uZXV0cmFsLTIwMCBheC1mbGV4LXNocmluay0wO1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fcXVlc3Rpb25zLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1wLTQgYXgtZmxleC0xIGF4LW92ZXJmbG93LXktYXV0byBheC1taW4taC0wO1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICAgICAgQGFwcGx5IGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTAuNSBheC1tYi00O1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fc2VjdGlvbi10aXRsZSB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtdGV4dC0yeGwgYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LW5ldXRyYWwtOTAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fc2VjdGlvbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBAYXBwbHkgYXgtdGV4dC1zbSBheC10ZXh0LW5ldXRyYWwtNjAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLl9fcXVlc3Rpb25zLWxpc3Qge1xuICAgICAgICAgICAgQGFwcGx5IGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgYXgtZmxleC0xO1xuICAgICAgICB9XG4gICAgYCxcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBWE1RdWVzdGlvbm5haXJlVmlld2VyUXVlc3Rpb25Db21wb25lbnQsXG4gICAgICAgIEFYVGFic01vZHVsZSxcbiAgICAgICAgQVhCYWRnZU1vZHVsZSxcbiAgICAgICAgQVhEcmF3ZXJNb2R1bGUsXG4gICAgICAgIEFYRHJhd2VyRGlyZWN0aXZlTW9kdWxlLFxuICAgICAgICBBWFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICAgICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJTaWRlTWVudVZpZXdDb21wb25lbnQge1xuICAgIC8vI3JlZ2lvbiAtLS0tICAgU2VydmljZXMgJiBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVZpZXdlclZpZXdNb2RlbCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRldmljZVNlcnZpY2UgPSBpbmplY3QoQVhQRGV2aWNlU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNpZGViYXJEcmF3ZXJDb2xsYXBzZWQgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlY3Rpb25OYXZpZ2FiaWxpdHlDYWNoZSA9IHNpZ25hbDxNYXA8bnVtYmVyLCBib29sZWFuPj4obmV3IE1hcCgpKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgICAtLS0tXG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gVXBkYXRlIG5hdmlnYWJpbGl0eSBjYWNoZSB3aGVuIHZhbGlkYXRpb24gc3RhdGUgY2hhbmdlc1xuICAgICAgICBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VjdGlvbnMgPSB0aGlzLnZtLnNlY3Rpb25zKCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLnZtLmN1cnJlbnRTZWN0aW9uSW5kZXgoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlQmVmb3JlTmF2ID0gdGhpcy52bS52YWxpZGF0ZUJlZm9yZU5hdmlnYXRpb24oKTtcblxuICAgICAgICAgICAgLy8gT25seSBjaGVjayBpZiB2YWxpZGF0aW9uIGlzIGVuYWJsZWRcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZUJlZm9yZU5hdiAmJiBzZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGUgPSBuZXcgTWFwPG51bWJlciwgYm9vbGVhbj4oKTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGN1cnJlbnRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUuc2V0KGksIHRydWUpOyAvLyBDdXJyZW50IHNlY3Rpb24gaXMgYWx3YXlzIG5hdmlnYWJsZVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmF2aWdhYmxlID0gYXdhaXQgdGhpcy52bS5pc1NlY3Rpb25OYXZpZ2FibGUoaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS5zZXQoaSwgbmF2aWdhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbk5hdmlnYWJpbGl0eUNhY2hlLnNldChjYWNoZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIElmIHZhbGlkYXRpb24gaXMgZGlzYWJsZWQsIGFsbCBzZWN0aW9ucyBhcmUgbmF2aWdhYmxlXG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGUgPSBuZXcgTWFwPG51bWJlciwgYm9vbGVhbj4oKTtcbiAgICAgICAgICAgICAgICBzZWN0aW9ucy5mb3JFYWNoKChfLCBpKSA9PiBjYWNoZS5zZXQoaSwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VjdGlvbk5hdmlnYWJpbGl0eUNhY2hlLnNldChjYWNoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBNZXRob2RzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHNlY3Rpb24gdGFiIGNsaWNrXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlY3Rpb25DbGljayhzZWN0aW9uSW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnZtLm5hdmlnYXRlVG9TZWN0aW9uKHNlY3Rpb25JbmRleCk7XG4gICAgICAgIC8vIENsb3NlIGRyYXdlciBvbiBtb2JpbGUgYWZ0ZXIgc2VsZWN0aW9uXG4gICAgICAgIGlmICh0aGlzLmRldmljZVNlcnZpY2UuaXNTbWFsbCgpIHx8IHRoaXMuZGV2aWNlU2VydmljZS5pc01lZGl1bSgpKSB7XG4gICAgICAgICAgICB0aGlzLnNpZGViYXJEcmF3ZXJDb2xsYXBzZWQuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGJhZGdlIGNvdW50IGZvciBzZWN0aW9uICh1bmFuc3dlcmVkIHJlcXVpcmVkIHF1ZXN0aW9ucylcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0U2VjdGlvbkJhZGdlQ291bnQoc2VjdGlvbklkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy52bS5nZXRTZWN0aW9uVW5hbnN3ZXJlZFJlcXVpcmVkQ291bnQoc2VjdGlvbklkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBzZWN0aW9uIHRhYiBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNTZWN0aW9uRGlzYWJsZWQoc2VjdGlvbkluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy52bS5jdXJyZW50U2VjdGlvbkluZGV4KCk7XG5cbiAgICAgICAgLy8gQ3VycmVudCBzZWN0aW9uIGlzIG5ldmVyIGRpc2FibGVkXG4gICAgICAgIGlmIChzZWN0aW9uSW5kZXggPT09IGN1cnJlbnRJbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdmFsaWRhdGlvbiBpcyBkaXNhYmxlZCwgbm8gdGFicyBhcmUgZGlzYWJsZWRcbiAgICAgICAgY29uc3QgdmFsaWRhdGVCZWZvcmVOYXYgPSB0aGlzLnZtLnZhbGlkYXRlQmVmb3JlTmF2aWdhdGlvbigpO1xuICAgICAgICBpZiAoIXZhbGlkYXRlQmVmb3JlTmF2KSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBjYWNoZVxuICAgICAgICBjb25zdCBjYWNoZSA9IHRoaXMuc2VjdGlvbk5hdmlnYWJpbGl0eUNhY2hlKCk7XG4gICAgICAgIHJldHVybiBjYWNoZS5oYXMoc2VjdGlvbkluZGV4KSA/ICFjYWNoZS5nZXQoc2VjdGlvbkluZGV4KSEgOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPWidgetContainerComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXMQuestionnaireViewerViewModel } from './questionnaire-viewer.viewmodel';\nimport { AXMQuestionnaireViewerSinglePageViewComponent } from './views/single-page-view.component';\nimport { AXMQuestionnaireViewerPagePerGroupViewComponent } from './views/page-per-group-view.component';\nimport { AXMQuestionnaireViewerPagePerQuestionViewComponent } from './views/page-per-question-view.component';\nimport { AXMQuestionnaireViewerSideMenuViewComponent } from './views/side-menu-view.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/form\";\nimport * as i2 from \"@acorex/platform/layout/widget-core\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\n//#endregion\n//#region ---- Component ----\n/**\n * Questionnaire Viewer Component\n * Renders a questionnaire for viewing/answering with configurable display modes\n */\nexport class AXMQuestionnaireViewerComponent {\n //#endregion\n //#region ---- Lifecycle ----\n constructor() {\n //#region ---- Services & Dependencies ----\n this.vm = inject(AXMQuestionnaireViewerViewModel);\n //#endregion\n //#region ---- Inputs ----\n /**\n * Questionnaire ID to load and display (required if structure is not provided)\n */\n this.questionnaireId = input(undefined, ...(ngDevMode ? [{ debugName: \"questionnaireId\" }] : []));\n /**\n * Structure data for preview mode (used when questionnaireId is not provided)\n */\n this.structure = input(undefined, ...(ngDevMode ? [{ debugName: \"structure\" }] : []));\n /**\n * Viewer configuration\n * Note: If properties are undefined, displaySettings from structure will be used\n */\n this.config = input(undefined, ...(ngDevMode ? [{ debugName: \"config\" }] : []));\n /**\n * Initial answers to pre-fill the questionnaire\n */\n this.initialAnswers = input({}, ...(ngDevMode ? [{ debugName: \"initialAnswers\" }] : []));\n //#endregion\n //#region ---- Outputs ----\n /**\n * Emitted when answers change\n */\n this.answersChanged = output();\n /**\n * Emitted when a question is answered\n */\n this.questionAnswered = output();\n //#endregion\n //#region ---- View References ----\n /**\n * Form reference for validation\n */\n this.form = viewChild('form', ...(ngDevMode ? [{ debugName: \"form\" }] : []));\n /**\n * Widget container reference for context access\n */\n this.widgetContainer = viewChild(AXPWidgetContainerComponent, ...(ngDevMode ? [{ debugName: \"widgetContainer\" }] : []));\n // Register form and widget container when available\n effect(() => {\n const form = this.form();\n if (form) {\n this.vm.registerForm(form);\n }\n });\n effect(() => {\n const container = this.widgetContainer();\n if (container) {\n this.vm.registerWidgetContainer(container);\n }\n });\n // Load questionnaire when ID or structure changes\n effect(() => {\n const id = this.questionnaireId();\n const structure = this.structure();\n const config = this.config();\n const initialAnswers = this.initialAnswers();\n if (id) {\n this.vm.loadQuestionnaire(id, initialAnswers, config);\n }\n else if (structure) {\n if (structure.sections && structure.sections.length > 0) {\n this.vm.loadStructure(structure, config, initialAnswers);\n }\n else {\n // Structure exists but has no sections - set empty state\n this.vm.loadStructure({ sections: [] }, config, initialAnswers);\n }\n }\n });\n // Start timer if enabled\n effect(() => {\n const shouldShowTimer = this.vm.showTimer();\n const timeLimit = this.vm.timerTimeLimit();\n if (shouldShowTimer && timeLimit) {\n this.vm.startTimer();\n }\n else {\n this.vm.stopTimer();\n }\n });\n }\n //#endregion\n //#region ---- Public API - State Access ----\n /**\n * Get viewmodel instance (for accessing computed properties)\n */\n get viewmodel() {\n return this.vm;\n }\n /**\n * Check if can navigate previous\n */\n get canNavigatePrevious() {\n return this.vm.canNavigatePrevious();\n }\n /**\n * Check if can navigate next\n */\n get canNavigateNext() {\n return this.vm.canNavigateNext();\n }\n /**\n * Get current view mode\n */\n get viewMode() {\n return this.vm.viewMode();\n }\n /**\n * Check if we're on the last step\n */\n get isLastStep() {\n return this.vm.isLastStep();\n }\n /**\n * Check if all required questions are answered\n */\n get areAllRequiredQuestionsAnswered() {\n return this.vm.areAllRequiredQuestionsAnswered();\n }\n //#endregion\n //#region ---- Public API Methods ----\n /**\n * Navigate to next question/section\n * Validates current page before navigating\n * @returns true if navigation succeeded, false if validation failed\n */\n async navigateNext() {\n return await this.vm.navigateNext();\n }\n /**\n * Navigate to previous question/section\n * @returns true if navigation succeeded\n */\n async navigatePrevious() {\n return await this.vm.navigatePrevious();\n }\n /**\n * Navigate to specific section\n * Validates current page before navigating\n * @param index Section index (0-based)\n * @returns true if navigation succeeded, false if validation failed\n */\n async navigateToSection(index) {\n return await this.vm.navigateToSection(index);\n }\n /**\n * Navigate to specific question\n * Validates current page before navigating\n * @param sectionIndex Section index (0-based)\n * @param questionIndex Question index (0-based)\n * @returns true if navigation succeeded, false if validation failed\n */\n async navigateToQuestion(sectionIndex, questionIndex) {\n return await this.vm.navigateToQuestion(sectionIndex, questionIndex);\n }\n /**\n * Validate all visible questions on current page\n * @returns Validation result with errors\n */\n async validateCurrentPage() {\n return await this.vm.validateCurrentPage();\n }\n /**\n * Validate all questions in entire questionnaire\n * @returns Validation result with errors\n */\n async validateAllQuestions() {\n return await this.vm.validateAllQuestions();\n }\n /**\n * Get all answers from context\n */\n getAllAnswers() {\n return this.vm.getAllAnswers();\n }\n /**\n * Get questions with their corresponding answers\n */\n getQuestionsWithAnswers() {\n return this.vm.getQuestionsWithAnswers();\n }\n /**\n * Get context data for review step (answers at widget paths).\n * Must be called before transitioning to review while viewer is still rendered.\n */\n getReviewContext() {\n const container = this.vm.widgetContainer();\n return container?.contextService?.data() ?? {};\n }\n /**\n * Submit questionnaire\n * Validates all questions before submitting\n * @returns Submit result with success status, answers, and errors if any\n */\n async submit() {\n return await this.vm.submit();\n }\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Handle context changes for auto-save\n */\n handleContextChanged() {\n const answers = this.vm.getAllAnswers();\n this.answersChanged.emit(answers);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerComponent, isStandalone: true, selector: \"axm-questionnaire-viewer\", inputs: { questionnaireId: { classPropertyName: \"questionnaireId\", publicName: \"questionnaireId\", isSignal: true, isRequired: false, transformFunction: null }, structure: { classPropertyName: \"structure\", publicName: \"structure\", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: \"config\", publicName: \"config\", isSignal: true, isRequired: false, transformFunction: null }, initialAnswers: { classPropertyName: \"initialAnswers\", publicName: \"initialAnswers\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { answersChanged: \"answersChanged\", questionAnswered: \"questionAnswered\" }, host: { classAttribute: \"axm-questionnaire-viewer\" }, providers: [AXMQuestionnaireViewerViewModel], viewQueries: [{ propertyName: \"form\", first: true, predicate: [\"form\"], descendants: true, isSignal: true }, { propertyName: \"widgetContainer\", first: true, predicate: AXPWidgetContainerComponent, descendants: true, isSignal: true }], ngImport: i0, template: \"<axp-widgets-container #widgetContainer [context]=\\\"{}\\\" (onContextChanged)=\\\"handleContextChanged()\\\">\\n @if (vm.isLoading()) {\\n <div class=\\\"__loading\\\">\\n <axp-state-message icon=\\\"fa-light fa-spinner fa-spin\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n </div>\\n } @else if (vm.error()) {\\n <div class=\\\"__error\\\">\\n <axp-state-message icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-viewer.error.title' | translate | async) || ''\\\"\\n [description]=\\\"vm.error() || ''\\\">\\n </axp-state-message>\\n </div>\\n } @else if (vm.questionnaireData()) {\\n <div class=\\\"__questionnaire-container\\\">\\n <ax-form #form>\\n <!-- Dynamic View Content -->\\n @if (vm.viewMode() === 'single-page') {\\n <axm-questionnaire-viewer-single-page-view></axm-questionnaire-viewer-single-page-view>\\n } @else if (vm.viewMode() === 'page-per-group') {\\n <axm-questionnaire-viewer-page-per-group-view></axm-questionnaire-viewer-page-per-group-view>\\n } @else if (vm.viewMode() === 'page-per-question') {\\n <axm-questionnaire-viewer-page-per-question-view></axm-questionnaire-viewer-page-per-question-view>\\n } @else if (vm.viewMode() === 'side-menu') {\\n <axm-questionnaire-viewer-side-menu-view></axm-questionnaire-viewer-side-menu-view>\\n }\\n </ax-form>\\n </div>\\n }\\n</axp-widgets-container>\", styles: [\".axm-questionnaire-viewer{display:flex;height:60vh;width:100%;flex-direction:column}.axm-questionnaire-viewer ax-form{display:flex;height:100%;flex-direction:column}.axm-questionnaire-viewer axp-widgets-container{display:flex;height:100%;flex-direction:column}.axm-questionnaire-viewer .__loading,.axm-questionnaire-viewer .__error{display:flex;height:100%;align-items:center;justify-content:center}.axm-questionnaire-viewer .__questionnaire-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}.axm-questionnaire-viewer .__question-item{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.axm-questionnaire-viewer .__question-item.__answered{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-300),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-50),.3)}.axm-questionnaire-viewer .__question-item .__question-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-left{display:flex;flex-shrink:0;align-items:center;gap:.75rem}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-left .__question-number{font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-left .__question-counter{font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-right{display:flex;flex:1 1 0%;flex-wrap:wrap;align-items:flex-start;gap:.5rem}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-right .__question-title{flex:1 1 0%;font-size:1rem;line-height:1.5rem;font-weight:500;--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-right .__answered-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-success-800),var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-right .__required-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-description{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-widget{margin-top:.5rem}.axm-questionnaire-viewer .__widget-placeholder{border-radius:.25rem;border-width:1px;border-style:dashed;padding:1rem;font-size:.875rem;line-height:1.25rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i1.AXFormComponent, selector: \"ax-form\", inputs: [\"disabled\", \"readonly\", \"labelMode\", \"look\", \"messageStyle\", \"updateOn\", \"inUserInteractionActive\"], outputs: [\"onValidate\", \"updateOnChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i2.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"component\", type: \n // View components\n AXMQuestionnaireViewerSinglePageViewComponent, selector: \"axm-questionnaire-viewer-single-page-view\" }, { kind: \"component\", type: AXMQuestionnaireViewerPagePerGroupViewComponent, selector: \"axm-questionnaire-viewer-page-per-group-view\" }, { kind: \"component\", type: AXMQuestionnaireViewerPagePerQuestionViewComponent, selector: \"axm-questionnaire-viewer-page-per-question-view\" }, { kind: \"component\", type: AXMQuestionnaireViewerSideMenuViewComponent, selector: \"axm-questionnaire-viewer-side-menu-view\" }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-viewer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n AXTranslationModule,\n AXPStateMessageComponent,\n AXFormModule,\n AXDecoratorModule,\n AXPWidgetCoreModule,\n // View components\n AXMQuestionnaireViewerSinglePageViewComponent,\n AXMQuestionnaireViewerPagePerGroupViewComponent,\n AXMQuestionnaireViewerPagePerQuestionViewComponent,\n AXMQuestionnaireViewerSideMenuViewComponent,\n ], providers: [AXMQuestionnaireViewerViewModel], encapsulation: ViewEncapsulation.None, host: {\n class: 'axm-questionnaire-viewer',\n }, template: \"<axp-widgets-container #widgetContainer [context]=\\\"{}\\\" (onContextChanged)=\\\"handleContextChanged()\\\">\\n @if (vm.isLoading()) {\\n <div class=\\\"__loading\\\">\\n <axp-state-message icon=\\\"fa-light fa-spinner fa-spin\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async) || ''\\\"\\n [description]=\\\"('@assessment-management:questionnaires.components.questionnaire-viewer.loading.description' | translate | async) || ''\\\">\\n </axp-state-message>\\n </div>\\n } @else if (vm.error()) {\\n <div class=\\\"__error\\\">\\n <axp-state-message icon=\\\"fa-light fa-exclamation-triangle\\\"\\n [title]=\\\"('@assessment-management:questionnaires.components.questionnaire-viewer.error.title' | translate | async) || ''\\\"\\n [description]=\\\"vm.error() || ''\\\">\\n </axp-state-message>\\n </div>\\n } @else if (vm.questionnaireData()) {\\n <div class=\\\"__questionnaire-container\\\">\\n <ax-form #form>\\n <!-- Dynamic View Content -->\\n @if (vm.viewMode() === 'single-page') {\\n <axm-questionnaire-viewer-single-page-view></axm-questionnaire-viewer-single-page-view>\\n } @else if (vm.viewMode() === 'page-per-group') {\\n <axm-questionnaire-viewer-page-per-group-view></axm-questionnaire-viewer-page-per-group-view>\\n } @else if (vm.viewMode() === 'page-per-question') {\\n <axm-questionnaire-viewer-page-per-question-view></axm-questionnaire-viewer-page-per-question-view>\\n } @else if (vm.viewMode() === 'side-menu') {\\n <axm-questionnaire-viewer-side-menu-view></axm-questionnaire-viewer-side-menu-view>\\n }\\n </ax-form>\\n </div>\\n }\\n</axp-widgets-container>\", styles: [\".axm-questionnaire-viewer{display:flex;height:60vh;width:100%;flex-direction:column}.axm-questionnaire-viewer ax-form{display:flex;height:100%;flex-direction:column}.axm-questionnaire-viewer axp-widgets-container{display:flex;height:100%;flex-direction:column}.axm-questionnaire-viewer .__loading,.axm-questionnaire-viewer .__error{display:flex;height:100%;align-items:center;justify-content:center}.axm-questionnaire-viewer .__questionnaire-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}.axm-questionnaire-viewer .__question-item{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}.axm-questionnaire-viewer .__question-item.__answered{--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-300),var(--tw-border-opacity, 1));background-color:rgba(var(--ax-sys-color-primary-50),.3)}.axm-questionnaire-viewer .__question-item .__question-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-left{display:flex;flex-shrink:0;align-items:center;gap:.75rem}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-left .__question-number{font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-left .__question-counter{font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-right{display:flex;flex:1 1 0%;flex-wrap:wrap;align-items:flex-start;gap:.5rem}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-right .__question-title{flex:1 1 0%;font-size:1rem;line-height:1.5rem;font-weight:500;--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-right .__answered-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-success-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-success-800),var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-header .__question-header-right .__required-badge{border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-warning-100),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-warning-800),var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-description{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axm-questionnaire-viewer .__question-item .__question-widget{margin-top:.5rem}.axm-questionnaire-viewer .__widget-placeholder{border-radius:.25rem;border-width:1px;border-style:dashed;padding:1rem;font-size:.875rem;line-height:1.25rem;font-style:italic;--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { questionnaireId: [{ type: i0.Input, args: [{ isSignal: true, alias: \"questionnaireId\", required: false }] }], structure: [{ type: i0.Input, args: [{ isSignal: true, alias: \"structure\", required: false }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: \"config\", required: false }] }], initialAnswers: [{ type: i0.Input, args: [{ isSignal: true, alias: \"initialAnswers\", required: false }] }], answersChanged: [{ type: i0.Output, args: [\"answersChanged\"] }], questionAnswered: [{ type: i0.Output, args: [\"questionAnswered\"] }], form: [{ type: i0.ViewChild, args: ['form', { isSignal: true }] }], widgetContainer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPWidgetContainerComponent), { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3F1ZXN0aW9ubmFpcmUtdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLXZpZXdlci9xdWVzdGlvbm5haXJlLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQW1CLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2xFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSwrQ0FBK0MsRUFBRSxN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IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCB2aWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEZvcm1Db21wb25lbnQsIEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb250YWluZXJDb21wb25lbnQsIEFYUFdpZGdldENvcmVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLnR5cGVzJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVWaWV3ZXJDb25maWcgfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLnR5cGVzJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJWaWV3TW9kZWwgfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLnZpZXdtb2RlbCc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlVmlld2VyU2luZ2xlUGFnZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL3ZpZXdzL3NpbmdsZS1wYWdlLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJQYWdlUGVyR3JvdXBWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi92aWV3cy9wYWdlLXBlci1ncm91cC12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlVmlld2VyUGFnZVBlclF1ZXN0aW9uVmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3MvcGFnZS1wZXItcXVlc3Rpb24tdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclNpZGVNZW51Vmlld0NvbXBvbmVudCB9IGZyb20gJy4vdmlld3Mvc2lkZS1tZW51LXZpZXcuY29tcG9uZW50JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFF1ZXN0aW9ubmFpcmUgVmlld2VyIENvbXBvbmVudFxuICogUmVuZGVycyBhIHF1ZXN0aW9ubmFpcmUgZm9yIHZpZXdpbmcvYW5zd2VyaW5nIHdpdGggY29uZmlndXJhYmxlIGRpc3BsYXkgbW9kZXNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheG0tcXVlc3Rpb25uYWlyZS12aWV3ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbm5haXJlLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAgICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgICAgICBBWEZvcm1Nb2R1bGUsXG4gICAgICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgICAgICBBWFBXaWRnZXRDb3JlTW9kdWxlLFxuICAgICAgICAvLyBWaWV3IGNvbXBvbmVudHNcbiAgICAgICAgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclNpbmdsZVBhZ2VWaWV3Q29tcG9uZW50LFxuICAgICAgICBBWE1RdWVzdGlvbm5haXJlVmlld2VyUGFnZVBlckdyb3VwVmlld0NvbXBvbmVudCxcbiAgICAgICAgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclBhZ2VQZXJRdWVzdGlvblZpZXdDb21wb25lbnQsXG4gICAgICAgIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJTaWRlTWVudVZpZXdDb21wb25lbnQsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtBWE1RdWVzdGlvbm5haXJlVmlld2VyVmlld01vZGVsXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdheG0tcXVlc3Rpb25uYWlyZS12aWV3ZXInLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJDb21wb25lbnQge1xuICAgIC8vI3JlZ2lvbiAtLS0tICAgU2VydmljZXMgJiBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVZpZXdlclZpZXdNb2RlbCk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgSW5wdXRzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogUXVlc3Rpb25uYWlyZSBJRCB0byBsb2FkIGFuZCBkaXNwbGF5IChyZXF1aXJlZCBpZiBzdHJ1Y3R1cmUgaXMgbm90IHByb3ZpZGVkKVxuICAgICAqL1xuICAgIHF1ZXN0aW9ubmFpcmVJZCA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKlxuICAgICAqIFN0cnVjdHVyZSBkYXRhIGZvciBwcmV2aWV3IG1vZGUgKHVzZWQgd2hlbiBxdWVzdGlvbm5haXJlSWQgaXMgbm90IHByb3ZpZGVkKVxuICAgICAqL1xuICAgIHN0cnVjdHVyZSA9IGlucHV0PFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICAvKipcbiAgICAgKiBWaWV3ZXIgY29uZmlndXJhdGlvblxuICAgICAqIE5vdGU6IElmIHByb3BlcnRpZXMgYXJlIHVuZGVmaW5lZCwgZGlzcGxheVNldHRpbmdzIGZyb20gc3RydWN0dXJlIHdpbGwgYmUgdXNlZFxuICAgICAqL1xuICAgIGNvbmZpZyA9IGlucHV0PFF1ZXN0aW9ubmFpcmVWaWV3ZXJDb25maWcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIGFuc3dlcnMgdG8gcHJlLWZpbGwgdGhlIHF1ZXN0aW9ubmFpcmVcbiAgICAgKi9cbiAgICBpbml0aWFsQW5zd2VycyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIGFueT4+KHt9KTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgLy8jcmVnaW9uIC0tLS0gICBPdXRwdXRzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIGFuc3dlcnMgY2hhbmdlXG4gICAgICovXG4gICAgYW5zd2Vyc0NoYW5nZWQgPSBvdXRwdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiBhIHF1ZXN0aW9uIGlzIGFuc3dlcmVkXG4gICAgICovXG4gICAgcXVlc3Rpb25BbnN3ZXJlZCA9IG91dHB1dDx7IHF1ZXN0aW9uSWQ6IHN0cmluZzsgdmFsdWU6IGFueSB9PigpO1xuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFZpZXcgUmVmZXJlbmNlcyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEZvcm0gcmVmZXJlbmNlIGZvciB2YWxpZGF0aW9uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZvcm0gPSB2aWV3Q2hpbGQ8QVhGb3JtQ29tcG9uZW50PignZm9ybScpO1xuXG4gICAgLyoqXG4gICAgICogV2lkZ2V0IGNvbnRhaW5lciByZWZlcmVuY2UgZm9yIGNvbnRleHQgYWNjZXNzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHdpZGdldENvbnRhaW5lciA9IHZpZXdDaGlsZDxBWFBXaWRnZXRDb250YWluZXJDb21wb25lbnQ+KEFYUFdpZGdldENvbnRhaW5lckNvbXBvbmVudCk7XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgTGlmZWN5Y2xlICAgLS0tLVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIFJlZ2lzdGVyIGZvcm0gYW5kIHdpZGdldCBjb250YWluZXIgd2hlbiBhdmFpbGFibGVcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm0oKTtcbiAgICAgICAgICAgIGlmIChmb3JtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52bS5yZWdpc3RlckZvcm0oZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLndpZGdldENvbnRhaW5lcigpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIHRoaXMudm0ucmVnaXN0ZXJXaWRnZXRDb250YWluZXIoY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gTG9hZCBxdWVzdGlvbm5haXJlIHdoZW4gSUQgb3Igc3RydWN0dXJlIGNoYW5nZXNcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5xdWVzdGlvbm5haXJlSWQoKTtcbiAgICAgICAgICAgIGNvbnN0IHN0cnVjdHVyZSA9IHRoaXMuc3RydWN0dXJlKCk7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbEFuc3dlcnMgPSB0aGlzLmluaXRpYWxBbnN3ZXJzKCk7XG5cbiAgICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudm0ubG9hZFF1ZXN0aW9ubmFpcmUoaWQsIGluaXRpYWxBbnN3ZXJzLCBjb25maWcpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJ1Y3R1cmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLnNlY3Rpb25zICYmIHN0cnVjdHVyZS5zZWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudm0ubG9hZFN0cnVjdHVyZShzdHJ1Y3R1cmUsIGNvbmZpZywgaW5pdGlhbEFuc3dlcnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFN0cnVjdHVyZSBleGlzdHMgYnV0IGhhcyBubyBzZWN0aW9ucyAtIHNldCBlbXB0eSBzdGF0ZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZtLmxvYWRTdHJ1Y3R1cmUoeyBzZWN0aW9uczogW10gfSwgY29uZmlnLCBpbml0aWFsQW5zd2Vycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdGFydCB0aW1lciBpZiBlbmFibGVkXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRTaG93VGltZXIgPSB0aGlzLnZtLnNob3dUaW1lcigpO1xuICAgICAgICAgICAgY29uc3QgdGltZUxpbWl0ID0gdGhpcy52bS50aW1lclRpbWVMaW1pdCgpO1xuXG4gICAgICAgICAgICBpZiAoc2hvdWxkU2hvd1RpbWVyICYmIHRpbWVMaW1pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMudm0uc3RhcnRUaW1lcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZtLnN0b3BUaW1lcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIEFQSSAtIFN0YXRlIEFjY2VzcyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIEdldCB2aWV3bW9kZWwgaW5zdGFuY2UgKGZvciBhY2Nlc3NpbmcgY29tcHV0ZWQgcHJvcGVydGllcylcbiAgICAgKi9cbiAgICBnZXQgdmlld21vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52bTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBjYW4gbmF2aWdhdGUgcHJldmlvdXNcbiAgICAgKi9cbiAgICBnZXQgY2FuTmF2aWdhdGVQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0uY2FuTmF2aWdhdGVQcmV2aW91cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGNhbiBuYXZpZ2F0ZSBuZXh0XG4gICAgICovXG4gICAgZ2V0IGNhbk5hdmlnYXRlTmV4dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0uY2FuTmF2aWdhdGVOZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGN1cnJlbnQgdmlldyBtb2RlXG4gICAgICovXG4gICAgZ2V0IHZpZXdNb2RlKCk6ICdzaW5nbGUtcGFnZScgfCAncGFnZS1wZXItZ3JvdXAnIHwgJ3BhZ2UtcGVyLXF1ZXN0aW9uJyB8ICdzaWRlLW1lbnUnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0udmlld01vZGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB3ZSdyZSBvbiB0aGUgbGFzdCBzdGVwXG4gICAgICovXG4gICAgZ2V0IGlzTGFzdFN0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZtLmlzTGFzdFN0ZXAoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhbGwgcmVxdWlyZWQgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZFxuICAgICAqL1xuICAgIGdldCBhcmVBbGxSZXF1aXJlZFF1ZXN0aW9uc0Fuc3dlcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52bS5hcmVBbGxSZXF1aXJlZFF1ZXN0aW9uc0Fuc3dlcmVkKCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBBUEkgTWV0aG9kcyAgIC0tLS1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlIHRvIG5leHQgcXVlc3Rpb24vc2VjdGlvblxuICAgICAqIFZhbGlkYXRlcyBjdXJyZW50IHBhZ2UgYmVmb3JlIG5hdmlnYXRpbmdcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIG5hdmlnYXRpb24gc3VjY2VlZGVkLCBmYWxzZSBpZiB2YWxpZGF0aW9uIGZhaWxlZFxuICAgICAqL1xuICAgIGFzeW5jIG5hdmlnYXRlTmV4dCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudm0ubmF2aWdhdGVOZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGUgdG8gcHJldmlvdXMgcXVlc3Rpb24vc2VjdGlvblxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgbmF2aWdhdGlvbiBzdWNjZWVkZWRcbiAgICAgKi9cbiAgICBhc3luYyBuYXZpZ2F0ZVByZXZpb3VzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy52bS5uYXZpZ2F0ZVByZXZpb3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGUgdG8gc3BlY2lmaWMgc2VjdGlvblxuICAgICAqIFZhbGlkYXRlcyBjdXJyZW50IHBhZ2UgYmVmb3JlIG5hdmlnYXRpbmdcbiAgICAgKiBAcGFyYW0gaW5kZXggU2VjdGlvbiBpbmRleCAoMC1iYXNlZClcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIG5hdmlnYXRpb24gc3VjY2VlZGVkLCBmYWxzZSBpZiB2YWxpZGF0aW9uIGZhaWxlZFxuICAgICAqL1xuICAgIGFzeW5jIG5hdmlnYXRlVG9TZWN0aW9uKGluZGV4OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudm0ubmF2aWdhdGVUb1NlY3Rpb24oaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlIHRvIHNwZWNpZmljIHF1ZXN0aW9uXG4gICAgICogVmFsaWRhdGVzIGN1cnJlbnQgcGFnZSBiZWZvcmUgbmF2aWdhdGluZ1xuICAgICAqIEBwYXJhbSBzZWN0aW9uSW5kZXggU2VjdGlvbiBpbmRleCAoMC1iYXNlZClcbiAgICAgKiBAcGFyYW0gcXVlc3Rpb25JbmRleCBRdWVzdGlvbiBpbmRleCAoMC1iYXNlZClcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIG5hdmlnYXRpb24gc3VjY2VlZGVkLCBmYWxzZSBpZiB2YWxpZGF0aW9uIGZhaWxlZFxuICAgICAqL1xuICAgIGFzeW5jIG5hdmlnYXRlVG9RdWVzdGlvbihzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnZtLm5hdmlnYXRlVG9RdWVzdGlvbihzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlIGFsbCB2aXNpYmxlIHF1ZXN0aW9ucyBvbiBjdXJyZW50IHBhZ2VcbiAgICAgKiBAcmV0dXJucyBWYWxpZGF0aW9uIHJlc3VsdCB3aXRoIGVycm9yc1xuICAgICAqL1xuICAgIGFzeW5jIHZhbGlkYXRlQ3VycmVudFBhZ2UoKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnZtLnZhbGlkYXRlQ3VycmVudFBhZ2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZSBhbGwgcXVlc3Rpb25zIGluIGVudGlyZSBxdWVzdGlvbm5haXJlXG4gICAgICogQHJldHVybnMgVmFsaWRhdGlvbiByZXN1bHQgd2l0aCBlcnJvcnNcbiAgICAgKi9cbiAgICBhc3luYyB2YWxpZGF0ZUFsbFF1ZXN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudm0udmFsaWRhdGVBbGxRdWVzdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIGFuc3dlcnMgZnJvbSBjb250ZXh0XG4gICAgICovXG4gICAgZ2V0QWxsQW5zd2VycygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0uZ2V0QWxsQW5zd2VycygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBxdWVzdGlvbnMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGFuc3dlcnNcbiAgICAgKi9cbiAgICBnZXRRdWVzdGlvbnNXaXRoQW5zd2VycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0uZ2V0UXVlc3Rpb25zV2l0aEFuc3dlcnMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY29udGV4dCBkYXRhIGZvciByZXZpZXcgc3RlcCAoYW5zd2VycyBhdCB3aWRnZXQgcGF0aHMpLlxuICAgICAqIE11c3QgYmUgY2FsbGVkIGJlZm9yZSB0cmFuc2l0aW9uaW5nIHRvIHJldmlldyB3aGlsZSB2aWV3ZXIgaXMgc3RpbGwgcmVuZGVyZWQuXG4gICAgICovXG4gICAgZ2V0UmV2aWV3Q29udGV4dCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy52bS53aWRnZXRDb250YWluZXIoKTtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lcj8uY29udGV4dFNlcnZpY2U/LmRhdGEoKSA/PyB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJtaXQgcXVlc3Rpb25uYWlyZVxuICAgICAqIFZhbGlkYXRlcyBhbGwgcXVlc3Rpb25zIGJlZm9yZSBzdWJtaXR0aW5nXG4gICAgICogQHJldHVybnMgU3VibWl0IHJlc3VsdCB3aXRoIHN1Y2Nlc3Mgc3RhdHVzLCBhbnN3ZXJzLCBhbmQgZXJyb3JzIGlmIGFueVxuICAgICAqL1xuICAgIGFzeW5jIHN1Ym1pdCgpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudm0uc3VibWl0KCk7XG4gICAgfVxuXG4gICAgLy8jZW5kcmVnaW9uXG5cbiAgICAvLyNyZWdpb24gLS0tLSAgIEV2ZW50IEhhbmRsZXJzICAgLS0tLVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGNvbnRleHQgY2hhbmdlcyBmb3IgYXV0by1zYXZlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNvbnRleHRDaGFuZ2VkKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbnN3ZXJzID0gdGhpcy52bS5nZXRBbGxBbnN3ZXJzKCk7XG4gICAgICAgIHRoaXMuYW5zd2Vyc0NoYW5nZWQuZW1pdChhbnN3ZXJzKTtcbiAgICB9XG5cbiAgICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG4iLCI8YXhwLXdpZGdldHMtY29udGFpbmVyICN3aWRnZXRDb250YWluZXIgW2NvbnRleHRdPVwie31cIiAob25Db250ZXh0Q2hhbmdlZCk9XCJoYW5kbGVDb250ZXh0Q2hhbmdlZCgpXCI+XG4gICAgQGlmICh2bS5pc0xvYWRpbmcoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJfX2xvYWRpbmdcIj5cbiAgICAgICAgPGF4cC1zdGF0ZS1tZXNzYWdlIGljb249XCJmYS1saWdodCBmYS1zcGlubmVyIGZhLXNwaW5cIlxuICAgICAgICAgICAgW3RpdGxlXT1cIignQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmxvYWRpbmcudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMpIHx8ICcnXCJcbiAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5sb2FkaW5nLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICAgIDwvZGl2PlxuICAgIH0gQGVsc2UgaWYgKHZtLmVycm9yKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiX19lcnJvclwiPlxuICAgICAgICA8YXhwLXN0YXRlLW1lc3NhZ2UgaWNvbj1cImZhLWxpZ2h0IGZhLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCIoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5lcnJvci50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYykgfHwgJydcIlxuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cInZtLmVycm9yKCkgfHwgJydcIj5cbiAgICAgICAgPC9heHAtc3RhdGUtbWVzc2FnZT5cbiAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIGlmICh2bS5xdWVzdGlvbm5haXJlRGF0YSgpKSB7XG4gICAgPGRpdiBjbGFzcz1cIl9fcXVlc3Rpb25uYWlyZS1jb250YWluZXJcIj5cbiAgICAgICAgPGF4LWZvcm0gI2Zvcm0+XG4gICAgICAgICAgICA8IS0tIER5bmFtaWMgVmlldyBDb250ZW50IC0tPlxuICAgICAgICAgICAgQGlmICh2bS52aWV3TW9kZSgpID09PSAnc2luZ2xlLXBhZ2UnKSB7XG4gICAgICAgICAgICA8YXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXNpbmdsZS1wYWdlLXZpZXc+PC9heG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItc2luZ2xlLXBhZ2Utdmlldz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKHZtLnZpZXdNb2RlKCkgPT09ICdwYWdlLXBlci1ncm91cCcpIHtcbiAgICAgICAgICAgIDxheG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItcGFnZS1wZXItZ3JvdXAtdmlldz48L2F4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1wYWdlLXBlci1ncm91cC12aWV3PlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAodm0udmlld01vZGUoKSA9PT0gJ3BhZ2UtcGVyLXF1ZXN0aW9uJykge1xuICAgICAgICAgICAgPGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1wYWdlLXBlci1xdWVzdGlvbi12aWV3PjwvYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXBhZ2UtcGVyLXF1ZXN0aW9uLXZpZXc+XG4gICAgICAgICAgICB9IEBlbHNlIGlmICh2bS52aWV3TW9kZSgpID09PSAnc2lkZS1tZW51Jykge1xuICAgICAgICAgICAgPGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1zaWRlLW1lbnUtdmlldz48L2F4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1zaWRlLW1lbnUtdmlldz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9heC1mb3JtPlxuICAgIDwvZGl2PlxuICAgIH1cbjwvYXhwLXdpZGdldHMtY29udGFpbmVyPiJdfQ==","//#region ---- Imports ----\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { AXMQuestionnaireViewerComponent } from './questionnaire-viewer.component';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Widget Edit Component ----\n/**\n * Questionnaire Viewer Widget Component\n * Wraps the reusable AXMQuestionnaireViewerComponent for use as a widget\n */\nexport class AXMQuestionnaireViewerWidgetEditComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n /**\n * Get questionnaire ID from options or value (reactive)\n */\n this.questionnaireId = computed(() => {\n const options = this.options();\n const questionnaireId = options['questionnaireId'];\n if (questionnaireId) {\n return questionnaireId;\n }\n // Try to get from value if it's a string (direct ID)\n const value = this.getValue();\n if (typeof value === 'string') {\n return value;\n }\n // Try to get from value object\n if (value && typeof value === 'object' && 'questionnaireId' in value) {\n return value.questionnaireId;\n }\n return undefined;\n }, ...(ngDevMode ? [{ debugName: \"questionnaireId\" }] : []));\n /**\n * Get structure data from options or value (for preview mode) (reactive)\n */\n this.structure = computed(() => {\n const options = this.options();\n const value = this.getValue();\n let structure;\n // First try options\n if (options['structure']) {\n structure = options['structure'];\n }\n // Then try value if it's the structure object\n else if (value && typeof value === 'object' && 'sections' in value) {\n structure = value;\n }\n // Try value.structure if value is an object with structure property\n else if (value && typeof value === 'object' && 'structure' in value) {\n structure = value.structure;\n }\n return structure;\n }, ...(ngDevMode ? [{ debugName: \"structure\" }] : []));\n /**\n * Get viewer configuration from options (reactive)\n * Simple wrapper - only passes through explicitly set options\n * The main component will handle displaySettings priority\n */\n this.viewerConfig = computed(() => {\n const structure = this.structure();\n // If structure is provided with displaySettings, prioritize displaySettings over widget config\n // This ensures preview mode uses displaySettings from builder, not widget defaults\n if (structure?.displaySettings) {\n // Only return config for non-display properties (like allowNavigation)\n // Display properties will come from displaySettings\n return {\n allowNavigation: true,\n };\n }\n const options = this.options();\n // Check for explicit display-related options\n // Only return config if there are explicit display options, otherwise return undefined\n // This allows displaySettings from structure to be used\n const hasExplicitDisplayOptions = options['viewMode'] !== undefined ||\n options['showProgressBar'] !== undefined ||\n options['showSectionTitles'] !== undefined ||\n options['showQuestionNumbers'] !== undefined ||\n options['showTimer'] !== undefined;\n // If no explicit display options, return undefined to use displaySettings\n if (!hasExplicitDisplayOptions) {\n return undefined;\n }\n // Build config object - only include properties that are explicitly set\n const config = {\n allowNavigation: true,\n };\n // Only add display-related properties if they're explicitly set\n // Extract viewMode - handle both string and object (from select box)\n let viewMode = undefined;\n const viewModeOption = options['viewMode'];\n if (viewModeOption !== undefined) {\n if (typeof viewModeOption === 'string') {\n viewMode = viewModeOption;\n }\n else if (typeof viewModeOption === 'object' && 'id' in viewModeOption) {\n viewMode = viewModeOption.id;\n }\n }\n if (viewMode !== undefined) {\n config.viewMode = viewMode;\n }\n if (options['showProgressBar'] !== undefined) {\n config.showProgressBar = options['showProgressBar'];\n }\n if (options['showSectionTitles'] !== undefined) {\n config.showSectionTitles = options['showSectionTitles'];\n }\n if (options['showQuestionNumbers'] !== undefined) {\n config.showQuestionNumbers = options['showQuestionNumbers'];\n }\n if (options['showTimer'] !== undefined) {\n config.timer = {\n showTimer: options['showTimer'] === true,\n mode: 'countdown',\n timeLimit: options['timeLimit'],\n };\n }\n return config;\n }, ...(ngDevMode ? [{ debugName: \"viewerConfig\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerWidgetEditComponent, isStandalone: true, selector: \"axm-questionnaire-viewer-widget-edit\", usesInheritance: true, ngImport: i0, template: `\n <axm-questionnaire-viewer\n [questionnaireId]=\"questionnaireId()\"\n [structure]=\"structure()\"\n [config]=\"viewerConfig() ?? undefined\">\n </axm-questionnaire-viewer>\n `, isInline: true, dependencies: [{ kind: \"component\", type: AXMQuestionnaireViewerComponent, selector: \"axm-questionnaire-viewer\", inputs: [\"questionnaireId\", \"structure\", \"config\", \"initialAnswers\"], outputs: [\"answersChanged\", \"questionAnswered\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerWidgetEditComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axm-questionnaire-viewer-widget-edit',\n template: `\n <axm-questionnaire-viewer\n [questionnaireId]=\"questionnaireId()\"\n [structure]=\"structure()\"\n [config]=\"viewerConfig() ?? undefined\">\n </axm-questionnaire-viewer>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXMQuestionnaireViewerComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS12aWV3ZXItZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcXVlc3Rpb25uYWlyZS12aWV3ZXIvcXVlc3Rpb25uYWlyZS12aWV3ZXItZWRpdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUduRixZQUFZO0FBRVosNkNBQTZDO0FBRTdDOzs7R0FHRztBQWFILE1BQU0sT0FBTyx5Q0FBMEMsU0FBUSx1QkFBdUI7SUFadEY7O1FBYUk7O1dBRUc7UUFDSCxvQkFBZSxHQUFHLFFBQVEsQ0FBcUIsR0FBRyxFQUFFO1lBQ2hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMvQixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQXVCLENBQUM7WUFFekUsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDbEIsT0FBTyxlQUFlLENBQUM7WUFDM0IsQ0FBQztZQUVELHFEQUFxRDtZQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUVELCtCQUErQjtZQUMvQixJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksaUJBQWlCLElBQUksS0FB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LENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFDRCxJQUFJLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLENBQUMsS0FBSyxHQUFHO29CQUNYLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSTtvQkFDeEMsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFNBQVMsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUF1QjtpQkFDeEQsQ0FBQztZQUNOLENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLHdEQUFDLENBQUM7S0FDTjsrR0E3SFkseUNBQXlDO21HQUF6Qyx5Q0FBeUMsdUhBVnhDOzs7Ozs7S0FNVCw0REFFUywrQkFBK0I7OzRGQUVoQyx5Q0FBeUM7a0JBWnJELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsUUFBUSxFQUFFOzs7Ozs7S0FNVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsK0JBQStCLENBQUM7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlVmlld2VyQ29uZmlnIH0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLXZpZXdlci50eXBlcyc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLXZpZXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB9IGZyb20gJy4uL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci9xdWVzdGlvbm5haXJlLWJ1aWxkZXIudHlwZXMnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBXaWRnZXQgRWRpdCBDb21wb25lbnQgICAtLS0tXG5cbi8qKlxuICogUXVlc3Rpb25uYWlyZSBWaWV3ZXIgV2lkZ2V0IENvbXBvbmVudFxuICogV3JhcHMgdGhlIHJldXNhYmxlIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJDb21wb25lbnQgZm9yIHVzZSBhcyBhIHdpZGdldFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4bS1xdWVzdGlvbm5haXJlLXZpZXdlci13aWRnZXQtZWRpdCcsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlclxuICAgICAgICAgICAgW3F1ZXN0aW9ubmFpcmVJZF09XCJxdWVzdGlvbm5haXJlSWQoKVwiXG4gICAgICAgICAgICBbc3RydWN0dXJlXT1cInN0cnVjdHVyZSgpXCJcbiAgICAgICAgICAgIFtjb25maWddPVwidmlld2VyQ29uZmlnKCkgPz8gdW5kZWZpbmVkXCI+XG4gICAgICAgIDwvYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW1wb3J0czogW0FYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1RdWVzdGlvbm5haXJlVmlld2VyV2lkZ2V0RWRpdENvbXBvbmVudCBleHRlbmRzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBHZXQgcXVlc3Rpb25uYWlyZSBJRCBmcm9tIG9wdGlvbnMgb3IgdmFsdWUgKHJlYWN0aXZlKVxuICAgICAqL1xuICAgIHF1ZXN0aW9ubmFpcmVJZCA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9ubmFpcmVJZCA9IG9wdGlvbnNbJ3F1ZXN0aW9ubmFpcmVJZCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAocXVlc3Rpb25uYWlyZUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gcXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJ5IHRvIGdldCBmcm9tIHZhbHVlIGlmIGl0J3MgYSBzdHJpbmcgKGRpcmVjdCBJRClcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUcnkgdG8gZ2V0IGZyb20gdmFsdWUgb2JqZWN0XG4gICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdxdWVzdGlvbm5haXJlSWQnIGluIHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlIGFzIGFueSkucXVlc3Rpb25uYWlyZUlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJ1Y3R1cmUgZGF0YSBmcm9tIG9wdGlvbnMgb3IgdmFsdWUgKGZvciBwcmV2aWV3IG1vZGUpIChyZWFjdGl2ZSlcbiAgICAgKi9cbiAgICBzdHJ1Y3R1cmUgPSBjb21wdXRlZDxRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlIHwgdW5kZWZpbmVkPigoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG5cbiAgICAgICAgbGV0IHN0cnVjdHVyZTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSB8IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBGaXJzdCB0cnkgb3B0aW9uc1xuICAgICAgICBpZiAob3B0aW9uc1snc3RydWN0dXJlJ10pIHtcbiAgICAgICAgICAgIHN0cnVjdHVyZSA9IG9wdGlvbnNbJ3N0cnVjdHVyZSddIGFzIFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlbiB0cnkgdmFsdWUgaWYgaXQncyB0aGUgc3RydWN0dXJlIG9iamVjdFxuICAgICAgICBlbHNlIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICdzZWN0aW9ucycgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgIHN0cnVjdHVyZSA9IHZhbHVlIGFzIFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVHJ5IHZhbHVlLnN0cnVjdHVyZSBpZiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBzdHJ1Y3R1cmUgcHJvcGVydHlcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnc3RydWN0dXJlJyBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgc3RydWN0dXJlID0gKHZhbHVlIGFzIGFueSkuc3RydWN0dXJlIGFzIFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RydWN0dXJlO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogR2V0IHZpZXdlciBjb25maWd1cmF0aW9uIGZyb20gb3B0aW9ucyAocmVhY3RpdmUpXG4gICAgICogU2ltcGxlIHdyYXBwZXIgLSBvbmx5IHBhc3NlcyB0aHJvdWdoIGV4cGxpY2l0bHkgc2V0IG9wdGlvbnNcbiAgICAgKiBUaGUgbWFpbiBjb21wb25lbnQgd2lsbCBoYW5kbGUgZGlzcGxheVNldHRpbmdzIHByaW9yaXR5XG4gICAgICovXG4gICAgdmlld2VyQ29uZmlnID0gY29tcHV0ZWQ8UXVlc3Rpb25uYWlyZVZpZXdlckNvbmZpZyB8IHVuZGVmaW5lZD4oKCkgPT4ge1xuICAgICAgICBjb25zdCBzdHJ1Y3R1cmUgPSB0aGlzLnN0cnVjdHVyZSgpO1xuXG4gICAgICAgIC8vIElmIHN0cnVjdHVyZSBpcyBwcm92aWRlZCB3aXRoIGRpc3BsYXlTZXR0aW5ncywgcHJpb3JpdGl6ZSBkaXNwbGF5U2V0dGluZ3Mgb3ZlciB3aWRnZXQgY29uZmlnXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyBwcmV2aWV3IG1vZGUgdXNlcyBkaXNwbGF5U2V0dGluZ3MgZnJvbSBidWlsZGVyLCBub3Qgd2lkZ2V0IGRlZmF1bHRzXG4gICAgICAgIGlmIChzdHJ1Y3R1cmU/LmRpc3BsYXlTZXR0aW5ncykge1xuICAgICAgICAgICAgLy8gT25seSByZXR1cm4gY29uZmlnIGZvciBub24tZGlzcGxheSBwcm9wZXJ0aWVzIChsaWtlIGFsbG93TmF2aWdhdGlvbilcbiAgICAgICAgICAgIC8vIERpc3BsYXkgcHJvcGVydGllcyB3aWxsIGNvbWUgZnJvbSBkaXNwbGF5U2V0dGluZ3NcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgYWxsb3dOYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMoKTtcblxuICAgICAgICAvLyBDaGVjayBmb3IgZXhwbGljaXQgZGlzcGxheS1yZWxhdGVkIG9wdGlvbnNcbiAgICAgICAgLy8gT25seSByZXR1cm4gY29uZmlnIGlmIHRoZXJlIGFyZSBleHBsaWNpdCBkaXNwbGF5IG9wdGlvbnMsIG90aGVyd2lzZSByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIC8vIFRoaXMgYWxsb3dzIGRpc3BsYXlTZXR0aW5ncyBmcm9tIHN0cnVjdHVyZSB0byBiZSB1c2VkXG4gICAgICAgIGNvbnN0IGhhc0V4cGxpY2l0RGlzcGxheU9wdGlvbnMgPVxuICAgICAgICAgICAgb3B0aW9uc1sndmlld01vZGUnXSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBvcHRpb25zWydzaG93UHJvZ3Jlc3NCYXInXSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBvcHRpb25zWydzaG93U2VjdGlvblRpdGxlcyddICE9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgIG9wdGlvbnNbJ3Nob3dRdWVzdGlvbk51bWJlcnMnXSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBvcHRpb25zWydzaG93VGltZXInXSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIElmIG5vIGV4cGxpY2l0IGRpc3BsYXkgb3B0aW9ucywgcmV0dXJuIHVuZGVmaW5lZCB0byB1c2UgZGlzcGxheVNldHRpbmdzXG4gICAgICAgIGlmICghaGFzRXhwbGljaXREaXNwbGF5T3B0aW9ucykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJ1aWxkIGNvbmZpZyBvYmplY3QgLSBvbmx5IGluY2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBleHBsaWNpdGx5IHNldFxuICAgICAgICBjb25zdCBjb25maWc6IFF1ZXN0aW9ubmFpcmVWaWV3ZXJDb25maWcgPSB7XG4gICAgICAgICAgICBhbGxvd05hdmlnYXRpb246IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gT25seSBhZGQgZGlzcGxheS1yZWxhdGVkIHByb3BlcnRpZXMgaWYgdGhleSdyZSBleHBsaWNpdGx5IHNldFxuICAgICAgICAvLyBFeHRyYWN0IHZpZXdNb2RlIC0gaGFuZGxlIGJvdGggc3RyaW5nIGFuZCBvYmplY3QgKGZyb20gc2VsZWN0IGJveClcbiAgICAgICAgbGV0IHZpZXdNb2RlOiAnc2luZ2xlLXBhZ2UnIHwgJ3BhZ2UtcGVyLWdyb3VwJyB8ICdwYWdlLXBlci1xdWVzdGlvbicgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHZpZXdNb2RlT3B0aW9uID0gb3B0aW9uc1sndmlld01vZGUnXTtcbiAgICAgICAgaWYgKHZpZXdNb2RlT3B0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygdmlld01vZGVPcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdmlld01vZGUgPSB2aWV3TW9kZU9wdGlvbiBhcyAnc2luZ2xlLXBhZ2UnIHwgJ3BhZ2UtcGVyLWdyb3VwJyB8ICdwYWdlLXBlci1xdWVzdGlvbic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2aWV3TW9kZU9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ2lkJyBpbiB2aWV3TW9kZU9wdGlvbikge1xuICAgICAgICAgICAgICAgIHZpZXdNb2RlID0gKHZpZXdNb2RlT3B0aW9uIGFzIGFueSkuaWQgYXMgJ3NpbmdsZS1wYWdlJyB8ICdwYWdlLXBlci1ncm91cCcgfCAncGFnZS1wZXItcXVlc3Rpb24nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZpZXdNb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbmZpZy52aWV3TW9kZSA9IHZpZXdNb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zWydzaG93UHJvZ3Jlc3NCYXInXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25maWcuc2hvd1Byb2dyZXNzQmFyID0gb3B0aW9uc1snc2hvd1Byb2dyZXNzQmFyJ107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnNbJ3Nob3dTZWN0aW9uVGl0bGVzJ10gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uZmlnLnNob3dTZWN0aW9uVGl0bGVzID0gb3B0aW9uc1snc2hvd1NlY3Rpb25UaXRsZXMnXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9uc1snc2hvd1F1ZXN0aW9uTnVtYmVycyddICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbmZpZy5zaG93UXVlc3Rpb25OdW1iZXJzID0gb3B0aW9uc1snc2hvd1F1ZXN0aW9uTnVtYmVycyddO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zWydzaG93VGltZXInXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25maWcudGltZXIgPSB7XG4gICAgICAgICAgICAgICAgc2hvd1RpbWVyOiBvcHRpb25zWydzaG93VGltZXInXSA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBtb2RlOiAnY291bnRkb3duJyxcbiAgICAgICAgICAgICAgICB0aW1lTGltaXQ6IG9wdGlvbnNbJ3RpbWVMaW1pdCddIGFzIG51bWJlciB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH0pO1xufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","import { NgModule } from '@angular/core';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { AXMQuestionnaireViewerWidget } from './questionnaire-viewer.config';\nimport { AXMAnswersViewerWidget } from './widgets/answers-viewer-widget.config';\nimport { AXMQuestionnaireViewerComponent } from './questionnaire-viewer.component';\nimport { AXMQuestionnaireViewerWidgetEditComponent } from './questionnaire-viewer-edit.component';\nimport { AXMQuestionnaireService, AXMQuestionnaireServiceImpl } from '../../entities/questionnaire/questionnaire.service';\nimport { AXMQuestionBankItemService, AXMQuestionBankItemServiceImpl } from '../../entities/question-bank-item/question-bank-item.service';\nimport { provideCommandSetups } from '@acorex/platform/runtime';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\nexport class AXMQuestionnaireViewerFeatureModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerFeatureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerFeatureModule, imports: [i1.AXPWidgetCoreModule, \n // Import standalone components\n AXMQuestionnaireViewerComponent,\n AXMQuestionnaireViewerWidgetEditComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerFeatureModule, providers: [\n {\n provide: AXMQuestionnaireService,\n useClass: AXMQuestionnaireServiceImpl,\n },\n {\n provide: AXMQuestionBankItemService,\n useClass: AXMQuestionBankItemServiceImpl,\n },\n // Commands\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:Preview`,\n command: () => import('./commands/preview-questionnaire.command').then((c) => c.PreviewQuestionnaireCommand),\n },\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ViewAnswers`,\n command: () => import('./commands/view-session-answers.command').then((c) => c.ViewSessionAnswersCommand),\n },\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:Fill`,\n command: () => import('./commands/fill-assessment-session.command').then((c) => c.FillAssessmentSessionCommand),\n },\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:Fill`,\n command: () => import('./commands/fill-assessment-session.command').then((c) => c.FillAssessmentSessionCommand),\n },\n ]),\n ], imports: [AXPWidgetCoreModule.forChild({\n widgets: [AXMQuestionnaireViewerWidget, AXMAnswersViewerWidget],\n }),\n // Import standalone components\n AXMQuestionnaireViewerComponent,\n AXMQuestionnaireViewerWidgetEditComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerFeatureModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXPWidgetCoreModule.forChild({\n widgets: [AXMQuestionnaireViewerWidget, AXMAnswersViewerWidget],\n }),\n // Import standalone components\n AXMQuestionnaireViewerComponent,\n AXMQuestionnaireViewerWidgetEditComponent,\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMQuestionnaireService,\n useClass: AXMQuestionnaireServiceImpl,\n },\n {\n provide: AXMQuestionBankItemService,\n useClass: AXMQuestionBankItemServiceImpl,\n },\n // Commands\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}:Preview`,\n command: () => import('./commands/preview-questionnaire.command').then((c) => c.PreviewQuestionnaireCommand),\n },\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:ViewAnswers`,\n command: () => import('./commands/view-session-answers.command').then((c) => c.ViewSessionAnswersCommand),\n },\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.assessmentSession.name}:Fill`,\n command: () => import('./commands/fill-assessment-session.command').then((c) => c.FillAssessmentSessionCommand),\n },\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.assessmentCase.name}:Fill`,\n command: () => import('./commands/fill-assessment-session.command').then((c) => c.FillAssessmentSessionCommand),\n },\n ]),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS12aWV3ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3F1ZXN0aW9ubmFpcmUtdmlld2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzFILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQTJDekMsTUFBTSxPQUFPLG1DQUFtQzsrR0FBbkMsbUNBQW1DO2dIQUFuQyxtQ0FBbUM7WUFwQ3hDLCtCQUErQjtZQUMvQiwrQkFBK0I7WUFDL0IseUNBQXlDO2dIQWtDcEMsbUNBQW1DLGFBOUJqQztZQUNQO2dCQUNJLE9BQU8sRUFBRSx1QkFBdUI7Z0JBQ2hDLFFBQVEsRUFBRSwyQkFBMkI7YUFDeEM7WUFDRDtnQkFDSSxPQUFPLEVBQUUsMEJBQTBC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LE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQzs2QkFDNUc7NEJBQ0Q7Z0NBQ0ksR0FBRyxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLE9BQU87Z0NBQ25GLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQzs2QkFDbEg7NEJBQ0Q7Z0NBQ0ksR0FBRyxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxPQUFPO2dDQUNoRixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDRDQUE0QyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUM7NkJBQ2xIO3lCQUNKLENBQUM7cUJBQ0w7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJXaWRnZXQgfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLmNvbmZpZyc7XG5pbXBvcnQgeyBBWE1BbnN3ZXJzVmlld2VyV2lkZ2V0IH0gZnJvbSAnLi93aWRnZXRzL2Fuc3dlcnMtdmlld2VyLXdpZGdldC5jb25maWcnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25uYWlyZVZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4vcXVlc3Rpb25uYWlyZS12aWV3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJXaWRnZXRFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLXZpZXdlci1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlU2VydmljZSwgQVhNUXVlc3Rpb25uYWlyZVNlcnZpY2VJbXBsIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNUXVlc3Rpb25CYW5rSXRlbVNlcnZpY2UsIEFYTVF1ZXN0aW9uQmFua0l0ZW1TZXJ2aWNlSW1wbCB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3F1ZXN0aW9uLWJhbmstaXRlbS9xdWVzdGlvbi1iYW5rLWl0ZW0uc2VydmljZSc7XG5pbXBvcnQgeyBwcm92aWRlQ29tbWFuZFNldHVwcyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQVhQV2lkZ2V0Q29yZU1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICAgICAgICB3aWRnZXRzOiBbQVhNUXVlc3Rpb25uYWlyZVZpZXdlcldpZGdldCwgQVhNQW5zd2Vyc1ZpZXdlcldpZGdldF0sXG4gICAgICAgIH0pLFxuICAgICAgICAvLyBJbXBvcnQgc3RhbmRhbG9uZSBjb21wb25lbnRzXG4gICAgICAgIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJDb21wb25lbnQsXG4gICAgICAgIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJXaWRnZXRFZGl0Q29tcG9uZW50LFxuICAgIF0sXG4gICAgZXhwb3J0czogW10sXG4gICAgZGVjbGFyYXRpb25zOiBbXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQVhNUXVlc3Rpb25uYWlyZVNlcnZpY2UsXG4gICAgICAgICAgICB1c2VDbGFzczogQVhNUXVlc3Rpb25uYWlyZVNlcnZpY2VJbXBsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBWE1RdWVzdGlvbkJhbmtJdGVtU2VydmljZSxcbiAgICAgICAgICAgIHVzZUNsYXNzOiBBWE1RdWVzdGlvbkJhbmtJdGVtU2VydmljZUltcGwsXG4gICAgICAgIH0sXG4gICAgICAgIC8vIENvbW1hbmRzXG4gICAgICAgIHByb3ZpZGVDb21tYW5kU2V0dXBzKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy5xdWVzdGlvbm5haXJlLm5hbWV9OlByZXZpZXdgLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IGltcG9ydCgnLi9jb21tYW5kcy9wcmV2aWV3LXF1ZXN0aW9ubmFpcmUuY29tbWFuZCcpLnRoZW4oKGMpID0+IGMuUHJldmlld1F1ZXN0aW9ubmFpcmVDb21tYW5kKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMuYXNzZXNzbWVudFNlc3Npb24ubmFtZX06Vmlld0Fuc3dlcnNgLFxuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IGltcG9ydCgnLi9jb21tYW5kcy92aWV3LXNlc3Npb24tYW5zd2Vycy5jb21tYW5kJykudGhlbigoYykgPT4gYy5WaWV3U2Vzc2lvbkFuc3dlcnNDb21tYW5kKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMuYXNzZXNzbWVudFNlc3Npb24ubmFtZX06RmlsbGAsXG4gICAgICAgICAgICAgICAgY29tbWFuZDogKCkgPT4gaW1wb3J0KCcuL2NvbW1hbmRzL2ZpbGwtYXNzZXNzbWVudC1zZXNzaW9uLmNvbW1hbmQnKS50aGVuKChjKSA9PiBjLkZpbGxBc3Nlc3NtZW50U2Vzc2lvbkNvbW1hbmQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy5hc3Nlc3NtZW50Q2FzZS5uYW1lfTpGaWxsYCxcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAoKSA9PiBpbXBvcnQoJy4vY29tbWFuZHMvZmlsbC1hc3Nlc3NtZW50LXNlc3Npb24uY29tbWFuZCcpLnRoZW4oKGMpID0+IGMuRmlsbEFzc2Vzc21lbnRTZXNzaW9uQ29tbWFuZCksXG4gICAgICAgICAgICB9LFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1RdWVzdGlvbm5haXJlVmlld2VyRmVhdHVyZU1vZHVsZSB7IH1cblxuIl19","//#region ---- Imports ----\nimport { AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_STATUS_PROVIDERS } from '@acorex/platform/common';\nimport { AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider, } from '@acorex/platform/core';\nimport { NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { AssessmentManagementManifest } from './manifest';\nimport { RootConfig } from './const';\n// Entity Modules\nimport { AXMAssessmentCaseEntityModule } from './entities/assessment-case/assessment-case.module';\nimport { AXMAssessmentSessionEntityModule } from './entities/assessment-session/assessment-session.module';\nimport { AXMQuestionBankItemEntityModule } from './entities/question-bank-item/question-bank-item.module';\nimport { AXMQuestionnaireEntityModule } from './entities/questionnaire/questionnaire.module';\n// Feature Modules\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXMQuestionnaireViewerFeatureModule } from './features/questionnaire-viewer/questionnaire-viewer.module';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Routes ----\nfunction questionnaireViewerRoutesFactory() {\n const route = RootConfig.module.route ?? 'assessment-management';\n return [\n {\n path: `:app/${route}/questionnaire/fill/:caseId`,\n canActivate: [AXPAuthGuard],\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./features/questionnaire-viewer/questionnaire-viewer-page.component').then((c) => c.AXMQuestionnaireViewerPageComponent),\n data: { reuse: false },\n },\n ],\n },\n ];\n}\n//#endregion\n//#region ---- Module ----\nexport class AXMAssessmentManagementModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentManagementModule, imports: [AXMQuestionBankItemEntityModule,\n AXMQuestionnaireEntityModule,\n AXMAssessmentCaseEntityModule,\n AXMAssessmentSessionEntityModule,\n AXMQuestionnaireViewerFeatureModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentManagementModule, providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: questionnaireViewerRoutesFactory,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: AssessmentManagementManifest,\n multi: true,\n },\n // Status Providers\n provideLazyProvider(AXP_STATUS_PROVIDERS, () => import('./features/assessment-case-status.provider').then((m) => m.AXMAssessmentCaseStatusProvider)),\n provideLazyProvider(AXP_STATUS_PROVIDERS, () => import('./features/assessment-session-status.provider').then((m) => m.AXMAssessmentSessionStatusProvider)),\n // Provider references (now using tokens)\n provideLazyProvider(AXP_FEATURE_DEFINITION_PROVIDER, () => import('./feature-definition.provider').then((m) => m.AXMAssessmentManagementFeatureDefinitionProvider)),\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () => import('./permission-definition.provider').then((m) => m.AXMAssessmentManagementPermissionDefinitionProvider)),\n provideLazyProvider(AXP_MENU_PROVIDER, () => import('./menu.provider').then((m) => m.AXMAssessmentManagementMenuProvider)),\n provideLazyProvider(AXP_ENTITY_DEFINITION_LOADER, () => import('./entity.provider').then((m) => m.AXMAssessmentManagementEntityProvider)),\n provideLazyProvider(AXP_SEARCH_PROVIDER, () => import('./search.provider').then((m) => m.AXMAssessmentManagementSearchCommandProvider)),\n ], imports: [AXMQuestionBankItemEntityModule,\n AXMQuestionnaireEntityModule,\n AXMAssessmentCaseEntityModule,\n AXMAssessmentSessionEntityModule,\n AXMQuestionnaireViewerFeatureModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMAssessmentManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXMQuestionBankItemEntityModule,\n AXMQuestionnaireEntityModule,\n AXMAssessmentCaseEntityModule,\n AXMAssessmentSessionEntityModule,\n AXMQuestionnaireViewerFeatureModule,\n ],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: questionnaireViewerRoutesFactory,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: AssessmentManagementManifest,\n multi: true,\n },\n // Status Providers\n provideLazyProvider(AXP_STATUS_PROVIDERS, () => import('./features/assessment-case-status.provider').then((m) => m.AXMAssessmentCaseStatusProvider)),\n provideLazyProvider(AXP_STATUS_PROVIDERS, () => import('./features/assessment-session-status.provider').then((m) => m.AXMAssessmentSessionStatusProvider)),\n // Provider references (now using tokens)\n provideLazyProvider(AXP_FEATURE_DEFINITION_PROVIDER, () => import('./feature-definition.provider').then((m) => m.AXMAssessmentManagementFeatureDefinitionProvider)),\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () => import('./permission-definition.provider').then((m) => m.AXMAssessmentManagementPermissionDefinitionProvider)),\n provideLazyProvider(AXP_MENU_PROVIDER, () => import('./menu.provider').then((m) => m.AXMAssessmentManagementMenuProvider)),\n provideLazyProvider(AXP_ENTITY_DEFINITION_LOADER, () => import('./entity.provider').then((m) => m.AXMAssessmentManagementEntityProvider)),\n provideLazyProvider(AXP_SEARCH_PROVIDER, () => import('./search.provider').then((m) => m.AXMAssessmentManagementSearchCommandProvider)),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1tYW5hZ2VtZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9hc3Nlc3NtZW50LW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsWUFBWSxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkcsT0FBTyxFQUNMLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsbUJBQW1CLEdBQ3BCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFckMsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRTdGLGtCQUFrQjtBQUNsQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUs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RUFBRSxDQUFDLENBQUMsQ0FBQyxtREFBbUQsQ0FBQyxDQUM5Rzt3QkFDRCxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FDMUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUNBQW1DLENBQUMsQ0FDN0U7d0JBQ0QsbUJBQW1CLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFLENBQ3JELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLENBQ2pGO3dCQUNELG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUM1QyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUN4RjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQQXV0aEd1YXJkLCBBWFBfUEVSTUlTU0lPTl9ERUZJTklUSU9OX1BST1ZJREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9NRU5VX1BST1ZJREVSLCBBWFBfU0VBUkNIX1BST1ZJREVSLCBBWFBfU1RBVFVTX1BST1ZJREVSUyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7XG4gIEFYUF9GRUFUVVJFX0RFRklOSVRJT05fUFJPVklERVIsXG4gIEFYUF9NT0RVTEVfTUFOSUZFU1RfUFJPVklERVIsXG4gIHByb3ZpZGVMYXp5UHJvdmlkZXIsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVzLCBST1VURVMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVhQUm9vdExheW91dENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgQXNzZXNzbWVudE1hbmFnZW1lbnRNYW5pZmVzdCB9IGZyb20gJy4vbWFuaWZlc3QnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4vY29uc3QnO1xuXG4vLyBFbnRpdHkgTW9kdWxlc1xuaW1wb3J0IHsgQVhNQXNzZXNzbWVudENhc2VFbnRpdHlNb2R1bGUgfSBmcm9tICcuL2VudGl0aWVzL2Fzc2Vzc21lbnQtY2FzZS9hc3Nlc3NtZW50LWNhc2UubW9kdWxlJztcbmltcG9ydCB7IEFYTUFzc2Vzc21lbnRTZXNzaW9uRW50aXR5TW9kdWxlIH0gZnJvbSAnLi9lbnRpdGllcy9hc3Nlc3NtZW50LXNlc3Npb24vYXNzZXNzbWVudC1zZXNzaW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbkJhbmtJdGVtRW50aXR5TW9kdWxlIH0gZnJvbSAnLi9lbnRpdGllcy9xdWVzdGlvbi1iYW5rLWl0ZW0vcXVlc3Rpb24tYmFuay1pdGVtLm1vZHVsZSc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlRW50aXR5TW9kdWxlIH0gZnJvbSAnLi9lbnRpdGllcy9xdWVzdGlvbm5haXJlL3F1ZXN0aW9ubmFpcmUubW9kdWxlJztcblxuLy8gRmVhdHVyZSBNb2R1bGVzXG5pbXBvcnQgeyBBWFBfRU5USVRZX0RFRklOSVRJT05fTE9BREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJGZWF0dXJlTW9kdWxlIH0gZnJvbSAnLi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLXZpZXdlci9xdWVzdGlvbm5haXJlLXZpZXdlci5tb2R1bGUnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBSb3V0ZXMgICAtLS0tXG5cbmZ1bmN0aW9uIHF1ZXN0aW9ubmFpcmVWaWV3ZXJSb3V0ZXNGYWN0b3J5KCk6IFJvdXRlcyB7XG4gIGNvbnN0IHJvdXRlID0gKFJvb3RDb25maWcubW9kdWxlIGFzIHsgcm91dGU/OiBzdHJpbmcgfSkucm91dGUgPz8gJ2Fzc2Vzc21lbnQtbWFuYWdlbWVudCc7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGF0aDogYDphcHAvJHtyb3V0ZX0vcXVlc3Rpb25uYWlyZS9maWxsLzpjYXNlSWRgLFxuICAgICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gQVhQUm9vdExheW91dENvbXBvbmVudCxcbiAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtdmlld2VyL3F1ZXN0aW9ubmFpcmUtdmlld2VyLXBhZ2UuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgKGMpID0+IGMuQVhNUXVlc3Rpb25uYWlyZVZpZXdlclBhZ2VDb21wb25lbnQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGRhdGE6IHsgcmV1c2U6IGZhbHNlIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE1vZHVsZSAgIC0tLS1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEFYTVF1ZXN0aW9uQmFua0l0ZW1FbnRpdHlNb2R1bGUsXG4gICAgQVhNUXVlc3Rpb25uYWlyZUVudGl0eU1vZHVsZSxcbiAgICBBWE1Bc3Nlc3NtZW50Q2FzZUVudGl0eU1vZHVsZSxcbiAgICBBWE1Bc3Nlc3NtZW50U2Vzc2lvbkVudGl0eU1vZHVsZSxcbiAgICBBWE1RdWVzdGlvbm5haXJlVmlld2VyRmVhdHVyZU1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogUk9VVEVTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VGYWN0b3J5OiBxdWVzdGlvbm5haXJlVmlld2VyUm91dGVzRmFjdG9yeSxcbiAgICB9LFxuICAgIC8vIE1vZHVsZSBNYW5pZmVzdCBQcm92aWRlclxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9NT0RVTEVfTUFOSUZFU1RfUFJPVklERVIsXG4gICAgICB1c2VWYWx1ZTogQXNzZXNzbWVudE1hbmFnZW1lbnRNYW5pZmVzdCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gU3RhdHVzIFByb3ZpZGVyc1xuICAgIHByb3ZpZGVMYXp5UHJvdmlkZXIoQVhQX1NUQVRVU19QUk9WSURFUlMsICgpID0+XG4gICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvYXNzZXNzbWVudC1jYXNlLXN0YXR1cy5wcm92aWRlcicpLnRoZW4oKG0pID0+IG0uQVhNQXNzZXNzbWVudENhc2VTdGF0dXNQcm92aWRlciksXG4gICAgKSxcbiAgICBwcm92aWRlTGF6eVByb3ZpZGVyKEFYUF9TVEFUVVNfUFJPVklERVJTLCAoKSA9PlxuICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL2Fzc2Vzc21lbnQtc2Vzc2lvbi1zdGF0dXMucHJvdmlkZXInKS50aGVuKChtKSA9PiBtLkFYTUFzc2Vzc21lbnRTZXNzaW9uU3RhdHVzUHJvdmlkZXIpLFxuICAgICksXG4gICAgLy8gUHJvdmlkZXIgcmVmZXJlbmNlcyAobm93IHVzaW5nIHRva2VucylcbiAgICBwcm92aWRlTGF6eVByb3ZpZGVyKEFYUF9GRUFUVVJFX0RFRklOSVRJT05fUFJPVklERVIsICgpID0+XG4gICAgICBpbXBvcnQoJy4vZmVhdHVyZS1kZWZpbml0aW9uLnByb3ZpZGVyJykudGhlbigobSkgPT4gbS5BWE1Bc3Nlc3NtZW50TWFuYWdlbWVudEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXIpLFxuICAgICksXG4gICAgcHJvdmlkZUxhenlQcm92aWRlcihBWFBfUEVSTUlTU0lPTl9ERUZJTklUSU9OX1BST1ZJREVSLCAoKSA9PlxuICAgICAgaW1wb3J0KCcuL3Blcm1pc3Npb24tZGVmaW5pdGlvbi5wcm92aWRlcicpLnRoZW4oKG0pID0+IG0uQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRQZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyKSxcbiAgICApLFxuICAgIHByb3ZpZGVMYXp5UHJvdmlkZXIoQVhQX01FTlVfUFJPVklERVIsICgpID0+XG4gICAgICBpbXBvcnQoJy4vbWVudS5wcm92aWRlcicpLnRoZW4oKG0pID0+IG0uQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRNZW51UHJvdmlkZXIpLFxuICAgICksXG4gICAgcHJvdmlkZUxhenlQcm92aWRlcihBWFBfRU5USVRZX0RFRklOSVRJT05fTE9BREVSLCAoKSA9PlxuICAgICAgaW1wb3J0KCcuL2VudGl0eS5wcm92aWRlcicpLnRoZW4oKG0pID0+IG0uQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRFbnRpdHlQcm92aWRlciksXG4gICAgKSxcbiAgICBwcm92aWRlTGF6eVByb3ZpZGVyKEFYUF9TRUFSQ0hfUFJPVklERVIsICgpID0+XG4gICAgICBpbXBvcnQoJy4vc2VhcmNoLnByb3ZpZGVyJykudGhlbigobSkgPT4gbS5BWE1Bc3Nlc3NtZW50TWFuYWdlbWVudFNlYXJjaENvbW1hbmRQcm92aWRlciksXG4gICAgKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRNb2R1bGUgeyB9XG5cbi8vI2VuZHJlZ2lvblxuIl19","//#region ---- QuestionBankItem Model ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24tYmFuay1pdGVtLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL3F1ZXN0aW9uLWJhbmstaXRlbS9xdWVzdGlvbi1iYW5rLWl0ZW0udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOENBQThDOztBQXdCOUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgUXVlc3Rpb25CYW5rSXRlbSBNb2RlbCAgIC0tLS1cblxuaW1wb3J0IHsgQVhQRW50aXR5TW9kZWwgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRRdWVzdGlvbkJhbmtJdGVtRW50aXR5TW9kZWwgZXh0ZW5kcyBBWFBFbnRpdHlNb2RlbDxzdHJpbmc+IHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGNhdGVnb3J5SWQ/OiBzdHJpbmc7XG4gICAgdGFncz86IHN0cmluZ1tdO1xuXG4gICAgLy8gU2NvcmluZyBDb25maWd1cmF0aW9uXG4gICAgc2NvcmluZ1R5cGU/OiAnbm9uZScgfCAncG9pbnRzJyB8ICd3ZWlnaHRlZCcgfCAnZm9ybXVsYSc7XG4gICAgcG9pbnRzPzogbnVtYmVyO1xuICAgIHdlaWdodD86IG51bWJlcjtcbiAgICBjb3JyZWN0QW5zd2VyPzogYW55O1xuXG4gICAgLy8gUXVlc3Rpb24gUHJvcGVydGllc1xuICAgIGRpZmZpY3VsdHk/OiAnZWFzeScgfCAnbWVkaXVtJyB8ICdoYXJkJztcbiAgICBlc3RpbWF0ZWRUaW1lPzogbnVtYmVyOyAvLyBzZWNvbmRzXG5cbiAgICAvLyBVc2VyIEludGVyZmFjZVxuICAgIGludGVyZmFjZT86IGFueTsgLy8gV2lkZ2V0IGNvbmZpZ3VyYXRpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\n/**\n * Extract PrePostConfig from questionnaire entity.\n */\nexport function toPrePostConfig(q) {\n if (!q)\n return null;\n return {\n preEnabled: q.preEnabled,\n preContent: q.preContent,\n postReviewEnabled: q.postReviewEnabled,\n postSummaryEnabled: q.postSummaryEnabled,\n postSummaryContent: q.postSummaryContent,\n passingScore: q.passingScore,\n };\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9xdWVzdGlvbm5haXJlL3F1ZXN0aW9ubmFpcmUudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBZ0YvQjs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsQ0FBOEU7SUFDMUcsSUFBSSxDQUFDLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNwQixPQUFPO1FBQ0gsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVO1FBQ3hCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtRQUN4QixpQkFBaUIsRUFBRSxDQUFDLENBQUMsaUJBQWlCO1FBQ3RDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxrQkFBa0I7UUFDeEMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtRQUN4QyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7S0FDL0IsQ0FBQztBQUNOLENBQUM7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZXMvcXVlc3Rpb25uYWlyZS1idWlsZGVyL3F1ZXN0aW9ubmFpcmUtYnVpbGRlci50eXBlcyc7XG5pbXBvcnQgeyBBWFBFbnRpdHlNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFF1ZXN0aW9ubmFpcmUgTW9kZWwgICAtLS0tXG5cbi8qKlxuICogUHJlLXF1ZXN0aW9ubmFpcmUgY29udGVudCAod2VsY29tZS9pbnRybykuXG4gKiBXaGVuIG11bHRpTGFuZ3VhZ2UgaXMgdXNlZCwgdmFsdWUgaXMgUmVjb3JkPGxvY2FsZSwgc3RyaW5nPi5cbiAqL1xuZXhwb3J0IHR5cGUgUHJlUG9zdENvbnRlbnRWYWx1ZSA9IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbi8qKlxuICogUHJlLXF1ZXN0aW9ubmFpcmUgY29uZmlndXJhdGlvbiAoc2hvd24gYmVmb3JlIHF1ZXN0aW9ucykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlUXVlc3Rpb25uYWlyZUNvbmZpZyB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAvKiogUmljaCB0ZXh0IGNvbnRlbnQuIFN1cHBvcnRzIG11bHRpLWxhbmd1YWdlOiBSZWNvcmQ8bG9jYWxlLCBzdHJpbmc+LiAqL1xuICAgIGNvbnRlbnQ/OiBQcmVQb3N0Q29udGVudFZhbHVlO1xufVxuXG4vKipcbiAqIFBvc3QtcXVlc3Rpb25uYWlyZSBjb25maWd1cmF0aW9uIChyZXZpZXcgYmVmb3JlIHN1Ym1pdCwgc3VtbWFyeSBhZnRlciBzdWJtaXQpLlxuICogU3VtbWFyeSBjb250ZW50IHN1cHBvcnRzIHBsYWNlaG9sZGVyczoge3tzY29yZX19LCB7e3Bhc3NGYWlsfX0sIHt7dG90YWxRdWVzdGlvbnN9fSwge3thbnN3ZXJlZENvdW50fX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdFF1ZXN0aW9ubmFpcmVDb25maWcge1xuICAgIC8qKiBTaG93IHJldmlldyBzdGVwIGJlZm9yZSBzdWJtaXQgKGFsbCBhbnN3ZXJzLCBlZGl0L3N1Ym1pdCkuICovXG4gICAgcmV2aWV3RW5hYmxlZDogYm9vbGVhbjtcbiAgICAvKiogU2hvdyBzdW1tYXJ5IHNjcmVlbiBhZnRlciBzdWJtaXQuICovXG4gICAgc3VtbWFyeUVuYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIFJpY2ggdGV4dCBjb250ZW50IGZvciBzdW1tYXJ5LiBTdXBwb3J0cyBtdWx0aS1sYW5ndWFnZSBhbmQgcGxhY2Vob2xkZXJzLiAqL1xuICAgIHN1bW1hcnlDb250ZW50PzogUHJlUG9zdENvbnRlbnRWYWx1ZTtcbn1cblxuLyoqXG4gKiBQcmUvcG9zdCBxdWVzdGlvbm5haXJlIGNvbmZpZ3VyYXRpb24gZm9yIHZpZXdlciBmbG93LlxuICogRXh0cmFjdGVkIGZyb20gcXVlc3Rpb25uYWlyZSBlbnRpdHkgb3IgcGFzc2VkIGV4cGxpY2l0bHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJlUG9zdENvbmZpZyB7XG4gICAgcHJlRW5hYmxlZD86IGJvb2xlYW47XG4gICAgcHJlQ29udGVudD86IFByZVBvc3RDb250ZW50VmFsdWU7XG4gICAgcG9zdFJldmlld0VuYWJsZWQ/OiBib29sZWFuO1xuICAgIHBvc3RTdW1tYXJ5RW5hYmxlZD86IGJvb2xlYW47XG4gICAgcG9zdFN1bW1hcnlDb250ZW50PzogUHJlUG9zdENvbnRlbnRWYWx1ZTtcbiAgICBwYXNzaW5nU2NvcmU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRRdWVzdGlvbm5haXJlRW50aXR5TW9kZWwgZXh0ZW5kcyBBWFBFbnRpdHlNb2RlbDxzdHJpbmc+IHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIHR5cGU6ICdxdWVzdGlvbm5haXJlJyB8ICdzdXJ2ZXknIHwgJ2NoZWNrbGlzdCcgfCAndGVzdCcgfCAnZXZhbHVhdGlvbic7XG5cbiAgICAvLyBTdHJ1Y3R1cmUgd2l0aCBzZWN0aW9ucyBhbmQgbmVzdGVkIGl0ZW1zXG4gICAgLy8gRGlzcGxheSBzZXR0aW5ncyBhcmUgcGFydCBvZiBzdHJ1Y3R1cmUuZGlzcGxheVNldHRpbmdzXG4gICAgc3RydWN0dXJlPzogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZTtcblxuICAgIC8vIFByZS1xdWVzdGlvbm5haXJlOiB3ZWxjb21lIHNjcmVlbiBiZWZvcmUgcXVlc3Rpb25zXG4gICAgcHJlRW5hYmxlZD86IGJvb2xlYW47XG4gICAgcHJlQ29udGVudD86IFByZVBvc3RDb250ZW50VmFsdWU7XG5cbiAgICAvLyBQb3N0LXF1ZXN0aW9ubmFpcmU6IHJldmlldyBiZWZvcmUgc3VibWl0LCBzdW1tYXJ5IGFmdGVyIHN1Ym1pdFxuICAgIHBvc3RSZXZpZXdFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwb3N0U3VtbWFyeUVuYWJsZWQ/OiBib29sZWFuO1xuICAgIHBvc3RTdW1tYXJ5Q29udGVudD86IFByZVBvc3RDb250ZW50VmFsdWU7XG5cbiAgICAvLyBTY29yaW5nIENvbmZpZ3VyYXRpb25cbiAgICBzY29yaW5nVHlwZT86ICdub25lJyB8ICdjdW11bGF0aXZlJyB8ICd3ZWlnaHRlZCcgfCAnZm9ybXVsYSc7XG4gICAgcGFzc2luZ1Njb3JlPzogbnVtYmVyO1xuICAgIHNjb3JpbmdGb3JtdWxhPzogc3RyaW5nO1xuICAgIGdyYWRpbmdTY2FsZT86IFJlY29yZDxzdHJpbmcsIHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0+O1xuXG4gICAgLy8gUGx1Z2luIGZpZWxkc1xuICAgIGNhdGVnb3J5SWQ/OiBzdHJpbmc7XG4gICAgdGFncz86IHN0cmluZ1tdO1xuICAgIGNvbG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgUHJlUG9zdENvbmZpZyBmcm9tIHF1ZXN0aW9ubmFpcmUgZW50aXR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9QcmVQb3N0Q29uZmlnKHE6IFBhcnRpYWw8QVhNQXNzZXNzbWVudE1hbmFnZW1lbnRRdWVzdGlvbm5haXJlRW50aXR5TW9kZWw+IHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByZVBvc3RDb25maWcgfCBudWxsIHtcbiAgICBpZiAoIXEpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIHByZUVuYWJsZWQ6IHEucHJlRW5hYmxlZCxcbiAgICAgICAgcHJlQ29udGVudDogcS5wcmVDb250ZW50LFxuICAgICAgICBwb3N0UmV2aWV3RW5hYmxlZDogcS5wb3N0UmV2aWV3RW5hYmxlZCxcbiAgICAgICAgcG9zdFN1bW1hcnlFbmFibGVkOiBxLnBvc3RTdW1tYXJ5RW5hYmxlZCxcbiAgICAgICAgcG9zdFN1bW1hcnlDb250ZW50OiBxLnBvc3RTdW1tYXJ5Q29udGVudCxcbiAgICAgICAgcGFzc2luZ1Njb3JlOiBxLnBhc3NpbmdTY29yZSxcbiAgICB9O1xufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","//#region ---- Types ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1jYXNlLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2Fzc2Vzc21lbnQtY2FzZS9hc3Nlc3NtZW50LWNhc2UudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBQTZCOztBQTZCN0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgVHlwZXMgICAtLS0tXG5cbmltcG9ydCB7IEFYUEVudGl0eVJlZmVyZW5jZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5cbmV4cG9ydCB0eXBlIEFYTUFzc2Vzc21lbnRDYXNlU3RhdHVzID0gJ2FjdGl2ZScgfCAnY2xvc2VkJyB8ICdjYW5jZWxsZWQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50QXNzZXNzbWVudENhc2VFbnRpdHlNb2RlbCBleHRlbmRzIEFYUEVudGl0eU1vZGVsPHN0cmluZz4ge1xuXG4gIC8qKlxuICAgKiBTaW5nbGUgcXVlc3Rpb25uYWlyZSBhc3NpZ25lZCB0byB0aGlzIGNhc2UuXG4gICAqL1xuICBxdWVzdGlvbm5haXJlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZnJpZW5kbHkgdGl0bGUgZm9yIGxpc3RzL3NlYXJjaC5cbiAgICovXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhcmdldCBlbnRpdHkgKGUuZy4gQXNzZXRNYW5hZ2VtZW50LkFzc2V0LCBIdW1hbkNhcGl0YWwuRW1wbG95ZWUpLlxuICAgKi9cbiAgc3ViamVjdFJlZjogQVhQRW50aXR5UmVmZXJlbmNlO1xuXG4gIHN0YXR1czogQVhNQXNzZXNzbWVudENhc2VTdGF0dXM7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG5cbiJdfQ==","//#region ---- Types ----\nexport {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1zZXNzaW9uLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2Fzc2Vzc21lbnQtc2Vzc2lvbi9hc3Nlc3NtZW50LXNlc3Npb24udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBQTZCOztBQWlDN0IsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgVHlwZXMgICAtLS0tXG5cbmltcG9ydCB7IEFYUEVudGl0eU1vZGVsIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eVwiO1xuXG5leHBvcnQgdHlwZSBBWE1Bc3Nlc3NtZW50U2Vzc2lvblJvbGUgPSAncmVzcG9uZGVyJyB8ICdzdXBlcnZpc29yJyB8ICdyZXZpZXdlcic7XG5cbmV4cG9ydCB0eXBlIEFYTUFzc2Vzc21lbnRTZXNzaW9uU3RhdHVzID0gJ25vdC1zdGFydGVkJyB8ICdpbi1wcm9ncmVzcycgfCAnc3VibWl0dGVkJyB8ICd1bmRlci1yZXZpZXcnIHwgJ2FwcHJvdmVkJyB8ICdyZWplY3RlZCcgfCAnY29tcGxldGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBBWE1Bc3Nlc3NtZW50TWFuYWdlbWVudEFzc2Vzc21lbnRTZXNzaW9uRW50aXR5TW9kZWwgZXh0ZW5kcyBBWFBFbnRpdHlNb2RlbDxzdHJpbmc+IHtcbiAgICBjYXNlSWQ6IHN0cmluZztcblxuICAgIC8vIFJlc3BvbmRlclxuICAgIHJlc3BvbmRlcklkOiBzdHJpbmc7XG4gICAgcm9sZTogQVhNQXNzZXNzbWVudFNlc3Npb25Sb2xlO1xuXG4gICAgLy8gU3RhdHVzIG1hbmFnZWQgYnkgc3RhdHVzIHBsdWdpbiAoc3RhdHVzSWQgZmllbGQgYWRkZWQgYXV0b21hdGljYWxseSlcblxuICAgIC8vIFRpbWUgdHJhY2tpbmdcbiAgICBzdGFydGVkQXQ/OiBEYXRlO1xuICAgIGxhc3RTYXZlZEF0PzogRGF0ZTtcbiAgICB0aW1lU3BlbnQ/OiBudW1iZXI7IC8vIFRvdGFsIHNlY29uZHNcblxuICAgIC8vIFByb2dyZXNzXG4gICAgcHJvZ3Jlc3NQZXJjZW50YWdlOiBudW1iZXI7XG4gICAgYW5zd2VyZWRRdWVzdGlvbnNDb3VudDogbnVtYmVyO1xuXG4gICAgLy8gQW5zd2Vyc1xuICAgIGFuc3dlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gICAgLy8gT3ZlcnJpZGUgY2hhaW5cbiAgICBwcmV2aW91c0lkPzogc3RyaW5nO1xufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","//#region ---- Pre/Post Content Utilities ----\n/**\n * Resolve multi-language content to string for current locale.\n * When content is Record<locale, string>, returns value for locale or fallback.\n */\nexport function resolveMultiLanguageContent(content, currentLocale) {\n if (content == null || content === '')\n return '';\n if (typeof content === 'string')\n return content;\n const record = content;\n return record[currentLocale] ?? record['en-US'] ?? Object.values(record)[0] ?? '';\n}\n/**\n * Resolve placeholders in summary content.\n * Supported: {{score}}, {{passFail}}, {{totalQuestions}}, {{answeredCount}}\n */\nexport function resolveSummaryPlaceholders(content, values) {\n if (!content)\n return '';\n return content\n .replace(/\\{\\{score\\}\\}/g, String(values.score ?? ''))\n .replace(/\\{\\{passFail\\}\\}/g, values.passFail ?? '')\n .replace(/\\{\\{totalQuestions\\}\\}/g, String(values.totalQuestions ?? ''))\n .replace(/\\{\\{answeredCount\\}\\}/g, String(values.answeredCount ?? ''));\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlLXBvc3QtY29udGVudC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLXZpZXdlci91dGlscy9wcmUtcG9zdC1jb250ZW50LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtEQUFrRDtBQUlsRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLE9BQStDLEVBQy9DLGFBQXFCO0lBRXJCLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLEtBQUssRUFBRTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2pELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sT0FBTyxDQUFDO0lBRWhELE1BQU0sTUFBTSxHQUFHLE9BQWlDLENBQUM7SUFDakQsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3BGLENBQUM7QUFZRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLE9BQWUsRUFDZixNQUFnQztJQUVoQyxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRXhCLE9BQU8sT0FBTztTQUNYLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztTQUNyRCxPQUFPLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7U0FDbkQsT0FBTyxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZFLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBQcmUvUG9zdCBDb250ZW50IFV0aWxpdGllcyAgIC0tLS1cblxuaW1wb3J0IHR5cGUgeyBQcmVQb3N0Q29udGVudFZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vZW50aXRpZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLnR5cGVzJztcblxuLyoqXG4gKiBSZXNvbHZlIG11bHRpLWxhbmd1YWdlIGNvbnRlbnQgdG8gc3RyaW5nIGZvciBjdXJyZW50IGxvY2FsZS5cbiAqIFdoZW4gY29udGVudCBpcyBSZWNvcmQ8bG9jYWxlLCBzdHJpbmc+LCByZXR1cm5zIHZhbHVlIGZvciBsb2NhbGUgb3IgZmFsbGJhY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlTXVsdGlMYW5ndWFnZUNvbnRlbnQoXG4gIGNvbnRlbnQ6IFByZVBvc3RDb250ZW50VmFsdWUgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjdXJyZW50TG9jYWxlOiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGlmIChjb250ZW50ID09IG51bGwgfHwgY29udGVudCA9PT0gJycpIHJldHVybiAnJztcbiAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykgcmV0dXJuIGNvbnRlbnQ7XG5cbiAgY29uc3QgcmVjb3JkID0gY29udGVudCBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICByZXR1cm4gcmVjb3JkW2N1cnJlbnRMb2NhbGVdID8/IHJlY29yZFsnZW4tVVMnXSA/PyBPYmplY3QudmFsdWVzKHJlY29yZClbMF0gPz8gJyc7XG59XG5cbi8qKlxuICogUGxhY2Vob2xkZXIgdmFsdWVzIGZvciBwb3N0LXF1ZXN0aW9ubmFpcmUgc3VtbWFyeSBjb250ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1bW1hcnlQbGFjZWhvbGRlclZhbHVlcyB7XG4gIHNjb3JlPzogbnVtYmVyO1xuICBwYXNzRmFpbD86IHN0cmluZztcbiAgdG90YWxRdWVzdGlvbnM/OiBudW1iZXI7XG4gIGFuc3dlcmVkQ291bnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVzb2x2ZSBwbGFjZWhvbGRlcnMgaW4gc3VtbWFyeSBjb250ZW50LlxuICogU3VwcG9ydGVkOiB7e3Njb3JlfX0sIHt7cGFzc0ZhaWx9fSwge3t0b3RhbFF1ZXN0aW9uc319LCB7e2Fuc3dlcmVkQ291bnR9fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVN1bW1hcnlQbGFjZWhvbGRlcnMoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgdmFsdWVzOiBTdW1tYXJ5UGxhY2Vob2xkZXJWYWx1ZXNcbik6IHN0cmluZyB7XG4gIGlmICghY29udGVudCkgcmV0dXJuICcnO1xuXG4gIHJldHVybiBjb250ZW50XG4gICAgLnJlcGxhY2UoL1xce1xce3Njb3JlXFx9XFx9L2csIFN0cmluZyh2YWx1ZXMuc2NvcmUgPz8gJycpKVxuICAgIC5yZXBsYWNlKC9cXHtcXHtwYXNzRmFpbFxcfVxcfS9nLCB2YWx1ZXMucGFzc0ZhaWwgPz8gJycpXG4gICAgLnJlcGxhY2UoL1xce1xce3RvdGFsUXVlc3Rpb25zXFx9XFx9L2csIFN0cmluZyh2YWx1ZXMudG90YWxRdWVzdGlvbnMgPz8gJycpKVxuICAgIC5yZXBsYWNlKC9cXHtcXHthbnN3ZXJlZENvdW50XFx9XFx9L2csIFN0cmluZyh2YWx1ZXMuYW5zd2VyZWRDb3VudCA/PyAnJykpO1xufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","//#region ---- Imports ----\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { resolveMultiLanguageContent } from '../../utils/pre-post-content.utils';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Component ----\n/**\n * Reusable pre-questionnaire (welcome) content component.\n * Renders rich text content only. Start button is provided by the host footer.\n * Use in page, popup, standalone, and preview views.\n */\nexport class AXMPreQuestionnaireContentComponent {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.sanitizer = inject(DomSanitizer);\n this.translationService = inject(AXTranslationService);\n //#endregion\n //#region ---- Inputs ----\n /** Rich text content. Supports multi-language: Record<locale, string>. */\n this.content = input(null, ...(ngDevMode ? [{ debugName: \"content\" }] : []));\n /** Locale for multi-language content. Defaults to active lang. */\n this.locale = input(undefined, ...(ngDevMode ? [{ debugName: \"locale\" }] : []));\n //#endregion\n //#region ---- Computed ----\n this.contentHtml = computed(() => {\n const contentVal = this.content();\n const localeVal = this.locale() ?? this.translationService.getActiveLang?.() ?? 'en-US';\n const resolved = resolveMultiLanguageContent(contentVal, localeVal);\n return resolved ? this.sanitizer.bypassSecurityTrustHtml(resolved) : '';\n }, ...(ngDevMode ? [{ debugName: \"contentHtml\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPreQuestionnaireContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.16\", type: AXMPreQuestionnaireContentComponent, isStandalone: true, selector: \"axm-pre-questionnaire-content\", inputs: { content: { classPropertyName: \"content\", publicName: \"content\", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: \"locale\", publicName: \"locale\", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: \"axm-pre-questionnaire-content\" }, ngImport: i0, template: `\n <div class=\"axm-pre-questionnaire-content ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-8 ax-min-h-[200px]\">\n <div class=\"ax-max-w-2xl ax-w-full ax-prose\" [innerHTML]=\"contentHtml()\"></div>\n </div>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPreQuestionnaireContentComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axm-pre-questionnaire-content',\n template: `\n <div class=\"axm-pre-questionnaire-content ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-8 ax-min-h-[200px]\">\n <div class=\"ax-max-w-2xl ax-w-full ax-prose\" [innerHTML]=\"contentHtml()\"></div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'axm-pre-questionnaire-content' },\n }]\n }], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: \"content\", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: \"locale\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlLXF1ZXN0aW9ubmFpcmUtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcXVlc3Rpb25uYWlyZS12aWV3ZXIvY29tcG9uZW50cy9wcmUtcXVlc3Rpb25uYWlyZS1jb250ZW50L3ByZS1xdWVzdGlvbm5haXJlLWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBR2pGLFlBQVk7QUFFWixpQ0FBaUM7QUFFakM7Ozs7R0FJRztBQWFILE1BQU0sT0FBTyxtQ0FBbUM7SUFaaEQ7UUFhRSwrQ0FBK0M7UUFFOUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqQyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVuRSxZQUFZO1FBRVosOEJBQThCO1FBRTlCLDBFQUEwRTtRQUMxRSxZQUFPLEdBQUcsS0FBSyxDQUF5QyxJQUFJLG1EQUFDLENBQUM7UUFFOUQsa0VBQWtFO1FBQ2xFLFdBQU0sR0FBRyxLQUFLLENBQXFCLFNBQVMsa0RBQUMsQ0FBQztRQUU5QyxZQUFZO1FBRVosZ0NBQWdDO1FBRWIsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksT0FBTyxDQUFDO1lBQ3hGLE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNwRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFFLENBQUMsdURBQUMsQ0FBQztLQUdKOytHQTVCWSxtQ0FBbUM7bUdBQW5DLG1DQUFtQyx5WkFWcEM7Ozs7R0FJVCwyREFFUyxZQUFZLDhCQUFFLG1CQUFtQjs7NEZBSWhDLG1DQUFtQztrQkFaL0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxRQUFRLEVBQUU7Ozs7R0FJVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDO29CQUM1QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFO2lCQUNqRCIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IHJlc29sdmVNdWx0aUxhbmd1YWdlQ29udGVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3ByZS1wb3N0LWNvbnRlbnQudXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBQcmVQb3N0Q29udGVudFZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW50aXRpZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLnR5cGVzJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFJldXNhYmxlIHByZS1xdWVzdGlvbm5haXJlICh3ZWxjb21lKSBjb250ZW50IGNvbXBvbmVudC5cbiAqIFJlbmRlcnMgcmljaCB0ZXh0IGNvbnRlbnQgb25seS4gU3RhcnQgYnV0dG9uIGlzIHByb3ZpZGVkIGJ5IHRoZSBob3N0IGZvb3Rlci5cbiAqIFVzZSBpbiBwYWdlLCBwb3B1cCwgc3RhbmRhbG9uZSwgYW5kIHByZXZpZXcgdmlld3MuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4bS1wcmUtcXVlc3Rpb25uYWlyZS1jb250ZW50JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXhtLXByZS1xdWVzdGlvbm5haXJlLWNvbnRlbnQgYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtcC04IGF4LW1pbi1oLVsyMDBweF1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1tYXgtdy0yeGwgYXgtdy1mdWxsIGF4LXByb3NlXCIgW2lubmVySFRNTF09XCJjb250ZW50SHRtbCgpXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uTW9kdWxlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ2F4bS1wcmUtcXVlc3Rpb25uYWlyZS1jb250ZW50JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBBWE1QcmVRdWVzdGlvbm5haXJlQ29udGVudENvbXBvbmVudCB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgU2VydmljZXMgJiBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSW5wdXRzICAgLS0tLVxuXG4gIC8qKiBSaWNoIHRleHQgY29udGVudC4gU3VwcG9ydHMgbXVsdGktbGFuZ3VhZ2U6IFJlY29yZDxsb2NhbGUsIHN0cmluZz4uICovXG4gIGNvbnRlbnQgPSBpbnB1dDxQcmVQb3N0Q29udGVudFZhbHVlIHwgbnVsbCB8IHVuZGVmaW5lZD4obnVsbCk7XG5cbiAgLyoqIExvY2FsZSBmb3IgbXVsdGktbGFuZ3VhZ2UgY29udGVudC4gRGVmYXVsdHMgdG8gYWN0aXZlIGxhbmcuICovXG4gIGxvY2FsZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbXB1dGVkICAgLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb250ZW50SHRtbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb250ZW50VmFsID0gdGhpcy5jb250ZW50KCk7XG4gICAgY29uc3QgbG9jYWxlVmFsID0gdGhpcy5sb2NhbGUoKSA/PyB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5nZXRBY3RpdmVMYW5nPy4oKSA/PyAnZW4tVVMnO1xuICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZU11bHRpTGFuZ3VhZ2VDb250ZW50KGNvbnRlbnRWYWwsIGxvY2FsZVZhbCk7XG4gICAgcmV0dXJuIHJlc29sdmVkID8gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocmVzb2x2ZWQpIDogJyc7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","//#region ---- Imports ----\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation, } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { resolveMultiLanguageContent, resolveSummaryPlaceholders, } from '../../utils/pre-post-content.utils';\nimport { AXMQuestionnaireViewerQuestionComponent } from '../../questionnaire-viewer-question.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@acorex/core/translation\";\n//#endregion\n//#region ---- Component ----\n/**\n * Reusable post-questionnaire component.\n * Renders either review (Q&A list with widget-renderer in view mode) or summary (content).\n * Edit, Submit, Done buttons are provided by the host footer.\n * Use in page, popup, standalone, and preview views.\n */\nexport class AXMPostQuestionnaireContentComponent {\n constructor() {\n //#region ---- Services & Dependencies ----\n this.sanitizer = inject(DomSanitizer);\n this.translationService = inject(AXTranslationService);\n //#endregion\n //#region ---- Inputs ----\n /** Display mode: 'review' or 'summary'. */\n this.mode = input('review', ...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n /** Questions with answers for review mode. */\n this.questionsWithAnswers = input([], ...(ngDevMode ? [{ debugName: \"questionsWithAnswers\" }] : []));\n /** Context data for widget rendering in view mode (answers at widget paths). Required for proper display. */\n this.reviewContext = input(null, ...(ngDevMode ? [{ debugName: \"reviewContext\" }] : []));\n /** Summary content (rich text). Supports multi-language and placeholders. */\n this.summaryContent = input(null, ...(ngDevMode ? [{ debugName: \"summaryContent\" }] : []));\n /** Placeholder values for summary: score, passFail, totalQuestions, answeredCount. */\n this.placeholderValues = input(null, ...(ngDevMode ? [{ debugName: \"placeholderValues\" }] : []));\n /** Locale for multi-language content. Defaults to active lang. */\n this.locale = input(undefined, ...(ngDevMode ? [{ debugName: \"locale\" }] : []));\n //#endregion\n //#region ---- Computed ----\n this.summaryContentHtml = computed(() => {\n const content = this.summaryContent();\n const values = this.placeholderValues();\n const localeVal = this.locale() ?? this.translationService.getActiveLang?.() ?? 'en-US';\n let resolved = resolveMultiLanguageContent(content, localeVal);\n if (resolved && values) {\n resolved = resolveSummaryPlaceholders(resolved, values);\n }\n if (!resolved && values) {\n resolved = `<p>Your score: <strong>${values.score ?? '—'}%</strong></p><p>You answered <strong>${values.answeredCount ?? 0}</strong> of <strong>${values.totalQuestions ?? 0}</strong> questions.</p>`;\n }\n return resolved ? this.sanitizer.bypassSecurityTrustHtml(resolved) : '';\n }, ...(ngDevMode ? [{ debugName: \"summaryContentHtml\" }] : []));\n }\n //#endregion\n //#region ---- Helpers ----\n formatAnswer(answer) {\n if (answer == null || answer === '')\n return '—';\n if (typeof answer === 'string')\n return answer;\n if (typeof answer === 'number' || typeof answer === 'boolean')\n return String(answer);\n if (Array.isArray(answer))\n return answer.map((a) => (typeof a === 'object' ? JSON.stringify(a) : String(a))).join(', ');\n if (typeof answer === 'object')\n return JSON.stringify(answer);\n return String(answer);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPostQuestionnaireContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMPostQuestionnaireContentComponent, isStandalone: true, selector: \"axm-post-questionnaire-content\", inputs: { mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: false, transformFunction: null }, questionsWithAnswers: { classPropertyName: \"questionsWithAnswers\", publicName: \"questionsWithAnswers\", isSignal: true, isRequired: false, transformFunction: null }, reviewContext: { classPropertyName: \"reviewContext\", publicName: \"reviewContext\", isSignal: true, isRequired: false, transformFunction: null }, summaryContent: { classPropertyName: \"summaryContent\", publicName: \"summaryContent\", isSignal: true, isRequired: false, transformFunction: null }, placeholderValues: { classPropertyName: \"placeholderValues\", publicName: \"placeholderValues\", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: \"locale\", publicName: \"locale\", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: \"axm-post-questionnaire-content\" }, ngImport: i0, template: `\n @if (mode() === 'review') {\n <div class=\"axm-post-questionnaire-content __review ax-flex ax-flex-col ax-overflow-auto ax-min-h-full\">\n <div class=\"ax-p-4 ax-border-b\">\n <h2 class=\"ax-text-lg ax-font-semibold\">{{ '@assessment-management:questionnaires.components.questionnaire-viewer.flow.review-title' | translate | async }}</h2>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto ax-p-4 ax-flex ax-flex-col ax-gap-4\">\n @if (reviewContext(); as ctx) {\n <axp-widgets-container [context]=\"ctx\" class=\"ax-flex ax-flex-col ax-gap-4\">\n @for (item of questionsWithAnswers(); track item.questionId; let idx = $index) {\n @if (item.question?.question?.interface) {\n <div class=\"__review-question-card ax-bg-neutral-50 ax-rounded-lg ax-border ax-border-neutral-200 ax-overflow-hidden ax-shadow-sm\">\n <axm-questionnaire-viewer-question\n [question]=\"item.question!\"\n [sectionOrder]=\"1\"\n [questionIndex]=\"idx + 1\"\n [showQuestionNumbers]=\"false\"\n [mode]=\"'view'\"\n [contextData]=\"ctx\"\n ></axm-questionnaire-viewer-question>\n </div>\n } @else {\n <div class=\"__review-question-card ax-bg-neutral-50 ax-rounded-lg ax-border ax-border-neutral-200 ax-p-4 ax-shadow-sm\">\n <div class=\"ax-font-medium ax-mb-2 ax-text-neutral-900\">{{ item.title }}</div>\n <div class=\"ax-text-sm ax-text-neutral-600\">{{ formatAnswer(item.answer) }}</div>\n </div>\n }\n }\n </axp-widgets-container>\n } @else {\n @for (item of questionsWithAnswers(); track item.questionId) {\n <div class=\"__review-question-card ax-bg-neutral-50 ax-rounded-lg ax-border ax-border-neutral-200 ax-p-4 ax-shadow-sm\">\n <div class=\"ax-font-medium ax-mb-2 ax-text-neutral-900\">{{ item.title }}</div>\n <div class=\"ax-text-sm ax-text-neutral-600\">{{ formatAnswer(item.answer) }}</div>\n </div>\n }\n }\n </div>\n </div>\n } @else {\n <div class=\"axm-post-questionnaire-content __summary ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-8 ax-min-h-[200px]\">\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-4\">{{ '@assessment-management:questionnaires.components.questionnaire-viewer.flow.summary-title' | translate | async }}</h2>\n <div class=\"ax-max-w-2xl ax-w-full ax-prose\" [innerHTML]=\"summaryContentHtml()\"></div>\n </div>\n }\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"component\", type: AXMQuestionnaireViewerQuestionComponent, selector: \"axm-questionnaire-viewer-question\", inputs: [\"question\", \"contextData\", \"sectionOrder\", \"questionIndex\", \"showQuestionNumbers\", \"showQuestionCounter\", \"currentPosition\", \"mode\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPostQuestionnaireContentComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axm-post-questionnaire-content',\n template: `\n @if (mode() === 'review') {\n <div class=\"axm-post-questionnaire-content __review ax-flex ax-flex-col ax-overflow-auto ax-min-h-full\">\n <div class=\"ax-p-4 ax-border-b\">\n <h2 class=\"ax-text-lg ax-font-semibold\">{{ '@assessment-management:questionnaires.components.questionnaire-viewer.flow.review-title' | translate | async }}</h2>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto ax-p-4 ax-flex ax-flex-col ax-gap-4\">\n @if (reviewContext(); as ctx) {\n <axp-widgets-container [context]=\"ctx\" class=\"ax-flex ax-flex-col ax-gap-4\">\n @for (item of questionsWithAnswers(); track item.questionId; let idx = $index) {\n @if (item.question?.question?.interface) {\n <div class=\"__review-question-card ax-bg-neutral-50 ax-rounded-lg ax-border ax-border-neutral-200 ax-overflow-hidden ax-shadow-sm\">\n <axm-questionnaire-viewer-question\n [question]=\"item.question!\"\n [sectionOrder]=\"1\"\n [questionIndex]=\"idx + 1\"\n [showQuestionNumbers]=\"false\"\n [mode]=\"'view'\"\n [contextData]=\"ctx\"\n ></axm-questionnaire-viewer-question>\n </div>\n } @else {\n <div class=\"__review-question-card ax-bg-neutral-50 ax-rounded-lg ax-border ax-border-neutral-200 ax-p-4 ax-shadow-sm\">\n <div class=\"ax-font-medium ax-mb-2 ax-text-neutral-900\">{{ item.title }}</div>\n <div class=\"ax-text-sm ax-text-neutral-600\">{{ formatAnswer(item.answer) }}</div>\n </div>\n }\n }\n </axp-widgets-container>\n } @else {\n @for (item of questionsWithAnswers(); track item.questionId) {\n <div class=\"__review-question-card ax-bg-neutral-50 ax-rounded-lg ax-border ax-border-neutral-200 ax-p-4 ax-shadow-sm\">\n <div class=\"ax-font-medium ax-mb-2 ax-text-neutral-900\">{{ item.title }}</div>\n <div class=\"ax-text-sm ax-text-neutral-600\">{{ formatAnswer(item.answer) }}</div>\n </div>\n }\n }\n </div>\n </div>\n } @else {\n <div class=\"axm-post-questionnaire-content __summary ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-8 ax-min-h-[200px]\">\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-4\">{{ '@assessment-management:questionnaires.components.questionnaire-viewer.flow.summary-title' | translate | async }}</h2>\n <div class=\"ax-max-w-2xl ax-w-full ax-prose\" [innerHTML]=\"summaryContentHtml()\"></div>\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule, AXPWidgetCoreModule, AXMQuestionnaireViewerQuestionComponent],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'axm-post-questionnaire-content' },\n }]\n }], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"mode\", required: false }] }], questionsWithAnswers: [{ type: i0.Input, args: [{ isSignal: true, alias: \"questionsWithAnswers\", required: false }] }], reviewContext: [{ type: i0.Input, args: [{ isSignal: true, alias: \"reviewContext\", required: false }] }], summaryContent: [{ type: i0.Input, args: [{ isSignal: true, alias: \"summaryContent\", required: false }] }], placeholderValues: [{ type: i0.Input, args: [{ isSignal: true, alias: \"placeholderValues\", required: false }] }], locale: [{ type: i0.Input, args: [{ isSignal: true, alias: \"locale\", required: false }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1xdWVzdGlvbm5haXJlLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3F1ZXN0aW9ubmFpcmUtdmlld2VyL2NvbXBvbmVudHMvcG9zdC1xdWVzdGlvbm5haXJlLWNvbnRlbnQvcG9zdC1xdWVzdGlvbm5haXJlLWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLDBCQUEwQixHQUUzQixNQUFNLG9DQUFvQyxDQUFDO0FBRzVDLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7OztBQWdCeEcsWUFBWTtBQUVaLGlDQUFpQztBQUVqQzs7Ozs7R0FLRztBQXNESCxNQUFNLE9BQU8sb0NBQW9DO0lBckRqRDtRQXNERSwrQ0FBK0M7UUFFOUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqQyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FB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QUFtQiw4QkFBRSxtQkFBbUIsZ01BQUUsdUNBQXVDOzs0RkFJOUYsb0NBQW9DO2tCQXJEaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0NBQWdDO29CQUMxQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZDVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLHVDQUF1QyxDQUFDO29CQUMxRyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGdDQUFnQyxFQUFFO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7XG4gIHJlc29sdmVNdWx0aUxhbmd1YWdlQ29udGVudCxcbiAgcmVzb2x2ZVN1bW1hcnlQbGFjZWhvbGRlcnMsXG4gIHR5cGUgU3VtbWFyeVBsYWNlaG9sZGVyVmFsdWVzLFxufSBmcm9tICcuLi8uLi91dGlscy9wcmUtcG9zdC1jb250ZW50LnV0aWxzJztcbmltcG9ydCB0eXBlIHsgUHJlUG9zdENvbnRlbnRWYWx1ZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudGl0aWVzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS50eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXN0aW9ubmFpcmVWaWV3ZXJRdWVzdGlvbiB9IGZyb20gJy4uLy4uL3F1ZXN0aW9ubmFpcmUtdmlld2VyLnR5cGVzJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJRdWVzdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3F1ZXN0aW9ubmFpcmUtdmlld2VyLXF1ZXN0aW9uLmNvbXBvbmVudCc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFR5cGVzICAgLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9uV2l0aEFuc3dlciB7XG4gIHF1ZXN0aW9uSWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgYW5zd2VyOiB1bmtub3duO1xuICAvKiogRnVsbCBxdWVzdGlvbiB3aXRoIGludGVyZmFjZSBmb3Igd2lkZ2V0IHJlbmRlcmluZyBpbiB2aWV3IG1vZGUuICovXG4gIHF1ZXN0aW9uPzogUXVlc3Rpb25uYWlyZVZpZXdlclF1ZXN0aW9uO1xufVxuXG5leHBvcnQgdHlwZSBQb3N0UXVlc3Rpb25uYWlyZU1vZGUgPSAncmV2aWV3JyB8ICdzdW1tYXJ5JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29tcG9uZW50ICAgLS0tLVxuXG4vKipcbiAqIFJldXNhYmxlIHBvc3QtcXVlc3Rpb25uYWlyZSBjb21wb25lbnQuXG4gKiBSZW5kZXJzIGVpdGhlciByZXZpZXcgKFEmQSBsaXN0IHdpdGggd2lkZ2V0LXJlbmRlcmVyIGluIHZpZXcgbW9kZSkgb3Igc3VtbWFyeSAoY29udGVudCkuXG4gKiBFZGl0LCBTdWJtaXQsIERvbmUgYnV0dG9ucyBhcmUgcHJvdmlkZWQgYnkgdGhlIGhvc3QgZm9vdGVyLlxuICogVXNlIGluIHBhZ2UsIHBvcHVwLCBzdGFuZGFsb25lLCBhbmQgcHJldmlldyB2aWV3cy5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXBvc3QtcXVlc3Rpb25uYWlyZS1jb250ZW50JyxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKG1vZGUoKSA9PT0gJ3JldmlldycpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJheG0tcG9zdC1xdWVzdGlvbm5haXJlLWNvbnRlbnQgX19yZXZpZXcgYXgtZmxleCBheC1mbGV4LWNvbCBheC1vdmVyZmxvdy1hdXRvIGF4LW1pbi1oLWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1ib3JkZXItYlwiPlxuICAgICAgICAgIDxoMiBjbGFzcz1cImF4LXRleHQtbGcgYXgtZm9udC1zZW1pYm9sZFwiPnt7ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmxvdy5yZXZpZXctdGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L2gyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXgtMSBheC1vdmVyZmxvdy1hdXRvIGF4LXAtNCBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00XCI+XG4gICAgICAgICAgQGlmIChyZXZpZXdDb250ZXh0KCk7IGFzIGN0eCkge1xuICAgICAgICAgICAgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJjdHhcIiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTRcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBxdWVzdGlvbnNXaXRoQW5zd2VycygpOyB0cmFjayBpdGVtLnF1ZXN0aW9uSWQ7IGxldCBpZHggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ucXVlc3Rpb24/LnF1ZXN0aW9uPy5pbnRlcmZhY2UpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX3Jldmlldy1xdWVzdGlvbi1jYXJkIGF4LWJnLW5ldXRyYWwtNTAgYXgtcm91bmRlZC1sZyBheC1ib3JkZXIgYXgtYm9yZGVyLW5ldXRyYWwtMjAwIGF4LW92ZXJmbG93LWhpZGRlbiBheC1zaGFkb3ctc21cIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlci1xdWVzdGlvblxuICAgICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJpdGVtLnF1ZXN0aW9uIVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3NlY3Rpb25PcmRlcl09XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICBbcXVlc3Rpb25JbmRleF09XCJpZHggKyAxXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd1F1ZXN0aW9uTnVtYmVyc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwiJ3ZpZXcnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29udGV4dERhdGFdPVwiY3R4XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXF1ZXN0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19yZXZpZXctcXVlc3Rpb24tY2FyZCBheC1iZy1uZXV0cmFsLTUwIGF4LXJvdW5kZWQtbGcgYXgtYm9yZGVyIGF4LWJvcmRlci1uZXV0cmFsLTIwMCBheC1wLTQgYXgtc2hhZG93LXNtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mb250LW1lZGl1bSBheC1tYi0yIGF4LXRleHQtbmV1dHJhbC05MDBcIj57eyBpdGVtLnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXNtIGF4LXRleHQtbmV1dHJhbC02MDBcIj57eyBmb3JtYXRBbnN3ZXIoaXRlbS5hbnN3ZXIpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBxdWVzdGlvbnNXaXRoQW5zd2VycygpOyB0cmFjayBpdGVtLnF1ZXN0aW9uSWQpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9fcmV2aWV3LXF1ZXN0aW9uLWNhcmQgYXgtYmctbmV1dHJhbC01MCBheC1yb3VuZGVkLWxnIGF4LWJvcmRlciBheC1ib3JkZXItbmV1dHJhbC0yMDAgYXgtcC00IGF4LXNoYWRvdy1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mb250LW1lZGl1bSBheC1tYi0yIGF4LXRleHQtbmV1dHJhbC05MDBcIj57eyBpdGVtLnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtc20gYXgtdGV4dC1uZXV0cmFsLTYwMFwiPnt7IGZvcm1hdEFuc3dlcihpdGVtLmFuc3dlcikgfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cImF4bS1wb3N0LXF1ZXN0aW9ubmFpcmUtY29udGVudCBfX3N1bW1hcnkgYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtcC04IGF4LW1pbi1oLVsyMDBweF1cIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LXNlbWlib2xkIGF4LW1iLTRcIj57eyAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZsb3cuc3VtbWFyeS10aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvaDI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1tYXgtdy0yeGwgYXgtdy1mdWxsIGF4LXByb3NlXCIgW2lubmVySFRNTF09XCJzdW1tYXJ5Q29udGVudEh0bWwoKVwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhQV2lkZ2V0Q29yZU1vZHVsZSwgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclF1ZXN0aW9uQ29tcG9uZW50XSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ2F4bS1wb3N0LXF1ZXN0aW9ubmFpcmUtY29udGVudCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNUG9zdFF1ZXN0aW9ubmFpcmVDb250ZW50Q29tcG9uZW50IHtcbiAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAmIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBJbnB1dHMgICAtLS0tXG5cbiAgLyoqIERpc3BsYXkgbW9kZTogJ3Jldmlldycgb3IgJ3N1bW1hcnknLiAqL1xuICBtb2RlID0gaW5wdXQ8UG9zdFF1ZXN0aW9ubmFpcmVNb2RlPigncmV2aWV3Jyk7XG5cbiAgLyoqIFF1ZXN0aW9ucyB3aXRoIGFuc3dlcnMgZm9yIHJldmlldyBtb2RlLiAqL1xuICBxdWVzdGlvbnNXaXRoQW5zd2VycyA9IGlucHV0PFF1ZXN0aW9uV2l0aEFuc3dlcltdPihbXSk7XG5cbiAgLyoqIENvbnRleHQgZGF0YSBmb3Igd2lkZ2V0IHJlbmRlcmluZyBpbiB2aWV3IG1vZGUgKGFuc3dlcnMgYXQgd2lkZ2V0IHBhdGhzKS4gUmVxdWlyZWQgZm9yIHByb3BlciBkaXNwbGF5LiAqL1xuICByZXZpZXdDb250ZXh0ID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw+KG51bGwpO1xuXG4gIC8qKiBTdW1tYXJ5IGNvbnRlbnQgKHJpY2ggdGV4dCkuIFN1cHBvcnRzIG11bHRpLWxhbmd1YWdlIGFuZCBwbGFjZWhvbGRlcnMuICovXG4gIHN1bW1hcnlDb250ZW50ID0gaW5wdXQ8UHJlUG9zdENvbnRlbnRWYWx1ZSB8IG51bGwgfCB1bmRlZmluZWQ+KG51bGwpO1xuXG4gIC8qKiBQbGFjZWhvbGRlciB2YWx1ZXMgZm9yIHN1bW1hcnk6IHNjb3JlLCBwYXNzRmFpbCwgdG90YWxRdWVzdGlvbnMsIGFuc3dlcmVkQ291bnQuICovXG4gIHBsYWNlaG9sZGVyVmFsdWVzID0gaW5wdXQ8U3VtbWFyeVBsYWNlaG9sZGVyVmFsdWVzIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqIExvY2FsZSBmb3IgbXVsdGktbGFuZ3VhZ2UgY29udGVudC4gRGVmYXVsdHMgdG8gYWN0aXZlIGxhbmcuICovXG4gIGxvY2FsZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbXB1dGVkICAgLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBzdW1tYXJ5Q29udGVudEh0bWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuc3VtbWFyeUNvbnRlbnQoKTtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnBsYWNlaG9sZGVyVmFsdWVzKCk7XG4gICAgY29uc3QgbG9jYWxlVmFsID0gdGhpcy5sb2NhbGUoKSA/PyB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5nZXRBY3RpdmVMYW5nPy4oKSA/PyAnZW4tVVMnO1xuICAgIGxldCByZXNvbHZlZCA9IHJlc29sdmVNdWx0aUxhbmd1YWdlQ29udGVudChjb250ZW50LCBsb2NhbGVWYWwpO1xuICAgIGlmIChyZXNvbHZlZCAmJiB2YWx1ZXMpIHtcbiAgICAgIHJlc29sdmVkID0gcmVzb2x2ZVN1bW1hcnlQbGFjZWhvbGRlcnMocmVzb2x2ZWQsIHZhbHVlcyk7XG4gICAgfVxuICAgIGlmICghcmVzb2x2ZWQgJiYgdmFsdWVzKSB7XG4gICAgICByZXNvbHZlZCA9IGA8cD5Zb3VyIHNjb3JlOiA8c3Ryb25nPiR7dmFsdWVzLnNjb3JlID8/ICfigJQnfSU8L3N0cm9uZz48L3A+PHA+WW91IGFuc3dlcmVkIDxzdHJvbmc+JHt2YWx1ZXMuYW5zd2VyZWRDb3VudCA/PyAwfTwvc3Ryb25nPiBvZiA8c3Ryb25nPiR7dmFsdWVzLnRvdGFsUXVlc3Rpb25zID8/IDB9PC9zdHJvbmc+IHF1ZXN0aW9ucy48L3A+YDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVkID8gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwocmVzb2x2ZWQpIDogJyc7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVycyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgZm9ybWF0QW5zd2VyKGFuc3dlcjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKGFuc3dlciA9PSBudWxsIHx8IGFuc3dlciA9PT0gJycpIHJldHVybiAn4oCUJztcbiAgICBpZiAodHlwZW9mIGFuc3dlciA9PT0gJ3N0cmluZycpIHJldHVybiBhbnN3ZXI7XG4gICAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09ICdudW1iZXInIHx8IHR5cGVvZiBhbnN3ZXIgPT09ICdib29sZWFuJykgcmV0dXJuIFN0cmluZyhhbnN3ZXIpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFuc3dlcikpIHJldHVybiBhbnN3ZXIubWFwKChhKSA9PiAodHlwZW9mIGEgPT09ICdvYmplY3QnID8gSlNPTi5zdHJpbmdpZnkoYSkgOiBTdHJpbmcoYSkpKS5qb2luKCcsICcpO1xuICAgIGlmICh0eXBlb2YgYW5zd2VyID09PSAnb2JqZWN0JykgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFuc3dlcik7XG4gICAgcmV0dXJuIFN0cmluZyhhbnN3ZXIpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuIl19","//#region ---- Imports ----\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPThemeLayoutBlockComponent, AXPStopwatchComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXMAssessmentCaseService } from '../../entities/assessment-case/assessment-case.service';\nimport { AXMQuestionnaireService } from '../../entities/questionnaire/questionnaire.service';\nimport { AXMAssessmentSessionService } from '../../entities/assessment-session/assessment-session.service';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { get } from 'lodash-es';\nimport { toPrePostConfig } from '../../entities/questionnaire/questionnaire.types';\nimport { AXMQuestionnaireViewerComponent } from './questionnaire-viewer.component';\nimport { AXMPreQuestionnaireContentComponent } from './components/pre-questionnaire-content';\nimport { AXMPostQuestionnaireContentComponent, } from './components/post-questionnaire-content';\nimport { AXButtonModule } from '@acorex/components/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@acorex/core/translation\";\n//#endregion\n//#region ---- Component ----\nexport class AXMQuestionnaireViewerPageComponent extends AXPPageLayoutBaseComponent {\n //#endregion\n //#region ---- Lifecycle ----\n constructor() {\n super();\n //#region ---- Services & Dependencies ----\n this.route = inject(ActivatedRoute);\n this.router = inject(Router);\n this.caseService = inject(AXMAssessmentCaseService);\n this.questionnaireService = inject(AXMQuestionnaireService);\n this.assessmentSessionService = inject(AXMAssessmentSessionService);\n this.authSession = inject(AXPSessionService);\n //#endregion\n //#region ---- State ----\n this.structure = signal(null, ...(ngDevMode ? [{ debugName: \"structure\" }] : []));\n this.questionnaire = signal(null, ...(ngDevMode ? [{ debugName: \"questionnaire\" }] : []));\n this.initialAnswers = signal({}, ...(ngDevMode ? [{ debugName: \"initialAnswers\" }] : []));\n this.viewerConfig = signal({ readonly: false }, ...(ngDevMode ? [{ debugName: \"viewerConfig\" }] : []));\n this.prePostConfig = signal(null, ...(ngDevMode ? [{ debugName: \"prePostConfig\" }] : []));\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.loadError = signal(null, ...(ngDevMode ? [{ debugName: \"loadError\" }] : []));\n this.currentSessionId = signal(null, ...(ngDevMode ? [{ debugName: \"currentSessionId\" }] : []));\n this.flowStep = signal('questions', ...(ngDevMode ? [{ debugName: \"flowStep\" }] : []));\n this.reviewSnapshot = signal([], ...(ngDevMode ? [{ debugName: \"reviewSnapshot\" }] : []));\n this.reviewContext = signal(null, ...(ngDevMode ? [{ debugName: \"reviewContext\" }] : []));\n this.submitResult = signal(null, ...(ngDevMode ? [{ debugName: \"submitResult\" }] : []));\n this.isSubmitting = signal(false, ...(ngDevMode ? [{ debugName: \"isSubmitting\" }] : []));\n this.canNavigatePrevious = signal(false, ...(ngDevMode ? [{ debugName: \"canNavigatePrevious\" }] : []));\n this.canNavigateNext = signal(false, ...(ngDevMode ? [{ debugName: \"canNavigateNext\" }] : []));\n this.showNavigationButtons = signal(false, ...(ngDevMode ? [{ debugName: \"showNavigationButtons\" }] : []));\n this.isLastStep = signal(false, ...(ngDevMode ? [{ debugName: \"isLastStep\" }] : []));\n this.areAllRequiredQuestionsAnswered = signal(false, ...(ngDevMode ? [{ debugName: \"areAllRequiredQuestionsAnswered\" }] : []));\n //#endregion\n //#region ---- View References ----\n this.viewer = viewChild('viewer', ...(ngDevMode ? [{ debugName: \"viewer\" }] : []));\n //#endregion\n //#region ---- Computed ----\n this.viewerViewModel = computed(() => this.viewer()?.viewmodel, ...(ngDevMode ? [{ debugName: \"viewerViewModel\" }] : []));\n this.totalQuestionsCount = computed(() => this.viewerViewModel()?.totalQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: \"totalQuestionsCount\" }] : []));\n this.totalSectionsCount = computed(() => this.viewerViewModel()?.totalSectionsCount() ?? 0, ...(ngDevMode ? [{ debugName: \"totalSectionsCount\" }] : []));\n this.showTimer = computed(() => this.viewerViewModel()?.showTimer() ?? false, ...(ngDevMode ? [{ debugName: \"showTimer\" }] : []));\n this.timerTimeLimit = computed(() => this.viewerViewModel()?.timerTimeLimit(), ...(ngDevMode ? [{ debugName: \"timerTimeLimit\" }] : []));\n this.timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0, ...(ngDevMode ? [{ debugName: \"timerElapsed\" }] : []));\n this.showProgressBar = computed(() => this.viewerViewModel()?.showProgressBar() ?? false, ...(ngDevMode ? [{ debugName: \"showProgressBar\" }] : []));\n this.answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: \"answeredQuestionsCount\" }] : []));\n this.isReadonly = computed(() => this.viewerConfig()?.readonly ?? false, ...(ngDevMode ? [{ debugName: \"isReadonly\" }] : []));\n this.showReviewButton = computed(() => this.isLastStep() && (this.prePostConfig()?.postReviewEnabled ?? false) && this.flowStep() === 'questions', ...(ngDevMode ? [{ debugName: \"showReviewButton\" }] : []));\n /** Use answers from review context when returning from review; otherwise use initial answers. */\n this.effectiveInitialAnswers = computed(() => {\n const ctx = this.reviewContext();\n if (!ctx)\n return this.initialAnswers();\n return ctx.answers ?? ctx;\n }, ...(ngDevMode ? [{ debugName: \"effectiveInitialAnswers\" }] : []));\n effect(() => {\n const v = this.viewer();\n if (v) {\n const vm = v.viewmodel;\n this.canNavigatePrevious.set(vm.canNavigatePrevious());\n this.canNavigateNext.set(vm.canNavigateNext());\n const viewMode = v.viewMode;\n this.showNavigationButtons.set(viewMode === 'page-per-group' || viewMode === 'page-per-question' || viewMode === 'side-menu');\n this.isLastStep.set(v.isLastStep);\n this.areAllRequiredQuestionsAnswered.set(v.areAllRequiredQuestionsAnswered);\n }\n });\n }\n async ngOnInit() {\n await super.ngOnInit();\n await this.loadData();\n }\n //#endregion\n //#region ---- Data Loading ----\n async loadData() {\n const caseId = this.route.snapshot.paramMap.get('caseId') ?? this.route.parent?.snapshot.paramMap.get('caseId');\n if (!caseId) {\n this.loadError.set('Case ID is required');\n this.isLoading.set(false);\n return;\n }\n this.isLoading.set(true);\n this.loadError.set(null);\n try {\n const assessmentCase = await this.caseService.getOne(caseId);\n if (!assessmentCase) {\n this.loadError.set('Assessment case not found');\n this.isLoading.set(false);\n return;\n }\n const questionnaire = await this.questionnaireService.getOne(assessmentCase.questionnaireId);\n if (!questionnaire?.structure?.sections?.length) {\n this.loadError.set('Questionnaire or structure not found');\n this.isLoading.set(false);\n return;\n }\n let answers = {};\n const existingSessionId = this.route.snapshot.queryParamMap.get('sessionId') ?? this.route.parent?.snapshot.queryParamMap.get('sessionId');\n if (existingSessionId) {\n const session = await this.assessmentSessionService.getOne(existingSessionId);\n if (session?.answers) {\n answers = session.answers;\n this.currentSessionId.set(existingSessionId);\n }\n }\n this.questionnaire.set(questionnaire);\n this.structure.set(questionnaire.structure);\n this.initialAnswers.set(answers);\n const cfg = toPrePostConfig(questionnaire);\n this.prePostConfig.set(cfg);\n this.flowStep.set(cfg?.preEnabled === true ? 'pre' : 'questions');\n this.viewerConfig.set({ readonly: false });\n }\n catch (err) {\n this.loadError.set(err?.message ?? 'Failed to load questionnaire');\n }\n finally {\n this.isLoading.set(false);\n }\n }\n //#endregion\n //#region ---- Submit Handler ----\n async saveSessionAndGetSummary(answers) {\n const caseIdVal = this.route.snapshot.paramMap.get('caseId') ?? this.route.parent?.snapshot.paramMap.get('caseId');\n const structureVal = this.structure();\n const q = this.questionnaire();\n if (!caseIdVal || !structureVal || !q)\n return null;\n const { answeredQuestionsCount, progressPercentage } = this.calculateProgress(structureVal, answers);\n const responderId = this.authSession.user?.id;\n if (!responderId) {\n this.toastService.show({\n color: 'danger',\n title: await this.translateService.translateAsync('@general:messages.generic.error.title'),\n content: await this.translateService.translateAsync('@general:messages.generic.error.description'),\n });\n return null;\n }\n const now = new Date();\n const sessionIdVal = this.currentSessionId();\n const role = 'responder';\n const sessionData = {\n caseId: caseIdVal,\n responderId,\n role,\n answers,\n progressPercentage,\n answeredQuestionsCount,\n lastSavedAt: now,\n };\n if (sessionIdVal) {\n await this.assessmentSessionService.updateOne(sessionIdVal, sessionData);\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync('@general:messages.form.saved.success.title'),\n content: await this.translateService.translateAsync('@general:messages.form.saved.success.description'),\n });\n }\n else {\n const newSessionData = { ...sessionData, startedAt: now };\n await this.assessmentSessionService.insertOne(newSessionData);\n this.toastService.show({\n color: 'success',\n title: await this.translateService.translateAsync('@assessment-management:sessions.states.submitted'),\n content: '',\n });\n }\n const passingScore = q.passingScore;\n const passFail = passingScore != null\n ? progressPercentage >= passingScore\n ? ((await this.translateService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.flow.pass')) ?? 'Pass')\n : ((await this.translateService.translateAsync('@assessment-management:questionnaires.components.questionnaire-viewer.flow.fail')) ?? 'Fail')\n : undefined;\n const totalQuestions = structureVal.sections?.reduce((s, sec) => s + (sec.items?.length ?? 0), 0) ?? 0;\n return { score: progressPercentage, passFail, totalQuestions, answeredCount: answeredQuestionsCount };\n }\n //#endregion\n //#region ---- Page Layout Overrides ----\n async getPageTitle() {\n return this.translateService.translateAsync('@assessment-management:cases.actions.fill-assessment.title');\n }\n getPageBreadcrumbs() {\n return [\n { title: '@assessment-management:cases.entities.assessment-case.plural', command: { name: 'navigate', options: { path: this.getCasesListPath() } } },\n { title: '@assessment-management:cases.actions.fill-assessment.title' },\n ];\n }\n async getBackButton() {\n const title = await this.translateService.translateAsync('@assessment-management:cases.entities.assessment-case.plural');\n return { title };\n }\n onBackButtonClick() {\n this.router.navigateByUrl(this.getCasesListPath());\n }\n //#endregion\n //#region ---- Helpers ----\n getCasesListPath() {\n const app = this.authSession.application?.name ?? 'demo';\n return `/${app}/m/assessment-management/e/AssessmentCase/list`;\n }\n calculateProgress(structure, answers) {\n if (!structure?.sections?.length)\n return { answeredQuestionsCount: 0, progressPercentage: 0 };\n let answered = 0;\n let total = 0;\n for (const section of structure.sections) {\n if (!section.items?.length)\n continue;\n for (const item of section.items) {\n total++;\n const value = item.id ? (answers[item.id] ?? get(answers, `answers.${item.id}`)) : null;\n const isEmpty = value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0) || (typeof value === 'object' && value !== null && Object.keys(value).length === 0);\n if (!isEmpty)\n answered++;\n }\n }\n const progressPercentage = total > 0 ? Math.round((answered / total) * 100) : 0;\n return { answeredQuestionsCount: answered, progressPercentage };\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleAnswersChanged(_answers) { }\n handleReviewClick() {\n const viewer = this.viewer();\n const items = viewer?.getQuestionsWithAnswers() ?? [];\n const context = viewer?.getReviewContext() ?? null;\n this.reviewSnapshot.set(items.map((q) => ({ questionId: q.questionId, title: q.title, answer: q.answer, question: q.question })));\n this.reviewContext.set(context);\n this.flowStep.set('review');\n }\n async handleReviewSubmit() {\n const viewer = this.viewer();\n if (!viewer)\n return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await this.saveSessionAndGetSummary(result.answers);\n this.submitResult.set(summary ?? null);\n if ((this.prePostConfig()?.postSummaryEnabled ?? false) && summary) {\n this.flowStep.set('summary');\n }\n else {\n this.handleDone();\n }\n }\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n async handlePreviousClick() {\n await this.viewer()?.navigatePrevious();\n }\n async handleNextClick() {\n await this.viewer()?.navigateNext();\n }\n async handleSubmitClick() {\n const viewer = this.viewer();\n if (!viewer)\n return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await this.saveSessionAndGetSummary(result.answers);\n this.submitResult.set(summary ?? null);\n if (this.prePostConfig()?.postSummaryEnabled) {\n this.flowStep.set('summary');\n }\n else {\n this.handleDone();\n }\n }\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n handleDone() {\n this.router.navigateByUrl(this.getCasesListPath());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerPageComponent, isStandalone: true, selector: \"axm-questionnaire-viewer-page\", host: { classAttribute: \"axm-questionnaire-viewer-page\" }, providers: [{ provide: AXPPageLayoutBase, useExisting: AXMQuestionnaireViewerPageComponent }], viewQueries: [{ propertyName: \"viewer\", first: true, predicate: [\"viewer\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <axp-page-layout>\n <axp-page-content class=\"ax-overflow-auto\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-min-h-[200px]\">\n <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async }}</span>\n </div>\n } @else if (loadError()) {\n <div class=\"ax-p-4 ax-text-error-600\">\n {{ loadError() }}\n </div>\n } @else if (structure()) {\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content\n [content]=\"prePostConfig()?.preContent\"\n ></axm-pre-questionnaire-content>\n } @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content\n mode=\"summary\"\n [summaryContent]=\"prePostConfig()?.postSummaryContent\"\n [placeholderValues]=\"submitResult()\"\n ></axm-post-questionnaire-content>\n } @else {\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content\n mode=\"review\"\n [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n ></axm-post-questionnaire-content>\n }\n <div\n class=\"__questions ax-flex ax-flex-col ax-min-h-full\"\n [class.ax-invisible]=\"flowStep() === 'review'\"\n [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\"\n [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\"\n >\n <div class=\"__header ax-p-4 ax-border-b\">\n <div class=\"ax-flex ax-justify-between ax-items-center ax-gap-4\">\n <div class=\"ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check ax-text-primary-600\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (totalSectionsCount() > 0) {\n <span><i class=\"fa-light fa-folder ax-text-primary-600\"></i> {{ totalSectionsCount() }} {{ totalSectionsCount() === 1 ? 'Section' : 'Sections' }}</span>\n }\n </div>\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n <div class=\"__content ax-flex-1 ax-min-h-0\">\n <axm-questionnaire-viewer\n #viewer\n [structure]=\"structure()!\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"effectiveInitialAnswers()\"\n (answersChanged)=\"handleAnswersChanged($event)\"\n ></axm-questionnaire-viewer>\n </div>\n </div>\n }\n }\n </axp-page-content>\n @if (structure() && !isLoading() && !loadError()) {\n <axp-page-footer class=\"--animated\">\n <axp-layout-prefix>\n @if (flowStep() === 'questions') {\n <div class=\"ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600\">\n @if (showProgressBar()) {\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n }\n </div>\n }\n </axp-layout-prefix>\n <axp-layout-suffix>\n @if (flowStep() === 'pre') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n } @else if (flowStep() === 'questions') {\n @if (showNavigationButtons()) {\n <ax-button look=\"solid\" [disabled]=\"!canNavigatePrevious()\" [text]=\"'@general:actions.previous.title' | translate | async\" (onClick)=\"handlePreviousClick()\"></ax-button>\n @if (!isLastStep()) {\n <ax-button look=\"solid\" color=\"primary\" [disabled]=\"!canNavigateNext()\" [text]=\"'@general:actions.next.title' | translate | async\" (onClick)=\"handleNextClick()\"></ax-button>\n }\n }\n @if (isLastStep() && showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async\" [disabled]=\"!areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n @if (isLastStep() && !showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n } @else if (flowStep() === 'review') {\n <ax-button look=\"outline\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n } @else if (flowStep() === 'summary') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\" (onClick)=\"handleDone()\"></ax-button>\n }\n </axp-layout-suffix>\n </axp-page-footer>\n }\n </axp-page-layout>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPStopwatchComponent, selector: \"axp-stopwatch\", inputs: [\"mode\", \"timeLimit\", \"format\", \"autoStart\", \"showControls\", \"value\"], outputs: [\"valueChange\", \"timeUp\"] }, { kind: \"component\", type: AXMQuestionnaireViewerComponent, selector: \"axm-questionnaire-viewer\", inputs: [\"questionnaireId\", \"structure\", \"config\", \"initialAnswers\"], outputs: [\"answersChanged\", \"questionAnswered\"] }, { kind: \"component\", type: AXMPreQuestionnaireContentComponent, selector: \"axm-pre-questionnaire-content\", inputs: [\"content\", \"locale\"] }, { kind: \"component\", type: AXMPostQuestionnaireContentComponent, selector: \"axm-post-questionnaire-content\", inputs: [\"mode\", \"questionsWithAnswers\", \"reviewContext\", \"summaryContent\", \"placeholderValues\", \"locale\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerPageComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axm-questionnaire-viewer-page',\n template: `\n <axp-page-layout>\n <axp-page-content class=\"ax-overflow-auto\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-min-h-[200px]\">\n <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async }}</span>\n </div>\n } @else if (loadError()) {\n <div class=\"ax-p-4 ax-text-error-600\">\n {{ loadError() }}\n </div>\n } @else if (structure()) {\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content\n [content]=\"prePostConfig()?.preContent\"\n ></axm-pre-questionnaire-content>\n } @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content\n mode=\"summary\"\n [summaryContent]=\"prePostConfig()?.postSummaryContent\"\n [placeholderValues]=\"submitResult()\"\n ></axm-post-questionnaire-content>\n } @else {\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content\n mode=\"review\"\n [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n ></axm-post-questionnaire-content>\n }\n <div\n class=\"__questions ax-flex ax-flex-col ax-min-h-full\"\n [class.ax-invisible]=\"flowStep() === 'review'\"\n [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\"\n [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\"\n >\n <div class=\"__header ax-p-4 ax-border-b\">\n <div class=\"ax-flex ax-justify-between ax-items-center ax-gap-4\">\n <div class=\"ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check ax-text-primary-600\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (totalSectionsCount() > 0) {\n <span><i class=\"fa-light fa-folder ax-text-primary-600\"></i> {{ totalSectionsCount() }} {{ totalSectionsCount() === 1 ? 'Section' : 'Sections' }}</span>\n }\n </div>\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n <div class=\"__content ax-flex-1 ax-min-h-0\">\n <axm-questionnaire-viewer\n #viewer\n [structure]=\"structure()!\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"effectiveInitialAnswers()\"\n (answersChanged)=\"handleAnswersChanged($event)\"\n ></axm-questionnaire-viewer>\n </div>\n </div>\n }\n }\n </axp-page-content>\n @if (structure() && !isLoading() && !loadError()) {\n <axp-page-footer class=\"--animated\">\n <axp-layout-prefix>\n @if (flowStep() === 'questions') {\n <div class=\"ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600\">\n @if (showProgressBar()) {\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n }\n </div>\n }\n </axp-layout-prefix>\n <axp-layout-suffix>\n @if (flowStep() === 'pre') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n } @else if (flowStep() === 'questions') {\n @if (showNavigationButtons()) {\n <ax-button look=\"solid\" [disabled]=\"!canNavigatePrevious()\" [text]=\"'@general:actions.previous.title' | translate | async\" (onClick)=\"handlePreviousClick()\"></ax-button>\n @if (!isLastStep()) {\n <ax-button look=\"solid\" color=\"primary\" [disabled]=\"!canNavigateNext()\" [text]=\"'@general:actions.next.title' | translate | async\" (onClick)=\"handleNextClick()\"></ax-button>\n }\n }\n @if (isLastStep() && showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async\" [disabled]=\"!areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n @if (isLastStep() && !showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n } @else if (flowStep() === 'review') {\n <ax-button look=\"outline\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n } @else if (flowStep() === 'summary') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\" (onClick)=\"handleDone()\"></ax-button>\n }\n </axp-layout-suffix>\n </axp-page-footer>\n }\n </axp-page-layout>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXTranslationModule,\n AXButtonModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPStopwatchComponent,\n AXMQuestionnaireViewerComponent,\n AXMPreQuestionnaireContentComponent,\n AXMPostQuestionnaireContentComponent,\n ],\n providers: [{ provide: AXPPageLayoutBase, useExisting: AXMQuestionnaireViewerPageComponent }],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'axm-questionnaire-viewer-page' },\n }]\n }], ctorParameters: () => [], propDecorators: { viewer: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS12aWV3ZXItcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXNzZXNzbWVudC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvcXVlc3Rpb25uYWlyZS12aWV3ZXIvcXVlc3Rpb25uYWlyZS12aWV3ZXItcGFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBSzNHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtE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LEVBQUUsK0JBQStCLEVBQUU7aUJBQ2pEOzhGQXVDd0UsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LCBBWFBTdG9wd2F0Y2hDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLnR5cGVzJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVWaWV3ZXJDb25maWcgfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLnR5cGVzJztcbmltcG9ydCB7IEFYTUFzc2Vzc21lbnRDYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL2Fzc2Vzc21lbnQtY2FzZS9hc3Nlc3NtZW50LWNhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUFzc2Vzc21lbnRTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL2Fzc2Vzc21lbnQtc2Vzc2lvbi9hc3Nlc3NtZW50LXNlc3Npb24uc2VydmljZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50QXNzZXNzbWVudFNlc3Npb25FbnRpdHlNb2RlbCxcbiAgQVhNQXNzZXNzbWVudFNlc3Npb25Sb2xlLFxufSBmcm9tICcuLi8uLi9lbnRpdGllcy9hc3Nlc3NtZW50LXNlc3Npb24vYXNzZXNzbWVudC1zZXNzaW9uLnR5cGVzJztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyB0b1ByZVBvc3RDb25maWcgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9xdWVzdGlvbm5haXJlL3F1ZXN0aW9ubmFpcmUudHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBBWE1Bc3Nlc3NtZW50TWFuYWdlbWVudFF1ZXN0aW9ubmFpcmVFbnRpdHlNb2RlbCB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS50eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFN1bW1hcnlQbGFjZWhvbGRlclZhbHVlcyB9IGZyb20gJy4vdXRpbHMvcHJlLXBvc3QtY29udGVudC51dGlscyc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLXZpZXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhNUHJlUXVlc3Rpb25uYWlyZUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJlLXF1ZXN0aW9ubmFpcmUtY29udGVudCc7XG5pbXBvcnQge1xuICBBWE1Qb3N0UXVlc3Rpb25uYWlyZUNvbnRlbnRDb21wb25lbnQsXG4gIHR5cGUgUXVlc3Rpb25XaXRoQW5zd2VyLFxufSBmcm9tICcuL2NvbXBvbmVudHMvcG9zdC1xdWVzdGlvbm5haXJlLWNvbnRlbnQnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgVHlwZXMgICAtLS0tXG5cbnR5cGUgRmxvd1N0ZXAgPSAncHJlJyB8ICdxdWVzdGlvbnMnIHwgJ3JldmlldycgfCAnc3VtbWFyeSc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCAgIC0tLS1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXBhZ2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxheHAtcGFnZS1sYXlvdXQ+XG4gICAgICA8YXhwLXBhZ2UtY29udGVudCBjbGFzcz1cImF4LW92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1taW4taC1bMjAwcHhdXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmxvYWRpbmcudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKGxvYWRFcnJvcigpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC10ZXh0LWVycm9yLTYwMFwiPlxuICAgICAgICAgICAge3sgbG9hZEVycm9yKCkgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAoc3RydWN0dXJlKCkpIHtcbiAgICAgICAgICBAaWYgKGZsb3dTdGVwKCkgPT09ICdwcmUnKSB7XG4gICAgICAgICAgICA8YXhtLXByZS1xdWVzdGlvbm5haXJlLWNvbnRlbnRcbiAgICAgICAgICAgICAgW2NvbnRlbnRdPVwicHJlUG9zdENvbmZpZygpPy5wcmVDb250ZW50XCJcbiAgICAgICAgICAgID48L2F4bS1wcmUtcXVlc3Rpb25uYWlyZS1jb250ZW50PlxuICAgICAgICAgIH0gQGVsc2UgaWYgKGZsb3dTdGVwKCkgPT09ICdzdW1tYXJ5Jykge1xuICAgICAgICAgICAgPGF4bS1wb3N0LXF1ZXN0aW9ubmFpcmUtY29udGVudFxuICAgICAgICAgICAgICBtb2RlPVwic3VtbWFyeVwiXG4gICAgICAgICAgICAgIFtzdW1tYXJ5Q29udGVudF09XCJwcmVQb3N0Q29uZmlnKCk/LnBvc3RTdW1tYXJ5Q29udGVudFwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlclZhbHVlc109XCJzdWJtaXRSZXN1bHQoKVwiXG4gICAgICAgICAgICA+PC9heG0tcG9zdC1xdWVzdGlvbm5haXJlLWNvbnRlbnQ+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGZsb3dTdGVwKCkgPT09ICdyZXZpZXcnKSB7XG4gICAgICAgICAgICAgIDxheG0tcG9zdC1xdWVzdGlvbm5haXJlLWNvbnRlbnRcbiAgICAgICAgICAgICAgICBtb2RlPVwicmV2aWV3XCJcbiAgICAgICAgICAgICAgICBbcXVlc3Rpb25zV2l0aEFuc3dlcnNdPVwicmV2aWV3U25hcHNob3QoKVwiXG4gICAgICAgICAgICAgICAgW3Jldmlld0NvbnRleHRdPVwicmV2aWV3Q29udGV4dCgpXCJcbiAgICAgICAgICAgICAgPjwvYXhtLXBvc3QtcXVlc3Rpb25uYWlyZS1jb250ZW50PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cIl9fcXVlc3Rpb25zIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtbWluLWgtZnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1pbnZpc2libGVdPVwiZmxvd1N0ZXAoKSA9PT0gJ3JldmlldydcIlxuICAgICAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiZmxvd1N0ZXAoKSA9PT0gJ3JldmlldycgPyAnZml4ZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cImZsb3dTdGVwKCkgPT09ICdyZXZpZXcnID8gJy05OTk5cHgnIDogbnVsbFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zaXplLTBdPVwiZmxvd1N0ZXAoKSA9PT0gJ3JldmlldydcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtb3ZlcmZsb3ctaGlkZGVuXT1cImZsb3dTdGVwKCkgPT09ICdyZXZpZXcnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIl9faGVhZGVyIGF4LXAtNCBheC1ib3JkZXItYlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtNCBheC10ZXh0LXNtIGF4LXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0b3RhbFF1ZXN0aW9uc0NvdW50KCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9XCJmYS1saWdodCBmYS1saXN0LWNoZWNrIGF4LXRleHQtcHJpbWFyeS02MDBcIj48L2k+IHt7IHRvdGFsUXVlc3Rpb25zQ291bnQoKSB9fSB7eyB0b3RhbFF1ZXN0aW9uc0NvdW50KCkgPT09IDEgPyAnUXVlc3Rpb24nIDogJ1F1ZXN0aW9ucycgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0b3RhbFNlY3Rpb25zQ291bnQoKSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWZvbGRlciBheC10ZXh0LXByaW1hcnktNjAwXCI+PC9pPiB7eyB0b3RhbFNlY3Rpb25zQ291bnQoKSB9fSB7eyB0b3RhbFNlY3Rpb25zQ291bnQoKSA9PT0gMSA/ICdTZWN0aW9uJyA6ICdTZWN0aW9ucycgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgQGlmIChzaG93VGltZXIoKSkge1xuICAgICAgICAgICAgICAgICAgICA8YXhwLXN0b3B3YXRjaFxuICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIidjb3VudC1kb3duJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3RpbWVMaW1pdF09XCJ0aW1lclRpbWVMaW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cInRpbWVyVGltZUxpbWl0KCkgJiYgdGltZXJUaW1lTGltaXQoKSEgPj0gMzYwMCA/ICdoaDptbTpzcycgOiAnbW06c3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXV0b1N0YXJ0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q29udHJvbHNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0aW1lckVsYXBzZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZpZXdlclZpZXdNb2RlbCgpIS51cGRhdGVUaW1lckVsYXBzZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2F4cC1zdG9wd2F0Y2g+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiX19jb250ZW50IGF4LWZsZXgtMSBheC1taW4taC0wXCI+XG4gICAgICAgICAgICAgICAgPGF4bS1xdWVzdGlvbm5haXJlLXZpZXdlclxuICAgICAgICAgICAgICAgICAgI3ZpZXdlclxuICAgICAgICAgICAgICAgICAgW3N0cnVjdHVyZV09XCJzdHJ1Y3R1cmUoKSFcIlxuICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJ2aWV3ZXJDb25maWcoKVwiXG4gICAgICAgICAgICAgICAgICBbaW5pdGlhbEFuc3dlcnNdPVwiZWZmZWN0aXZlSW5pdGlhbEFuc3dlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAoYW5zd2Vyc0NoYW5nZWQpPVwiaGFuZGxlQW5zd2Vyc0NoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9heHAtcGFnZS1jb250ZW50PlxuICAgICAgQGlmIChzdHJ1Y3R1cmUoKSAmJiAhaXNMb2FkaW5nKCkgJiYgIWxvYWRFcnJvcigpKSB7XG4gICAgICAgIDxheHAtcGFnZS1mb290ZXIgY2xhc3M9XCItLWFuaW1hdGVkXCI+XG4gICAgICAgICAgPGF4cC1sYXlvdXQtcHJlZml4PlxuICAgICAgICAgICAgQGlmIChmbG93U3RlcCgpID09PSAncXVlc3Rpb25zJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1zbSBheC1mb250LW1vbm8gYXgtdGFidWxhci1udW1zIGF4LXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dQcm9ncmVzc0JhcigpKSB7XG4gICAgICAgICAgICAgICAgICB7eyBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50KCkgfX0gLyB7eyB0b3RhbFF1ZXN0aW9uc0NvdW50KCkgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXhwLWxheW91dC1wcmVmaXg+XG4gICAgICAgICAgPGF4cC1sYXlvdXQtc3VmZml4PlxuICAgICAgICAgICAgQGlmIChmbG93U3RlcCgpID09PSAncHJlJykge1xuICAgICAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIFt0ZXh0XT1cIidAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmxvdy5zdGFydCcgfCB0cmFuc2xhdGUgfCBhc3luY1wiIChvbkNsaWNrKT1cImZsb3dTdGVwLnNldCgncXVlc3Rpb25zJylcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKGZsb3dTdGVwKCkgPT09ICdxdWVzdGlvbnMnKSB7XG4gICAgICAgICAgICAgIEBpZiAoc2hvd05hdmlnYXRpb25CdXR0b25zKCkpIHtcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIFtkaXNhYmxlZF09XCIhY2FuTmF2aWdhdGVQcmV2aW91cygpXCIgW3RleHRdPVwiJ0BnZW5lcmFsOmFjdGlvbnMucHJldmlvdXMudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiAob25DbGljayk9XCJoYW5kbGVQcmV2aW91c0NsaWNrKClcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICBAaWYgKCFpc0xhc3RTdGVwKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cInNvbGlkXCIgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cIiFjYW5OYXZpZ2F0ZU5leHQoKVwiIFt0ZXh0XT1cIidAZ2VuZXJhbDphY3Rpb25zLm5leHQudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiAob25DbGljayk9XCJoYW5kbGVOZXh0Q2xpY2soKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGlzTGFzdFN0ZXAoKSAmJiBzaG93UmV2aWV3QnV0dG9uKCkpIHtcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIFt0ZXh0XT1cIidAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmxvdy5yZXZpZXcnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiBbZGlzYWJsZWRdPVwiIWFyZUFsbFJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQoKVwiIChvbkNsaWNrKT1cImhhbmRsZVJldmlld0NsaWNrKClcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGlzTGFzdFN0ZXAoKSAmJiAhc2hvd1Jldmlld0J1dHRvbigpKSB7XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBbdGV4dF09XCInQGdlbmVyYWw6YWN0aW9ucy5zdWJtaXQudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiBbZGlzYWJsZWRdPVwiaXNSZWFkb25seSgpIHx8IGlzU3VibWl0dGluZygpIHx8ICFhcmVBbGxSZXF1aXJlZFF1ZXN0aW9uc0Fuc3dlcmVkKClcIiAob25DbGljayk9XCJoYW5kbGVTdWJtaXRDbGljaygpXCI+PC9heC1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKGZsb3dTdGVwKCkgPT09ICdyZXZpZXcnKSB7XG4gICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cIm91dGxpbmVcIiBbdGV4dF09XCInQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZsb3cuZWRpdCcgfCB0cmFuc2xhdGUgfCBhc3luY1wiIChvbkNsaWNrKT1cImZsb3dTdGVwLnNldCgncXVlc3Rpb25zJylcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBbdGV4dF09XCInQGdlbmVyYWw6YWN0aW9ucy5zdWJtaXQudGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiBbZGlzYWJsZWRdPVwiaXNTdWJtaXR0aW5nKClcIiAob25DbGljayk9XCJoYW5kbGVSZXZpZXdTdWJtaXQoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZmxvd1N0ZXAoKSA9PT0gJ3N1bW1hcnknKSB7XG4gICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cInNvbGlkXCIgY29sb3I9XCJwcmltYXJ5XCIgW3RleHRdPVwiJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5mbG93LmRvbmUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiAob25DbGljayk9XCJoYW5kbGVEb25lKClcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4cC1sYXlvdXQtc3VmZml4PlxuICAgICAgICA8L2F4cC1wYWdlLWZvb3Rlcj5cbiAgICAgIH1cbiAgICA8L2F4cC1wYWdlLWxheW91dD5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWFBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgQVhQU3RvcHdhdGNoQ29tcG9uZW50LFxuICAgIEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJDb21wb25lbnQsXG4gICAgQVhNUHJlUXVlc3Rpb25uYWlyZUNvbnRlbnRDb21wb25lbnQsXG4gICAgQVhNUG9zdFF1ZXN0aW9ubmFpcmVDb250ZW50Q29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEFYUFBhZ2VMYXlvdXRCYXNlLCB1c2VFeGlzdGluZzogQVhNUXVlc3Rpb25uYWlyZVZpZXdlclBhZ2VDb21wb25lbnQgfV0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHsgY2xhc3M6ICdheG0tcXVlc3Rpb25uYWlyZS12aWV3ZXItcGFnZScgfSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclBhZ2VDb21wb25lbnQgZXh0ZW5kcyBBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudCB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgU2VydmljZXMgJiBEZXBlbmRlbmNpZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjYXNlU2VydmljZSA9IGluamVjdChBWE1Bc3Nlc3NtZW50Q2FzZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHF1ZXN0aW9ubmFpcmVTZXJ2aWNlID0gaW5qZWN0KEFYTVF1ZXN0aW9ubmFpcmVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhc3Nlc3NtZW50U2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhNQXNzZXNzbWVudFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2Vzc2lvbiA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBTdGF0ZSAgIC0tLS1cblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RydWN0dXJlID0gc2lnbmFsPFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1ZXN0aW9ubmFpcmUgPSBzaWduYWw8QVhNQXNzZXNzbWVudE1hbmFnZW1lbnRRdWVzdGlvbm5haXJlRW50aXR5TW9kZWwgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGluaXRpYWxBbnN3ZXJzID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIGFueT4+KHt9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpZXdlckNvbmZpZyA9IHNpZ25hbDxRdWVzdGlvbm5haXJlVmlld2VyQ29uZmlnIHwgdW5kZWZpbmVkPih7IHJlYWRvbmx5OiBmYWxzZSB9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHByZVBvc3RDb25maWcgPSBzaWduYWw8UmV0dXJuVHlwZTx0eXBlb2YgdG9QcmVQb3N0Q29uZmlnPj4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2FkRXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjdXJyZW50U2Vzc2lvbklkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmbG93U3RlcCA9IHNpZ25hbDxGbG93U3RlcD4oJ3F1ZXN0aW9ucycpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmV2aWV3U25hcHNob3QgPSBzaWduYWw8UXVlc3Rpb25XaXRoQW5zd2VyW10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJldmlld0NvbnRleHQgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgYW55PiB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3VibWl0UmVzdWx0ID0gc2lnbmFsPFN1bW1hcnlQbGFjZWhvbGRlclZhbHVlcyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNTdWJtaXR0aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbk5hdmlnYXRlUHJldmlvdXMgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuTmF2aWdhdGVOZXh0ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dOYXZpZ2F0aW9uQnV0dG9ucyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc0xhc3RTdGVwID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyZUFsbFJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgVmlldyBSZWZlcmVuY2VzICAgLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSB2aWV3ZXIgPSB2aWV3Q2hpbGQ8QVhNUXVlc3Rpb25uYWlyZVZpZXdlckNvbXBvbmVudD4oJ3ZpZXdlcicpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpZXdlclZpZXdNb2RlbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlld2VyKCk/LnZpZXdtb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b3RhbFF1ZXN0aW9uc0NvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXJWaWV3TW9kZWwoKT8udG90YWxRdWVzdGlvbnNDb3VudCgpID8/IDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG90YWxTZWN0aW9uc0NvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXJWaWV3TW9kZWwoKT8udG90YWxTZWN0aW9uc0NvdW50KCkgPz8gMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93VGltZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpZXdlclZpZXdNb2RlbCgpPy5zaG93VGltZXIoKSA/PyBmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0aW1lclRpbWVMaW1pdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlld2VyVmlld01vZGVsKCk/LnRpbWVyVGltZUxpbWl0KCkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZXJFbGFwc2VkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXJWaWV3TW9kZWwoKT8udGltZXJFbGFwc2VkKCkgPz8gMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93UHJvZ3Jlc3NCYXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpZXdlclZpZXdNb2RlbCgpPy5zaG93UHJvZ3Jlc3NCYXIoKSA/PyBmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXJWaWV3TW9kZWwoKT8uYW5zd2VyZWRRdWVzdGlvbnNDb3VudCgpID8/IDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNSZWFkb25seSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlld2VyQ29uZmlnKCk/LnJlYWRvbmx5ID8/IGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1Jldmlld0J1dHRvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuaXNMYXN0U3RlcCgpICYmICh0aGlzLnByZVBvc3RDb25maWcoKT8ucG9zdFJldmlld0VuYWJsZWQgPz8gZmFsc2UpICYmIHRoaXMuZmxvd1N0ZXAoKSA9PT0gJ3F1ZXN0aW9ucydcbiAgKTtcblxuICAvKiogVXNlIGFuc3dlcnMgZnJvbSByZXZpZXcgY29udGV4dCB3aGVuIHJldHVybmluZyBmcm9tIHJldmlldzsgb3RoZXJ3aXNlIHVzZSBpbml0aWFsIGFuc3dlcnMuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBlZmZlY3RpdmVJbml0aWFsQW5zd2VycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjdHggPSB0aGlzLnJldmlld0NvbnRleHQoKTtcbiAgICBpZiAoIWN0eCkgcmV0dXJuIHRoaXMuaW5pdGlhbEFuc3dlcnMoKTtcbiAgICByZXR1cm4gKGN0eCBhcyB7IGFuc3dlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0pLmFuc3dlcnMgPz8gY3R4O1xuICB9KTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIExpZmVjeWNsZSAgIC0tLS1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2ID0gdGhpcy52aWV3ZXIoKTtcbiAgICAgIGlmICh2KSB7XG4gICAgICAgIGNvbnN0IHZtID0gdi52aWV3bW9kZWw7XG4gICAgICAgIHRoaXMuY2FuTmF2aWdhdGVQcmV2aW91cy5zZXQodm0uY2FuTmF2aWdhdGVQcmV2aW91cygpKTtcbiAgICAgICAgdGhpcy5jYW5OYXZpZ2F0ZU5leHQuc2V0KHZtLmNhbk5hdmlnYXRlTmV4dCgpKTtcbiAgICAgICAgY29uc3Qgdmlld01vZGUgPSB2LnZpZXdNb2RlO1xuICAgICAgICB0aGlzLnNob3dOYXZpZ2F0aW9uQnV0dG9ucy5zZXQodmlld01vZGUgPT09ICdwYWdlLXBlci1ncm91cCcgfHwgdmlld01vZGUgPT09ICdwYWdlLXBlci1xdWVzdGlvbicgfHwgdmlld01vZGUgPT09ICdzaWRlLW1lbnUnKTtcbiAgICAgICAgdGhpcy5pc0xhc3RTdGVwLnNldCh2LmlzTGFzdFN0ZXApO1xuICAgICAgICB0aGlzLmFyZUFsbFJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQuc2V0KHYuYXJlQWxsUmVxdWlyZWRRdWVzdGlvbnNBbnN3ZXJlZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5uZ09uSW5pdCgpO1xuICAgIGF3YWl0IHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRGF0YSBMb2FkaW5nICAgLS0tLVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERhdGEoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2FzZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2Nhc2VJZCcpID8/IHRoaXMucm91dGUucGFyZW50Py5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2Nhc2VJZCcpO1xuICAgIGlmICghY2FzZUlkKSB7XG4gICAgICB0aGlzLmxvYWRFcnJvci5zZXQoJ0Nhc2UgSUQgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMubG9hZEVycm9yLnNldChudWxsKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBhc3Nlc3NtZW50Q2FzZSA9IGF3YWl0IHRoaXMuY2FzZVNlcnZpY2UuZ2V0T25lKGNhc2VJZCk7XG4gICAgICBpZiAoIWFzc2Vzc21lbnRDYXNlKSB7XG4gICAgICAgIHRoaXMubG9hZEVycm9yLnNldCgnQXNzZXNzbWVudCBjYXNlIG5vdCBmb3VuZCcpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXN0aW9ubmFpcmUgPSBhd2FpdCB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldE9uZSgoYXNzZXNzbWVudENhc2UgYXMgYW55KS5xdWVzdGlvbm5haXJlSWQpO1xuICAgICAgaWYgKCFxdWVzdGlvbm5haXJlPy5zdHJ1Y3R1cmU/LnNlY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sb2FkRXJyb3Iuc2V0KCdRdWVzdGlvbm5haXJlIG9yIHN0cnVjdHVyZSBub3QgZm91bmQnKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBsZXQgYW5zd2VyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgY29uc3QgZXhpc3RpbmdTZXNzaW9uSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdzZXNzaW9uSWQnKSA/PyB0aGlzLnJvdXRlLnBhcmVudD8uc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3Nlc3Npb25JZCcpO1xuICAgICAgaWYgKGV4aXN0aW5nU2Vzc2lvbklkKSB7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCB0aGlzLmFzc2Vzc21lbnRTZXNzaW9uU2VydmljZS5nZXRPbmUoZXhpc3RpbmdTZXNzaW9uSWQpO1xuICAgICAgICBpZiAoc2Vzc2lvbj8uYW5zd2Vycykge1xuICAgICAgICAgIGFuc3dlcnMgPSBzZXNzaW9uLmFuc3dlcnM7XG4gICAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbklkLnNldChleGlzdGluZ1Nlc3Npb25JZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlLnNldChxdWVzdGlvbm5haXJlIGFzIEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50UXVlc3Rpb25uYWlyZUVudGl0eU1vZGVsKTtcbiAgICAgIHRoaXMuc3RydWN0dXJlLnNldChxdWVzdGlvbm5haXJlLnN0cnVjdHVyZSBhcyBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKTtcbiAgICAgIHRoaXMuaW5pdGlhbEFuc3dlcnMuc2V0KGFuc3dlcnMpO1xuICAgICAgY29uc3QgY2ZnID0gdG9QcmVQb3N0Q29uZmlnKHF1ZXN0aW9ubmFpcmUgYXMgQVhNQXNzZXNzbWVudE1hbmFnZW1lbnRRdWVzdGlvbm5haXJlRW50aXR5TW9kZWwpO1xuICAgICAgdGhpcy5wcmVQb3N0Q29uZmlnLnNldChjZmcpO1xuICAgICAgdGhpcy5mbG93U3RlcC5zZXQoY2ZnPy5wcmVFbmFibGVkID09PSB0cnVlID8gJ3ByZScgOiAncXVlc3Rpb25zJyk7XG4gICAgICB0aGlzLnZpZXdlckNvbmZpZy5zZXQoeyByZWFkb25seTogZmFsc2UgfSk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIHRoaXMubG9hZEVycm9yLnNldChlcnI/Lm1lc3NhZ2UgPz8gJ0ZhaWxlZCB0byBsb2FkIHF1ZXN0aW9ubmFpcmUnKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFN1Ym1pdCBIYW5kbGVyICAgLS0tLVxuXG4gIHByaXZhdGUgYXN5bmMgc2F2ZVNlc3Npb25BbmRHZXRTdW1tYXJ5KGFuc3dlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPFN1bW1hcnlQbGFjZWhvbGRlclZhbHVlcyB8IG51bGw+IHtcbiAgICBjb25zdCBjYXNlSWRWYWwgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnY2FzZUlkJykgPz8gdGhpcy5yb3V0ZS5wYXJlbnQ/LnNuYXBzaG90LnBhcmFtTWFwLmdldCgnY2FzZUlkJyk7XG4gICAgY29uc3Qgc3RydWN0dXJlVmFsID0gdGhpcy5zdHJ1Y3R1cmUoKTtcbiAgICBjb25zdCBxID0gdGhpcy5xdWVzdGlvbm5haXJlKCk7XG4gICAgaWYgKCFjYXNlSWRWYWwgfHwgIXN0cnVjdHVyZVZhbCB8fCAhcSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCB7IGFuc3dlcmVkUXVlc3Rpb25zQ291bnQsIHByb2dyZXNzUGVyY2VudGFnZSB9ID0gdGhpcy5jYWxjdWxhdGVQcm9ncmVzcyhzdHJ1Y3R1cmVWYWwsIGFuc3dlcnMpO1xuICAgIGNvbnN0IHJlc3BvbmRlcklkID0gdGhpcy5hdXRoU2Vzc2lvbi51c2VyPy5pZDtcbiAgICBpZiAoIXJlc3BvbmRlcklkKSB7XG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAZ2VuZXJhbDptZXNzYWdlcy5nZW5lcmljLmVycm9yLnRpdGxlJyksXG4gICAgICAgIGNvbnRlbnQ6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQGdlbmVyYWw6bWVzc2FnZXMuZ2VuZXJpYy5lcnJvci5kZXNjcmlwdGlvbicpLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHNlc3Npb25JZFZhbCA9IHRoaXMuY3VycmVudFNlc3Npb25JZCgpO1xuICAgIGNvbnN0IHJvbGU6IEFYTUFzc2Vzc21lbnRTZXNzaW9uUm9sZSA9ICdyZXNwb25kZXInO1xuICAgIGNvbnN0IHNlc3Npb25EYXRhOiBQYXJ0aWFsPEFYTUFzc2Vzc21lbnRNYW5hZ2VtZW50QXNzZXNzbWVudFNlc3Npb25FbnRpdHlNb2RlbD4gPSB7XG4gICAgICBjYXNlSWQ6IGNhc2VJZFZhbCxcbiAgICAgIHJlc3BvbmRlcklkLFxuICAgICAgcm9sZSxcbiAgICAgIGFuc3dlcnMsXG4gICAgICBwcm9ncmVzc1BlcmNlbnRhZ2UsXG4gICAgICBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50LFxuICAgICAgbGFzdFNhdmVkQXQ6IG5vdyxcbiAgICB9O1xuXG4gICAgaWYgKHNlc3Npb25JZFZhbCkge1xuICAgICAgYXdhaXQgdGhpcy5hc3Nlc3NtZW50U2Vzc2lvblNlcnZpY2UudXBkYXRlT25lKHNlc3Npb25JZFZhbCwgc2Vzc2lvbkRhdGEgYXMgYW55KTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAZ2VuZXJhbDptZXNzYWdlcy5mb3JtLnNhdmVkLnN1Y2Nlc3MudGl0bGUnKSxcbiAgICAgICAgY29udGVudDogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAZ2VuZXJhbDptZXNzYWdlcy5mb3JtLnNhdmVkLnN1Y2Nlc3MuZGVzY3JpcHRpb24nKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBuZXdTZXNzaW9uRGF0YSA9IHsgLi4uc2Vzc2lvbkRhdGEsIHN0YXJ0ZWRBdDogbm93IH0gYXMgT21pdDxBWE1Bc3Nlc3NtZW50TWFuYWdlbWVudEFzc2Vzc21lbnRTZXNzaW9uRW50aXR5TW9kZWwsICdpZCc+O1xuICAgICAgYXdhaXQgdGhpcy5hc3Nlc3NtZW50U2Vzc2lvblNlcnZpY2UuaW5zZXJ0T25lKG5ld1Nlc3Npb25EYXRhKTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnNlc3Npb25zLnN0YXRlcy5zdWJtaXR0ZWQnKSxcbiAgICAgICAgY29udGVudDogJycsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXNzaW5nU2NvcmUgPSBxLnBhc3NpbmdTY29yZTtcbiAgICBjb25zdCBwYXNzRmFpbCA9XG4gICAgICBwYXNzaW5nU2NvcmUgIT0gbnVsbFxuICAgICAgICA/IHByb2dyZXNzUGVyY2VudGFnZSA+PSBwYXNzaW5nU2NvcmVcbiAgICAgICAgICA/ICgoYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmxvdy5wYXNzJykpID8/ICdQYXNzJylcbiAgICAgICAgICA6ICgoYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmxvdy5mYWlsJykpID8/ICdGYWlsJylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB0b3RhbFF1ZXN0aW9ucyA9IHN0cnVjdHVyZVZhbC5zZWN0aW9ucz8ucmVkdWNlKChzLCBzZWMpID0+IHMgKyAoc2VjLml0ZW1zPy5sZW5ndGggPz8gMCksIDApID8/IDA7XG4gICAgcmV0dXJuIHsgc2NvcmU6IHByb2dyZXNzUGVyY2VudGFnZSwgcGFzc0ZhaWwsIHRvdGFsUXVlc3Rpb25zLCBhbnN3ZXJlZENvdW50OiBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50IH07XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFBhZ2UgTGF5b3V0IE92ZXJyaWRlcyAgIC0tLS1cblxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlVGl0bGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OmNhc2VzLmFjdGlvbnMuZmlsbC1hc3Nlc3NtZW50LnRpdGxlJyk7XG4gIH1cblxuICBvdmVycmlkZSBnZXRQYWdlQnJlYWRjcnVtYnMoKTogUmV0dXJuVHlwZTxBWFBQYWdlTGF5b3V0QmFzZUNvbXBvbmVudFsnZ2V0UGFnZUJyZWFkY3J1bWJzJ10+IHtcbiAgICByZXR1cm4gW1xuICAgICAgeyB0aXRsZTogJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6Y2FzZXMuZW50aXRpZXMuYXNzZXNzbWVudC1jYXNlLnBsdXJhbCcsIGNvbW1hbmQ6IHsgbmFtZTogJ25hdmlnYXRlJywgb3B0aW9uczogeyBwYXRoOiB0aGlzLmdldENhc2VzTGlzdFBhdGgoKSB9IH0gfSxcbiAgICAgIHsgdGl0bGU6ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OmNhc2VzLmFjdGlvbnMuZmlsbC1hc3Nlc3NtZW50LnRpdGxlJyB9LFxuICAgIF07XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRCYWNrQnV0dG9uKCk6IFByb21pc2U8eyB0aXRsZTogc3RyaW5nIH0gfCBudWxsPiB7XG4gICAgY29uc3QgdGl0bGUgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6Y2FzZXMuZW50aXRpZXMuYXNzZXNzbWVudC1jYXNlLnBsdXJhbCcpO1xuICAgIHJldHVybiB7IHRpdGxlIH07XG4gIH1cblxuICBvdmVycmlkZSBvbkJhY2tCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0Q2FzZXNMaXN0UGF0aCgpKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVycyAgIC0tLS1cblxuICBwcml2YXRlIGdldENhc2VzTGlzdFBhdGgoKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcHAgPSB0aGlzLmF1dGhTZXNzaW9uLmFwcGxpY2F0aW9uPy5uYW1lID8/ICdkZW1vJztcbiAgICByZXR1cm4gYC8ke2FwcH0vbS9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvZS9Bc3Nlc3NtZW50Q2FzZS9saXN0YDtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlUHJvZ3Jlc3Moc3RydWN0dXJlOiBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlLCBhbnN3ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogeyBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50OiBudW1iZXI7IHByb2dyZXNzUGVyY2VudGFnZTogbnVtYmVyIH0ge1xuICAgIGlmICghc3RydWN0dXJlPy5zZWN0aW9ucz8ubGVuZ3RoKSByZXR1cm4geyBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50OiAwLCBwcm9ncmVzc1BlcmNlbnRhZ2U6IDAgfTtcbiAgICBsZXQgYW5zd2VyZWQgPSAwO1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHN0cnVjdHVyZS5zZWN0aW9ucykge1xuICAgICAgaWYgKCFzZWN0aW9uLml0ZW1zPy5sZW5ndGgpIGNvbnRpbnVlO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHNlY3Rpb24uaXRlbXMpIHtcbiAgICAgICAgdG90YWwrKztcbiAgICAgICAgY29uc3QgdmFsdWUgPSBpdGVtLmlkID8gKGFuc3dlcnNbaXRlbS5pZF0gPz8gZ2V0KGFuc3dlcnMsIGBhbnN3ZXJzLiR7aXRlbS5pZH1gKSkgOiBudWxsO1xuICAgICAgICBjb25zdCBpc0VtcHR5ID0gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMCk7XG4gICAgICAgIGlmICghaXNFbXB0eSkgYW5zd2VyZWQrKztcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcHJvZ3Jlc3NQZXJjZW50YWdlID0gdG90YWwgPiAwID8gTWF0aC5yb3VuZCgoYW5zd2VyZWQgLyB0b3RhbCkgKiAxMDApIDogMDtcbiAgICByZXR1cm4geyBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50OiBhbnN3ZXJlZCwgcHJvZ3Jlc3NQZXJjZW50YWdlIH07XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEV2ZW50IEhhbmRsZXJzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBoYW5kbGVBbnN3ZXJzQ2hhbmdlZChfYW5zd2VyczogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge31cblxuICBwcm90ZWN0ZWQgaGFuZGxlUmV2aWV3Q2xpY2soKTogdm9pZCB7XG4gICAgY29uc3Qgdmlld2VyID0gdGhpcy52aWV3ZXIoKTtcbiAgICBjb25zdCBpdGVtcyA9IHZpZXdlcj8uZ2V0UXVlc3Rpb25zV2l0aEFuc3dlcnMoKSA/PyBbXTtcbiAgICBjb25zdCBjb250ZXh0ID0gdmlld2VyPy5nZXRSZXZpZXdDb250ZXh0KCkgPz8gbnVsbDtcbiAgICB0aGlzLnJldmlld1NuYXBzaG90LnNldChpdGVtcy5tYXAoKHEpID0+ICh7IHF1ZXN0aW9uSWQ6IHEucXVlc3Rpb25JZCwgdGl0bGU6IHEudGl0bGUsIGFuc3dlcjogcS5hbnN3ZXIsIHF1ZXN0aW9uOiBxLnF1ZXN0aW9uIH0pKSk7XG4gICAgdGhpcy5yZXZpZXdDb250ZXh0LnNldChjb250ZXh0KTtcbiAgICB0aGlzLmZsb3dTdGVwLnNldCgncmV2aWV3Jyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlUmV2aWV3U3VibWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZpZXdlciA9IHRoaXMudmlld2VyKCk7XG4gICAgaWYgKCF2aWV3ZXIpIHJldHVybjtcbiAgICB0aGlzLmlzU3VibWl0dGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZpZXdlci5zdWJtaXQoKTtcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuYW5zd2Vycykge1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gYXdhaXQgdGhpcy5zYXZlU2Vzc2lvbkFuZEdldFN1bW1hcnkocmVzdWx0LmFuc3dlcnMpO1xuICAgICAgICB0aGlzLnN1Ym1pdFJlc3VsdC5zZXQoc3VtbWFyeSA/PyBudWxsKTtcbiAgICAgICAgaWYgKCh0aGlzLnByZVBvc3RDb25maWcoKT8ucG9zdFN1bW1hcnlFbmFibGVkID8/IGZhbHNlKSAmJiBzdW1tYXJ5KSB7XG4gICAgICAgICAgdGhpcy5mbG93U3RlcC5zZXQoJ3N1bW1hcnknKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZURvbmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVQcmV2aW91c0NsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudmlld2VyKCk/Lm5hdmlnYXRlUHJldmlvdXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVOZXh0Q2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy52aWV3ZXIoKT8ubmF2aWdhdGVOZXh0KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU3VibWl0Q2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgdmlld2VyID0gdGhpcy52aWV3ZXIoKTtcbiAgICBpZiAoIXZpZXdlcikgcmV0dXJuO1xuICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmlld2VyLnN1Ym1pdCgpO1xuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzICYmIHJlc3VsdC5hbnN3ZXJzKSB7XG4gICAgICAgIGNvbnN0IHN1bW1hcnkgPSBhd2FpdCB0aGlzLnNhdmVTZXNzaW9uQW5kR2V0U3VtbWFyeShyZXN1bHQuYW5zd2Vycyk7XG4gICAgICAgIHRoaXMuc3VibWl0UmVzdWx0LnNldChzdW1tYXJ5ID8/IG51bGwpO1xuICAgICAgICBpZiAodGhpcy5wcmVQb3N0Q29uZmlnKCk/LnBvc3RTdW1tYXJ5RW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMuZmxvd1N0ZXAuc2V0KCdzdW1tYXJ5Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVEb25lKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRG9uZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0Q2FzZXNMaXN0UGF0aCgpKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","//#region ---- Imports ----\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStopwatchComponent } from '@acorex/platform/layout/components';\nimport { AXPWidgetCoreContextStore, AXPWidgetCoreModule, AXPWidgetCoreService, } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal, viewChild, ViewEncapsulation, } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { AXMQuestionnaireViewerComponent } from './questionnaire-viewer.component';\nimport { AXMPreQuestionnaireContentComponent } from './components/pre-questionnaire-content';\nimport { AXMPostQuestionnaireContentComponent, } from './components/post-questionnaire-content';\nimport { toPrePostConfig } from '../../entities/questionnaire/questionnaire.types';\nimport { AXMAssessmentSessionService } from '../../entities/assessment-session/assessment-session.service';\nimport { AXMAssessmentCaseService } from '../../entities/assessment-case/assessment-case.service';\nimport { AXMQuestionnaireService } from '../../entities/questionnaire/questionnaire.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@acorex/core/translation\";\n//#endregion\n//#region ---- Component ----\nexport class AXMQuestionnaireViewerStandalonePageComponent {\n //#endregion\n //#region ---- Lifecycle ----\n constructor() {\n //#region ---- Services & Dependencies ----\n this.route = inject(ActivatedRoute);\n this.sessionService = inject(AXMAssessmentSessionService);\n this.caseService = inject(AXMAssessmentCaseService);\n this.questionnaireService = inject(AXMQuestionnaireService);\n //#endregion\n //#region ---- State ----\n this.structure = signal(null, ...(ngDevMode ? [{ debugName: \"structure\" }] : []));\n this.questionnaire = signal(null, ...(ngDevMode ? [{ debugName: \"questionnaire\" }] : []));\n this.initialAnswers = signal({}, ...(ngDevMode ? [{ debugName: \"initialAnswers\" }] : []));\n this.prePostConfig = signal(null, ...(ngDevMode ? [{ debugName: \"prePostConfig\" }] : []));\n this.viewerConfig = signal({ readonly: false }, ...(ngDevMode ? [{ debugName: \"viewerConfig\" }] : []));\n this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.loadError = signal(null, ...(ngDevMode ? [{ debugName: \"loadError\" }] : []));\n this.isSubmitting = signal(false, ...(ngDevMode ? [{ debugName: \"isSubmitting\" }] : []));\n this.flowStep = signal('questions', ...(ngDevMode ? [{ debugName: \"flowStep\" }] : []));\n this.reviewSnapshot = signal([], ...(ngDevMode ? [{ debugName: \"reviewSnapshot\" }] : []));\n this.reviewContext = signal(null, ...(ngDevMode ? [{ debugName: \"reviewContext\" }] : []));\n this.submitResult = signal(null, ...(ngDevMode ? [{ debugName: \"submitResult\" }] : []));\n this.canNavigatePrevious = signal(false, ...(ngDevMode ? [{ debugName: \"canNavigatePrevious\" }] : []));\n this.canNavigateNext = signal(false, ...(ngDevMode ? [{ debugName: \"canNavigateNext\" }] : []));\n this.showNavigationButtons = signal(false, ...(ngDevMode ? [{ debugName: \"showNavigationButtons\" }] : []));\n this.isLastStep = signal(false, ...(ngDevMode ? [{ debugName: \"isLastStep\" }] : []));\n this.areAllRequiredQuestionsAnswered = signal(false, ...(ngDevMode ? [{ debugName: \"areAllRequiredQuestionsAnswered\" }] : []));\n //#endregion\n //#region ---- View References ----\n this.viewer = viewChild('viewer', ...(ngDevMode ? [{ debugName: \"viewer\" }] : []));\n //#endregion\n //#region ---- Computed ----\n this.viewerViewModel = computed(() => this.viewer()?.viewmodel, ...(ngDevMode ? [{ debugName: \"viewerViewModel\" }] : []));\n this.totalQuestionsCount = computed(() => this.viewerViewModel()?.totalQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: \"totalQuestionsCount\" }] : []));\n this.showTimer = computed(() => this.viewerViewModel()?.showTimer() ?? false, ...(ngDevMode ? [{ debugName: \"showTimer\" }] : []));\n this.timerTimeLimit = computed(() => this.viewerViewModel()?.timerTimeLimit(), ...(ngDevMode ? [{ debugName: \"timerTimeLimit\" }] : []));\n this.timerElapsed = computed(() => this.viewerViewModel()?.timerElapsed() ?? 0, ...(ngDevMode ? [{ debugName: \"timerElapsed\" }] : []));\n this.showProgressBar = computed(() => this.viewerViewModel()?.showProgressBar() ?? false, ...(ngDevMode ? [{ debugName: \"showProgressBar\" }] : []));\n this.answeredQuestionsCount = computed(() => this.viewerViewModel()?.answeredQuestionsCount() ?? 0, ...(ngDevMode ? [{ debugName: \"answeredQuestionsCount\" }] : []));\n this.isReadonly = computed(() => this.viewerConfig()?.readonly ?? false, ...(ngDevMode ? [{ debugName: \"isReadonly\" }] : []));\n this.showReviewButton = computed(() => this.isLastStep() && (this.prePostConfig()?.postReviewEnabled ?? false) && this.flowStep() === 'questions', ...(ngDevMode ? [{ debugName: \"showReviewButton\" }] : []));\n /** Use answers from review context when returning from review; otherwise use initial answers. */\n this.effectiveInitialAnswers = computed(() => {\n const ctx = this.reviewContext();\n if (!ctx)\n return this.initialAnswers();\n return ctx.answers ?? ctx;\n }, ...(ngDevMode ? [{ debugName: \"effectiveInitialAnswers\" }] : []));\n effect(() => {\n const v = this.viewer();\n if (v) {\n const vm = v.viewmodel;\n this.canNavigatePrevious.set(vm.canNavigatePrevious());\n this.canNavigateNext.set(vm.canNavigateNext());\n const viewMode = v.viewMode;\n this.showNavigationButtons.set(viewMode === 'page-per-group' || viewMode === 'page-per-question' || viewMode === 'side-menu');\n this.isLastStep.set(v.isLastStep);\n this.areAllRequiredQuestionsAnswered.set(v.areAllRequiredQuestionsAnswered);\n }\n });\n }\n ngOnInit() {\n this.loadData();\n }\n //#endregion\n //#region ---- Data Loading ----\n async loadData() {\n const sessionId = this.route.snapshot.paramMap.get('sessionId') ?? this.route.parent?.snapshot.paramMap.get('sessionId');\n if (!sessionId) {\n this.loadError.set('Session ID is required');\n this.isLoading.set(false);\n return;\n }\n this.isLoading.set(true);\n this.loadError.set(null);\n try {\n const session = await this.sessionService.getOne(sessionId);\n if (!session) {\n this.loadError.set('Session not found');\n this.isLoading.set(false);\n return;\n }\n const caseId = session.caseId;\n const assessmentCase = await this.caseService.getOne(caseId);\n if (!assessmentCase) {\n this.loadError.set('Assessment case not found');\n this.isLoading.set(false);\n return;\n }\n const questionnaire = await this.questionnaireService.getOne(assessmentCase.questionnaireId);\n if (!questionnaire?.structure?.sections?.length) {\n this.loadError.set('Questionnaire or structure not found');\n this.isLoading.set(false);\n return;\n }\n const answers = session.answers ?? {};\n const cfg = toPrePostConfig(questionnaire);\n this.questionnaire.set(questionnaire);\n this.structure.set(questionnaire.structure);\n this.initialAnswers.set(answers);\n this.prePostConfig.set(cfg);\n this.flowStep.set(cfg?.preEnabled === true ? 'pre' : 'questions');\n this.viewerConfig.set({ readonly: false });\n }\n catch (err) {\n this.loadError.set(err?.message ?? 'Failed to load questionnaire');\n }\n finally {\n this.isLoading.set(false);\n }\n }\n //#endregion\n //#region ---- Submit Handler ----\n async saveSessionAndGetSummary(answers) {\n const sessionId = this.route.snapshot.paramMap.get('sessionId') ?? this.route.parent?.snapshot.paramMap.get('sessionId');\n const structureVal = this.structure();\n const q = this.questionnaire();\n if (!sessionId || !structureVal || !q)\n return null;\n const { answeredQuestionsCount, progressPercentage } = this.calculateProgress(structureVal, answers);\n const session = await this.sessionService.getOne(sessionId);\n if (session) {\n await this.sessionService.updateOne(sessionId, {\n ...session,\n answers,\n progressPercentage,\n answeredQuestionsCount,\n lastSavedAt: new Date(),\n });\n }\n const passingScore = q.passingScore;\n const passFail = passingScore != null ? (progressPercentage >= passingScore ? 'Pass' : 'Fail') : undefined;\n const totalQuestions = structureVal.sections?.reduce((s, sec) => s + (sec.items?.length ?? 0), 0) ?? 0;\n return { score: progressPercentage, passFail, totalQuestions, answeredCount: answeredQuestionsCount };\n }\n //#endregion\n //#region ---- Helpers ----\n calculateProgress(structure, answers) {\n if (!structure?.sections?.length)\n return { answeredQuestionsCount: 0, progressPercentage: 0 };\n let answered = 0;\n let total = 0;\n for (const section of structure.sections) {\n if (!section.items?.length)\n continue;\n for (const item of section.items) {\n total++;\n const value = item.id ? answers[item.id] : null;\n const isEmpty = value === null ||\n value === undefined ||\n value === '' ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof value === 'object' && value !== null && Object.keys(value).length === 0);\n if (!isEmpty)\n answered++;\n }\n }\n const progressPercentage = total > 0 ? Math.round((answered / total) * 100) : 0;\n return { answeredQuestionsCount: answered, progressPercentage };\n }\n //#endregion\n //#region ---- Event Handlers ----\n handleReviewClick() {\n const viewer = this.viewer();\n const items = viewer?.getQuestionsWithAnswers() ?? [];\n const context = viewer?.getReviewContext() ?? null;\n this.reviewSnapshot.set(items.map((q) => ({ questionId: q.questionId, title: q.title, answer: q.answer, question: q.question })));\n this.reviewContext.set(context);\n this.flowStep.set('review');\n }\n async handleReviewSubmit() {\n const viewer = this.viewer();\n if (!viewer)\n return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await this.saveSessionAndGetSummary(result.answers);\n this.submitResult.set(summary ?? null);\n if ((this.prePostConfig()?.postSummaryEnabled ?? false) && summary) {\n this.flowStep.set('summary');\n }\n else {\n this.handleDone();\n }\n }\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n async handlePreviousClick() {\n await this.viewer()?.navigatePrevious();\n }\n async handleNextClick() {\n await this.viewer()?.navigateNext();\n }\n async handleSubmitClick() {\n const viewer = this.viewer();\n if (!viewer)\n return;\n this.isSubmitting.set(true);\n try {\n const result = await viewer.submit();\n if (result.success && result.answers) {\n const summary = await this.saveSessionAndGetSummary(result.answers);\n this.submitResult.set(summary ?? null);\n if (this.prePostConfig()?.postSummaryEnabled && summary) {\n this.flowStep.set('summary');\n }\n else {\n this.handleDone();\n }\n }\n }\n finally {\n this.isSubmitting.set(false);\n }\n }\n handleDone() {\n // Standalone: could navigate away or show message\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerStandalonePageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXMQuestionnaireViewerStandalonePageComponent, isStandalone: true, selector: \"axm-questionnaire-viewer-standalone-page\", host: { classAttribute: \"axm-questionnaire-viewer-standalone-page\" }, providers: [AXPWidgetCoreService, AXPWidgetCoreContextStore], viewQueries: [{ propertyName: \"viewer\", first: true, predicate: [\"viewer\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n <div class=\"__standalone ax-min-h-screen ax-flex ax-flex-col ax-bg-neutral-50\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-flex-1 ax-min-h-[200px]\">\n <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async }}</span>\n </div>\n } @else if (loadError()) {\n <div class=\"ax-p-6 ax-text-error-600 ax-text-center\">\n {{ loadError() }}\n </div>\n } @else if (structure()) {\n <div class=\"__main-container ax-flex-1 ax-flex ax-flex-col ax-max-w-4xl ax-mx-auto ax-w-full ax-p-4\">\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content\n [content]=\"prePostConfig()?.preContent\"\n ></axm-pre-questionnaire-content>\n } @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content\n mode=\"summary\"\n [summaryContent]=\"prePostConfig()?.postSummaryContent\"\n [placeholderValues]=\"submitResult()\"\n ></axm-post-questionnaire-content>\n } @else {\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content\n mode=\"review\"\n [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n ></axm-post-questionnaire-content>\n }\n <div\n class=\"__questions ax-flex ax-flex-col ax-min-h-full\"\n [class.ax-invisible]=\"flowStep() === 'review'\"\n [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\"\n [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\"\n >\n <div class=\"__header ax-p-4 ax-border-b\">\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <div class=\"ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check ax-text-primary-600\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n </div>\n <div class=\"__content ax-flex-1 ax-min-h-0\">\n <axm-questionnaire-viewer\n #viewer\n [structure]=\"structure()!\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"effectiveInitialAnswers()\"\n ></axm-questionnaire-viewer>\n </div>\n </div>\n }\n </div>\n }\n @if (structure() && (flowStep() === 'pre' || flowStep() === 'questions' || flowStep() === 'review' || flowStep() === 'summary')) {\n <ax-footer class=\"ax-flex ax-items-center ax-justify-between ax-gap-4 ax-py-4 ax-mt-4 ax-px-4 ax-border-t ax-border-neutral-200\">\n <ax-prefix>\n @if (flowStep() === 'questions') {\n <div class=\"ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600\">\n @if (showProgressBar()) {\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n }\n </div>\n }\n </ax-prefix>\n <ax-suffix>\n @if (flowStep() === 'pre') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n } @else if (flowStep() === 'questions') {\n @if (showNavigationButtons()) {\n <ax-button look=\"solid\" [disabled]=\"!canNavigatePrevious()\" [text]=\"'@general:actions.previous.title' | translate | async\" (onClick)=\"handlePreviousClick()\"></ax-button>\n @if (!isLastStep()) {\n <ax-button look=\"solid\" color=\"primary\" [disabled]=\"!canNavigateNext()\" [text]=\"'@general:actions.next.title' | translate | async\" (onClick)=\"handleNextClick()\"></ax-button>\n }\n }\n @if (isLastStep() && showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async\" [disabled]=\"!areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n @if (isLastStep() && !showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n } @else if (flowStep() === 'review') {\n <ax-button look=\"outline\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n } @else if (flowStep() === 'summary') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\" (onClick)=\"handleDone()\"></ax-button>\n }\n </ax-suffix>\n </ax-footer>\n }\n </div>\n `, isInline: true, styles: [\"axm-questionnaire-viewer-popup{display:flex;height:100%;flex-direction:column;overflow:hidden;max-height:80vh}axm-questionnaire-viewer-popup .__main-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__header{display:flex;flex-shrink:0;flex-direction:column;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));background-color:#fff;backdrop-filter:blur(8px)}axm-questionnaire-viewer-popup .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta{display:flex;align-items:center;gap:1rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:.375rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item i{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item span{font-weight:500}axm-questionnaire-viewer-popup .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-popup .__content-wrapper{display:flex;min-height:0px;flex:1 1 0%;overflow:hidden}axm-questionnaire-viewer-popup axm-questionnaire-viewer{display:flex;height:100%;flex:1 1 0%;overflow:hidden}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: AXPStopwatchComponent, selector: \"axp-stopwatch\", inputs: [\"mode\", \"timeLimit\", \"format\", \"autoStart\", \"showControls\", \"value\"], outputs: [\"valueChange\", \"timeUp\"] }, { kind: \"component\", type: AXMQuestionnaireViewerComponent, selector: \"axm-questionnaire-viewer\", inputs: [\"questionnaireId\", \"structure\", \"config\", \"initialAnswers\"], outputs: [\"answersChanged\", \"questionAnswered\"] }, { kind: \"component\", type: AXMPreQuestionnaireContentComponent, selector: \"axm-pre-questionnaire-content\", inputs: [\"content\", \"locale\"] }, { kind: \"component\", type: AXMPostQuestionnaireContentComponent, selector: \"axm-post-questionnaire-content\", inputs: [\"mode\", \"questionsWithAnswers\", \"reviewContext\", \"summaryContent\", \"placeholderValues\", \"locale\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMQuestionnaireViewerStandalonePageComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-questionnaire-viewer-standalone-page', template: `\n <div class=\"__standalone ax-min-h-screen ax-flex ax-flex-col ax-bg-neutral-50\">\n @if (isLoading()) {\n <div class=\"ax-flex ax-items-center ax-justify-center ax-flex-1 ax-min-h-[200px]\">\n <span>{{ '@assessment-management:questionnaires.components.questionnaire-viewer.loading.title' | translate | async }}</span>\n </div>\n } @else if (loadError()) {\n <div class=\"ax-p-6 ax-text-error-600 ax-text-center\">\n {{ loadError() }}\n </div>\n } @else if (structure()) {\n <div class=\"__main-container ax-flex-1 ax-flex ax-flex-col ax-max-w-4xl ax-mx-auto ax-w-full ax-p-4\">\n @if (flowStep() === 'pre') {\n <axm-pre-questionnaire-content\n [content]=\"prePostConfig()?.preContent\"\n ></axm-pre-questionnaire-content>\n } @else if (flowStep() === 'summary') {\n <axm-post-questionnaire-content\n mode=\"summary\"\n [summaryContent]=\"prePostConfig()?.postSummaryContent\"\n [placeholderValues]=\"submitResult()\"\n ></axm-post-questionnaire-content>\n } @else {\n @if (flowStep() === 'review') {\n <axm-post-questionnaire-content\n mode=\"review\"\n [questionsWithAnswers]=\"reviewSnapshot()\"\n [reviewContext]=\"reviewContext()\"\n ></axm-post-questionnaire-content>\n }\n <div\n class=\"__questions ax-flex ax-flex-col ax-min-h-full\"\n [class.ax-invisible]=\"flowStep() === 'review'\"\n [style.position]=\"flowStep() === 'review' ? 'fixed' : null\"\n [style.left]=\"flowStep() === 'review' ? '-9999px' : null\"\n [class.ax-size-0]=\"flowStep() === 'review'\"\n [class.ax-overflow-hidden]=\"flowStep() === 'review'\"\n >\n <div class=\"__header ax-p-4 ax-border-b\">\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <div class=\"ax-flex ax-items-center ax-gap-4 ax-text-sm ax-text-neutral-600\">\n @if (totalQuestionsCount() > 0) {\n <span><i class=\"fa-light fa-list-check ax-text-primary-600\"></i> {{ totalQuestionsCount() }} {{ totalQuestionsCount() === 1 ? 'Question' : 'Questions' }}</span>\n }\n @if (showTimer()) {\n <axp-stopwatch\n [mode]=\"'count-down'\"\n [timeLimit]=\"timerTimeLimit()\"\n [format]=\"timerTimeLimit() && timerTimeLimit()! >= 3600 ? 'hh:mm:ss' : 'mm:ss'\"\n [autoStart]=\"true\"\n [showControls]=\"false\"\n [value]=\"timerElapsed()\"\n (valueChange)=\"viewerViewModel()!.updateTimerElapsed($event)\"\n ></axp-stopwatch>\n }\n </div>\n </div>\n </div>\n <div class=\"__content ax-flex-1 ax-min-h-0\">\n <axm-questionnaire-viewer\n #viewer\n [structure]=\"structure()!\"\n [config]=\"viewerConfig()\"\n [initialAnswers]=\"effectiveInitialAnswers()\"\n ></axm-questionnaire-viewer>\n </div>\n </div>\n }\n </div>\n }\n @if (structure() && (flowStep() === 'pre' || flowStep() === 'questions' || flowStep() === 'review' || flowStep() === 'summary')) {\n <ax-footer class=\"ax-flex ax-items-center ax-justify-between ax-gap-4 ax-py-4 ax-mt-4 ax-px-4 ax-border-t ax-border-neutral-200\">\n <ax-prefix>\n @if (flowStep() === 'questions') {\n <div class=\"ax-text-sm ax-font-mono ax-tabular-nums ax-text-neutral-600\">\n @if (showProgressBar()) {\n {{ answeredQuestionsCount() }} / {{ totalQuestionsCount() }}\n }\n </div>\n }\n </ax-prefix>\n <ax-suffix>\n @if (flowStep() === 'pre') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.start' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n } @else if (flowStep() === 'questions') {\n @if (showNavigationButtons()) {\n <ax-button look=\"solid\" [disabled]=\"!canNavigatePrevious()\" [text]=\"'@general:actions.previous.title' | translate | async\" (onClick)=\"handlePreviousClick()\"></ax-button>\n @if (!isLastStep()) {\n <ax-button look=\"solid\" color=\"primary\" [disabled]=\"!canNavigateNext()\" [text]=\"'@general:actions.next.title' | translate | async\" (onClick)=\"handleNextClick()\"></ax-button>\n }\n }\n @if (isLastStep() && showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.review' | translate | async\" [disabled]=\"!areAllRequiredQuestionsAnswered()\" (onClick)=\"handleReviewClick()\"></ax-button>\n }\n @if (isLastStep() && !showReviewButton()) {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isReadonly() || isSubmitting() || !areAllRequiredQuestionsAnswered()\" (onClick)=\"handleSubmitClick()\"></ax-button>\n }\n } @else if (flowStep() === 'review') {\n <ax-button look=\"outline\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.edit' | translate | async\" (onClick)=\"flowStep.set('questions')\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@general:actions.submit.title' | translate | async\" [disabled]=\"isSubmitting()\" (onClick)=\"handleReviewSubmit()\"></ax-button>\n } @else if (flowStep() === 'summary') {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'@assessment-management:questionnaires.components.questionnaire-viewer.flow.done' | translate | async\" (onClick)=\"handleDone()\"></ax-button>\n }\n </ax-suffix>\n </ax-footer>\n }\n </div>\n `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXPWidgetCoreModule,\n AXPStopwatchComponent,\n AXMQuestionnaireViewerComponent,\n AXMPreQuestionnaireContentComponent,\n AXMPostQuestionnaireContentComponent,\n ], providers: [AXPWidgetCoreService, AXPWidgetCoreContextStore], encapsulation: ViewEncapsulation.None, host: { class: 'axm-questionnaire-viewer-standalone-page' }, styles: [\"axm-questionnaire-viewer-popup{display:flex;height:100%;flex-direction:column;overflow:hidden;max-height:80vh}axm-questionnaire-viewer-popup .__main-container{display:flex;min-height:0px;flex:1 1 0%;flex-direction:column;overflow:hidden}axm-questionnaire-viewer-popup .__header{display:flex;flex-shrink:0;flex-direction:column;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));background-color:#fff;backdrop-filter:blur(8px)}axm-questionnaire-viewer-popup .__header .__header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta{display:flex;align-items:center;gap:1rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item{display:flex;align-items:center;gap:.375rem}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item i{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-600),var(--tw-text-opacity, 1))}axm-questionnaire-viewer-popup .__header .__header-top .__header-meta .__meta-item span{font-weight:500}axm-questionnaire-viewer-popup .__header .__header-top .__header-timer{display:flex;flex-shrink:0;align-items:center}axm-questionnaire-viewer-popup .__content-wrapper{display:flex;min-height:0px;flex:1 1 0%;overflow:hidden}axm-questionnaire-viewer-popup axm-questionnaire-viewer{display:flex;height:100%;flex:1 1 0%;overflow:hidden}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { viewer: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS12aWV3ZXItc3RhbmRhbG9uZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hc3Nlc3NtZW50LW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9xdWVzdGlvbm5haXJlLXZpZXdlci9xdWVzdGlvbm5haXJlLXZpZXdlci1zdGFuZGFsb25lLXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUUvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIsb0JBQW9CLEdBQ3JCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUVOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM3RixPQUFPLEVBQ0wsb0NBQW9DLEdBRXJDLE1BQU0seUNBQXlDLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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WixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsK0JBQStCO3dCQUMvQixtQ0FBbUM7d0JBQ25DLG9DQUFvQztxQkFDckMsYUFDVSxDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixDQUFDLGlCQUU3QyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLDBDQUEwQyxFQUFFOzhGQXFDWSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFN0b3B3YXRjaENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQVhQV2lkZ2V0Q29yZUNvbnRleHRTdG9yZSxcbiAgQVhQV2lkZ2V0Q29yZU1vZHVsZSxcbiAgQVhQV2lkZ2V0Q29yZVNlcnZpY2UsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVCdWlsZGVyVmFsdWUgfSBmcm9tICcuLi9xdWVzdGlvbm5haXJlLWJ1aWxkZXIvcXVlc3Rpb25uYWlyZS1idWlsZGVyLnR5cGVzJztcbmltcG9ydCB7IEFYTVF1ZXN0aW9ubmFpcmVWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtdmlld2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWE1QcmVRdWVzdGlvbm5haXJlQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wcmUtcXVlc3Rpb25uYWlyZS1jb250ZW50JztcbmltcG9ydCB7XG4gIEFYTVBvc3RRdWVzdGlvbm5haXJlQ29udGVudENvbXBvbmVudCxcbiAgdHlwZSBRdWVzdGlvbldpdGhBbnN3ZXIsXG59IGZyb20gJy4vY29tcG9uZW50cy9wb3N0LXF1ZXN0aW9ubmFpcmUtY29udGVudCc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlVmlld2VyQ29uZmlnIH0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLXZpZXdlci50eXBlcyc7XG5pbXBvcnQgeyB0b1ByZVBvc3RDb25maWcgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9xdWVzdGlvbm5haXJlL3F1ZXN0aW9ubmFpcmUudHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBTdW1tYXJ5UGxhY2Vob2xkZXJWYWx1ZXMgfSBmcm9tICcuL3V0aWxzL3ByZS1wb3N0LWNvbnRlbnQudXRpbHMnO1xuaW1wb3J0IHsgQVhNQXNzZXNzbWVudFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW50aXRpZXMvYXNzZXNzbWVudC1zZXNzaW9uL2Fzc2Vzc21lbnQtc2Vzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUFzc2Vzc21lbnRDYXNlU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL2Fzc2Vzc21lbnQtY2FzZS9hc3Nlc3NtZW50LWNhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1RdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgVHlwZXMgICAtLS0tXG5cbnR5cGUgRmxvd1N0ZXAgPSAncHJlJyB8ICdxdWVzdGlvbnMnIHwgJ3JldmlldycgfCAnc3VtbWFyeSc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCAgIC0tLS1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXN0YW5kYWxvbmUtcGFnZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIl9fc3RhbmRhbG9uZSBheC1taW4taC1zY3JlZW4gYXgtZmxleCBheC1mbGV4LWNvbCBheC1iZy1uZXV0cmFsLTUwXCI+XG4gICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1mbGV4LTEgYXgtbWluLWgtWzIwMHB4XVwiPlxuICAgICAgICAgIDxzcGFuPnt7ICdAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIubG9hZGluZy50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChsb2FkRXJyb3IoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcC02IGF4LXRleHQtZXJyb3ItNjAwIGF4LXRleHQtY2VudGVyXCI+XG4gICAgICAgICAge3sgbG9hZEVycm9yKCkgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChzdHJ1Y3R1cmUoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiX19tYWluLWNvbnRhaW5lciBheC1mbGV4LTEgYXgtZmxleCBheC1mbGV4LWNvbCBheC1tYXgtdy00eGwgYXgtbXgtYXV0byBheC13LWZ1bGwgYXgtcC00XCI+XG4gICAgICAgICAgQGlmIChmbG93U3RlcCgpID09PSAncHJlJykge1xuICAgICAgICAgICAgPGF4bS1wcmUtcXVlc3Rpb25uYWlyZS1jb250ZW50XG4gICAgICAgICAgICAgIFtjb250ZW50XT1cInByZVBvc3RDb25maWcoKT8ucHJlQ29udGVudFwiXG4gICAgICAgICAgICA+PC9heG0tcHJlLXF1ZXN0aW9ubmFpcmUtY29udGVudD5cbiAgICAgICAgICB9IEBlbHNlIGlmIChmbG93U3RlcCgpID09PSAnc3VtbWFyeScpIHtcbiAgICAgICAgICAgIDxheG0tcG9zdC1xdWVzdGlvbm5haXJlLWNvbnRlbnRcbiAgICAgICAgICAgICAgbW9kZT1cInN1bW1hcnlcIlxuICAgICAgICAgICAgICBbc3VtbWFyeUNvbnRlbnRdPVwicHJlUG9zdENvbmZpZygpPy5wb3N0U3VtbWFyeUNvbnRlbnRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJWYWx1ZXNdPVwic3VibWl0UmVzdWx0KClcIlxuICAgICAgICAgICAgPjwvYXhtLXBvc3QtcXVlc3Rpb25uYWlyZS1jb250ZW50PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChmbG93U3RlcCgpID09PSAncmV2aWV3Jykge1xuICAgICAgICAgICAgICA8YXhtLXBvc3QtcXVlc3Rpb25uYWlyZS1jb250ZW50XG4gICAgICAgICAgICAgICAgbW9kZT1cInJldmlld1wiXG4gICAgICAgICAgICAgICAgW3F1ZXN0aW9uc1dpdGhBbnN3ZXJzXT1cInJldmlld1NuYXBzaG90KClcIlxuICAgICAgICAgICAgICAgIFtyZXZpZXdDb250ZXh0XT1cInJldmlld0NvbnRleHQoKVwiXG4gICAgICAgICAgICAgID48L2F4bS1wb3N0LXF1ZXN0aW9ubmFpcmUtY29udGVudD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJfX3F1ZXN0aW9ucyBheC1mbGV4IGF4LWZsZXgtY29sIGF4LW1pbi1oLWZ1bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtaW52aXNpYmxlXT1cImZsb3dTdGVwKCkgPT09ICdyZXZpZXcnXCJcbiAgICAgICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cImZsb3dTdGVwKCkgPT09ICdyZXZpZXcnID8gJ2ZpeGVkJyA6IG51bGxcIlxuICAgICAgICAgICAgICBbc3R5bGUubGVmdF09XCJmbG93U3RlcCgpID09PSAncmV2aWV3JyA/ICctOTk5OXB4JyA6IG51bGxcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc2l6ZS0wXT1cImZsb3dTdGVwKCkgPT09ICdyZXZpZXcnXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmF4LW92ZXJmbG93LWhpZGRlbl09XCJmbG93U3RlcCgpID09PSAncmV2aWV3J1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2hlYWRlciBheC1wLTQgYXgtYm9yZGVyLWJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTQgYXgtdGV4dC1zbSBheC10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodG90YWxRdWVzdGlvbnNDb3VudCgpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtbGlzdC1jaGVjayBheC10ZXh0LXByaW1hcnktNjAwXCI+PC9pPiB7eyB0b3RhbFF1ZXN0aW9uc0NvdW50KCkgfX0ge3sgdG90YWxRdWVzdGlvbnNDb3VudCgpID09PSAxID8gJ1F1ZXN0aW9uJyA6ICdRdWVzdGlvbnMnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1RpbWVyKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YXhwLXN0b3B3YXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwiJ2NvdW50LWRvd24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lTGltaXRdPVwidGltZXJUaW1lTGltaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cInRpbWVyVGltZUxpbWl0KCkgJiYgdGltZXJUaW1lTGltaXQoKSEgPj0gMzYwMCA/ICdoaDptbTpzcycgOiAnbW06c3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvU3RhcnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NvbnRyb2xzXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0aW1lckVsYXBzZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmlld2VyVmlld01vZGVsKCkhLnVwZGF0ZVRpbWVyRWxhcHNlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9heHAtc3RvcHdhdGNoPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJfX2NvbnRlbnQgYXgtZmxleC0xIGF4LW1pbi1oLTBcIj5cbiAgICAgICAgICAgICAgICA8YXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyXG4gICAgICAgICAgICAgICAgICAjdmlld2VyXG4gICAgICAgICAgICAgICAgICBbc3RydWN0dXJlXT1cInN0cnVjdHVyZSgpIVwiXG4gICAgICAgICAgICAgICAgICBbY29uZmlnXT1cInZpZXdlckNvbmZpZygpXCJcbiAgICAgICAgICAgICAgICAgIFtpbml0aWFsQW5zd2Vyc109XCJlZmZlY3RpdmVJbml0aWFsQW5zd2VycygpXCJcbiAgICAgICAgICAgICAgICA+PC9heG0tcXVlc3Rpb25uYWlyZS12aWV3ZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAoc3RydWN0dXJlKCkgJiYgKGZsb3dTdGVwKCkgPT09ICdwcmUnIHx8IGZsb3dTdGVwKCkgPT09ICdxdWVzdGlvbnMnIHx8IGZsb3dTdGVwKCkgPT09ICdyZXZpZXcnIHx8IGZsb3dTdGVwKCkgPT09ICdzdW1tYXJ5JykpIHtcbiAgICAgICAgPGF4LWZvb3RlciBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYmV0d2VlbiBheC1nYXAtNCBheC1weS00IGF4LW10LTQgYXgtcHgtNCBheC1ib3JkZXItdCBheC1ib3JkZXItbmV1dHJhbC0yMDBcIj5cbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgQGlmIChmbG93U3RlcCgpID09PSAncXVlc3Rpb25zJykge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1zbSBheC1mb250LW1vbm8gYXgtdGFidWxhci1udW1zIGF4LXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dQcm9ncmVzc0JhcigpKSB7XG4gICAgICAgICAgICAgICAgICB7eyBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50KCkgfX0gLyB7eyB0b3RhbFF1ZXN0aW9uc0NvdW50KCkgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICBAaWYgKGZsb3dTdGVwKCkgPT09ICdwcmUnKSB7XG4gICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cInNvbGlkXCIgY29sb3I9XCJwcmltYXJ5XCIgW3RleHRdPVwiJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5mbG93LnN0YXJ0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKG9uQ2xpY2spPVwiZmxvd1N0ZXAuc2V0KCdxdWVzdGlvbnMnKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZmxvd1N0ZXAoKSA9PT0gJ3F1ZXN0aW9ucycpIHtcbiAgICAgICAgICAgICAgQGlmIChzaG93TmF2aWdhdGlvbkJ1dHRvbnMoKSkge1xuICAgICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cInNvbGlkXCIgW2Rpc2FibGVkXT1cIiFjYW5OYXZpZ2F0ZVByZXZpb3VzKClcIiBbdGV4dF09XCInQGdlbmVyYWw6YWN0aW9ucy5wcmV2aW91cy50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiIChvbkNsaWNrKT1cImhhbmRsZVByZXZpb3VzQ2xpY2soKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICAgIEBpZiAoIWlzTGFzdFN0ZXAoKSkge1xuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiIWNhbk5hdmlnYXRlTmV4dCgpXCIgW3RleHRdPVwiJ0BnZW5lcmFsOmFjdGlvbnMubmV4dC50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiIChvbkNsaWNrKT1cImhhbmRsZU5leHRDbGljaygpXCI+PC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXNMYXN0U3RlcCgpICYmIHNob3dSZXZpZXdCdXR0b24oKSkge1xuICAgICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cInNvbGlkXCIgY29sb3I9XCJwcmltYXJ5XCIgW3RleHRdPVwiJ0Bhc3Nlc3NtZW50LW1hbmFnZW1lbnQ6cXVlc3Rpb25uYWlyZXMuY29tcG9uZW50cy5xdWVzdGlvbm5haXJlLXZpZXdlci5mbG93LnJldmlldycgfCB0cmFuc2xhdGUgfCBhc3luY1wiIFtkaXNhYmxlZF09XCIhYXJlQWxsUmVxdWlyZWRRdWVzdGlvbnNBbnN3ZXJlZCgpXCIgKG9uQ2xpY2spPVwiaGFuZGxlUmV2aWV3Q2xpY2soKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXNMYXN0U3RlcCgpICYmICFzaG93UmV2aWV3QnV0dG9uKCkpIHtcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIFt0ZXh0XT1cIidAZ2VuZXJhbDphY3Rpb25zLnN1Ym1pdC50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiIFtkaXNhYmxlZF09XCJpc1JlYWRvbmx5KCkgfHwgaXNTdWJtaXR0aW5nKCkgfHwgIWFyZUFsbFJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQoKVwiIChvbkNsaWNrKT1cImhhbmRsZVN1Ym1pdENsaWNrKClcIj48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSBpZiAoZmxvd1N0ZXAoKSA9PT0gJ3JldmlldycpIHtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwib3V0bGluZVwiIFt0ZXh0XT1cIidAYXNzZXNzbWVudC1tYW5hZ2VtZW50OnF1ZXN0aW9ubmFpcmVzLmNvbXBvbmVudHMucXVlc3Rpb25uYWlyZS12aWV3ZXIuZmxvdy5lZGl0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKG9uQ2xpY2spPVwiZmxvd1N0ZXAuc2V0KCdxdWVzdGlvbnMnKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwicHJpbWFyeVwiIFt0ZXh0XT1cIidAZ2VuZXJhbDphY3Rpb25zLnN1Ym1pdC50aXRsZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiIFtkaXNhYmxlZF09XCJpc1N1Ym1pdHRpbmcoKVwiIChvbkNsaWNrKT1cImhhbmRsZVJldmlld1N1Ym1pdCgpXCI+PC9heC1idXR0b24+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChmbG93U3RlcCgpID09PSAnc3VtbWFyeScpIHtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiBbdGV4dF09XCInQGFzc2Vzc21lbnQtbWFuYWdlbWVudDpxdWVzdGlvbm5haXJlcy5jb21wb25lbnRzLnF1ZXN0aW9ubmFpcmUtdmlld2VyLmZsb3cuZG9uZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiIChvbkNsaWNrKT1cImhhbmRsZURvbmUoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgICA8L2F4LWZvb3Rlcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFBXaWRnZXRDb3JlTW9kdWxlLFxuICAgIEFYUFN0b3B3YXRjaENvbXBvbmVudCxcbiAgICBBWE1RdWVzdGlvbm5haXJlVmlld2VyQ29tcG9uZW50LFxuICAgIEFYTVByZVF1ZXN0aW9ubmFpcmVDb250ZW50Q29tcG9uZW50LFxuICAgIEFYTVBvc3RRdWVzdGlvbm5haXJlQ29udGVudENvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbQVhQV2lkZ2V0Q29yZVNlcnZpY2UsIEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmVdLFxuICBzdHlsZVVybDogJy4vcXVlc3Rpb25uYWlyZS12aWV3ZXItcG9wdXAuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7IGNsYXNzOiAnYXhtLXF1ZXN0aW9ubmFpcmUtdmlld2VyLXN0YW5kYWxvbmUtcGFnZScgfSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNUXVlc3Rpb25uYWlyZVZpZXdlclN0YW5kYWxvbmVQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAmIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWE1Bc3Nlc3NtZW50U2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNhc2VTZXJ2aWNlID0gaW5qZWN0KEFYTUFzc2Vzc21lbnRDYXNlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcXVlc3Rpb25uYWlyZVNlcnZpY2UgPSBpbmplY3QoQVhNUXVlc3Rpb25uYWlyZVNlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0cnVjdHVyZSA9IHNpZ25hbDxRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVzdGlvbm5haXJlID0gc2lnbmFsPGFueT4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpbml0aWFsQW5zd2VycyA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih7fSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwcmVQb3N0Q29uZmlnID0gc2lnbmFsPFJldHVyblR5cGU8dHlwZW9mIHRvUHJlUG9zdENvbmZpZz4+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmlld2VyQ29uZmlnID0gc2lnbmFsPFF1ZXN0aW9ubmFpcmVWaWV3ZXJDb25maWcgfCB1bmRlZmluZWQ+KHsgcmVhZG9ubHk6IGZhbHNlIH0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZEVycm9yID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNTdWJtaXR0aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmxvd1N0ZXAgPSBzaWduYWw8Rmxvd1N0ZXA+KCdxdWVzdGlvbnMnKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJldmlld1NuYXBzaG90ID0gc2lnbmFsPFF1ZXN0aW9uV2l0aEFuc3dlcltdPihbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSByZXZpZXdDb250ZXh0ID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1Ym1pdFJlc3VsdCA9IHNpZ25hbDxTdW1tYXJ5UGxhY2Vob2xkZXJWYWx1ZXMgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbk5hdmlnYXRlUHJldmlvdXMgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuTmF2aWdhdGVOZXh0ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dOYXZpZ2F0aW9uQnV0dG9ucyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc0xhc3RTdGVwID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFyZUFsbFJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgVmlldyBSZWZlcmVuY2VzICAgLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSB2aWV3ZXIgPSB2aWV3Q2hpbGQ8QVhNUXVlc3Rpb25uYWlyZVZpZXdlckNvbXBvbmVudD4oJ3ZpZXdlcicpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tcHV0ZWQgICAtLS0tXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpZXdlclZpZXdNb2RlbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlld2VyKCk/LnZpZXdtb2RlbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b3RhbFF1ZXN0aW9uc0NvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXJWaWV3TW9kZWwoKT8udG90YWxRdWVzdGlvbnNDb3VudCgpID8/IDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1RpbWVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXJWaWV3TW9kZWwoKT8uc2hvd1RpbWVyKCkgPz8gZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZXJUaW1lTGltaXQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpZXdlclZpZXdNb2RlbCgpPy50aW1lclRpbWVMaW1pdCgpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWVyRWxhcHNlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlld2VyVmlld01vZGVsKCk/LnRpbWVyRWxhcHNlZCgpID8/IDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1Byb2dyZXNzQmFyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy52aWV3ZXJWaWV3TW9kZWwoKT8uc2hvd1Byb2dyZXNzQmFyKCkgPz8gZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYW5zd2VyZWRRdWVzdGlvbnNDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudmlld2VyVmlld01vZGVsKCk/LmFuc3dlcmVkUXVlc3Rpb25zQ291bnQoKSA/PyAwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzUmVhZG9ubHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpZXdlckNvbmZpZygpPy5yZWFkb25seSA/PyBmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dSZXZpZXdCdXR0b24gPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmlzTGFzdFN0ZXAoKSAmJiAodGhpcy5wcmVQb3N0Q29uZmlnKCk/LnBvc3RSZXZpZXdFbmFibGVkID8/IGZhbHNlKSAmJiB0aGlzLmZsb3dTdGVwKCkgPT09ICdxdWVzdGlvbnMnXG4gICk7XG5cbiAgLyoqIFVzZSBhbnN3ZXJzIGZyb20gcmV2aWV3IGNvbnRleHQgd2hlbiByZXR1cm5pbmcgZnJvbSByZXZpZXc7IG90aGVyd2lzZSB1c2UgaW5pdGlhbCBhbnN3ZXJzLiAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWZmZWN0aXZlSW5pdGlhbEFuc3dlcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5yZXZpZXdDb250ZXh0KCk7XG4gICAgaWYgKCFjdHgpIHJldHVybiB0aGlzLmluaXRpYWxBbnN3ZXJzKCk7XG4gICAgcmV0dXJuIChjdHggYXMgeyBhbnN3ZXJzPzogUmVjb3JkPHN0cmluZywgYW55PiB9KS5hbnN3ZXJzID8/IGN0eDtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgICAtLS0tXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHYgPSB0aGlzLnZpZXdlcigpO1xuICAgICAgaWYgKHYpIHtcbiAgICAgICAgY29uc3Qgdm0gPSB2LnZpZXdtb2RlbDtcbiAgICAgICAgdGhpcy5jYW5OYXZpZ2F0ZVByZXZpb3VzLnNldCh2bS5jYW5OYXZpZ2F0ZVByZXZpb3VzKCkpO1xuICAgICAgICB0aGlzLmNhbk5hdmlnYXRlTmV4dC5zZXQodm0uY2FuTmF2aWdhdGVOZXh0KCkpO1xuICAgICAgICBjb25zdCB2aWV3TW9kZSA9IHYudmlld01vZGU7XG4gICAgICAgIHRoaXMuc2hvd05hdmlnYXRpb25CdXR0b25zLnNldCh2aWV3TW9kZSA9PT0gJ3BhZ2UtcGVyLWdyb3VwJyB8fCB2aWV3TW9kZSA9PT0gJ3BhZ2UtcGVyLXF1ZXN0aW9uJyB8fCB2aWV3TW9kZSA9PT0gJ3NpZGUtbWVudScpO1xuICAgICAgICB0aGlzLmlzTGFzdFN0ZXAuc2V0KHYuaXNMYXN0U3RlcCk7XG4gICAgICAgIHRoaXMuYXJlQWxsUmVxdWlyZWRRdWVzdGlvbnNBbnN3ZXJlZC5zZXQodi5hcmVBbGxSZXF1aXJlZFF1ZXN0aW9uc0Fuc3dlcmVkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRGF0YSBMb2FkaW5nICAgLS0tLVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZERhdGEoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ3Nlc3Npb25JZCcpID8/IHRoaXMucm91dGUucGFyZW50Py5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ3Nlc3Npb25JZCcpO1xuICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICB0aGlzLmxvYWRFcnJvci5zZXQoJ1Nlc3Npb24gSUQgaXMgcmVxdWlyZWQnKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMubG9hZEVycm9yLnNldChudWxsKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgdGhpcy5zZXNzaW9uU2VydmljZS5nZXRPbmUoc2Vzc2lvbklkKTtcbiAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICB0aGlzLmxvYWRFcnJvci5zZXQoJ1Nlc3Npb24gbm90IGZvdW5kJyk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY2FzZUlkID0gKHNlc3Npb24gYXMgYW55KS5jYXNlSWQ7XG4gICAgICBjb25zdCBhc3Nlc3NtZW50Q2FzZSA9IGF3YWl0IHRoaXMuY2FzZVNlcnZpY2UuZ2V0T25lKGNhc2VJZCk7XG4gICAgICBpZiAoIWFzc2Vzc21lbnRDYXNlKSB7XG4gICAgICAgIHRoaXMubG9hZEVycm9yLnNldCgnQXNzZXNzbWVudCBjYXNlIG5vdCBmb3VuZCcpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXN0aW9ubmFpcmUgPSBhd2FpdCB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldE9uZSgoYXNzZXNzbWVudENhc2UgYXMgYW55KS5xdWVzdGlvbm5haXJlSWQpO1xuICAgICAgaWYgKCFxdWVzdGlvbm5haXJlPy5zdHJ1Y3R1cmU/LnNlY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sb2FkRXJyb3Iuc2V0KCdRdWVzdGlvbm5haXJlIG9yIHN0cnVjdHVyZSBub3QgZm91bmQnKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhbnN3ZXJzID0gc2Vzc2lvbi5hbnN3ZXJzID8/IHt9O1xuICAgICAgY29uc3QgY2ZnID0gdG9QcmVQb3N0Q29uZmlnKHF1ZXN0aW9ubmFpcmUpO1xuICAgICAgdGhpcy5xdWVzdGlvbm5haXJlLnNldChxdWVzdGlvbm5haXJlKTtcbiAgICAgIHRoaXMuc3RydWN0dXJlLnNldChxdWVzdGlvbm5haXJlLnN0cnVjdHVyZSBhcyBRdWVzdGlvbm5haXJlQnVpbGRlclZhbHVlKTtcbiAgICAgIHRoaXMuaW5pdGlhbEFuc3dlcnMuc2V0KGFuc3dlcnMpO1xuICAgICAgdGhpcy5wcmVQb3N0Q29uZmlnLnNldChjZmcpO1xuICAgICAgdGhpcy5mbG93U3RlcC5zZXQoY2ZnPy5wcmVFbmFibGVkID09PSB0cnVlID8gJ3ByZScgOiAncXVlc3Rpb25zJyk7XG4gICAgICB0aGlzLnZpZXdlckNvbmZpZy5zZXQoeyByZWFkb25seTogZmFsc2UgfSk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgIHRoaXMubG9hZEVycm9yLnNldChlcnI/Lm1lc3NhZ2UgPz8gJ0ZhaWxlZCB0byBsb2FkIHF1ZXN0aW9ubmFpcmUnKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFN1Ym1pdCBIYW5kbGVyICAgLS0tLVxuXG4gIHByaXZhdGUgYXN5bmMgc2F2ZVNlc3Npb25BbmRHZXRTdW1tYXJ5KGFuc3dlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPFN1bW1hcnlQbGFjZWhvbGRlclZhbHVlcyB8IG51bGw+IHtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnc2Vzc2lvbklkJykgPz8gdGhpcy5yb3V0ZS5wYXJlbnQ/LnNuYXBzaG90LnBhcmFtTWFwLmdldCgnc2Vzc2lvbklkJyk7XG4gICAgY29uc3Qgc3RydWN0dXJlVmFsID0gdGhpcy5zdHJ1Y3R1cmUoKTtcbiAgICBjb25zdCBxID0gdGhpcy5xdWVzdGlvbm5haXJlKCk7XG4gICAgaWYgKCFzZXNzaW9uSWQgfHwgIXN0cnVjdHVyZVZhbCB8fCAhcSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCB7IGFuc3dlcmVkUXVlc3Rpb25zQ291bnQsIHByb2dyZXNzUGVyY2VudGFnZSB9ID0gdGhpcy5jYWxjdWxhdGVQcm9ncmVzcyhzdHJ1Y3R1cmVWYWwsIGFuc3dlcnMpO1xuICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLmdldE9uZShzZXNzaW9uSWQpO1xuICAgIGlmIChzZXNzaW9uKSB7XG4gICAgICBhd2FpdCB0aGlzLnNlc3Npb25TZXJ2aWNlLnVwZGF0ZU9uZShzZXNzaW9uSWQsIHtcbiAgICAgICAgLi4uc2Vzc2lvbixcbiAgICAgICAgYW5zd2VycyxcbiAgICAgICAgcHJvZ3Jlc3NQZXJjZW50YWdlLFxuICAgICAgICBhbnN3ZXJlZFF1ZXN0aW9uc0NvdW50LFxuICAgICAgICBsYXN0U2F2ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIH0gYXMgYW55KTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXNzaW5nU2NvcmUgPSBxLnBhc3NpbmdTY29yZTtcbiAgICBjb25zdCBwYXNzRmFpbCA9IHBhc3NpbmdTY29yZSAhPSBudWxsID8gKHByb2dyZXNzUGVyY2VudGFnZSA+PSBwYXNzaW5nU2NvcmUgPyAnUGFzcycgOiAnRmFpbCcpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRvdGFsUXVlc3Rpb25zID0gc3RydWN0dXJlVmFsLnNlY3Rpb25zPy5yZWR1Y2UoKHMsIHNlYykgPT4gcyArIChzZWMuaXRlbXM/Lmxlbmd0aCA/PyAwKSwgMCkgPz8gMDtcbiAgICByZXR1cm4geyBzY29yZTogcHJvZ3Jlc3NQZXJjZW50YWdlLCBwYXNzRmFpbCwgdG90YWxRdWVzdGlvbnMsIGFuc3dlcmVkQ291bnQ6IGFuc3dlcmVkUXVlc3Rpb25zQ291bnQgfTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgSGVscGVycyAgIC0tLS1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVByb2dyZXNzKFxuICAgIHN0cnVjdHVyZTogUXVlc3Rpb25uYWlyZUJ1aWxkZXJWYWx1ZSxcbiAgICBhbnN3ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICApOiB7IGFuc3dlcmVkUXVlc3Rpb25zQ291bnQ6IG51bWJlcjsgcHJvZ3Jlc3NQZXJjZW50YWdlOiBudW1iZXIgfSB7XG4gICAgaWYgKCFzdHJ1Y3R1cmU/LnNlY3Rpb25zPy5sZW5ndGgpIHJldHVybiB7IGFuc3dlcmVkUXVlc3Rpb25zQ291bnQ6IDAsIHByb2dyZXNzUGVyY2VudGFnZTogMCB9O1xuICAgIGxldCBhbnN3ZXJlZCA9IDA7XG4gICAgbGV0IHRvdGFsID0gMDtcbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc3RydWN0dXJlLnNlY3Rpb25zKSB7XG4gICAgICBpZiAoIXNlY3Rpb24uaXRlbXM/Lmxlbmd0aCkgY29udGludWU7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc2VjdGlvbi5pdGVtcykge1xuICAgICAgICB0b3RhbCsrO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGl0ZW0uaWQgPyBhbnN3ZXJzW2l0ZW0uaWRdIDogbnVsbDtcbiAgICAgICAgY29uc3QgaXNFbXB0eSA9XG4gICAgICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgICB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAgICAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKTtcbiAgICAgICAgaWYgKCFpc0VtcHR5KSBhbnN3ZXJlZCsrO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBwcm9ncmVzc1BlcmNlbnRhZ2UgPSB0b3RhbCA+IDAgPyBNYXRoLnJvdW5kKChhbnN3ZXJlZCAvIHRvdGFsKSAqIDEwMCkgOiAwO1xuICAgIHJldHVybiB7IGFuc3dlcmVkUXVlc3Rpb25zQ291bnQ6IGFuc3dlcmVkLCBwcm9ncmVzc1BlcmNlbnRhZ2UgfTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJldmlld0NsaWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHZpZXdlciA9IHRoaXMudmlld2VyKCk7XG4gICAgY29uc3QgaXRlbXMgPSB2aWV3ZXI/LmdldFF1ZXN0aW9uc1dpdGhBbnN3ZXJzKCkgPz8gW107XG4gICAgY29uc3QgY29udGV4dCA9IHZpZXdlcj8uZ2V0UmV2aWV3Q29udGV4dCgpID8/IG51bGw7XG4gICAgdGhpcy5yZXZpZXdTbmFwc2hvdC5zZXQoaXRlbXMubWFwKChxKSA9PiAoeyBxdWVzdGlvbklkOiBxLnF1ZXN0aW9uSWQsIHRpdGxlOiBxLnRpdGxlLCBhbnN3ZXI6IHEuYW5zd2VyLCBxdWVzdGlvbjogcS5xdWVzdGlvbiB9KSkpO1xuICAgIHRoaXMucmV2aWV3Q29udGV4dC5zZXQoY29udGV4dCk7XG4gICAgdGhpcy5mbG93U3RlcC5zZXQoJ3JldmlldycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVJldmlld1N1Ym1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2aWV3ZXIgPSB0aGlzLnZpZXdlcigpO1xuICAgIGlmICghdmlld2VyKSByZXR1cm47XG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2aWV3ZXIuc3VibWl0KCk7XG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MgJiYgcmVzdWx0LmFuc3dlcnMpIHtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IGF3YWl0IHRoaXMuc2F2ZVNlc3Npb25BbmRHZXRTdW1tYXJ5KHJlc3VsdC5hbnN3ZXJzKTtcbiAgICAgICAgdGhpcy5zdWJtaXRSZXN1bHQuc2V0KHN1bW1hcnkgPz8gbnVsbCk7XG4gICAgICAgIGlmICgodGhpcy5wcmVQb3N0Q29uZmlnKCk/LnBvc3RTdW1tYXJ5RW5hYmxlZCA/PyBmYWxzZSkgJiYgc3VtbWFyeSkge1xuICAgICAgICAgIHRoaXMuZmxvd1N0ZXAuc2V0KCdzdW1tYXJ5Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVEb25lKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlUHJldmlvdXNDbGljaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnZpZXdlcigpPy5uYXZpZ2F0ZVByZXZpb3VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlTmV4dENsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudmlld2VyKCk/Lm5hdmlnYXRlTmV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVN1Ym1pdENsaWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZpZXdlciA9IHRoaXMudmlld2VyKCk7XG4gICAgaWYgKCF2aWV3ZXIpIHJldHVybjtcbiAgICB0aGlzLmlzU3VibWl0dGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZpZXdlci5zdWJtaXQoKTtcbiAgICAgIGlmIChyZXN1bHQuc3VjY2VzcyAmJiByZXN1bHQuYW5zd2Vycykge1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gYXdhaXQgdGhpcy5zYXZlU2Vzc2lvbkFuZEdldFN1bW1hcnkocmVzdWx0LmFuc3dlcnMpO1xuICAgICAgICB0aGlzLnN1Ym1pdFJlc3VsdC5zZXQoc3VtbWFyeSA/PyBudWxsKTtcbiAgICAgICAgaWYgKHRoaXMucHJlUG9zdENvbmZpZygpPy5wb3N0U3VtbWFyeUVuYWJsZWQgJiYgc3VtbWFyeSkge1xuICAgICAgICAgIHRoaXMuZmxvd1N0ZXAuc2V0KCdzdW1tYXJ5Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVEb25lKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRG9uZSgpOiB2b2lkIHtcbiAgICAvLyBTdGFuZGFsb25lOiBjb3VsZCBuYXZpZ2F0ZSBhd2F5IG9yIHNob3cgbWVzc2FnZVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbi8vI2VuZHJlZ2lvblxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtYXNzZXNzbWVudC1tYW5hZ2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Fzc2Vzc21lbnQtbWFuYWdlbWVudC9zcmMvYWNvcmV4LW1vZHVsZXMtYXNzZXNzbWVudC1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i2","i4","i5","i3"],"mappings":"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IAAI,EAAEC,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;AACxsI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2CAA2C,EAAE,UAAU,EAAE,CAAC;AACtJ,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,yCAAyC,EAAE,QAAQ,EAAE;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,CAAC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE;AACjE,wBAAwB,YAAY;AACpC,wBAAwB,uCAAuC;AAC/D,wBAAwB,YAAY;AACpC,wBAAwB,aAAa;AACrC,wBAAwB,cAAc;AACtC,wBAA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B,oBAAoB,QAAQ,EAAE,+BAA+B;AAC7D,oBAAoB,QAAQ,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH,oBAAoB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AACnE,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,YAAY;AACpC,wBAAwB,mBAAmB;AAC3C,wBAAwB,cAAc;AACtC,wBAAwB,sBAAsB;AAC9C,wBAAwB,4BAA4B;AACpD,wBAAwB,qBAAqB;AAC7C,wBAAwB,+BAA+B;AACvD,wBAAwB,mCAAmC;AAC3D,wBAAwB,oCAAoC;AAC5D,qBAAqB;AACrB,oBAAoB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;AACjH,oBAAoB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACzD,oBAAoB,IAAI,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE;AACpE,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAA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"}
|