@acorex/platform 18.2.4 → 19.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/lib/app/app-startup.service.d.ts +1 -2
- package/common/lib/app/application.types.d.ts +3 -3
- package/common/lib/schema/entity/entity.class.d.ts +1 -1
- package/core/index.d.ts +1 -0
- package/core/utils/highlighter.d.ts +43 -0
- package/fesm2022/acorex-platform-auth.mjs +27 -29
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-DtC2IaE8.mjs → acorex-platform-common-avatar-widget-edit.component-syRKKn21.mjs} +6 -26
- package/fesm2022/acorex-platform-common-avatar-widget-edit.component-syRKKn21.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-avatar-widget-view.component-BOIV0Be1.mjs → acorex-platform-common-avatar-widget-view.component-DSju_bgg.mjs} +6 -28
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-DSju_bgg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-S4-3SmKA.mjs → acorex-platform-common-boolean-widget-filter.component-aaKT0FyC.mjs} +6 -26
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-aaKT0FyC.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-change-password.component-g_GEw3IZ.mjs → acorex-platform-common-change-password.component-DFoC5nP2.mjs} +7 -8
- package/fesm2022/acorex-platform-common-change-password.component-DFoC5nP2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-DOoneR7g.mjs → acorex-platform-common-checkbox-widget-column.component-DZxykkVr.mjs} +6 -28
- package/fesm2022/acorex-platform-common-checkbox-widget-column.component-DZxykkVr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-PFRq-XS-.mjs → acorex-platform-common-checkbox-widget-edit.component-CNmYVpMu.mjs} +6 -29
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-CNmYVpMu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CKz8XnjT.mjs → acorex-platform-common-checkbox-widget-view.component-3XLnJx9A.mjs} +6 -28
- package/fesm2022/acorex-platform-common-checkbox-widget-view.component-3XLnJx9A.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-DG0leXAo.mjs → acorex-platform-common-dateTime-widget-column.component-CKaMC189.mjs} +6 -27
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-CKaMC189.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-D8W-XEcx.mjs → acorex-platform-common-dateTime-widget-edit.component-B50J-bwp.mjs} +6 -26
- package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-B50J-bwp.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-DngCKwFY.mjs → acorex-platform-common-dateTime-widget-filter.component-CTV2a3c0.mjs} +6 -24
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-CTV2a3c0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-KGgJkiKB.mjs → acorex-platform-common-dateTime-widget-view.component-C7hmUXLz.mjs} +6 -27
- package/fesm2022/acorex-platform-common-dateTime-widget-view.component-C7hmUXLz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-column.component-CLNqSuB7.mjs → acorex-platform-common-email-widget-column.component-BPoSZTqM.mjs} +6 -29
- package/fesm2022/acorex-platform-common-email-widget-column.component-BPoSZTqM.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-edit.component--0gaRm4s.mjs → acorex-platform-common-email-widget-edit.component-aLPGOG3r.mjs} +6 -27
- package/fesm2022/acorex-platform-common-email-widget-edit.component-aLPGOG3r.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-view.component-C3AUr1HO.mjs → acorex-platform-common-email-widget-view.component-dMByK5bc.mjs} +5 -27
- package/fesm2022/acorex-platform-common-email-widget-view.component-dMByK5bc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-column.component-C9AHk2UP.mjs → acorex-platform-common-file-widget-column.component-Dafc2zLc.mjs} +6 -27
- package/fesm2022/acorex-platform-common-file-widget-column.component-Dafc2zLc.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-L7bln9k0.mjs → acorex-platform-common-file-widget-edit.component-C31kfJSw.mjs} +6 -27
- package/fesm2022/acorex-platform-common-file-widget-edit.component-C31kfJSw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-filter.component-Ce35mqny.mjs → acorex-platform-common-file-widget-filter.component-BNCcBun4.mjs} +6 -29
- package/fesm2022/acorex-platform-common-file-widget-filter.component-BNCcBun4.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-view.component-BvMzrs5C.mjs → acorex-platform-common-file-widget-view.component-T3r6musY.mjs} +6 -27
- package/fesm2022/acorex-platform-common-file-widget-view.component-T3r6musY.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-BVuV2Ib8.mjs → acorex-platform-common-gallery-widget-edit.component-zBsaBkzu.mjs} +6 -26
- package/fesm2022/acorex-platform-common-gallery-widget-edit.component-zBsaBkzu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-C8tdM6PX.mjs → acorex-platform-common-gallery-widget-filter.component-BhLYuB6p.mjs} +6 -28
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-BhLYuB6p.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-D8YmSi9C.mjs → acorex-platform-common-gallery-widget-view.component-Dxf4Oj1E.mjs} +6 -26
- package/fesm2022/acorex-platform-common-gallery-widget-view.component-Dxf4Oj1E.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-DGMxpnsr.mjs → acorex-platform-common-largetext-widget-edit.component-BYMIaLCI.mjs} +5 -27
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-BYMIaLCI.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-column.component-B-cEaNjv.mjs → acorex-platform-common-lookup-widget-column.component-BB0Mdx2u.mjs} +6 -28
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-BB0Mdx2u.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-DqB_g9Zz.mjs → acorex-platform-common-lookup-widget-edit.component-DUPsS_ZW.mjs} +6 -28
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-DUPsS_ZW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-0TPWNWSd.mjs → acorex-platform-common-lookup-widget-filter.component-CLyl94AJ.mjs} +6 -26
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-CLyl94AJ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-view.component-DYAg76YH.mjs → acorex-platform-common-lookup-widget-view.component-CJijszjn.mjs} +6 -28
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-CJijszjn.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-edit.component-C3cpsXD5.mjs → acorex-platform-common-map-widget-edit.component-BTHORlG5.mjs} +6 -27
- package/fesm2022/acorex-platform-common-map-widget-edit.component-BTHORlG5.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-view.component-C-DCNaJi.mjs → acorex-platform-common-map-widget-view.component-CQzW1ZeD.mjs} +6 -27
- package/fesm2022/acorex-platform-common-map-widget-view.component-CQzW1ZeD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-column.component-B2A7ZBEP.mjs → acorex-platform-common-messenger-widget-column.component-Brm4vLGA.mjs} +6 -29
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-Brm4vLGA.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-DC8vQDo0.mjs → acorex-platform-common-messenger-widget-edit.component-CJHvut2C.mjs} +6 -27
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-CJHvut2C.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-B6FavkmG.mjs → acorex-platform-common-messenger-widget-view.component-DVylp_2t.mjs} +6 -28
- package/fesm2022/acorex-platform-common-messenger-widget-view.component-DVylp_2t.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-edit.component-Bc5-ZUw4.mjs → acorex-platform-common-number-widget-edit.component-DZf-n-yr.mjs} +6 -27
- package/fesm2022/acorex-platform-common-number-widget-edit.component-DZf-n-yr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-DxfJ90n4.mjs → acorex-platform-common-number-widget-filter.component-womVAhSr.mjs} +6 -28
- package/fesm2022/acorex-platform-common-number-widget-filter.component-womVAhSr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-view.component-DGfLSGw1.mjs → acorex-platform-common-number-widget-view.component-L2pxAqqz.mjs} +5 -27
- package/fesm2022/acorex-platform-common-number-widget-view.component-L2pxAqqz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-column.component-DEHaVLGK.mjs → acorex-platform-common-password-widget-column.component-3ubqJk-d.mjs} +6 -28
- package/fesm2022/acorex-platform-common-password-widget-column.component-3ubqJk-d.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-edit.component-DrYyu5v-.mjs → acorex-platform-common-password-widget-edit.component-BokyEDfK.mjs} +6 -28
- package/fesm2022/acorex-platform-common-password-widget-edit.component-BokyEDfK.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-view.component-B_HU-3J1.mjs → acorex-platform-common-password-widget-view.component-BuFoE2fz.mjs} +7 -28
- package/fesm2022/acorex-platform-common-password-widget-view.component-BuFoE2fz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-D99ncxxJ.mjs → acorex-platform-common-phone-widget-column.component-79Me_VNP.mjs} +6 -29
- package/fesm2022/acorex-platform-common-phone-widget-column.component-79Me_VNP.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-a5EAI9FK.mjs → acorex-platform-common-phone-widget-edit.component-CIayMoT1.mjs} +6 -26
- package/fesm2022/acorex-platform-common-phone-widget-edit.component-CIayMoT1.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-BlFVuoNN.mjs → acorex-platform-common-phone-widget-view.component-B1Xu_rxC.mjs} +6 -28
- package/fesm2022/acorex-platform-common-phone-widget-view.component-B1Xu_rxC.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-DOdv5I2s.mjs → acorex-platform-common-rich-text-widget-column.component-Dbn3JMOu.mjs} +6 -29
- package/fesm2022/acorex-platform-common-rich-text-widget-column.component-Dbn3JMOu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-DL5UyAqe.mjs → acorex-platform-common-rich-text-widget-edit.component-CHT12edE.mjs} +6 -27
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-CHT12edE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-B9WB-mx9.mjs → acorex-platform-common-rich-text-widget-view.component-qvUpx39D.mjs} +5 -27
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-qvUpx39D.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-CkOuYy0Z.mjs → acorex-platform-common-selection-list-widget-column.component-E7yRTViz.mjs} +6 -29
- package/fesm2022/acorex-platform-common-selection-list-widget-column.component-E7yRTViz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-BmbDQ1LH.mjs → acorex-platform-common-selection-list-widget-edit.component-B8dmJ_jJ.mjs} +6 -28
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-B8dmJ_jJ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-Dm_1-7eT.mjs → acorex-platform-common-selection-list-widget-filter.component-i4syx0Bj.mjs} +6 -27
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-i4syx0Bj.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-3hinF85C.mjs → acorex-platform-common-selection-list-widget-view.component-B7disiIF.mjs} +6 -29
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-B7disiIF.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DmmPbw-A.mjs → acorex-platform-common-signature-pad-widget-edit.component-CMoiIhgJ.mjs} +6 -26
- package/fesm2022/acorex-platform-common-signature-pad-widget-edit.component-CMoiIhgJ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-DkFaMNk8.mjs → acorex-platform-common-signature-pad-widget-view.component-HfArY6VQ.mjs} +6 -27
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-HfArY6VQ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-string-widget-filter.component-DAqR2PUN.mjs → acorex-platform-common-string-widget-filter.component-CDssxMLR.mjs} +6 -28
- package/fesm2022/acorex-platform-common-string-widget-filter.component-CDssxMLR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-column.component-DVczwvKA.mjs → acorex-platform-common-text-widget-column.component-7yp4qqIb.mjs} +5 -27
- package/fesm2022/acorex-platform-common-text-widget-column.component-7yp4qqIb.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-DC_GnFhe.mjs → acorex-platform-common-text-widget-edit.component-5koh5Aws.mjs} +6 -27
- package/fesm2022/acorex-platform-common-text-widget-edit.component-5koh5Aws.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-view.component-BK3HZGgb.mjs → acorex-platform-common-text-widget-view.component-BH0LTD80.mjs} +5 -27
- package/fesm2022/{acorex-platform-common-text-widget-view.component-BK3HZGgb.mjs.map → acorex-platform-common-text-widget-view.component-BH0LTD80.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-Bp1d7SAE.mjs → acorex-platform-common-toggle-widget-column.component-C5dMjerm.mjs} +6 -28
- package/fesm2022/acorex-platform-common-toggle-widget-column.component-C5dMjerm.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-D64m4agx.mjs → acorex-platform-common-toggle-widget-edit.component-JOnGMn-9.mjs} +6 -27
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-JOnGMn-9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-BTaXXZ88.mjs → acorex-platform-common-toggle-widget-view.component-DguoIz_c.mjs} +6 -28
- package/fesm2022/acorex-platform-common-toggle-widget-view.component-DguoIz_c.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +184 -181
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +114 -7
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +55 -55
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +350 -205
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +126 -116
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-setting.mjs +68 -8
- package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layouts-entity-create-view.component-JsGlDx_S.mjs → acorex-platform-layouts-entity-create-view.component-1Yw4H3CW.mjs} +6 -6
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-1Yw4H3CW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layouts-entity-import-view.component-9FK_Iro9.mjs → acorex-platform-layouts-entity-import-view.component-BIHTWoXR.mjs} +7 -9
- package/fesm2022/acorex-platform-layouts-entity-import-view.component-BIHTWoXR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layouts-entity-modify-view.component-CNbc8ewu.mjs → acorex-platform-layouts-entity-modify-view.component-Cb2Yvtav.mjs} +7 -9
- package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Cb2Yvtav.mjs.map +1 -0
- package/fesm2022/acorex-platform-layouts.mjs +99 -88
- package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +7 -7
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Bw-rbKbL.mjs +108 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Bw-rbKbL.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DJYTC375.mjs +305 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DJYTC375.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-CWrpcOC2.mjs → acorex-platform-themes-default-entity-master-modify-view.component-DoeGBemE.mjs} +16 -17
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DoeGBemE.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-D8UjpvuI.mjs +130 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-D8UjpvuI.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-D5QQ2HAv.mjs → acorex-platform-themes-default-error-401.component-CRMYVnTw.mjs} +5 -5
- package/fesm2022/acorex-platform-themes-default-error-401.component-CRMYVnTw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-404.component-DSY_D3Iq.mjs → acorex-platform-themes-default-error-404.component-Dc_IGKXu.mjs} +5 -5
- package/fesm2022/acorex-platform-themes-default-error-404.component-Dc_IGKXu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-B6wSkMdd.mjs → acorex-platform-themes-default-error-offline.component-C6raiMLq.mjs} +5 -5
- package/fesm2022/acorex-platform-themes-default-error-offline.component-C6raiMLq.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +56 -56
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +8 -9
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-CPFA79Gx.mjs → acorex-platform-widgets-button-widget-designer.component-BQe1zP7P.mjs} +6 -7
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-BQe1zP7P.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-MInF2GVN.mjs → acorex-platform-widgets-checkbox-widget-column.component-05nKV-UV.mjs} +6 -7
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-05nKV-UV.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-B7Qv2aYx.mjs → acorex-platform-widgets-checkbox-widget-designer.component-RCi5IJOR.mjs} +6 -7
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-RCi5IJOR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-DP4kITs-.mjs → acorex-platform-widgets-checkbox-widget-view.component-BkWcZ4K9.mjs} +6 -7
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-BkWcZ4K9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-uQBHAspe.mjs → acorex-platform-widgets-color-box-widget-designer.component-CWhbgmDV.mjs} +6 -7
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-CWhbgmDV.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-contact-widget-filter.component-DnQZon-E.mjs → acorex-platform-widgets-contact-widget-filter.component-B1HiCGC6.mjs} +5 -6
- package/fesm2022/acorex-platform-widgets-contact-widget-filter.component-B1HiCGC6.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-DOulAanE.mjs → acorex-platform-widgets-page-widget-designer.component-DGNcuRbs.mjs} +21 -11
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DGNcuRbs.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-C8KmObPV.mjs → acorex-platform-widgets-rich-text-popup.component-D7LZqQIO.mjs} +6 -7
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-D7LZqQIO.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-BE6goaZc.mjs → acorex-platform-widgets-text-block-widget-designer.component-BToPbMjj.mjs} +6 -7
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-BToPbMjj.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +574 -875
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +23 -23
- package/layout/builder/lib/builder/widget.types.d.ts +21 -5
- package/layout/designer/lib/designer/components/add-widget-button/add-widget-mini-button.component.d.ts +3 -1
- package/layout/designer/lib/designer/components/board/board.component.d.ts +4 -3
- package/layout/designer/lib/designer/designer.component.d.ts +1 -1
- package/layout/designer/lib/designer/shared/designer-connector.service.d.ts +2 -2
- package/layout/designer/lib/designer/shared/designer.service.d.ts +10 -4
- package/layout/designer/lib/designer/shared/designer.types.d.ts +11 -0
- package/layout/designer/lib/designer/shared/generic-commands.types.d.ts +1 -0
- package/layout/designer/lib/designer/shared/widget-designer-renderer.directive.d.ts +7 -5
- package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +1 -1
- package/layout/entity/lib/entity-master-create.viewmodel.d.ts +10 -5
- package/layout/entity/lib/entity-master-list.viewmodel.d.ts +6 -3
- package/layout/entity/lib/workflows/create-entity.workflow.d.ts +2 -0
- package/layout/setting/lib/convert-setting-data.d.ts +1 -0
- package/layout/setting/lib/setting.viewmodel.d.ts +6 -3
- package/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.d.ts +12 -0
- package/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.d.ts +2 -0
- package/package.json +7 -35
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +1 -4
- package/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.d.ts +1 -1
- package/widgets/lib/properties/editors.props.d.ts +1 -0
- package/widgets/lib/widgets/advance/file/file-box-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/index.d.ts +0 -1
- package/widgets/lib/widgets/layout/block/block-widget.config.d.ts +4 -6
- package/esm2022/acorex-platform.mjs +0 -5
- package/esm2022/auth/acorex-platform-auth.mjs +0 -5
- package/esm2022/auth/index.mjs +0 -14
- package/esm2022/auth/lib/application/application.loader.mjs +0 -23
- package/esm2022/auth/lib/application/application.types.mjs +0 -2
- package/esm2022/auth/lib/auth-registry.service.mjs +0 -29
- package/esm2022/auth/lib/auth.guard.mjs +0 -16
- package/esm2022/auth/lib/auth.module.mjs +0 -90
- package/esm2022/auth/lib/auth.strategy.mjs +0 -2
- package/esm2022/auth/lib/errors.types.mjs +0 -15
- package/esm2022/auth/lib/feature/feature.directive.mjs +0 -55
- package/esm2022/auth/lib/feature/feature.guard.mjs +0 -19
- package/esm2022/auth/lib/feature/feature.loader.mjs +0 -14
- package/esm2022/auth/lib/feature/feature.types.mjs +0 -2
- package/esm2022/auth/lib/feature/index.mjs +0 -5
- package/esm2022/auth/lib/permission/index.mjs +0 -5
- package/esm2022/auth/lib/permission/permission.directive.mjs +0 -54
- package/esm2022/auth/lib/permission/permission.guard.mjs +0 -19
- package/esm2022/auth/lib/permission/permission.loader.mjs +0 -14
- package/esm2022/auth/lib/permission/permission.types.mjs +0 -2
- package/esm2022/auth/lib/session.service.mjs +0 -265
- package/esm2022/auth/lib/session.types.mjs +0 -29
- package/esm2022/auth/lib/tenant/tenant.loader.mjs +0 -20
- package/esm2022/auth/lib/tenant/tenant.types.mjs +0 -2
- package/esm2022/auth/lib/user/user.types.mjs +0 -2
- package/esm2022/common/acorex-platform-common.mjs +0 -5
- package/esm2022/common/index.mjs +0 -13
- package/esm2022/common/lib/app/app-startup.service.mjs +0 -40
- package/esm2022/common/lib/app/application.types.mjs +0 -55
- package/esm2022/common/lib/app/index.mjs +0 -4
- package/esm2022/common/lib/app/operators.mjs +0 -65
- package/esm2022/common/lib/common.module.mjs +0 -155
- package/esm2022/common/lib/configs/app.config.mjs +0 -27
- package/esm2022/common/lib/configs/config.types.mjs +0 -3
- package/esm2022/common/lib/data/data-provider.types.mjs +0 -3
- package/esm2022/common/lib/data/data.types.mjs +0 -2
- package/esm2022/common/lib/data/dexie-storage.service.mjs +0 -130
- package/esm2022/common/lib/data/entity-data-seeder.mjs +0 -25
- package/esm2022/common/lib/data/entity-storage-service.mjs +0 -63
- package/esm2022/common/lib/data/filter-middleware.service.mjs +0 -53
- package/esm2022/common/lib/data/index.mjs +0 -8
- package/esm2022/common/lib/data/operators.service.mjs +0 -15
- package/esm2022/common/lib/errors/error-handler-registry.service.mjs +0 -29
- package/esm2022/common/lib/errors/error-handler.types.mjs +0 -2
- package/esm2022/common/lib/errors/global-error-handler.mjs +0 -36
- package/esm2022/common/lib/errors/index.mjs +0 -4
- package/esm2022/common/lib/layout/beardcrumb.type.mjs +0 -2
- package/esm2022/common/lib/layout/component-slot/component-slot-loader.service.mjs +0 -57
- package/esm2022/common/lib/layout/component-slot/component-slot-registery.service.mjs +0 -28
- package/esm2022/common/lib/layout/component-slot/component-slot.directive.mjs +0 -24
- package/esm2022/common/lib/layout/component-slot/component-slot.module.mjs +0 -72
- package/esm2022/common/lib/layout/component-slot/component-slot.types.mjs +0 -2
- package/esm2022/common/lib/layout/component-slot/index.mjs +0 -6
- package/esm2022/common/lib/layout/grid-layout/grid-layout.directive.mjs +0 -61
- package/esm2022/common/lib/layout/grid-layout/grid-layout.types.mjs +0 -2
- package/esm2022/common/lib/layout/grid-layout/index.mjs +0 -3
- package/esm2022/common/lib/layout/index.mjs +0 -8
- package/esm2022/common/lib/layout/logo/index.mjs +0 -3
- package/esm2022/common/lib/layout/logo/logo.component.mjs +0 -38
- package/esm2022/common/lib/layout/logo/logo.types.mjs +0 -21
- package/esm2022/common/lib/layout/menu/index.mjs +0 -4
- package/esm2022/common/lib/layout/menu/menu.provider.mjs +0 -137
- package/esm2022/common/lib/layout/menu/menu.service.mjs +0 -105
- package/esm2022/common/lib/layout/menu/menu.types.mjs +0 -2
- package/esm2022/common/lib/layout/sticky.directive.mjs +0 -82
- package/esm2022/common/lib/layout/theme/components/slots/footer-text-slot.component.mjs +0 -20
- package/esm2022/common/lib/layout/theme/components/slots/index.mjs +0 -3
- package/esm2022/common/lib/layout/theme/components/slots/navbar-slot.component.mjs +0 -36
- package/esm2022/common/lib/schema/component-loader.mjs +0 -2
- package/esm2022/common/lib/schema/entity/entity-registery.service.mjs +0 -70
- package/esm2022/common/lib/schema/entity/entity.class.mjs +0 -32
- package/esm2022/common/lib/schema/entity/entity.loader.mjs +0 -13
- package/esm2022/common/lib/schema/entity/index.mjs +0 -4
- package/esm2022/common/lib/schema/formats.mjs +0 -2
- package/esm2022/common/lib/schema/index.mjs +0 -9
- package/esm2022/common/lib/schema/schema-registery.service.mjs +0 -33
- package/esm2022/common/lib/schema/schema.module.mjs +0 -23
- package/esm2022/common/lib/schema/schema.types.mjs +0 -2
- package/esm2022/common/lib/schema/widget/index.mjs +0 -6
- package/esm2022/common/lib/schema/widget/widget-base.mjs +0 -113
- package/esm2022/common/lib/schema/widget/widget-column-renderer.mjs +0 -118
- package/esm2022/common/lib/schema/widget/widget-filter-renderer.mjs +0 -133
- package/esm2022/common/lib/schema/widget/widget-renderer.mjs +0 -148
- package/esm2022/common/lib/schema/widget/widget-token.mjs +0 -3
- package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-edit.component.mjs +0 -166
- package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-view.component.mjs +0 -63
- package/esm2022/common/lib/schema/widgets/checkbox/checkbox-widget-column.component.mjs +0 -53
- package/esm2022/common/lib/schema/widgets/checkbox/checkbox-widget-edit.component.mjs +0 -22
- package/esm2022/common/lib/schema/widgets/checkbox/checkbox-widget-view.component.mjs +0 -47
- package/esm2022/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.mjs +0 -153
- package/esm2022/common/lib/schema/widgets/common-widget-filter/number-widget-filter.component.mjs +0 -135
- package/esm2022/common/lib/schema/widgets/common-widget-filter/string-widget-filter.component.mjs +0 -125
- package/esm2022/common/lib/schema/widgets/common-widgets.module.mjs +0 -505
- package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-column.component.mjs +0 -44
- package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-edit.component.mjs +0 -177
- package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.mjs +0 -284
- package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-view.component.mjs +0 -71
- package/esm2022/common/lib/schema/widgets/email/email-widget-column.component.mjs +0 -73
- package/esm2022/common/lib/schema/widgets/email/email-widget-edit.component.mjs +0 -248
- package/esm2022/common/lib/schema/widgets/email/email-widget-view.component.mjs +0 -108
- package/esm2022/common/lib/schema/widgets/file/file-widget-column.component.mjs +0 -27
- package/esm2022/common/lib/schema/widgets/file/file-widget-edit.component.mjs +0 -200
- package/esm2022/common/lib/schema/widgets/file/file-widget-filter.component.mjs +0 -27
- package/esm2022/common/lib/schema/widgets/file/file-widget-view.component.mjs +0 -153
- package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-edit.component.mjs +0 -189
- package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-filter.component.mjs +0 -27
- package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-types.mjs +0 -2
- package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-view.component.mjs +0 -173
- package/esm2022/common/lib/schema/widgets/index.mjs +0 -2
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-column.component.mjs +0 -43
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-edit.component.mjs +0 -95
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-filter.component.mjs +0 -160
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-view.component.mjs +0 -54
- package/esm2022/common/lib/schema/widgets/map/map-widget-edit.component.mjs +0 -91
- package/esm2022/common/lib/schema/widgets/map/map-widget-view.component.mjs +0 -63
- package/esm2022/common/lib/schema/widgets/messenger/messenger-widget-column.component.mjs +0 -71
- package/esm2022/common/lib/schema/widgets/messenger/messenger-widget-edit.component.mjs +0 -136
- package/esm2022/common/lib/schema/widgets/messenger/messenger-widget-view.component.mjs +0 -132
- package/esm2022/common/lib/schema/widgets/number/number-widget-edit.component.mjs +0 -46
- package/esm2022/common/lib/schema/widgets/number/number-widget-view.component.mjs +0 -30
- package/esm2022/common/lib/schema/widgets/password/change-password.component.mjs +0 -174
- package/esm2022/common/lib/schema/widgets/password/password-widget-column.component.mjs +0 -67
- package/esm2022/common/lib/schema/widgets/password/password-widget-edit.component.mjs +0 -41
- package/esm2022/common/lib/schema/widgets/password/password-widget-view.component.mjs +0 -109
- package/esm2022/common/lib/schema/widgets/phone/phone-widget-column.component.mjs +0 -91
- package/esm2022/common/lib/schema/widgets/phone/phone-widget-edit.component.mjs +0 -248
- package/esm2022/common/lib/schema/widgets/phone/phone-widget-view.component.mjs +0 -123
- package/esm2022/common/lib/schema/widgets/rich-text/rich-text-widget-column.component.mjs +0 -61
- package/esm2022/common/lib/schema/widgets/rich-text/rich-text-widget-edit.component.mjs +0 -66
- package/esm2022/common/lib/schema/widgets/rich-text/rich-text-widget-view.component.mjs +0 -34
- package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-column.component.mjs +0 -45
- package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-edit.component.mjs +0 -53
- package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-filter.component.mjs +0 -45
- package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-view.component.mjs +0 -45
- package/esm2022/common/lib/schema/widgets/signature-pad/signature-pad-widget-edit.component.mjs +0 -128
- package/esm2022/common/lib/schema/widgets/signature-pad/signature-pad-widget-view.component.mjs +0 -41
- package/esm2022/common/lib/schema/widgets/text/largetext-widget-edit.component.mjs +0 -36
- package/esm2022/common/lib/schema/widgets/text/text-widget-column.component.mjs +0 -46
- package/esm2022/common/lib/schema/widgets/text/text-widget-edit.component.mjs +0 -161
- package/esm2022/common/lib/schema/widgets/text/text-widget-view.component.mjs +0 -66
- package/esm2022/common/lib/schema/widgets/toggle/toggle-widget-column.component.mjs +0 -57
- package/esm2022/common/lib/schema/widgets/toggle/toggle-widget-edit.component.mjs +0 -25
- package/esm2022/common/lib/schema/widgets/toggle/toggle-widget-view.component.mjs +0 -49
- package/esm2022/common/lib/settings/index.mjs +0 -5
- package/esm2022/common/lib/settings/setting-definition.provider.mjs +0 -183
- package/esm2022/common/lib/settings/settings.provider.mjs +0 -35
- package/esm2022/common/lib/settings/settings.service.mjs +0 -53
- package/esm2022/common/lib/settings/settings.types.mjs +0 -2
- package/esm2022/common/lib/store/common.actions.mjs +0 -5
- package/esm2022/common/lib/store/common.effects.mjs +0 -34
- package/esm2022/common/lib/store/index.mjs +0 -3
- package/esm2022/common/lib/utils/clipboard-service.mjs +0 -26
- package/esm2022/common/lib/utils/data-generator.mjs +0 -133
- package/esm2022/common/lib/utils/index.mjs +0 -4
- package/esm2022/common/lib/utils/pdf.service.mjs +0 -85
- package/esm2022/common/lib/workflows/common.workflow.mjs +0 -73
- package/esm2022/common/lib/workflows/error-handler.mjs +0 -24
- package/esm2022/common/lib/workflows/index.mjs +0 -3
- package/esm2022/core/acorex-platform-core.mjs +0 -5
- package/esm2022/core/index.mjs +0 -5
- package/esm2022/core/lib/types.mjs +0 -13
- package/esm2022/core/utils/countdown-timer.mjs +0 -49
- package/esm2022/core/utils/data-conditioner.mjs +0 -138
- package/esm2022/core/utils/html-utils.mjs +0 -27
- package/esm2022/index.mjs +0 -2
- package/esm2022/layout/builder/acorex-platform-layout-builder.mjs +0 -5
- package/esm2022/layout/builder/index.mjs +0 -2
- package/esm2022/layout/builder/lib/builder/builder.module.mjs +0 -68
- package/esm2022/layout/builder/lib/builder/builder.service.mjs +0 -105
- package/esm2022/layout/builder/lib/builder/datasource-provider.service.mjs +0 -27
- package/esm2022/layout/builder/lib/builder/index.mjs +0 -12
- package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +0 -39
- package/esm2022/layout/builder/lib/builder/widget-column-renderer.mjs +0 -128
- package/esm2022/layout/builder/lib/builder/widget-container.component.mjs +0 -46
- package/esm2022/layout/builder/lib/builder/widget-groups.mjs +0 -27
- package/esm2022/layout/builder/lib/builder/widget-registery.service.mjs +0 -36
- package/esm2022/layout/builder/lib/builder/widget-renderer.component.directive.mjs +0 -313
- package/esm2022/layout/builder/lib/builder/widget-renderer.component.mjs +0 -320
- package/esm2022/layout/builder/lib/builder/widget.types.mjs +0 -264
- package/esm2022/layout/designer/acorex-platform-layout-designer.mjs +0 -5
- package/esm2022/layout/designer/index.mjs +0 -5
- package/esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-button.component.mjs +0 -37
- package/esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-line-button.component.mjs +0 -49
- package/esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-mini-button.component.mjs +0 -53
- package/esm2022/layout/designer/lib/designer/components/add-widget-button/index.mjs +0 -4
- package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +0 -139
- package/esm2022/layout/designer/lib/designer/components/breadcrumbs/breadcrumbs.component.mjs +0 -59
- package/esm2022/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.mjs +0 -33
- package/esm2022/layout/designer/lib/designer/components/drawers/history/history.component.mjs +0 -30
- package/esm2022/layout/designer/lib/designer/components/drawers/outline/outline.component.mjs +0 -61
- package/esm2022/layout/designer/lib/designer/components/drawers/pages/pages.component.mjs +0 -28
- package/esm2022/layout/designer/lib/designer/components/grid-drawer/grid-drawer.component.mjs +0 -82
- package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +0 -105
- package/esm2022/layout/designer/lib/designer/components/size-mode/view-size-toolbar.component.mjs +0 -49
- package/esm2022/layout/designer/lib/designer/components/widget-picker/widget-picker.component.mjs +0 -121
- package/esm2022/layout/designer/lib/designer/designer.component.mjs +0 -81
- package/esm2022/layout/designer/lib/designer/index.mjs +0 -10
- package/esm2022/layout/designer/lib/designer/shared/command.mjs +0 -185
- package/esm2022/layout/designer/lib/designer/shared/designer-connector.service.mjs +0 -10
- package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +0 -603
- package/esm2022/layout/designer/lib/designer/shared/designer.types.mjs +0 -6
- package/esm2022/layout/designer/lib/designer/shared/drawer-content/drawer-content.component.mjs +0 -16
- package/esm2022/layout/designer/lib/designer/shared/generic-commands.types.mjs +0 -52
- package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +0 -220
- package/esm2022/layout/designer/lib/preview/preview-frame.component.mjs +0 -75
- package/esm2022/layout/designer/lib/preview/preview-viewer.component.mjs +0 -67
- package/esm2022/layout/designer/lib/preview/preview.component.mjs +0 -79
- package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +0 -119
- package/esm2022/layout/entity/acorex-platform-layout-entity.mjs +0 -5
- package/esm2022/layout/entity/index.mjs +0 -2
- package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +0 -182
- package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +0 -143
- package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +0 -350
- package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +0 -227
- package/esm2022/layout/entity/lib/entity-master-update.viewmodel.mjs +0 -103
- package/esm2022/layout/entity/lib/entity-registery.service.mjs +0 -69
- package/esm2022/layout/entity/lib/entity.config.mjs +0 -30
- package/esm2022/layout/entity/lib/entity.module.mjs +0 -138
- package/esm2022/layout/entity/lib/entity.service.mjs +0 -18
- package/esm2022/layout/entity/lib/entity.viewmodel.mjs +0 -34
- package/esm2022/layout/entity/lib/index.mjs +0 -11
- package/esm2022/layout/entity/lib/widgets/lookup-widget/index.mjs +0 -7
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-column.component.mjs +0 -25
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +0 -267
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-filter.component.mjs +0 -20
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-print.component.mjs +0 -19
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +0 -208
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.mjs +0 -109
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.mjs +0 -110
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.mjs +0 -62
- package/esm2022/layout/entity/lib/widgets/widget-selector/index.mjs +0 -4
- package/esm2022/layout/entity/lib/widgets/widget-selector/widget-selector-widget-edit.component.mjs +0 -130
- package/esm2022/layout/entity/lib/widgets/widget-selector/widget-selector-widget-view.component.mjs +0 -18
- package/esm2022/layout/entity/lib/widgets/widget-selector/widget-selector-widget.config.mjs +0 -20
- package/esm2022/layout/entity/lib/workflows/create-entity.workflow.mjs +0 -92
- package/esm2022/layout/entity/lib/workflows/delete-entity.workflow.mjs +0 -130
- package/esm2022/layout/entity/lib/workflows/modify-section.workflow.mjs +0 -94
- package/esm2022/layout/entity/lib/workflows/show-details.workflow.mjs +0 -35
- package/esm2022/layout/entity/lib/workflows/show-list.workflow.mjs +0 -35
- package/esm2022/layout/setting/acorex-platform-layout-setting.mjs +0 -5
- package/esm2022/layout/setting/index.mjs +0 -2
- package/esm2022/layout/setting/lib/convert-setting-data.mjs +0 -59
- package/esm2022/layout/setting/lib/setting.viewmodel.mjs +0 -132
- package/esm2022/layouts/acorex-platform-layouts.mjs +0 -5
- package/esm2022/layouts/index.mjs +0 -3
- package/esm2022/layouts/lib/admin/admin.module.mjs +0 -94
- package/esm2022/layouts/lib/admin/admin.routes.mjs +0 -48
- package/esm2022/layouts/lib/admin/custom-reuse.strategy.mjs +0 -20
- package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +0 -119
- package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.config.mjs +0 -138
- package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/detail-view.config.mjs +0 -126
- package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +0 -164
- package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/index.mjs +0 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-import-view/entity-import-view.component.mjs +0 -91
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.mjs +0 -201
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/index.mjs +0 -6
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.mjs +0 -53
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.mjs +0 -105
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-filter-operator.component.mjs +0 -76
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.mjs +0 -56
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +0 -295
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/index.mjs +0 -5
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.mjs +0 -341
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.mjs +0 -163
- package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +0 -95
- package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.config.mjs +0 -67
- package/esm2022/layouts/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.mjs +0 -77
- package/esm2022/layouts/lib/admin/entity-layout/entity-quick-view/index.mjs +0 -2
- package/esm2022/layouts/lib/admin/entity-layout/index.mjs +0 -5
- package/esm2022/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.mjs +0 -93
- package/esm2022/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.mjs +0 -139
- package/esm2022/layouts/lib/admin/entity-layout/workflows/import-entity.workflow.mjs +0 -77
- package/esm2022/layouts/lib/admin/entity-layout/workflows/index.mjs +0 -7
- package/esm2022/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.mjs +0 -100
- package/esm2022/layouts/lib/admin/entity-layout/workflows/modify-section.workflow.mjs +0 -85
- package/esm2022/layouts/lib/admin/entity-layout/workflows/show-details.workflow.mjs +0 -36
- package/esm2022/layouts/lib/admin/entity-layout/workflows/show-list.workflow.mjs +0 -35
- package/esm2022/layouts/lib/admin/entity-layout/workflows/show-quick-view.workflow.mjs +0 -50
- package/esm2022/layouts/lib/admin/entity.resolver.mjs +0 -17
- package/esm2022/layouts/lib/admin/index.mjs +0 -6
- package/esm2022/layouts/lib/layout.module.mjs +0 -43
- package/esm2022/native/acorex-platform-native.mjs +0 -5
- package/esm2022/native/index.mjs +0 -3
- package/esm2022/native/lib/native.module.mjs +0 -16
- package/esm2022/native/lib/native.service.mjs +0 -133
- package/esm2022/themes/default/acorex-platform-themes-default.mjs +0 -5
- package/esm2022/themes/default/index.mjs +0 -5
- package/esm2022/themes/default/lib/default.module.mjs +0 -122
- package/esm2022/themes/default/lib/entity-reuse.strategy.mjs +0 -19
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +0 -160
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +0 -106
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +0 -190
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +0 -74
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.mjs +0 -72
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +0 -85
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +0 -84
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +0 -70
- package/esm2022/themes/default/lib/layouts/entity-layouts/index.mjs +0 -2
- package/esm2022/themes/default/lib/layouts/root-layout/components/footer/footer.component.mjs +0 -14
- package/esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.mjs +0 -27
- package/esm2022/themes/default/lib/layouts/root-layout/components/menu/root-menu.component.mjs +0 -40
- package/esm2022/themes/default/lib/layouts/root-layout/index.mjs +0 -6
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +0 -36
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.module.mjs +0 -99
- package/esm2022/themes/default/lib/layouts/setting-layout/index.mjs +0 -3
- package/esm2022/themes/default/lib/layouts/setting-layout/setting-menu/setting-menu.component.mjs +0 -28
- package/esm2022/themes/default/lib/layouts/setting-layout/setting-view/setting-view.component.mjs +0 -42
- package/esm2022/themes/default/lib/pages/errors/error-401/error-401.component.mjs +0 -28
- package/esm2022/themes/default/lib/pages/errors/error-404/error-404.component.mjs +0 -22
- package/esm2022/themes/default/lib/pages/errors/error-offline/error-offline.component.mjs +0 -16
- package/esm2022/themes/shared/acorex-platform-themes-shared.mjs +0 -5
- package/esm2022/themes/shared/index.mjs +0 -4
- package/esm2022/themes/shared/lib/components/theme-slot.component.mjs +0 -116
- package/esm2022/themes/shared/lib/services/theme.service.mjs +0 -250
- package/esm2022/themes/shared/lib/shared.module.mjs +0 -39
- package/esm2022/widgets/acorex-platform-widgets.mjs +0 -5
- package/esm2022/widgets/index.mjs +0 -4
- package/esm2022/widgets/lib/properties/data-source.props.mjs +0 -21
- package/esm2022/widgets/lib/properties/editors.props.mjs +0 -252
- package/esm2022/widgets/lib/properties/general.props.mjs +0 -115
- package/esm2022/widgets/lib/properties/groups.mjs +0 -21
- package/esm2022/widgets/lib/properties/index.mjs +0 -7
- package/esm2022/widgets/lib/properties/layout.props.mjs +0 -270
- package/esm2022/widgets/lib/properties/table-column.props.mjs +0 -33
- package/esm2022/widgets/lib/widgets/actions/button/button-widget-designer.component.mjs +0 -69
- package/esm2022/widgets/lib/widgets/actions/button/button-widget-view.component.mjs +0 -68
- package/esm2022/widgets/lib/widgets/actions/button/button-widget.config.mjs +0 -31
- package/esm2022/widgets/lib/widgets/actions/button/index.mjs +0 -3
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-column.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-designer.component.mjs +0 -18
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-edit.component.mjs +0 -24
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-view.component.mjs +0 -22
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget.config.mjs +0 -32
- package/esm2022/widgets/lib/widgets/advance/cron-job/index.mjs +0 -8
- package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-column.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-edit.component.mjs +0 -131
- package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-view.component.mjs +0 -215
- package/esm2022/widgets/lib/widgets/advance/file/file-box-widget.config.mjs +0 -53
- package/esm2022/widgets/lib/widgets/advance/file/file-box-widget.service.mjs +0 -3
- package/esm2022/widgets/lib/widgets/advance/file/index.mjs +0 -8
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-column.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-edit.component.mjs +0 -182
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-types.mjs +0 -2
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-view.component.mjs +0 -160
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget.config.mjs +0 -30
- package/esm2022/widgets/lib/widgets/advance/gallery/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/advance/map/index.mjs +0 -4
- package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-edit.component.mjs +0 -77
- package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-view.component.mjs +0 -52
- package/esm2022/widgets/lib/widgets/advance/map/map-box-widget.config.mjs +0 -120
- package/esm2022/widgets/lib/widgets/advance/qrcode/index.mjs +0 -3
- package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.mjs +0 -60
- package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget.config.mjs +0 -64
- package/esm2022/widgets/lib/widgets/advance/signature/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget-column.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget-edit.component.mjs +0 -151
- package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget-view.component.mjs +0 -43
- package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget.config.mjs +0 -30
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-column.component.mjs +0 -51
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-designer.component.mjs +0 -54
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.mjs +0 -72
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.mjs +0 -70
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.mjs +0 -41
- package/esm2022/widgets/lib/widgets/editors/checkbox/index.mjs +0 -3
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-column.component.mjs +0 -40
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-designer.component.mjs +0 -54
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-edit.component.mjs +0 -61
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-view.component.mjs +0 -41
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget.config.mjs +0 -40
- package/esm2022/widgets/lib/widgets/editors/color/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-column.component.mjs +0 -50
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +0 -322
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-view.component.mjs +0 -122
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +0 -59
- package/esm2022/widgets/lib/widgets/editors/contact/contact.type.mjs +0 -2
- package/esm2022/widgets/lib/widgets/editors/contact/index.mjs +0 -6
- package/esm2022/widgets/lib/widgets/editors/contact/popup-component.mjs +0 -78
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.mjs +0 -64
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.mjs +0 -172
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.mjs +0 -63
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.mjs +0 -43
- package/esm2022/widgets/lib/widgets/editors/date-time/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-column.component.mjs +0 -66
- package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-edit.component.mjs +0 -258
- package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-view.component.mjs +0 -115
- package/esm2022/widgets/lib/widgets/editors/email/email-box-widget.config.mjs +0 -41
- package/esm2022/widgets/lib/widgets/editors/email/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/large-text/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-column.component.mjs +0 -23
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.mjs +0 -79
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-view.component.mjs +0 -31
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget.config.mjs +0 -42
- package/esm2022/widgets/lib/widgets/editors/link/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/link/link-widget-column.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/link/link-widget-edit.component.mjs +0 -399
- package/esm2022/widgets/lib/widgets/editors/link/link-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/link/link-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/link/link-widget-view.component.mjs +0 -120
- package/esm2022/widgets/lib/widgets/editors/link/link-widget.config.mjs +0 -30
- package/esm2022/widgets/lib/widgets/editors/number/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-column.component.mjs +0 -38
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-edit.component.mjs +0 -159
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-view.component.mjs +0 -50
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget.config.mjs +0 -42
- package/esm2022/widgets/lib/widgets/editors/password/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/password/password-box-widget-column.component.mjs +0 -56
- package/esm2022/widgets/lib/widgets/editors/password/password-box-widget-edit.component.mjs +0 -56
- package/esm2022/widgets/lib/widgets/editors/password/password-box-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/password/password-box-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/password/password-box-widget-view.component.mjs +0 -82
- package/esm2022/widgets/lib/widgets/editors/password/password-box-widget.config.mjs +0 -40
- package/esm2022/widgets/lib/widgets/editors/phone/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-column.component.mjs +0 -66
- package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-edit.component.mjs +0 -230
- package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-view.component.mjs +0 -115
- package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget.config.mjs +0 -33
- package/esm2022/widgets/lib/widgets/editors/rich-text/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-popup.component.mjs +0 -38
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-column.component.mjs +0 -46
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.mjs +0 -92
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-view.component.mjs +0 -47
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget.config.mjs +0 -41
- package/esm2022/widgets/lib/widgets/editors/select/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-column.component.mjs +0 -49
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +0 -108
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-filter.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-view.component.mjs +0 -60
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget.config.mjs +0 -41
- package/esm2022/widgets/lib/widgets/editors/selection-list/index.mjs +0 -8
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-column.component.mjs +0 -56
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.mjs +0 -88
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +0 -99
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.mjs +0 -52
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.mjs +0 -44
- package/esm2022/widgets/lib/widgets/editors/text/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-column.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-edit.component.mjs +0 -130
- package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-view.component.mjs +0 -47
- package/esm2022/widgets/lib/widgets/editors/text/text-box-widget.config.mjs +0 -43
- package/esm2022/widgets/lib/widgets/editors/toggle/index.mjs +0 -7
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-column.component.mjs +0 -53
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.mjs +0 -48
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-print.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-view.component.mjs +0 -55
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget.config.mjs +0 -42
- package/esm2022/widgets/lib/widgets/index.mjs +0 -27
- package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +0 -98
- package/esm2022/widgets/lib/widgets/layout/block/block-widget-view.component.mjs +0 -83
- package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +0 -31
- package/esm2022/widgets/lib/widgets/layout/block/index.mjs +0 -4
- package/esm2022/widgets/lib/widgets/layout/document/document-widget.config.mjs +0 -13
- package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.mjs +0 -67
- package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.mjs +0 -51
- package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget.config.mjs +0 -30
- package/esm2022/widgets/lib/widgets/layout/form-field/index.mjs +0 -4
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +0 -91
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-view.component.mjs +0 -38
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget.config.mjs +0 -29
- package/esm2022/widgets/lib/widgets/layout/grid/index.mjs +0 -5
- package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.mjs +0 -100
- package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.mjs +0 -89
- package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget.config.mjs +0 -31
- package/esm2022/widgets/lib/widgets/layout/grid-item/index.mjs +0 -5
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-designer.component.mjs +0 -85
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-print.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.mjs +0 -38
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget.config.mjs +0 -28
- package/esm2022/widgets/lib/widgets/layout/grid-row/index.mjs +0 -5
- package/esm2022/widgets/lib/widgets/layout/page/index.mjs +0 -3
- package/esm2022/widgets/lib/widgets/layout/page/page-widget-designer.component.mjs +0 -148
- package/esm2022/widgets/lib/widgets/layout/page/page-widget-view.component.mjs +0 -41
- package/esm2022/widgets/lib/widgets/layout/page/page-widget.config.mjs +0 -46
- package/esm2022/widgets/lib/widgets/layout/repeater/index.mjs +0 -6
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.mjs +0 -125
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.mjs +0 -170
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-print.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-view.component.mjs +0 -44
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget.config.mjs +0 -37
- package/esm2022/widgets/lib/widgets/layout/template/index.mjs +0 -5
- package/esm2022/widgets/lib/widgets/layout/template/template-picker/template-picker.component.mjs +0 -120
- package/esm2022/widgets/lib/widgets/layout/template/template-widget-designer.component.mjs +0 -70
- package/esm2022/widgets/lib/widgets/layout/template/template-widget-edit.component.mjs +0 -96
- package/esm2022/widgets/lib/widgets/layout/template/template-widget-view.component.mjs +0 -62
- package/esm2022/widgets/lib/widgets/layout/template/template-widget.config.mjs +0 -30
- package/esm2022/widgets/lib/widgets/layout/template/template.provider.mjs +0 -58
- package/esm2022/widgets/lib/widgets/layout/text-block/index.mjs +0 -3
- package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget-designer.component.mjs +0 -38
- package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget-view.component.mjs +0 -30
- package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget.config.mjs +0 -43
- package/esm2022/widgets/lib/widgets.module.mjs +0 -113
- package/esm2022/workflow/acorex-platform-workflow.mjs +0 -5
- package/esm2022/workflow/index.mjs +0 -7
- package/esm2022/workflow/lib/actions/start-workflow.action.mjs +0 -32
- package/esm2022/workflow/lib/errors.types.mjs +0 -8
- package/esm2022/workflow/lib/workflow-event-dispatcher.service.mjs +0 -23
- package/esm2022/workflow/lib/workflow-registery.service.mjs +0 -39
- package/esm2022/workflow/lib/workflow.module.mjs +0 -101
- package/esm2022/workflow/lib/workflow.service.mjs +0 -188
- package/esm2022/workflow/lib/workflow.types.mjs +0 -59
- package/fesm2022/acorex-platform-common-avatar-widget-edit.component-DtC2IaE8.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-BOIV0Be1.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-S4-3SmKA.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-change-password.component-g_GEw3IZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-column.component-DOoneR7g.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-PFRq-XS-.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-view.component-CKz8XnjT.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-DG0leXAo.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-D8W-XEcx.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-DngCKwFY.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-view.component-KGgJkiKB.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-column.component-CLNqSuB7.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-edit.component--0gaRm4s.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-view.component-C3AUr1HO.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-column.component-C9AHk2UP.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-edit.component-L7bln9k0.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-filter.component-Ce35mqny.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-view.component-BvMzrs5C.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-edit.component-BVuV2Ib8.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-C8tdM6PX.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-view.component-D8YmSi9C.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-DGMxpnsr.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-B-cEaNjv.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-DqB_g9Zz.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-0TPWNWSd.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-DYAg76YH.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-edit.component-C3cpsXD5.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-view.component-C-DCNaJi.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-B2A7ZBEP.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-DC8vQDo0.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-view.component-B6FavkmG.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-edit.component-Bc5-ZUw4.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-filter.component-DxfJ90n4.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-view.component-DGfLSGw1.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-column.component-DEHaVLGK.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-edit.component-DrYyu5v-.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-view.component-B_HU-3J1.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-phone-widget-column.component-D99ncxxJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-phone-widget-edit.component-a5EAI9FK.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-phone-widget-view.component-BlFVuoNN.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-column.component-DOdv5I2s.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-DL5UyAqe.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-B9WB-mx9.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-column.component-CkOuYy0Z.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-BmbDQ1LH.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-Dm_1-7eT.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-3hinF85C.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-edit.component-DmmPbw-A.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-DkFaMNk8.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-string-widget-filter.component-DAqR2PUN.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-text-widget-column.component-DVczwvKA.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-text-widget-edit.component-DC_GnFhe.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-column.component-Bp1d7SAE.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-D64m4agx.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-view.component-BTaXXZ88.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-create-view.component-JsGlDx_S.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-import-view.component-9FK_Iro9.mjs.map +0 -1
- package/fesm2022/acorex-platform-layouts-entity-modify-view.component-CNbc8ewu.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Bs6fn6z2.mjs +0 -109
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Bs6fn6z2.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DPHXeucj.mjs +0 -310
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DPHXeucj.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CWrpcOC2.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DHfe0Qtu.mjs +0 -148
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DHfe0Qtu.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-D5QQ2HAv.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-DSY_D3Iq.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-B6wSkMdd.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-CPFA79Gx.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-MInF2GVN.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-B7Qv2aYx.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-DP4kITs-.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-uQBHAspe.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-contact-widget-filter.component-DnQZon-E.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DOulAanE.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-C8KmObPV.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-template-picker.component-DPlvwgbu.mjs +0 -123
- package/fesm2022/acorex-platform-widgets-template-picker.component-DPlvwgbu.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-template-widget-edit.component-DwPYeF0y.mjs +0 -136
- package/fesm2022/acorex-platform-widgets-template-widget-edit.component-DwPYeF0y.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-BE6goaZc.mjs.map +0 -1
- package/widgets/lib/widgets/layout/template/index.d.ts +0 -4
- package/widgets/lib/widgets/layout/template/template-picker/template-picker.component.d.ts +0 -30
- package/widgets/lib/widgets/layout/template/template-widget-designer.component.d.ts +0 -11
- package/widgets/lib/widgets/layout/template/template-widget-edit.component.d.ts +0 -13
- package/widgets/lib/widgets/layout/template/template-widget-view.component.d.ts +0 -11
- package/widgets/lib/widgets/layout/template/template-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/layout/template/template.provider.d.ts +0 -24
|
@@ -1,603 +0,0 @@
|
|
|
1
|
-
import { AXLoadingDialogService } from '@acorex/components/loading-dialog';
|
|
2
|
-
import { AXPopupService } from '@acorex/components/popup';
|
|
3
|
-
import { AXToastService } from '@acorex/components/toast';
|
|
4
|
-
import { AXFileService } from '@acorex/core/file';
|
|
5
|
-
import { AXPWidgetRegistryService, AXPWidgetsCatalog, } from '@acorex/platform/layout/builder';
|
|
6
|
-
import { computed, effect, inject, Injectable, signal } from '@angular/core';
|
|
7
|
-
import { cloneDeep, get, merge, set, sortBy } from 'lodash-es';
|
|
8
|
-
import { Subject } from 'rxjs';
|
|
9
|
-
import { AddWidgetCommand, CommandManager, RemoveWidgetCommand, UpdateWidgetCommand } from './command';
|
|
10
|
-
import { AXPDesignerConnector } from './designer-connector.service';
|
|
11
|
-
import { AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU as AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, cloneWidgetMenu, } from './generic-commands.types';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
export class AXPDesignerService {
|
|
14
|
-
#ef;
|
|
15
|
-
constructor() {
|
|
16
|
-
this.popupService = inject(AXPopupService);
|
|
17
|
-
this.toastService = inject(AXToastService);
|
|
18
|
-
this.fileService = inject(AXFileService);
|
|
19
|
-
this.loadingService = inject(AXLoadingDialogService);
|
|
20
|
-
this.widgetRegisteryService = inject(AXPWidgetRegistryService);
|
|
21
|
-
this.connector = inject(AXPDesignerConnector);
|
|
22
|
-
this.channel = new BroadcastChannel('livePreviewChannel');
|
|
23
|
-
this.document = signal(this.createDoc());
|
|
24
|
-
this.currentPageIndex = signal(0);
|
|
25
|
-
this.currentPage = signal(this.document().children?.[0]);
|
|
26
|
-
this.commandManager = inject(CommandManager);
|
|
27
|
-
this.clipboard = signal(null);
|
|
28
|
-
//
|
|
29
|
-
this.canCutCopy = computed(() => this.selectedNode() != null && this.selectedNode()?.type != 'page-layout');
|
|
30
|
-
this.canDelete = computed(() => this.selectedNode() != null && this.selectedNode()?.type != 'page-layout');
|
|
31
|
-
this.canInsert = computed(() => this.selectedNode() != null && this.selectedNodeConfig().type == 'container');
|
|
32
|
-
this.canPaste = computed(() => this.clipboard() != null);
|
|
33
|
-
//
|
|
34
|
-
this.history = computed(() => this.commandManager.history());
|
|
35
|
-
this.canUndo = computed(() => this.commandManager.canUndo());
|
|
36
|
-
this.canRedo = computed(() => this.commandManager.canRedo());
|
|
37
|
-
//
|
|
38
|
-
this.canSave = computed(() => this.templateId() != null);
|
|
39
|
-
this.breadcrumbs = computed(() => {
|
|
40
|
-
return this.selectedNode() ? this.findBreadcrumbs(this.currentPage(), this.selectedNode()) ?? [] : [];
|
|
41
|
-
});
|
|
42
|
-
this.selectedNode = signal(null);
|
|
43
|
-
this.selectedNodeConfig = computed(() => get(this.selectedNode(), '__meta__.config'));
|
|
44
|
-
this._focusedNode = null;
|
|
45
|
-
this.focusedNode = () => this._focusedNode;
|
|
46
|
-
this.size = signal('xl');
|
|
47
|
-
this.onSelected = new Subject();
|
|
48
|
-
this.onRefresh = new Subject();
|
|
49
|
-
this.onUpdate = new Subject();
|
|
50
|
-
this.onFocused = new Subject();
|
|
51
|
-
this.templateId = signal(null);
|
|
52
|
-
this.#ef = effect(() => {
|
|
53
|
-
this.refresh({ widget: this.currentPage() });
|
|
54
|
-
}, { allowSignalWrites: true });
|
|
55
|
-
this.channelCallback = (message) => {
|
|
56
|
-
if (message.data.action == 'designer-preview-loaded') {
|
|
57
|
-
this.updatePreview();
|
|
58
|
-
}
|
|
59
|
-
if (message.data.action == 'open-preview-window') {
|
|
60
|
-
this.openPreviewWindow();
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
this.channel.addEventListener('message', this.channelCallback);
|
|
64
|
-
}
|
|
65
|
-
register(command) {
|
|
66
|
-
this.select({ widget: command.widget });
|
|
67
|
-
}
|
|
68
|
-
select(command) {
|
|
69
|
-
this.selectedNode.set(command.widget);
|
|
70
|
-
this.onSelected.next(command);
|
|
71
|
-
}
|
|
72
|
-
update(command) {
|
|
73
|
-
const node = command.widget ?? this.selectedNode();
|
|
74
|
-
if (command.mode == 'update' && node) {
|
|
75
|
-
this.commandManager.executeCommand(new UpdateWidgetCommand(node, command.values, node));
|
|
76
|
-
}
|
|
77
|
-
this.selectedNode.update((c) => merge(node, command.values));
|
|
78
|
-
this.onUpdate.next({ widget: node, values: command.values });
|
|
79
|
-
this.updatePreview();
|
|
80
|
-
}
|
|
81
|
-
focus(command) {
|
|
82
|
-
if (this._focusedNode != command.widget) {
|
|
83
|
-
this._focusedNode = command.widget;
|
|
84
|
-
this.onFocused.next({ widget: this._focusedNode });
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
refresh(command) {
|
|
88
|
-
this.onRefresh.next({ widget: command.widget });
|
|
89
|
-
this.updatePreview();
|
|
90
|
-
}
|
|
91
|
-
findBreadcrumbs(node, targetNode, breadcrumb = []) {
|
|
92
|
-
// Add the current node to the breadcrumb path
|
|
93
|
-
const currentBreadcrumb = [...breadcrumb, node];
|
|
94
|
-
// Check if the current node is the target node
|
|
95
|
-
if (node === targetNode) {
|
|
96
|
-
return currentBreadcrumb;
|
|
97
|
-
}
|
|
98
|
-
// If the node has children, recursively search them
|
|
99
|
-
if (node.children) {
|
|
100
|
-
for (const child of node.children) {
|
|
101
|
-
const result = this.findBreadcrumbs(child, targetNode, currentBreadcrumb);
|
|
102
|
-
if (result) {
|
|
103
|
-
return result;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// Return undefined if no match is found
|
|
108
|
-
return undefined;
|
|
109
|
-
}
|
|
110
|
-
async showPicker(currentNode = this.selectedNode()) {
|
|
111
|
-
const com = await import('../components/widget-picker/widget-picker.component').then((c) => c.AXPDesignerWidgetPickerComponent);
|
|
112
|
-
const result = await this.popupService.open(com, {
|
|
113
|
-
title: 'Widget Gallery',
|
|
114
|
-
size: 'md',
|
|
115
|
-
closeButton: true,
|
|
116
|
-
data: {
|
|
117
|
-
widgets: sortBy(this.widgetRegisteryService.all().filter((c) => c.visible != false), (c) => c.title),
|
|
118
|
-
},
|
|
119
|
-
});
|
|
120
|
-
const widgets = [];
|
|
121
|
-
if ((result.data?.widgets ?? []).length) {
|
|
122
|
-
const selected = result.data?.widgets;
|
|
123
|
-
selected.forEach((c) => {
|
|
124
|
-
widgets.push(this.addWidget(currentNode, { type: c.name }));
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
return widgets;
|
|
128
|
-
}
|
|
129
|
-
new() {
|
|
130
|
-
this.commandManager.clear();
|
|
131
|
-
this.document.set(this.createDoc());
|
|
132
|
-
this.currentPage.set(this.document().children?.[0]);
|
|
133
|
-
this.reRenderPage();
|
|
134
|
-
}
|
|
135
|
-
createDoc() {
|
|
136
|
-
const doc = {
|
|
137
|
-
type: AXPWidgetsCatalog.document,
|
|
138
|
-
children: [this.createPage()],
|
|
139
|
-
name: 'document',
|
|
140
|
-
};
|
|
141
|
-
set(doc, '__meta__.id', this.generateUniqueId());
|
|
142
|
-
return doc;
|
|
143
|
-
}
|
|
144
|
-
createPage() {
|
|
145
|
-
const config = this.widgetRegisteryService.resolve('page-layout');
|
|
146
|
-
const page = {
|
|
147
|
-
type: 'page-layout',
|
|
148
|
-
children: [],
|
|
149
|
-
name: 'page-layout1',
|
|
150
|
-
};
|
|
151
|
-
set(page, '__meta__.id', this.generateUniqueId());
|
|
152
|
-
set(page, '__meta__.config', config);
|
|
153
|
-
return page;
|
|
154
|
-
}
|
|
155
|
-
addNewPage() {
|
|
156
|
-
this.addWidget(this.document(), this.createPage());
|
|
157
|
-
this.goToPage(this.currentPageIndex() + 1);
|
|
158
|
-
}
|
|
159
|
-
removePage(index) {
|
|
160
|
-
const page = this.document().children?.[index];
|
|
161
|
-
this.removeWidget(page);
|
|
162
|
-
this.goToPage(index - 1);
|
|
163
|
-
}
|
|
164
|
-
clonePage(index) {
|
|
165
|
-
const page = this.document().children?.[index];
|
|
166
|
-
this.clone(page);
|
|
167
|
-
this.goToPage((this.document().children?.length ?? 1) - 1);
|
|
168
|
-
}
|
|
169
|
-
goToPage(index) {
|
|
170
|
-
this.currentPageIndex.set(index);
|
|
171
|
-
//setTimeout(() => {
|
|
172
|
-
this.currentPage.set(this.document().children?.[this.currentPageIndex()]);
|
|
173
|
-
this.select({ widget: this.currentPage() });
|
|
174
|
-
//this.updatePreview();
|
|
175
|
-
//});
|
|
176
|
-
}
|
|
177
|
-
reRenderPage() {
|
|
178
|
-
this.currentPage.set({ ...this.currentPage() });
|
|
179
|
-
setTimeout(() => {
|
|
180
|
-
this.refresh({ widget: this.currentPage() });
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
findWidgetById(root, id) {
|
|
184
|
-
if (get(root, '__meta__.id') === id) {
|
|
185
|
-
return root; // Return the root if it matches the ID
|
|
186
|
-
}
|
|
187
|
-
if (!root.children)
|
|
188
|
-
return null;
|
|
189
|
-
for (const child of root.children) {
|
|
190
|
-
const found = this.findWidgetById(child, id);
|
|
191
|
-
if (found) {
|
|
192
|
-
return found; // Return the found child
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return null; // Node not found
|
|
196
|
-
}
|
|
197
|
-
findParent(id, parent = this.currentPage()) {
|
|
198
|
-
if (!parent.children)
|
|
199
|
-
return null;
|
|
200
|
-
if (parent.children.some((child) => get(child, '__meta__.id') === id)) {
|
|
201
|
-
return parent; // Return this node as it's the parent of the node with the given ID
|
|
202
|
-
}
|
|
203
|
-
for (const child of parent.children) {
|
|
204
|
-
const foundParent = this.findParent(id, child);
|
|
205
|
-
if (foundParent)
|
|
206
|
-
return foundParent;
|
|
207
|
-
}
|
|
208
|
-
return null; // No parent found
|
|
209
|
-
}
|
|
210
|
-
findNearestContainer(node, searchUpward = true) {
|
|
211
|
-
if (searchUpward) {
|
|
212
|
-
let current = node;
|
|
213
|
-
while (current) {
|
|
214
|
-
const config = this.widgetRegisteryService.resolve(current.type);
|
|
215
|
-
if (config && config.type == 'container') {
|
|
216
|
-
return current;
|
|
217
|
-
}
|
|
218
|
-
current = this.findParent(get(current, '__meta__.id')); // Use findParent to navigate upwards
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
// Recursive search to find the first container among children
|
|
223
|
-
if (node.children) {
|
|
224
|
-
for (const child of node.children) {
|
|
225
|
-
const config = this.widgetRegisteryService.resolve(child.type);
|
|
226
|
-
if (config && config.type == 'container') {
|
|
227
|
-
return child;
|
|
228
|
-
}
|
|
229
|
-
const foundContainer = this.findNearestContainer(child, false); // Continue searching downwards
|
|
230
|
-
if (foundContainer)
|
|
231
|
-
return foundContainer;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
return null; // Return null if no container found
|
|
236
|
-
}
|
|
237
|
-
addWidget(currentNode, node) {
|
|
238
|
-
//
|
|
239
|
-
const cloned = cloneDeep(node);
|
|
240
|
-
const config = this.widgetRegisteryService.resolve(node.type);
|
|
241
|
-
//
|
|
242
|
-
this.commandManager.executeCommand(new AddWidgetCommand(cloned, currentNode, currentNode));
|
|
243
|
-
//
|
|
244
|
-
cloned.name = this.generateUniqueName(node.type);
|
|
245
|
-
set(cloned, '__meta__.id', this.generateUniqueId());
|
|
246
|
-
set(cloned, '__meta__.config', config);
|
|
247
|
-
//
|
|
248
|
-
this.reRenderPage();
|
|
249
|
-
//
|
|
250
|
-
this.refresh({ widget: currentNode });
|
|
251
|
-
this.select({ widget: cloned });
|
|
252
|
-
return cloned;
|
|
253
|
-
}
|
|
254
|
-
removeWidget(node = this.selectedNode()) {
|
|
255
|
-
if (node.type === 'document-layout' ||
|
|
256
|
-
(node.type === 'page-layout' && (this.document().children?.length ?? 1) == 1)) {
|
|
257
|
-
console.error('Cannot remove the page node.');
|
|
258
|
-
return; // Prevent removing the root page node or document
|
|
259
|
-
}
|
|
260
|
-
const nodeIdToRemove = get(node, '__meta__.id');
|
|
261
|
-
if (!nodeIdToRemove) {
|
|
262
|
-
throw new Error('Node does not have a valid __meta__.id to identify it for removal.');
|
|
263
|
-
}
|
|
264
|
-
// Find the parent of the node to remove it
|
|
265
|
-
const parent = this.findParent(nodeIdToRemove, this.document());
|
|
266
|
-
if (!parent) {
|
|
267
|
-
throw new Error('Parent node not found. The node might be the root node or does not exist.');
|
|
268
|
-
}
|
|
269
|
-
const previousSelection = this.selectedNode(); // Capture the currently selected node before removal
|
|
270
|
-
const command = new RemoveWidgetCommand(node, parent, previousSelection);
|
|
271
|
-
this.commandManager.executeCommand(command);
|
|
272
|
-
this.refresh({ widget: parent }); // Refresh the UI to reflect changes
|
|
273
|
-
this.select({ widget: parent }); // Select the parent node after removal
|
|
274
|
-
}
|
|
275
|
-
navigateTo(index) {
|
|
276
|
-
this.commandManager.goToCommand(index);
|
|
277
|
-
this.reRenderPage();
|
|
278
|
-
const currentSelection = this.commandManager.selectedNode();
|
|
279
|
-
this.refresh({ widget: this.currentPage() });
|
|
280
|
-
this.select({ widget: currentSelection });
|
|
281
|
-
}
|
|
282
|
-
redo() {
|
|
283
|
-
this.commandManager.redo();
|
|
284
|
-
this.reRenderPage();
|
|
285
|
-
const currentSelection = this.commandManager.selectedNode();
|
|
286
|
-
this.refresh({ widget: this.currentPage() });
|
|
287
|
-
this.select({ widget: currentSelection });
|
|
288
|
-
}
|
|
289
|
-
undo() {
|
|
290
|
-
this.commandManager.undo();
|
|
291
|
-
this.reRenderPage();
|
|
292
|
-
const currentSelection = this.commandManager.selectedNode();
|
|
293
|
-
this.refresh({ widget: this.currentPage() });
|
|
294
|
-
this.select({ widget: currentSelection });
|
|
295
|
-
}
|
|
296
|
-
clearHistory() {
|
|
297
|
-
this.commandManager.clear();
|
|
298
|
-
}
|
|
299
|
-
removeMetaProp(obj) {
|
|
300
|
-
const nodeName = '__meta__';
|
|
301
|
-
// Check if the object is an array
|
|
302
|
-
if (Array.isArray(obj)) {
|
|
303
|
-
return obj.map((item) => this.removeMetaProp(item));
|
|
304
|
-
}
|
|
305
|
-
else if (typeof obj === 'object' && obj !== null) {
|
|
306
|
-
// Create a new object to store the result
|
|
307
|
-
let newObj = {};
|
|
308
|
-
for (let key in obj) {
|
|
309
|
-
// Only add the key if it's not the nodeName we want to remove
|
|
310
|
-
if (key !== nodeName) {
|
|
311
|
-
newObj[key] = this.removeMetaProp(obj[key]);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
return newObj;
|
|
315
|
-
}
|
|
316
|
-
// If the value is not an object or array, return it as is
|
|
317
|
-
return obj;
|
|
318
|
-
}
|
|
319
|
-
async addMetaToNodes(node, processedNodes, progressCallback) {
|
|
320
|
-
// Apply your meta logic here
|
|
321
|
-
const config = this.widgetRegisteryService.resolve(node.type);
|
|
322
|
-
//
|
|
323
|
-
set(node, '__meta__.id', this.generateUniqueId());
|
|
324
|
-
set(node, '__meta__.config', config);
|
|
325
|
-
//
|
|
326
|
-
// Increment the processed node count and update the progress dialog
|
|
327
|
-
processedNodes.count++;
|
|
328
|
-
progressCallback(processedNodes.count);
|
|
329
|
-
// Recursively process child nodes using Promise.all
|
|
330
|
-
if (node.children && node.children.length > 0) {
|
|
331
|
-
node.children = await Promise.all(node.children.map(async (child) => await this.addMetaToNodes(child, processedNodes, progressCallback)));
|
|
332
|
-
}
|
|
333
|
-
return node;
|
|
334
|
-
}
|
|
335
|
-
copy(widget = this.selectedNode()) {
|
|
336
|
-
if (this.canCutCopy()) {
|
|
337
|
-
this.clipboard.set(cloneDeep(widget)); // Use lodash's cloneDeep to ensure a deep copy
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
cut(widget = this.selectedNode()) {
|
|
341
|
-
if (this.canCutCopy()) {
|
|
342
|
-
this.copy(widget); // Copy the widget to the clipboard
|
|
343
|
-
this.removeWidget(widget); // Reuse the removeWidget method which should handle undo internally
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
clone(widget = this.selectedNode()) {
|
|
347
|
-
if (!widget)
|
|
348
|
-
return;
|
|
349
|
-
this.copy(widget); // Copy the widget to the clipboard
|
|
350
|
-
if (widget.type == 'page-layout') {
|
|
351
|
-
this.paste(this.document());
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
this.paste(widget);
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
paste(parentNode = this.selectedNode() ?? this.currentPage()) {
|
|
358
|
-
if (!this.clipboard() || !this.selectedNode()) {
|
|
359
|
-
console.error('Clipboard is empty or no node is selected.');
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
const newNode = cloneDeep(this.clipboard());
|
|
363
|
-
const nearestContainer = this.findNearestContainer(parentNode, true);
|
|
364
|
-
if (!nearestContainer) {
|
|
365
|
-
console.error('No suitable container found.');
|
|
366
|
-
return;
|
|
367
|
-
}
|
|
368
|
-
//
|
|
369
|
-
if (!nearestContainer.children) {
|
|
370
|
-
nearestContainer.children = [];
|
|
371
|
-
}
|
|
372
|
-
//
|
|
373
|
-
const setNameId = (node) => {
|
|
374
|
-
set(node, 'name', this.generateUniqueName(node.type));
|
|
375
|
-
set(node, '__meta__.id', this.generateUniqueId());
|
|
376
|
-
node.children?.forEach((n) => {
|
|
377
|
-
setNameId(n);
|
|
378
|
-
});
|
|
379
|
-
};
|
|
380
|
-
setNameId(newNode);
|
|
381
|
-
//
|
|
382
|
-
this.commandManager.executeCommand(new AddWidgetCommand(newNode, nearestContainer, nearestContainer));
|
|
383
|
-
//
|
|
384
|
-
setTimeout(() => {
|
|
385
|
-
this.refresh({ widget: nearestContainer }); // Refresh the UI
|
|
386
|
-
this.select({ widget: newNode }); // Select the newly pasted node
|
|
387
|
-
});
|
|
388
|
-
}
|
|
389
|
-
async save() {
|
|
390
|
-
if (this.templateId()) {
|
|
391
|
-
const content = this.export();
|
|
392
|
-
await this.connector.save(this.templateId(), { json: content });
|
|
393
|
-
this.toastService.success('Your changes saved successfully');
|
|
394
|
-
}
|
|
395
|
-
else {
|
|
396
|
-
this.downloadJson();
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
async saveAs(node = this.document()) {
|
|
400
|
-
const content = this.export(node);
|
|
401
|
-
await this.connector.saveAs({ json: content });
|
|
402
|
-
this.toastService.success('Your changes saved successfully');
|
|
403
|
-
}
|
|
404
|
-
export(node = this.document()) {
|
|
405
|
-
const json = this.removeMetaProp(node);
|
|
406
|
-
return JSON.stringify(json);
|
|
407
|
-
}
|
|
408
|
-
downloadJson() {
|
|
409
|
-
// Convert the object to a JSON string
|
|
410
|
-
const jsonStr = this.export();
|
|
411
|
-
// Create a blob object from the JSON string
|
|
412
|
-
const blob = new Blob([jsonStr], { type: 'application/json' });
|
|
413
|
-
// Create a URL for the blob object
|
|
414
|
-
const url = URL.createObjectURL(blob);
|
|
415
|
-
// Create a temporary <a> element to trigger the download
|
|
416
|
-
const a = document.createElement('a');
|
|
417
|
-
a.href = url;
|
|
418
|
-
a.download = 'export.json';
|
|
419
|
-
// Append the <a> element to the document body (necessary for some browsers)
|
|
420
|
-
document.body.appendChild(a);
|
|
421
|
-
// Trigger the download by clicking the <a> element
|
|
422
|
-
a.click();
|
|
423
|
-
// Clean up by revoking the object URL and removing the <a> element
|
|
424
|
-
URL.revokeObjectURL(url);
|
|
425
|
-
document.body.removeChild(a);
|
|
426
|
-
}
|
|
427
|
-
async loadById(id) {
|
|
428
|
-
try {
|
|
429
|
-
const content = await this.connector.load(id);
|
|
430
|
-
this.templateId.set(id);
|
|
431
|
-
if (content) {
|
|
432
|
-
await this.loadByContent(content);
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
catch (error) {
|
|
436
|
-
this.toastService.danger(error.message);
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
async importJSon() {
|
|
440
|
-
const files = await this.fileService.choose({ multiple: false, accept: 'application/json' });
|
|
441
|
-
if (files && files.length) {
|
|
442
|
-
const file = files[0];
|
|
443
|
-
const content = await file.text();
|
|
444
|
-
await this.loadByContent(content);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
async loadByContent(content) {
|
|
448
|
-
const rootNode = JSON.parse(content);
|
|
449
|
-
const totalNode = this.countTotalNodes(rootNode);
|
|
450
|
-
const processedNodes = { count: 0 };
|
|
451
|
-
const button = {
|
|
452
|
-
text: 'Cancel',
|
|
453
|
-
autofocus: true,
|
|
454
|
-
color: 'primary',
|
|
455
|
-
onClick: (e) => {
|
|
456
|
-
dialog.close();
|
|
457
|
-
},
|
|
458
|
-
};
|
|
459
|
-
const dialog = this.loadingService.show({
|
|
460
|
-
mode: 'determinate',
|
|
461
|
-
title: 'Loading Content',
|
|
462
|
-
progressColor: 'primary',
|
|
463
|
-
text: 'Processing content',
|
|
464
|
-
status: `0 of ${totalNode}`,
|
|
465
|
-
buttons: [button],
|
|
466
|
-
});
|
|
467
|
-
try {
|
|
468
|
-
const root = await this.addMetaToNodes(rootNode, processedNodes, (count) => {
|
|
469
|
-
dialog.setProgressValue(Math.ceil((count / totalNode) * 100));
|
|
470
|
-
dialog.setProgressStatus(`${count} of ${totalNode}`);
|
|
471
|
-
});
|
|
472
|
-
const page = root.children?.[0];
|
|
473
|
-
this.document.set(root);
|
|
474
|
-
this.currentPage.set(page);
|
|
475
|
-
dialog.setProgressColor('success');
|
|
476
|
-
dialog.setProgressText('Content loaded successfully');
|
|
477
|
-
button.text = 'Okay';
|
|
478
|
-
button.color = 'success';
|
|
479
|
-
dialog.setProgressValue(100);
|
|
480
|
-
setTimeout(() => {
|
|
481
|
-
this.reRenderPage();
|
|
482
|
-
dialog.close();
|
|
483
|
-
}, 500);
|
|
484
|
-
}
|
|
485
|
-
catch (error) {
|
|
486
|
-
dialog.setProgressColor('danger');
|
|
487
|
-
dialog.setProgressText(error instanceof Error ? error.message : 'Cannot load content');
|
|
488
|
-
button.text = 'Close';
|
|
489
|
-
button.color = 'danger';
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
countTotalNodes(node) {
|
|
493
|
-
let count = 1; // Count the current node
|
|
494
|
-
if (node.children && node.children.length > 0) {
|
|
495
|
-
count += node.children.reduce((sum, child) => sum + this.countTotalNodes(child), 0);
|
|
496
|
-
}
|
|
497
|
-
return count;
|
|
498
|
-
}
|
|
499
|
-
generateUniqueName(type) {
|
|
500
|
-
// Normalize the type to follow camelCase convention
|
|
501
|
-
const baseName = type.charAt(0).toLowerCase() + type.slice(1);
|
|
502
|
-
let index = 1;
|
|
503
|
-
let uniqueName = `${baseName}${index}`;
|
|
504
|
-
// Gather all existing names to check against
|
|
505
|
-
const existingNames = new Set();
|
|
506
|
-
this.collectAllNames(this.document(), existingNames);
|
|
507
|
-
// Increment the index until a unique name is found
|
|
508
|
-
while (existingNames.has(uniqueName)) {
|
|
509
|
-
index++;
|
|
510
|
-
uniqueName = `${baseName}${index}`;
|
|
511
|
-
}
|
|
512
|
-
return uniqueName;
|
|
513
|
-
}
|
|
514
|
-
generateUniqueId() {
|
|
515
|
-
return Math.random() * Math.pow(10, 18);
|
|
516
|
-
}
|
|
517
|
-
collectAllNames(node, names) {
|
|
518
|
-
if (node.name) {
|
|
519
|
-
names.add(node.name);
|
|
520
|
-
}
|
|
521
|
-
if (node.children) {
|
|
522
|
-
for (const child of node.children) {
|
|
523
|
-
this.collectAllNames(child, names);
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
updatePreview() {
|
|
528
|
-
this.channel.postMessage({
|
|
529
|
-
action: 'designer-preview',
|
|
530
|
-
document: this.removeMetaProp(this.document()),
|
|
531
|
-
});
|
|
532
|
-
}
|
|
533
|
-
async openPreviewDialog() {
|
|
534
|
-
const com = await import('../../preview/preview.component').then((c) => c.AXPLayoutDesignerPreviewComponent);
|
|
535
|
-
await this.popupService.open(com, {
|
|
536
|
-
header: false,
|
|
537
|
-
size: 'full',
|
|
538
|
-
data: {
|
|
539
|
-
initialSize: this.size(),
|
|
540
|
-
isDialogWindow: true,
|
|
541
|
-
},
|
|
542
|
-
});
|
|
543
|
-
}
|
|
544
|
-
openPreviewWindow() {
|
|
545
|
-
window.open('/forms/preview', '_blank');
|
|
546
|
-
}
|
|
547
|
-
getContextMenuItems() {
|
|
548
|
-
const items = [];
|
|
549
|
-
//
|
|
550
|
-
if (this.canInsert()) {
|
|
551
|
-
items.push(cloneWidgetMenu(AXP_DESIGNER_ADD_WIDGET_MENU, {
|
|
552
|
-
disabled: !this.canInsert(), break: true
|
|
553
|
-
}));
|
|
554
|
-
}
|
|
555
|
-
//
|
|
556
|
-
items.push(cloneWidgetMenu(AXP_DESIGNER_CLONE_MENU, { disabled: !this.canCutCopy() }));
|
|
557
|
-
items.push(cloneWidgetMenu(AXP_DESIGNER_CUT_MENU, { disabled: !this.canCutCopy() }));
|
|
558
|
-
items.push(cloneWidgetMenu(AXP_DESIGNER_COPY_MENU, { disabled: !this.canCutCopy() }));
|
|
559
|
-
items.push(cloneWidgetMenu(AXP_DESIGNER_PASTE_MENU, { disabled: !this.canPaste(), break: true }));
|
|
560
|
-
//
|
|
561
|
-
items.push(cloneWidgetMenu(AXP_DESIGNER_DELETE_WIDGET_MENU, { disabled: !this.canDelete(), break: true }));
|
|
562
|
-
//
|
|
563
|
-
items.push(cloneWidgetMenu(AXP_DESIGNER_SAVE_AS_WIDGET_MENU));
|
|
564
|
-
return items;
|
|
565
|
-
}
|
|
566
|
-
executeCommand(name, data) {
|
|
567
|
-
switch (name) {
|
|
568
|
-
case AXP_DESIGNER_ADD_WIDGET_MENU.name: {
|
|
569
|
-
this.showPicker();
|
|
570
|
-
break;
|
|
571
|
-
}
|
|
572
|
-
//
|
|
573
|
-
case AXP_DESIGNER_DELETE_WIDGET_MENU.name: {
|
|
574
|
-
this.removeWidget();
|
|
575
|
-
break;
|
|
576
|
-
}
|
|
577
|
-
//
|
|
578
|
-
case AXP_DESIGNER_CLONE_MENU.name: {
|
|
579
|
-
this.clone();
|
|
580
|
-
break;
|
|
581
|
-
}
|
|
582
|
-
case AXP_DESIGNER_CUT_MENU.name: {
|
|
583
|
-
this.cut();
|
|
584
|
-
break;
|
|
585
|
-
}
|
|
586
|
-
case AXP_DESIGNER_COPY_MENU.name: {
|
|
587
|
-
this.copy();
|
|
588
|
-
break;
|
|
589
|
-
}
|
|
590
|
-
case AXP_DESIGNER_PASTE_MENU.name: {
|
|
591
|
-
this.paste();
|
|
592
|
-
break;
|
|
593
|
-
}
|
|
594
|
-
//
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
598
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerService }); }
|
|
599
|
-
}
|
|
600
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerService, decorators: [{
|
|
601
|
-
type: Injectable
|
|
602
|
-
}], ctorParameters: () => [] });
|
|
603
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL2Rlc2lnbmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QixzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFJTCx3QkFBd0IsRUFDeEIsaUJBQWlCLEdBQ2xCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsK0JBQStCLElBQUksK0JBQStCLEVBQ2xFLHVCQUF1QixFQUN2QixnQ0FBZ0MsRUFDaEMsZUFBZSxHQUNoQixNQUFNLDBCQUEwQixDQUFD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Q0FBQztZQUNELEtBQUssdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQUs7WUFDUCxDQUFDO1lBQ0QsRUFBRTtRQUNKLENBQUM7SUFDSCxDQUFDOzhHQTNxQlUsa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWExvYWRpbmdEaWFsb2dCdXR0b25JdGVtLCBBWExvYWRpbmdEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmctZGlhbG9nJztcbmltcG9ydCB7IEFYTWVudUl0ZW0gfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5pbXBvcnQgeyBBWEZpbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2ZpbGUnO1xuaW1wb3J0IHtcbiAgQVhQV2lkZ2V0Q29tcG9uZW50LFxuICBBWFBXaWRnZXRDb25maWcsXG4gIEFYUFdpZGdldE5vZGUsXG4gIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSxcbiAgQVhQV2lkZ2V0c0NhdGFsb2csXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBtZXJnZSwgc2V0LCBzb3J0QnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWRkV2lkZ2V0Q29tbWFuZCwgQ29tbWFuZE1hbmFnZXIsIFJlbW92ZVdpZGdldENvbW1hbmQsIFVwZGF0ZVdpZGdldENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJDb25uZWN0b3IgfSBmcm9tICcuL2Rlc2lnbmVyLWNvbm5lY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYUF9ERVNJR05FUl9BRERfV0lER0VUX01FTlUsXG4gIEFYUF9ERVNJR05FUl9DTE9ORV9NRU5VLFxuICBBWFBfREVTSUdORVJfQ09QWV9NRU5VLFxuICBBWFBfREVTSUdORVJfQ1VUX01FTlUsXG4gIEFYUF9ERVNJR05FUl9ERUxFVEVfV0lER0VUX01FTlUgYXMgQVhQX0RFU0lHTkVSX0RFTEVURV9XSURHRVRfTUVOVSxcbiAgQVhQX0RFU0lHTkVSX1BBU1RFX01FTlUsXG4gIEFYUF9ERVNJR05FUl9TQVZFX0FTX1dJREdFVF9NRU5VLFxuICBjbG9uZVdpZGdldE1lbnUsXG59IGZyb20gJy4vZ2VuZXJpYy1jb21tYW5kcy50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEFYUERlc2lnbmVyUHJldmlld1NpemUgPSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnIHwgJ3h4bCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJGb2N1c0NvbW1hbmQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGUgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyVXBkYXRlQ29tbWFuZCB7XG4gIHZhbHVlczogYW55O1xuICB3aWRnZXQ/OiBBWFBXaWRnZXROb2RlIHwgbnVsbDtcbiAgbW9kZTogJ2luaXQnIHwgJ3VwZGF0ZSc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyVXBkYXRlRXZlbnQge1xuICB2YWx1ZXM6IGFueTtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyU2VsZWN0Q29tbWFuZCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclJlZ2lzdGVyQ29tbWFuZCB7XG4gIGlkOiBudW1iZXI7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgY29uZmlnOiBBWFBXaWRnZXRDb25maWc7XG4gIGluc3RhbmNlOiBBWFBXaWRnZXRDb21wb25lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJTZWxlY3RFdmVudCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclJlZnJlc2hDb21tYW5kIHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclJlZnJlc2hFdmVudCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lckFkZE5vZGVDb21tYW5kIHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lckFkZE5vZGVFdmVudCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lckZvY3VzRXZlbnQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGUgfCBudWxsO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0U2VydmljZSA9IGluamVjdChBWFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZmlsZVNlcnZpY2UgPSBpbmplY3QoQVhGaWxlU2VydmljZSk7XG4gIHByaXZhdGUgbG9hZGluZ1NlcnZpY2UgPSBpbmplY3QoQVhMb2FkaW5nRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgd2lkZ2V0UmVnaXN0ZXJ5U2VydmljZSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuICBwcml2YXRlIGNvbm5lY3RvciA9IGluamVjdChBWFBEZXNpZ25lckNvbm5lY3Rvcik7XG5cbiAgcHJpdmF0ZSBjaGFubmVsID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoJ2xpdmVQcmV2aWV3Q2hhbm5lbCcpO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudCA9IHNpZ25hbCh0aGlzLmNyZWF0ZURvYygpKTtcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRQYWdlSW5kZXggPSBzaWduYWwoMCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRQYWdlID0gc2lnbmFsKHRoaXMuZG9jdW1lbnQoKS5jaGlsZHJlbj8uWzBdISk7XG5cbiAgcHJpdmF0ZSBjb21tYW5kTWFuYWdlciA9IGluamVjdChDb21tYW5kTWFuYWdlcik7XG5cbiAgcHJpdmF0ZSBjbGlwYm9hcmQgPSBzaWduYWw8QVhQV2lkZ2V0Tm9kZSB8IG51bGw+KG51bGwpO1xuXG4gIC8vXG4gIHB1YmxpYyBjYW5DdXRDb3B5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZE5vZGUoKSAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWROb2RlKCk/LnR5cGUgIT0gJ3BhZ2UtbGF5b3V0Jyk7XG4gIHB1YmxpYyBjYW5EZWxldGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkTm9kZSgpICE9IG51bGwgJiYgdGhpcy5zZWxlY3RlZE5vZGUoKT8udHlwZSAhPSAncGFnZS1sYXlvdXQnKTtcbiAgcHVibGljIGNhbkluc2VydCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWROb2RlKCkgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkTm9kZUNvbmZpZygpLnR5cGUgPT0gJ2NvbnRhaW5lcicpO1xuICBwdWJsaWMgY2FuUGFzdGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNsaXBib2FyZCgpICE9IG51bGwpO1xuICAvL1xuICBwdWJsaWMgcmVhZG9ubHkgaGlzdG9yeSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29tbWFuZE1hbmFnZXIuaGlzdG9yeSgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhblVuZG8gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNhblVuZG8oKSk7XG4gIHB1YmxpYyByZWFkb25seSBjYW5SZWRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb21tYW5kTWFuYWdlci5jYW5SZWRvKCkpO1xuICAvL1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuU2F2ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGVtcGxhdGVJZCgpICE9IG51bGwpO1xuXG4gIHB1YmxpYyBicmVhZGNydW1icyA9IGNvbXB1dGVkPEFYUFdpZGdldE5vZGVbXT4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTm9kZSgpID8gdGhpcy5maW5kQnJlYWRjcnVtYnModGhpcy5jdXJyZW50UGFnZSgpLCB0aGlzLnNlbGVjdGVkTm9kZSgpISkgPz8gW10gOiBbXTtcbiAgfSk7XG5cbiAgcHVibGljIHNlbGVjdGVkTm9kZSA9IHNpZ25hbDxBWFBXaWRnZXROb2RlIHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHNlbGVjdGVkTm9kZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IGdldCh0aGlzLnNlbGVjdGVkTm9kZSgpLCAnX19tZXRhX18uY29uZmlnJykgYXMgYW55IGFzIEFYUFdpZGdldENvbmZpZyk7XG5cbiAgcHJpdmF0ZSBfZm9jdXNlZE5vZGU6IEFYUFdpZGdldE5vZGUgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGZvY3VzZWROb2RlID0gKCkgPT4gdGhpcy5fZm9jdXNlZE5vZGU7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNpemUgPSBzaWduYWw8QVhQRGVzaWduZXJQcmV2aWV3U2l6ZT4oJ3hsJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uU2VsZWN0ZWQgPSBuZXcgU3ViamVjdDxBWFBEZXNpZ25lclNlbGVjdEV2ZW50PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgb25SZWZyZXNoID0gbmV3IFN1YmplY3Q8QVhQRGVzaWduZXJSZWZyZXNoRXZlbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvblVwZGF0ZSA9IG5ldyBTdWJqZWN0PEFYUERlc2lnbmVyVXBkYXRlRXZlbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvbkZvY3VzZWQgPSBuZXcgU3ViamVjdDxBWFBEZXNpZ25lckZvY3VzRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICNlZiA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2goeyB3aWRnZXQ6IHRoaXMuY3VycmVudFBhZ2UoKSB9KTtcbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5jaGFubmVsQ2FsbGJhY2spO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyKGNvbW1hbmQ6IEFYUERlc2lnbmVyUmVnaXN0ZXJDb21tYW5kKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3QoeyB3aWRnZXQ6IGNvbW1hbmQud2lkZ2V0IH0pO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdChjb21tYW5kOiBBWFBEZXNpZ25lclNlbGVjdENvbW1hbmQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQoY29tbWFuZC53aWRnZXQpO1xuICAgIHRoaXMub25TZWxlY3RlZC5uZXh0KGNvbW1hbmQpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZShjb21tYW5kOiBBWFBEZXNpZ25lclVwZGF0ZUNvbW1hbmQpOiB2b2lkIHtcbiAgICBjb25zdCBub2RlID0gY29tbWFuZC53aWRnZXQgPz8gdGhpcy5zZWxlY3RlZE5vZGUoKTtcblxuICAgIGlmIChjb21tYW5kLm1vZGUgPT0gJ3VwZGF0ZScgJiYgbm9kZSkge1xuICAgICAgdGhpcy5jb21tYW5kTWFuYWdlci5leGVjdXRlQ29tbWFuZChuZXcgVXBkYXRlV2lkZ2V0Q29tbWFuZChub2RlISwgY29tbWFuZC52YWx1ZXMsIG5vZGUhKSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWROb2RlLnVwZGF0ZSgoYykgPT4gbWVyZ2Uobm9kZSwgY29tbWFuZC52YWx1ZXMpKTtcbiAgICB0aGlzLm9uVXBkYXRlLm5leHQoeyB3aWRnZXQ6IG5vZGUhLCB2YWx1ZXM6IGNvbW1hbmQudmFsdWVzIH0pO1xuICAgIHRoaXMudXBkYXRlUHJldmlldygpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKGNvbW1hbmQ6IEFYUERlc2lnbmVyRm9jdXNDb21tYW5kKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZvY3VzZWROb2RlICE9IGNvbW1hbmQud2lkZ2V0KSB7XG4gICAgICB0aGlzLl9mb2N1c2VkTm9kZSA9IGNvbW1hbmQud2lkZ2V0O1xuICAgICAgdGhpcy5vbkZvY3VzZWQubmV4dCh7IHdpZGdldDogdGhpcy5fZm9jdXNlZE5vZGUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2goY29tbWFuZDogQVhQRGVzaWduZXJSZWZyZXNoQ29tbWFuZCkge1xuICAgIHRoaXMub25SZWZyZXNoLm5leHQoeyB3aWRnZXQ6IGNvbW1hbmQud2lkZ2V0IH0pO1xuICAgIHRoaXMudXBkYXRlUHJldmlldygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQnJlYWRjcnVtYnMoXG4gICAgbm9kZTogQVhQV2lkZ2V0Tm9kZSxcbiAgICB0YXJnZXROb2RlOiBBWFBXaWRnZXROb2RlLFxuICAgIGJyZWFkY3J1bWI6IEFYUFdpZGdldE5vZGVbXSA9IFtdXG4gICk6IEFYUFdpZGdldE5vZGVbXSB8IHVuZGVmaW5lZCB7XG4gICAgLy8gQWRkIHRoZSBjdXJyZW50IG5vZGUgdG8gdGhlIGJyZWFkY3J1bWIgcGF0aFxuICAgIGNvbnN0IGN1cnJlbnRCcmVhZGNydW1iID0gWy4uLmJyZWFkY3J1bWIsIG5vZGVdO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyB0aGUgdGFyZ2V0IG5vZGVcbiAgICBpZiAobm9kZSA9PT0gdGFyZ2V0Tm9kZSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnRCcmVhZGNydW1iO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBub2RlIGhhcyBjaGlsZHJlbiwgcmVjdXJzaXZlbHkgc2VhcmNoIHRoZW1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZEJyZWFkY3J1bWJzKGNoaWxkLCB0YXJnZXROb2RlLCBjdXJyZW50QnJlYWRjcnVtYik7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHVuZGVmaW5lZCBpZiBubyBtYXRjaCBpcyBmb3VuZFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBzaG93UGlja2VyKGN1cnJlbnROb2RlOiBBWFBXaWRnZXROb2RlID0gdGhpcy5zZWxlY3RlZE5vZGUoKSEpOiBQcm9taXNlPEFYUFdpZGdldE5vZGVbXT4ge1xuICAgIGNvbnN0IGNvbSA9IGF3YWl0IGltcG9ydCgnLi4vY29tcG9uZW50cy93aWRnZXQtcGlja2VyL3dpZGdldC1waWNrZXIuY29tcG9uZW50JykudGhlbihcbiAgICAgIChjKSA9PiBjLkFYUERlc2lnbmVyV2lkZ2V0UGlja2VyQ29tcG9uZW50XG4gICAgKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBvcHVwU2VydmljZS5vcGVuKGNvbSwge1xuICAgICAgdGl0bGU6ICdXaWRnZXQgR2FsbGVyeScsXG4gICAgICBzaXplOiAnbWQnLFxuICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHdpZGdldHM6IHNvcnRCeShcbiAgICAgICAgICB0aGlzLndpZGdldFJlZ2lzdGVyeVNlcnZpY2UuYWxsKCkuZmlsdGVyKChjKSA9PiBjLnZpc2libGUgIT0gZmFsc2UpLFxuICAgICAgICAgIChjKSA9PiBjLnRpdGxlXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IHdpZGdldHM6IEFYUFdpZGdldE5vZGVbXSA9IFtdO1xuICAgIGlmICgocmVzdWx0LmRhdGE/LndpZGdldHMgPz8gW10pLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSByZXN1bHQuZGF0YT8ud2lkZ2V0cyBhcyBBWFBXaWRnZXRDb25maWdbXTtcbiAgICAgIHNlbGVjdGVkLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgd2lkZ2V0cy5wdXNoKHRoaXMuYWRkV2lkZ2V0KGN1cnJlbnROb2RlLCB7IHR5cGU6IGMubmFtZSB9KSEpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB3aWRnZXRzO1xuICB9XG5cbiAgcHVibGljIG5ldygpIHtcbiAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNsZWFyKCk7XG4gICAgdGhpcy5kb2N1bWVudC5zZXQodGhpcy5jcmVhdGVEb2MoKSk7XG4gICAgdGhpcy5jdXJyZW50UGFnZS5zZXQodGhpcy5kb2N1bWVudCgpLmNoaWxkcmVuPy5bMF0hKTtcbiAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEb2MoKTogQVhQV2lkZ2V0Tm9kZSB7XG4gICAgY29uc3QgZG9jOiBBWFBXaWRnZXROb2RlID0ge1xuICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuZG9jdW1lbnQsXG4gICAgICBjaGlsZHJlbjogW3RoaXMuY3JlYXRlUGFnZSgpXSxcbiAgICAgIG5hbWU6ICdkb2N1bWVudCcsXG4gICAgfTtcbiAgICBzZXQoZG9jLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgcmV0dXJuIGRvYztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUGFnZSgpOiBBWFBXaWRnZXROb2RlIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLndpZGdldFJlZ2lzdGVyeVNlcnZpY2UucmVzb2x2ZSgncGFnZS1sYXlvdXQnKTtcblxuICAgIGNvbnN0IHBhZ2U6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgICB0eXBlOiAncGFnZS1sYXlvdXQnLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgbmFtZTogJ3BhZ2UtbGF5b3V0MScsXG4gICAgfTtcblxuICAgIHNldChwYWdlLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgc2V0KHBhZ2UsICdfX21ldGFfXy5jb25maWcnLCBjb25maWcpO1xuICAgIHJldHVybiBwYWdlO1xuICB9XG5cbiAgcHVibGljIGFkZE5ld1BhZ2UoKSB7XG4gICAgdGhpcy5hZGRXaWRnZXQodGhpcy5kb2N1bWVudCgpLCB0aGlzLmNyZWF0ZVBhZ2UoKSk7XG4gICAgdGhpcy5nb1RvUGFnZSh0aGlzLmN1cnJlbnRQYWdlSW5kZXgoKSArIDEpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVBhZ2UoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/LltpbmRleF0hO1xuICAgIHRoaXMucmVtb3ZlV2lkZ2V0KHBhZ2UpO1xuICAgIHRoaXMuZ29Ub1BhZ2UoaW5kZXggLSAxKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9uZVBhZ2UoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/LltpbmRleF0hO1xuICAgIHRoaXMuY2xvbmUocGFnZSk7XG4gICAgdGhpcy5nb1RvUGFnZSgodGhpcy5kb2N1bWVudCgpLmNoaWxkcmVuPy5sZW5ndGggPz8gMSkgLSAxKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvUGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZUluZGV4LnNldChpbmRleCk7XG4gICAgLy9zZXRUaW1lb3V0KCgpID0+IHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/Llt0aGlzLmN1cnJlbnRQYWdlSW5kZXgoKV0hKTtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogdGhpcy5jdXJyZW50UGFnZSgpIH0pO1xuICAgIC8vdGhpcy51cGRhdGVQcmV2aWV3KCk7XG4gICAgLy99KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVSZW5kZXJQYWdlKCkge1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHsgLi4udGhpcy5jdXJyZW50UGFnZSgpIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiB0aGlzLmN1cnJlbnRQYWdlKCkgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZmluZFdpZGdldEJ5SWQocm9vdDogQVhQV2lkZ2V0Tm9kZSwgaWQ6IHN0cmluZyk6IEFYUFdpZGdldE5vZGUgfCBudWxsIHtcbiAgICBpZiAoZ2V0KHJvb3QsICdfX21ldGFfXy5pZCcpID09PSBpZCkge1xuICAgICAgcmV0dXJuIHJvb3Q7IC8vIFJldHVybiB0aGUgcm9vdCBpZiBpdCBtYXRjaGVzIHRoZSBJRFxuICAgIH1cbiAgICBpZiAoIXJvb3QuY2hpbGRyZW4pIHJldHVybiBudWxsO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiByb290LmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZFdpZGdldEJ5SWQoY2hpbGQsIGlkKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICByZXR1cm4gZm91bmQ7IC8vIFJldHVybiB0aGUgZm91bmQgY2hpbGRcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDsgLy8gTm9kZSBub3QgZm91bmRcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBhcmVudChpZDogc3RyaW5nLCBwYXJlbnQ6IEFYUFdpZGdldE5vZGUgPSB0aGlzLmN1cnJlbnRQYWdlKCkpOiBBWFBXaWRnZXROb2RlIHwgbnVsbCB7XG4gICAgaWYgKCFwYXJlbnQuY2hpbGRyZW4pIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHBhcmVudC5jaGlsZHJlbi5zb21lKChjaGlsZCkgPT4gZ2V0KGNoaWxkLCAnX19tZXRhX18uaWQnKSA9PT0gaWQpKSB7XG4gICAgICByZXR1cm4gcGFyZW50OyAvLyBSZXR1cm4gdGhpcyBub2RlIGFzIGl0J3MgdGhlIHBhcmVudCBvZiB0aGUgbm9kZSB3aXRoIHRoZSBnaXZlbiBJRFxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgcGFyZW50LmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBmb3VuZFBhcmVudCA9IHRoaXMuZmluZFBhcmVudChpZCwgY2hpbGQpO1xuICAgICAgaWYgKGZvdW5kUGFyZW50KSByZXR1cm4gZm91bmRQYXJlbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7IC8vIE5vIHBhcmVudCBmb3VuZFxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTmVhcmVzdENvbnRhaW5lcihub2RlOiBBWFBXaWRnZXROb2RlLCBzZWFyY2hVcHdhcmQ6IGJvb2xlYW4gPSB0cnVlKTogQVhQV2lkZ2V0Tm9kZSB8IG51bGwge1xuICAgIGlmIChzZWFyY2hVcHdhcmQpIHtcbiAgICAgIGxldCBjdXJyZW50OiBBWFBXaWRnZXROb2RlIHwgbnVsbCA9IG5vZGU7XG4gICAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLndpZGdldFJlZ2lzdGVyeVNlcnZpY2UucmVzb2x2ZShjdXJyZW50LnR5cGUpO1xuICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy50eXBlID09ICdjb250YWluZXInKSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IHRoaXMuZmluZFBhcmVudChnZXQoY3VycmVudCwgJ19fbWV0YV9fLmlkJykhKTsgLy8gVXNlIGZpbmRQYXJlbnQgdG8gbmF2aWdhdGUgdXB3YXJkc1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWN1cnNpdmUgc2VhcmNoIHRvIGZpbmQgdGhlIGZpcnN0IGNvbnRhaW5lciBhbW9uZyBjaGlsZHJlblxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy53aWRnZXRSZWdpc3RlcnlTZXJ2aWNlLnJlc29sdmUoY2hpbGQudHlwZSk7XG4gICAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcudHlwZSA9PSAnY29udGFpbmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBmb3VuZENvbnRhaW5lciA9IHRoaXMuZmluZE5lYXJlc3RDb250YWluZXIoY2hpbGQsIGZhbHNlKTsgLy8gQ29udGludWUgc2VhcmNoaW5nIGRvd253YXJkc1xuICAgICAgICAgIGlmIChmb3VuZENvbnRhaW5lcikgcmV0dXJuIGZvdW5kQ29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiBubyBjb250YWluZXIgZm91bmRcbiAgfVxuXG4gIGFkZFdpZGdldChjdXJyZW50Tm9kZTogQVhQV2lkZ2V0Tm9kZSwgbm9kZTogQVhQV2lkZ2V0Tm9kZSk6IEFYUFdpZGdldE5vZGUge1xuICAgIC8vXG4gICAgY29uc3QgY2xvbmVkID0gY2xvbmVEZWVwKG5vZGUpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5yZXNvbHZlKG5vZGUudHlwZSk7XG5cbiAgICAvL1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuZXhlY3V0ZUNvbW1hbmQobmV3IEFkZFdpZGdldENvbW1hbmQoY2xvbmVkLCBjdXJyZW50Tm9kZSwgY3VycmVudE5vZGUpKTtcbiAgICAvL1xuICAgIGNsb25lZC5uYW1lID0gdGhpcy5nZW5lcmF0ZVVuaXF1ZU5hbWUobm9kZS50eXBlKTtcbiAgICBzZXQoY2xvbmVkLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgc2V0KGNsb25lZCwgJ19fbWV0YV9fLmNvbmZpZycsIGNvbmZpZyk7XG4gICAgLy9cbiAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICAgIC8vXG4gICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiBjdXJyZW50Tm9kZSB9KTtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogY2xvbmVkIH0pO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlV2lkZ2V0KG5vZGU6IEFYUFdpZGdldE5vZGUgPSB0aGlzLnNlbGVjdGVkTm9kZSgpISk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIG5vZGUudHlwZSA9PT0gJ2RvY3VtZW50LWxheW91dCcgfHxcbiAgICAgIChub2RlLnR5cGUgPT09ICdwYWdlLWxheW91dCcgJiYgKHRoaXMuZG9jdW1lbnQoKS5jaGlsZHJlbj8ubGVuZ3RoID8/IDEpID09IDEpXG4gICAgKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDYW5ub3QgcmVtb3ZlIHRoZSBwYWdlIG5vZGUuJyk7XG4gICAgICByZXR1cm47IC8vIFByZXZlbnQgcmVtb3ZpbmcgdGhlIHJvb3QgcGFnZSBub2RlIG9yIGRvY3VtZW50XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZUlkVG9SZW1vdmUgPSBnZXQobm9kZSwgJ19fbWV0YV9fLmlkJyk7XG4gICAgaWYgKCFub2RlSWRUb1JlbW92ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb2RlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBfX21ldGFfXy5pZCB0byBpZGVudGlmeSBpdCBmb3IgcmVtb3ZhbC4nKTtcbiAgICB9XG5cbiAgICAvLyBGaW5kIHRoZSBwYXJlbnQgb2YgdGhlIG5vZGUgdG8gcmVtb3ZlIGl0XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5maW5kUGFyZW50KG5vZGVJZFRvUmVtb3ZlLCB0aGlzLmRvY3VtZW50KCkpO1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcmVudCBub2RlIG5vdCBmb3VuZC4gVGhlIG5vZGUgbWlnaHQgYmUgdGhlIHJvb3Qgbm9kZSBvciBkb2VzIG5vdCBleGlzdC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWROb2RlKCk7IC8vIENhcHR1cmUgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBub2RlIGJlZm9yZSByZW1vdmFsXG4gICAgY29uc3QgY29tbWFuZCA9IG5ldyBSZW1vdmVXaWRnZXRDb21tYW5kKG5vZGUsIHBhcmVudCwgcHJldmlvdXNTZWxlY3Rpb24hKTtcbiAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmQpO1xuXG4gICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiBwYXJlbnQgfSk7IC8vIFJlZnJlc2ggdGhlIFVJIHRvIHJlZmxlY3QgY2hhbmdlc1xuICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBwYXJlbnQgfSk7IC8vIFNlbGVjdCB0aGUgcGFyZW50IG5vZGUgYWZ0ZXIgcmVtb3ZhbFxuICB9XG5cbiAgbmF2aWdhdGVUbyhpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5nb1RvQ29tbWFuZChpbmRleCk7XG4gICAgdGhpcy5yZVJlbmRlclBhZ2UoKTtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5jb21tYW5kTWFuYWdlci5zZWxlY3RlZE5vZGUoKTtcbiAgICB0aGlzLnJlZnJlc2goeyB3aWRnZXQ6IHRoaXMuY3VycmVudFBhZ2UoKSB9KTtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogY3VycmVudFNlbGVjdGlvbiEgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVkbygpIHtcbiAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyLnJlZG8oKTtcbiAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmNvbW1hbmRNYW5hZ2VyLnNlbGVjdGVkTm9kZSgpO1xuICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogdGhpcy5jdXJyZW50UGFnZSgpIH0pO1xuICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBjdXJyZW50U2VsZWN0aW9uISB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1bmRvKCkge1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIudW5kbygpO1xuICAgIHRoaXMucmVSZW5kZXJQYWdlKCk7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuY29tbWFuZE1hbmFnZXIuc2VsZWN0ZWROb2RlKCk7XG4gICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiB0aGlzLmN1cnJlbnRQYWdlKCkgfSk7XG4gICAgdGhpcy5zZWxlY3QoeyB3aWRnZXQ6IGN1cnJlbnRTZWxlY3Rpb24hIH0pO1xuICB9XG5cbiAgcHVibGljIGNsZWFySGlzdG9yeSgpIHtcbiAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU1ldGFQcm9wKG9iajogYW55KTogYW55IHtcbiAgICBjb25zdCBub2RlTmFtZSA9ICdfX21ldGFfXyc7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIG9iamVjdCBpcyBhbiBhcnJheVxuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIHJldHVybiBvYmoubWFwKChpdGVtKSA9PiB0aGlzLnJlbW92ZU1ldGFQcm9wKGl0ZW0pKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgICAgLy8gQ3JlYXRlIGEgbmV3IG9iamVjdCB0byBzdG9yZSB0aGUgcmVzdWx0XG4gICAgICBsZXQgbmV3T2JqOiBhbnkgPSB7fTtcbiAgICAgIGZvciAobGV0IGtleSBpbiBvYmopIHtcbiAgICAgICAgLy8gT25seSBhZGQgdGhlIGtleSBpZiBpdCdzIG5vdCB0aGUgbm9kZU5hbWUgd2Ugd2FudCB0byByZW1vdmVcbiAgICAgICAgaWYgKGtleSAhPT0gbm9kZU5hbWUpIHtcbiAgICAgICAgICBuZXdPYmpba2V5XSA9IHRoaXMucmVtb3ZlTWV0YVByb3Aob2JqW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3T2JqO1xuICAgIH1cbiAgICAvLyBJZiB0aGUgdmFsdWUgaXMgbm90IGFuIG9iamVjdCBvciBhcnJheSwgcmV0dXJuIGl0IGFzIGlzXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkTWV0YVRvTm9kZXMoXG4gICAgbm9kZTogQVhQV2lkZ2V0Tm9kZSxcbiAgICBwcm9jZXNzZWROb2RlczogeyBjb3VudDogbnVtYmVyIH0sXG4gICAgcHJvZ3Jlc3NDYWxsYmFjazogKHByb2Nlc3NlZDogbnVtYmVyKSA9PiB2b2lkXG4gICk6IFByb21pc2U8QVhQV2lkZ2V0Tm9kZT4ge1xuICAgIC8vIEFwcGx5IHlvdXIgbWV0YSBsb2dpYyBoZXJlXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy53aWRnZXRSZWdpc3RlcnlTZXJ2aWNlLnJlc29sdmUobm9kZS50eXBlKTtcbiAgICAvL1xuICAgIHNldChub2RlLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgc2V0KG5vZGUsICdfX21ldGFfXy5jb25maWcnLCBjb25maWcpO1xuICAgIC8vXG4gICAgLy8gSW5jcmVtZW50IHRoZSBwcm9jZXNzZWQgbm9kZSBjb3VudCBhbmQgdXBkYXRlIHRoZSBwcm9ncmVzcyBkaWFsb2dcbiAgICBwcm9jZXNzZWROb2Rlcy5jb3VudCsrO1xuICAgIHByb2dyZXNzQ2FsbGJhY2socHJvY2Vzc2VkTm9kZXMuY291bnQpO1xuICAgIC8vIFJlY3Vyc2l2ZWx5IHByb2Nlc3MgY2hpbGQgbm9kZXMgdXNpbmcgUHJvbWlzZS5hbGxcbiAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgbm9kZS5jaGlsZHJlbi5tYXAoYXN5bmMgKGNoaWxkKSA9PiBhd2FpdCB0aGlzLmFkZE1ldGFUb05vZGVzKGNoaWxkLCBwcm9jZXNzZWROb2RlcywgcHJvZ3Jlc3NDYWxsYmFjaykpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHB1YmxpYyBjb3B5KHdpZGdldDogQVhQV2lkZ2V0Tm9kZSB8IG51bGwgPSB0aGlzLnNlbGVjdGVkTm9kZSgpKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FuQ3V0Q29weSgpKSB7XG4gICAgICB0aGlzLmNsaXBib2FyZC5zZXQoY2xvbmVEZWVwKHdpZGdldCkpOyAvLyBVc2UgbG9kYXNoJ3MgY2xvbmVEZWVwIHRvIGVuc3VyZSBhIGRlZXAgY29weVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjdXQod2lkZ2V0OiBBWFBXaWRnZXROb2RlIHwgbnVsbCA9IHRoaXMuc2VsZWN0ZWROb2RlKCkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYW5DdXRDb3B5KCkpIHtcbiAgICAgIHRoaXMuY29weSh3aWRnZXQpOyAvLyBDb3B5IHRoZSB3aWRnZXQgdG8gdGhlIGNsaXBib2FyZFxuICAgICAgdGhpcy5yZW1vdmVXaWRnZXQod2lkZ2V0ISk7IC8vIFJldXNlIHRoZSByZW1vdmVXaWRnZXQgbWV0aG9kIHdoaWNoIHNob3VsZCBoYW5kbGUgdW5kbyBpbnRlcm5hbGx5XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb25lKHdpZGdldDogQVhQV2lkZ2V0Tm9kZSB8IG51bGwgPSB0aGlzLnNlbGVjdGVkTm9kZSgpKTogdm9pZCB7XG4gICAgaWYgKCF3aWRnZXQpIHJldHVybjtcbiAgICB0aGlzLmNvcHkod2lkZ2V0KTsgLy8gQ29weSB0aGUgd2lkZ2V0IHRvIHRoZSBjbGlwYm9hcmRcbiAgICBpZiAod2lkZ2V0LnR5cGUgPT0gJ3BhZ2UtbGF5b3V0Jykge1xuICAgICAgdGhpcy5wYXN0ZSh0aGlzLmRvY3VtZW50KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhc3RlKHdpZGdldCEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwYXN0ZShwYXJlbnROb2RlOiBBWFBXaWRnZXROb2RlID0gdGhpcy5zZWxlY3RlZE5vZGUoKSA/PyB0aGlzLmN1cnJlbnRQYWdlKCkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2xpcGJvYXJkKCkgfHwgIXRoaXMuc2VsZWN0ZWROb2RlKCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0NsaXBib2FyZCBpcyBlbXB0eSBvciBubyBub2RlIGlzIHNlbGVjdGVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdOb2RlID0gY2xvbmVEZWVwKHRoaXMuY2xpcGJvYXJkKCkpITtcbiAgICBjb25zdCBuZWFyZXN0Q29udGFpbmVyID0gdGhpcy5maW5kTmVhcmVzdENvbnRhaW5lcihwYXJlbnROb2RlLCB0cnVlKTtcbiAgICBpZiAoIW5lYXJlc3RDb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHN1aXRhYmxlIGNvbnRhaW5lciBmb3VuZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy9cbiAgICBpZiAoIW5lYXJlc3RDb250YWluZXIuY2hpbGRyZW4pIHtcbiAgICAgIG5lYXJlc3RDb250YWluZXIuY2hpbGRyZW4gPSBbXTtcbiAgICB9XG4gICAgLy9cbiAgICBjb25zdCBzZXROYW1lSWQgPSAobm9kZTogQVhQV2lkZ2V0Tm9kZSkgPT4ge1xuICAgICAgc2V0KG5vZGUsICduYW1lJywgdGhpcy5nZW5lcmF0ZVVuaXF1ZU5hbWUobm9kZS50eXBlKSk7XG4gICAgICBzZXQobm9kZSwgJ19fbWV0YV9fLmlkJywgdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCkpO1xuICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCgobikgPT4ge1xuICAgICAgICBzZXROYW1lSWQobik7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIHNldE5hbWVJZChuZXdOb2RlKTtcbiAgICAvL1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuZXhlY3V0ZUNvbW1hbmQobmV3IEFkZFdpZGdldENvbW1hbmQobmV3Tm9kZSwgbmVhcmVzdENvbnRhaW5lciwgbmVhcmVzdENvbnRhaW5lcikpO1xuICAgIC8vXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2goeyB3aWRnZXQ6IG5lYXJlc3RDb250YWluZXIgfSk7IC8vIFJlZnJlc2ggdGhlIFVJXG4gICAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogbmV3Tm9kZSB9KTsgLy8gU2VsZWN0IHRoZSBuZXdseSBwYXN0ZWQgbm9kZVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2F2ZSgpIHtcbiAgICBpZiAodGhpcy50ZW1wbGF0ZUlkKCkpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmV4cG9ydCgpO1xuICAgICAgYXdhaXQgdGhpcy5jb25uZWN0b3Iuc2F2ZSh0aGlzLnRlbXBsYXRlSWQoKSEsIHsganNvbjogY29udGVudCB9KTtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoJ1lvdXIgY2hhbmdlcyBzYXZlZCBzdWNjZXNzZnVsbHknKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kb3dubG9hZEpzb24oKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlQXMobm9kZTogQVhQV2lkZ2V0Tm9kZSA9IHRoaXMuZG9jdW1lbnQoKSkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmV4cG9ydChub2RlKTtcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rvci5zYXZlQXMoeyBqc29uOiBjb250ZW50IH0pO1xuICAgIHRoaXMudG9hc3RTZXJ2aWNlLnN1Y2Nlc3MoJ1lvdXIgY2hhbmdlcyBzYXZlZCBzdWNjZXNzZnVsbHknKTtcbiAgfVxuXG4gIGV4cG9ydChub2RlOiBBWFBXaWRnZXROb2RlID0gdGhpcy5kb2N1bWVudCgpKTogc3RyaW5nIHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5yZW1vdmVNZXRhUHJvcChub2RlKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoanNvbik7XG4gIH1cblxuICBkb3dubG9hZEpzb24oKSB7XG4gICAgLy8gQ29udmVydCB0aGUgb2JqZWN0IHRvIGEgSlNPTiBzdHJpbmdcbiAgICBjb25zdCBqc29uU3RyID0gdGhpcy5leHBvcnQoKTtcblxuICAgIC8vIENyZWF0ZSBhIGJsb2Igb2JqZWN0IGZyb20gdGhlIEpTT04gc3RyaW5nXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtqc29uU3RyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG5cbiAgICAvLyBDcmVhdGUgYSBVUkwgZm9yIHRoZSBibG9iIG9iamVjdFxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgPGE+IGVsZW1lbnQgdG8gdHJpZ2dlciB0aGUgZG93bmxvYWRcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gJ2V4cG9ydC5qc29uJztcblxuICAgIC8vIEFwcGVuZCB0aGUgPGE+IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50IGJvZHkgKG5lY2Vzc2FyeSBmb3Igc29tZSBicm93c2VycylcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuXG4gICAgLy8gVHJpZ2dlciB0aGUgZG93bmxvYWQgYnkgY2xpY2tpbmcgdGhlIDxhPiBlbGVtZW50XG4gICAgYS5jbGljaygpO1xuICAgIC8vIENsZWFuIHVwIGJ5IHJldm9raW5nIHRoZSBvYmplY3QgVVJMIGFuZCByZW1vdmluZyB0aGUgPGE+IGVsZW1lbnRcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLmxvYWQoaWQpO1xuICAgICAgdGhpcy50ZW1wbGF0ZUlkLnNldChpZCk7XG4gICAgICBpZiAoY29udGVudCkge1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRCeUNvbnRlbnQoY29udGVudCEpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmRhbmdlcihlcnJvci5tZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbXBvcnRKU29uKCkge1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgdGhpcy5maWxlU2VydmljZS5jaG9vc2UoeyBtdWx0aXBsZTogZmFsc2UsIGFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nIH0pO1xuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmaWxlLnRleHQoKTtcbiAgICAgIGF3YWl0IHRoaXMubG9hZEJ5Q29udGVudChjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkQnlDb250ZW50KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJvb3ROb2RlID0gSlNPTi5wYXJzZShjb250ZW50KSBhcyBBWFBXaWRnZXROb2RlO1xuICAgIGNvbnN0IHRvdGFsTm9kZSA9IHRoaXMuY291bnRUb3RhbE5vZGVzKHJvb3ROb2RlKTtcbiAgICBjb25zdCBwcm9jZXNzZWROb2RlcyA9IHsgY291bnQ6IDAgfTtcblxuICAgIGNvbnN0IGJ1dHRvbjogQVhMb2FkaW5nRGlhbG9nQnV0dG9uSXRlbSA9IHtcbiAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgYXV0b2ZvY3VzOiB0cnVlLFxuICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgZGlhbG9nID0gdGhpcy5sb2FkaW5nU2VydmljZS5zaG93KHtcbiAgICAgIG1vZGU6ICdkZXRlcm1pbmF0ZScsXG4gICAgICB0aXRsZTogJ0xvYWRpbmcgQ29udGVudCcsXG4gICAgICBwcm9ncmVzc0NvbG9yOiAncHJpbWFyeScsXG4gICAgICB0ZXh0OiAnUHJvY2Vzc2luZyBjb250ZW50JyxcbiAgICAgIHN0YXR1czogYDAgb2YgJHt0b3RhbE5vZGV9YCxcbiAgICAgIGJ1dHRvbnM6IFtidXR0b25dLFxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJvb3QgPSBhd2FpdCB0aGlzLmFkZE1ldGFUb05vZGVzKHJvb3ROb2RlLCBwcm9jZXNzZWROb2RlcywgKGNvdW50KSA9PiB7XG4gICAgICAgIGRpYWxvZy5zZXRQcm9ncmVzc1ZhbHVlKE1hdGguY2VpbCgoY291bnQgLyB0b3RhbE5vZGUpICogMTAwKSk7XG4gICAgICAgIGRpYWxvZy5zZXRQcm9ncmVzc1N0YXR1cyhgJHtjb3VudH0gb2YgJHt0b3RhbE5vZGV9YCk7XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcGFnZSA9IHJvb3QuY2hpbGRyZW4/LlswXSE7XG4gICAgICB0aGlzLmRvY3VtZW50LnNldChyb290KTtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHBhZ2UpO1xuXG4gICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NDb2xvcignc3VjY2VzcycpO1xuICAgICAgZGlhbG9nLnNldFByb2dyZXNzVGV4dCgnQ29udGVudCBsb2FkZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICBidXR0b24udGV4dCA9ICdPa2F5JztcbiAgICAgIGJ1dHRvbi5jb2xvciA9ICdzdWNjZXNzJztcbiAgICAgIGRpYWxvZy5zZXRQcm9ncmVzc1ZhbHVlKDEwMCk7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICAgICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICAgIH0sIDUwMCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgZGlhbG9nLnNldFByb2dyZXNzQ29sb3IoJ2RhbmdlcicpO1xuICAgICAgZGlhbG9nLnNldFByb2dyZXNzVGV4dChlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdDYW5ub3QgbG9hZCBjb250ZW50Jyk7XG4gICAgICBidXR0b24udGV4dCA9ICdDbG9zZSc7XG4gICAgICBidXR0b24uY29sb3IgPSAnZGFuZ2VyJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvdW50VG90YWxOb2Rlcyhub2RlOiBBWFBXaWRnZXROb2RlKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAxOyAvLyBDb3VudCB0aGUgY3VycmVudCBub2RlXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBjb3VudCArPSBub2RlLmNoaWxkcmVuLnJlZHVjZSgoc3VtLCBjaGlsZCkgPT4gc3VtICsgdGhpcy5jb3VudFRvdGFsTm9kZXMoY2hpbGQpLCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVVuaXF1ZU5hbWUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBOb3JtYWxpemUgdGhlIHR5cGUgdG8gZm9sbG93IGNhbWVsQ2FzZSBjb252ZW50aW9uXG4gICAgY29uc3QgYmFzZU5hbWUgPSB0eXBlLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgdHlwZS5zbGljZSgxKTtcbiAgICBsZXQgaW5kZXggPSAxO1xuICAgIGxldCB1bmlxdWVOYW1lID0gYCR7YmFzZU5hbWV9JHtpbmRleH1gO1xuXG4gICAgLy8gR2F0aGVyIGFsbCBleGlzdGluZyBuYW1lcyB0byBjaGVjayBhZ2FpbnN0XG4gICAgY29uc3QgZXhpc3RpbmdOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHRoaXMuY29sbGVjdEFsbE5hbWVzKHRoaXMuZG9jdW1lbnQoKSwgZXhpc3RpbmdOYW1lcyk7XG5cbiAgICAvLyBJbmNyZW1lbnQgdGhlIGluZGV4IHVudGlsIGEgdW5pcXVlIG5hbWUgaXMgZm91bmRcbiAgICB3aGlsZSAoZXhpc3RpbmdOYW1lcy5oYXModW5pcXVlTmFtZSkpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgICB1bmlxdWVOYW1lID0gYCR7YmFzZU5hbWV9JHtpbmRleH1gO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlxdWVOYW1lO1xuICB9XG5cbiAgZ2VuZXJhdGVVbmlxdWVJZCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogTWF0aC5wb3coMTAsIDE4KTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGVjdEFsbE5hbWVzKG5vZGU6IEFYUFdpZGdldE5vZGUsIG5hbWVzOiBTZXQ8c3RyaW5nPik6IHZvaWQge1xuICAgIGlmIChub2RlLm5hbWUpIHtcbiAgICAgIG5hbWVzLmFkZChub2RlLm5hbWUpO1xuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuY29sbGVjdEFsbE5hbWVzKGNoaWxkLCBuYW1lcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZVByZXZpZXcoKSB7XG4gICAgdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKHtcbiAgICAgIGFjdGlvbjogJ2Rlc2lnbmVyLXByZXZpZXcnLFxuICAgICAgZG9jdW1lbnQ6IHRoaXMucmVtb3ZlTWV0YVByb3AodGhpcy5kb2N1bWVudCgpKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvcGVuUHJldmlld0RpYWxvZygpIHtcbiAgICBjb25zdCBjb20gPSBhd2FpdCBpbXBvcnQoJy4uLy4uL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYUExheW91dERlc2lnbmVyUHJldmlld0NvbXBvbmVudCk7XG4gICAgYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3Blbihjb20sIHtcbiAgICAgIGhlYWRlcjogZmFsc2UsXG4gICAgICBzaXplOiAnZnVsbCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGluaXRpYWxTaXplOiB0aGlzLnNpemUoKSxcbiAgICAgICAgaXNEaWFsb2dXaW5kb3c6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5QcmV2aWV3V2luZG93KCkge1xuICAgIHdpbmRvdy5vcGVuKCcvZm9ybXMvcHJldmlldycsICdfYmxhbmsnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbm5lbENhbGxiYWNrID0gKG1lc3NhZ2U6IE1lc3NhZ2VFdmVudDxhbnk+KSA9PiB7XG4gICAgaWYgKG1lc3NhZ2UuZGF0YS5hY3Rpb24gPT0gJ2Rlc2lnbmVyLXByZXZpZXctbG9hZGVkJykge1xuICAgICAgdGhpcy51cGRhdGVQcmV2aWV3KCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmRhdGEuYWN0aW9uID09ICdvcGVuLXByZXZpZXctd2luZG93Jykge1xuICAgICAgdGhpcy5vcGVuUHJldmlld1dpbmRvdygpO1xuICAgIH1cbiAgfTtcblxuICBnZXRDb250ZXh0TWVudUl0ZW1zKCk6IEFYTWVudUl0ZW1bXSB7XG4gICAgY29uc3QgaXRlbXM6IEFYTWVudUl0ZW1bXSA9IFtdO1xuICAgIC8vICAgICAgIFxuICAgIGlmICh0aGlzLmNhbkluc2VydCgpKSB7XG4gICAgICBpdGVtcy5wdXNoKGNsb25lV2lkZ2V0TWVudShBWFBfREVTSUdORVJfQUREX1dJREdFVF9NRU5VLCB7XG4gICAgICAgIGRpc2FibGVkOiAhdGhpcy5jYW5JbnNlcnQoKSwgYnJlYWs6IHRydWVcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgLy9cbiAgICBpdGVtcy5wdXNoKGNsb25lV2lkZ2V0TWVudShBWFBfREVTSUdORVJfQ0xPTkVfTUVOVSwgeyBkaXNhYmxlZDogIXRoaXMuY2FuQ3V0Q29weSgpIH0pKTtcbiAgICBpdGVtcy5wdXNoKGNsb25lV2lkZ2V0TWVudShBWFBfREVTSUdORVJfQ1VUX01FTlUsIHsgZGlzYWJsZWQ6ICF0aGlzLmNhbkN1dENvcHkoKSB9KSk7XG4gICAgaXRlbXMucHVzaChjbG9uZVdpZGdldE1lbnUoQVhQX0RFU0lHTkVSX0NPUFlfTUVOVSwgeyBkaXNhYmxlZDogIXRoaXMuY2FuQ3V0Q29weSgpIH0pKTtcbiAgICBpdGVtcy5wdXNoKGNsb25lV2lkZ2V0TWVudShBWFBfREVTSUdORVJfUEFTVEVfTUVOVSwgeyBkaXNhYmxlZDogIXRoaXMuY2FuUGFzdGUoKSwgYnJlYWs6IHRydWUgfSkpO1xuICAgIC8vXG4gICAgaXRlbXMucHVzaChjbG9uZVdpZGdldE1lbnUoQVhQX0RFU0lHTkVSX0RFTEVURV9XSURHRVRfTUVOVSwgeyBkaXNhYmxlZDogIXRoaXMuY2FuRGVsZXRlKCksIGJyZWFrOiB0cnVlIH0pKTtcbiAgICAvL1xuICAgIGl0ZW1zLnB1c2goY2xvbmVXaWRnZXRNZW51KEFYUF9ERVNJR05FUl9TQVZFX0FTX1dJREdFVF9NRU5VKSk7XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgZXhlY3V0ZUNvbW1hbmQobmFtZTogc3RyaW5nLCBkYXRhPzogYW55KSB7XG4gICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICBjYXNlIEFYUF9ERVNJR05FUl9BRERfV0lER0VUX01FTlUubmFtZToge1xuICAgICAgICB0aGlzLnNob3dQaWNrZXIoKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICBjYXNlIEFYUF9ERVNJR05FUl9ERUxFVEVfV0lER0VUX01FTlUubmFtZToge1xuICAgICAgICB0aGlzLnJlbW92ZVdpZGdldCgpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIGNhc2UgQVhQX0RFU0lHTkVSX0NMT05FX01FTlUubmFtZToge1xuICAgICAgICB0aGlzLmNsb25lKCk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEFYUF9ERVNJR05FUl9DVVRfTUVOVS5uYW1lOiB7XG4gICAgICAgIHRoaXMuY3V0KCk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEFYUF9ERVNJR05FUl9DT1BZX01FTlUubmFtZToge1xuICAgICAgICB0aGlzLmNvcHkoKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgQVhQX0RFU0lHTkVSX1BBU1RFX01FTlUubmFtZToge1xuICAgICAgICB0aGlzLnBhc3RlKCk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICAvL1xuICAgIH1cbiAgfVxufVxuIl19
|