@acorex/modules 20.6.0-next.3 → 20.6.0-next.4
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/index.d.ts +1 -0
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-u9nGH4tZ.mjs → acorex-modules-auth-acorex-modules-auth-CLweG-Nr.mjs} +11 -11
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-u9nGH4tZ.mjs.map → acorex-modules-auth-acorex-modules-auth-CLweG-Nr.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-6InmZHNV.mjs → acorex-modules-auth-app-chooser.component-iWQrMGra.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-6InmZHNV.mjs.map → acorex-modules-auth-app-chooser.component-iWQrMGra.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-D6nA0raD.mjs → acorex-modules-auth-login.module-BvL4bO2k.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-D6nA0raD.mjs.map → acorex-modules-auth-login.module-BvL4bO2k.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-BSXrfMyH.mjs → acorex-modules-auth-master.layout-Bx_nDD68.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-BSXrfMyH.mjs.map → acorex-modules-auth-master.layout-Bx_nDD68.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-BSYqxIVx.mjs → acorex-modules-auth-oauth-callback.component-YH13dx3h.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-oauth-callback.component-BSYqxIVx.mjs.map → acorex-modules-auth-oauth-callback.component-YH13dx3h.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-D5PFjHun.mjs → acorex-modules-auth-password.component-BzeKK98o.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-D5PFjHun.mjs.map → acorex-modules-auth-password.component-BzeKK98o.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-BczO_JRa.mjs → acorex-modules-auth-password.component-Z2yBg6yG.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-BczO_JRa.mjs.map → acorex-modules-auth-password.component-Z2yBg6yG.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-BGDEm7DZ.mjs → acorex-modules-auth-routes-WDOYwQVH.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-BGDEm7DZ.mjs.map → acorex-modules-auth-routes-WDOYwQVH.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Cc_HrYdx.mjs → acorex-modules-auth-tenant-chooser.component-DmIB9_4z.mjs} +2 -2
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-DmIB9_4z.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor.module-g7Wke_79.mjs → acorex-modules-auth-two-factor.module-BS6QvQOF.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-g7Wke_79.mjs.map → acorex-modules-auth-two-factor.module-BS6QvQOF.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-user-sessions.component-8Fn7VOQy.mjs → acorex-modules-auth-user-sessions.component-Cp-o-wcp.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-user-sessions.component-8Fn7VOQy.mjs.map → acorex-modules-auth-user-sessions.component-Cp-o-wcp.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/{acorex-modules-common-search-popup.component-Cj80FOYd.mjs → acorex-modules-common-search-popup.component-BfoE2CMa.mjs} +2 -2
- package/fesm2022/acorex-modules-common-search-popup.component-BfoE2CMa.mjs.map +1 -0
- package/fesm2022/acorex-modules-common.mjs +3 -2
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +1 -1
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-Cx45oj-N.mjs → acorex-modules-document-management-acorex-modules-document-management-MIjFywnS.mjs} +16 -16
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-Cx45oj-N.mjs.map → acorex-modules-document-management-acorex-modules-document-management-MIjFywnS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-D-f5Ml7b.mjs → acorex-modules-document-management-attachment-widget.component-DjmLBxz_.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-D-f5Ml7b.mjs.map → acorex-modules-document-management-attachment-widget.component-DjmLBxz_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-BQmpQhlZ.mjs → acorex-modules-document-management-details-view.component-BRBTKeP_.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-BQmpQhlZ.mjs.map → acorex-modules-document-management-details-view.component-BRBTKeP_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-Dz1uKKIr.mjs → acorex-modules-document-management-document-signature-popup.component-DEWs7eF2.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-document-signature-popup.component-Dz1uKKIr.mjs.map → acorex-modules-document-management-document-signature-popup.component-DEWs7eF2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-Bh245lBa.mjs → acorex-modules-document-management-drive-choose.component-BdPjnLPn.mjs} +3 -3
- package/fesm2022/acorex-modules-document-management-drive-choose.component-BdPjnLPn.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-drive.component-BrSRKQ23.mjs → acorex-modules-document-management-drive.component-CQXh82bW.mjs} +3 -3
- package/fesm2022/acorex-modules-document-management-drive.component-CQXh82bW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C1FegGr_.mjs → acorex-modules-document-management-large-icons-view.component-C-3c779z.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C1FegGr_.mjs.map → acorex-modules-document-management-large-icons-view.component-C-3c779z.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-r-zzDobG.mjs → acorex-modules-document-management-large-tiles-view.component-Ob20-0Mp.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-r-zzDobG.mjs.map → acorex-modules-document-management-large-tiles-view.component-Ob20-0Mp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-GuPa6IEy.mjs → acorex-modules-document-management-list-view.component-Fr4F7zRi.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-GuPa6IEy.mjs.map → acorex-modules-document-management-list-view.component-Fr4F7zRi.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-yjgChROd.mjs → acorex-modules-document-management-permission-definition.provider-Cl2LEGKW.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-yjgChROd.mjs.map → acorex-modules-document-management-permission-definition.provider-Cl2LEGKW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CF5IIGwk.mjs → acorex-modules-document-management-small-icons-view.component-C5sHQZDc.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CF5IIGwk.mjs.map → acorex-modules-document-management-small-icons-view.component-C5sHQZDc.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-DqXs1Z9m.mjs → acorex-modules-document-management-small-tiles-view.component-DPzT2l-a.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-DqXs1Z9m.mjs.map → acorex-modules-document-management-small-tiles-view.component-DPzT2l-a.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-B5UHLnJv.mjs → acorex-modules-form-template-management-template-picker.component-Cax6CKnV.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-Cax6CKnV.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-CABEJK6C.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BabBpxPi.mjs} +11 -11
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-CABEJK6C.mjs.map → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BabBpxPi.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-Krwiu3Dz.mjs → acorex-modules-human-capital-management-employee-skill.entity-Bd-AAvzy.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-Krwiu3Dz.mjs.map → acorex-modules-human-capital-management-employee-skill.entity-Bd-AAvzy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-DA3kqqs8.mjs → acorex-modules-human-capital-management-employee.entity-tA4t8PnL.mjs} +10 -4
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-tA4t8PnL.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-DzI3oie3.mjs → acorex-modules-human-capital-management-employment-type.entity-CppPCCjZ.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-DzI3oie3.mjs.map → acorex-modules-human-capital-management-employment-type.entity-CppPCCjZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-CCswTOHf.mjs → acorex-modules-human-capital-management-leave-request.entity-DoJnpaWD.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-CCswTOHf.mjs.map → acorex-modules-human-capital-management-leave-request.entity-DoJnpaWD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-D5xv3hMC.mjs → acorex-modules-human-capital-management-leave-type.entity-BQ6yblkP.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-D5xv3hMC.mjs.map → acorex-modules-human-capital-management-leave-type.entity-BQ6yblkP.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-permission-definition.provider-Q7Gkj7ZC.mjs → acorex-modules-human-capital-management-permission-definition.provider-qcc4cTK7.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-permission-definition.provider-Q7Gkj7ZC.mjs.map → acorex-modules-human-capital-management-permission-definition.provider-qcc4cTK7.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-C0YqZ6pH.mjs → acorex-modules-human-capital-management-position-assignment.entity-CXp9MoOd.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-C0YqZ6pH.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-CXp9MoOd.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-B8JPtxKi.mjs → acorex-modules-human-capital-management-skill-level.entity-CatnVsAW.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-B8JPtxKi.mjs.map → acorex-modules-human-capital-management-skill-level.entity-CatnVsAW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-BvtxulWr.mjs → acorex-modules-human-capital-management-skill.entity-BNDfFPlm.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-BvtxulWr.mjs.map → acorex-modules-human-capital-management-skill.entity-BNDfFPlm.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/{acorex-modules-notification-management-notification-page.component-m8d9pc0D.mjs → acorex-modules-notification-management-notification-page.component-BB49Nkf6.mjs} +2 -2
- package/fesm2022/acorex-modules-notification-management-notification-page.component-BB49Nkf6.mjs.map +1 -0
- package/fesm2022/acorex-modules-notification-management.mjs +1 -1
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-CmD6_qq-.mjs → acorex-modules-party-management-acorex-modules-party-management-OB3q3OoQ.mjs} +7 -7
- package/fesm2022/{acorex-modules-party-management-acorex-modules-party-management-CmD6_qq-.mjs.map → acorex-modules-party-management-acorex-modules-party-management-OB3q3OoQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-industry.entity-Aco0Q4Jx.mjs → acorex-modules-party-management-industry.entity-BA7nmeZu.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-industry.entity-Aco0Q4Jx.mjs.map → acorex-modules-party-management-industry.entity-BA7nmeZu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BE2baNum.mjs → acorex-modules-party-management-party-identifier-type.entity-CBhyeUNE.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier-type.entity-BE2baNum.mjs.map → acorex-modules-party-management-party-identifier-type.entity-CBhyeUNE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-CM0-kSRg.mjs → acorex-modules-party-management-party-identifier.entity-CkNcTmoN.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-identifier.entity-CM0-kSRg.mjs.map → acorex-modules-party-management-party-identifier.entity-CkNcTmoN.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-CFXy5haj.mjs → acorex-modules-party-management-party-relationship.entity-vDEvzwWy.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-relationship.entity-CFXy5haj.mjs.map → acorex-modules-party-management-party-relationship.entity-vDEvzwWy.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party-role.entity-BMbGWKiX.mjs → acorex-modules-party-management-party-role.entity-DLwi525X.mjs} +2 -2
- package/fesm2022/{acorex-modules-party-management-party-role.entity-BMbGWKiX.mjs.map → acorex-modules-party-management-party-role.entity-DLwi525X.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-party-management-party.entity-DPiBgbZR.mjs → acorex-modules-party-management-party.entity-C614tkVp.mjs} +3 -3
- package/fesm2022/{acorex-modules-party-management-party.entity-DPiBgbZR.mjs.map → acorex-modules-party-management-party.entity-C614tkVp.mjs.map} +1 -1
- package/fesm2022/acorex-modules-party-management.mjs +1 -1
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-De8NbpUE.mjs → acorex-modules-report-management-report-runner-root-page.component-8YuF_Hj0.mjs} +2 -2
- package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-De8NbpUE.mjs.map → acorex-modules-report-management-report-runner-root-page.component-8YuF_Hj0.mjs.map} +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +1 -1
- package/fesm2022/{acorex-modules-security-management-acorex-modules-security-management-dkzc-1KY.mjs → acorex-modules-security-management-acorex-modules-security-management-BuUr_2c2.mjs} +6 -3
- package/fesm2022/acorex-modules-security-management-acorex-modules-security-management-BuUr_2c2.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permission-definition.provider-BbbgcgpH.mjs → acorex-modules-security-management-permission-definition.provider-CL-p5Gwd.mjs} +2 -2
- package/fesm2022/{acorex-modules-security-management-permission-definition.provider-BbbgcgpH.mjs.map → acorex-modules-security-management-permission-definition.provider-CL-p5Gwd.mjs.map} +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +1 -1
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-DuuLmVEb.mjs → acorex-modules-settings-management-acorex-modules-settings-management-DewbCas3.mjs} +5 -5
- package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-DuuLmVEb.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-DewbCas3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-Dv66Gxud.mjs → acorex-modules-settings-management-permission-definition.provider-DsDGc5aU.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-Dv66Gxud.mjs.map → acorex-modules-settings-management-permission-definition.provider-DsDGc5aU.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-fAvSWI9x.mjs → acorex-modules-settings-management-setting-page.component-DS3ZGStM.mjs} +3 -3
- package/fesm2022/acorex-modules-settings-management-setting-page.component-DS3ZGStM.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-B_SyuN9P.mjs → acorex-modules-settings-management-setting-view.component-DRz4ChIn.mjs} +2 -2
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-B_SyuN9P.mjs.map → acorex-modules-settings-management-setting-view.component-DRz4ChIn.mjs.map} +1 -1
- package/fesm2022/acorex-modules-settings-management.mjs +1 -1
- package/package.json +2 -2
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-Cc_HrYdx.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-search-popup.component-Cj80FOYd.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive-choose.component-Bh245lBa.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-BrSRKQ23.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-B5UHLnJv.mjs.map +0 -1
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-DA3kqqs8.mjs.map +0 -1
- package/fesm2022/acorex-modules-notification-management-notification-page.component-m8d9pc0D.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-acorex-modules-security-management-dkzc-1KY.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-fAvSWI9x.mjs.map +0 -1
package/fesm2022/acorex-modules-form-template-management-template-picker.component-B5UHLnJv.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-form-template-management-template-picker.component-B5UHLnJv.mjs","sources":["../tmp-esm2022/form-template-management/lib/features/designer/components/template-picker/template-picker.component.js"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXCommonModule } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, inject, Injector, model, runInInjectionContext, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { orderBy } from 'lodash-es';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXTreeViewModule } from '@acorex/components/tree-view';\nimport { AXPStateMessageComponent, AXPWidgetItemComponent } from '@acorex/platform/layout/components';\nimport { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { RootConfig } from '../../../../const';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/components/search-box\";\nimport * as i5 from \"@acorex/components/tree-view\";\nimport * as i6 from \"@angular/common\";\nimport * as i7 from \"@acorex/core/translation\";\n/**\n * Maps AXPDisplayWidgetProvided to generic AXPWidgetItemData\n */\nfunction mapToWidgetItemData(widget) {\n return {\n title: widget.title,\n description: widget.description,\n icon: widget.icon ?? 'fa-solid fa-cube',\n isPinned: widget.pinned,\n data: widget\n };\n}\nexport class AXPTemplateWidgetPickerComponent extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.settingService = inject(AXPSettingService);\n this.injector = inject(Injector);\n this.categoryEntityService = runInInjectionContext(this.injector, () => new AXMEntityCrudServiceImpl(`${RootConfig.module.name}.Category`));\n this.expandedCategoriesKey = 'forms:templates:picker:expandedCategories';\n // Track expanded category IDs\n this.expandedCategoryIds = signal([], ...(ngDevMode ? [{ debugName: \"expandedCategoryIds\" }] : []));\n this.pinnedSettingKey = 'forms:templates:picker:pinned';\n this.searchTerm = model('', ...(ngDevMode ? [{ debugName: \"searchTerm\" }] : []));\n // Data properties - populated by popup service\n this.widgets = [];\n // Signals\n this.displayWidgets = signal([], ...(ngDevMode ? [{ debugName: \"displayWidgets\" }] : []));\n // Signal to track selected widgets\n this.selectedWidgets = signal([], ...(ngDevMode ? [{ debugName: \"selectedWidgets\" }] : []));\n // Computed for filtered and ordered widget list\n this.orderedList = computed(() => {\n const search = this.searchTerm().toLowerCase();\n const selectedCategory = this.selectedCategory();\n const selectedCategoryId = selectedCategory ? selectedCategory.id : null;\n const filterByCategory = (widget) => {\n if (!selectedCategoryId || selectedCategoryId == 'all')\n return true;\n return selectedCategoryId === widget.group.name;\n };\n return orderBy(this.displayWidgets().filter((w) => {\n const matchesCategory = filterByCategory(w);\n const matchesSearch = !search || w.title.toLowerCase().includes(search) || w.description?.toLowerCase().includes(search);\n return matchesCategory && matchesSearch;\n }), ['pinned', 'title'], ['desc', 'asc']);\n }, ...(ngDevMode ? [{ debugName: \"orderedList\" }] : []));\n // Pinned and regular lists\n this.pinnedList = computed(() => this.orderedList().filter((c) => c.pinned), ...(ngDevMode ? [{ debugName: \"pinnedList\" }] : []));\n this.regularList = computed(() => this.orderedList().filter((c) => !c.pinned), ...(ngDevMode ? [{ debugName: \"regularList\" }] : []));\n // Mapped data for generic widget items\n this.pinnedWidgetItems = computed(() => this.pinnedList().map(mapToWidgetItemData), ...(ngDevMode ? [{ debugName: \"pinnedWidgetItems\" }] : []));\n this.regularWidgetItems = computed(() => this.regularList().map(mapToWidgetItemData), ...(ngDevMode ? [{ debugName: \"regularWidgetItems\" }] : []));\n // Computed property to check if we're in search mode\n this.isSearchMode = computed(() => this.searchTerm().trim().length > 0, ...(ngDevMode ? [{ debugName: \"isSearchMode\" }] : []));\n // Computed property to check if there are any results\n this.hasResults = computed(() => this.orderedList().length > 0, ...(ngDevMode ? [{ debugName: \"hasResults\" }] : []));\n //#region Category Tree\n this.provideLazyTreeView = async (selectedItemId) => {\n if (selectedItemId == 'all') {\n const categories = await this.categoryEntityService.getRoots({});\n const items = categories.items.map((item) => ({\n id: item.id,\n title: item.title,\n hasChild: item.childCount > 0,\n expanded: this.expandedCategoryIds().includes(item.id),\n }));\n return items;\n }\n else if (selectedItemId) {\n const categories = (await this.categoryEntityService.getChildren({ parentId: selectedItemId }))?.items.map((item) => ({\n id: item.id,\n title: item.title,\n parentId: item.parentId,\n hasChild: item.childCount > 0,\n expanded: this.expandedCategoryIds().includes(item.id),\n }));\n return categories;\n }\n else {\n return [\n {\n hasChild: true,\n id: \"all\",\n title: \"All Items\",\n expanded: true,\n }\n ];\n }\n };\n this.selectedCategory = signal(null, ...(ngDevMode ? [{ debugName: \"selectedCategory\" }] : []));\n }\n async ngOnInit() {\n super.ngOnInit();\n // Load expanded categories from settings\n const savedExpandedIds = (await this.settingService.get(this.expandedCategoriesKey)) || [];\n this.expandedCategoryIds.set(savedExpandedIds);\n //\n const pinnedWidgets = (await this.settingService.get(this.pinnedSettingKey)) || [];\n this.displayWidgets.set(this.widgets.map((c) => ({\n ...c,\n pinned: pinnedWidgets.includes(c.id),\n icon: c.icon ?? 'fa-solid fa-file-invoice',\n })));\n }\n handleWidgetClick(clickEvent) {\n const { event, widget } = clickEvent;\n const originalWidget = widget.data;\n if (event.ctrlKey) {\n const currentSelection = this.selectedWidgets();\n const isAlreadySelected = currentSelection.some((w) => w === originalWidget);\n if (isAlreadySelected) {\n // Deselect widget if already selected\n this.selectedWidgets.set(currentSelection.filter((w) => w !== originalWidget));\n }\n else {\n // Add widget to selection\n this.selectedWidgets.set([...currentSelection, originalWidget]);\n }\n }\n else {\n // If CTRL is not pressed, select only the clicked widget\n this.close({ widgets: [originalWidget] });\n }\n }\n async handleWidgetPinClick(clickEvent) {\n const { widget } = clickEvent;\n const originalWidget = widget.data;\n originalWidget.pinned = !originalWidget.pinned;\n // Get the current list of pinned widgets from settings\n let pinnedWidgets = (await this.settingService.get(this.pinnedSettingKey)) || [];\n // Update the list of pinned widgets based on the pinned status\n if (originalWidget.pinned) {\n if (!pinnedWidgets.includes(originalWidget.id)) {\n pinnedWidgets.push(originalWidget.id);\n }\n }\n else {\n pinnedWidgets = pinnedWidgets.filter((name) => name !== originalWidget.id);\n }\n // Save the updated list of pinned widgets\n await this.settingService.scope(AXPPlatformScope.User).set(this.pinnedSettingKey, pinnedWidgets);\n // Trigger a re-render of the widgets\n this.displayWidgets.set([...this.displayWidgets()]);\n }\n // Check if a widget is selected\n isWidgetSelected(widget) {\n return this.selectedWidgets().includes(widget);\n }\n // Check if a generic widget item is selected\n isWidgetItemSelected(widgetItem) {\n const originalWidget = widgetItem.data;\n return this.isWidgetSelected(originalWidget);\n }\n handleConfirmSelection() {\n this.close({ widgets: this.selectedWidgets() });\n }\n handleNodeClick(event) {\n const item = event.data;\n this.selectedCategory.set(item);\n }\n async handleCollapseChanged(event) {\n const item = event.data;\n const currentExpanded = this.expandedCategoryIds();\n if (item.expanded) {\n // Category was expanded - add to expanded list\n if (!currentExpanded.includes(item.id)) {\n const newExpanded = [...currentExpanded, item.id];\n this.expandedCategoryIds.set(newExpanded);\n await this.settingService.scope(AXPPlatformScope.User).set(this.expandedCategoriesKey, newExpanded);\n }\n }\n else {\n // Category was collapsed - remove from expanded list\n const newExpanded = currentExpanded.filter(id => id !== item.id);\n this.expandedCategoryIds.set(newExpanded);\n await this.settingService.scope(AXPPlatformScope.User).set(this.expandedCategoriesKey, newExpanded);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.10\", ngImport: i0, type: AXPTemplateWidgetPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.10\", type: AXPTemplateWidgetPickerComponent, isStandalone: true, selector: \"ng-component\", inputs: { searchTerm: { classPropertyName: \"searchTerm\", publicName: \"searchTerm\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: \"searchTermChange\" }, usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-flex ax-flex-col lg:ax-h-[60vh]\\\">\\n <div class=\\\"ax-p-2 ax-surface-lowest ax-border-b ax-flex-none\\\">\\n <ax-search-box\\n look=\\\"fill\\\"\\n placeholder=\\\"e.g. Button, Text, ...\\\"\\n class=\\\"ax-sm\\\"\\n [(ngModel)]=\\\"searchTerm\\\"\\n [delayTime]=\\\"300\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </div>\\n <div class=\\\"ax-flex ax-flex-grow ax-h-full\\\">\\n <!-- Category Tree - Hidden in search mode -->\\n @if (!isSearchMode()) {\\n <div\\n class=\\\"ax-flex ax-h-full ax-p-2 ax-overflow-auto ax-w-1/3 ax-justify-start ax-items-start ax-surface-lowest ax-border-e\\\"\\n >\\n <ax-tree-view\\n [showCheckbox]=\\\"false\\\"\\n [itemTemplate]=\\\"categoryTemplate\\\"\\n [textField]=\\\"'title'\\\"\\n [hasChildField]=\\\"'hasChild'\\\"\\n [valueField]=\\\"'id'\\\"\\n [expandedField]=\\\"'expanded'\\\"\\n [items]=\\\"provideLazyTreeView\\\"\\n (onNodeClick)=\\\"handleNodeClick($event)\\\"\\n (onCollapsedChanged)=\\\"handleCollapseChanged($event)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n </ax-tree-view>\\n\\n <ng-template #categoryTemplate let-item>\\n <ax-icon class=\\\"fa-solid fa-folder ax-text-yellow-500 fa-fw\\\"></ax-icon>\\n {{ item.title | translate | async }}\\n </ng-template>\\n </div>\\n }\\n\\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\\n <div\\n [class]=\\\"\\n isSearchMode()\\n ? 'ax-flex ax-h-full ax-flex-col ax-w-full ax-overflow-hidden'\\n : 'ax-flex ax-h-full ax-flex-col ax-w-2/3 ax-overflow-hidden'\\n \\\"\\n >\\n @if (hasResults()) {\\n <div class=\\\"ax-flex ax-flex-col ax-p-4\\\">\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\\n <axp-widget-item\\n [widget]=\\\"widgetItem\\\"\\n [isSelected]=\\\"isWidgetItemSelected(widgetItem)\\\"\\n (onWidgetClick)=\\\"handleWidgetClick($event)\\\"\\n (onPinClick)=\\\"handleWidgetPinClick($event)\\\"\\n >\\n </axp-widget-item>\\n }\\n </div>\\n @if (pinnedWidgetItems().length) {\\n <hr class=\\\"ax-my-4 ax-border-dashed\\\" />\\n }\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\\n <axp-widget-item\\n [widget]=\\\"widgetItem\\\"\\n [isSelected]=\\\"isWidgetItemSelected(widgetItem)\\\"\\n (onWidgetClick)=\\\"handleWidgetClick($event)\\\"\\n (onPinClick)=\\\"handleWidgetPinClick($event)\\\"\\n >\\n </axp-widget-item>\\n }\\n </div>\\n </div>\\n } @else {\\n <!-- Empty State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-search\\\"\\n [title]=\\\"\\n isSearchMode()\\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\\n \\\"\\n [description]=\\\"\\n isSearchMode()\\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\\n \\\"\\n >\\n @if (isSearchMode()) {\\n <ax-button\\n look=\\\"blank\\\"\\n [text]=\\\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\\\"\\n class=\\\"ax-mt-4\\\"\\n (onClick)=\\\"searchTerm.set('')\\\"\\n ></ax-button>\\n }\\n </axp-state-message>\\n }\\n </div>\\n </div>\\n</div>\\n\\n@if (selectedWidgets().length) {\\n <ax-footer>\\n <ax-suffix>\\n <ax-button\\n look=\\\"solid\\\"\\n color=\\\"primary\\\"\\n text=\\\"{{ selectedWidgets().length }} Selected\\\"\\n (onClick)=\\\"handleConfirmSelection()\\\"\\n ></ax-button>\\n </ax-suffix>\\n </ax-footer>\\n}\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: \n //\n AXCommonModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i4.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXTreeViewModule }, { kind: \"component\", type: i5.AXTreeViewComponent, selector: \"ax-tree-view\", inputs: [\"items\", \"showCheckbox\", \"hasCheckboxField\", \"selectionMode\", \"selectionBehavior\", \"selectionScope\", \"focusNodeEnabled\", \"valueField\", \"textField\", \"visibleField\", \"disableField\", \"hasChildField\", \"selectedField\", \"expandedField\", \"tooltipField\", \"childrenField\", \"activeField\", \"indeterminateField\", \"parentField\", \"iconField\", \"toggleIcons\", \"look\", \"showEmptyNodeMassage\", \"itemTemplate\", \"emptyTemplate\", \"expandOn\"], outputs: [\"onSelectionChanged\", \"onItemSelectedChanged\", \"onNodeClick\", \"onCollapsedChanged\", \"onNodedbClick\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPWidgetItemComponent, selector: \"axp-widget-item\", inputs: [\"widget\", \"isSelected\", \"showPinButton\", \"customClasses\"], outputs: [\"onWidgetClick\", \"onPinClick\"] }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"pipe\", type: i6.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i7.AXTranslatorPipe, name: \"translate\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.10\", ngImport: i0, type: AXPTemplateWidgetPickerComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n CommonModule,\n FormsModule,\n //\n AXCommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXSearchBoxModule,\n AXTreeViewModule,\n AXTranslationModule,\n AXPWidgetItemComponent,\n AXPStateMessageComponent,\n ], encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"ax-flex ax-flex-col lg:ax-h-[60vh]\\\">\\n <div class=\\\"ax-p-2 ax-surface-lowest ax-border-b ax-flex-none\\\">\\n <ax-search-box\\n look=\\\"fill\\\"\\n placeholder=\\\"e.g. Button, Text, ...\\\"\\n class=\\\"ax-sm\\\"\\n [(ngModel)]=\\\"searchTerm\\\"\\n [delayTime]=\\\"300\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </div>\\n <div class=\\\"ax-flex ax-flex-grow ax-h-full\\\">\\n <!-- Category Tree - Hidden in search mode -->\\n @if (!isSearchMode()) {\\n <div\\n class=\\\"ax-flex ax-h-full ax-p-2 ax-overflow-auto ax-w-1/3 ax-justify-start ax-items-start ax-surface-lowest ax-border-e\\\"\\n >\\n <ax-tree-view\\n [showCheckbox]=\\\"false\\\"\\n [itemTemplate]=\\\"categoryTemplate\\\"\\n [textField]=\\\"'title'\\\"\\n [hasChildField]=\\\"'hasChild'\\\"\\n [valueField]=\\\"'id'\\\"\\n [expandedField]=\\\"'expanded'\\\"\\n [items]=\\\"provideLazyTreeView\\\"\\n (onNodeClick)=\\\"handleNodeClick($event)\\\"\\n (onCollapsedChanged)=\\\"handleCollapseChanged($event)\\\"\\n class=\\\"ax-w-full\\\"\\n >\\n </ax-tree-view>\\n\\n <ng-template #categoryTemplate let-item>\\n <ax-icon class=\\\"fa-solid fa-folder ax-text-yellow-500 fa-fw\\\"></ax-icon>\\n {{ item.title | translate | async }}\\n </ng-template>\\n </div>\\n }\\n\\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\\n <div\\n [class]=\\\"\\n isSearchMode()\\n ? 'ax-flex ax-h-full ax-flex-col ax-w-full ax-overflow-hidden'\\n : 'ax-flex ax-h-full ax-flex-col ax-w-2/3 ax-overflow-hidden'\\n \\\"\\n >\\n @if (hasResults()) {\\n <div class=\\\"ax-flex ax-flex-col ax-p-4\\\">\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\\n <axp-widget-item\\n [widget]=\\\"widgetItem\\\"\\n [isSelected]=\\\"isWidgetItemSelected(widgetItem)\\\"\\n (onWidgetClick)=\\\"handleWidgetClick($event)\\\"\\n (onPinClick)=\\\"handleWidgetPinClick($event)\\\"\\n >\\n </axp-widget-item>\\n }\\n </div>\\n @if (pinnedWidgetItems().length) {\\n <hr class=\\\"ax-my-4 ax-border-dashed\\\" />\\n }\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\\n <axp-widget-item\\n [widget]=\\\"widgetItem\\\"\\n [isSelected]=\\\"isWidgetItemSelected(widgetItem)\\\"\\n (onWidgetClick)=\\\"handleWidgetClick($event)\\\"\\n (onPinClick)=\\\"handleWidgetPinClick($event)\\\"\\n >\\n </axp-widget-item>\\n }\\n </div>\\n </div>\\n } @else {\\n <!-- Empty State -->\\n <axp-state-message\\n icon=\\\"fa-light fa-search\\\"\\n [title]=\\\"\\n isSearchMode()\\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\\n \\\"\\n [description]=\\\"\\n isSearchMode()\\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\\n \\\"\\n >\\n @if (isSearchMode()) {\\n <ax-button\\n look=\\\"blank\\\"\\n [text]=\\\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\\\"\\n class=\\\"ax-mt-4\\\"\\n (onClick)=\\\"searchTerm.set('')\\\"\\n ></ax-button>\\n }\\n </axp-state-message>\\n }\\n </div>\\n </div>\\n</div>\\n\\n@if (selectedWidgets().length) {\\n <ax-footer>\\n <ax-suffix>\\n <ax-button\\n look=\\\"solid\\\"\\n color=\\\"primary\\\"\\n text=\\\"{{ selectedWidgets().length }} Selected\\\"\\n (onClick)=\\\"handleConfirmSelection()\\\"\\n ></ax-button>\\n </ax-suffix>\\n </ax-footer>\\n}\\n\" }]\n }], propDecorators: { searchTerm: [{ type: i0.Input, args: [{ isSignal: true, alias: \"searchTerm\", required: false }] }, { type: i0.Output, args: [\"searchTermChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9mb3JtLXRlbXBsYXRlLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9kZXNpZ25lci9jb21wb25lbnRzL3RlbXBsYXRlLXBpY2tlci90ZW1wbGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Zvcm0tdGVtcGxhdGUtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2Rlc2lnbmVyL2NvbXBvbmVudHMvdGVtcGxhdGUtcGlja2VyL3RlbXBsYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFFLFdBQVcsRUFB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QUFnQzttR0FBaEMsZ0NBQWdDLCtSQzdEN0Msb3RJQW9IQSwyQ0R0RUksWUFBWSw4QkFDWixXQUFXO2dCQUNYLEVBQUU7Z0JBQ0YsY0FBYyw4QkFDZCxjQUFjLDZYQUNkLGlCQUFpQixzY0FDakIsaUJBQWlCLDRZQUNqQixnQkFBZ0IsNG9CQUNoQixtQkFBbUIsK0JBQ25CLHNCQUFzQiwwS0FDdEIsd0JBQXdCOzs0RkFLZixnQ0FBZ0M7a0JBakI1QyxTQUFTOzhCQUNDO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxFQUFFO3dCQUNGLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3FCQUN6QixpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhQU2V0dGluZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBQbGF0Zm9ybVNjb3BlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIEluamVjdG9yLCBtb2RlbCwgcnVuSW5JbmplY3Rpb25Db250ZXh0LCBzaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzTmlsLCBvcmRlckJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUFRlbXBsYXRlV2lkZ2V0TGlzdEl0ZW0gfSBmcm9tICcuL3RlbXBsYXRlLnByb3ZpZGVyJztcblxuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFRyZWVWaWV3TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RyZWUtdmlldyc7XG5pbXBvcnQgeyBBWFBTdGF0ZU1lc3NhZ2VDb21wb25lbnQsIEFYUFdpZGdldEl0ZW1Db21wb25lbnQsIEFYUFdpZGdldEl0ZW1EYXRhLCBBWFBXaWRnZXRJdGVtQ2xpY2tFdmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGlzcGxheVdpZGdldFByb3ZpZGVkIGV4dGVuZHMgQVhQVGVtcGxhdGVXaWRnZXRMaXN0SXRlbSB7XG4gIHBpbm5lZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBDYXRlZ29yeURpc3BsYXlNb2RlbCB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhcmVudElkPzogc3RyaW5nO1xuICBoYXNDaGlsZDogYm9vbGVhbjtcbiAgZXhwYW5kZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1hcHMgQVhQRGlzcGxheVdpZGdldFByb3ZpZGVkIHRvIGdlbmVyaWMgQVhQV2lkZ2V0SXRlbURhdGFcbiAqL1xuZnVuY3Rpb24gbWFwVG9XaWRnZXRJdGVtRGF0YSh3aWRnZXQ6IEFYUERpc3BsYXlXaWRnZXRQcm92aWRlZCk6IEFYUFdpZGdldEl0ZW1EYXRhIHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogd2lkZ2V0LnRpdGxlLFxuICAgIGRlc2NyaXB0aW9uOiB3aWRnZXQuZGVzY3JpcHRpb24sXG4gICAgaWNvbjogd2lkZ2V0Lmljb24gPz8gJ2ZhLXNvbGlkIGZhLWN1YmUnLFxuICAgIGlzUGlubmVkOiB3aWRnZXQucGlubmVkLFxuICAgIGRhdGE6IHdpZGdldFxuICB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICAvL1xuICAgIEFYQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYU2VhcmNoQm94TW9kdWxlLFxuICAgIEFYVHJlZVZpZXdNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFBXaWRnZXRJdGVtQ29tcG9uZW50LFxuICAgIEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFYUFRlbXBsYXRlV2lkZ2V0UGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgc2V0dGluZ1NlcnZpY2UgPSBpbmplY3QoQVhQU2V0dGluZ1NlcnZpY2UpO1xuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSBjYXRlZ29yeUVudGl0eVNlcnZpY2UgPSBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4gbmV3IEFYTUVudGl0eUNydWRTZXJ2aWNlSW1wbDxhbnksIGFueT4oYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uQ2F0ZWdvcnlgKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBleHBhbmRlZENhdGVnb3JpZXNLZXkgPSAnZm9ybXM6dGVtcGxhdGVzOnBpY2tlcjpleHBhbmRlZENhdGVnb3JpZXMnO1xuXG4gIC8vIFRyYWNrIGV4cGFuZGVkIGNhdGVnb3J5IElEc1xuICBwcml2YXRlIGV4cGFuZGVkQ2F0ZWdvcnlJZHMgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvLyBMb2FkIGV4cGFuZGVkIGNhdGVnb3JpZXMgZnJvbSBzZXR0aW5nc1xuICAgIGNvbnN0IHNhdmVkRXhwYW5kZWRJZHMgPSAoYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5nZXQ8c3RyaW5nW10+KHRoaXMuZXhwYW5kZWRDYXRlZ29yaWVzS2V5KSkgfHwgW107XG4gICAgdGhpcy5leHBhbmRlZENhdGVnb3J5SWRzLnNldChzYXZlZEV4cGFuZGVkSWRzKTtcbiAgICAvL1xuICAgIGNvbnN0IHBpbm5lZFdpZGdldHMgPSAoYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5nZXQ8c3RyaW5nW10+KHRoaXMucGlubmVkU2V0dGluZ0tleSkpIHx8IFtdO1xuICAgIHRoaXMuZGlzcGxheVdpZGdldHMuc2V0KFxuICAgICAgdGhpcy53aWRnZXRzLm1hcCgoYykgPT4gKHtcbiAgICAgICAgLi4uYyxcbiAgICAgICAgcGlubmVkOiBwaW5uZWRXaWRnZXRzLmluY2x1ZGVzKGMuaWQpLFxuICAgICAgICBpY29uOiBjLmljb24gPz8gJ2ZhLXNvbGlkIGZhLWZpbGUtaW52b2ljZScsXG4gICAgICB9KSksXG4gICAgKTtcblxuXG4gIH1cblxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGlubmVkU2V0dGluZ0tleSA9ICdmb3Jtczp0ZW1wbGF0ZXM6cGlja2VyOnBpbm5lZCc7XG5cbiAgcHJvdGVjdGVkIHNlYXJjaFRlcm0gPSBtb2RlbCgnJyk7XG5cbiAgLy8gRGF0YSBwcm9wZXJ0aWVzIC0gcG9wdWxhdGVkIGJ5IHBvcHVwIHNlcnZpY2VcbiAgd2lkZ2V0czogQVhQVGVtcGxhdGVXaWRnZXRMaXN0SXRlbVtdID0gW107XG5cbiAgLy8gU2lnbmFsc1xuICBwcml2YXRlIGRpc3BsYXlXaWRnZXRzID0gc2lnbmFsPEFYUERpc3BsYXlXaWRnZXRQcm92aWRlZFtdPihbXSk7XG5cbiAgLy8gU2lnbmFsIHRvIHRyYWNrIHNlbGVjdGVkIHdpZGdldHNcbiAgcHJvdGVjdGVkIHNlbGVjdGVkV2lkZ2V0cyA9IHNpZ25hbDxBWFBEaXNwbGF5V2lkZ2V0UHJvdmlkZWRbXT4oW10pO1xuXG4gIC8vIENvbXB1dGVkIGZvciBmaWx0ZXJlZCBhbmQgb3JkZXJlZCB3aWRnZXQgbGlzdFxuICBwcml2YXRlIG9yZGVyZWRMaXN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2VhcmNoVGVybSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yeSA9IHRoaXMuc2VsZWN0ZWRDYXRlZ29yeSgpO1xuICAgIGNvbnN0IHNlbGVjdGVkQ2F0ZWdvcnlJZCA9IHNlbGVjdGVkQ2F0ZWdvcnkgPyBzZWxlY3RlZENhdGVnb3J5LmlkIDogbnVsbDtcblxuICAgIGNvbnN0IGZpbHRlckJ5Q2F0ZWdvcnkgPSAod2lkZ2V0OiBBWFBEaXNwbGF5V2lkZ2V0UHJvdmlkZWQpID0+IHtcbiAgICAgIGlmICghc2VsZWN0ZWRDYXRlZ29yeUlkIHx8IHNlbGVjdGVkQ2F0ZWdvcnlJZCA9PSAnYWxsJykgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRDYXRlZ29yeUlkID09PSB3aWRnZXQuZ3JvdXAubmFtZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIG9yZGVyQnkoXG4gICAgICB0aGlzLmRpc3BsYXlXaWRnZXRzKCkuZmlsdGVyKCh3KSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXNDYXRlZ29yeSA9IGZpbHRlckJ5Q2F0ZWdvcnkodyk7XG4gICAgICAgIGNvbnN0IG1hdGNoZXNTZWFyY2ggPVxuICAgICAgICAgICFzZWFyY2ggfHwgdy50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHwgdy5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpO1xuICAgICAgICByZXR1cm4gbWF0Y2hlc0NhdGVnb3J5ICYmIG1hdGNoZXNTZWFyY2g7XG4gICAgICB9KSxcbiAgICAgIFsncGlubmVkJywgJ3RpdGxlJ10sXG4gICAgICBbJ2Rlc2MnLCAnYXNjJ10sXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gUGlubmVkIGFuZCByZWd1bGFyIGxpc3RzXG4gIHByb3RlY3RlZCBwaW5uZWRMaXN0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcmRlcmVkTGlzdCgpLmZpbHRlcigoYykgPT4gYy5waW5uZWQpKTtcbiAgcHJvdGVjdGVkIHJlZ3VsYXJMaXN0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcmRlcmVkTGlzdCgpLmZpbHRlcigoYykgPT4gIWMucGlubmVkKSk7XG5cbiAgLy8gTWFwcGVkIGRhdGEgZm9yIGdlbmVyaWMgd2lkZ2V0IGl0ZW1zXG4gIHByb3RlY3RlZCBwaW5uZWRXaWRnZXRJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGlubmVkTGlzdCgpLm1hcChtYXBUb1dpZGdldEl0ZW1EYXRhKSk7XG4gIHByb3RlY3RlZCByZWd1bGFyV2lkZ2V0SXRlbXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlZ3VsYXJMaXN0KCkubWFwKG1hcFRvV2lkZ2V0SXRlbURhdGEpKTtcblxuICAvLyBDb21wdXRlZCBwcm9wZXJ0eSB0byBjaGVjayBpZiB3ZSdyZSBpbiBzZWFyY2ggbW9kZVxuICBwcm90ZWN0ZWQgaXNTZWFyY2hNb2RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWFyY2hUZXJtKCkudHJpbSgpLmxlbmd0aCA+IDApO1xuXG4gIC8vIENvbXB1dGVkIHByb3BlcnR5IHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgcmVzdWx0c1xuICBwcm90ZWN0ZWQgaGFzUmVzdWx0cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3JkZXJlZExpc3QoKS5sZW5ndGggPiAwKTtcblxuXG5cbiAgcHJvdGVjdGVkIGhhbmRsZVdpZGdldENsaWNrKGNsaWNrRXZlbnQ6IEFYUFdpZGdldEl0ZW1DbGlja0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgeyBldmVudCwgd2lkZ2V0IH0gPSBjbGlja0V2ZW50O1xuICAgIGNvbnN0IG9yaWdpbmFsV2lkZ2V0ID0gd2lkZ2V0LmRhdGEgYXMgQVhQRGlzcGxheVdpZGdldFByb3ZpZGVkO1xuXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cygpO1xuICAgICAgY29uc3QgaXNBbHJlYWR5U2VsZWN0ZWQgPSBjdXJyZW50U2VsZWN0aW9uLnNvbWUoKHcpID0+IHcgPT09IG9yaWdpbmFsV2lkZ2V0KTtcblxuICAgICAgaWYgKGlzQWxyZWFkeVNlbGVjdGVkKSB7XG4gICAgICAgIC8vIERlc2VsZWN0IHdpZGdldCBpZiBhbHJlYWR5IHNlbGVjdGVkXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnNldChjdXJyZW50U2VsZWN0aW9uLmZpbHRlcigodykgPT4gdyAhPT0gb3JpZ2luYWxXaWRnZXQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCB3aWRnZXQgdG8gc2VsZWN0aW9uXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnNldChbLi4uY3VycmVudFNlbGVjdGlvbiwgb3JpZ2luYWxXaWRnZXRdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgQ1RSTCBpcyBub3QgcHJlc3NlZCwgc2VsZWN0IG9ubHkgdGhlIGNsaWNrZWQgd2lkZ2V0XG4gICAgICB0aGlzLmNsb3NlKHsgd2lkZ2V0czogW29yaWdpbmFsV2lkZ2V0XSB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlV2lkZ2V0UGluQ2xpY2soY2xpY2tFdmVudDogQVhQV2lkZ2V0SXRlbUNsaWNrRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IHdpZGdldCB9ID0gY2xpY2tFdmVudDtcbiAgICBjb25zdCBvcmlnaW5hbFdpZGdldCA9IHdpZGdldC5kYXRhIGFzIEFYUERpc3BsYXlXaWRnZXRQcm92aWRlZDtcblxuICAgIG9yaWdpbmFsV2lkZ2V0LnBpbm5lZCA9ICFvcmlnaW5hbFdpZGdldC5waW5uZWQ7XG5cbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgbGlzdCBvZiBwaW5uZWQgd2lkZ2V0cyBmcm9tIHNldHRpbmdzXG4gICAgbGV0IHBpbm5lZFdpZGdldHMgPSAoYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5nZXQ8c3RyaW5nW10+KHRoaXMucGlubmVkU2V0dGluZ0tleSkpIHx8IFtdO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBsaXN0IG9mIHBpbm5lZCB3aWRnZXRzIGJhc2VkIG9uIHRoZSBwaW5uZWQgc3RhdHVzXG4gICAgaWYgKG9yaWdpbmFsV2lkZ2V0LnBpbm5lZCkge1xuICAgICAgaWYgKCFwaW5uZWRXaWRnZXRzLmluY2x1ZGVzKG9yaWdpbmFsV2lkZ2V0LmlkKSkge1xuICAgICAgICBwaW5uZWRXaWRnZXRzLnB1c2gob3JpZ2luYWxXaWRnZXQuaWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwaW5uZWRXaWRnZXRzID0gcGlubmVkV2lkZ2V0cy5maWx0ZXIoKG5hbWUpID0+IG5hbWUgIT09IG9yaWdpbmFsV2lkZ2V0LmlkKTtcbiAgICB9XG5cbiAgICAvLyBTYXZlIHRoZSB1cGRhdGVkIGxpc3Qgb2YgcGlubmVkIHdpZGdldHNcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVXNlcikuc2V0KHRoaXMucGlubmVkU2V0dGluZ0tleSwgcGlubmVkV2lkZ2V0cyk7XG5cbiAgICAvLyBUcmlnZ2VyIGEgcmUtcmVuZGVyIG9mIHRoZSB3aWRnZXRzXG4gICAgdGhpcy5kaXNwbGF5V2lkZ2V0cy5zZXQoWy4uLnRoaXMuZGlzcGxheVdpZGdldHMoKV0pO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYSB3aWRnZXQgaXMgc2VsZWN0ZWRcbiAgcHJvdGVjdGVkIGlzV2lkZ2V0U2VsZWN0ZWQod2lkZ2V0OiBBWFBEaXNwbGF5V2lkZ2V0UHJvdmlkZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFdpZGdldHMoKS5pbmNsdWRlcyh3aWRnZXQpO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgYSBnZW5lcmljIHdpZGdldCBpdGVtIGlzIHNlbGVjdGVkXG4gIHByb3RlY3RlZCBpc1dpZGdldEl0ZW1TZWxlY3RlZCh3aWRnZXRJdGVtOiBBWFBXaWRnZXRJdGVtRGF0YSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG9yaWdpbmFsV2lkZ2V0ID0gd2lkZ2V0SXRlbS5kYXRhIGFzIEFYUERpc3BsYXlXaWRnZXRQcm92aWRlZDtcbiAgICByZXR1cm4gdGhpcy5pc1dpZGdldFNlbGVjdGVkKG9yaWdpbmFsV2lkZ2V0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDb25maXJtU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2UoeyB3aWRnZXRzOiB0aGlzLnNlbGVjdGVkV2lkZ2V0cygpIH0pO1xuICB9XG5cbiAgLy8jcmVnaW9uIENhdGVnb3J5IFRyZWVcblxuXG4gIHByb3RlY3RlZCBwcm92aWRlTGF6eVRyZWVWaWV3ID0gYXN5bmMgKHNlbGVjdGVkSXRlbUlkPzogc3RyaW5nIHwgbnVtYmVyKTogUHJvbWlzZTxBWFBDYXRlZ29yeURpc3BsYXlNb2RlbFtdPiA9PiB7XG4gICAgaWYgKHNlbGVjdGVkSXRlbUlkID09ICdhbGwnKSB7XG4gICAgICBjb25zdCBjYXRlZ29yaWVzID0gYXdhaXQgdGhpcy5jYXRlZ29yeUVudGl0eVNlcnZpY2UuZ2V0Um9vdHMoe30pO1xuICAgICAgY29uc3QgaXRlbXMgPSBjYXRlZ29yaWVzLml0ZW1zLm1hcCgoaXRlbSkgPT4gKHtcbiAgICAgICAgaWQ6IGl0ZW0uaWQsXG4gICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICBoYXNDaGlsZDogaXRlbS5jaGlsZENvdW50ID4gMCxcbiAgICAgICAgZXhwYW5kZWQ6IHRoaXMuZXhwYW5kZWRDYXRlZ29yeUlkcygpLmluY2x1ZGVzKGl0ZW0uaWQpLFxuICAgICAgfSkpO1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICBlbHNlIGlmIChzZWxlY3RlZEl0ZW1JZCkge1xuICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IChhd2FpdCB0aGlzLmNhdGVnb3J5RW50aXR5U2VydmljZS5nZXRDaGlsZHJlbih7IHBhcmVudElkOiBzZWxlY3RlZEl0ZW1JZCBhcyBzdHJpbmcgfSkpPy5pdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXG4gICAgICAgIGhhc0NoaWxkOiBpdGVtLmNoaWxkQ291bnQgPiAwLFxuICAgICAgICBleHBhbmRlZDogdGhpcy5leHBhbmRlZENhdGVnb3J5SWRzKCkuaW5jbHVkZXMoaXRlbS5pZCksXG4gICAgICB9KSk7XG4gICAgICByZXR1cm4gY2F0ZWdvcmllcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgaGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgICAgaWQ6IFwiYWxsXCIsXG4gICAgICAgICAgdGl0bGU6IFwiQWxsIEl0ZW1zXCIsXG4gICAgICAgICAgZXhwYW5kZWQ6IHRydWUsXG4gICAgICAgIH0gYXMgQVhQQ2F0ZWdvcnlEaXNwbGF5TW9kZWxcbiAgICAgIF07XG4gICAgfVxuICB9O1xuXG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkQ2F0ZWdvcnkgPSBzaWduYWw8QVhQQ2F0ZWdvcnlEaXNwbGF5TW9kZWwgfCBudWxsPihudWxsKTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlTm9kZUNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBpdGVtID0gZXZlbnQuZGF0YSBhcyBBWFBDYXRlZ29yeURpc3BsYXlNb2RlbDtcbiAgICB0aGlzLnNlbGVjdGVkQ2F0ZWdvcnkuc2V0KGl0ZW0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNvbGxhcHNlQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgY29uc3QgaXRlbSA9IGV2ZW50LmRhdGEgYXMgQVhQQ2F0ZWdvcnlEaXNwbGF5TW9kZWw7XG4gICAgY29uc3QgY3VycmVudEV4cGFuZGVkID0gdGhpcy5leHBhbmRlZENhdGVnb3J5SWRzKCk7XG5cbiAgICBpZiAoaXRlbS5leHBhbmRlZCkge1xuICAgICAgLy8gQ2F0ZWdvcnkgd2FzIGV4cGFuZGVkIC0gYWRkIHRvIGV4cGFuZGVkIGxpc3RcbiAgICAgIGlmICghY3VycmVudEV4cGFuZGVkLmluY2x1ZGVzKGl0ZW0uaWQpKSB7XG4gICAgICAgIGNvbnN0IG5ld0V4cGFuZGVkID0gWy4uLmN1cnJlbnRFeHBhbmRlZCwgaXRlbS5pZF07XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDYXRlZ29yeUlkcy5zZXQobmV3RXhwYW5kZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVXNlcikuc2V0KHRoaXMuZXhwYW5kZWRDYXRlZ29yaWVzS2V5LCBuZXdFeHBhbmRlZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENhdGVnb3J5IHdhcyBjb2xsYXBzZWQgLSByZW1vdmUgZnJvbSBleHBhbmRlZCBsaXN0XG4gICAgICBjb25zdCBuZXdFeHBhbmRlZCA9IGN1cnJlbnRFeHBhbmRlZC5maWx0ZXIoaWQgPT4gaWQgIT09IGl0ZW0uaWQpO1xuICAgICAgdGhpcy5leHBhbmRlZENhdGVnb3J5SWRzLnNldChuZXdFeHBhbmRlZCk7XG4gICAgICBhd2FpdCB0aGlzLnNldHRpbmdTZXJ2aWNlLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVXNlcikuc2V0KHRoaXMuZXhwYW5kZWRDYXRlZ29yaWVzS2V5LCBuZXdFeHBhbmRlZCk7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kIHJlZ2lvblxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgbGc6YXgtaC1bNjB2aF1cIj5cbiAgPGRpdiBjbGFzcz1cImF4LXAtMiBheC1zdXJmYWNlLWxvd2VzdCBheC1ib3JkZXItYiBheC1mbGV4LW5vbmVcIj5cbiAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgbG9vaz1cImZpbGxcIlxuICAgICAgcGxhY2Vob2xkZXI9XCJlLmcuIEJ1dHRvbiwgVGV4dCwgLi4uXCJcbiAgICAgIGNsYXNzPVwiYXgtc21cIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAgICAgIFtkZWxheVRpbWVdPVwiMzAwXCJcbiAgICA+XG4gICAgICA8YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPlxuICAgIDwvYXgtc2VhcmNoLWJveD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtZ3JvdyBheC1oLWZ1bGxcIj5cbiAgICA8IS0tIENhdGVnb3J5IFRyZWUgLSBIaWRkZW4gaW4gc2VhcmNoIG1vZGUgLS0+XG4gICAgQGlmICghaXNTZWFyY2hNb2RlKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWgtZnVsbCBheC1wLTIgYXgtb3ZlcmZsb3ctYXV0byBheC13LTEvMyBheC1qdXN0aWZ5LXN0YXJ0IGF4LWl0ZW1zLXN0YXJ0IGF4LXN1cmZhY2UtbG93ZXN0IGF4LWJvcmRlci1lXCJcbiAgICAgID5cbiAgICAgICAgPGF4LXRyZWUtdmlld1xuICAgICAgICAgIFtzaG93Q2hlY2tib3hdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpdGVtVGVtcGxhdGVdPVwiY2F0ZWdvcnlUZW1wbGF0ZVwiXG4gICAgICAgICAgW3RleHRGaWVsZF09XCIndGl0bGUnXCJcbiAgICAgICAgICBbaGFzQ2hpbGRGaWVsZF09XCInaGFzQ2hpbGQnXCJcbiAgICAgICAgICBbdmFsdWVGaWVsZF09XCInaWQnXCJcbiAgICAgICAgICBbZXhwYW5kZWRGaWVsZF09XCInZXhwYW5kZWQnXCJcbiAgICAgICAgICBbaXRlbXNdPVwicHJvdmlkZUxhenlUcmVlVmlld1wiXG4gICAgICAgICAgKG9uTm9kZUNsaWNrKT1cImhhbmRsZU5vZGVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAob25Db2xsYXBzZWRDaGFuZ2VkKT1cImhhbmRsZUNvbGxhcHNlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cImF4LXctZnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgPC9heC10cmVlLXZpZXc+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjYXRlZ29yeVRlbXBsYXRlIGxldC1pdGVtPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtZm9sZGVyIGF4LXRleHQteWVsbG93LTUwMCBmYS1md1wiPjwvYXgtaWNvbj5cbiAgICAgICAgICB7eyBpdGVtLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gV2lkZ2V0IEdyaWQgLSBGdWxsIHdpZHRoIGluIHNlYXJjaCBtb2RlLCAyLzMgd2lkdGggb3RoZXJ3aXNlIC0tPlxuICAgIDxkaXZcbiAgICAgIFtjbGFzc109XCJcbiAgICAgICAgaXNTZWFyY2hNb2RlKClcbiAgICAgICAgICA/ICdheC1mbGV4IGF4LWgtZnVsbCBheC1mbGV4LWNvbCBheC13LWZ1bGwgYXgtb3ZlcmZsb3ctaGlkZGVuJ1xuICAgICAgICAgIDogJ2F4LWZsZXggYXgtaC1mdWxsIGF4LWZsZXgtY29sIGF4LXctMi8zIGF4LW92ZXJmbG93LWhpZGRlbidcbiAgICAgIFwiXG4gICAgPlxuICAgICAgQGlmIChoYXNSZXN1bHRzKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtcC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWdyaWQgYXgtZ3JpZC1jb2xzLTIgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgIEBmb3IgKHdpZGdldEl0ZW0gb2YgcGlubmVkV2lkZ2V0SXRlbXMoKTsgdHJhY2sgd2lkZ2V0SXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICA8YXhwLXdpZGdldC1pdGVtXG4gICAgICAgICAgICAgICAgW3dpZGdldF09XCJ3aWRnZXRJdGVtXCJcbiAgICAgICAgICAgICAgICBbaXNTZWxlY3RlZF09XCJpc1dpZGdldEl0ZW1TZWxlY3RlZCh3aWRnZXRJdGVtKVwiXG4gICAgICAgICAgICAgICAgKG9uV2lkZ2V0Q2xpY2spPVwiaGFuZGxlV2lkZ2V0Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG9uUGluQ2xpY2spPVwiaGFuZGxlV2lkZ2V0UGluQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9heHAtd2lkZ2V0LWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmIChwaW5uZWRXaWRnZXRJdGVtcygpLmxlbmd0aCkge1xuICAgICAgICAgICAgPGhyIGNsYXNzPVwiYXgtbXktNCBheC1ib3JkZXItZGFzaGVkXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWdyaWQgYXgtZ3JpZC1jb2xzLTIgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgIEBmb3IgKHdpZGdldEl0ZW0gb2YgcmVndWxhcldpZGdldEl0ZW1zKCk7IHRyYWNrIHdpZGdldEl0ZW0udGl0bGUpIHtcbiAgICAgICAgICAgICAgPGF4cC13aWRnZXQtaXRlbVxuICAgICAgICAgICAgICAgIFt3aWRnZXRdPVwid2lkZ2V0SXRlbVwiXG4gICAgICAgICAgICAgICAgW2lzU2VsZWN0ZWRdPVwiaXNXaWRnZXRJdGVtU2VsZWN0ZWQod2lkZ2V0SXRlbSlcIlxuICAgICAgICAgICAgICAgIChvbldpZGdldENsaWNrKT1cImhhbmRsZVdpZGdldENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChvblBpbkNsaWNrKT1cImhhbmRsZVdpZGdldFBpbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvYXhwLXdpZGdldC1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8IS0tIEVtcHR5IFN0YXRlIC0tPlxuICAgICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgICBpY29uPVwiZmEtbGlnaHQgZmEtc2VhcmNoXCJcbiAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICBpc1NlYXJjaE1vZGUoKVxuICAgICAgICAgICAgICA/ICdAZm9ybS10ZW1wbGF0ZS1tYW5hZ2VtZW50OmRlc2lnbmVyLmNvbXBvbmVudHMudGVtcGxhdGUtcGlja2VyLmVtcHR5LXN0YXRlcy5uby1zZWFyY2gtcmVzdWx0cy50aXRsZSdcbiAgICAgICAgICAgICAgOiAnQGZvcm0tdGVtcGxhdGUtbWFuYWdlbWVudDpkZXNpZ25lci5jb21wb25lbnRzLnRlbXBsYXRlLXBpY2tlci5lbXB0eS1zdGF0ZXMubm8tY2F0ZWdvcnktcmVzdWx0cy50aXRsZSdcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJcbiAgICAgICAgICAgIGlzU2VhcmNoTW9kZSgpXG4gICAgICAgICAgICAgID8gJ0Bmb3JtLXRlbXBsYXRlLW1hbmFnZW1lbnQ6ZGVzaWduZXIuY29tcG9uZW50cy50ZW1wbGF0ZS1waWNrZXIuZW1wdHktc3RhdGVzLm5vLXNlYXJjaC1yZXN1bHRzLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgICAgICA6ICdAZm9ybS10ZW1wbGF0ZS1tYW5hZ2VtZW50OmRlc2lnbmVyLmNvbXBvbmVudHMudGVtcGxhdGUtcGlja2VyLmVtcHR5LXN0YXRlcy5uby1jYXRlZ29yeS1yZXN1bHRzLmRlc2NyaXB0aW9uJ1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGlzU2VhcmNoTW9kZSgpKSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICAgIGxvb2s9XCJibGFua1wiXG4gICAgICAgICAgICAgIFt0ZXh0XT1cIidAZm9ybS10ZW1wbGF0ZS1tYW5hZ2VtZW50OmRlc2lnbmVyLmNvbXBvbmVudHMudGVtcGxhdGUtcGlja2VyLmNsZWFyLXNlYXJjaCcgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYXgtbXQtNFwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cInNlYXJjaFRlcm0uc2V0KCcnKVwiXG4gICAgICAgICAgICA+PC9heC1idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4cC1zdGF0ZS1tZXNzYWdlPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5AaWYgKHNlbGVjdGVkV2lkZ2V0cygpLmxlbmd0aCkge1xuICA8YXgtZm9vdGVyPlxuICAgIDxheC1zdWZmaXg+XG4gICAgICA8YXgtYnV0dG9uXG4gICAgICAgIGxvb2s9XCJzb2xpZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHRleHQ9XCJ7eyBzZWxlY3RlZFdpZGdldHMoKS5sZW5ndGggfX0gU2VsZWN0ZWRcIlxuICAgICAgICAob25DbGljayk9XCJoYW5kbGVDb25maXJtU2VsZWN0aW9uKClcIlxuICAgICAgPjwvYXgtYnV0dG9uPlxuICAgIDwvYXgtc3VmZml4PlxuICA8L2F4LWZvb3Rlcj5cbn1cbiJdfQ=="],"names":["i6","i7"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAwBA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,MAAM,EAAE;AACrC,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,WAAW,EAAE,MAAM,CAAC,WAAW;AACvC,QAAQ,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,kBAAkB;AAC/C,QAAQ,QAAQ,EAAE,MAAM,CAAC,MAAM;AAC/B,QAAQ,IAAI,EAAE;AACd,KAAK;AACL;AACO,MAAM,gCAAgC,SAAS,mBAAmB,CAAC;AAC1E,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACvD,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,wBAAwB,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnJ,QAAQ,IAAI,CAAC,qBAAqB,GAAG,2CAA2C;AAChF;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC3G,QAAQ,IAAI,CAAC,gBAAgB,GAAG,+BAA+B;AAC/D,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxF;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;AACzB;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjG;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnG;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM;AAC1C,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE;AAC1D,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC5D,YAAY,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,EAAE,GAAG,IAAI;AACpF,YAAY,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK;AACjD,gBAAgB,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,IAAI,KAAK;AACtE,oBAAoB,OAAO,IAAI;AAC/B,gBAAgB,OAAO,kBAAkB,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI;AAC/D,YAAY,CAAC;AACb,YAAY,OAAO,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AAC/D,gBAAgB,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAC3D,gBAAgB,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxI,gBAAgB,OAAO,eAAe,IAAI,aAAa;AACvD,YAAY,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,QAAQ,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChE;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACzI,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5I;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvJ,QAAQ,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1J;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtI;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5H;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,OAAO,cAAc,KAAK;AAC7D,YAAY,IAAI,cAAc,IAAI,KAAK,EAAE;AACzC,gBAAgB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;AAChF,gBAAgB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AAC9D,oBAAoB,EAAE,EAAE,IAAI,CAAC,EAAE;AAC/B,oBAAoB,KAAK,EAAE,IAAI,CAAC,KAAK;AACrC,oBAAoB,QAAQ,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC;AACjD,oBAAoB,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1E,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,iBAAiB,IAAI,cAAc,EAAE;AACrC,gBAAgB,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACtI,oBAAoB,EAAE,EAAE,IAAI,CAAC,EAAE;AAC/B,oBAAoB,KAAK,EAAE,IAAI,CAAC,KAAK;AACrC,oBAAoB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC3C,oBAAoB,QAAQ,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC;AACjD,oBAAoB,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1E,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,OAAO,UAAU;AACjC,YAAY;AACZ,iBAAiB;AACjB,gBAAgB,OAAO;AACvB,oBAAoB;AACpB,wBAAwB,QAAQ,EAAE,IAAI;AACtC,wBAAwB,EAAE,EAAE,KAAK;AACjC,wBAAwB,KAAK,EAAE,WAAW;AAC1C,wBAAwB,QAAQ,EAAE,IAAI;AACtC;AACA,iBAAiB;AACjB,YAAY;AACZ,QAAQ,CAAC;AACT,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACvG,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG;AACrB,QAAQ,KAAK,CAAC,QAAQ,EAAE;AACxB;AACA,QAAQ,MAAM,gBAAgB,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;AAClG,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACtD;AACA,QAAQ,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC1F,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACzD,YAAY,GAAG,CAAC;AAChB,YAAY,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,0BAA0B;AACtD,SAAS,CAAC,CAAC,CAAC;AACZ,IAAI;AACJ,IAAI,iBAAiB,CAAC,UAAU,EAAE;AAClC,QAAQ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU;AAC5C,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI;AAC1C,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE;AAC3B,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE;AAC3D,YAAY,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC;AACxF,YAAY,IAAI,iBAAiB,EAAE;AACnC;AACA,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,CAAC;AAC9F,YAAY;AACZ,iBAAiB;AACjB;AACA,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,EAAE,cAAc,CAAC,CAAC;AAC/E,YAAY;AACZ,QAAQ;AACR,aAAa;AACb;AACA,YAAY,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;AACrD,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,oBAAoB,CAAC,UAAU,EAAE;AAC3C,QAAQ,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU;AACrC,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI;AAC1C,QAAQ,cAAc,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM;AACtD;AACA,QAAQ,IAAI,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACxF;AACA,QAAQ,IAAI,cAAc,CAAC,MAAM,EAAE;AACnC,YAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AAC5D,gBAAgB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;AACrD,YAAY;AACZ,QAAQ;AACR,aAAa;AACb,YAAY,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;AACtF,QAAQ;AACR;AACA,QAAQ,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC;AACxG;AACA,QAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAC3D,IAAI;AACJ;AACA,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACtD,IAAI;AACJ;AACA,IAAI,oBAAoB,CAAC,UAAU,EAAE;AACrC,QAAQ,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI;AAC9C,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;AACpD,IAAI;AACJ,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;AACvD,IAAI;AACJ,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AAC/B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AACvC,IAAI;AACJ,IAAI,MAAM,qBAAqB,CAAC,KAAK,EAAE;AACvC,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AAC/B,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAC1D,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B;AACA,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACpD,gBAAgB,MAAM,WAAW,GAAG,CAAC,GAAG,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC;AACjE,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC;AACzD,gBAAgB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,WAAW,CAAC;AACnH,YAAY;AACZ,QAAQ;AACR,aAAa;AACb;AACA,YAAY,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AAC5E,YAAY,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC;AACrD,YAAY,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,WAAW,CAAC;AAC/G,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACrM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,gCAAgC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,otIAAotI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,2CAA2C,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,qDAAqD,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;AACljK;AACA,gBAAgB,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,+BAA+B,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,sBAAsB,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAEA,IAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAEC,IAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;AACn+E;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,UAAU,EAAE,CAAC;AAC3I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE;AAC9B,wBAAwB,YAAY;AACpC,wBAAwB,WAAW;AACnC;AACA,wBAAwB,cAAc;AACtC,wBAAwB,cAAc;AACtC,wBAAwB,iBAAiB;AACzC,wBAAwB,iBAAiB;AACzC,wBAAwB,gBAAgB;AACxC,wBAAwB,mBAAmB;AAC3C,wBAAwB,sBAAsB;AAC9C,wBAAwB,wBAAwB;AAChD,qBAAqB,EAAE,aAAa,EAAE,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,otIAAotI,EAAE;AAC9xI,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-human-capital-management-employee.entity-DA3kqqs8.mjs","sources":["../tmp-esm2022/human-capital-management/lib/entities/employee/employee.entity.js"],"sourcesContent":["import { AXPWidgetsList } from '@acorex/modules/common';\nimport { AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { entityDetailsCrudActions, entityDetailsSimpleCondition, entityMasterCrudActions, entityMasterRecordActions, } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { RootConfig } from '../../const';\nimport { AXMHumanCapitalManagementEmployeeEntityService } from './employee.service';\nexport async function factory(injector) {\n const dataService = injector.get(AXMHumanCapitalManagementEmployeeEntityService);\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.employee.name,\n title: RootConfig.entities.employee.title,\n icon: 'fa-light fa-building',\n formats: {\n individual: RootConfig.entities.employee.title,\n plural: RootConfig.entities.employee.titlePlural,\n displayName: 'Employment Information',\n searchResult: { title: '{{ party.displayName }}', description: RootConfig.module.title },\n },\n plugins: [\n { name: 'identifier', options: { field: 'employeeCode', rule: 'employee-code' } },\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n { name: 'extra-properties' },\n {\n name: 'attachments',\n options: { field: 'imageId', accept: '.jpg,.jpeg,.png,.pdf', multiple: true, fileEditable: true },\n },\n { name: 'archive' },\n {\n name: 'computed-property',\n options: {\n fields: [\n {\n name: 'manager',\n title: '@human-capital-management:employees.entities.employee.fields.manager',\n value: \"{{ context.eval('manager.party.displayName') }}\",\n group: { id: 'organizationalStructure' },\n showAs: { type: AXPWidgetsCatalog.text },\n },\n {\n name: 'activePosition',\n title: '@human-capital-management:employees.entities.employee.fields.active-position',\n value: 'Engineering Manager (placeholder)',\n group: { id: 'organizationalStructure' },\n showAs: { type: AXPWidgetsCatalog.text },\n },\n ],\n },\n },\n ],\n relatedEntities: [\n {\n entity: `PartyManagement.Party`,\n title: 'Personal Information',\n conditions: [{ name: 'id', operator: { type: 'equal' }, value: '{{ context.eval(\"partyId\") }}' }],\n layout: { type: 'merge-detail' },\n persistence: {\n dataPath: 'party',\n strategy: 'referenced',\n idField: 'partyId',\n },\n },\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.leaveRequest.name}`,\n title: RootConfig.entities.leaveRequest.titlePlural,\n columns: ['leaveTypeId', 'startDate', 'endDate', 'durationDays', 'status', 'reason'],\n conditions: [entityDetailsSimpleCondition('employeeId')],\n actions: [...entityDetailsCrudActions('employeeId')],\n layout: { type: 'page-list', position: 'after', order: 4 },\n },\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.employeeSkill.name}`,\n title: '@human-capital-management:employees.entities.employee.related-entities.skills',\n columns: ['skillId', 'level', 'yearsOfExperience', 'lastUsedDate'],\n conditions: [entityDetailsSimpleCondition('employeeId')],\n actions: [...entityDetailsCrudActions('employeeId')],\n layout: { type: 'page-list', position: 'after', order: 2 },\n },\n {\n entity: `${RootConfig.module.name}.${RootConfig.entities.positionAssignment.name}`,\n title: RootConfig.entities.positionAssignment.titlePlural,\n columns: ['positionId', 'businessUnitId', 'startDate', 'endDate', 'isPrimary'],\n conditions: [entityDetailsSimpleCondition('employeeId')],\n actions: [...entityDetailsCrudActions('employeeId')],\n layout: { type: 'page-list', position: 'after', order: 3 },\n },\n {\n entity: `SecurityManagement.User`,\n title: 'Security Information',\n icon: 'fa-light fa-lock',\n conditions: [{ name: 'id', operator: { type: 'equal' }, value: '{{ context.eval(\"userId\") }}' }],\n layout: { type: 'page-detail', position: 'after', order: 1 },\n persistence: {\n dataPath: 'user',\n strategy: 'referenced',\n idField: 'userId',\n hydrate: 'eager',\n map: {\n displayName: '$parent.party.displayName',\n },\n },\n },\n ],\n groups: [\n { id: 'organizationalStructure', title: '@human-capital-management:employees.entities.employee.groups.organizational-structure' },\n { id: 'employmentProfile', title: '@human-capital-management:employees.entities.employee.groups.employment-profile' },\n ],\n properties: [\n {\n name: 'id',\n title: 'ID',\n groupId: 'personalInformation',\n schema: { dataType: 'uuid', hidden: true, nullable: false, readonly: true, unique: { enabled: true } },\n },\n {\n name: 'employeeCode',\n title: '@human-capital-management:employees.entities.employee.fields.employee-code',\n groupId: 'employmentProfile',\n schema: { dataType: 'string', interface: { type: AXPWidgetsCatalog.text } },\n options: { sort: { enabled: true }, filter: { advance: { enabled: true }, inline: { enabled: true } } },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'roleId',\n title: '@human-capital-management:employees.entities.employee.fields.role-id',\n groupId: 'organizationalStructure',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `OrganizationManagement.Role`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'role.id' },\n { source: 'title', target: 'role.title' },\n ],\n },\n },\n },\n options: { sort: { enabled: true }, filter: { advance: { enabled: true }, inline: { enabled: true } } },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'employmentTypeId',\n title: '@human-capital-management:employees.entities.employee.fields.employment-type-id',\n groupId: 'employmentProfile',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.employmentType.name}`,\n textField: 'title',\n valueField: 'id',\n look: 'select',\n expose: [\n { source: 'id', target: 'employmentType.id' },\n { source: 'title', target: 'employmentType.title' },\n ],\n },\n },\n },\n options: { sort: { enabled: true }, filter: { advance: { enabled: true }, inline: { enabled: true } } },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'hireDate',\n title: '@human-capital-management:employees.entities.employee.fields.hire-date',\n groupId: 'employmentProfile',\n schema: { dataType: 'date', interface: { type: AXPWidgetsCatalog.dateTime } },\n options: { sort: { enabled: true }, filter: { advance: { enabled: true }, inline: { enabled: true } } },\n validations: [{ rule: 'required' }],\n },\n ],\n columns: [\n {\n name: 'party.displayName',\n title: '@general:terms.common.display-name',\n showAs: { type: AXPWidgetsCatalog.text },\n },\n {\n name: 'party.primaryContact',\n title: '@general:terms.communication.email',\n options: { width: '350px' },\n showAs: { type: AXPWidgetsCatalog.contact, options: { type: 'email' } },\n },\n // { name: 'party.mobile', title: '@general:terms.communication.mobile', options: { width: '250px' }, showAs: { type: AXPWidgetsCatalog.contact, options: { type: 'phone' } } },\n { name: 'user.username', title: '@general:terms.contact.username', showAs: { type: AXPWidgetsCatalog.text } },\n { name: 'employeeCode' },\n { name: 'roleId', options: { dataPath: 'role.title' } },\n { name: 'employmentTypeId', options: { dataPath: 'employmentType.title' } },\n { name: 'hireDate' },\n ],\n commands: {\n create: { execute: async (data) => ({ id: await dataService.insertOne(data) }) },\n delete: { execute: async (id) => await dataService.deleteOne(id) },\n update: { execute: async (data) => await dataService.updateOne(data.id, data) },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n const item = await dataService.getOne(id);\n return item;\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n console.log('Employee List Query', e);\n return await dataService.query(e);\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'personalInformation' }, { id: 'organizationalStructure' }, { id: 'employmentProfile' }],\n properties: [\n { name: 'employeeCode', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'roleId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'employmentTypeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'hireDate', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n },\n update: {\n sections: [{ id: 'personalInformation' }, { id: 'organizationalStructure' }, { id: 'employmentProfile' }],\n properties: [\n { name: 'employeeCode', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'roleId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'employmentTypeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'hireDate', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n },\n single: {\n title: '{{party.displayName}}',\n sections: [\n { id: 'personalInformation', order: 2, layout: { positions: { lg: { colSpan: 12 } } } },\n { id: 'employmentProfile', order: 3, layout: { positions: { lg: { colSpan: 12 } } } },\n { id: 'organizationalStructure', order: 4, layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n properties: [\n { name: 'employeeCode', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'roleId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'employmentTypeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'hireDate', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView({ sorts: [{ name: 'party.displayName', dir: 'asc' }] })],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wbG95ZWUuZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2h1bWFuLWNhcGl0YWwtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2VtcGxveWVlL2VtcGxveWVlLmVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFhLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUYsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLHlCQUF5QixHQUMxQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEYsTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLENBQUMsUUFBa0I7SUFDOUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBRWpGLE1BQU0sU0FBUyxHQUFjO1FBQzNCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUk7UUFDdkMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUs7UUFDekMsSUFBSSxFQUFFLHNCQUFzQjtRQUM1QixPQUFPLEVBQUU7WUFDUCxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSztZQUM5QyxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEs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RUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFO3FCQUNwRTtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxHQUFHLHlCQUF5QixFQUFFLENBQUM7aUJBQzFDO2dCQUNELElBQUksRUFBRTtvQkFDSixPQUFPLEVBQUUsQ0FBQyxHQUFHLHVCQUF1QixFQUFFLENBQUM7b0JBQ3ZDLEtBQUssRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUNwRjthQUNGO1NBQ0Y7S0FDRixDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldHNMaXN0IH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBFbnRpdHksIEFYUEVudGl0eVF1ZXJ5VHlwZSwgY3JlYXRlQWxsUXVlcnlWaWV3IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHtcbiAgZW50aXR5RGV0YWlsc0NydWRBY3Rpb25zLFxuICBlbnRpdHlEZXRhaWxzU2ltcGxlQ29uZGl0aW9uLFxuICBlbnRpdHlNYXN0ZXJDcnVkQWN0aW9ucyxcbiAgZW50aXR5TWFzdGVyUmVjb3JkQWN0aW9ucyxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5pbXBvcnQgeyBBWE1IdW1hbkNhcGl0YWxNYW5hZ2VtZW50RW1wbG95ZWVFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi9lbXBsb3llZS5zZXJ2aWNlJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogUHJvbWlzZTxBWFBFbnRpdHkgfCBudWxsPiB7XG4gIGNvbnN0IGRhdGFTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEFYTUh1bWFuQ2FwaXRhbE1hbmFnZW1lbnRFbXBsb3llZUVudGl0eVNlcnZpY2UpO1xuXG4gIGNvbnN0IGVudGl0eURlZjogQVhQRW50aXR5ID0ge1xuICAgIG1vZHVsZTogUm9vdENvbmZpZy5tb2R1bGUubmFtZSxcbiAgICBuYW1lOiBSb290Q29uZmlnLmVudGl0aWVzLmVtcGxveWVlLm5hbWUsXG4gICAgdGl0bGU6IFJvb3RDb25maWcuZW50aXRpZXMuZW1wbG95ZWUudGl0bGUsXG4gICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWJ1aWxkaW5nJyxcbiAgICBmb3JtYXRzOiB7XG4gICAgICBpbmRpdmlkdWFsOiBSb290Q29uZmlnLmVudGl0aWVzLmVtcGxveWVlLnRpdGxlLFxuICAgICAgcGx1cmFsOiBSb290Q29uZmlnLmVudGl0aWVzLmVtcGxveWVlLnRpdGxlUGx1cmFsLFxuICAgICAgZGlzcGxheU5hbWU6ICdFbXBsb3ltZW50IEluZm9ybWF0aW9uJyxcbiAgICAgIHNlYXJjaFJlc3VsdDogeyB0aXRsZTogJ3t7IHBhcnR5LmRpc3BsYXlOYW1lIH19JywgZGVzY3JpcHRpb246IFJvb3RDb25maWcubW9kdWxlLnRpdGxlIH0sXG4gICAgfSxcbiAgICBwbHVnaW5zOiBbXG4gICAgICB7IG5hbWU6ICdpZGVudGlmaWVyJywgb3B0aW9uczogeyBmaWVsZDogJ2VtcGxveWVlQ29kZScsIHJ1bGU6ICdlbXBsb3llZS1jb2RlJyB9IH0sXG4gICAgICB7IG5hbWU6ICdoaXN0b3J5JyB9LFxuICAgICAgeyBuYW1lOiAnbG9jaycgfSxcbiAgICAgIHsgbmFtZTogJ2NvbXBhcmUnIH0sXG4gICAgICB7IG5hbWU6ICdleHRyYS1wcm9wZXJ0aWVzJyB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYXR0YWNobWVudHMnLFxuICAgICAgICBvcHRpb25zOiB7IGZpZWxkOiAnaW1hZ2VJZCcsIGFjY2VwdDogJy5qcGcsLmpwZWcsLnBuZywucGRmJywgbXVsdGlwbGU6IHRydWUsIGZpbGVFZGl0YWJsZTogdHJ1ZSB9LFxuICAgICAgfSxcbiAgICAgIHsgbmFtZTogJ2FyY2hpdmUnIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjb21wdXRlZC1wcm9wZXJ0eScsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ21hbmFnZXInLFxuICAgICAgICAgICAgICB0aXRsZTogJ0BodW1hbi1jYXBpdGFsLW1hbmFnZW1lbnQ6ZW1wbG95ZWVzLmVudGl0aWVzLmVtcGxveWVlLmZpZWxkcy5tYW5hZ2VyJyxcbiAgICAgICAgICAgICAgdmFsdWU6IFwie3sgY29udGV4dC5ldmFsKCdtYW5hZ2VyLnBhcnR5LmRpc3BsYXlOYW1lJykgfX1cIixcbiAgICAgICAgICAgICAgZ3JvdXA6IHsgaWQ6ICdvcmdhbml6YXRpb25hbFN0cnVjdHVyZScgfSxcbiAgICAgICAgICAgICAgc2hvd0FzOiB7IHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdhY3RpdmVQb3NpdGlvbicsXG4gICAgICAgICAgICAgIHRpdGxlOiAnQGh1bWFuLWNhcGl0YWwtbWFuYWdlbWVudDplbXBsb3llZXMuZW50aXRpZXMuZW1wbG95ZWUuZmllbGRzLmFjdGl2ZS1wb3NpdGlvbicsXG4gICAgICAgICAgICAgIHZhbHVlOiAnRW5naW5lZXJpbmcgTWFuYWdlciAocGxhY2Vob2xkZXIpJyxcbiAgICAgICAgICAgICAgZ3JvdXA6IHsgaWQ6ICdvcmdhbml6YXRpb25hbFN0cnVjdHVyZScgfSxcbiAgICAgICAgICAgICAgc2hvd0FzOiB7IHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtcbiAgICAgIHtcbiAgICAgICAgZW50aXR5OiBgUGFydHlNYW5hZ2VtZW50LlBhcnR5YCxcbiAgICAgICAgdGl0bGU6ICdQZXJzb25hbCBJbmZvcm1hdGlvbicsXG4gICAgICAgIGNvbmRpdGlvbnM6IFt7IG5hbWU6ICdpZCcsIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSwgdmFsdWU6ICd7eyBjb250ZXh0LmV2YWwoXCJwYXJ0eUlkXCIpIH19JyB9XSxcbiAgICAgICAgbGF5b3V0OiB7IHR5cGU6ICdtZXJnZS1kZXRhaWwnIH0sXG4gICAgICAgIHBlcnNpc3RlbmNlOiB7XG4gICAgICAgICAgZGF0YVBhdGg6ICdwYXJ0eScsXG4gICAgICAgICAgc3RyYXRlZ3k6ICdyZWZlcmVuY2VkJyxcbiAgICAgICAgICBpZEZpZWxkOiAncGFydHlJZCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbnRpdHk6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy5sZWF2ZVJlcXVlc3QubmFtZX1gLFxuICAgICAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5sZWF2ZVJlcXVlc3QudGl0bGVQbHVyYWwsXG4gICAgICAgIGNvbHVtbnM6IFsnbGVhdmVUeXBlSWQnLCAnc3RhcnREYXRlJywgJ2VuZERhdGUnLCAnZHVyYXRpb25EYXlzJywgJ3N0YXR1cycsICdyZWFzb24nXSxcbiAgICAgICAgY29uZGl0aW9uczogW2VudGl0eURldGFpbHNTaW1wbGVDb25kaXRpb24oJ2VtcGxveWVlSWQnKV0sXG4gICAgICAgIGFjdGlvbnM6IFsuLi5lbnRpdHlEZXRhaWxzQ3J1ZEFjdGlvbnMoJ2VtcGxveWVlSWQnKV0sXG4gICAgICAgIGxheW91dDogeyB0eXBlOiAncGFnZS1saXN0JywgcG9zaXRpb246ICdhZnRlcicsIG9yZGVyOiA0IH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbnRpdHk6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy5lbXBsb3llZVNraWxsLm5hbWV9YCxcbiAgICAgICAgdGl0bGU6ICdAaHVtYW4tY2FwaXRhbC1tYW5hZ2VtZW50OmVtcGxveWVlcy5lbnRpdGllcy5lbXBsb3llZS5yZWxhdGVkLWVudGl0aWVzLnNraWxscycsXG4gICAgICAgIGNvbHVtbnM6IFsnc2tpbGxJZCcsICdsZXZlbCcsICd5ZWFyc09mRXhwZXJpZW5jZScsICdsYXN0VXNlZERhdGUnXSxcbiAgICAgICAgY29uZGl0aW9uczogW2VudGl0eURldGFpbHNTaW1wbGVDb25kaXRpb24oJ2VtcGxveWVlSWQnKV0sXG4gICAgICAgIGFjdGlvbnM6IFsuLi5lbnRpdHlEZXRhaWxzQ3J1ZEFjdGlvbnMoJ2VtcGxveWVlSWQnKV0sXG4gICAgICAgIGxheW91dDogeyB0eXBlOiAncGFnZS1saXN0JywgcG9zaXRpb246ICdhZnRlcicsIG9yZGVyOiAyIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbnRpdHk6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy5wb3NpdGlvbkFzc2lnbm1lbnQubmFtZX1gLFxuICAgICAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5wb3NpdGlvbkFzc2lnbm1lbnQudGl0bGVQbHVyYWwsXG4gICAgICAgIGNvbHVtbnM6IFsncG9zaXRpb25JZCcsICdidXNpbmVzc1VuaXRJZCcsICdzdGFydERhdGUnLCAnZW5kRGF0ZScsICdpc1ByaW1hcnknXSxcbiAgICAgICAgY29uZGl0aW9uczogW2VudGl0eURldGFpbHNTaW1wbGVDb25kaXRpb24oJ2VtcGxveWVlSWQnKV0sXG4gICAgICAgIGFjdGlvbnM6IFsuLi5lbnRpdHlEZXRhaWxzQ3J1ZEFjdGlvbnMoJ2VtcGxveWVlSWQnKV0sXG4gICAgICAgIGxheW91dDogeyB0eXBlOiAncGFnZS1saXN0JywgcG9zaXRpb246ICdhZnRlcicsIG9yZGVyOiAzIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBlbnRpdHk6IGBTZWN1cml0eU1hbmFnZW1lbnQuVXNlcmAsXG4gICAgICAgIHRpdGxlOiAnU2VjdXJpdHkgSW5mb3JtYXRpb24nLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtbG9jaycsXG4gICAgICAgIGNvbmRpdGlvbnM6IFt7IG5hbWU6ICdpZCcsIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSwgdmFsdWU6ICd7eyBjb250ZXh0LmV2YWwoXCJ1c2VySWRcIikgfX0nIH1dLFxuICAgICAgICBsYXlvdXQ6IHsgdHlwZTogJ3BhZ2UtZGV0YWlsJywgcG9zaXRpb246ICdhZnRlcicsIG9yZGVyOiAxIH0sXG4gICAgICAgIHBlcnNpc3RlbmNlOiB7XG4gICAgICAgICAgZGF0YVBhdGg6ICd1c2VyJyxcbiAgICAgICAgICBzdHJhdGVneTogJ3JlZmVyZW5jZWQnLFxuICAgICAgICAgIGlkRmllbGQ6ICd1c2VySWQnLFxuICAgICAgICAgIGh5ZHJhdGU6ICdlYWdlcicsXG4gICAgICAgICAgbWFwOiB7XG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogJyRwYXJlbnQucGFydHkuZGlzcGxheU5hbWUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgZ3JvdXBzOiBbXG4gICAgICB7IGlkOiAnb3JnYW5pemF0aW9uYWxTdHJ1Y3R1cmUnLCB0aXRsZTogJ0BodW1hbi1jYXBpdGFsLW1hbmFnZW1lbnQ6ZW1wbG95ZWVzLmVudGl0aWVzLmVtcGxveWVlLmdyb3Vwcy5vcmdhbml6YXRpb25hbC1zdHJ1Y3R1cmUnIH0sXG4gICAgICB7IGlkOiAnZW1wbG95bWVudFByb2ZpbGUnLCB0aXRsZTogJ0BodW1hbi1jYXBpdGFsLW1hbmFnZW1lbnQ6ZW1wbG95ZWVzLmVudGl0aWVzLmVtcGxveWVlLmdyb3Vwcy5lbXBsb3ltZW50LXByb2ZpbGUnIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgIHRpdGxlOiAnSUQnLFxuICAgICAgICBncm91cElkOiAncGVyc29uYWxJbmZvcm1hdGlvbicsXG4gICAgICAgIHNjaGVtYTogeyBkYXRhVHlwZTogJ3V1aWQnLCBoaWRkZW46IHRydWUsIG51bGxhYmxlOiBmYWxzZSwgcmVhZG9ubHk6IHRydWUsIHVuaXF1ZTogeyBlbmFibGVkOiB0cnVlIH0gfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbXBsb3llZUNvZGUnLFxuICAgICAgICB0aXRsZTogJ0BodW1hbi1jYXBpdGFsLW1hbmFnZW1lbnQ6ZW1wbG95ZWVzLmVudGl0aWVzLmVtcGxveWVlLmZpZWxkcy5lbXBsb3llZS1jb2RlJyxcbiAgICAgICAgZ3JvdXBJZDogJ2VtcGxveW1lbnRQcm9maWxlJyxcbiAgICAgICAgc2NoZW1hOiB7IGRhdGFUeXBlOiAnc3RyaW5nJywgaW50ZXJmYWNlOiB7IHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQgfSB9LFxuICAgICAgICBvcHRpb25zOiB7IHNvcnQ6IHsgZW5hYmxlZDogdHJ1ZSB9LCBmaWx0ZXI6IHsgYWR2YW5jZTogeyBlbmFibGVkOiB0cnVlIH0sIGlubGluZTogeyBlbmFibGVkOiB0cnVlIH0gfSB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyb2xlSWQnLFxuICAgICAgICB0aXRsZTogJ0BodW1hbi1jYXBpdGFsLW1hbmFnZW1lbnQ6ZW1wbG95ZWVzLmVudGl0aWVzLmVtcGxveWVlLmZpZWxkcy5yb2xlLWlkJyxcbiAgICAgICAgZ3JvdXBJZDogJ29yZ2FuaXphdGlvbmFsU3RydWN0dXJlJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0xpc3QuRWRpdG9ycy5Mb29rdXBCb3gsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGVudGl0eTogYE9yZ2FuaXphdGlvbk1hbmFnZW1lbnQuUm9sZWAsXG4gICAgICAgICAgICAgIHRleHRGaWVsZDogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2lkJyxcbiAgICAgICAgICAgICAgbG9vazogJ3NlbGVjdCcsXG4gICAgICAgICAgICAgIGV4cG9zZTogW1xuICAgICAgICAgICAgICAgIHsgc291cmNlOiAnaWQnLCB0YXJnZXQ6ICdyb2xlLmlkJyB9LFxuICAgICAgICAgICAgICAgIHsgc291cmNlOiAndGl0bGUnLCB0YXJnZXQ6ICdyb2xlLnRpdGxlJyB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zOiB7IHNvcnQ6IHsgZW5hYmxlZDogdHJ1ZSB9LCBmaWx0ZXI6IHsgYWR2YW5jZTogeyBlbmFibGVkOiB0cnVlIH0sIGlubGluZTogeyBlbmFibGVkOiB0cnVlIH0gfSB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW3sgcnVsZTogJ3JlcXVpcmVkJyB9XSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdlbXBsb3ltZW50VHlwZUlkJyxcbiAgICAgICAgdGl0bGU6ICdAaHVtYW4tY2FwaXRhbC1tYW5hZ2VtZW50OmVtcGxveWVlcy5lbnRpdGllcy5lbXBsb3llZS5maWVsZHMuZW1wbG95bWVudC10eXBlLWlkJyxcbiAgICAgICAgZ3JvdXBJZDogJ2VtcGxveW1lbnRQcm9maWxlJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0xpc3QuRWRpdG9ycy5Mb29rdXBCb3gsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGVudGl0eTogYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLmVtcGxveW1lbnRUeXBlLm5hbWV9YCxcbiAgICAgICAgICAgICAgdGV4dEZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICB2YWx1ZUZpZWxkOiAnaWQnLFxuICAgICAgICAgICAgICBsb29rOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgZXhwb3NlOiBbXG4gICAgICAgICAgICAgICAgeyBzb3VyY2U6ICdpZCcsIHRhcmdldDogJ2VtcGxveW1lbnRUeXBlLmlkJyB9LFxuICAgICAgICAgICAgICAgIHsgc291cmNlOiAndGl0bGUnLCB0YXJnZXQ6ICdlbXBsb3ltZW50VHlwZS50aXRsZScgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczogeyBzb3J0OiB7IGVuYWJsZWQ6IHRydWUgfSwgZmlsdGVyOiB7IGFkdmFuY2U6IHsgZW5hYmxlZDogdHJ1ZSB9LCBpbmxpbmU6IHsgZW5hYmxlZDogdHJ1ZSB9IH0gfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFt7IHJ1bGU6ICdyZXF1aXJlZCcgfV0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnaGlyZURhdGUnLFxuICAgICAgICB0aXRsZTogJ0BodW1hbi1jYXBpdGFsLW1hbmFnZW1lbnQ6ZW1wbG95ZWVzLmVudGl0aWVzLmVtcGxveWVlLmZpZWxkcy5oaXJlLWRhdGUnLFxuICAgICAgICBncm91cElkOiAnZW1wbG95bWVudFByb2ZpbGUnLFxuICAgICAgICBzY2hlbWE6IHsgZGF0YVR5cGU6ICdkYXRlJywgaW50ZXJmYWNlOiB7IHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLmRhdGVUaW1lIH0gfSxcbiAgICAgICAgb3B0aW9uczogeyBzb3J0OiB7IGVuYWJsZWQ6IHRydWUgfSwgZmlsdGVyOiB7IGFkdmFuY2U6IHsgZW5hYmxlZDogdHJ1ZSB9LCBpbmxpbmU6IHsgZW5hYmxlZDogdHJ1ZSB9IH0gfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFt7IHJ1bGU6ICdyZXF1aXJlZCcgfV0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29sdW1uczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAncGFydHkuZGlzcGxheU5hbWUnLFxuICAgICAgICB0aXRsZTogJ0BnZW5lcmFsOnRlcm1zLmNvbW1vbi5kaXNwbGF5LW5hbWUnLFxuICAgICAgICBzaG93QXM6IHsgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3BhcnR5LnByaW1hcnlDb250YWN0JyxcbiAgICAgICAgdGl0bGU6ICdAZ2VuZXJhbDp0ZXJtcy5jb21tdW5pY2F0aW9uLmVtYWlsJyxcbiAgICAgICAgb3B0aW9uczogeyB3aWR0aDogJzM1MHB4JyB9LFxuICAgICAgICBzaG93QXM6IHsgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuY29udGFjdCwgb3B0aW9uczogeyB0eXBlOiAnZW1haWwnIH0gfSxcbiAgICAgIH0sXG4gICAgICAvLyB7IG5hbWU6ICdwYXJ0eS5tb2JpbGUnLCB0aXRsZTogJ0BnZW5lcmFsOnRlcm1zLmNvbW11bmljYXRpb24ubW9iaWxlJywgb3B0aW9uczogeyB3aWR0aDogJzI1MHB4JyB9LCBzaG93QXM6IHsgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuY29udGFjdCwgb3B0aW9uczogeyB0eXBlOiAncGhvbmUnIH0gfSB9LFxuICAgICAgeyBuYW1lOiAndXNlci51c2VybmFtZScsIHRpdGxlOiAnQGdlbmVyYWw6dGVybXMuY29udGFjdC51c2VybmFtZScsIHNob3dBczogeyB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0IH0gfSxcbiAgICAgIHsgbmFtZTogJ2VtcGxveWVlQ29kZScgfSxcbiAgICAgIHsgbmFtZTogJ3JvbGVJZCcsIG9wdGlvbnM6IHsgZGF0YVBhdGg6ICdyb2xlLnRpdGxlJyB9IH0sXG4gICAgICB7IG5hbWU6ICdlbXBsb3ltZW50VHlwZUlkJywgb3B0aW9uczogeyBkYXRhUGF0aDogJ2VtcGxveW1lbnRUeXBlLnRpdGxlJyB9IH0sXG4gICAgICB7IG5hbWU6ICdoaXJlRGF0ZScgfSxcbiAgICBdLFxuICAgIGNvbW1hbmRzOiB7XG4gICAgICBjcmVhdGU6IHsgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4gKHsgaWQ6IGF3YWl0IGRhdGFTZXJ2aWNlLmluc2VydE9uZShkYXRhKSB9KSB9LFxuICAgICAgZGVsZXRlOiB7IGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiBhd2FpdCBkYXRhU2VydmljZS5kZWxldGVPbmUoaWQpIH0sXG4gICAgICB1cGRhdGU6IHsgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpIH0sXG4gICAgfSxcbiAgICBxdWVyaWVzOiB7XG4gICAgICBieUtleToge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBkYXRhU2VydmljZS5nZXRPbmUoaWQpO1xuICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuU2luZ2xlLFxuICAgICAgfSxcbiAgICAgIGxpc3Q6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFbXBsb3llZSBMaXN0IFF1ZXJ5JywgZSk7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnF1ZXJ5KGUpO1xuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBBWFBFbnRpdHlRdWVyeVR5cGUuTGlzdCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbnRlcmZhY2VzOiB7XG4gICAgICBtYXN0ZXI6IHtcbiAgICAgICAgY3JlYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFt7IGlkOiAncGVyc29uYWxJbmZvcm1hdGlvbicgfSwgeyBpZDogJ29yZ2FuaXphdGlvbmFsU3RydWN0dXJlJyB9LCB7IGlkOiAnZW1wbG95bWVudFByb2ZpbGUnIH1dLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcbiAgICAgICAgICAgIHsgbmFtZTogJ2VtcGxveWVlQ29kZScsIGxheW91dDogeyBwb3NpdGlvbnM6IHsgbGc6IHsgY29sU3BhbjogNiB9IH0gfSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAncm9sZUlkJywgbGF5b3V0OiB7IHBvc2l0aW9uczogeyBsZzogeyBjb2xTcGFuOiA2IH0gfSB9IH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdlbXBsb3ltZW50VHlwZUlkJywgbGF5b3V0OiB7IHBvc2l0aW9uczogeyBsZzogeyBjb2xTcGFuOiA2IH0gfSB9IH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdoaXJlRGF0ZScsIGxheW91dDogeyBwb3NpdGlvbnM6IHsgbGc6IHsgY29sU3BhbjogNiB9IH0gfSB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbeyBpZDogJ3BlcnNvbmFsSW5mb3JtYXRpb24nIH0sIHsgaWQ6ICdvcmdhbml6YXRpb25hbFN0cnVjdHVyZScgfSwgeyBpZDogJ2VtcGxveW1lbnRQcm9maWxlJyB9XSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7IG5hbWU6ICdlbXBsb3llZUNvZGUnLCBsYXlvdXQ6IHsgcG9zaXRpb25zOiB7IGxnOiB7IGNvbFNwYW46IDYgfSB9IH0gfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3JvbGVJZCcsIGxheW91dDogeyBwb3NpdGlvbnM6IHsgbGc6IHsgY29sU3BhbjogNiB9IH0gfSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZW1wbG95bWVudFR5cGVJZCcsIGxheW91dDogeyBwb3NpdGlvbnM6IHsgbGc6IHsgY29sU3BhbjogNiB9IH0gfSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnaGlyZURhdGUnLCBsYXlvdXQ6IHsgcG9zaXRpb25zOiB7IGxnOiB7IGNvbFNwYW46IDYgfSB9IH0gfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBzaW5nbGU6IHtcbiAgICAgICAgICB0aXRsZTogJ3t7cGFydHkuZGlzcGxheU5hbWV9fScsXG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHsgaWQ6ICdwZXJzb25hbEluZm9ybWF0aW9uJywgb3JkZXI6IDIsIGxheW91dDogeyBwb3NpdGlvbnM6IHsgbGc6IHsgY29sU3BhbjogMTIgfSB9IH0gfSxcbiAgICAgICAgICAgIHsgaWQ6ICdlbXBsb3ltZW50UHJvZmlsZScsIG9yZGVyOiAzLCBsYXlvdXQ6IHsgcG9zaXRpb25zOiB7IGxnOiB7IGNvbFNwYW46IDEyIH0gfSB9IH0sXG4gICAgICAgICAgICB7IGlkOiAnb3JnYW5pemF0aW9uYWxTdHJ1Y3R1cmUnLCBvcmRlcjogNCwgbGF5b3V0OiB7IHBvc2l0aW9uczogeyBsZzogeyBjb2xTcGFuOiAxMiB9IH0gfSB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAgeyBuYW1lOiAnZW1wbG95ZWVDb2RlJywgbGF5b3V0OiB7IHBvc2l0aW9uczogeyBsZzogeyBjb2xTcGFuOiA2IH0gfSB9IH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdyb2xlSWQnLCBsYXlvdXQ6IHsgcG9zaXRpb25zOiB7IGxnOiB7IGNvbFNwYW46IDYgfSB9IH0gfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2VtcGxveW1lbnRUeXBlSWQnLCBsYXlvdXQ6IHsgcG9zaXRpb25zOiB7IGxnOiB7IGNvbFNwYW46IDYgfSB9IH0gfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2hpcmVEYXRlJywgbGF5b3V0OiB7IHBvc2l0aW9uczogeyBsZzogeyBjb2xTcGFuOiA2IH0gfSB9IH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbLi4uZW50aXR5TWFzdGVyUmVjb3JkQWN0aW9ucygpXSxcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgIGFjdGlvbnM6IFsuLi5lbnRpdHlNYXN0ZXJDcnVkQWN0aW9ucygpXSxcbiAgICAgICAgICB2aWV3czogW2NyZWF0ZUFsbFF1ZXJ5Vmlldyh7IHNvcnRzOiBbeyBuYW1lOiAncGFydHkuZGlzcGxheU5hbWUnLCBkaXI6ICdhc2MnIH1dIH0pXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICByZXR1cm4gZW50aXR5RGVmO1xufVxuIl19"],"names":[],"mappings":"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"}
|
package/fesm2022/acorex-modules-notification-management-notification-page.component-m8d9pc0D.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-modules-notification-management-notification-page.component-m8d9pc0D.mjs","sources":["../tmp-esm2022/notification-management/lib/features/components/notification-page/notification-page.component.js"],"sourcesContent":["import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXSlidingItemModule } from '@acorex/components/sliding-item';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPStateMessageComponent, AXPThemeLayoutBlockComponent, AXPUserAvatarComponent } from '@acorex/platform/layout/components';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXContextMenuComponent, } from '@acorex/components/menu';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPNotificationDefinitionService } from '../../shared/notification-definition.service';\nimport { AXMNotificationConnectorService } from '../../shared/notification-management.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"@acorex/components/check-box\";\nimport * as i5 from \"@acorex/components/skeleton\";\nimport * as i6 from \"@acorex/components/button\";\nimport * as i7 from \"@acorex/components/badge\";\nimport * as i8 from \"@acorex/components/dropdown\";\nimport * as i9 from \"@acorex/components/search-box\";\nimport * as i10 from \"@acorex/components/label\";\nimport * as i11 from \"@acorex/components/sliding-item\";\nimport * as i12 from \"@acorex/core/format\";\n//#region ---- Component Definition ----\nexport class AXMNotificationPageComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n //#region ---- Services & Dependencies ----\n this.layoutThemeService = inject(AXPLayoutThemeService);\n this.connector = inject(AXMNotificationConnectorService);\n this.definitionService = inject(AXPNotificationDefinitionService);\n //#endregion\n //#region ---- State & Computed Properties ----\n this.loading = this.connector.loading;\n this.errorMessage = this.connector.errorMessage;\n this.notifications = this.connector.notificationList;\n this.unreadCount = this.connector.unreadCount;\n this.totalCount = this.connector.total;\n // Local UI state\n this.searchQuery = signal('', ...(ngDevMode ? [{ debugName: \"searchQuery\" }] : []));\n this.isEditing = signal(false, ...(ngDevMode ? [{ debugName: \"isEditing\" }] : []));\n this.contextMenu = viewChild('contextMenu', ...(ngDevMode ? [{ debugName: \"contextMenu\" }] : []));\n // #isEditingEff = effect(() => {\n // if (this.isEditing() && this.selectedIds().size === 0) {\n // this.isEditing.set(false);\n // }\n // });\n this.filteredNotifications = computed(() => {\n const query = (this.searchQuery() || '').toLowerCase().trim();\n const items = this.notifications();\n if (!query) {\n return this.activeTab() === 'unread' ? items.filter((n) => !n.readAt) : items;\n }\n const base = this.activeTab() === 'unread' ? items.filter((n) => !n.readAt) : items;\n return base.filter((n) => {\n const title = (n.title || '').toLowerCase();\n const body = (n.body || '').toLowerCase();\n const sender = (n.sender?.fullName || '').toLowerCase();\n return title.includes(query) || body.includes(query) || sender.includes(query);\n });\n }, ...(ngDevMode ? [{ debugName: \"filteredNotifications\" }] : []));\n // Tab state: 'all' | 'unread'\n this.tab = signal('all', ...(ngDevMode ? [{ debugName: \"tab\" }] : []));\n this.activeTab = computed(() => this.tab(), ...(ngDevMode ? [{ debugName: \"activeTab\" }] : []));\n // Selection state for bulk actions\n this.selectedIds = signal(new Set(), ...(ngDevMode ? [{ debugName: \"selectedIds\" }] : []));\n this.selectedCount = computed(() => this.selectedIds().size, ...(ngDevMode ? [{ debugName: \"selectedCount\" }] : []));\n this.contextItem = signal(null, ...(ngDevMode ? [{ debugName: \"contextItem\" }] : []));\n }\n selectedTab() {\n return this.tab();\n }\n setTab(v) {\n this.tab.set(v);\n }\n onTabChange(index) {\n this.tab.set(index === 1 ? 'unread' : 'all');\n }\n //#endregion\n //#region ---- Page Interface Methods ----\n async getPageTitle() {\n return 'Notifications';\n }\n getPageDescription() {\n const unread = this.unreadCount();\n const total = this.totalCount();\n if (!total) {\n return 'No notifications';\n }\n return unread > 0 ? `${unread} unread out of ${total}` : `${total} notifications`;\n }\n async getPrimaryMenuItems() {\n const items = [];\n if (this.selectedCount() > 0) {\n items.push({\n title: 'Delete',\n icon: 'fa-light fa-trash',\n command: { name: 'delete-selected' },\n color: 'danger',\n });\n items.push({\n title: 'Mark as read',\n icon: 'fa-light fa-envelopes-bulk',\n command: { name: 'mark-selected-as-read' },\n color: 'primary',\n });\n }\n return items;\n }\n async getSecondaryMenuItems() {\n const items = [];\n if (this.selectedCount() === 0) {\n items.push({\n title: 'Refresh',\n icon: 'fa-light fa-rotate',\n command: { name: 'refresh' },\n }, {\n title: 'Mark all as read',\n icon: 'fa-light fa-envelopes-bulk',\n command: { name: 'mark-all-as-read' },\n disabled: this.unreadCount() === 0,\n }, {\n title: 'Select items',\n icon: 'fa-light fa-pen',\n command: { name: 'edit-mode' },\n color: 'primary',\n });\n }\n return items;\n }\n async execute(command) {\n switch (command.name) {\n case 'refresh':\n await this.onRefresh();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'delete-selected':\n await this.deleteSelected();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'mark-selected-as-read':\n await this.markSelectedAsRead();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'mark-all-as-read':\n await this.onMarkAllAsRead();\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n break;\n case 'edit-mode':\n if (this.isEditing()) {\n this.deselectAll();\n this.isEditing.set(false);\n }\n else {\n this.isEditing.set(true);\n }\n break;\n }\n }\n //#endregion\n //#region ---- UI Handlers ----\n onSearch(value) {\n this.searchQuery.set(value);\n }\n onClearSearch() {\n this.searchQuery.set('');\n }\n async onRefresh() {\n await this.connector.getList();\n }\n async onMarkAllAsRead() {\n await this.connector.markAllAsRead();\n }\n isSelected(id) {\n return this.selectedIds().has(id);\n }\n toggleSelectionWithModel(id, checked) {\n const next = new Set(this.selectedIds());\n if (checked) {\n next.add(id);\n }\n else {\n next.delete(id);\n }\n this.selectedIds.set(next);\n }\n isAllSelected() {\n const items = this.filteredNotifications();\n return items.length > 0 && items.every((i) => this.selectedIds().has(i.id));\n }\n toggleSelectAll(event) {\n const checked = event.target.checked;\n if (checked) {\n this.selectedIds.set(new Set(this.filteredNotifications().map((i) => i.id)));\n }\n else {\n this.selectedIds.set(new Set());\n }\n }\n async markSelectedAsRead(item) {\n const ids = item ? [item.id] : Array.from(this.selectedIds());\n if (ids.length === 0)\n return;\n await this.connector.markAsRead({ id: ids });\n this.selectedIds.set(new Set());\n }\n async deleteSelected(item) {\n const ids = item ? [item.id] : Array.from(this.selectedIds());\n if (ids.length === 0)\n return;\n for (const id of ids) {\n await this.connector.deleteOne(id);\n }\n this.selectedIds.set(new Set());\n }\n deselectAll() {\n if (this.selectedCount() > 0) {\n this.selectedIds.set(new Set());\n }\n if (this.isEditing()) {\n this.isEditing.set(false);\n }\n }\n // Row interactions\n onRowClick(id) {\n this.toggleSelectionById(id);\n }\n async openItem(id) {\n if (this.isEditing()) {\n this.toggleSelectionById(id);\n return;\n }\n //avoid double click on selected items\n if (this.selectedCount() > 0) {\n return;\n }\n const item = this.notifications().find((n) => n.id === id);\n if (!item) {\n return;\n }\n // Mark as read (idempotent per service logic)\n await this.connector.markAsRead({ id: [id] });\n // Execute provider click action if available\n const provider = this.definitionService.resolve(item.type);\n await provider?.execute?.({ name: 'click' }, item);\n }\n toggleSelectionById(id) {\n const next = new Set(this.selectedIds());\n if (next.has(id)) {\n next.delete(id);\n }\n else {\n next.add(id);\n }\n this.selectedIds.set(next);\n }\n //#endregion\n slidingItemsHandler(item, action) {\n switch (action) {\n case 'mark-as-read':\n this.markSelectedAsRead(item);\n break;\n case 'delete':\n this.deleteSelected(item);\n break;\n }\n }\n handleContextMenuItemClick(e) {\n const item = this.contextItem();\n if (!item) {\n return;\n }\n switch (e.item.name) {\n case 'mark-as-read':\n this.markSelectedAsRead(item);\n break;\n case 'delete':\n this.deleteSelected(item);\n break;\n }\n }\n handleContextMenuOpening(e) {\n e.items = [\n {\n name: 'mark-as-read',\n text: 'Mark as read',\n icon: 'fa-light fa-envelopes-bulk',\n color: 'primary',\n },\n ];\n e.items.push({\n name: 'delete',\n text: 'Delete',\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n });\n }\n openContextMenu(e, item) {\n if (this.isEditing() || this.selectedCount() > 0) {\n return;\n }\n e.preventDefault();\n this.contextMenu()?.showAt({\n x: e.clientX,\n y: e.clientY,\n });\n this.contextItem.set(item);\n }\n //#region ---- Helper Methods for State Message ----\n getNotificationIcon() {\n if (this.searchQuery()) {\n return 'fa-solid fa-magnifying-glass';\n }\n else if (this.activeTab() === 'unread') {\n return 'fa-solid fa-check-circle';\n }\n else {\n return 'fa-solid fa-bell';\n }\n }\n getNotificationTitle() {\n if (this.searchQuery()) {\n return '@notification-management:state-message.no-results.title';\n }\n else if (this.activeTab() === 'unread') {\n return '@notification-management:state-message.all-caught-up.title';\n }\n else {\n return '@notification-management:state-message.no-notifications.title';\n }\n }\n getNotificationDescription() {\n if (this.searchQuery()) {\n return `We couldn't find anything matching \"${this.searchQuery()}\".`;\n }\n else if (this.activeTab() === 'unread') {\n return '@notification-management:state-message.all-caught-up.description';\n }\n else {\n return '@notification-management:state-message.no-notifications.description';\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.10\", ngImport: i0, type: AXMNotificationPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.10\", type: AXMNotificationPageComponent, isStandalone: true, selector: \"axm-notification-page\", host: { listeners: { \"document:keydown.escape\": \"deselectAll()\" } }, providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMNotificationPageComponent,\n },\n ], viewQueries: [{ propertyName: \"contextMenu\", first: true, predicate: [\"contextMenu\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <axp-page-layout>\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (selectedCount() > 0 || isEditing()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">{{ selectedCount() }} items selected</span>\n <span (click)=\"deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\"\n >Unselect</span\n >\n </div>\n } @else {\n <ax-button [text]=\"activeTab() === 'all' ? 'All Notifications' : 'Unread Notifications'\">\n <ax-dropdown-panel >\n <ax-button-item-list class=\"ax-min-w-52\">\n <ax-button-item\n [text]=\"'All notifications'\"\n [selected]=\"activeTab() === 'all'\"\n (onClick)=\"setTab('all')\"\n ></ax-button-item>\n <ax-button-item\n [text]=\"'Unread Notifications'\"\n [selected]=\"activeTab() === 'unread'\"\n (onClick)=\"setTab('unread')\"\n >\n <ax-suffix>\n <ax-badge [text]=\"unreadCount().toString()\" [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-search-box\n look=\"solid\"\n [placeholder]=\"'Search notifications'\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n </axp-layout-prefix>\n <!-- <axp-layout-suffix>\n @if (selectedCount() > 0) {\n <div class=\"ax-flex ax-gap-2\">\n @if (activeTab() === 'unread') {\n <ax-button [text]=\"'Mark as read'\" (onClick)=\"markSelectedAsRead()\"></ax-button>\n }\n <ax-button look=\"outline\" color=\"danger\" [text]=\"'Delete'\" (onClick)=\"deleteSelected()\"></ax-button>\n </div>\n }\n </axp-layout-suffix> -->\n </axp-page-toolbar>\n <axp-page-content>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <!-- List -->\n @if (loading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (filteredNotifications().length === 0) {\n <axp-state-message\n mode=\"empty\"\n [icon]=\"getNotificationIcon()\"\n [title]=\"getNotificationTitle()\"\n [description]=\"getNotificationDescription()\"\n >\n @if (searchQuery()) {\n <ax-button slot=\"actions\" look=\"outline\" [text]=\"'Clear search'\" (onClick)=\"onClearSearch()\"></ax-button>\n }\n </axp-state-message>\n } @else {\n <div>\n @for (item of filteredNotifications(); track item.id) {\n @if (layoutThemeService.isMobileDevice()) {\n <ng-container\n #contextMenuContainer\n [ngTemplateOutlet]=\"mobile\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"desktop\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n }\n }\n </div>\n }\n </div>\n </axp-page-content>\n </axp-page-layout>\n\n <ng-template #mobile let-item>\n <ax-sliding-item class=\"ax-h-24\">\n <!-- <ax-sliding-item-prefix (onClick)=\"clickHandler($event)\" color=\"danger\" text=\"delete\">\n <ax-icon class=\"fa-solid fa-trash\"></ax-icon>\n </ax-sliding-item-prefix> -->\n\n <ax-content class=\"!ax-p-0\">\n <div\n class=\"ax-select-none ax-flex ax-size-full ax-mb-2 ax-gap-3 ax-py-2 ax-px-4 ax-items-center ax-rounded-md ax-cursor-pointer ax-line-clamp-2\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ax-content>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'mark-as-read')\" color=\"primary\">\n <ax-icon class=\"fa-light fa-envelopes-bulk fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'delete')\" color=\"danger\">\n <ax-icon class=\"fa-light fa-trash-can fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n </ax-sliding-item>\n </ng-template>\n\n <ng-template #desktop let-item>\n <div\n class=\"ax-flex ax-gap-3 ax-p-4 ax-items-center ax-rounded-md ax-cursor-pointer hover:ax-bg-surface ax-mb-2 last:ax-mb-0\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n <!-- @if (isSelected(item.id)) {\n <div class=\"ax-w-1 ax-self-stretch ax-rounded ax-bg-primary\"></div>\n } -->\n <!-- Select via checkbox -->\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ng-template>\n <ax-context-menu\n #contextMenu\n [openOn]=\"'click'\"\n [closeOn]=\"'click'\"\n [orientation]=\"'horizontal'\"\n (onOpening)=\"handleContextMenuOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i4.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"isLoading\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i5.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i6.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i6.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i6.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i7.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"look\", \"text\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i8.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i9.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"component\", type: AXPUserAvatarComponent, selector: \"axp-user-avatar\", inputs: [\"size\", \"userId\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"component\", type: AXPStateMessageComponent, selector: \"axp-state-message\", inputs: [\"mode\", \"icon\", \"title\", \"description\", \"variant\"] }, { kind: \"component\", type: AXContextMenuComponent, selector: \"ax-context-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"target\"], outputs: [\"onItemClick\", \"onOpening\"] }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"component\", type: i10.AXLabelComponent, selector: \"ax-label\", inputs: [\"required\", \"for\"], outputs: [\"requiredChange\"] }, { kind: \"ngmodule\", type: AXSlidingItemModule }, { kind: \"component\", type: i11.AXSlidingItemComponent, selector: \"ax-sliding-item\" }, { kind: \"component\", type: i11.AXSlidingItemSuffixComponent, selector: \"ax-sliding-item-suffix\", inputs: [\"color\", \"text\"], outputs: [\"onClick\"] }, { kind: \"pipe\", type: i2.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i12.AXFormatPipe, name: \"format\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.10\", ngImport: i0, type: AXMNotificationPageComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axm-notification-page',\n template: `\n <axp-page-layout>\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (selectedCount() > 0 || isEditing()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">{{ selectedCount() }} items selected</span>\n <span (click)=\"deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\"\n >Unselect</span\n >\n </div>\n } @else {\n <ax-button [text]=\"activeTab() === 'all' ? 'All Notifications' : 'Unread Notifications'\">\n <ax-dropdown-panel >\n <ax-button-item-list class=\"ax-min-w-52\">\n <ax-button-item\n [text]=\"'All notifications'\"\n [selected]=\"activeTab() === 'all'\"\n (onClick)=\"setTab('all')\"\n ></ax-button-item>\n <ax-button-item\n [text]=\"'Unread Notifications'\"\n [selected]=\"activeTab() === 'unread'\"\n (onClick)=\"setTab('unread')\"\n >\n <ax-suffix>\n <ax-badge [text]=\"unreadCount().toString()\" [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <ax-search-box\n look=\"solid\"\n [placeholder]=\"'Search notifications'\"\n [value]=\"searchQuery()\"\n (onValueChanged)=\"onSearch($event.value)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n }\n </axp-layout-prefix>\n <!-- <axp-layout-suffix>\n @if (selectedCount() > 0) {\n <div class=\"ax-flex ax-gap-2\">\n @if (activeTab() === 'unread') {\n <ax-button [text]=\"'Mark as read'\" (onClick)=\"markSelectedAsRead()\"></ax-button>\n }\n <ax-button look=\"outline\" color=\"danger\" [text]=\"'Delete'\" (onClick)=\"deleteSelected()\"></ax-button>\n </div>\n }\n </axp-layout-suffix> -->\n </axp-page-toolbar>\n <axp-page-content>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <!-- List -->\n @if (loading()) {\n <div class=\"ax-p-4 ax-space-y-4\">\n @for (_ of [1, 2, 3, 4, 5, 6]; track $index) {\n <div class=\"ax-flex ax-items-center ax-space-x-3\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-12 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex-1 ax-space-y-2\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-3/4 ax-h-4 ax-rounded-md\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-3 ax-rounded-md\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n } @else if (filteredNotifications().length === 0) {\n <axp-state-message\n mode=\"empty\"\n [icon]=\"getNotificationIcon()\"\n [title]=\"getNotificationTitle()\"\n [description]=\"getNotificationDescription()\"\n >\n @if (searchQuery()) {\n <ax-button slot=\"actions\" look=\"outline\" [text]=\"'Clear search'\" (onClick)=\"onClearSearch()\"></ax-button>\n }\n </axp-state-message>\n } @else {\n <div>\n @for (item of filteredNotifications(); track item.id) {\n @if (layoutThemeService.isMobileDevice()) {\n <ng-container\n #contextMenuContainer\n [ngTemplateOutlet]=\"mobile\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n } @else {\n <ng-container\n [ngTemplateOutlet]=\"desktop\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n }\n }\n </div>\n }\n </div>\n </axp-page-content>\n </axp-page-layout>\n\n <ng-template #mobile let-item>\n <ax-sliding-item class=\"ax-h-24\">\n <!-- <ax-sliding-item-prefix (onClick)=\"clickHandler($event)\" color=\"danger\" text=\"delete\">\n <ax-icon class=\"fa-solid fa-trash\"></ax-icon>\n </ax-sliding-item-prefix> -->\n\n <ax-content class=\"!ax-p-0\">\n <div\n class=\"ax-select-none ax-flex ax-size-full ax-mb-2 ax-gap-3 ax-py-2 ax-px-4 ax-items-center ax-rounded-md ax-cursor-pointer ax-line-clamp-2\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ax-content>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'mark-as-read')\" color=\"primary\">\n <ax-icon class=\"fa-light fa-envelopes-bulk fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n\n <ax-sliding-item-suffix (onClick)=\"slidingItemsHandler(item, 'delete')\" color=\"danger\">\n <ax-icon class=\"fa-light fa-trash-can fa-xl\"></ax-icon>\n </ax-sliding-item-suffix>\n </ax-sliding-item>\n </ng-template>\n\n <ng-template #desktop let-item>\n <div\n class=\"ax-flex ax-gap-3 ax-p-4 ax-items-center ax-rounded-md ax-cursor-pointer hover:ax-bg-surface ax-mb-2 last:ax-mb-0\"\n [class.ax-bg-lighter]=\"isSelected(item.id)\"\n [id]=\"item.id\"\n (click)=\"openItem(item.id)\"\n (contextmenu)=\"openContextMenu($event, item)\"\n >\n <!-- @if (isSelected(item.id)) {\n <div class=\"ax-w-1 ax-self-stretch ax-rounded ax-bg-primary\"></div>\n } -->\n <!-- Select via checkbox -->\n @if (isEditing()) {\n <ax-check-box\n class=\"ax-mt-1\"\n [ngModel]=\"isSelected(item.id)\"\n (ngModelChange)=\"toggleSelectionWithModel(item.id, $event)\"\n >\n <ax-label></ax-label>\n </ax-check-box>\n }\n <!-- Avatar + Unread Dot -->\n <div class=\"ax-relative ax-w-12 ax-flex ax-items-center ax-justify-center\">\n <axp-user-avatar [size]=\"48\" [userId]=\"item.sender.id\"></axp-user-avatar>\n @if (!item.readAt) {\n <span class=\"ax-absolute ax-right-0 ax-top-0 ax-block ax-h-3 ax-w-3 ax-rounded-full\"></span>\n }\n </div>\n\n <!-- Content -->\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1 ax-justify-center\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-medium\" [class.ax-font-semibold]=\"!item.readAt\">\n {{ item.sender.fullName || item.title }}\n </div>\n <span>•</span>\n <div class=\"ax-text-xs ax-opacity-75\">\n {{ item.createAt | format: 'timeleft' | async }}\n </div>\n </div>\n </div>\n <div class=\"ax-text-sm ax-line-clamp-2\">{{ item.body }}</div>\n </div>\n <!-- Actions (future: per-item kebab) -->\n </div>\n </ng-template>\n <ax-context-menu\n #contextMenu\n [openOn]=\"'click'\"\n [closeOn]=\"'click'\"\n [orientation]=\"'horizontal'\"\n (onOpening)=\"handleContextMenuOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMNotificationPageComponent,\n },\n ],\n host: {\n '(document:keydown.escape)': 'deselectAll()',\n },\n imports: [\n AXDecoratorModule,\n CommonModule,\n FormsModule,\n AXFormatModule,\n AXCheckBoxModule,\n AXSkeletonModule,\n AXButtonModule,\n AXBadgeModule,\n AXDropdownModule,\n AXDropdownButtonModule,\n AXSearchBoxModule,\n AXPUserAvatarComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPStateMessageComponent,\n AXContextMenuComponent,\n AXLabelModule,\n AXSlidingItemModule,\n ],\n }]\n }], propDecorators: { contextMenu: [{ type: i0.ViewChild, args: ['contextMenu', { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL25vdGlmaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvY29tcG9uZW50cy9ub3RpZmljYXRpb24tcGFnZS9ub3RpZmljYXRpb24tcGFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFB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QUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJOVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsOEJBQThCO3lCQUMxQztxQkFDRjtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osMkJBQTJCLEVBQUUsZUFBZTtxQkFDN0M7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1Qix3QkFBd0I7d0JBQ3hCLHNCQUFzQjt3QkFDdEIsYUFBYTt3QkFDYixtQkFBbUI7cUJBQ3BCO2lCQUNGO3lFQXFCMkQsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFkZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQ2hlY2tCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY2hlY2stYm94JztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWExhYmVsTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xhYmVsJztcbmltcG9ydCB7IEFYU2VhcmNoQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NlYXJjaC1ib3gnO1xuaW1wb3J0IHsgQVhTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9za2VsZXRvbic7XG5pbXBvcnQgeyBBWFNsaWRpbmdJdGVtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NsaWRpbmctaXRlbSc7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhQQWN0aW9uTWVudUl0ZW0sIEFYUEV4ZWN1dGVDb21tYW5kIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUFN0YXRlTWVzc2FnZUNvbXBvbmVudCwgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCwgQVhQVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQUGFnZUxheW91dEJhc2UsIEFYUFBhZ2VMYXlvdXRCYXNlQ29tcG9uZW50LCBBWFBQYWdlTGF5b3V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvdmlld3MnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgQVhDb250ZXh0TWVudUNvbXBvbmVudCxcbiAgQVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudCxcbiAgQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IEFYTU5vdGlmaWNhdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgQVhQTm90aWZpY2F0aW9uRGVmaW5pdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbm90aWZpY2F0aW9uLWRlZmluaXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBWE1Ob3RpZmljYXRpb25Db25uZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL25vdGlmaWNhdGlvbi1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuXG4vLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCBEZWZpbml0aW9uICAgLS0tLVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheG0tbm90aWZpY2F0aW9uLXBhZ2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxheHAtcGFnZS1sYXlvdXQ+XG4gICAgICA8YXhwLXBhZ2UtdG9vbGJhcj5cbiAgICAgICAgPGF4cC1sYXlvdXQtcHJlZml4PlxuICAgICAgICAgIEBpZiAoc2VsZWN0ZWRDb3VudCgpID4gMCB8fCBpc0VkaXRpbmcoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTMgYXgtaXRlbXMtY2VudGVyIGF4LWgtMTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhsIGF4LWZvbnQtYm9sZFwiPnt7IHNlbGVjdGVkQ291bnQoKSB9fSBpdGVtcyBzZWxlY3RlZDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImRlc2VsZWN0QWxsKClcIiBjbGFzcz1cImF4LXRleHQtc20gYXgtdGV4dC1zZWNvbmRhcnkgYXgtdW5kZXJsaW5lIGF4LWN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICA+VW5zZWxlY3Q8L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cImFjdGl2ZVRhYigpID09PSAnYWxsJyA/ICdBbGwgTm90aWZpY2F0aW9ucycgOiAnVW5yZWFkIE5vdGlmaWNhdGlvbnMnXCI+XG4gICAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbCA+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3QgY2xhc3M9XCJheC1taW4tdy01MlwiPlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIidBbGwgbm90aWZpY2F0aW9ucydcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiYWN0aXZlVGFiKCkgPT09ICdhbGwnXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwic2V0VGFiKCdhbGwnKVwiXG4gICAgICAgICAgICAgICAgICA+PC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCInVW5yZWFkIE5vdGlmaWNhdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImFjdGl2ZVRhYigpID09PSAndW5yZWFkJ1wiXG4gICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInNldFRhYigndW5yZWFkJylcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgICAgICAgICAgIDxheC1iYWRnZSBbdGV4dF09XCJ1bnJlYWRDb3VudCgpLnRvU3RyaW5nKClcIiBbY29sb3JdPVwiJ3ByaW1hcnknXCI+PC9heC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuXG4gICAgICAgICAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgICAgICAgICBsb29rPVwic29saWRcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlYXJjaCBub3RpZmljYXRpb25zJ1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWFyY2hRdWVyeSgpXCJcbiAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uU2VhcmNoKCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgICAgICBjbGFzcz1cImF4LXctNzIgYXgtaGlkZGVuIG1kOmF4LWZsZXhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPlxuICAgICAgICAgICAgPC9heC1zZWFyY2gtYm94PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9heHAtbGF5b3V0LXByZWZpeD5cbiAgICAgICAgPCEtLSA8YXhwLWxheW91dC1zdWZmaXg+XG4gICAgICAgICAgQGlmIChzZWxlY3RlZENvdW50KCkgPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMlwiPlxuICAgICAgICAgICAgICBAaWYgKGFjdGl2ZVRhYigpID09PSAndW5yZWFkJykge1xuICAgICAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwiJ01hcmsgYXMgcmVhZCdcIiAob25DbGljayk9XCJtYXJrU2VsZWN0ZWRBc1JlYWQoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cIm91dGxpbmVcIiBjb2xvcj1cImRhbmdlclwiIFt0ZXh0XT1cIidEZWxldGUnXCIgKG9uQ2xpY2spPVwiZGVsZXRlU2VsZWN0ZWQoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2F4cC1sYXlvdXQtc3VmZml4PiAtLT5cbiAgICAgIDwvYXhwLXBhZ2UtdG9vbGJhcj5cbiAgICAgIDxheHAtcGFnZS1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNFwiPlxuICAgICAgICAgIDwhLS0gTGlzdCAtLT5cbiAgICAgICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXAtNCBheC1zcGFjZS15LTRcIj5cbiAgICAgICAgICAgICAgQGZvciAoXyBvZiBbMSwgMiwgMywgNCwgNSwgNl07IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1zcGFjZS14LTNcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBbYW5pbWF0ZWRdPVwidHJ1ZVwiIGNsYXNzPVwiYXgtdy0xMiBheC1oLTEyIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0xIGF4LXNwYWNlLXktMlwiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cInRydWVcIiBjbGFzcz1cImF4LXctMy80IGF4LWgtNCBheC1yb3VuZGVkLW1kXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJ0cnVlXCIgY2xhc3M9XCJheC13LTEvMiBheC1oLTMgYXgtcm91bmRlZC1tZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoZmlsdGVyZWROb3RpZmljYXRpb25zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8YXhwLXN0YXRlLW1lc3NhZ2VcbiAgICAgICAgICAgICAgbW9kZT1cImVtcHR5XCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiZ2V0Tm90aWZpY2F0aW9uSWNvbigpXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cImdldE5vdGlmaWNhdGlvblRpdGxlKClcIlxuICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiZ2V0Tm90aWZpY2F0aW9uRGVzY3JpcHRpb24oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoc2VhcmNoUXVlcnkoKSkge1xuICAgICAgICAgICAgICAgIDxheC1idXR0b24gc2xvdD1cImFjdGlvbnNcIiBsb29rPVwib3V0bGluZVwiIFt0ZXh0XT1cIidDbGVhciBzZWFyY2gnXCIgKG9uQ2xpY2spPVwib25DbGVhclNlYXJjaCgpXCI+PC9heC1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYXhwLXN0YXRlLW1lc3NhZ2U+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGZpbHRlcmVkTm90aWZpY2F0aW9ucygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgQGlmIChsYXlvdXRUaGVtZVNlcnZpY2UuaXNNb2JpbGVEZXZpY2UoKSkge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAjY29udGV4dE1lbnVDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkZXNrdG9wXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXhwLXBhZ2UtY29udGVudD5cbiAgICA8L2F4cC1wYWdlLWxheW91dD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbW9iaWxlIGxldC1pdGVtPlxuICAgICAgPGF4LXNsaWRpbmctaXRlbSBjbGFzcz1cImF4LWgtMjRcIj5cbiAgICAgICAgPCEtLSA8YXgtc2xpZGluZy1pdGVtLXByZWZpeCAob25DbGljayk9XCJjbGlja0hhbmRsZXIoJGV2ZW50KVwiIGNvbG9yPVwiZGFuZ2VyXCIgdGV4dD1cImRlbGV0ZVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtdHJhc2hcIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtc2xpZGluZy1pdGVtLXByZWZpeD4gLS0+XG5cbiAgICAgICAgPGF4LWNvbnRlbnQgY2xhc3M9XCIhYXgtcC0wXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheC1zZWxlY3Qtbm9uZSBheC1mbGV4IGF4LXNpemUtZnVsbCBheC1tYi0yIGF4LWdhcC0zIGF4LXB5LTIgYXgtcHgtNCBheC1pdGVtcy1jZW50ZXIgYXgtcm91bmRlZC1tZCBheC1jdXJzb3ItcG9pbnRlciBheC1saW5lLWNsYW1wLTJcIlxuICAgICAgICAgICAgW2NsYXNzLmF4LWJnLWxpZ2h0ZXJdPVwiaXNTZWxlY3RlZChpdGVtLmlkKVwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwib3Blbkl0ZW0oaXRlbS5pZClcIlxuICAgICAgICAgICAgKGNvbnRleHRtZW51KT1cIm9wZW5Db250ZXh0TWVudSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGlzRWRpdGluZygpKSB7XG4gICAgICAgICAgICAgIDxheC1jaGVjay1ib3hcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LW10LTFcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImlzU2VsZWN0ZWQoaXRlbS5pZClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbldpdGhNb2RlbChpdGVtLmlkLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxheC1sYWJlbD48L2F4LWxhYmVsPlxuICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwhLS0gQXZhdGFyICsgVW5yZWFkIERvdCAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yZWxhdGl2ZSBheC13LTEyIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxheHAtdXNlci1hdmF0YXIgW3NpemVdPVwiNDhcIiBbdXNlcklkXT1cIml0ZW0uc2VuZGVyLmlkXCI+PC9heHAtdXNlci1hdmF0YXI+XG4gICAgICAgICAgICAgIEBpZiAoIWl0ZW0ucmVhZEF0KSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1hYnNvbHV0ZSBheC1yaWdodC0wIGF4LXRvcC0wIGF4LWJsb2NrIGF4LWgtMyBheC13LTMgYXgtcm91bmRlZC1mdWxsXCI+PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBDb250ZW50IC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTEgYXgtZmxleC0xIGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mb250LW1lZGl1bVwiIFtjbGFzcy5heC1mb250LXNlbWlib2xkXT1cIiFpdGVtLnJlYWRBdFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnNlbmRlci5mdWxsTmFtZSB8fCBpdGVtLnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPuKAojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhzIGF4LW9wYWNpdHktNzVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5jcmVhdGVBdCB8IGZvcm1hdDogJ3RpbWVsZWZ0JyB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXNtIGF4LWxpbmUtY2xhbXAtMlwiPnt7IGl0ZW0uYm9keSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIEFjdGlvbnMgKGZ1dHVyZTogcGVyLWl0ZW0ga2ViYWIpIC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2F4LWNvbnRlbnQ+XG5cbiAgICAgICAgPGF4LXNsaWRpbmctaXRlbS1zdWZmaXggKG9uQ2xpY2spPVwic2xpZGluZ0l0ZW1zSGFuZGxlcihpdGVtLCAnbWFyay1hcy1yZWFkJylcIiBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLWVudmVsb3Blcy1idWxrIGZhLXhsXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LXNsaWRpbmctaXRlbS1zdWZmaXg+XG5cbiAgICAgICAgPGF4LXNsaWRpbmctaXRlbS1zdWZmaXggKG9uQ2xpY2spPVwic2xpZGluZ0l0ZW1zSGFuZGxlcihpdGVtLCAnZGVsZXRlJylcIiBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtdHJhc2gtY2FuIGZhLXhsXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LXNsaWRpbmctaXRlbS1zdWZmaXg+XG4gICAgICA8L2F4LXNsaWRpbmctaXRlbT5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkZXNrdG9wIGxldC1pdGVtPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTMgYXgtcC00IGF4LWl0ZW1zLWNlbnRlciBheC1yb3VuZGVkLW1kIGF4LWN1cnNvci1wb2ludGVyIGhvdmVyOmF4LWJnLXN1cmZhY2UgYXgtbWItMiBsYXN0OmF4LW1iLTBcIlxuICAgICAgICBbY2xhc3MuYXgtYmctbGlnaHRlcl09XCJpc1NlbGVjdGVkKGl0ZW0uaWQpXCJcbiAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAoY2xpY2spPVwib3Blbkl0ZW0oaXRlbS5pZClcIlxuICAgICAgICAoY29udGV4dG1lbnUpPVwib3BlbkNvbnRleHRNZW51KCRldmVudCwgaXRlbSlcIlxuICAgICAgPlxuICAgICAgICA8IS0tIEBpZiAoaXNTZWxlY3RlZChpdGVtLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdy0xIGF4LXNlbGYtc3RyZXRjaCBheC1yb3VuZGVkIGF4LWJnLXByaW1hcnlcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH0gLS0+XG4gICAgICAgIDwhLS0gU2VsZWN0IHZpYSBjaGVja2JveCAtLT5cbiAgICAgICAgQGlmIChpc0VkaXRpbmcoKSkge1xuICAgICAgICAgICAgICA8YXgtY2hlY2stYm94XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1tdC0xXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJpc1NlbGVjdGVkKGl0ZW0uaWQpXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVTZWxlY3Rpb25XaXRoTW9kZWwoaXRlbS5pZCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXgtbGFiZWw+PC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgPC9heC1jaGVjay1ib3g+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwhLS0gQXZhdGFyICsgVW5yZWFkIERvdCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJlbGF0aXZlIGF4LXctMTIgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8YXhwLXVzZXItYXZhdGFyIFtzaXplXT1cIjQ4XCIgW3VzZXJJZF09XCJpdGVtLnNlbmRlci5pZFwiPjwvYXhwLXVzZXItYXZhdGFyPlxuICAgICAgICAgIEBpZiAoIWl0ZW0ucmVhZEF0KSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWFic29sdXRlIGF4LXJpZ2h0LTAgYXgtdG9wLTAgYXgtYmxvY2sgYXgtaC0zIGF4LXctMyBheC1yb3VuZGVkLWZ1bGxcIj48L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LWZsZXgtMSBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMlwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZm9udC1tZWRpdW1cIiBbY2xhc3MuYXgtZm9udC1zZW1pYm9sZF09XCIhaXRlbS5yZWFkQXRcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnNlbmRlci5mdWxsTmFtZSB8fCBpdGVtLnRpdGxlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3Bhbj7igKI8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhzIGF4LW9wYWNpdHktNzVcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLmNyZWF0ZUF0IHwgZm9ybWF0OiAndGltZWxlZnQnIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1zbSBheC1saW5lLWNsYW1wLTJcIj57eyBpdGVtLmJvZHkgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQWN0aW9ucyAoZnV0dXJlOiBwZXItaXRlbSBrZWJhYikgLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxheC1jb250ZXh0LW1lbnVcbiAgICAgICNjb250ZXh0TWVudVxuICAgICAgW29wZW5Pbl09XCInY2xpY2snXCJcbiAgICAgIFtjbG9zZU9uXT1cIidjbGljaydcIlxuICAgICAgW29yaWVudGF0aW9uXT1cIidob3Jpem9udGFsJ1wiXG4gICAgICAob25PcGVuaW5nKT1cImhhbmRsZUNvbnRleHRNZW51T3BlbmluZygkZXZlbnQpXCJcbiAgICAgIChvbkl0ZW1DbGljayk9XCJoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICA+XG4gICAgPC9heC1jb250ZXh0LW1lbnU+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBQYWdlTGF5b3V0QmFzZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBBWE1Ob3RpZmljYXRpb25QYWdlQ29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnKGRvY3VtZW50OmtleWRvd24uZXNjYXBlKSc6ICdkZXNlbGVjdEFsbCgpJyxcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWEZvcm1hdE1vZHVsZSxcbiAgICBBWENoZWNrQm94TW9kdWxlLFxuICAgIEFYU2tlbGV0b25Nb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhTZWFyY2hCb3hNb2R1bGUsXG4gICAgQVhQVXNlckF2YXRhckNvbXBvbmVudCxcbiAgICBBWFBQYWdlTGF5b3V0Q29tcG9uZW50LFxuICAgIEFYUFRoZW1lTGF5b3V0QmxvY2tDb21wb25lbnQsXG4gICAgQVhQU3RhdGVNZXNzYWdlQ29tcG9uZW50LFxuICAgIEFYQ29udGV4dE1lbnVDb21wb25lbnQsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWFNsaWRpbmdJdGVtTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Ob3RpZmljYXRpb25QYWdlQ29tcG9uZW50IGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQge1xuICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICYgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBsYXlvdXRUaGVtZVNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0VGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0b3IgPSBpbmplY3QoQVhNTm90aWZpY2F0aW9uQ29ubmVjdG9yU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmaW5pdGlvblNlcnZpY2UgPSBpbmplY3QoQVhQTm90aWZpY2F0aW9uRGVmaW5pdGlvblNlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgU3RhdGUgJiBDb21wdXRlZCBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIHJlYWRvbmx5IGxvYWRpbmcgPSB0aGlzLmNvbm5lY3Rvci5sb2FkaW5nO1xuICByZWFkb25seSBlcnJvck1lc3NhZ2UgPSB0aGlzLmNvbm5lY3Rvci5lcnJvck1lc3NhZ2U7XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbnMgPSB0aGlzLmNvbm5lY3Rvci5ub3RpZmljYXRpb25MaXN0O1xuICByZWFkb25seSB1bnJlYWRDb3VudCA9IHRoaXMuY29ubmVjdG9yLnVucmVhZENvdW50O1xuICByZWFkb25seSB0b3RhbENvdW50ID0gdGhpcy5jb25uZWN0b3IudG90YWw7XG5cbiAgLy8gTG9jYWwgVUkgc3RhdGVcbiAgcmVhZG9ubHkgc2VhcmNoUXVlcnkgPSBzaWduYWwoJycpO1xuICBwcm90ZWN0ZWQgaXNFZGl0aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIGNvbnRleHRNZW51ID0gdmlld0NoaWxkPEFYQ29udGV4dE1lbnVDb21wb25lbnQ+KCdjb250ZXh0TWVudScpO1xuICAvLyAjaXNFZGl0aW5nRWZmID0gZWZmZWN0KCgpID0+IHtcbiAgLy8gaWYgKHRoaXMuaXNFZGl0aW5nKCkgJiYgdGhpcy5zZWxlY3RlZElkcygpLnNpemUgPT09IDApIHtcbiAgLy8gICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAvLyB9XG4gIC8vIH0pO1xuXG4gIHJlYWRvbmx5IGZpbHRlcmVkTm90aWZpY2F0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBxdWVyeSA9ICh0aGlzLnNlYXJjaFF1ZXJ5KCkgfHwgJycpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5ub3RpZmljYXRpb25zKCk7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVGFiKCkgPT09ICd1bnJlYWQnID8gaXRlbXMuZmlsdGVyKChuKSA9PiAhbi5yZWFkQXQpIDogaXRlbXM7XG4gICAgfVxuICAgIGNvbnN0IGJhc2UgPSB0aGlzLmFjdGl2ZVRhYigpID09PSAndW5yZWFkJyA/IGl0ZW1zLmZpbHRlcigobikgPT4gIW4ucmVhZEF0KSA6IGl0ZW1zO1xuICAgIHJldHVybiBiYXNlLmZpbHRlcigobikgPT4ge1xuICAgICAgY29uc3QgdGl0bGUgPSAobi50aXRsZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGJvZHkgPSAobi5ib2R5IHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3Qgc2VuZGVyID0gKG4uc2VuZGVyPy5mdWxsTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiB0aXRsZS5pbmNsdWRlcyhxdWVyeSkgfHwgYm9keS5pbmNsdWRlcyhxdWVyeSkgfHwgc2VuZGVyLmluY2x1ZGVzKHF1ZXJ5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gVGFiIHN0YXRlOiAnYWxsJyB8ICd1bnJlYWQnXG4gIHByaXZhdGUgcmVhZG9ubHkgdGFiID0gc2lnbmFsPCdhbGwnIHwgJ3VucmVhZCc+KCdhbGwnKTtcbiAgcmVhZG9ubHkgYWN0aXZlVGFiID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50YWIoKSk7XG4gIHNlbGVjdGVkVGFiKCk6ICdhbGwnIHwgJ3VucmVhZCcge1xuICAgIHJldHVybiB0aGlzLnRhYigpO1xuICB9XG4gIHNldFRhYih2OiAnYWxsJyB8ICd1bnJlYWQnKTogdm9pZCB7XG4gICAgdGhpcy50YWIuc2V0KHYpO1xuICB9XG5cbiAgb25UYWJDaGFuZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudGFiLnNldChpbmRleCA9PT0gMSA/ICd1bnJlYWQnIDogJ2FsbCcpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQYWdlIEludGVyZmFjZSBNZXRob2RzICAgLS0tLVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFBhZ2VUaXRsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiAnTm90aWZpY2F0aW9ucyc7XG4gIH1cblxuICBvdmVycmlkZSBnZXRQYWdlRGVzY3JpcHRpb24oKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bnJlYWQgPSB0aGlzLnVucmVhZENvdW50KCk7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsQ291bnQoKTtcbiAgICBpZiAoIXRvdGFsKSB7XG4gICAgICByZXR1cm4gJ05vIG5vdGlmaWNhdGlvbnMnO1xuICAgIH1cbiAgICByZXR1cm4gdW5yZWFkID4gMCA/IGAke3VucmVhZH0gdW5yZWFkIG91dCBvZiAke3RvdGFsfWAgOiBgJHt0b3RhbH0gbm90aWZpY2F0aW9uc2A7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRQcmltYXJ5TWVudUl0ZW1zKCk6IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIGNvbnN0IGl0ZW1zOiBBWFBBY3Rpb25NZW51SXRlbVtdID0gW107XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudCgpID4gMCkge1xuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnRGVsZXRlJyxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXRyYXNoJyxcbiAgICAgICAgY29tbWFuZDogeyBuYW1lOiAnZGVsZXRlLXNlbGVjdGVkJyB9LFxuICAgICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICB9KTtcbiAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICB0aXRsZTogJ01hcmsgYXMgcmVhZCcsXG4gICAgICAgIGljb246ICdmYS1saWdodCBmYS1lbnZlbG9wZXMtYnVsaycsXG4gICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ21hcmstc2VsZWN0ZWQtYXMtcmVhZCcgfSxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRTZWNvbmRhcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgY29uc3QgaXRlbXM6IEFYUEFjdGlvbk1lbnVJdGVtW10gPSBbXTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvdW50KCkgPT09IDApIHtcbiAgICAgIGl0ZW1zLnB1c2goXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ1JlZnJlc2gnLFxuICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1yb3RhdGUnLFxuICAgICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ3JlZnJlc2gnIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogJ01hcmsgYWxsIGFzIHJlYWQnLFxuICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1lbnZlbG9wZXMtYnVsaycsXG4gICAgICAgICAgY29tbWFuZDogeyBuYW1lOiAnbWFyay1hbGwtYXMtcmVhZCcgfSxcbiAgICAgICAgICBkaXNhYmxlZDogdGhpcy51bnJlYWRDb3VudCgpID09PSAwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdTZWxlY3QgaXRlbXMnLFxuICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1wZW4nLFxuICAgICAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ2VkaXQtbW9kZScgfSxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGV4ZWN1dGUoY29tbWFuZDogQVhQRXhlY3V0ZUNvbW1hbmQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBzd2l0Y2ggKGNvbW1hbmQubmFtZSkge1xuICAgICAgY2FzZSAncmVmcmVzaCc6XG4gICAgICAgIGF3YWl0IHRoaXMub25SZWZyZXNoKCk7XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZS1zZWxlY3RlZCc6XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU2VsZWN0ZWQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWFyay1zZWxlY3RlZC1hcy1yZWFkJzpcbiAgICAgICAgYXdhaXQgdGhpcy5tYXJrU2VsZWN0ZWRBc1JlYWQoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgICAgICB0aGlzLmlzRWRpdGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWFyay1hbGwtYXMtcmVhZCc6XG4gICAgICAgIGF3YWl0IHRoaXMub25NYXJrQWxsQXNSZWFkKCk7XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VkaXQtbW9kZSc6XG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICAgICAgdGhpcy5kZXNlbGVjdEFsbCgpO1xuICAgICAgICAgIHRoaXMuaXNFZGl0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pc0VkaXRpbmcuc2V0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgVUkgSGFuZGxlcnMgICAtLS0tXG5cbiAgb25TZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoUXVlcnkuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIG9uQ2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hRdWVyeS5zZXQoJycpO1xuICB9XG5cbiAgYXN5bmMgb25SZWZyZXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdG9yLmdldExpc3QoKTtcbiAgfVxuXG4gIGFzeW5jIG9uTWFya0FsbEFzUmVhZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rvci5tYXJrQWxsQXNSZWFkKCk7XG4gIH1cblxuICAvLyBTZWxlY3Rpb24gc3RhdGUgZm9yIGJ1bGsgYWN0aW9uc1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkSWRzID0gc2lnbmFsPFNldDxzdHJpbmc+PihuZXcgU2V0PHN0cmluZz4oKSk7XG5cbiAgc2VsZWN0ZWRDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2VsZWN0ZWRJZHMoKS5zaXplKTtcbiAgaXNTZWxlY3RlZChpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJZHMoKS5oYXMoaWQpO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0aW9uV2l0aE1vZGVsKGlkOiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gbmV3IFNldCh0aGlzLnNlbGVjdGVkSWRzKCkpO1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXh0LmFkZChpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQuZGVsZXRlKGlkKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV4dCk7XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5maWx0ZXJlZE5vdGlmaWNhdGlvbnMoKTtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMCAmJiBpdGVtcy5ldmVyeSgoaSkgPT4gdGhpcy5zZWxlY3RlZElkcygpLmhhcyhpLmlkKSk7XG4gIH1cblxuICB0b2dnbGVTZWxlY3RBbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgY2hlY2tlZCA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV3IFNldCh0aGlzLmZpbHRlcmVkTm90aWZpY2F0aW9ucygpLm1hcCgoaSkgPT4gaS5pZCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV3IFNldCgpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBtYXJrU2VsZWN0ZWRBc1JlYWQoaXRlbT86IEFYTU5vdGlmaWNhdGlvbkl0ZW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpZHMgPSBpdGVtID8gW2l0ZW0uaWRdIDogQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkSWRzKCkpO1xuICAgIGlmIChpZHMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5jb25uZWN0b3IubWFya0FzUmVhZCh7IGlkOiBpZHMgfSk7XG4gICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV3IFNldCgpKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlbGVjdGVkKGl0ZW0/OiBBWE1Ob3RpZmljYXRpb25JdGVtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWRzID0gaXRlbSA/IFtpdGVtLmlkXSA6IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZElkcygpKTtcbiAgICBpZiAoaWRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGZvciAoY29uc3QgaWQgb2YgaWRzKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbm5lY3Rvci5kZWxldGVPbmUoaWQpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSWRzLnNldChuZXcgU2V0KCkpO1xuICB9XG5cbiAgZGVzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudCgpID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZElkcy5zZXQobmV3IFNldCgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMuaXNFZGl0aW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUm93IGludGVyYWN0aW9uc1xuICBvblJvd0NsaWNrKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkJ5SWQoaWQpO1xuICB9XG5cbiAgYXN5bmMgb3Blbkl0ZW0oaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzRWRpdGluZygpKSB7XG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkJ5SWQoaWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL2F2b2lkIGRvdWJsZSBjbGljayBvbiBzZWxlY3RlZCBpdGVtc1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ291bnQoKSA+IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXRlbSA9IHRoaXMubm90aWZpY2F0aW9ucygpLmZpbmQoKG4pID0+IG4uaWQgPT09IGlkKTtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gTWFyayBhcyByZWFkIChpZGVtcG90ZW50IHBlciBzZXJ2aWNlIGxvZ2ljKVxuICAgIGF3YWl0IHRoaXMuY29ubmVjdG9yLm1hcmtBc1JlYWQoeyBpZDogW2lkXSB9KTtcblxuICAgIC8vIEV4ZWN1dGUgcHJvdmlkZXIgY2xpY2sgYWN0aW9uIGlmIGF2YWlsYWJsZVxuICAgIGNvbnN0IHByb3ZpZGVyID0gdGhpcy5kZWZpbml0aW9uU2VydmljZS5yZXNvbHZlKGl0ZW0udHlwZSk7XG4gICAgYXdhaXQgcHJvdmlkZXI/LmV4ZWN1dGU/Lih7IG5hbWU6ICdjbGljaycgfSBhcyBBWFBFeGVjdXRlQ29tbWFuZCwgaXRlbSk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZVNlbGVjdGlvbkJ5SWQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRJZHMoKSk7XG4gICAgaWYgKG5leHQuaGFzKGlkKSkge1xuICAgICAgbmV4dC5kZWxldGUoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0LmFkZChpZCk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRJZHMuc2V0KG5leHQpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgc2xpZGluZ0l0ZW1zSGFuZGxlcihpdGVtOiBBWE1Ob3RpZmljYXRpb25JdGVtLCBhY3Rpb246ICdtYXJrLWFzLXJlYWQnIHwgJ2RlbGV0ZScpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSAnbWFyay1hcy1yZWFkJzpcbiAgICAgICAgdGhpcy5tYXJrU2VsZWN0ZWRBc1JlYWQoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgdGhpcy5kZWxldGVTZWxlY3RlZChpdGVtKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2soZTogQVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudCkge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnRleHRJdGVtKCk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZS5pdGVtLm5hbWUpIHtcbiAgICAgIGNhc2UgJ21hcmstYXMtcmVhZCc6XG4gICAgICAgIHRoaXMubWFya1NlbGVjdGVkQXNSZWFkKGl0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RlbGV0ZSc6XG4gICAgICAgIHRoaXMuZGVsZXRlU2VsZWN0ZWQoaXRlbSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBoYW5kbGVDb250ZXh0TWVudU9wZW5pbmcoZTogQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCkge1xuICAgIGUuaXRlbXMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdtYXJrLWFzLXJlYWQnLFxuICAgICAgICB0ZXh0OiAnTWFyayBhcyByZWFkJyxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWVudmVsb3Blcy1idWxrJyxcbiAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIH0sXG4gICAgXTtcbiAgICBlLml0ZW1zLnB1c2goe1xuICAgICAgbmFtZTogJ2RlbGV0ZScsXG4gICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS10cmFzaC1jYW4nLFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgIH0pO1xuICB9XG4gIHByb3RlY3RlZCBjb250ZXh0SXRlbSA9IHNpZ25hbDxBWE1Ob3RpZmljYXRpb25JdGVtIHwgbnVsbD4obnVsbCk7XG4gIG9wZW5Db250ZXh0TWVudShlOiBNb3VzZUV2ZW50LCBpdGVtOiBBWE1Ob3RpZmljYXRpb25JdGVtKSB7XG4gICAgaWYgKHRoaXMuaXNFZGl0aW5nKCkgfHwgdGhpcy5zZWxlY3RlZENvdW50KCkgPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmNvbnRleHRNZW51KCk/LnNob3dBdCh7XG4gICAgICB4OiBlLmNsaWVudFgsXG4gICAgICB5OiBlLmNsaWVudFksXG4gICAgfSk7XG4gICAgdGhpcy5jb250ZXh0SXRlbS5zZXQoaXRlbSk7XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEhlbHBlciBNZXRob2RzIGZvciBTdGF0ZSBNZXNzYWdlICAgLS0tLVxuXG4gIGdldE5vdGlmaWNhdGlvbkljb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5zZWFyY2hRdWVyeSgpKSB7XG4gICAgICByZXR1cm4gJ2ZhLXNvbGlkIGZhLW1hZ25pZnlpbmctZ2xhc3MnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVUYWIoKSA9PT0gJ3VucmVhZCcpIHtcbiAgICAgIHJldHVybiAnZmEtc29saWQgZmEtY2hlY2stY2lyY2xlJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdmYS1zb2xpZCBmYS1iZWxsJztcbiAgICB9XG4gIH1cblxuICBnZXROb3RpZmljYXRpb25UaXRsZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlYXJjaFF1ZXJ5KCkpIHtcbiAgICAgIHJldHVybiAnQG5vdGlmaWNhdGlvbi1tYW5hZ2VtZW50OnN0YXRlLW1lc3NhZ2Uubm8tcmVzdWx0cy50aXRsZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVRhYigpID09PSAndW5yZWFkJykge1xuICAgICAgcmV0dXJuICdAbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQ6c3RhdGUtbWVzc2FnZS5hbGwtY2F1Z2h0LXVwLnRpdGxlJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdAbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQ6c3RhdGUtbWVzc2FnZS5uby1ub3RpZmljYXRpb25zLnRpdGxlJztcbiAgICB9XG4gIH1cblxuICBnZXROb3RpZmljYXRpb25EZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlYXJjaFF1ZXJ5KCkpIHtcbiAgICAgIHJldHVybiBgV2UgY291bGRuJ3QgZmluZCBhbnl0aGluZyBtYXRjaGluZyBcIiR7dGhpcy5zZWFyY2hRdWVyeSgpfVwiLmA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVRhYigpID09PSAndW5yZWFkJykge1xuICAgICAgcmV0dXJuICdAbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQ6c3RhdGUtbWVzc2FnZS5hbGwtY2F1Z2h0LXVwLmRlc2NyaXB0aW9uJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdAbm90aWZpY2F0aW9uLW1hbmFnZW1lbnQ6c3RhdGUtbWVzc2FnZS5uby1ub3RpZmljYXRpb25zLmRlc2NyaXB0aW9uJztcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cbiJdfQ=="],"names":["i1","i2","i7","i12"],"mappings":"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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,wBAAwB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,+BAA+B,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAEA,EAAE,CAAC,2BAA2B,EAAE,QAAQ,EAAE,8IAA8I,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EA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AE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,4BAA4B,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAED,IAAE,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAEE,IAAG,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;AACn0J;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;AACvI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,uBAAuB;AACrD,oBAAoB,QAAQ,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH,oBAAoB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AACnE,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,iBAAiB;AACtD,4BAA4B,WAAW,EAAE,4BAA4B;AACrE,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,2BAA2B,EAAE,eAAe;AACpE,qBAAqB;AACrB,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,iBAAiB;AACzC,wBAAwB,YAAY;AACpC,wBAAwB,WAAW;AACnC,wBAAwB,cAAc;AACtC,wBAAwB,gBAAgB;AACxC,wBAAwB,gBAAgB;AACxC,wBAAwB,cAAc;AACtC,wBAAwB,aAAa;AACrC,wBAAwB,gBAAgB;AACxC,wBAAwB,sBAAsB;AAC9C,wBAAwB,iBAAiB;AACzC,wBAAwB,sBAAsB;AAC9C,wBAAwB,sBAAsB;AAC9C,wBAAwB,4BAA4B;AACpD,wBAAwB,wBAAwB;AAChD,wBAAwB,sBAAsB;AAC9C,wBAAwB,aAAa;AACrC,wBAAwB,mBAAmB;AAC3C,qBAAqB;AACrB,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;;;;"}
|