@acorex/modules 20.0.25 → 20.1.0
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/auth/index.d.ts +57 -4
- package/common/index.d.ts +8 -1
- package/data-management/index.d.ts +401 -3
- package/fesm2022/{acorex-modules-application-management-module-designer.component-BvuZJdwg.mjs → acorex-modules-application-management-module-designer.component-udoks-Ef.mjs} +17 -17
- package/fesm2022/acorex-modules-application-management-module-designer.component-udoks-Ef.mjs.map +1 -0
- package/fesm2022/acorex-modules-application-management.mjs +53 -53
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DqsEqXec.mjs → acorex-modules-auth-acorex-modules-auth-5TIjp5UG.mjs} +182 -123
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-5TIjp5UG.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-D0pKNUts.mjs → acorex-modules-auth-app-chooser.component-B0w1Xzx7.mjs} +6 -6
- package/fesm2022/{acorex-modules-auth-app-chooser.component-D0pKNUts.mjs.map → acorex-modules-auth-app-chooser.component-B0w1Xzx7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-blank.layout-BwVSMaFI.mjs → acorex-modules-auth-blank.layout-C8NsXB9K.mjs} +5 -5
- package/fesm2022/{acorex-modules-auth-blank.layout-BwVSMaFI.mjs.map → acorex-modules-auth-blank.layout-C8NsXB9K.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-Dky49ylL.mjs → acorex-modules-auth-login.module-B8sVVZHV.mjs} +8 -8
- package/fesm2022/{acorex-modules-auth-login.module-Dky49ylL.mjs.map → acorex-modules-auth-login.module-B8sVVZHV.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-DXfRjCLL.mjs → acorex-modules-auth-master.layout-CMKxj1Qo.mjs} +7 -7
- package/fesm2022/{acorex-modules-auth-master.layout-DXfRjCLL.mjs.map → acorex-modules-auth-master.layout-CMKxj1Qo.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-oauth-callback.component-C95YLpI_.mjs +101 -0
- package/fesm2022/acorex-modules-auth-oauth-callback.component-C95YLpI_.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-password.component-oH5OFHqQ.mjs → acorex-modules-auth-password.component-DH0qKunk.mjs} +9 -9
- package/fesm2022/{acorex-modules-auth-password.component-oH5OFHqQ.mjs.map → acorex-modules-auth-password.component-DH0qKunk.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-password.component-Du0EBIiw.mjs +239 -0
- package/fesm2022/acorex-modules-auth-password.component-Du0EBIiw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-DAiaTm4Y.mjs → acorex-modules-auth-routes-Q9zaIiBS.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-DAiaTm4Y.mjs.map → acorex-modules-auth-routes-Q9zaIiBS.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-settings.provider-CM-T8nbI.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-3-FFY4tI.mjs → acorex-modules-auth-tenant-chooser.component-wp7OOLsH.mjs} +16 -13
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-wp7OOLsH.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-UUmdX7IM.mjs → acorex-modules-auth-two-factor-code.component-DSWd06bn.mjs} +7 -7
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-UUmdX7IM.mjs.map → acorex-modules-auth-two-factor-code.component-DSWd06bn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-Coe4NNUW.mjs → acorex-modules-auth-two-factor.module-oRixkeAn.mjs} +7 -7
- package/fesm2022/{acorex-modules-auth-two-factor.module-Coe4NNUW.mjs.map → acorex-modules-auth-two-factor.module-oRixkeAn.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-user-sessions.component-8wwWI0cQ.mjs +135 -0
- package/fesm2022/acorex-modules-auth-user-sessions.component-8wwWI0cQ.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-calendar-management.mjs +19 -19
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-common-acorex-modules-common-DQESb8jf.mjs +1667 -0
- package/fesm2022/acorex-modules-common-acorex-modules-common-DQESb8jf.mjs.map +1 -0
- package/fesm2022/{acorex-modules-common-search-popup.component-B_bJ0ZRM.mjs → acorex-modules-common-search-popup.component-CpFvcrxw.mjs} +13 -13
- package/fesm2022/acorex-modules-common-search-popup.component-CpFvcrxw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-settings.provider-intHn3XI.mjs → acorex-modules-common-settings.provider-ha75F6g5.mjs} +2 -3
- package/fesm2022/acorex-modules-common-settings.provider-ha75F6g5.mjs.map +1 -0
- package/fesm2022/{acorex-modules-common-timeline-version-history-popup.component-D48aDOVu.mjs → acorex-modules-common-timeline-version-history-popup.component-D_6STmWm.mjs} +11 -11
- package/fesm2022/acorex-modules-common-timeline-version-history-popup.component-D_6STmWm.mjs.map +1 -0
- package/fesm2022/acorex-modules-common.mjs +1 -1199
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-contact-management-acorex-modules-contact-management-DVjMlS0K.mjs → acorex-modules-contact-management-acorex-modules-contact-management-CM72FkGM.mjs} +47 -222
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-CM72FkGM.mjs.map +1 -0
- package/fesm2022/{acorex-modules-contact-management-address-type.entity-CWIBwWfZ.mjs → acorex-modules-contact-management-address-type.entity-CW0fx3v8.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-address-type.entity-CWIBwWfZ.mjs.map → acorex-modules-contact-management-address-type.entity-CW0fx3v8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-contact-address.entity-DO6GizbS.mjs → acorex-modules-contact-management-contact-address.entity-D5OGWsSx.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-contact-address.entity-DO6GizbS.mjs.map → acorex-modules-contact-management-contact-address.entity-D5OGWsSx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-contact-method.entity-tEtMSV4f.mjs → acorex-modules-contact-management-contact-method.entity-Cpdd-Xwb.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-contact-method.entity-tEtMSV4f.mjs.map → acorex-modules-contact-management-contact-method.entity-Cpdd-Xwb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-contact-relationship.entity-C-B5aOoq.mjs → acorex-modules-contact-management-contact-relationship.entity-B_gQ7mEo.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-contact-relationship.entity-C-B5aOoq.mjs.map → acorex-modules-contact-management-contact-relationship.entity-B_gQ7mEo.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-contact-source.entity-Dw8jwcox.mjs → acorex-modules-contact-management-contact-source.entity-BwYBaS8B.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-contact-source.entity-Dw8jwcox.mjs.map → acorex-modules-contact-management-contact-source.entity-BwYBaS8B.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-emergency-contact-category.entity-BJOOhcD1.mjs → acorex-modules-contact-management-emergency-contact-category.entity-CDbm4Rq3.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-emergency-contact-category.entity-BJOOhcD1.mjs.map → acorex-modules-contact-management-emergency-contact-category.entity-CDbm4Rq3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-Cr7_5JKD.mjs → acorex-modules-contact-management-emergency-contact.entity-BpNDJPVs.mjs} +2 -2
- package/fesm2022/{acorex-modules-contact-management-emergency-contact.entity-Cr7_5JKD.mjs.map → acorex-modules-contact-management-emergency-contact.entity-BpNDJPVs.mjs.map} +1 -1
- package/fesm2022/acorex-modules-contact-management.mjs +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +14 -14
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +123 -123
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +191 -191
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +2215 -265
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-Bte3VGKC.mjs → acorex-modules-document-management-acorex-modules-document-management-B4Jd-KGV.mjs} +144 -144
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-B4Jd-KGV.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Cc0anIMV.mjs → acorex-modules-document-management-attachment-widget.component-Bp4kKjC4.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Cc0anIMV.mjs.map → acorex-modules-document-management-attachment-widget.component-Bp4kKjC4.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-BNcu8bzT.mjs → acorex-modules-document-management-create-folder-dialog.component-12aUAucS.mjs} +22 -22
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-12aUAucS.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-details-view.component-BeN0NPcy.mjs → acorex-modules-document-management-details-view.component-bzA7fJZW.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-details-view.component-BeN0NPcy.mjs.map → acorex-modules-document-management-details-view.component-bzA7fJZW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-B66wODCQ.mjs → acorex-modules-document-management-drive-choose.component-DLJdJzp1.mjs} +18 -18
- package/fesm2022/acorex-modules-document-management-drive-choose.component-DLJdJzp1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-drive.component-CUej0GjY.mjs → acorex-modules-document-management-drive.component-DrkSd6Rv.mjs} +28 -28
- package/fesm2022/acorex-modules-document-management-drive.component-DrkSd6Rv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BuwrkLhe.mjs → acorex-modules-document-management-large-icons-view.component-DV8oWdDh.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-BuwrkLhe.mjs.map → acorex-modules-document-management-large-icons-view.component-DV8oWdDh.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Cs-mjiQX.mjs → acorex-modules-document-management-large-tiles-view.component-Bgr9s_zf.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Cs-mjiQX.mjs.map → acorex-modules-document-management-large-tiles-view.component-Bgr9s_zf.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-OTa8ttto.mjs → acorex-modules-document-management-link-dialog.component-CSEIhT4P.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-OTa8ttto.mjs.map → acorex-modules-document-management-link-dialog.component-CSEIhT4P.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-1M2rIOGv.mjs → acorex-modules-document-management-list-view.component-Dz6ymqrq.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-list-view.component-1M2rIOGv.mjs.map → acorex-modules-document-management-list-view.component-Dz6ymqrq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-DsSo15AL.mjs → acorex-modules-document-management-meta-choose-popup.component-DYJN-4Pe.mjs} +20 -20
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-DYJN-4Pe.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-gunvY9et.mjs → acorex-modules-document-management-meta-selector-widget-column.component-C_J1rPak.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-column.component-gunvY9et.mjs.map → acorex-modules-document-management-meta-selector-widget-column.component-C_J1rPak.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-designer.component-B-fYrGs1.mjs → acorex-modules-document-management-meta-selector-widget-designer.component-By_NgUX6.mjs} +7 -7
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-designer.component-By_NgUX6.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-D4gu7liQ.mjs → acorex-modules-document-management-meta-selector-widget-view.component-zwCw3v1w.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-meta-selector-widget-view.component-D4gu7liQ.mjs.map → acorex-modules-document-management-meta-selector-widget-view.component-zwCw3v1w.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-BEq3ySY3.mjs → acorex-modules-document-management-permission-definition.provider-CN7HVQLu.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-BEq3ySY3.mjs.map → acorex-modules-document-management-permission-definition.provider-CN7HVQLu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-DWzD41AV.mjs → acorex-modules-document-management-rename-node-dialog.component-C_dsLLMb.mjs} +15 -15
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-C_dsLLMb.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-DiyR6CiE.mjs → acorex-modules-document-management-share-dialog.component-CBrf7hjZ.mjs} +6 -6
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-DiyR6CiE.mjs.map → acorex-modules-document-management-share-dialog.component-CBrf7hjZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-CKlG3YwB.mjs → acorex-modules-document-management-share-email-dialog.component-D3WcHAOf.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-CKlG3YwB.mjs.map → acorex-modules-document-management-share-email-dialog.component-D3WcHAOf.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-Dh5Di_2Y.mjs → acorex-modules-document-management-small-icons-view.component-wvFkjOqg.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-Dh5Di_2Y.mjs.map → acorex-modules-document-management-small-icons-view.component-wvFkjOqg.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-mOjQbw-f.mjs → acorex-modules-document-management-small-tiles-view.component-C4ARGOZR.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-mOjQbw-f.mjs.map → acorex-modules-document-management-small-tiles-view.component-C4ARGOZR.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-EsaVgkdd.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-zz8KU2BM.mjs} +68 -68
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-zz8KU2BM.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-category.entity-CC0qe4pv.mjs → acorex-modules-form-template-management-category.entity-g5YGQjj3.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-category.entity-CC0qe4pv.mjs.map → acorex-modules-form-template-management-category.entity-g5YGQjj3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-designer.page-B14QVCAw.mjs → acorex-modules-form-template-management-designer.page-DQorNK3f.mjs} +6 -6
- package/fesm2022/acorex-modules-form-template-management-designer.page-DQorNK3f.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BMd6DvoR.mjs → acorex-modules-form-template-management-permission-definition.provider-BFPqDVO3.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BMd6DvoR.mjs.map → acorex-modules-form-template-management-permission-definition.provider-BFPqDVO3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-BYS5t4c_.mjs → acorex-modules-form-template-management-settings.provider-DYbrgJI7.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-BYS5t4c_.mjs.map → acorex-modules-form-template-management-settings.provider-DYbrgJI7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-C0mLCsFT.mjs → acorex-modules-form-template-management-template-picker.component-DgH_DUIB.mjs} +14 -14
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-DgH_DUIB.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-CffnsEo2.mjs → acorex-modules-form-template-management-template-widget-edit.component-CCL7xNSm.mjs} +9 -9
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-CCL7xNSm.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template.entity-DTx9CejD.mjs → acorex-modules-form-template-management-template.entity-XNBsmQZY.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template.entity-DTx9CejD.mjs.map → acorex-modules-form-template-management-template.entity-XNBsmQZY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-BwVSDsN3.mjs → acorex-modules-form-template-management-viewer-popup.component-Bw9VbGx7.mjs} +12 -12
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-Bw9VbGx7.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-DKdtV_QL.mjs → acorex-modules-issue-management-acorex-modules-issue-management-B8ZVc-0b.mjs} +45 -45
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-DKdtV_QL.mjs.map → acorex-modules-issue-management-acorex-modules-issue-management-B8ZVc-0b.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-CucnKDr1.mjs → acorex-modules-issue-management-capture-screen.component-D1vapaJC.mjs} +7 -7
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-CucnKDr1.mjs.map → acorex-modules-issue-management-capture-screen.component-D1vapaJC.mjs.map} +1 -1
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +427 -479
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +60 -60
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-Br70YGJS.mjs → acorex-modules-organization-management-add-item.component-DsDk5cyO.mjs} +16 -16
- package/fesm2022/{acorex-modules-organization-management-add-item.component-Br70YGJS.mjs.map → acorex-modules-organization-management-add-item.component-DsDk5cyO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-organization-management-branch.entity-Bsgj4Pow.mjs → acorex-modules-organization-management-branch.entity-CHp5WtIF.mjs} +80 -6
- package/fesm2022/acorex-modules-organization-management-branch.entity-CHp5WtIF.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-chart.entity-UAn44WCP.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-company.entity-D1A1HSkC.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-department.entity-BMojk26d.mjs → acorex-modules-organization-management-department.entity-BxCyXNtv.mjs} +68 -7
- package/fesm2022/acorex-modules-organization-management-department.entity-BxCyXNtv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-division.entity-BnWpX4US.mjs → acorex-modules-organization-management-division.entity-DzQT2jpz.mjs} +68 -6
- package/fesm2022/acorex-modules-organization-management-division.entity-DzQT2jpz.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-employee.entity-DBuCVYZP.mjs → acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs} +152 -28
- package/fesm2022/acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-employment-type.entity-CWYu9tIg.mjs → acorex-modules-organization-management-employment-type.entity-h9Hua7Xe.mjs} +21 -8
- package/fesm2022/acorex-modules-organization-management-employment-type.entity-h9Hua7Xe.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DHu4UuxD.mjs → acorex-modules-organization-management-org-chart-configuration.page-a2JPiCy9.mjs} +6 -6
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-a2JPiCy9.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-CcZMGyCz.mjs → acorex-modules-organization-management-org-chart-configuration.service-BkfSow3s.mjs} +5 -5
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-BkfSow3s.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-CSMTnTDi.mjs → acorex-modules-organization-management-org-chart.page-DWQ-5NF_.mjs} +20 -20
- package/fesm2022/acorex-modules-organization-management-org-chart.page-DWQ-5NF_.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position-category.entity-DrZ9Ott4.mjs → acorex-modules-organization-management-position-category.entity-CIir9UMg.mjs} +20 -35
- package/fesm2022/acorex-modules-organization-management-position-category.entity-CIir9UMg.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-position.entity-BpkjUsoZ.mjs +526 -0
- package/fesm2022/acorex-modules-organization-management-position.entity-BpkjUsoZ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-responsibility-category.entity-CmafbyCZ.mjs → acorex-modules-organization-management-responsibility-category.entity-tJFpEylO.mjs} +12 -25
- package/fesm2022/acorex-modules-organization-management-responsibility-category.entity-tJFpEylO.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-responsibility.entity-DmLeFogS.mjs → acorex-modules-organization-management-responsibility.entity-DmKSoxpL.mjs} +70 -25
- package/fesm2022/acorex-modules-organization-management-responsibility.entity-DmKSoxpL.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-role-category.entity-Cyt1dAKR.mjs → acorex-modules-organization-management-role-category.entity-CAljzQcH.mjs} +22 -14
- package/fesm2022/acorex-modules-organization-management-role-category.entity-CAljzQcH.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-position.entity-CY4TugWR.mjs → acorex-modules-organization-management-role.entity-CruQeObl.mjs} +77 -79
- package/fesm2022/acorex-modules-organization-management-role.entity-CruQeObl.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-settings.provider-hlbUXugb.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-skill-category.entity-BPgGGVT3.mjs → acorex-modules-organization-management-skill-category.entity-iIbc-pjJ.mjs} +18 -33
- package/fesm2022/acorex-modules-organization-management-skill-category.entity-iIbc-pjJ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-skill.entity-D9XojzUV.mjs → acorex-modules-organization-management-skill.entity-DoAsCzm9.mjs} +61 -22
- package/fesm2022/acorex-modules-organization-management-skill.entity-DoAsCzm9.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-team.entity-mYPhrc2l.mjs → acorex-modules-organization-management-team.entity-DMCfAZsr.mjs} +58 -10
- package/fesm2022/acorex-modules-organization-management-team.entity-DMCfAZsr.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +221 -136
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-list-version.component-CgF5pvTa.mjs → acorex-modules-platform-management-list-version.component-BOfUQDwo.mjs} +9 -9
- package/fesm2022/acorex-modules-platform-management-list-version.component-BOfUQDwo.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +3479 -1
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +43 -43
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-DqrLa6vh.mjs → acorex-modules-report-management-report-create-root.component-DgouOz2M.mjs} +10 -10
- package/fesm2022/acorex-modules-report-management-report-create-root.component-DgouOz2M.mjs.map +1 -0
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-C3UP9Jsi.mjs → acorex-modules-report-management-report-runner-root-page.component-DHu-kyCd.mjs} +13 -13
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-C3UP9Jsi.mjs.map → acorex-modules-report-management-report-runner-root-page.component-DHu-kyCd.mjs.map} +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +465 -232
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-scheduler-job-management.mjs +14 -14
- package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +170 -102
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BbnEqXKu.mjs → acorex-modules-settings-management-setting-page.component-cG4ykm2g.mjs} +17 -17
- package/fesm2022/acorex-modules-settings-management-setting-page.component-cG4ykm2g.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-DP8mxDK9.mjs → acorex-modules-settings-management-setting-view.component-CrEK2N1U.mjs} +11 -11
- package/fesm2022/acorex-modules-settings-management-setting-view.component-CrEK2N1U.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management.mjs +6 -6
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management-settings.provider-fX0dhWUL.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management.mjs +24 -24
- package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-training-management.mjs +43 -43
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-zaSchG-u.mjs → acorex-modules-workflow-management-task-board.page-BoG_tFGn.mjs} +123 -133
- package/fesm2022/acorex-modules-workflow-management-task-board.page-BoG_tFGn.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +12 -12
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/log-management/index.d.ts +46 -19
- package/organization-management/index.d.ts +41 -13
- package/package.json +1 -1
- package/platform-management/index.d.ts +8 -277
- package/report-management/index.d.ts +180 -126
- package/security-management/index.d.ts +2 -46
- package/fesm2022/acorex-modules-application-management-module-designer.component-BvuZJdwg.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-DqsEqXec.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-BbsQWpEh.mjs +0 -134
- package/fesm2022/acorex-modules-auth-password.component-BbsQWpEh.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-3-FFY4tI.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-user-sessions.component-CtTrstZT.mjs +0 -135
- package/fesm2022/acorex-modules-auth-user-sessions.component-CtTrstZT.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-search-popup.component-B_bJ0ZRM.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-timeline-version-history-popup.component-D48aDOVu.mjs.map +0 -1
- package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-DVjMlS0K.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-Bte3VGKC.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-BNcu8bzT.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive-choose.component-B66wODCQ.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-CUej0GjY.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-DsSo15AL.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-designer.component-B-fYrGs1.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-DWzD41AV.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-EsaVgkdd.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-designer.page-B14QVCAw.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-C0mLCsFT.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-CffnsEo2.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-BwVSDsN3.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-branch.entity-Bsgj4Pow.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-department.entity-BMojk26d.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-division.entity-BnWpX4US.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-employee.entity-DBuCVYZP.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-employment-type.entity-CWYu9tIg.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DHu4UuxD.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-CcZMGyCz.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-CSMTnTDi.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position-category.entity-DrZ9Ott4.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-CY4TugWR.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-responsibility-category.entity-CmafbyCZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-responsibility.entity-DmLeFogS.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-role-category.entity-Cyt1dAKR.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs +0 -324
- package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-skill-category.entity-BPgGGVT3.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-skill.entity-D9XojzUV.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-team.entity-mYPhrc2l.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-BLhzWiXM.mjs +0 -5524
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-BLhzWiXM.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-list-version.component-CgF5pvTa.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-settings.provider-intHn3XI.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-create-root.component-DqrLa6vh.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-BbnEqXKu.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-view.component-DP8mxDK9.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-zaSchG-u.mjs.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-organization-management-org-chart.page-CSMTnTDi.mjs","sources":["../tmp-esm2022/organization-management/lib/features/organization-chart/org-chart-print.service.js","../tmp-esm2022/organization-management/lib/features/organization-chart/org-chart.service.js","../tmp-esm2022/organization-management/lib/features/organization-chart/org-chart.page.js"],"sourcesContent":["import { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExportService } from '@acorex/platform/common';\nimport { inject, Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Service for printing organization charts.\n */\nexport class AXMOrgChartPrintService {\n constructor() {\n this.loadingDialog = inject(AXLoadingDialogService);\n this.exportService = inject(AXPExportService);\n this.translationService = inject(AXTranslationService);\n }\n /**\n * Prints the organization chart.\n * @param element - The HTMLElement representing the chart to be printed.\n * @returns A promise that resolves when the print process is complete.\n */\n async printChart(element) {\n const d = this.loadingDialog.show({\n title: 'Printing Organization Chart...',\n mode: 'determinate',\n progressColor: 'primary',\n progressValue: 0,\n status: '0/10',\n text: 'Initializing print process...',\n buttons: [\n {\n text: 'Cancel',\n color: 'danger',\n onClick: () => {\n d.close();\n },\n },\n ],\n });\n try {\n await this.HandleStep(d, await this.translateStatements('preparing-document'), 10, '1/10');\n const chartElement = element;\n const { originalStyles, modifiedStyles } = this.expandChart(chartElement);\n await this.HandleStep(d, await this.translateStatements('rendering-chart-image'), 25, '2.5/10');\n const canvasBlob = await this.exportService.generateBlobFromElement(chartElement, {\n popup: true,\n filter: (node) => {\n if (node instanceof Element && node.classList.contains('--toggle')) {\n return false;\n }\n return true;\n },\n bgcolor: 'transparent',\n scale: 2,\n quality: 1,\n height: Number.parseInt(modifiedStyles.modifiedHeight),\n width: Number.parseInt(modifiedStyles.modifiedWidth),\n });\n await this.HandleStep(d, await this.translateStatements('finalizing-image-processing'), 50, '5/10');\n this.restoreChartStyles(chartElement, originalStyles);\n await this.HandleStep(d, await this.translateStatements('downloading-image'), 75, '7.5/10');\n this.exportService.download(canvasBlob, 'org-chart.png');\n await this.HandleStep(d, await this.translateStatements('process-complete'), 100, '10/10');\n setTimeout(() => d.close(), 1500);\n }\n catch (err) {\n console.error('Error capturing chart:', err);\n await this.HandleStep(d, await this.translateStatements('failed-to-generate-chart-image'), 100, 'Error', 'danger');\n d.close();\n }\n }\n /**\n * Expands the chart temporarily to capture the full view.\n * @param chartElement - The HTMLElement representing the chart.\n * @returns An object containing the original and modified styles of the chart.\n */\n expandChart(chartElement) {\n const originalStyles = {\n originalOverflow: chartElement.style.overflow,\n originalWidth: chartElement.style.width,\n originalHeight: chartElement.style.height,\n };\n const modifiedStyles = {\n modifiedOverflow: 'visible',\n modifiedWidth: `${chartElement.scrollWidth}px`,\n modifiedHeight: `${chartElement.scrollHeight}px`,\n };\n chartElement.style.overflow = modifiedStyles.modifiedOverflow;\n chartElement.style.width = modifiedStyles.modifiedWidth;\n chartElement.style.height = modifiedStyles.modifiedHeight;\n return { originalStyles, modifiedStyles };\n }\n /**\n * Restores chart styles after capturing.\n * @param chartElement - The HTMLElement representing the chart.\n * @param originalStyles - The original styles to be restored.\n */\n restoreChartStyles(chartElement, originalStyles) {\n chartElement.style.overflow = originalStyles.originalOverflow;\n chartElement.style.width = originalStyles.originalWidth;\n chartElement.style.height = originalStyles.originalHeight;\n }\n /**\n * Handles updating the progress dialog step.\n * @param dialog - The dialog reference.\n * @param text - The text to display in the dialog.\n * @param progress - The progress value to set.\n * @param status - The status to display.\n * @param color - The color of the progress bar.\n * @returns A promise that resolves when the dialog is updated.\n */\n async HandleStep(dialog, text, progress, status, color = 'primary') {\n return new Promise((resolve) => {\n dialog.setProgressColor(color);\n dialog.setProgressText(text);\n dialog.setProgressValue(progress);\n dialog.setProgressStatus(status);\n resolve();\n });\n }\n /**\n * Translates a statement using the translation service.\n * @param key - The translation key.\n * @returns A promise that resolves to the translated string.\n */\n async translateStatements(key) {\n return (await this.translationService.translateAsync(key, { scope: 'organization-management' })) + '...';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMOrgChartPrintService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMOrgChartPrintService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMOrgChartPrintService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWNoYXJ0LXByaW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9vcmdhbml6YXRpb24tY2hhcnQvb3JnLWNoYXJ0LXByaW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLHNCQUFzQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRW5EOztHQUVHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQURwQztRQUVVLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDL0Msa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQXdKM0Q7SUF0SkM7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBb0I7UUFDbkMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDaEMsS0FBSyxFQUFFLGdDQUFnQztZQUN2QyxJQUFJLEVBQUUsYUFBYTtZQUNuQixhQUFhLEVBQUUsU0FBUztZQUN4QixhQUFhLEVBQUUsQ0FBQztZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSwrQkFBK0I7WUFDckMsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxRQUFRO29CQUNmLE9BQU8sRUFBRSxHQUFH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QUFDO1lBQ2xDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsbUJBQW1CLENBQUMsR0FBVztRQUMzQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDM0csQ0FBQzs4R0ExSlUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFN0eWxlQ29sb3JUeXBlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGlhbG9nUmVmLCBBWExvYWRpbmdEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmctZGlhbG9nJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUEV4cG9ydFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBwcmludGluZyBvcmdhbml6YXRpb24gY2hhcnRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNT3JnQ2hhcnRQcmludFNlcnZpY2Uge1xuICBwcml2YXRlIGxvYWRpbmdEaWFsb2cgPSBpbmplY3QoQVhMb2FkaW5nRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgZXhwb3J0U2VydmljZSA9IGluamVjdChBWFBFeHBvcnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBQcmludHMgdGhlIG9yZ2FuaXphdGlvbiBjaGFydC5cbiAgICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgSFRNTEVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjaGFydCB0byBiZSBwcmludGVkLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBwcmludCBwcm9jZXNzIGlzIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgcHJpbnRDaGFydChlbGVtZW50OiBIVE1MRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGQgPSB0aGlzLmxvYWRpbmdEaWFsb2cuc2hvdyh7XG4gICAgICB0aXRsZTogJ1ByaW50aW5nIE9yZ2FuaXphdGlvbiBDaGFydC4uLicsXG4gICAgICBtb2RlOiAnZGV0ZXJtaW5hdGUnLFxuICAgICAgcHJvZ3Jlc3NDb2xvcjogJ3ByaW1hcnknLFxuICAgICAgcHJvZ3Jlc3NWYWx1ZTogMCxcbiAgICAgIHN0YXR1czogJzAvMTAnLFxuICAgICAgdGV4dDogJ0luaXRpYWxpemluZyBwcmludCBwcm9jZXNzLi4uJyxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBkLmNsb3NlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5IYW5kbGVTdGVwKGQsIGF3YWl0IHRoaXMudHJhbnNsYXRlU3RhdGVtZW50cygncHJlcGFyaW5nLWRvY3VtZW50JyksIDEwLCAnMS8xMCcpO1xuICAgICAgY29uc3QgY2hhcnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgIGNvbnN0IHsgb3JpZ2luYWxTdHlsZXMsIG1vZGlmaWVkU3R5bGVzIH0gPSB0aGlzLmV4cGFuZENoYXJ0KGNoYXJ0RWxlbWVudCk7XG5cbiAgICAgIGF3YWl0IHRoaXMuSGFuZGxlU3RlcChkLCBhd2FpdCB0aGlzLnRyYW5zbGF0ZVN0YXRlbWVudHMoJ3JlbmRlcmluZy1jaGFydC1pbWFnZScpLCAyNSwgJzIuNS8xMCcpO1xuICAgICAgY29uc3QgY2FudmFzQmxvYiA9IGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZUJsb2JGcm9tRWxlbWVudChjaGFydEVsZW1lbnQsIHtcbiAgICAgICAgcG9wdXA6IHRydWUsXG4gICAgICAgIGZpbHRlcjogKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoJy0tdG9nZ2xlJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIGJnY29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIHNjYWxlOiAyLFxuICAgICAgICBxdWFsaXR5OiAxLFxuICAgICAgICBoZWlnaHQ6IE51bWJlci5wYXJzZUludChtb2RpZmllZFN0eWxlcy5tb2RpZmllZEhlaWdodCksXG4gICAgICAgIHdpZHRoOiBOdW1iZXIucGFyc2VJbnQobW9kaWZpZWRTdHlsZXMubW9kaWZpZWRXaWR0aCksXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgdGhpcy5IYW5kbGVTdGVwKGQsIGF3YWl0IHRoaXMudHJhbnNsYXRlU3RhdGVtZW50cygnZmluYWxpemluZy1pbWFnZS1wcm9jZXNzaW5nJyksIDUwLCAnNS8xMCcpO1xuICAgICAgdGhpcy5yZXN0b3JlQ2hhcnRTdHlsZXMoY2hhcnRFbGVtZW50LCBvcmlnaW5hbFN0eWxlcyk7XG5cbiAgICAgIGF3YWl0IHRoaXMuSGFuZGxlU3RlcChkLCBhd2FpdCB0aGlzLnRyYW5zbGF0ZVN0YXRlbWVudHMoJ2Rvd25sb2FkaW5nLWltYWdlJyksIDc1LCAnNy41LzEwJyk7XG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZG93bmxvYWQoY2FudmFzQmxvYiwgJ29yZy1jaGFydC5wbmcnKTtcblxuICAgICAgYXdhaXQgdGhpcy5IYW5kbGVTdGVwKGQsIGF3YWl0IHRoaXMudHJhbnNsYXRlU3RhdGVtZW50cygncHJvY2Vzcy1jb21wbGV0ZScpLCAxMDAsICcxMC8xMCcpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IGQuY2xvc2UoKSwgMTUwMCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjYXB0dXJpbmcgY2hhcnQ6JywgZXJyKTtcbiAgICAgIGF3YWl0IHRoaXMuSGFuZGxlU3RlcChcbiAgICAgICAgZCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTdGF0ZW1lbnRzKCdmYWlsZWQtdG8tZ2VuZXJhdGUtY2hhcnQtaW1hZ2UnKSxcbiAgICAgICAgMTAwLFxuICAgICAgICAnRXJyb3InLFxuICAgICAgICAnZGFuZ2VyJyxcbiAgICAgICk7XG4gICAgICBkLmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4cGFuZHMgdGhlIGNoYXJ0IHRlbXBvcmFyaWx5IHRvIGNhcHR1cmUgdGhlIGZ1bGwgdmlldy5cbiAgICogQHBhcmFtIGNoYXJ0RWxlbWVudCAtIFRoZSBIVE1MRWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNoYXJ0LlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgYW5kIG1vZGlmaWVkIHN0eWxlcyBvZiB0aGUgY2hhcnQuXG4gICAqL1xuICBwcml2YXRlIGV4cGFuZENoYXJ0KGNoYXJ0RWxlbWVudDogSFRNTEVsZW1lbnQpOiB7XG4gICAgb3JpZ2luYWxTdHlsZXM6IHtcbiAgICAgIG9yaWdpbmFsT3ZlcmZsb3c6IHN0cmluZztcbiAgICAgIG9yaWdpbmFsV2lkdGg6IHN0cmluZztcbiAgICAgIG9yaWdpbmFsSGVpZ2h0OiBzdHJpbmc7XG4gICAgfTtcbiAgICBtb2RpZmllZFN0eWxlczoge1xuICAgICAgbW9kaWZpZWRPdmVyZmxvdzogc3RyaW5nO1xuICAgICAgbW9kaWZpZWRXaWR0aDogc3RyaW5nO1xuICAgICAgbW9kaWZpZWRIZWlnaHQ6IHN0cmluZztcbiAgICB9O1xuICB9IHtcbiAgICBjb25zdCBvcmlnaW5hbFN0eWxlcyA9IHtcbiAgICAgIG9yaWdpbmFsT3ZlcmZsb3c6IGNoYXJ0RWxlbWVudC5zdHlsZS5vdmVyZmxvdyxcbiAgICAgIG9yaWdpbmFsV2lkdGg6IGNoYXJ0RWxlbWVudC5zdHlsZS53aWR0aCxcbiAgICAgIG9yaWdpbmFsSGVpZ2h0OiBjaGFydEVsZW1lbnQuc3R5bGUuaGVpZ2h0LFxuICAgIH07XG5cbiAgICBjb25zdCBtb2RpZmllZFN0eWxlcyA9IHtcbiAgICAgIG1vZGlmaWVkT3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICAgIG1vZGlmaWVkV2lkdGg6IGAke2NoYXJ0RWxlbWVudC5zY3JvbGxXaWR0aH1weGAsXG4gICAgICBtb2RpZmllZEhlaWdodDogYCR7Y2hhcnRFbGVtZW50LnNjcm9sbEhlaWdodH1weGAsXG4gICAgfTtcblxuICAgIGNoYXJ0RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9IG1vZGlmaWVkU3R5bGVzLm1vZGlmaWVkT3ZlcmZsb3c7XG4gICAgY2hhcnRFbGVtZW50LnN0eWxlLndpZHRoID0gbW9kaWZpZWRTdHlsZXMubW9kaWZpZWRXaWR0aDtcbiAgICBjaGFydEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gbW9kaWZpZWRTdHlsZXMubW9kaWZpZWRIZWlnaHQ7XG5cbiAgICByZXR1cm4geyBvcmlnaW5hbFN0eWxlcywgbW9kaWZpZWRTdHlsZXMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyBjaGFydCBzdHlsZXMgYWZ0ZXIgY2FwdHVyaW5nLlxuICAgKiBAcGFyYW0gY2hhcnRFbGVtZW50IC0gVGhlIEhUTUxFbGVtZW50IHJlcHJlc2VudGluZyB0aGUgY2hhcnQuXG4gICAqIEBwYXJhbSBvcmlnaW5hbFN0eWxlcyAtIFRoZSBvcmlnaW5hbCBzdHlsZXMgdG8gYmUgcmVzdG9yZWQuXG4gICAqL1xuICBwcml2YXRlIHJlc3RvcmVDaGFydFN0eWxlcyhcbiAgICBjaGFydEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIG9yaWdpbmFsU3R5bGVzOiB7IG9yaWdpbmFsT3ZlcmZsb3c6IHN0cmluZzsgb3JpZ2luYWxXaWR0aDogc3RyaW5nOyBvcmlnaW5hbEhlaWdodDogc3RyaW5nIH0sXG4gICk6IHZvaWQge1xuICAgIGNoYXJ0RWxlbWVudC5zdHlsZS5vdmVyZmxvdyA9IG9yaWdpbmFsU3R5bGVzLm9yaWdpbmFsT3ZlcmZsb3c7XG4gICAgY2hhcnRFbGVtZW50LnN0eWxlLndpZHRoID0gb3JpZ2luYWxTdHlsZXMub3JpZ2luYWxXaWR0aDtcbiAgICBjaGFydEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gb3JpZ2luYWxTdHlsZXMub3JpZ2luYWxIZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB1cGRhdGluZyB0aGUgcHJvZ3Jlc3MgZGlhbG9nIHN0ZXAuXG4gICAqIEBwYXJhbSBkaWFsb2cgLSBUaGUgZGlhbG9nIHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHRleHQgLSBUaGUgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBkaWFsb2cuXG4gICAqIEBwYXJhbSBwcm9ncmVzcyAtIFRoZSBwcm9ncmVzcyB2YWx1ZSB0byBzZXQuXG4gICAqIEBwYXJhbSBzdGF0dXMgLSBUaGUgc3RhdHVzIHRvIGRpc3BsYXkuXG4gICAqIEBwYXJhbSBjb2xvciAtIFRoZSBjb2xvciBvZiB0aGUgcHJvZ3Jlc3MgYmFyLlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBkaWFsb2cgaXMgdXBkYXRlZC5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgSGFuZGxlU3RlcChcbiAgICBkaWFsb2c6IEFYRGlhbG9nUmVmLFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICBwcm9ncmVzczogbnVtYmVyLFxuICAgIHN0YXR1czogc3RyaW5nLFxuICAgIGNvbG9yOiBBWFN0eWxlQ29sb3JUeXBlID0gJ3ByaW1hcnknLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgIGRpYWxvZy5zZXRQcm9ncmVzc0NvbG9yKGNvbG9yKTtcbiAgICAgIGRpYWxvZy5zZXRQcm9ncmVzc1RleHQodGV4dCk7XG4gICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NWYWx1ZShwcm9ncmVzcyk7XG4gICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NTdGF0dXMoc3RhdHVzKTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2xhdGVzIGEgc3RhdGVtZW50IHVzaW5nIHRoZSB0cmFuc2xhdGlvbiBzZXJ2aWNlLlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIHRyYW5zbGF0aW9uIGtleS5cbiAgICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHRyYW5zbGF0ZWQgc3RyaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB0cmFuc2xhdGVTdGF0ZW1lbnRzKGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKGtleSwgeyBzY29wZTogJ29yZ2FuaXphdGlvbi1tYW5hZ2VtZW50JyB9KSkgKyAnLi4uJztcbiAgfVxufVxuIl19","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPRegionalService } from '@acorex/platform/common';\nimport { AXPDataGenerator } from '@acorex/platform/core';\nimport { applyFilterArray } from '@acorex/platform/core';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport get from 'lodash-es/get';\nimport { AXMOrganizationManagementBranchEntityService, AXMOrganizationManagementChartEntityService, AXMOrganizationManagementDepartmentEntityService, AXMOrganizationManagementDivisionEntityService, AXMOrganizationManagementEmployeeEntityService, AXMOrganizationManagementPositionEntityService, } from '../../entities';\nimport { AXMOrgChartConfigService } from './org-chart-configuration.service';\nimport { AXM_ORG_CHART_NODE_TYPE_ENTITY_MAPPINGS, AXMOrganizationNodeType, } from './org-chart.type';\nimport * as i0 from \"@angular/core\";\nexport class AXMOrgChartService {\n constructor() {\n this.departmentService = inject(AXMOrganizationManagementDepartmentEntityService);\n this.divisionService = inject(AXMOrganizationManagementDivisionEntityService);\n this.branchService = inject(AXMOrganizationManagementBranchEntityService);\n this.employmentService = inject(AXMOrganizationManagementEmployeeEntityService);\n this.positionService = inject(AXMOrganizationManagementPositionEntityService);\n this.chartService = inject(AXMOrganizationManagementChartEntityService);\n this.sessionService = inject(AXPSessionService);\n this.configService = inject(AXMOrgChartConfigService);\n this.popupService = inject(AXPopupService);\n this.layoutService = inject(AXPLayoutThemeService);\n this.regionalService = inject(AXPRegionalService);\n this.dialogService = inject(AXDialogService);\n this.translateService = inject(AXTranslationService);\n this._rootNode = signal({ id: AXPDataGenerator.uuid(), title: 'Company' });\n this.rootNode = this._rootNode.asReadonly();\n // The clipboard holds the node being cut or copied.\n this.clipboard = signal(null);\n }\n //#region Load/Save\n async load() {\n const first = (await this.chartService.query({\n skip: 0,\n take: 1,\n sort: [{ field: 'version', dir: 'desc' }],\n })).items[0];\n //\n if (first) {\n const data = first.data;\n this._rootNode.set(data);\n }\n else {\n await this.createNew();\n await this.load();\n }\n }\n async createNew() {\n const tenant = this.sessionService.tenant;\n const record = {\n id: AXPDataGenerator.uuid(),\n createAt: new Date(),\n updateAt: new Date(),\n version: '0.0.0',\n data: {\n id: AXPDataGenerator.uuid(),\n title: tenant.name,\n type: AXMOrganizationNodeType.Company,\n entity: {\n id: tenant.id,\n source: 'tenant',\n },\n children: [],\n },\n };\n await this.chartService.insertOne({ data: record.data, version: record.version });\n }\n async save() {\n const first = (await this.chartService.query()).items[0];\n await this.chartService.updateOne(first.id, {\n version: first.version,\n data: this._rootNode(),\n });\n }\n //#endregion\n //#region Context Menu\n async getAllowedAddMenuItems(node) {\n const allowedTypes = await this.getAllowedChildCategoriesForParent(node);\n const allowedMenuItems = [];\n // Group items by category for visual breaks.\n const groupedMenuItems = {\n Company: [],\n Location: [],\n BusinessUnit: [],\n Role: [],\n Employee: [],\n };\n Object.entries(AXM_ORG_CHART_NODE_TYPE_ENTITY_MAPPINGS).forEach(([entitySource, config]) => {\n if (allowedTypes.includes(config.type)) {\n groupedMenuItems[config.category].push({\n name: 'add',\n text: `${config.title}`,\n icon: config.icon,\n data: {\n node,\n config,\n source: entitySource,\n },\n });\n }\n });\n Object.values(groupedMenuItems).forEach((group) => {\n if (group.length > 0) {\n allowedMenuItems.push(...group);\n group[group.length - 1].break = true;\n }\n });\n if (allowedMenuItems.length > 0) {\n allowedMenuItems[allowedMenuItems.length - 1].break = false;\n }\n return allowedMenuItems;\n }\n //#endregion\n //#region Check Permission\n async getAllowedChildCategoriesForParent(parent) {\n await this.configService.load();\n const types = this.configService.types;\n const currentType = parent.type;\n if (!parent || !currentType) {\n return [];\n }\n const allowedTypes = new Set();\n Object.entries(AXM_ORG_CHART_NODE_TYPE_ENTITY_MAPPINGS).forEach(([entitySource, config]) => {\n if (this.configService.isAllowed(currentType, config.type) && types.includes(config.type)) {\n allowedTypes.add(config.type);\n }\n });\n return Array.from(allowedTypes);\n }\n //#endregion\n //#region Remove/Cut/Copy/Past\n async removeNode(id) {\n const title = await this.translateService.translateAsync('dialogs.delete.title');\n const message = await this.translateService.translateAsync('dialogs.delete.message');\n const dialogResult = await this.dialogService.confirm(title, message, 'danger', 'horizontal');\n if (dialogResult.result) {\n this._rootNode.update((node) => this.removeNodeRecursively(node, id));\n await this.save();\n }\n }\n removeNodeRecursively(node, id) {\n // If the node itself is the one to be deleted, return null\n if (node.id === id) {\n return null;\n }\n // Otherwise, recursively check children\n if (node.children) {\n node.children = node.children\n .filter((child) => child.id !== id)\n .map((child) => {\n return { ...child, children: this.removeNodeRecursively(child, id)?.children };\n });\n }\n return node;\n }\n isPasteAvailable() {\n return this.clipboard() != null && this.clipboard()?.node != null;\n }\n async allowPaste(target) {\n if (!this.isPasteAvailable()) {\n return false;\n }\n const allowedTypes = await this.getAllowedChildCategoriesForParent(target);\n // Compare using the clipboard node's category.\n return allowedTypes.includes(this.clipboard()?.node.type);\n }\n /**\n * Cuts the node with the given id.\n * The node is removed from the tree and stored in the clipboard.\n * Cutting the root node is not allowed.\n */\n async cutNode(id) {\n const tree = this._rootNode();\n if (tree.id === id) {\n throw new Error('Cannot cut the root node.');\n }\n const result = this.findNodeAndParent(tree, id);\n if (!result) {\n throw new Error('Node not found.');\n }\n // Set the clipboard signal with mode 'cut'\n this.clipboard.set({ mode: 'cut', node: result.node });\n // Remove the node from the tree.\n const newTree = this.removeNodeRecursively(tree, id);\n this._rootNode.set(newTree);\n await this.save();\n }\n /**\n * Copies the node with the given id.\n * A deep clone of the node is stored in the clipboard.\n */\n copyNode(id) {\n const tree = this._rootNode();\n const result = this.findNodeAndParent(tree, id);\n if (!result) {\n throw new Error('Node not found.');\n }\n // Use lodash's cloneDeep to create a deep clone.\n const copiedNode = cloneDeep(result.node);\n this.clipboard.set({ mode: 'copy', node: copiedNode });\n }\n /**\n * Pastes the node in the clipboard as a child of the node with the given parentId.\n * For a cut, the node is moved; for a copy, new IDs are generated so the pasted node is unique.\n */\n async pasteNode(parentId) {\n const clipboardValue = this.clipboard();\n if (!clipboardValue) {\n throw new Error('Clipboard is empty.');\n }\n const tree = this._rootNode();\n const parentResult = this.findNodeAndParent(tree, parentId);\n if (!parentResult) {\n throw new Error('Parent node not found.');\n }\n let nodeToPaste;\n if (clipboardValue.mode === 'cut') {\n nodeToPaste = clipboardValue.node;\n // Clear the clipboard after pasting.\n this.clipboard.set(null);\n }\n else {\n nodeToPaste = this.cloneNodeWithNewIds(clipboardValue.node);\n }\n const newTree = this.insertNodeRecursively(tree, parentId, nodeToPaste);\n this._rootNode.set(newTree);\n await this.save();\n }\n /**\n * Recursively searches the tree for the node with the given id,\n * returning both the node and its parent.\n */\n findNodeAndParent(node, id, parent = null) {\n if (node.id === id) {\n return { node, parent };\n }\n if (node.children) {\n for (const child of node.children) {\n const result = this.findNodeAndParent(child, id, node);\n if (result) {\n return result;\n }\n }\n }\n return null;\n }\n /**\n * Clones a node recursively and generates new IDs for the node and its children.\n */\n cloneNodeWithNewIds(node) {\n // First, clone the node using lodash.\n const newNode = cloneDeep(node);\n // Then, assign new IDs recursively.\n this.assignNewIds(newNode);\n return newNode;\n }\n /**\n * Recursively assigns new unique IDs to the given node and its children.\n */\n assignNewIds(node) {\n node.id = AXPDataGenerator.uuid();\n if (node.children) {\n node.children.forEach((child) => this.assignNewIds(child));\n }\n }\n /**\n * Recursively traverses the tree to insert newNode as a child of the node with parentId.\n */\n insertNodeRecursively(node, parentId, newNode) {\n if (node.id === parentId) {\n const newChildren = node.children ? [...node.children, newNode] : [newNode];\n return { ...node, children: newChildren };\n }\n if (node.children) {\n return {\n ...node,\n children: node.children.map((child) => this.insertNodeRecursively(child, parentId, newNode)),\n };\n }\n return node;\n }\n //#endregion\n //#region Add Node\n async addNode(data) {\n this.layoutService.setNavigationLoading(true);\n try {\n const component = (await import('./add-item/add-item.component')).AddItemComponent;\n const node = get(data, 'node');\n const type = get(data, 'config.type');\n const icon = get(data, 'config.icon');\n const source = get(data, 'source');\n let query;\n const countrySource = async (request) => {\n let list = await this.regionalService.getCountries();\n if (request.filter) {\n list = applyFilterArray(list, [request.filter]);\n }\n const items = list.map((c) => ({\n id: c.code,\n title: c.title,\n }));\n return { items, total: items.length };\n };\n const provinceSource = async (request) => {\n let list = await this.regionalService.getProvinces(node.type === AXMOrganizationNodeType.Country ? node.entity?.id : undefined);\n if (request.filter) {\n list = applyFilterArray(list, [request.filter]);\n }\n const items = list.map((c) => ({\n id: c.code,\n title: c.title,\n }));\n return { items, total: items.length };\n };\n const citySource = async (request) => {\n let filter = {};\n if (node.type === AXMOrganizationNodeType.Country) {\n filter.countryId = node.entity?.id;\n }\n else if (node.type === AXMOrganizationNodeType.State) {\n filter.provinceId = node.entity?.id;\n }\n let list = await this.regionalService.getCities(filter);\n if (request.filter) {\n list = applyFilterArray(list, [request.filter]);\n }\n const items = list.map((c) => ({\n id: c.code,\n title: c.title,\n }));\n return { items, total: items.length };\n };\n const valueField = 'id';\n const titleField = 'title';\n const subtitleField = null;\n const descriptionField = 'description';\n switch (type) {\n case AXMOrganizationNodeType.Country:\n query = countrySource;\n break;\n case AXMOrganizationNodeType.State:\n query = provinceSource;\n break;\n case AXMOrganizationNodeType.City:\n query = citySource;\n break;\n case AXMOrganizationNodeType.Department:\n query = this.departmentService.query.bind(this.departmentService);\n break;\n case AXMOrganizationNodeType.Division:\n query = this.divisionService.query.bind(this.divisionService);\n break;\n case AXMOrganizationNodeType.Branch:\n query = this.branchService.query.bind(this.branchService);\n break;\n case AXMOrganizationNodeType.Position:\n query = this.positionService.query.bind(this.positionService);\n break;\n case AXMOrganizationNodeType.Employee:\n query = this.employmentService.query.bind(this.employmentService);\n break;\n default:\n throw new Error(`Unsupported node type: ${type}`);\n }\n const result = await this.popupService.open(component, {\n title: `Add ${get(data, 'config.title')}`,\n size: 'md',\n data: {\n config: {\n valueField,\n titleField,\n subtitleField,\n descriptionField,\n query: query,\n },\n },\n });\n if (!result.data) {\n return false;\n }\n const newNode = {\n id: AXPDataGenerator.uuid(),\n title: result.data.title,\n description: result.data.description,\n subtitle: result.data.subtitle,\n type: type,\n parentId: node.id,\n icon,\n entity: {\n id: result.data.id,\n source: source,\n },\n };\n const tree = this._rootNode();\n const newTree = this.insertNodeRecursively(tree, node.id, newNode);\n this._rootNode.set(newTree);\n await this.save();\n return true;\n }\n finally {\n this.layoutService.setNavigationLoading(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMOrgChartService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMOrgChartService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMOrgChartService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWNoYXJ0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9vcmdhbml6YXRpb24tY2hhcnQvb3JnLWNoYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUcsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXVDLE1BQU0sdUJBQXVCLENBQUM7QUFDOUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ2hDLE9BQU8sRUFDTCw0Q0FBNEMsRUFDNUMsMkNBQTJDLEVBQzNDLGdEQUFnRCxFQUNoRCw4Q0FBOEMsRUFDOUMsOENBQThDLEVBQzlDLDhDQUE4QyxHQUMvQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFDTCx1Q0FBdUMsRUFFdkMsdUJBQXVCLEdBRXhC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QVMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7OEdBNWJVLGtCQUFrQjtrSEFBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWE1lbnVJdGVtIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgIEFYUFJlZ2lvbmFsU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUERhdGFHZW5lcmF0b3IgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlGaWx0ZXJBcnJheSwgQVhQUGFnZWRMaXN0UmVzdWx0LCBBWFBRdWVyeVJlcXVlc3QgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gtZXMvZ2V0JztcbmltcG9ydCB7XG4gIEFYTU9yZ2FuaXphdGlvbk1hbmFnZW1lbnRCcmFuY2hFbnRpdHlTZXJ2aWNlLFxuICBBWE1Pcmdhbml6YXRpb25NYW5hZ2VtZW50Q2hhcnRFbnRpdHlTZXJ2aWNlLFxuICBBWE1Pcmdhbml6YXRpb25NYW5hZ2VtZW50RGVwYXJ0bWVudEVudGl0eVNlcnZpY2UsXG4gIEFYTU9yZ2FuaXphdGlvbk1hbmFnZW1lbnREaXZpc2lvbkVudGl0eVNlcnZpY2UsXG4gIEFYTU9yZ2FuaXphdGlvbk1hbmFnZW1lbnRFbXBsb3llZUVudGl0eVNlcnZpY2UsXG4gIEFYTU9yZ2FuaXphdGlvbk1hbmFnZW1lbnRQb3NpdGlvbkVudGl0eVNlcnZpY2UsXG59IGZyb20gJy4uLy4uL2VudGl0aWVzJztcbmltcG9ydCB7IEFYTU9yZ0NoYXJ0Q29uZmlnU2VydmljZSB9IGZyb20gJy4vb3JnLWNoYXJ0LWNvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBBWE1fT1JHX0NIQVJUX05PREVfVFlQRV9FTlRJVFlfTUFQUElOR1MsXG4gIEFYTU9yZ2FuaXphdGlvbk5vZGUsXG4gIEFYTU9yZ2FuaXphdGlvbk5vZGVUeXBlLFxuICBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZUNhdGVnb3J5LFxufSBmcm9tICcuL29yZy1jaGFydC50eXBlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTU9yZ0NoYXJ0U2VydmljZSB7XG4gIHByaXZhdGUgZGVwYXJ0bWVudFNlcnZpY2UgPSBpbmplY3QoQVhNT3JnYW5pemF0aW9uTWFuYWdlbWVudERlcGFydG1lbnRFbnRpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkaXZpc2lvblNlcnZpY2UgPSBpbmplY3QoQVhNT3JnYW5pemF0aW9uTWFuYWdlbWVudERpdmlzaW9uRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgYnJhbmNoU2VydmljZSA9IGluamVjdChBWE1Pcmdhbml6YXRpb25NYW5hZ2VtZW50QnJhbmNoRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgZW1wbG95bWVudFNlcnZpY2UgPSBpbmplY3QoQVhNT3JnYW5pemF0aW9uTWFuYWdlbWVudEVtcGxveWVlRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgcG9zaXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYTU9yZ2FuaXphdGlvbk1hbmFnZW1lbnRQb3NpdGlvbkVudGl0eVNlcnZpY2UpO1xuICBwcml2YXRlIGNoYXJ0U2VydmljZSA9IGluamVjdChBWE1Pcmdhbml6YXRpb25NYW5hZ2VtZW50Q2hhcnRFbnRpdHlTZXJ2aWNlKTtcblxuICBwcml2YXRlIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlID0gaW5qZWN0KEFYTU9yZ0NoYXJ0Q29uZmlnU2VydmljZSk7XG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dFRoZW1lU2VydmljZSk7XG4gIHByaXZhdGUgcmVnaW9uYWxTZXJ2aWNlID0gaW5qZWN0KEFYUFJlZ2lvbmFsU2VydmljZSk7XG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jvb3ROb2RlID0gc2lnbmFsPEFYTU9yZ2FuaXphdGlvbk5vZGU+KHsgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLCB0aXRsZTogJ0NvbXBhbnknIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSByb290Tm9kZSA9IHRoaXMuX3Jvb3ROb2RlLmFzUmVhZG9ubHkoKTtcblxuICAvLyBUaGUgY2xpcGJvYXJkIGhvbGRzIHRoZSBub2RlIGJlaW5nIGN1dCBvciBjb3BpZWQuXG4gIHByaXZhdGUgY2xpcGJvYXJkID0gc2lnbmFsPHsgbW9kZTogJ2N1dCcgfCAnY29weSc7IG5vZGU6IEFYTU9yZ2FuaXphdGlvbk5vZGUgfSB8IG51bGw+KG51bGwpO1xuXG4gIC8vI3JlZ2lvbiBMb2FkL1NhdmVcblxuICBwdWJsaWMgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaXJzdCA9IChcbiAgICAgIGF3YWl0IHRoaXMuY2hhcnRTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgICAgc2tpcDogMCxcbiAgICAgICAgdGFrZTogMSxcbiAgICAgICAgc29ydDogW3sgZmllbGQ6ICd2ZXJzaW9uJywgZGlyOiAnZGVzYycgfV0sXG4gICAgICB9KVxuICAgICkuaXRlbXNbMF07XG4gICAgLy9cbiAgICBpZiAoZmlyc3QpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBmaXJzdC5kYXRhIGFzIEFYTU9yZ2FuaXphdGlvbk5vZGU7XG4gICAgICB0aGlzLl9yb290Tm9kZS5zZXQoZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlTmV3KCk7XG4gICAgICBhd2FpdCB0aGlzLmxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZU5ldygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0ZW5hbnQgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLnRlbmFudCE7XG4gICAgY29uc3QgcmVjb3JkID0ge1xuICAgICAgaWQ6IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpLFxuICAgICAgY3JlYXRlQXQ6IG5ldyBEYXRlKCksXG4gICAgICB1cGRhdGVBdDogbmV3IERhdGUoKSxcbiAgICAgIHZlcnNpb246ICcwLjAuMCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICAgICAgdGl0bGU6IHRlbmFudC5uYW1lLFxuICAgICAgICB0eXBlOiBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZS5Db21wYW55LFxuICAgICAgICBlbnRpdHk6IHtcbiAgICAgICAgICBpZDogdGVuYW50LmlkLFxuICAgICAgICAgIHNvdXJjZTogJ3RlbmFudCcsXG4gICAgICAgIH0sXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBhd2FpdCB0aGlzLmNoYXJ0U2VydmljZS5pbnNlcnRPbmUoeyBkYXRhOiByZWNvcmQuZGF0YSwgdmVyc2lvbjogcmVjb3JkLnZlcnNpb24gfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaXJzdCA9IChhd2FpdCB0aGlzLmNoYXJ0U2VydmljZS5xdWVyeSgpKS5pdGVtc1swXTtcbiAgICBhd2FpdCB0aGlzLmNoYXJ0U2VydmljZS51cGRhdGVPbmUoZmlyc3QuaWQhLCB7XG4gICAgICB2ZXJzaW9uOiBmaXJzdC52ZXJzaW9uLFxuICAgICAgZGF0YTogdGhpcy5fcm9vdE5vZGUoKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBDb250ZXh0IE1lbnVcblxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsb3dlZEFkZE1lbnVJdGVtcyhub2RlOiBBWE1Pcmdhbml6YXRpb25Ob2RlKTogUHJvbWlzZTxBWE1lbnVJdGVtW10+IHtcbiAgICBjb25zdCBhbGxvd2VkVHlwZXMgPSBhd2FpdCB0aGlzLmdldEFsbG93ZWRDaGlsZENhdGVnb3JpZXNGb3JQYXJlbnQobm9kZSk7XG4gICAgY29uc3QgYWxsb3dlZE1lbnVJdGVtczogQVhNZW51SXRlbVtdID0gW107XG4gICAgLy8gR3JvdXAgaXRlbXMgYnkgY2F0ZWdvcnkgZm9yIHZpc3VhbCBicmVha3MuXG4gICAgY29uc3QgZ3JvdXBlZE1lbnVJdGVtczogUmVjb3JkPEFYTU9yZ2FuaXphdGlvbk5vZGVUeXBlQ2F0ZWdvcnksIEFYTWVudUl0ZW1bXT4gPSB7XG4gICAgICBDb21wYW55OiBbXSxcbiAgICAgIExvY2F0aW9uOiBbXSxcbiAgICAgIEJ1c2luZXNzVW5pdDogW10sXG4gICAgICBSb2xlOiBbXSxcbiAgICAgIEVtcGxveWVlOiBbXSxcbiAgICB9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMoQVhNX09SR19DSEFSVF9OT0RFX1RZUEVfRU5USVRZX01BUFBJTkdTKS5mb3JFYWNoKChbZW50aXR5U291cmNlLCBjb25maWddKSA9PiB7XG4gICAgICBpZiAoYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGNvbmZpZy50eXBlKSkge1xuICAgICAgICBncm91cGVkTWVudUl0ZW1zW2NvbmZpZy5jYXRlZ29yeV0ucHVzaCh7XG4gICAgICAgICAgbmFtZTogJ2FkZCcsXG4gICAgICAgICAgdGV4dDogYCR7Y29uZmlnLnRpdGxlfWAsXG4gICAgICAgICAgaWNvbjogY29uZmlnLmljb24sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgIHNvdXJjZTogZW50aXR5U291cmNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgT2JqZWN0LnZhbHVlcyhncm91cGVkTWVudUl0ZW1zKS5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgaWYgKGdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYWxsb3dlZE1lbnVJdGVtcy5wdXNoKC4uLmdyb3VwKTtcbiAgICAgICAgZ3JvdXBbZ3JvdXAubGVuZ3RoIC0gMV0uYnJlYWsgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGFsbG93ZWRNZW51SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgYWxsb3dlZE1lbnVJdGVtc1thbGxvd2VkTWVudUl0ZW1zLmxlbmd0aCAtIDFdLmJyZWFrID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBhbGxvd2VkTWVudUl0ZW1zO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIENoZWNrIFBlcm1pc3Npb25cblxuICBwcml2YXRlIGFzeW5jIGdldEFsbG93ZWRDaGlsZENhdGVnb3JpZXNGb3JQYXJlbnQocGFyZW50OiBBWE1Pcmdhbml6YXRpb25Ob2RlKTogUHJvbWlzZTxBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZVtdPiB7XG4gICAgYXdhaXQgdGhpcy5jb25maWdTZXJ2aWNlLmxvYWQoKTtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuY29uZmlnU2VydmljZS50eXBlcztcbiAgICBjb25zdCBjdXJyZW50VHlwZSA9IHBhcmVudC50eXBlO1xuICAgIGlmICghcGFyZW50IHx8ICFjdXJyZW50VHlwZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBhbGxvd2VkVHlwZXM6IFNldDxBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZT4gPSBuZXcgU2V0KCk7XG4gICAgT2JqZWN0LmVudHJpZXMoQVhNX09SR19DSEFSVF9OT0RFX1RZUEVfRU5USVRZX01BUFBJTkdTKS5mb3JFYWNoKChbZW50aXR5U291cmNlLCBjb25maWddKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmlzQWxsb3dlZChjdXJyZW50VHlwZSwgY29uZmlnLnR5cGUpICYmIHR5cGVzLmluY2x1ZGVzKGNvbmZpZy50eXBlKSkge1xuICAgICAgICBhbGxvd2VkVHlwZXMuYWRkKGNvbmZpZy50eXBlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShhbGxvd2VkVHlwZXMpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIFJlbW92ZS9DdXQvQ29weS9QYXN0XG5cbiAgcHVibGljIGFzeW5jIHJlbW92ZU5vZGUoaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHRpdGxlID0gYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdkaWFsb2dzLmRlbGV0ZS50aXRsZScpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ2RpYWxvZ3MuZGVsZXRlLm1lc3NhZ2UnKTtcbiAgICBjb25zdCBkaWFsb2dSZXN1bHQgPSBhd2FpdCB0aGlzLmRpYWxvZ1NlcnZpY2UuY29uZmlybSh0aXRsZSwgbWVzc2FnZSwgJ2RhbmdlcicsICdob3Jpem9udGFsJyk7XG4gICAgaWYgKGRpYWxvZ1Jlc3VsdC5yZXN1bHQpIHtcbiAgICAgIHRoaXMuX3Jvb3ROb2RlLnVwZGF0ZSgobm9kZSkgPT4gdGhpcy5yZW1vdmVOb2RlUmVjdXJzaXZlbHkobm9kZSwgaWQpISk7XG4gICAgICBhd2FpdCB0aGlzLnNhdmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU5vZGVSZWN1cnNpdmVseShub2RlOiBBWE1Pcmdhbml6YXRpb25Ob2RlLCBpZDogc3RyaW5nKTogQVhNT3JnYW5pemF0aW9uTm9kZSB8IG51bGwge1xuICAgIC8vIElmIHRoZSBub2RlIGl0c2VsZiBpcyB0aGUgb25lIHRvIGJlIGRlbGV0ZWQsIHJldHVybiBudWxsXG4gICAgaWYgKG5vZGUuaWQgPT09IGlkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gT3RoZXJ3aXNlLCByZWN1cnNpdmVseSBjaGVjayBjaGlsZHJlblxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlblxuICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gY2hpbGQuaWQgIT09IGlkKVxuICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgIHJldHVybiB7IC4uLmNoaWxkLCBjaGlsZHJlbjogdGhpcy5yZW1vdmVOb2RlUmVjdXJzaXZlbHkoY2hpbGQsIGlkKT8uY2hpbGRyZW4gfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwdWJsaWMgaXNQYXN0ZUF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jbGlwYm9hcmQoKSAhPSBudWxsICYmIHRoaXMuY2xpcGJvYXJkKCk/Lm5vZGUgIT0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhbGxvd1Bhc3RlKHRhcmdldDogQVhNT3JnYW5pemF0aW9uTm9kZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5pc1Bhc3RlQXZhaWxhYmxlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYWxsb3dlZFR5cGVzID0gYXdhaXQgdGhpcy5nZXRBbGxvd2VkQ2hpbGRDYXRlZ29yaWVzRm9yUGFyZW50KHRhcmdldCk7XG4gICAgLy8gQ29tcGFyZSB1c2luZyB0aGUgY2xpcGJvYXJkIG5vZGUncyBjYXRlZ29yeS5cbiAgICByZXR1cm4gYWxsb3dlZFR5cGVzLmluY2x1ZGVzKHRoaXMuY2xpcGJvYXJkKCk/Lm5vZGUudHlwZSEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEN1dHMgdGhlIG5vZGUgd2l0aCB0aGUgZ2l2ZW4gaWQuXG4gICAqIFRoZSBub2RlIGlzIHJlbW92ZWQgZnJvbSB0aGUgdHJlZSBhbmQgc3RvcmVkIGluIHRoZSBjbGlwYm9hcmQuXG4gICAqIEN1dHRpbmcgdGhlIHJvb3Qgbm9kZSBpcyBub3QgYWxsb3dlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjdXROb2RlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0cmVlID0gdGhpcy5fcm9vdE5vZGUoKTtcbiAgICBpZiAodHJlZS5pZCA9PT0gaWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGN1dCB0aGUgcm9vdCBub2RlLicpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmROb2RlQW5kUGFyZW50KHRyZWUsIGlkKTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb2RlIG5vdCBmb3VuZC4nKTtcbiAgICB9XG4gICAgLy8gU2V0IHRoZSBjbGlwYm9hcmQgc2lnbmFsIHdpdGggbW9kZSAnY3V0J1xuICAgIHRoaXMuY2xpcGJvYXJkLnNldCh7IG1vZGU6ICdjdXQnLCBub2RlOiByZXN1bHQubm9kZSB9KTtcbiAgICAvLyBSZW1vdmUgdGhlIG5vZGUgZnJvbSB0aGUgdHJlZS5cbiAgICBjb25zdCBuZXdUcmVlID0gdGhpcy5yZW1vdmVOb2RlUmVjdXJzaXZlbHkodHJlZSwgaWQpO1xuICAgIHRoaXMuX3Jvb3ROb2RlLnNldChuZXdUcmVlISk7XG4gICAgYXdhaXQgdGhpcy5zYXZlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29waWVzIHRoZSBub2RlIHdpdGggdGhlIGdpdmVuIGlkLlxuICAgKiBBIGRlZXAgY2xvbmUgb2YgdGhlIG5vZGUgaXMgc3RvcmVkIGluIHRoZSBjbGlwYm9hcmQuXG4gICAqL1xuICBwdWJsaWMgY29weU5vZGUoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRyZWUgPSB0aGlzLl9yb290Tm9kZSgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZE5vZGVBbmRQYXJlbnQodHJlZSwgaWQpO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vZGUgbm90IGZvdW5kLicpO1xuICAgIH1cbiAgICAvLyBVc2UgbG9kYXNoJ3MgY2xvbmVEZWVwIHRvIGNyZWF0ZSBhIGRlZXAgY2xvbmUuXG4gICAgY29uc3QgY29waWVkTm9kZSA9IGNsb25lRGVlcChyZXN1bHQubm9kZSk7XG4gICAgdGhpcy5jbGlwYm9hcmQuc2V0KHsgbW9kZTogJ2NvcHknLCBub2RlOiBjb3BpZWROb2RlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhc3RlcyB0aGUgbm9kZSBpbiB0aGUgY2xpcGJvYXJkIGFzIGEgY2hpbGQgb2YgdGhlIG5vZGUgd2l0aCB0aGUgZ2l2ZW4gcGFyZW50SWQuXG4gICAqIEZvciBhIGN1dCwgdGhlIG5vZGUgaXMgbW92ZWQ7IGZvciBhIGNvcHksIG5ldyBJRHMgYXJlIGdlbmVyYXRlZCBzbyB0aGUgcGFzdGVkIG5vZGUgaXMgdW5pcXVlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHBhc3RlTm9kZShwYXJlbnRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2xpcGJvYXJkVmFsdWUgPSB0aGlzLmNsaXBib2FyZCgpO1xuICAgIGlmICghY2xpcGJvYXJkVmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2xpcGJvYXJkIGlzIGVtcHR5LicpO1xuICAgIH1cbiAgICBjb25zdCB0cmVlID0gdGhpcy5fcm9vdE5vZGUoKTtcbiAgICBjb25zdCBwYXJlbnRSZXN1bHQgPSB0aGlzLmZpbmROb2RlQW5kUGFyZW50KHRyZWUsIHBhcmVudElkKTtcbiAgICBpZiAoIXBhcmVudFJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJlbnQgbm9kZSBub3QgZm91bmQuJyk7XG4gICAgfVxuICAgIGxldCBub2RlVG9QYXN0ZTogQVhNT3JnYW5pemF0aW9uTm9kZTtcbiAgICBpZiAoY2xpcGJvYXJkVmFsdWUubW9kZSA9PT0gJ2N1dCcpIHtcbiAgICAgIG5vZGVUb1Bhc3RlID0gY2xpcGJvYXJkVmFsdWUubm9kZTtcbiAgICAgIC8vIENsZWFyIHRoZSBjbGlwYm9hcmQgYWZ0ZXIgcGFzdGluZy5cbiAgICAgIHRoaXMuY2xpcGJvYXJkLnNldChudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZVRvUGFzdGUgPSB0aGlzLmNsb25lTm9kZVdpdGhOZXdJZHMoY2xpcGJvYXJkVmFsdWUubm9kZSk7XG4gICAgfVxuICAgIGNvbnN0IG5ld1RyZWUgPSB0aGlzLmluc2VydE5vZGVSZWN1cnNpdmVseSh0cmVlLCBwYXJlbnRJZCwgbm9kZVRvUGFzdGUpO1xuICAgIHRoaXMuX3Jvb3ROb2RlLnNldChuZXdUcmVlKTtcbiAgICBhd2FpdCB0aGlzLnNhdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBzZWFyY2hlcyB0aGUgdHJlZSBmb3IgdGhlIG5vZGUgd2l0aCB0aGUgZ2l2ZW4gaWQsXG4gICAqIHJldHVybmluZyBib3RoIHRoZSBub2RlIGFuZCBpdHMgcGFyZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBmaW5kTm9kZUFuZFBhcmVudChcbiAgICBub2RlOiBBWE1Pcmdhbml6YXRpb25Ob2RlLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcGFyZW50OiBBWE1Pcmdhbml6YXRpb25Ob2RlIHwgbnVsbCA9IG51bGxcbiAgKTogeyBub2RlOiBBWE1Pcmdhbml6YXRpb25Ob2RlOyBwYXJlbnQ6IEFYTU9yZ2FuaXphdGlvbk5vZGUgfCBudWxsIH0gfCBudWxsIHtcbiAgICBpZiAobm9kZS5pZCA9PT0gaWQpIHtcbiAgICAgIHJldHVybiB7IG5vZGUsIHBhcmVudCB9O1xuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZE5vZGVBbmRQYXJlbnQoY2hpbGQsIGlkLCBub2RlKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQ2xvbmVzIGEgbm9kZSByZWN1cnNpdmVseSBhbmQgZ2VuZXJhdGVzIG5ldyBJRHMgZm9yIHRoZSBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAqL1xuICBwcml2YXRlIGNsb25lTm9kZVdpdGhOZXdJZHMobm9kZTogQVhNT3JnYW5pemF0aW9uTm9kZSk6IEFYTU9yZ2FuaXphdGlvbk5vZGUge1xuICAgIC8vIEZpcnN0LCBjbG9uZSB0aGUgbm9kZSB1c2luZyBsb2Rhc2guXG4gICAgY29uc3QgbmV3Tm9kZSA9IGNsb25lRGVlcChub2RlKTtcbiAgICAvLyBUaGVuLCBhc3NpZ24gbmV3IElEcyByZWN1cnNpdmVseS5cbiAgICB0aGlzLmFzc2lnbk5ld0lkcyhuZXdOb2RlKTtcbiAgICByZXR1cm4gbmV3Tm9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBhc3NpZ25zIG5ldyB1bmlxdWUgSURzIHRvIHRoZSBnaXZlbiBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAqL1xuICBwcml2YXRlIGFzc2lnbk5ld0lkcyhub2RlOiBBWE1Pcmdhbml6YXRpb25Ob2RlKTogdm9pZCB7XG4gICAgbm9kZS5pZCA9IEFYUERhdGFHZW5lcmF0b3IudXVpZCgpO1xuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB0aGlzLmFzc2lnbk5ld0lkcyhjaGlsZCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSB0cmF2ZXJzZXMgdGhlIHRyZWUgdG8gaW5zZXJ0IG5ld05vZGUgYXMgYSBjaGlsZCBvZiB0aGUgbm9kZSB3aXRoIHBhcmVudElkLlxuICAgKi9cbiAgcHJpdmF0ZSBpbnNlcnROb2RlUmVjdXJzaXZlbHkoXG4gICAgbm9kZTogQVhNT3JnYW5pemF0aW9uTm9kZSxcbiAgICBwYXJlbnRJZDogc3RyaW5nLFxuICAgIG5ld05vZGU6IEFYTU9yZ2FuaXphdGlvbk5vZGVcbiAgKTogQVhNT3JnYW5pemF0aW9uTm9kZSB7XG4gICAgaWYgKG5vZGUuaWQgPT09IHBhcmVudElkKSB7XG4gICAgICBjb25zdCBuZXdDaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gPyBbLi4ubm9kZS5jaGlsZHJlbiwgbmV3Tm9kZV0gOiBbbmV3Tm9kZV07XG4gICAgICByZXR1cm4geyAuLi5ub2RlLCBjaGlsZHJlbjogbmV3Q2hpbGRyZW4gfTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm5vZGUsXG4gICAgICAgIGNoaWxkcmVuOiBub2RlLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHRoaXMuaW5zZXJ0Tm9kZVJlY3Vyc2l2ZWx5KGNoaWxkLCBwYXJlbnRJZCwgbmV3Tm9kZSkpLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gQWRkIE5vZGVcblxuICBwdWJsaWMgYXN5bmMgYWRkTm9kZShkYXRhOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLmxheW91dFNlcnZpY2Uuc2V0TmF2aWdhdGlvbkxvYWRpbmcodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IChhd2FpdCBpbXBvcnQoJy4vYWRkLWl0ZW0vYWRkLWl0ZW0uY29tcG9uZW50JykpLkFkZEl0ZW1Db21wb25lbnQ7XG4gICAgICBjb25zdCBub2RlID0gZ2V0KGRhdGEsICdub2RlJykgYXMgQVhNT3JnYW5pemF0aW9uTm9kZTtcbiAgICAgIGNvbnN0IHR5cGUgPSBnZXQoZGF0YSwgJ2NvbmZpZy50eXBlJyk7XG4gICAgICBjb25zdCBpY29uID0gZ2V0KGRhdGEsICdjb25maWcuaWNvbicpO1xuICAgICAgY29uc3Qgc291cmNlID0gZ2V0KGRhdGEsICdzb3VyY2UnKTtcbiAgICAgIGxldCBxdWVyeTogKHJlcXVlc3Q6IEFYUFF1ZXJ5UmVxdWVzdCkgPT4gUHJvbWlzZTxBWFBQYWdlZExpc3RSZXN1bHQ8dW5rbm93bj4+O1xuXG4gICAgICBjb25zdCBjb3VudHJ5U291cmNlID0gYXN5bmMgKHJlcXVlc3Q6IEFYUFF1ZXJ5UmVxdWVzdCkgPT4ge1xuICAgICAgICBsZXQgbGlzdCA9IGF3YWl0IHRoaXMucmVnaW9uYWxTZXJ2aWNlLmdldENvdW50cmllcygpO1xuICAgICAgICBpZiAocmVxdWVzdC5maWx0ZXIpIHtcbiAgICAgICAgICBsaXN0ID0gYXBwbHlGaWx0ZXJBcnJheShsaXN0LCBbcmVxdWVzdC5maWx0ZXJdKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtcyA9IGxpc3QubWFwKChjKSA9PiAoe1xuICAgICAgICAgIGlkOiBjLmNvZGUsXG4gICAgICAgICAgdGl0bGU6IGMudGl0bGUsXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIHsgaXRlbXMsIHRvdGFsOiBpdGVtcy5sZW5ndGggfSBhcyBBWFBQYWdlZExpc3RSZXN1bHQ7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBwcm92aW5jZVNvdXJjZSA9IGFzeW5jIChyZXF1ZXN0OiBBWFBRdWVyeVJlcXVlc3QpID0+IHtcbiAgICAgICAgbGV0IGxpc3QgPSBhd2FpdCB0aGlzLnJlZ2lvbmFsU2VydmljZS5nZXRQcm92aW5jZXMoXG4gICAgICAgICAgbm9kZS50eXBlID09PSBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZS5Db3VudHJ5ID8gbm9kZS5lbnRpdHk/LmlkIDogdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChyZXF1ZXN0LmZpbHRlcikge1xuICAgICAgICAgIGxpc3QgPSBhcHBseUZpbHRlckFycmF5KGxpc3QsIFtyZXF1ZXN0LmZpbHRlcl0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gbGlzdC5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgaWQ6IGMuY29kZSxcbiAgICAgICAgICB0aXRsZTogYy50aXRsZSxcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4geyBpdGVtcywgdG90YWw6IGl0ZW1zLmxlbmd0aCB9IGFzIEFYUFBhZ2VkTGlzdFJlc3VsdDtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNpdHlTb3VyY2UgPSBhc3luYyAocmVxdWVzdDogQVhQUXVlcnlSZXF1ZXN0KSA9PiB7XG4gICAgICAgIGxldCBmaWx0ZXI6IHsgY291bnRyeUlkPzogc3RyaW5nOyBwcm92aW5jZUlkPzogc3RyaW5nIH0gPSB7fTtcblxuICAgICAgICBpZiAobm9kZS50eXBlID09PSBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZS5Db3VudHJ5KSB7XG4gICAgICAgICAgZmlsdGVyLmNvdW50cnlJZCA9IG5vZGUuZW50aXR5Py5pZDtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLnR5cGUgPT09IEFYTU9yZ2FuaXphdGlvbk5vZGVUeXBlLlN0YXRlKSB7XG4gICAgICAgICAgZmlsdGVyLnByb3ZpbmNlSWQgPSBub2RlLmVudGl0eT8uaWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGlzdCA9IGF3YWl0IHRoaXMucmVnaW9uYWxTZXJ2aWNlLmdldENpdGllcyhmaWx0ZXIpO1xuICAgICAgICBpZiAocmVxdWVzdC5maWx0ZXIpIHtcbiAgICAgICAgICBsaXN0ID0gYXBwbHlGaWx0ZXJBcnJheShsaXN0LCBbcmVxdWVzdC5maWx0ZXJdKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtcyA9IGxpc3QubWFwKChjKSA9PiAoe1xuICAgICAgICAgIGlkOiBjLmNvZGUsXG4gICAgICAgICAgdGl0bGU6IGMudGl0bGUsXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuIHsgaXRlbXMsIHRvdGFsOiBpdGVtcy5sZW5ndGggfSBhcyBBWFBQYWdlZExpc3RSZXN1bHQ7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2YWx1ZUZpZWxkID0gJ2lkJztcbiAgICAgIGNvbnN0IHRpdGxlRmllbGQgPSAndGl0bGUnO1xuICAgICAgY29uc3Qgc3VidGl0bGVGaWVsZCA9IG51bGw7XG4gICAgICBjb25zdCBkZXNjcmlwdGlvbkZpZWxkID0gJ2Rlc2NyaXB0aW9uJztcblxuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgQVhNT3JnYW5pemF0aW9uTm9kZVR5cGUuQ291bnRyeTpcbiAgICAgICAgICBxdWVyeSA9IGNvdW50cnlTb3VyY2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQVhNT3JnYW5pemF0aW9uTm9kZVR5cGUuU3RhdGU6XG4gICAgICAgICAgcXVlcnkgPSBwcm92aW5jZVNvdXJjZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZS5DaXR5OlxuICAgICAgICAgIHF1ZXJ5ID0gY2l0eVNvdXJjZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZS5EZXBhcnRtZW50OlxuICAgICAgICAgIHF1ZXJ5ID0gdGhpcy5kZXBhcnRtZW50U2VydmljZS5xdWVyeS5iaW5kKHRoaXMuZGVwYXJ0bWVudFNlcnZpY2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEFYTU9yZ2FuaXphdGlvbk5vZGVUeXBlLkRpdmlzaW9uOlxuICAgICAgICAgIHF1ZXJ5ID0gdGhpcy5kaXZpc2lvblNlcnZpY2UucXVlcnkuYmluZCh0aGlzLmRpdmlzaW9uU2VydmljZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQVhNT3JnYW5pemF0aW9uTm9kZVR5cGUuQnJhbmNoOlxuICAgICAgICAgIHF1ZXJ5ID0gdGhpcy5icmFuY2hTZXJ2aWNlLnF1ZXJ5LmJpbmQodGhpcy5icmFuY2hTZXJ2aWNlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZS5Qb3NpdGlvbjpcbiAgICAgICAgICBxdWVyeSA9IHRoaXMucG9zaXRpb25TZXJ2aWNlLnF1ZXJ5LmJpbmQodGhpcy5wb3NpdGlvblNlcnZpY2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEFYTU9yZ2FuaXphdGlvbk5vZGVUeXBlLkVtcGxveWVlOlxuICAgICAgICAgIHF1ZXJ5ID0gdGhpcy5lbXBsb3ltZW50U2VydmljZS5xdWVyeS5iaW5kKHRoaXMuZW1wbG95bWVudFNlcnZpY2UpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgbm9kZSB0eXBlOiAke3R5cGV9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oY29tcG9uZW50LCB7XG4gICAgICAgIHRpdGxlOiBgQWRkICR7Z2V0KGRhdGEsICdjb25maWcudGl0bGUnKX1gLFxuICAgICAgICBzaXplOiAnbWQnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICB2YWx1ZUZpZWxkLFxuICAgICAgICAgICAgdGl0bGVGaWVsZCxcbiAgICAgICAgICAgIHN1YnRpdGxlRmllbGQsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbkZpZWxkLFxuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKCFyZXN1bHQuZGF0YSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld05vZGU6IEFYTU9yZ2FuaXphdGlvbk5vZGUgPSB7XG4gICAgICAgIGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICAgICAgdGl0bGU6IHJlc3VsdC5kYXRhLnRpdGxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogcmVzdWx0LmRhdGEuZGVzY3JpcHRpb24sXG4gICAgICAgIHN1YnRpdGxlOiByZXN1bHQuZGF0YS5zdWJ0aXRsZSxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgcGFyZW50SWQ6IG5vZGUuaWQsXG4gICAgICAgIGljb24sXG4gICAgICAgIGVudGl0eToge1xuICAgICAgICAgIGlkOiByZXN1bHQuZGF0YS5pZCxcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHRyZWUgPSB0aGlzLl9yb290Tm9kZSgpO1xuICAgICAgY29uc3QgbmV3VHJlZSA9IHRoaXMuaW5zZXJ0Tm9kZVJlY3Vyc2l2ZWx5KHRyZWUsIG5vZGUuaWQsIG5ld05vZGUpO1xuICAgICAgdGhpcy5fcm9vdE5vZGUuc2V0KG5ld1RyZWUpO1xuICAgICAgYXdhaXQgdGhpcy5zYXZlKCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmxheW91dFNlcnZpY2Uuc2V0TmF2aWdhdGlvbkxvYWRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuIl19","import { AXPanViewDirective } from '@acorex/cdk/pan-view';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXContextMenuComponent, AXMenuModule, } from '@acorex/components/menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, inject, NgZone, signal, viewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport get from 'lodash-es/get';\nimport set from 'lodash-es/set';\nimport { RootConfig } from '../../const';\nimport { AXMOrgChartConfigService } from './org-chart-configuration.service';\nimport { AXMOrgChartPrintService } from './org-chart-print.service';\nimport { AXMOrgChartService } from './org-chart.service';\nimport { AXM_ORG_CHART_NODE_TYPE_ENTITY_MAPPINGS, AXMOrganizationNodeType, AXMOrganizationNodeTypeCategory, } from './org-chart.type';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/menu\";\nimport * as i3 from \"@acorex/components/button\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@acorex/components/decorators\";\n/**\n * Component for displaying and interacting with an organizational chart.\n */\nexport class AXMOrgChartPage extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n this.rootConfig = RootConfig;\n this.nodeTemplate = viewChild.required('nodeTemplate');\n this.treeContainer = viewChild.required('chart');\n this.parent = viewChild.required('parent');\n this.contextMenu = viewChild(AXContextMenuComponent);\n this.panView = viewChild(AXPanViewDirective);\n this.ngzone = inject(NgZone);\n this.viewContainerRef = inject(ViewContainerRef);\n this.chartPrintService = inject(AXMOrgChartPrintService);\n this.chartService = inject(AXMOrgChartService);\n this.NODE_STROKE_COLOR = 'rgba(var(--ax-sys-color-primary-400))';\n this.LINK_STROKE_WIDTH = 1;\n this.NodeTypes = AXMOrganizationNodeTypeCategory;\n this.isFullscreen = signal(false);\n this.panX = signal(0);\n this.panY = signal(0);\n this.panZoomLevel = signal(100);\n this.isChartRendered = false;\n this.nodeTypes = Object.entries(AXM_ORG_CHART_NODE_TYPE_ENTITY_MAPPINGS).map((c) => ({\n title: c[1].title,\n color: c[1].color,\n icon: c[1].icon,\n category: c[1].category,\n }));\n this.#initialize = afterNextRender(async () => {\n this.d3 = await import('d3');\n await this.chartService.load();\n await this.refreshChart();\n });\n }\n #initialize;\n /**\n * Zooms in the chart.\n */\n zoomIn() {\n this.panView()?.zoomIn();\n }\n /**\n * Zooms out the chart.\n */\n zoomOut() {\n this.panView()?.zoomOut();\n }\n /**\n * Resets the zoom level and pan position of the chart.\n */\n zoomReset() {\n this.panView()?.resetPosition();\n }\n /**\n * Toggles fullscreen mode for the chart.\n */\n toggleFullscreen() {\n if (this.isFullscreen()) {\n document.exitFullscreen();\n this.isFullscreen.set(false);\n }\n else {\n this.parent().nativeElement.requestFullscreen();\n this.isFullscreen.set(true);\n }\n document.querySelector(`foreignObject[node=\"node-${this.chartService.rootNode().id}\"]`)?.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n inline: 'center',\n });\n }\n /**\n * Calculates the maximum depth of the organizational chart.\n * @param node - The root node of the chart.\n * @returns The maximum depth of the chart.\n */\n calculateMaxDepth(node) {\n if (!node.children || node.children.length === 0 || node.isExpanded === false) {\n return 1;\n }\n return 1 + Math.max(...node.children.map((child) => this.calculateMaxDepth(child)));\n }\n /**\n * Calculates the maximum breadth of the organizational chart.\n * @param node - The root node of the chart.\n * @returns The maximum breadth of the chart.\n */\n calculateMaxBreadth(node) {\n if (!node.children || node.children.length === 0 || node.isExpanded === false) {\n return 1;\n }\n return node.children.reduce((acc, child) => acc + this.calculateMaxBreadth(child), 0);\n }\n /**\n * Creates and renders the organizational chart.\n * @param el - The container element for the chart.\n * @param data - The root node of the organizational chart.\n */\n createChart(el, data) {\n if (!this.d3) {\n return;\n }\n this.ngzone.runOutsideAngular(() => {\n const NODE_WIDTH_BASE = 260;\n const NODE_HEIGHT_BASE = 180;\n const HORIZONTAL_SPACING = 20;\n const VERTICAL_SPACING = 40;\n this.clearChart(el);\n const newSvg = this.d3.select(el).append('svg');\n const root = this.d3.hierarchy(data);\n root.descendants().forEach((node) => {\n if (node.data.isExpanded === false) {\n node.children = undefined;\n }\n });\n const treeLayout = this.d3\n .tree()\n .nodeSize([NODE_WIDTH_BASE + HORIZONTAL_SPACING, NODE_HEIGHT_BASE + VERTICAL_SPACING]);\n treeLayout(root);\n let minX = Infinity, maxX = -Infinity, minY = Infinity, maxY = -Infinity;\n root.descendants().forEach((d) => {\n if (d.x < minX)\n minX = d.x;\n if (d.x > maxX)\n maxX = d.x;\n if (d.y < minY)\n minY = d.y;\n if (d.y > maxY)\n maxY = d.y;\n });\n const CONTAINER_WIDTH = maxX - minX + NODE_WIDTH_BASE + 2 * HORIZONTAL_SPACING;\n const CONTAINER_HEIGHT = maxY - minY + NODE_HEIGHT_BASE + 2 * VERTICAL_SPACING;\n newSvg.attr('width', CONTAINER_WIDTH).attr('height', CONTAINER_HEIGHT);\n const g = newSvg\n .append('g')\n .attr('transform', `translate(${-minX + NODE_WIDTH_BASE / 2 + HORIZONTAL_SPACING / 2}, ${-minY + NODE_HEIGHT_BASE / 2 + VERTICAL_SPACING / 2})`);\n const link = g\n .selectAll('.link')\n .data(root.links())\n .enter()\n .append('path')\n .attr('class', 'link')\n .attr('d', (d) => {\n const source = d.source;\n const target = d.target;\n return `M${source.x},${source.y}V${(source.y + target.y) / 2}H${target.x}V${target.y - 10}`;\n })\n .attr('fill', 'none')\n .attr('stroke', this.NODE_STROKE_COLOR)\n .attr('stroke-width', this.LINK_STROKE_WIDTH)\n .attr('from', (d) => `node-${d.source.data.id}`)\n .attr('to', (d) => `node-${d.target.data.id}`);\n const node = g\n .selectAll('.axp-chart-node')\n .data(root.descendants())\n .enter()\n .append('foreignObject')\n .attr('class', 'axp-chart-node')\n .attr('node', (d) => `node-${d.data.id}`)\n .attr('x', (d) => d.x - NODE_WIDTH_BASE / 2)\n .attr('y', (d) => d.y - NODE_HEIGHT_BASE / 2 + 10)\n .attr('width', NODE_WIDTH_BASE)\n .attr('height', NODE_HEIGHT_BASE)\n .each((d) => this.renderNodeTemplate(d.data, d.x, d.y));\n this.contextMenu()?.refresh();\n });\n if (!this.isChartRendered) {\n // document.querySelector(`foreignObject[node=\"node-${data.id}\"] .--heading-container`)?.scrollIntoView({\n // behavior: 'smooth',\n // block: 'center',\n // inline: 'center',\n // });\n this.isChartRendered = true;\n this.panView()?.resetPosition();\n }\n }\n /**\n * Renders the node template for a given organizational node.\n * @param data - The node data.\n * @param x - The x-coordinate of the node.\n * @param y - The y-coordinate of the node.\n */\n renderNodeTemplate(data, x, y) {\n // Find the key that matches the node type\n const entityKey = Object.keys(AXM_ORG_CHART_NODE_TYPE_ENTITY_MAPPINGS).find((key) => {\n const keyName = key.split('.').pop(); // Get the last part after splitting by '.'\n return keyName === data.type; // Compare with data.type\n });\n if (entityKey) {\n const categoryMapping = AXM_ORG_CHART_NODE_TYPE_ENTITY_MAPPINGS[entityKey];\n // Add the category to the data object\n set(data, 'category', categoryMapping.category);\n }\n const viewRef = this.viewContainerRef.createEmbeddedView(this.nodeTemplate(), {\n $implicit: data,\n });\n const nodeElement = this.d3.select(this.treeContainer().nativeElement).select(`[node=\"node-${data.id}\"]`);\n const element = nodeElement.node();\n if (element) {\n element.appendChild(viewRef.rootNodes[0]);\n }\n }\n /**\n * Toggles the expansion state of a node.\n * @param data - The node data.\n * @param el - The HTML element representing the node.\n */\n toggleNode(data, el) {\n data.isExpanded = data.isExpanded === undefined ? false : !data.isExpanded;\n this.createChart(this.treeContainer().nativeElement, this.chartService.rootNode());\n // el.scrollIntoView({\n // behavior: 'smooth',\n // });\n }\n /**\n * Clears the chart from the container element.\n * @param el - The container element.\n */\n clearChart(el) {\n if (this.d3) {\n this.d3.select(el).select('svg').remove();\n this.viewContainerRef.clear();\n }\n }\n async refreshChart() {\n if (this.d3) {\n this.createChart(this.treeContainer().nativeElement, this.chartService.rootNode());\n }\n }\n //#region Context Menu\n async handleContextMenuOnOpening(e) {\n const node = get(e.targetElement, '__data__.data');\n const allowedAddItems = await this.chartService.getAllowedAddMenuItems(node);\n const allowDelete = node.type != AXMOrganizationNodeType.Company;\n const isPasteAvailable = await this.chartService.isPasteAvailable();\n const allowPaste = await this.chartService.allowPaste(node);\n //\n if (allowedAddItems.length) {\n e.items.push({\n text: 'Add New',\n icon: 'fa-light fa-plus',\n items: allowedAddItems,\n break: allowDelete,\n });\n }\n //\n if (allowDelete) {\n e.items.push({\n name: 'cut',\n text: 'Cut',\n icon: 'fa-light fa-cut',\n data: node,\n });\n e.items.push({\n name: 'copy',\n text: 'Copy',\n icon: 'fa-light fa-copy',\n data: node,\n break: !isPasteAvailable,\n });\n }\n if (isPasteAvailable) {\n e.items.push({\n name: 'paste',\n text: 'Paste',\n icon: 'fa-light fa-paste',\n data: node,\n break: true,\n disabled: !allowPaste,\n });\n }\n //\n if (allowDelete) {\n e.items.push({\n name: 'remove',\n text: 'Remove',\n color: 'danger',\n icon: 'fa-light fa-trash-can',\n data: node,\n });\n }\n //\n if (e.items.length == 0) {\n e.canceled = true;\n }\n }\n async handleContextMenuItemClick(e) {\n //\n if (e.item.name == 'add') {\n if (await this.chartService.addNode(e.item.data)) {\n await this.refreshChart();\n }\n }\n //\n else if (e.item.name == 'remove') {\n await this.chartService.removeNode(e.item.data.id);\n await this.refreshChart();\n }\n //\n else if (e.item.name == 'copy') {\n await this.chartService.copyNode(e.item.data.id);\n }\n else if (e.item.name == 'cut') {\n await this.chartService.cutNode(e.item.data.id);\n await this.refreshChart();\n }\n else if (e.item.name == 'paste') {\n await this.chartService.pasteNode(e.item.data.id);\n await this.refreshChart();\n }\n }\n //#endregion\n /**\n * Prints the organizational chart.\n */\n async printChart() {\n let [panX, panY, panZoomLevel] = [this.panX(), this.panY(), this.panZoomLevel()];\n this.panX.set(0), this.panY.set(0), this.panZoomLevel.set(100);\n await this.chartPrintService.printChart(this.treeContainer().nativeElement);\n this.panX.set(panX), this.panY.set(panY), this.panZoomLevel.set(panZoomLevel);\n }\n /**\n * Gets the node colors based on the provided color.\n * @param color - The color to use for the node.\n * @returns An object containing the node's background, text, and border colors.\n */\n getNodeColors(color) {\n if (color.includes('surface')) {\n return {\n '--node-bg-color': `var(--ax-sys-color-${color})`,\n '--node-text-color': `var(--ax-sys-color-on-${color})`,\n '--node-border-color': `var(--ax-sys-color-border-${color})`,\n };\n }\n return {\n '--node-bg-color': `var(--ax-sys-color-${color}-surface)`,\n '--node-text-color': `var(--ax-sys-color-on-${color}-surface)`,\n '--node-border-color': `var(--ax-sys-color-border-${color}-surface)`,\n };\n }\n updateVar(oldValue, newValue) {\n oldValue.cat = newValue;\n }\n async getPageTitle() {\n return await this.translateService.translateAsync('chart.page-title', { scope: this.rootConfig.config.i18n });\n }\n async getPageDescription() {\n return await this.translateService.translateAsync('chart.page-description', { scope: this.rootConfig.config.i18n });\n }\n async getSecondaryMenuItems() {\n return [\n {\n title: await this.translateService.translateAsync('chart.actions.print', { scope: this.rootConfig.config.i18n }),\n icon: 'fa-light fa-print',\n color: 'primary',\n name: 'print',\n command: {\n name: 'print',\n },\n }\n ];\n }\n async getPageBreadcrumbs() {\n return [\n {\n title: await this.translateService.translateAsync('root-menu', { scope: this.rootConfig.config.i18n })\n },\n ];\n }\n async execute(command) {\n if (command.name == 'print') {\n await this.printChart();\n }\n }\n ngOnDestroy() {\n this.clearChart(this.treeContainer().nativeElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMOrgChartPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.7\", type: AXMOrgChartPage, isStandalone: true, selector: \"ng-component\", providers: [\n AXMOrgChartConfigService,\n AXMOrgChartService,\n AXMOrgChartPrintService,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMOrgChartPage\n }\n ], viewQueries: [{ propertyName: \"nodeTemplate\", first: true, predicate: [\"nodeTemplate\"], descendants: true, isSignal: true }, { propertyName: \"treeContainer\", first: true, predicate: [\"chart\"], descendants: true, isSignal: true }, { propertyName: \"parent\", first: true, predicate: [\"parent\"], descendants: true, isSignal: true }, { propertyName: \"contextMenu\", first: true, predicate: AXContextMenuComponent, descendants: true, isSignal: true }, { propertyName: \"panView\", first: true, predicate: AXPanViewDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-content class=\\\"ax-overflow-hidden\\\">\\n <div class=\\\"ax-h-[calc(100vh-290px)]\\\" #parent id=\\\"parent\\\">\\n <div #chart axPanView [(panX)]=\\\"panX\\\" [(panY)]=\\\"panY\\\" [freeMode]=\\\"true\\\" [(zoom)]=\\\"panZoomLevel\\\"\\n [fitContent]=\\\"true\\\" wrapperClasses=\\\"h\\\" class=\\\"ax-light\\\"></div>\\n <ax-context-menu [target]=\\\"'.axp-chart-node'\\\" [orientation]=\\\"'vertical'\\\" [closeOn]=\\\"'leave'\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\" (onOpening)=\\\"handleContextMenuOnOpening($event)\\\">\\n </ax-context-menu>\\n </div>\\n </axp-page-content>\\n <axp-page-footer>\\n <axp-layout-prefix>\\n <div class=\\\"ax-flex ax-gap-1 ax-light ax-flex-wrap ax-justify-center\\\">\\n @let v = {cat:'Company'}; @for (item of nodeTypes; track $index) {\\n <div class=\\\"axp-node-hint\\\" [style]=\\\"getNodeColors(item.color)\\\" [class.ax-ms-4]=\\\"v.cat!=item.category\\\">\\n <div class=\\\"--badge\\\"></div>\\n {{item.title}}\\n </div>\\n {{updateVar(v,item.category)}} }\\n </div>\\n </axp-layout-prefix>\\n <axp-layout-suffix>\\n <div class=\\\"ax-flex ax-gap-2\\\">\\n <ax-button (onClick)=\\\"zoomOut()\\\">\\n <ax-icon class=\\\"fa-solid fa-minus\\\"> </ax-icon>\\n </ax-button>\\n <ax-button [text]=\\\"panZoomLevel()\\\" (onClick)=\\\"zoomReset()\\\"></ax-button>\\n <ax-button (onClick)=\\\"zoomIn()\\\">\\n <ax-icon class=\\\"fa-solid fa-add\\\"> </ax-icon>\\n </ax-button>\\n <ax-button (onClick)=\\\"toggleFullscreen()\\\">\\n <ax-icon>\\n <i class=\\\"fa-solid\\\" [class]=\\\"isFullscreen()? 'fa-compress' : 'fa-expand'\\\"></i>\\n </ax-icon>\\n </ax-button>\\n </div>\\n </axp-layout-suffix>\\n </axp-page-footer>\\n</axp-page-layout>\\n\\n<ng-template #nodeTemplate let-data>\\n <div>\\n @switch (data.category) {\\n <!-- Company -->\\n @case (NodeTypes.Company) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'primary' }\\\"></ng-container>\\n }\\n <!-- Location -->\\n @case (NodeTypes.Location) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent1' }\\\"></ng-container>\\n }\\n <!-- BusinessUnit -->\\n @case (NodeTypes.BusinessUnit) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent2' }\\\"></ng-container>\\n }\\n <!-- Role -->\\n @case (NodeTypes.Role) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent3' }\\\"></ng-container>\\n }\\n <!-- Employee -->\\n @case (NodeTypes.Employee) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'surface' }\\\"></ng-container>\\n } }\\n </div>\\n</ng-template>\\n\\n<!----------------------------------- General Node Template ----------------------------------->\\n<ng-template #generalTemplate let-data=\\\"data\\\" let-color=\\\"color\\\">\\n <div #node class=\\\"--node-container\\\" [style]=\\\"getNodeColors(color)\\\">\\n <div class=\\\"--container\\\">\\n <div class=\\\"--heading-container\\\">\\n <div class=\\\"--content\\\">\\n <div class=\\\"--icon\\\">\\n <i class=\\\"fa-light fa-xl fa-fw\\\" [class]=\\\"data.icon\\\"></i>\\n </div>\\n <div class=\\\"--titles\\\">\\n <span class=\\\"--title\\\">{{data.title}}</span>\\n @if(data.subtitle) {\\n <span class=\\\"--sub-title\\\">{{data.subtitle}}</span>\\n }\\n </div>\\n @if(data?.children?.length){\\n <div class=\\\"--badge\\\">\\n <span>{{data?.children?.length ?? 0}}</span>\\n </div>\\n }\\n </div>\\n </div>\\n @if(data.description) {\\n <div class=\\\"--body-container\\\">\\n <div class=\\\"--description\\\" [class.ax-pb-3]=\\\"data.children && data.children.length > 0\\\">\\n {{data.description}}\\n </div>\\n </div>\\n } @if(data.children && data.children.length > 0){\\n <div class=\\\"--toggle\\\">\\n <ax-button class=\\\"ax-xs ax-rounded-sm\\\" (onClick)=\\\"toggleNode(data,node)\\\">\\n <ax-icon icon=\\\"fa-solid\\\" [class]=\\\"data.isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n </div>\\n</ng-template>\", styles: [\".axp-node-hint{display:flex;align-items:center;justify-content:center;gap:.25rem;font-size:.75rem;line-height:1rem}.axp-node-hint>div.--badge{background-color:rgba(var(--node-bg-color));color:rgba(var(--node-text-color));display:flex;width:.75rem;height:.75rem;align-items:center;justify-content:center;border-radius:.125rem}.axp-chart-node{display:flex;align-items:center;justify-content:center}.axp-chart-node .--node-container{position:relative;cursor:pointer;--node-bg-color: var(--ax-sys-color-primary-surface);--node-text-color: var(--ax-sys-color-on-primary-surface);--node-border-color: var(--ax-sys-color-border-primary-surface)}.axp-chart-node .--node-container .--container{display:flex;max-height:100%;width:100%;flex-direction:column;overflow:hidden;border-radius:.375rem;border-width:1px;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);border-color:rgba(var(--node-border-color))}.axp-chart-node .--node-container .--container .--heading-container{background-color:rgba(var(--node-bg-color));color:rgba(var(--node-text-color));width:100%;padding:.5rem .75rem}.axp-chart-node .--node-container .--container .--heading-container .--content{display:flex;width:100%;align-items:center;justify-content:center;gap:.5rem;overflow:hidden}.axp-chart-node .--node-container .--container .--heading-container .--content .--icon{background-color:color-mix(in srgb,rgba(var(--node-bg-color),1) 85%,black);display:flex;width:2.75rem;height:2.75rem;flex:none;align-items:center;justify-content:center;border-radius:.5rem}.axp-chart-node .--node-container .--container .--heading-container .--content .--badge{background-color:color-mix(in srgb,rgba(var(--node-bg-color),1) 85%,black);display:flex;width:1.5rem;height:1.5rem;flex:none;align-items:center;justify-content:center;border-radius:.375rem;line-height:1}.axp-chart-node .--node-container .--container .--heading-container .--content .--badge>span{font-size:.75rem;line-height:1rem}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles{display:flex;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles .--title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles .--sub-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;opacity:.85}.axp-chart-node .--node-container .--container .--body-container{width:100%;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));padding:.5rem .75rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lightest-surface),var(--tw-text-opacity, 1))}.axp-chart-node .--node-container .--container .--body-container .--description{text-align:center;font-size:.875rem;line-height:1rem;opacity:.85}.axp-chart-node .--node-container .--container .--toggle{position:absolute;left:0;right:0;bottom:-.75rem;display:flex;width:100%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;align-items:center;justify-content:center}#parent:fullscreen{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: RouterModule }, { kind: \"ngmodule\", type: \n //\n AXMenuModule }, { kind: \"component\", type: i2.AXContextMenuComponent, selector: \"ax-context-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"target\"], outputs: [\"onItemClick\", \"onOpening\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.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: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"directive\", type: AXPanViewDirective, selector: \"[axPanView]\", inputs: [\"zoomStep\", \"minZoom\", \"maxZoom\", \"freeMode\", \"fitContent\", \"disablePan\", \"disableZoom\", \"wrapperClasses\", \"panX\", \"panY\", \"zoom\"], outputs: [\"panXChange\", \"panYChange\", \"zoomChange\", \"positionChange\"], exportAs: [\"axPanView\"] }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"ngmodule\", type: AXBreadcrumbsModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: \n //\n 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: AXPPageLayoutComponent, selector: \"axp-page-layout\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.7\", ngImport: i0, type: AXMOrgChartPage, decorators: [{\n type: Component,\n args: [{ imports: [\n CommonModule,\n RouterModule,\n //\n AXMenuModule,\n AXButtonModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXPanViewDirective,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n //\n AXPThemeLayoutBlockComponent,\n AXPPageLayoutComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n AXMOrgChartConfigService,\n AXMOrgChartService,\n AXMOrgChartPrintService,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMOrgChartPage\n }\n ], template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <axp-page-content class=\\\"ax-overflow-hidden\\\">\\n <div class=\\\"ax-h-[calc(100vh-290px)]\\\" #parent id=\\\"parent\\\">\\n <div #chart axPanView [(panX)]=\\\"panX\\\" [(panY)]=\\\"panY\\\" [freeMode]=\\\"true\\\" [(zoom)]=\\\"panZoomLevel\\\"\\n [fitContent]=\\\"true\\\" wrapperClasses=\\\"h\\\" class=\\\"ax-light\\\"></div>\\n <ax-context-menu [target]=\\\"'.axp-chart-node'\\\" [orientation]=\\\"'vertical'\\\" [closeOn]=\\\"'leave'\\\"\\n (onItemClick)=\\\"handleContextMenuItemClick($event)\\\" (onOpening)=\\\"handleContextMenuOnOpening($event)\\\">\\n </ax-context-menu>\\n </div>\\n </axp-page-content>\\n <axp-page-footer>\\n <axp-layout-prefix>\\n <div class=\\\"ax-flex ax-gap-1 ax-light ax-flex-wrap ax-justify-center\\\">\\n @let v = {cat:'Company'}; @for (item of nodeTypes; track $index) {\\n <div class=\\\"axp-node-hint\\\" [style]=\\\"getNodeColors(item.color)\\\" [class.ax-ms-4]=\\\"v.cat!=item.category\\\">\\n <div class=\\\"--badge\\\"></div>\\n {{item.title}}\\n </div>\\n {{updateVar(v,item.category)}} }\\n </div>\\n </axp-layout-prefix>\\n <axp-layout-suffix>\\n <div class=\\\"ax-flex ax-gap-2\\\">\\n <ax-button (onClick)=\\\"zoomOut()\\\">\\n <ax-icon class=\\\"fa-solid fa-minus\\\"> </ax-icon>\\n </ax-button>\\n <ax-button [text]=\\\"panZoomLevel()\\\" (onClick)=\\\"zoomReset()\\\"></ax-button>\\n <ax-button (onClick)=\\\"zoomIn()\\\">\\n <ax-icon class=\\\"fa-solid fa-add\\\"> </ax-icon>\\n </ax-button>\\n <ax-button (onClick)=\\\"toggleFullscreen()\\\">\\n <ax-icon>\\n <i class=\\\"fa-solid\\\" [class]=\\\"isFullscreen()? 'fa-compress' : 'fa-expand'\\\"></i>\\n </ax-icon>\\n </ax-button>\\n </div>\\n </axp-layout-suffix>\\n </axp-page-footer>\\n</axp-page-layout>\\n\\n<ng-template #nodeTemplate let-data>\\n <div>\\n @switch (data.category) {\\n <!-- Company -->\\n @case (NodeTypes.Company) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'primary' }\\\"></ng-container>\\n }\\n <!-- Location -->\\n @case (NodeTypes.Location) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent1' }\\\"></ng-container>\\n }\\n <!-- BusinessUnit -->\\n @case (NodeTypes.BusinessUnit) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent2' }\\\"></ng-container>\\n }\\n <!-- Role -->\\n @case (NodeTypes.Role) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'accent3' }\\\"></ng-container>\\n }\\n <!-- Employee -->\\n @case (NodeTypes.Employee) {\\n <ng-container *ngTemplateOutlet=\\\"generalTemplate; context: { data,color:'surface' }\\\"></ng-container>\\n } }\\n </div>\\n</ng-template>\\n\\n<!----------------------------------- General Node Template ----------------------------------->\\n<ng-template #generalTemplate let-data=\\\"data\\\" let-color=\\\"color\\\">\\n <div #node class=\\\"--node-container\\\" [style]=\\\"getNodeColors(color)\\\">\\n <div class=\\\"--container\\\">\\n <div class=\\\"--heading-container\\\">\\n <div class=\\\"--content\\\">\\n <div class=\\\"--icon\\\">\\n <i class=\\\"fa-light fa-xl fa-fw\\\" [class]=\\\"data.icon\\\"></i>\\n </div>\\n <div class=\\\"--titles\\\">\\n <span class=\\\"--title\\\">{{data.title}}</span>\\n @if(data.subtitle) {\\n <span class=\\\"--sub-title\\\">{{data.subtitle}}</span>\\n }\\n </div>\\n @if(data?.children?.length){\\n <div class=\\\"--badge\\\">\\n <span>{{data?.children?.length ?? 0}}</span>\\n </div>\\n }\\n </div>\\n </div>\\n @if(data.description) {\\n <div class=\\\"--body-container\\\">\\n <div class=\\\"--description\\\" [class.ax-pb-3]=\\\"data.children && data.children.length > 0\\\">\\n {{data.description}}\\n </div>\\n </div>\\n } @if(data.children && data.children.length > 0){\\n <div class=\\\"--toggle\\\">\\n <ax-button class=\\\"ax-xs ax-rounded-sm\\\" (onClick)=\\\"toggleNode(data,node)\\\">\\n <ax-icon icon=\\\"fa-solid\\\" [class]=\\\"data.isExpanded === false ? 'fa-chevron-down' : 'fa-chevron-up'\\\"></ax-icon>\\n </ax-button>\\n </div>\\n }\\n </div>\\n </div>\\n</ng-template>\", styles: [\".axp-node-hint{display:flex;align-items:center;justify-content:center;gap:.25rem;font-size:.75rem;line-height:1rem}.axp-node-hint>div.--badge{background-color:rgba(var(--node-bg-color));color:rgba(var(--node-text-color));display:flex;width:.75rem;height:.75rem;align-items:center;justify-content:center;border-radius:.125rem}.axp-chart-node{display:flex;align-items:center;justify-content:center}.axp-chart-node .--node-container{position:relative;cursor:pointer;--node-bg-color: var(--ax-sys-color-primary-surface);--node-text-color: var(--ax-sys-color-on-primary-surface);--node-border-color: var(--ax-sys-color-border-primary-surface)}.axp-chart-node .--node-container .--container{display:flex;max-height:100%;width:100%;flex-direction:column;overflow:hidden;border-radius:.375rem;border-width:1px;--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);border-color:rgba(var(--node-border-color))}.axp-chart-node .--node-container .--container .--heading-container{background-color:rgba(var(--node-bg-color));color:rgba(var(--node-text-color));width:100%;padding:.5rem .75rem}.axp-chart-node .--node-container .--container .--heading-container .--content{display:flex;width:100%;align-items:center;justify-content:center;gap:.5rem;overflow:hidden}.axp-chart-node .--node-container .--container .--heading-container .--content .--icon{background-color:color-mix(in srgb,rgba(var(--node-bg-color),1) 85%,black);display:flex;width:2.75rem;height:2.75rem;flex:none;align-items:center;justify-content:center;border-radius:.5rem}.axp-chart-node .--node-container .--container .--heading-container .--content .--badge{background-color:color-mix(in srgb,rgba(var(--node-bg-color),1) 85%,black);display:flex;width:1.5rem;height:1.5rem;flex:none;align-items:center;justify-content:center;border-radius:.375rem;line-height:1}.axp-chart-node .--node-container .--container .--heading-container .--content .--badge>span{font-size:.75rem;line-height:1rem}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles{display:flex;width:100%;flex:1 1 0%;flex-direction:column;overflow:hidden}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles .--title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-chart-node .--node-container .--container .--heading-container .--content .--titles .--sub-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;opacity:.85}.axp-chart-node .--node-container .--container .--body-container{width:100%;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));padding:.5rem .75rem;--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lightest-surface),var(--tw-text-opacity, 1))}.axp-chart-node .--node-container .--container .--body-container .--description{text-align:center;font-size:.875rem;line-height:1rem;opacity:.85}.axp-chart-node .--node-container .--container .--toggle{position:absolute;left:0;right:0;bottom:-.75rem;display:flex;width:100%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;align-items:center;justify-content:center}#parent:fullscreen{background-color:rgba(var(--ax-sys-color-primary-lightest-surface))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWNoYXJ0LnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9vcmdhbml6YXRpb24tY2hhcnQvb3JnLWNoYXJ0LnBhZ2UudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvb3JnYW5pemF0aW9uLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9vcmdhbml6YXRpb24tY2hhcnQvb3JnLWNoYXJ0LnBhZ2UuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsc0JBQXNCLEVBR3RCLFlBQVksR0FDYixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxP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OlsiaW1wb3J0IHsgQVhQYW5WaWV3RGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9jZGsvcGFuLXZpZXcnO1xuaW1wb3J0IHsgQVhCYWRnZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBBWEJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7XG4gIEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gIEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQsXG4gIEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQsXG4gIEFYTWVudU1vZHVsZSxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIE5nWm9uZSxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gtZXMvZ2V0JztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoLWVzL3NldCc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuaW1wb3J0IHsgQVhNT3JnQ2hhcnRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9vcmctY2hhcnQtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTU9yZ0NoYXJ0UHJpbnRTZXJ2aWNlIH0gZnJvbSAnLi9vcmctY2hhcnQtcHJpbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1PcmdDaGFydFNlcnZpY2UgfSBmcm9tICcuL29yZy1jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYTV9PUkdfQ0hBUlRfTk9ERV9UWVBFX0VOVElUWV9NQVBQSU5HUyxcbiAgQVhNT3JnYW5pemF0aW9uTm9kZSxcbiAgQVhNT3JnYW5pemF0aW9uTm9kZVR5cGUsXG4gIEFYTU9yZ2FuaXphdGlvbk5vZGVUeXBlQ2F0ZWdvcnksXG59IGZyb20gJy4vb3JnLWNoYXJ0LnR5cGUnO1xuaW1wb3J0IHsgQVhQQWN0aW9uTWVudUl0ZW0sIEFYUEJyZWFkY3J1bWJJdGVtLCBBWFBFeGVjdXRlQ29tbWFuZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBhbiBvcmdhbml6YXRpb25hbCBjaGFydC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9vcmctY2hhcnQucGFnZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3JnLWNoYXJ0LnBhZ2Uuc2NzcyddLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICAvL1xuICAgIEFYTWVudU1vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhQYW5WaWV3RGlyZWN0aXZlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIEFYQmFkZ2VNb2R1bGUsXG4gICAgLy9cbiAgICBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50LFxuICAgIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICBBWE1PcmdDaGFydENvbmZpZ1NlcnZpY2UsXG4gICAgQVhNT3JnQ2hhcnRTZXJ2aWNlLFxuICAgIEFYTU9yZ0NoYXJ0UHJpbnRTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUFBhZ2VMYXlvdXRCYXNlLFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYTU9yZ0NoYXJ0UGFnZVxuICAgIH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNT3JnQ2hhcnRQYWdlIGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm9vdENvbmZpZyA9IFJvb3RDb25maWc7XG5cbiAgcHJpdmF0ZSBkMyE6IHR5cGVvZiBpbXBvcnQoJ2QzJyk7XG5cbiAgcHJpdmF0ZSBub2RlVGVtcGxhdGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8YW55Pj4oJ25vZGVUZW1wbGF0ZScpO1xuICBwcml2YXRlIHRyZWVDb250YWluZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjaGFydCcpO1xuICBwcml2YXRlIHBhcmVudCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ3BhcmVudCcpO1xuICBwcml2YXRlIGNvbnRleHRNZW51ID0gdmlld0NoaWxkKEFYQ29udGV4dE1lbnVDb21wb25lbnQpO1xuICBwcml2YXRlIHBhblZpZXcgPSB2aWV3Q2hpbGQoQVhQYW5WaWV3RGlyZWN0aXZlKTtcblxuICBwcml2YXRlIG5nem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgY2hhcnRQcmludFNlcnZpY2UgPSBpbmplY3QoQVhNT3JnQ2hhcnRQcmludFNlcnZpY2UpO1xuICBwcml2YXRlIGNoYXJ0U2VydmljZSA9IGluamVjdChBWE1PcmdDaGFydFNlcnZpY2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgTk9ERV9TVFJPS0VfQ09MT1IgPSAncmdiYSh2YXIoLS1heC1zeXMtY29sb3ItcHJpbWFyeS00MDApKSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgTElOS19TVFJPS0VfV0lEVEggPSAxO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBOb2RlVHlwZXMgPSBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZUNhdGVnb3J5O1xuXG4gIHByb3RlY3RlZCBpc0Z1bGxzY3JlZW4gPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcGFuWCA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHBhblkgPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBwYW5ab29tTGV2ZWwgPSBzaWduYWwoMTAwKTtcblxuICBwcm90ZWN0ZWQgaXNDaGFydFJlbmRlcmVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIG5vZGVUeXBlcyA9IE9iamVjdC5lbnRyaWVzKEFYTV9PUkdfQ0hBUlRfTk9ERV9UWVBFX0VOVElUWV9NQVBQSU5HUykubWFwKChjKSA9PiAoe1xuICAgIHRpdGxlOiBjWzFdLnRpdGxlLFxuICAgIGNvbG9yOiBjWzFdLmNvbG9yLFxuICAgIGljb246IGNbMV0uaWNvbixcbiAgICBjYXRlZ29yeTogY1sxXS5jYXRlZ29yeSxcbiAgfSkpO1xuXG4gICNpbml0aWFsaXplID0gYWZ0ZXJOZXh0UmVuZGVyKGFzeW5jICgpID0+IHtcbiAgICB0aGlzLmQzID0gYXdhaXQgaW1wb3J0KCdkMycpO1xuICAgIGF3YWl0IHRoaXMuY2hhcnRTZXJ2aWNlLmxvYWQoKTtcbiAgICBhd2FpdCB0aGlzLnJlZnJlc2hDaGFydCgpO1xuICB9KTtcblxuICAvKipcbiAgICogWm9vbXMgaW4gdGhlIGNoYXJ0LlxuICAgKi9cbiAgcHJvdGVjdGVkIHpvb21JbigpIHtcbiAgICB0aGlzLnBhblZpZXcoKT8uem9vbUluKCk7XG4gIH1cblxuICAvKipcbiAgICogWm9vbXMgb3V0IHRoZSBjaGFydC5cbiAgICovXG4gIHByb3RlY3RlZCB6b29tT3V0KCkge1xuICAgIHRoaXMucGFuVmlldygpPy56b29tT3V0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSB6b29tIGxldmVsIGFuZCBwYW4gcG9zaXRpb24gb2YgdGhlIGNoYXJ0LlxuICAgKi9cbiAgcHJvdGVjdGVkIHpvb21SZXNldCgpIHtcbiAgICB0aGlzLnBhblZpZXcoKT8ucmVzZXRQb3NpdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgZnVsbHNjcmVlbiBtb2RlIGZvciB0aGUgY2hhcnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9nZ2xlRnVsbHNjcmVlbigpIHtcbiAgICBpZiAodGhpcy5pc0Z1bGxzY3JlZW4oKSkge1xuICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIHRoaXMuaXNGdWxsc2NyZWVuLnNldChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFyZW50KCkubmF0aXZlRWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgdGhpcy5pc0Z1bGxzY3JlZW4uc2V0KHRydWUpO1xuICAgIH1cbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBmb3JlaWduT2JqZWN0W25vZGU9XCJub2RlLSR7dGhpcy5jaGFydFNlcnZpY2Uucm9vdE5vZGUoKS5pZH1cIl1gKT8uc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgYmxvY2s6ICdzdGFydCcsXG4gICAgICBpbmxpbmU6ICdjZW50ZXInLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgdGhlIG1heGltdW0gZGVwdGggb2YgdGhlIG9yZ2FuaXphdGlvbmFsIGNoYXJ0LlxuICAgKiBAcGFyYW0gbm9kZSAtIFRoZSByb290IG5vZGUgb2YgdGhlIGNoYXJ0LlxuICAgKiBAcmV0dXJucyBUaGUgbWF4aW11bSBkZXB0aCBvZiB0aGUgY2hhcnQuXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZU1heERlcHRoKG5vZGU6IEFYTU9yZ2FuaXphdGlvbk5vZGUpOiBudW1iZXIge1xuICAgIGlmICghbm9kZS5jaGlsZHJlbiB8fCBub2RlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCB8fCBub2RlLmlzRXhwYW5kZWQgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDEgKyBNYXRoLm1heCguLi5ub2RlLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHRoaXMuY2FsY3VsYXRlTWF4RGVwdGgoY2hpbGQpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgbWF4aW11bSBicmVhZHRoIG9mIHRoZSBvcmdhbml6YXRpb25hbCBjaGFydC5cbiAgICogQHBhcmFtIG5vZGUgLSBUaGUgcm9vdCBub2RlIG9mIHRoZSBjaGFydC5cbiAgICogQHJldHVybnMgVGhlIG1heGltdW0gYnJlYWR0aCBvZiB0aGUgY2hhcnQuXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZU1heEJyZWFkdGgobm9kZTogQVhNT3JnYW5pemF0aW9uTm9kZSk6IG51bWJlciB7XG4gICAgaWYgKCFub2RlLmNoaWxkcmVuIHx8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwIHx8IG5vZGUuaXNFeHBhbmRlZCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlbi5yZWR1Y2UoKGFjYywgY2hpbGQpID0+IGFjYyArIHRoaXMuY2FsY3VsYXRlTWF4QnJlYWR0aChjaGlsZCksIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIHJlbmRlcnMgdGhlIG9yZ2FuaXphdGlvbmFsIGNoYXJ0LlxuICAgKiBAcGFyYW0gZWwgLSBUaGUgY29udGFpbmVyIGVsZW1lbnQgZm9yIHRoZSBjaGFydC5cbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgcm9vdCBub2RlIG9mIHRoZSBvcmdhbml6YXRpb25hbCBjaGFydC5cbiAgICovXG4gIGNyZWF0ZUNoYXJ0KGVsOiBFbGVtZW50LCBkYXRhOiBBWE1Pcmdhbml6YXRpb25Ob2RlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmQzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubmd6b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IE5PREVfV0lEVEhfQkFTRSA9IDI2MDtcbiAgICAgIGNvbnN0IE5PREVfSEVJR0hUX0JBU0UgPSAxODA7XG4gICAgICBjb25zdCBIT1JJWk9OVEFMX1NQQUNJTkcgPSAyMDtcbiAgICAgIGNvbnN0IFZFUlRJQ0FMX1NQQUNJTkcgPSA0MDtcblxuICAgICAgdGhpcy5jbGVhckNoYXJ0KGVsKTtcbiAgICAgIGNvbnN0IG5ld1N2ZyA9IHRoaXMuZDMuc2VsZWN0KGVsKS5hcHBlbmQoJ3N2ZycpO1xuXG4gICAgICBjb25zdCByb290ID0gdGhpcy5kMy5oaWVyYXJjaHkoZGF0YSk7XG5cbiAgICAgIHJvb3QuZGVzY2VuZGFudHMoKS5mb3JFYWNoKChub2RlOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG5vZGUuZGF0YS5pc0V4cGFuZGVkID09PSBmYWxzZSkge1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0cmVlTGF5b3V0ID0gdGhpcy5kM1xuICAgICAgICAudHJlZTxBWE1Pcmdhbml6YXRpb25Ob2RlPigpXG4gICAgICAgIC5ub2RlU2l6ZShbTk9ERV9XSURUSF9CQVNFICsgSE9SSVpPTlRBTF9TUEFDSU5HLCBOT0RFX0hFSUdIVF9CQVNFICsgVkVSVElDQUxfU1BBQ0lOR10pO1xuXG4gICAgICB0cmVlTGF5b3V0KHJvb3QpO1xuXG4gICAgICBsZXQgbWluWCA9IEluZmluaXR5LFxuICAgICAgICBtYXhYID0gLUluZmluaXR5LFxuICAgICAgICBtaW5ZID0gSW5maW5pdHksXG4gICAgICAgIG1heFkgPSAtSW5maW5pdHk7XG4gICAgICByb290LmRlc2NlbmRhbnRzKCkuZm9yRWFjaCgoZDogYW55KSA9PiB7XG4gICAgICAgIGlmIChkLnggPCBtaW5YKSBtaW5YID0gZC54O1xuICAgICAgICBpZiAoZC54ID4gbWF4WCkgbWF4WCA9IGQueDtcbiAgICAgICAgaWYgKGQueSA8IG1pblkpIG1pblkgPSBkLnk7XG4gICAgICAgIGlmIChkLnkgPiBtYXhZKSBtYXhZID0gZC55O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IENPTlRBSU5FUl9XSURUSCA9IG1heFggLSBtaW5YICsgTk9ERV9XSURUSF9CQVNFICsgMiAqIEhPUklaT05UQUxfU1BBQ0lORztcbiAgICAgIGNvbnN0IENPTlRBSU5FUl9IRUlHSFQgPSBtYXhZIC0gbWluWSArIE5PREVfSEVJR0hUX0JBU0UgKyAyICogVkVSVElDQUxfU1BBQ0lORztcblxuICAgICAgbmV3U3ZnLmF0dHIoJ3dpZHRoJywgQ09OVEFJTkVSX1dJRFRIKS5hdHRyKCdoZWlnaHQnLCBDT05UQUlORVJfSEVJR0hUKTtcblxuICAgICAgY29uc3QgZyA9IG5ld1N2Z1xuICAgICAgICAuYXBwZW5kKCdnJylcbiAgICAgICAgLmF0dHIoXG4gICAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgICAgYHRyYW5zbGF0ZSgkey1taW5YICsgTk9ERV9XSURUSF9CQVNFIC8gMiArIEhPUklaT05UQUxfU1BBQ0lORyAvIDJ9LCAkey1taW5ZICsgTk9ERV9IRUlHSFRfQkFTRSAvIDIgKyBWRVJUSUNBTF9TUEFDSU5HIC8gMlxuICAgICAgICAgIH0pYFxuICAgICAgICApO1xuXG4gICAgICBjb25zdCBsaW5rID0gZ1xuICAgICAgICAuc2VsZWN0QWxsKCcubGluaycpXG4gICAgICAgIC5kYXRhKHJvb3QubGlua3MoKSlcbiAgICAgICAgLmVudGVyKClcbiAgICAgICAgLmFwcGVuZCgncGF0aCcpXG4gICAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5rJylcbiAgICAgICAgLmF0dHIoJ2QnLCAoZDogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc291cmNlID0gZC5zb3VyY2U7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZC50YXJnZXQ7XG4gICAgICAgICAgcmV0dXJuIGBNJHtzb3VyY2UueH0sJHtzb3VyY2UueX1WJHsoc291cmNlLnkgKyB0YXJnZXQueSkgLyAyfUgke3RhcmdldC54fVYke3RhcmdldC55IC0gMTB9YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmF0dHIoJ2ZpbGwnLCAnbm9uZScpXG4gICAgICAgIC5hdHRyKCdzdHJva2UnLCB0aGlzLk5PREVfU1RST0tFX0NPTE9SKVxuICAgICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgdGhpcy5MSU5LX1NUUk9LRV9XSURUSClcbiAgICAgICAgLmF0dHIoJ2Zyb20nLCAoZDogYW55KSA9PiBgbm9kZS0ke2Quc291cmNlLmRhdGEuaWR9YClcbiAgICAgICAgLmF0dHIoJ3RvJywgKGQ6IGFueSkgPT4gYG5vZGUtJHtkLnRhcmdldC5kYXRhLmlkfWApO1xuXG4gICAgICBjb25zdCBub2RlID0gZ1xuICAgICAgICAuc2VsZWN0QWxsKCcuYXhwLWNoYXJ0LW5vZGUnKVxuICAgICAgICAuZGF0YShyb290LmRlc2NlbmRhbnRzKCkpXG4gICAgICAgIC5lbnRlcigpXG4gICAgICAgIC5hcHBlbmQoJ2ZvcmVpZ25PYmplY3QnKVxuICAgICAgICAuYXR0cignY2xhc3MnLCAnYXhwLWNoYXJ0LW5vZGUnKVxuICAgICAgICAuYXR0cignbm9kZScsIChkOiBhbnkpID0+IGBub2RlLSR7ZC5kYXRhLmlkfWApXG4gICAgICAgIC5hdHRyKCd4JywgKGQ6IGFueSkgPT4gZC54IC0gTk9ERV9XSURUSF9CQVNFIC8gMilcbiAgICAgICAgLmF0dHIoJ3knLCAoZDogYW55KSA9PiBkLnkgLSBOT0RFX0hFSUdIVF9CQVNFIC8gMiArIDEwKVxuICAgICAgICAuYXR0cignd2lkdGgnLCBOT0RFX1dJRFRIX0JBU0UpXG4gICAgICAgIC5hdHRyKCdoZWlnaHQnLCBOT0RFX0hFSUdIVF9CQVNFKVxuICAgICAgICAuZWFjaCgoZDogYW55KSA9PiB0aGlzLnJlbmRlck5vZGVUZW1wbGF0ZShkLmRhdGEsIGQueCwgZC55KSk7XG5cbiAgICAgIHRoaXMuY29udGV4dE1lbnUoKT8ucmVmcmVzaCgpO1xuICAgIH0pO1xuICAgIGlmICghdGhpcy5pc0NoYXJ0UmVuZGVyZWQpIHtcbiAgICAgIC8vIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGZvcmVpZ25PYmplY3Rbbm9kZT1cIm5vZGUtJHtkYXRhLmlkfVwiXSAuLS1oZWFkaW5nLWNvbnRhaW5lcmApPy5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAvLyAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIC8vICAgYmxvY2s6ICdjZW50ZXInLFxuICAgICAgLy8gICBpbmxpbmU6ICdjZW50ZXInLFxuICAgICAgLy8gfSk7XG4gICAgICB0aGlzLmlzQ2hhcnRSZW5kZXJlZCA9IHRydWU7XG4gICAgICB0aGlzLnBhblZpZXcoKT8ucmVzZXRQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBub2RlIHRlbXBsYXRlIGZvciBhIGdpdmVuIG9yZ2FuaXphdGlvbmFsIG5vZGUuXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIG5vZGUgZGF0YS5cbiAgICogQHBhcmFtIHggLSBUaGUgeC1jb29yZGluYXRlIG9mIHRoZSBub2RlLlxuICAgKiBAcGFyYW0geSAtIFRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIG5vZGUuXG4gICAqL1xuICBwcml2YXRlIHJlbmRlck5vZGVUZW1wbGF0ZShkYXRhOiBBWE1Pcmdhbml6YXRpb25Ob2RlLCB4OiBudW1iZXIsIHk6IG51bWJlcik6IHZvaWQge1xuICAgIC8vIEZpbmQgdGhlIGtleSB0aGF0IG1hdGNoZXMgdGhlIG5vZGUgdHlwZVxuICAgIGNvbnN0IGVudGl0eUtleSA9IE9iamVjdC5rZXlzKEFYTV9PUkdfQ0hBUlRfTk9ERV9UWVBFX0VOVElUWV9NQVBQSU5HUykuZmluZCgoa2V5KSA9PiB7XG4gICAgICBjb25zdCBrZXlOYW1lID0ga2V5LnNwbGl0KCcuJykucG9wKCk7IC8vIEdldCB0aGUgbGFzdCBwYXJ0IGFmdGVyIHNwbGl0dGluZyBieSAnLidcbiAgICAgIHJldHVybiBrZXlOYW1lID09PSBkYXRhLnR5cGU7IC8vIENvbXBhcmUgd2l0aCBkYXRhLnR5cGVcbiAgICB9KTtcblxuICAgIGlmIChlbnRpdHlLZXkpIHtcbiAgICAgIGNvbnN0IGNhdGVnb3J5TWFwcGluZyA9IEFYTV9PUkdfQ0hBUlRfTk9ERV9UWVBFX0VOVElUWV9NQVBQSU5HU1tlbnRpdHlLZXldO1xuXG4gICAgICAvLyBBZGQgdGhlIGNhdGVnb3J5IHRvIHRoZSBkYXRhIG9iamVjdFxuICAgICAgc2V0KGRhdGEsICdjYXRlZ29yeScsIGNhdGVnb3J5TWFwcGluZy5jYXRlZ29yeSk7XG4gICAgfVxuXG4gICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5ub2RlVGVtcGxhdGUoKSwge1xuICAgICAgJGltcGxpY2l0OiBkYXRhLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgbm9kZUVsZW1lbnQgPSB0aGlzLmQzLnNlbGVjdCh0aGlzLnRyZWVDb250YWluZXIoKS5uYXRpdmVFbGVtZW50KS5zZWxlY3QoYFtub2RlPVwibm9kZS0ke2RhdGEuaWR9XCJdYCk7XG4gICAgY29uc3QgZWxlbWVudCA9IG5vZGVFbGVtZW50Lm5vZGUoKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodmlld1JlZi5yb290Tm9kZXNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBleHBhbnNpb24gc3RhdGUgb2YgYSBub2RlLlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBub2RlIGRhdGEuXG4gICAqIEBwYXJhbSBlbCAtIFRoZSBIVE1MIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBub2RlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRvZ2dsZU5vZGUoZGF0YTogQVhNT3JnYW5pemF0aW9uTm9kZSwgZWw6IEhUTUxEaXZFbGVtZW50KSB7XG4gICAgZGF0YS5pc0V4cGFuZGVkID0gZGF0YS5pc0V4cGFuZGVkID09PSB1bmRlZmluZWQgPyBmYWxzZSA6ICFkYXRhLmlzRXhwYW5kZWQ7XG4gICAgdGhpcy5jcmVhdGVDaGFydCh0aGlzLnRyZWVDb250YWluZXIoKS5uYXRpdmVFbGVtZW50LCB0aGlzLmNoYXJ0U2VydmljZS5yb290Tm9kZSgpKTtcbiAgICAvLyBlbC5zY3JvbGxJbnRvVmlldyh7XG4gICAgLy8gICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgLy8gfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBjaGFydCBmcm9tIHRoZSBjb250YWluZXIgZWxlbWVudC5cbiAgICogQHBhcmFtIGVsIC0gVGhlIGNvbnRhaW5lciBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhckNoYXJ0KGVsOiBFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZDMpIHtcbiAgICAgIHRoaXMuZDMuc2VsZWN0KGVsKS5zZWxlY3QoJ3N2ZycpLnJlbW92ZSgpO1xuICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoQ2hhcnQoKSB7XG4gICAgaWYgKHRoaXMuZDMpIHtcbiAgICAgIHRoaXMuY3JlYXRlQ2hhcnQodGhpcy50cmVlQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudCwgdGhpcy5jaGFydFNlcnZpY2Uucm9vdE5vZGUoKSk7XG4gICAgfVxuICB9XG5cbiAgLy8jcmVnaW9uIENvbnRleHQgTWVudVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVDb250ZXh0TWVudU9uT3BlbmluZyhlOiBBWENvbnRleHRNZW51T3BlbmluZ0V2ZW50KSB7XG4gICAgY29uc3Qgbm9kZSA9IGdldChlLnRhcmdldEVsZW1lbnQsICdfX2RhdGFfXy5kYXRhJykgYXMgYW55IGFzIEFYTU9yZ2FuaXphdGlvbk5vZGU7XG4gICAgY29uc3QgYWxsb3dlZEFkZEl0ZW1zID0gYXdhaXQgdGhpcy5jaGFydFNlcnZpY2UuZ2V0QWxsb3dlZEFkZE1lbnVJdGVtcyhub2RlKTtcbiAgICBjb25zdCBhbGxvd0RlbGV0ZSA9IG5vZGUudHlwZSAhPSBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZS5Db21wYW55O1xuICAgIGNvbnN0IGlzUGFzdGVBdmFpbGFibGUgPSBhd2FpdCB0aGlzLmNoYXJ0U2VydmljZS5pc1Bhc3RlQXZhaWxhYmxlKCk7XG4gICAgY29uc3QgYWxsb3dQYXN0ZSA9IGF3YWl0IHRoaXMuY2hhcnRTZXJ2aWNlLmFsbG93UGFzdGUobm9kZSk7XG4gICAgLy9cbiAgICBpZiAoYWxsb3dlZEFkZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgZS5pdGVtcy5wdXNoKHtcbiAgICAgICAgdGV4dDogJ0FkZCBOZXcnLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGx1cycsXG4gICAgICAgIGl0ZW1zOiBhbGxvd2VkQWRkSXRlbXMsXG4gICAgICAgIGJyZWFrOiBhbGxvd0RlbGV0ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvL1xuICAgIGlmIChhbGxvd0RlbGV0ZSkge1xuICAgICAgZS5pdGVtcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ2N1dCcsXG4gICAgICAgIHRleHQ6ICdDdXQnLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtY3V0JyxcbiAgICAgICAgZGF0YTogbm9kZSxcbiAgICAgIH0pO1xuICAgICAgZS5pdGVtcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ2NvcHknLFxuICAgICAgICB0ZXh0OiAnQ29weScsXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1jb3B5JyxcbiAgICAgICAgZGF0YTogbm9kZSxcbiAgICAgICAgYnJlYWs6ICFpc1Bhc3RlQXZhaWxhYmxlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChpc1Bhc3RlQXZhaWxhYmxlKSB7XG4gICAgICBlLml0ZW1zLnB1c2goe1xuICAgICAgICBuYW1lOiAncGFzdGUnLFxuICAgICAgICB0ZXh0OiAnUGFzdGUnLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGFzdGUnLFxuICAgICAgICBkYXRhOiBub2RlLFxuICAgICAgICBicmVhazogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZWQ6ICFhbGxvd1Bhc3RlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vXG4gICAgaWYgKGFsbG93RGVsZXRlKSB7XG4gICAgICBlLml0ZW1zLnB1c2goe1xuICAgICAgICBuYW1lOiAncmVtb3ZlJyxcbiAgICAgICAgdGV4dDogJ1JlbW92ZScsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXRyYXNoLWNhbicsXG4gICAgICAgIGRhdGE6IG5vZGUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy9cbiAgICBpZiAoZS5pdGVtcy5sZW5ndGggPT0gMCkge1xuICAgICAgZS5jYW5jZWxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNvbnRleHRNZW51SXRlbUNsaWNrKGU6IEFYQ29udGV4dE1lbnVJdGVtc0NsaWNrRXZlbnQpIHtcbiAgICAvL1xuICAgIGlmIChlLml0ZW0ubmFtZSA9PSAnYWRkJykge1xuICAgICAgaWYgKGF3YWl0IHRoaXMuY2hhcnRTZXJ2aWNlLmFkZE5vZGUoZS5pdGVtLmRhdGEpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaENoYXJ0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgZWxzZSBpZiAoZS5pdGVtLm5hbWUgPT0gJ3JlbW92ZScpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hhcnRTZXJ2aWNlLnJlbW92ZU5vZGUoZS5pdGVtLmRhdGEuaWQpO1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ2hhcnQoKTtcbiAgICB9XG4gICAgLy9cbiAgICBlbHNlIGlmIChlLml0ZW0ubmFtZSA9PSAnY29weScpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hhcnRTZXJ2aWNlLmNvcHlOb2RlKGUuaXRlbS5kYXRhLmlkKTtcbiAgICB9IGVsc2UgaWYgKGUuaXRlbS5uYW1lID09ICdjdXQnKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoYXJ0U2VydmljZS5jdXROb2RlKGUuaXRlbS5kYXRhLmlkKTtcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaENoYXJ0KCk7XG4gICAgfSBlbHNlIGlmIChlLml0ZW0ubmFtZSA9PSAncGFzdGUnKSB7XG4gICAgICBhd2FpdCB0aGlzLmNoYXJ0U2VydmljZS5wYXN0ZU5vZGUoZS5pdGVtLmRhdGEuaWQpO1xuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ2hhcnQoKTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvKipcbiAgICogUHJpbnRzIHRoZSBvcmdhbml6YXRpb25hbCBjaGFydC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBwcmludENoYXJ0KCkge1xuICAgIGxldCBbcGFuWCwgcGFuWSwgcGFuWm9vbUxldmVsXSA9IFt0aGlzLnBhblgoKSwgdGhpcy5wYW5ZKCksIHRoaXMucGFuWm9vbUxldmVsKCldO1xuICAgIHRoaXMucGFuWC5zZXQoMCksIHRoaXMucGFuWS5zZXQoMCksIHRoaXMucGFuWm9vbUxldmVsLnNldCgxMDApO1xuICAgIGF3YWl0IHRoaXMuY2hhcnRQcmludFNlcnZpY2UucHJpbnRDaGFydCh0aGlzLnRyZWVDb250YWluZXIoKS5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnBhblguc2V0KHBhblgpLCB0aGlzLnBhblkuc2V0KHBhblkpLCB0aGlzLnBhblpvb21MZXZlbC5zZXQocGFuWm9vbUxldmVsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBub2RlIGNvbG9ycyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY29sb3IuXG4gICAqIEBwYXJhbSBjb2xvciAtIFRoZSBjb2xvciB0byB1c2UgZm9yIHRoZSBub2RlLlxuICAgKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgbm9kZSdzIGJhY2tncm91bmQsIHRleHQsIGFuZCBib3JkZXIgY29sb3JzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE5vZGVDb2xvcnMoY29sb3I6IHN0cmluZykge1xuICAgIGlmIChjb2xvci5pbmNsdWRlcygnc3VyZmFjZScpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAnLS1ub2RlLWJnLWNvbG9yJzogYHZhcigtLWF4LXN5cy1jb2xvci0ke2NvbG9yfSlgLFxuICAgICAgICAnLS1ub2RlLXRleHQtY29sb3InOiBgdmFyKC0tYXgtc3lzLWNvbG9yLW9uLSR7Y29sb3J9KWAsXG4gICAgICAgICctLW5vZGUtYm9yZGVyLWNvbG9yJzogYHZhcigtLWF4LXN5cy1jb2xvci1ib3JkZXItJHtjb2xvcn0pYCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAnLS1ub2RlLWJnLWNvbG9yJzogYHZhcigtLWF4LXN5cy1jb2xvci0ke2NvbG9yfS1zdXJmYWNlKWAsXG4gICAgICAnLS1ub2RlLXRleHQtY29sb3InOiBgdmFyKC0tYXgtc3lzLWNvbG9yLW9uLSR7Y29sb3J9LXN1cmZhY2UpYCxcbiAgICAgICctLW5vZGUtYm9yZGVyLWNvbG9yJzogYHZhcigtLWF4LXN5cy1jb2xvci1ib3JkZXItJHtjb2xvcn0tc3VyZmFjZSlgLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlVmFyKG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBBWE1Pcmdhbml6YXRpb25Ob2RlVHlwZUNhdGVnb3J5KSB7XG4gICAgb2xkVmFsdWUuY2F0ID0gbmV3VmFsdWU7XG4gIH1cblxuXG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZVRpdGxlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnY2hhcnQucGFnZS10aXRsZScsIHsgc2NvcGU6IHRoaXMucm9vdENvbmZpZy5jb25maWcuaTE4biB9KTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VEZXNjcmlwdGlvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ2NoYXJ0LnBhZ2UtZGVzY3JpcHRpb24nLCB7IHNjb3BlOiB0aGlzLnJvb3RDb25maWcuY29uZmlnLmkxOG4gfSk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRTZWNvbmRhcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnY2hhcnQuYWN0aW9ucy5wcmludCcsIHsgc2NvcGU6IHRoaXMucm9vdENvbmZpZy5jb25maWcuaTE4biB9KSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXByaW50JyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgbmFtZTogJ3ByaW50JyxcbiAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgIG5hbWU6ICdwcmludCcsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgXTtcbiAgfVxuICBvdmVycmlkZSBhc3luYyBnZXRQYWdlQnJlYWRjcnVtYnMoKTogUHJvbWlzZTxBWFBCcmVhZGNydW1iSXRlbVtdPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygncm9vdC1tZW51JywgeyBzY29wZTogdGhpcy5yb290Q29uZmlnLmNvbmZpZy5pMThuIH0pXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBleGVjdXRlKGNvbW1hbmQ6IEFYUEV4ZWN1dGVDb21tYW5kKSB7XG4gICAgaWYgKGNvbW1hbmQubmFtZSA9PSAncHJpbnQnKSB7XG4gICAgICBhd2FpdCB0aGlzLnByaW50Q2hhcnQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQ2hhcnQodGhpcy50cmVlQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudCk7XG4gIH1cbn1cbiIsIjxheHAtcGFnZS1sYXlvdXQgKnRyYW5zbGF0ZT1cImxldCB0XCI+XG4gIDxheHAtcGFnZS1jb250ZW50IGNsYXNzPVwiYXgtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWgtW2NhbGMoMTAwdmgtMjkwcHgpXVwiICNwYXJlbnQgaWQ9XCJwYXJlbnRcIj5cbiAgICAgIDxkaXYgI2NoYXJ0IGF4UGFuVmlldyBbKHBhblgpXT1cInBhblhcIiBbKHBhblkpXT1cInBhbllcIiBbZnJlZU1vZGVdPVwidHJ1ZVwiIFsoem9vbSldPVwicGFuWm9vbUxldmVsXCJcbiAgICAgICAgW2ZpdENvbnRlbnRdPVwidHJ1ZVwiIHdyYXBwZXJDbGFzc2VzPVwiaFwiIGNsYXNzPVwiYXgtbGlnaHRcIj48L2Rpdj5cbiAgICAgIDxheC1jb250ZXh0LW1lbnUgW3RhcmdldF09XCInLmF4cC1jaGFydC1ub2RlJ1wiIFtvcmllbnRhdGlvbl09XCIndmVydGljYWwnXCIgW2Nsb3NlT25dPVwiJ2xlYXZlJ1wiXG4gICAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljaygkZXZlbnQpXCIgKG9uT3BlbmluZyk9XCJoYW5kbGVDb250ZXh0TWVudU9uT3BlbmluZygkZXZlbnQpXCI+XG4gICAgICA8L2F4LWNvbnRleHQtbWVudT5cbiAgICA8L2Rpdj5cbiAgPC9heHAtcGFnZS1jb250ZW50PlxuICA8YXhwLXBhZ2UtZm9vdGVyPlxuICAgIDxheHAtbGF5b3V0LXByZWZpeD5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWdhcC0xIGF4LWxpZ2h0IGF4LWZsZXgtd3JhcCBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICBAbGV0IHYgPSB7Y2F0OidDb21wYW55J307IEBmb3IgKGl0ZW0gb2Ygbm9kZVR5cGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4cC1ub2RlLWhpbnRcIiBbc3R5bGVdPVwiZ2V0Tm9kZUNvbG9ycyhpdGVtLmNvbG9yKVwiIFtjbGFzcy5heC1tcy00XT1cInYuY2F0IT1pdGVtLmNhdGVnb3J5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIi0tYmFkZ2VcIj48L2Rpdj5cbiAgICAgICAgICB7e2l0ZW0udGl0bGV9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAge3t1cGRhdGVWYXIodixpdGVtLmNhdGVnb3J5KX19IH1cbiAgICAgIDwvZGl2PlxuICAgIDwvYXhwLWxheW91dC1wcmVmaXg+XG4gICAgPGF4cC1sYXlvdXQtc3VmZml4PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTJcIj5cbiAgICAgICAgPGF4LWJ1dHRvbiAob25DbGljayk9XCJ6b29tT3V0KClcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLW1pbnVzXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gW3RleHRdPVwicGFuWm9vbUxldmVsKClcIiAob25DbGljayk9XCJ6b29tUmVzZXQoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICA8YXgtYnV0dG9uIChvbkNsaWNrKT1cInpvb21JbigpXCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1hZGRcIj4gPC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPGF4LWJ1dHRvbiAob25DbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIj5cbiAgICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWRcIiBbY2xhc3NdPVwiaXNGdWxsc2NyZWVuKCk/ICdmYS1jb21wcmVzcycgOiAnZmEtZXhwYW5kJ1wiPjwvaT5cbiAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9heHAtbGF5b3V0LXN1ZmZpeD5cbiAgPC9heHAtcGFnZS1mb290ZXI+XG48L2F4cC1wYWdlLWxheW91dD5cblxuPG5nLXRlbXBsYXRlICNub2RlVGVtcGxhdGUgbGV0LWRhdGE+XG4gIDxkaXY+XG4gICAgQHN3aXRjaCAoZGF0YS5jYXRlZ29yeSkge1xuICAgIDwhLS0gQ29tcGFueSAtLT5cbiAgICBAY2FzZSAoTm9kZVR5cGVzLkNvbXBhbnkpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2VuZXJhbFRlbXBsYXRlOyBjb250ZXh0OiB7ICBkYXRhLGNvbG9yOidwcmltYXJ5JyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIDwhLS0gTG9jYXRpb24gLS0+XG4gICAgQGNhc2UgKE5vZGVUeXBlcy5Mb2NhdGlvbikge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZW5lcmFsVGVtcGxhdGU7IGNvbnRleHQ6IHsgIGRhdGEsY29sb3I6J2FjY2VudDEnIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgPCEtLSBCdXNpbmVzc1VuaXQgLS0+XG4gICAgQGNhc2UgKE5vZGVUeXBlcy5CdXNpbmVzc1VuaXQpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2VuZXJhbFRlbXBsYXRlOyBjb250ZXh0OiB7ICBkYXRhLGNvbG9yOidhY2NlbnQyJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIDwhLS0gUm9sZSAtLT5cbiAgICBAY2FzZSAoTm9kZVR5cGVzLlJvbGUpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2VuZXJhbFRlbXBsYXRlOyBjb250ZXh0OiB7ICBkYXRhLGNvbG9yOidhY2NlbnQzJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICAgIDwhLS0gRW1wbG95ZWUgLS0+XG4gICAgQGNhc2UgKE5vZGVUeXBlcy5FbXBsb3llZSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJnZW5lcmFsVGVtcGxhdGU7IGNvbnRleHQ6IHsgIGRhdGEsY29sb3I6J3N1cmZhY2UnIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICB9IH1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdlbmVyYWwgTm9kZSBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbjxuZy10ZW1wbGF0ZSAjZ2VuZXJhbFRlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiIGxldC1jb2xvcj1cImNvbG9yXCI+XG4gIDxkaXYgI25vZGUgY2xhc3M9XCItLW5vZGUtY29udGFpbmVyXCIgW3N0eWxlXT1cImdldE5vZGVDb2xvcnMoY29sb3IpXCI+XG4gICAgPGRpdiBjbGFzcz1cIi0tY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiLS1oZWFkaW5nLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiLS1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIi0taWNvblwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS14bCBmYS1md1wiIFtjbGFzc109XCJkYXRhLmljb25cIj48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIi0tdGl0bGVzXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIi0tdGl0bGVcIj57e2RhdGEudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIEBpZihkYXRhLnN1YnRpdGxlKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIi0tc3ViLXRpdGxlXCI+e3tkYXRhLnN1YnRpdGxlfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmKGRhdGE/LmNoaWxkcmVuPy5sZW5ndGgpe1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCItLWJhZGdlXCI+XG4gICAgICAgICAgICA8c3Bhbj57e2RhdGE/LmNoaWxkcmVuPy5sZW5ndGggPz8gMH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZihkYXRhLmRlc2NyaXB0aW9uKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiLS1ib2R5LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiLS1kZXNjcmlwdGlvblwiIFtjbGFzcy5heC1wYi0zXT1cImRhdGEuY2hpbGRyZW4gJiYgZGF0YS5jaGlsZHJlbi5sZW5ndGggPiAwXCI+XG4gICAgICAgICAge3tkYXRhLmRlc2NyaXB0aW9ufX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIH0gQGlmKGRhdGEuY2hpbGRyZW4gJiYgZGF0YS5jaGlsZHJlbi5sZW5ndGggPiAwKXtcbiAgICAgIDxkaXYgY2xhc3M9XCItLXRvZ2dsZVwiPlxuICAgICAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgteHMgYXgtcm91bmRlZC1zbVwiIChvbkNsaWNrKT1cInRvZ2dsZU5vZGUoZGF0YSxub2RlKVwiPlxuICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZFwiIFtjbGFzc109XCJkYXRhLmlzRXhwYW5kZWQgPT09IGZhbHNlID8gJ2ZhLWNoZXZyb24tZG93bicgOiAnZmEtY2hldnJvbi11cCdcIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0="],"names":["i5"],"mappings":"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"}
|
package/fesm2022/acorex-modules-organization-management-position-category.entity-DrZ9Ott4.mjs.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-organization-management-position-category.entity-DrZ9Ott4.mjs","sources":["../tmp-esm2022/organization-management/lib/entities/position-category/position-category.entity.js"],"sourcesContent":["import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMOrganizationManagementPositionCategoryEntityService } from './position-category.service';\nexport async function factory(injector) {\n const dataService = injector.get(AXMOrganizationManagementPositionCategoryEntityService);\n const i18n = RootConfig.config.i18n;\n const entityName = 'position-category';\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.positionCategory.name,\n source: '',\n parentKey: 'parentId',\n title: RootConfig.entities.positionCategory.title,\n formats: {\n individual: RootConfig.entities.positionCategory.title,\n plural: `t(\"${entityName}.plural-title\", { scope: \"${i18n}\" })`,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.positionCategory.title,\n },\n ],\n properties: [\n {\n name: 'title',\n title: `t(\"${entityName}.title\", { scope: \"${i18n}\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'parentId',\n title: `t(\"parentId\",{ scope: \"${i18n}\" })`,\n groupId: 'section',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.positionCategory.name}`,\n },\n },\n },\n },\n {\n name: 'description',\n title: `t(\"${entityName}.description\", { scope: \"${i18n}\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [{ name: 'title' }, { name: 'description' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n const res = await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n return {\n items: res.items.map((item) => ({ ...item, hasChild: item.childCount > 0 })),\n total: res.total,\n };\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 1,\n },\n },\n },\n },\n {\n name: 'parentId',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 2,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 1,\n },\n },\n },\n },\n {\n name: 'parentId',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 2,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 1,\n },\n },\n },\n },\n {\n name: 'parentId',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 2,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'title', dir: 'asc' }],\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24tY2F0ZWdvcnkuZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL29yZ2FuaXphdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXRpZXMvcG9zaXRpb24tY2F0ZWdvcnkvcG9zaXRpb24tY2F0ZWdvcnkuZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQWEscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzREFBc0QsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJHLE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxDQUFDLFFBQWtCO0lBQzlDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUN6RixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNwQyxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQztJQUV2QyxNQUFNLFNBQVMsR0FBYztRQUMzQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQzlCLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUk7UUFDL0MsTUFBTSxFQUFFLEVBQUU7UUFDVixTQUFTLEVBQUUsVUFBVTtRQUNyQixLQUFLLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ2pELE9BQU8sRUFBRTtZQUNQLFVBQVUsRUFBRSxVQUFVLENB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Q0Q7NEJBQ0UsS0FBSyxFQUFFLHVDQUF1Qzs0QkFDOUMsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxTQUFTOzRCQUNuQixJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUscUJBQXFCLENBQUMsUUFBUTt5QkFDdEM7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLGtDQUFrQzs0QkFDekMsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsTUFBTTs0QkFDWixLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLGtDQUFrQzs0QkFDekMsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFFBQVEsRUFBRSxXQUFXOzRCQUNyQixJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUscUJBQXFCLENBQUMsVUFBVTt5QkFDeEM7cUJBQ0Y7b0JBQ0QsS0FBSyxFQUFFO3dCQUNMLGtCQUFrQixDQUFDOzRCQUNqQixLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO3lCQUN2QyxDQUFDO3FCQUNIO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUM7SUFFRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQV2lkZ2V0c0xpc3QgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvY29tbW9uJztcbmltcG9ydCB7IEFYUEVudGl0eSwgQVhQRW50aXR5Q29tbWFuZFNjb3BlLCBBWFBFbnRpdHlRdWVyeVR5cGUsIGNyZWF0ZUFsbFF1ZXJ5VmlldyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTU9yZ2FuaXphdGlvbk1hbmFnZW1lbnRQb3NpdGlvbkNhdGVnb3J5RW50aXR5U2VydmljZSB9IGZyb20gJy4vcG9zaXRpb24tY2F0ZWdvcnkuc2VydmljZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmYWN0b3J5KGluamVjdG9yOiBJbmplY3Rvcik6IFByb21pc2U8QVhQRW50aXR5IHwgbnVsbD4ge1xuICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdG9yLmdldChBWE1Pcmdhbml6YXRpb25NYW5hZ2VtZW50UG9zaXRpb25DYXRlZ29yeUVudGl0eVNlcnZpY2UpO1xuICBjb25zdCBpMThuID0gUm9vdENvbmZpZy5jb25maWcuaTE4bjtcbiAgY29uc3QgZW50aXR5TmFtZSA9ICdwb3NpdGlvbi1jYXRlZ29yeSc7XG5cbiAgY29uc3QgZW50aXR5RGVmOiBBWFBFbnRpdHkgPSB7XG4gICAgbW9kdWxlOiBSb290Q29uZmlnLm1vZHVsZS5uYW1lLFxuICAgIG5hbWU6IFJvb3RDb25maWcuZW50aXRpZXMucG9zaXRpb25DYXRlZ29yeS5uYW1lLFxuICAgIHNvdXJjZTogJycsXG4gICAgcGFyZW50S2V5OiAncGFyZW50SWQnLFxuICAgIHRpdGxlOiBSb290Q29uZmlnLmVudGl0aWVzLnBvc2l0aW9uQ2F0ZWdvcnkudGl0bGUsXG4gICAgZm9ybWF0czoge1xuICAgICAgaW5kaXZpZHVhbDogUm9vdENvbmZpZy5lbnRpdGllcy5wb3NpdGlvbkNhdGVnb3J5LnRpdGxlLFxuICAgICAgcGx1cmFsOiBgdChcIiR7ZW50aXR5TmFtZX0ucGx1cmFsLXRpdGxlXCIsIHsgc2NvcGU6IFwiJHtpMThufVwiIH0pYCxcbiAgICAgIHNlYXJjaFJlc3VsdDoge1xuICAgICAgICB0aXRsZTogJ3t7IHRpdGxlIH19JyxcbiAgICAgICAgZGVzY3JpcHRpb246IFJvb3RDb25maWcubW9kdWxlLnRpdGxlLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHJlbGF0ZWRFbnRpdGllczogW10sXG4gICAgZ3JvdXBzOiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnc2VjdGlvbicsXG4gICAgICAgIHRpdGxlOiBSb290Q29uZmlnLmVudGl0aWVzLnBvc2l0aW9uQ2F0ZWdvcnkudGl0bGUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgcHJvcGVydGllczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICB0aXRsZTogYHQoXCIke2VudGl0eU5hbWV9LnRpdGxlXCIsIHsgc2NvcGU6IFwiJHtpMThufVwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdwYXJlbnRJZCcsXG4gICAgICAgIHRpdGxlOiBgdChcInBhcmVudElkXCIseyBzY29wZTogXCIke2kxOG59XCIgfSlgLFxuICAgICAgICBncm91cElkOiAnc2VjdGlvbicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNMaXN0LkVkaXRvcnMuTG9va3VwQm94LFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBlbnRpdHk6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy5wb3NpdGlvbkNhdGVnb3J5Lm5hbWV9YCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgIHRpdGxlOiBgdChcIiR7ZW50aXR5TmFtZX0uZGVzY3JpcHRpb25cIiwgeyBzY29wZTogXCIke2kxOG59XCIgfSlgLFxuICAgICAgICBncm91cElkOiAnc2VjdGlvbicsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBzb3J0OiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICBhZHZhbmNlOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5saW5lOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcnVsZTogJ3JlcXVpcmVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNvbHVtbnM6IFt7IG5hbWU6ICd0aXRsZScgfSwgeyBuYW1lOiAnZGVzY3JpcHRpb24nIH1dLFxuICAgIGNvbW1hbmRzOiB7XG4gICAgICBjcmVhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGRhdGFTZXJ2aWNlLmluc2VydE9uZShkYXRhKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogcmVzIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVsZXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmdldE9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5TaW5nbGUsXG4gICAgICB9LFxuICAgICAgbGlzdDoge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZGF0YVNlcnZpY2UucXVlcnkoeyBza2lwOiBlLnNraXAsIHRha2U6IGUudGFrZSwgZmlsdGVyOiBlLmZpbHRlciB9KTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHJlcy5pdGVtcy5tYXAoKGl0ZW0pID0+ICh7IC4uLml0ZW0sIGhhc0NoaWxkOiBpdGVtLmNoaWxkQ291bnQgPiAwIH0pKSxcbiAgICAgICAgICAgIHRvdGFsOiByZXMudG90YWwsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogQVhQRW50aXR5UXVlcnlUeXBlLkxpc3QsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaW50ZXJmYWNlczoge1xuICAgICAgbWFzdGVyOiB7XG4gICAgICAgIGNyZWF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnc2VjdGlvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdwYXJlbnRJZCcsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3BhcmVudElkJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBzaW5nbGU6IHtcbiAgICAgICAgICB0aXRsZTogJ3t7dGl0bGV9fScsXG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3BhcmVudElkJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFjdGlvbnM6IFtdLFxuICAgICAgICB9LFxuICAgICAgICBsaXN0OiB7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogYHQoXCJjcmVhdGVcIiwgeyBzY29wZTogXCJjb21tb25cIiB9KWAsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICdjcmVhdGUtZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2NyZWF0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuVHlwZUxldmVsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGVsZXRlSXRlbXNcIiwgeyBzY29wZTogXCJjb21tb25cIiB9KScsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICdkZWxldGUtZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuU2VsZWN0ZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ3QoXCJkZXRhaWxcIiwgeyBzY29wZTogXCJjb21tb25cIiB9KScsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICdvcGVuLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ3ZpZXcnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLkluZGl2aWR1YWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0aXRsZTogJ3QoXCJkZWxldGVcIiwgeyBzY29wZTogXCJjb21tb25cIiB9KScsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICdkZWxldGUtZW50aXR5JyxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdzZWNvbmRhcnknLFxuICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHZpZXdzOiBbXG4gICAgICAgICAgICBjcmVhdGVBbGxRdWVyeVZpZXcoe1xuICAgICAgICAgICAgICBzb3J0czogW3sgbmFtZTogJ3RpdGxlJywgZGlyOiAnYXNjJyB9XSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIGVudGl0eURlZjtcbn1cbiJdfQ=="],"names":[],"mappings":"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"}
|