@acorex/modules 20.7.10 → 20.7.12

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-platform-management-acorex-modules-platform-management-ndbiBVUt.mjs","sources":["../tmp-esm2022/platform-management/lib/const.js","../tmp-esm2022/platform-management/lib/entity.provider.js","../tmp-esm2022/platform-management/lib/features.keys.js","../tmp-esm2022/platform-management/lib/feature-definition.provider.js","../tmp-esm2022/platform-management/lib/features/menu-management/menu-customization.const.js","../tmp-esm2022/platform-management/lib/features/menu-management/custom-menu.middleware.js","../tmp-esm2022/platform-management/lib/features/menu-management/menu-management.service.js","../tmp-esm2022/platform-management/lib/features/menu-management/components/menu-customizer-popup/menu-customizer-popup.component.js","../tmp-esm2022/platform-management/lib/features/menu-management/workflows/customize-menu.workflow.js","../tmp-esm2022/platform-management/lib/features/menu-management/menu-management.module.js","../tmp-esm2022/platform-management/lib/features/token/token.provider.js","../tmp-esm2022/platform-management/lib/entities/token/tokens.service.js","../tmp-esm2022/platform-management/lib/features/token/dynamic-token.provider.js","../tmp-esm2022/platform-management/lib/features/token/token-refresh.provider.js","../tmp-esm2022/platform-management/lib/features/token/token.module.js","../tmp-esm2022/platform-management/lib/features/updater/updater.service.js","../tmp-esm2022/platform-management/lib/features/updater/updater.module.js","../tmp-esm2022/platform-management/lib/manifest.js","../tmp-esm2022/platform-management/lib/menu.keys.js","../tmp-esm2022/platform-management/lib/permission.keys.js","../tmp-esm2022/platform-management/lib/menu.provider.js","../tmp-esm2022/platform-management/lib/permission-definition.provider.js","../tmp-esm2022/platform-management/lib/entities/token/token.entity.js","../tmp-esm2022/platform-management/lib/entities/token/token.module.js","../tmp-esm2022/platform-management/lib/entities/index.js","../tmp-esm2022/platform-management/lib/platform-management.module.js","../tmp-esm2022/platform-management/index.js","../tmp-esm2022/platform-management/acorex-modules-platform-management.js"],"sourcesContent":["const config = {\n i18n: 'platform-management',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'platform-management',\n name: 'PlatformManagement',\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-cogs',\n },\n entities: {\n localizationManagement: {\n name: 'Localization Management',\n title: `@${config.i18n}:localization-management.entities.localization-management.title`,\n icon: 'fa-light fa-globe',\n },\n token: {\n name: 'Tokens',\n title: `@${config.i18n}:tokens.entities.token.title`,\n icon: 'fa-light fa-object-exclude',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL2NvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sTUFBTSxHQUFHO0lBQ2IsSUFBSSxFQUFFLHFCQUFxQjtDQUM1QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLE1BQU07SUFDTixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUscUJBQXFCO1FBQzVCLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksZUFBZTtRQUNyQyxJQUFJLEVBQUUsa0JBQWtCO0tBQ3pCO0lBQ0QsUUFBUSxFQUFFO1FBQ1Isc0JBQXNCLEVBQUU7WUFDdEIsSUFBSSxFQUFFLHlCQUF5QjtZQUMvQixLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxpRUFBaUU7WUFDdkYsSUFBSSxFQUFFLG1CQUFtQjtTQUMxQjtRQUNELEtBQUssRUFBRTtZQUNMLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksOEJBQThCO1lBQ3BELElBQUksRUFBRSw0QkFBNEI7U0FDbkM7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb25maWcgPSB7XG4gIGkxOG46ICdwbGF0Zm9ybS1tYW5hZ2VtZW50Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBSb290Q29uZmlnID0ge1xuICBjb25maWcsXG4gIG1vZHVsZToge1xuICAgIHJvdXRlOiAncGxhdGZvcm0tbWFuYWdlbWVudCcsXG4gICAgbmFtZTogJ1BsYXRmb3JtTWFuYWdlbWVudCcsXG4gICAgdGl0bGU6IGBAJHtjb25maWcuaTE4bn06bW9kdWxlLnRpdGxlYCxcbiAgICBpY29uOiAnZmEtbGlnaHQgZmEtY29ncycsXG4gIH0sXG4gIGVudGl0aWVzOiB7XG4gICAgbG9jYWxpemF0aW9uTWFuYWdlbWVudDoge1xuICAgICAgbmFtZTogJ0xvY2FsaXphdGlvbiBNYW5hZ2VtZW50JyxcbiAgICAgIHRpdGxlOiBgQCR7Y29uZmlnLmkxOG59OmxvY2FsaXphdGlvbi1tYW5hZ2VtZW50LmVudGl0aWVzLmxvY2FsaXphdGlvbi1tYW5hZ2VtZW50LnRpdGxlYCxcbiAgICAgIGljb246ICdmYS1saWdodCBmYS1nbG9iZScsXG4gICAgfSxcbiAgICB0b2tlbjoge1xuICAgICAgbmFtZTogJ1Rva2VucycsXG4gICAgICB0aXRsZTogYEAke2NvbmZpZy5pMThufTp0b2tlbnMuZW50aXRpZXMudG9rZW4udGl0bGVgLFxuICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLW9iamVjdC1leGNsdWRlJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==","import { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\nexport class AXMEntityLoader {\n constructor() {\n this.injector = inject(Injector);\n }\n preload() {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity) => ({\n module: module,\n entity: entity.name,\n }));\n }\n async get(moduleName, entityName) {\n if (moduleName == RootConfig.module.name) {\n return new Promise(async (resolve) => {\n switch (entityName) {\n case RootConfig.entities.token.name: {\n const entity = (await import('./entities')).tokenEntityFactory;\n resolve(entity(this.injector));\n break;\n }\n default:\n resolve(null);\n }\n });\n }\n return null;\n }\n async list() {\n const m = RootConfig.module.name;\n return Promise.resolve(Object.values(RootConfig.entities).map((e) => ({ name: e.name, module: m })));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMEntityLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMEntityLoader }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMEntityLoader, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdHkucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR3JDLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBU1UsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztLQXlCckM7SUFoQ0MsT0FBTztRQUNMLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxRSxNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSTtTQUNwQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFHRCxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQWtCLEVBQUUsVUFBa0I7UUFDOUMsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDbkMsUUFBUSxVQUFVLEVBQUUsQ0FBQztvQkFDbkIsS0FBSyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNwQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUM7d0JBQy9ELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7d0JBQy9CLE1BQU07b0JBQ1IsQ0FBQztvQkFDRDt3QkFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDN0UsQ0FBQztJQUNKLENBQUM7K0dBaENVLGVBQWU7bUhBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEVudGl0eSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7XG4gIEFYUEVudGl0eURlZmluaXRpb25Mb2FkZXIsXG4gIEFYUEVudGl0eURlZmluaXRpb25QcmVsb2FkZXIsXG4gIEFYUEVudGl0eVByZWxvYWRFbnRpdHksXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi9jb25zdCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1FbnRpdHlMb2FkZXIgaW1wbGVtZW50cyBBWFBFbnRpdHlEZWZpbml0aW9uTG9hZGVyLCBBWFBFbnRpdHlEZWZpbml0aW9uUHJlbG9hZGVyIHtcbiAgcHJlbG9hZCgpOiBBWFBFbnRpdHlQcmVsb2FkRW50aXR5W10ge1xuICAgIGNvbnN0IG1vZHVsZSA9IFJvb3RDb25maWcubW9kdWxlLm5hbWU7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oT2JqZWN0LnZhbHVlcyhSb290Q29uZmlnLmVudGl0aWVzKSkubWFwKChlbnRpdHk6IGFueSkgPT4gKHtcbiAgICAgIG1vZHVsZTogbW9kdWxlLFxuICAgICAgZW50aXR5OiBlbnRpdHkubmFtZSxcbiAgICB9KSk7XG4gIH1cbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgYXN5bmMgZ2V0KG1vZHVsZU5hbWU6IHN0cmluZywgZW50aXR5TmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBFbnRpdHkgfCBudWxsPiB7XG4gICAgaWYgKG1vZHVsZU5hbWUgPT0gUm9vdENvbmZpZy5tb2R1bGUubmFtZSkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZW50aXR5TmFtZSkge1xuICAgICAgICAgIGNhc2UgUm9vdENvbmZpZy5lbnRpdGllcy50b2tlbi5uYW1lOiB7XG4gICAgICAgICAgICBjb25zdCBlbnRpdHkgPSAoYXdhaXQgaW1wb3J0KCcuL2VudGl0aWVzJykpLnRva2VuRW50aXR5RmFjdG9yeTtcbiAgICAgICAgICAgIHJlc29sdmUoZW50aXR5KHRoaXMuaW5qZWN0b3IpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPHsgbmFtZTogc3RyaW5nOyBtb2R1bGU6IHN0cmluZyB9W10+IHtcbiAgICBjb25zdCBtID0gUm9vdENvbmZpZy5tb2R1bGUubmFtZTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgT2JqZWN0LnZhbHVlcyhSb290Q29uZmlnLmVudGl0aWVzKS5tYXAoKGUpID0+ICh7IG5hbWU6IGUubmFtZSwgbW9kdWxlOiBtIH0pKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==","export const AXPPlatformManagementFeatureKeys = {\n MenuCustomization: 'PlatformManagement:Feature:menu-customization',\n AutoCheckUpdates: 'PlatformManagement:Feature:auto-check-updates',\n MaxTokens: 'PlatformManagement:Feature:max-tokens',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZXMua2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMua2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRztJQUM1QyxpQkFBaUIsRUFBRSwrQ0FBK0M7SUFDbEUsZ0JBQWdCLEVBQUUsK0NBQStDO0lBQ2pFLFNBQVMsRUFBRSx1Q0FBdUM7Q0FDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWFBQbGF0Zm9ybU1hbmFnZW1lbnRGZWF0dXJlS2V5cyA9IHtcbiAgICBNZW51Q3VzdG9taXphdGlvbjogJ1BsYXRmb3JtTWFuYWdlbWVudDpGZWF0dXJlOm1lbnUtY3VzdG9taXphdGlvbicsXG4gICAgQXV0b0NoZWNrVXBkYXRlczogJ1BsYXRmb3JtTWFuYWdlbWVudDpGZWF0dXJlOmF1dG8tY2hlY2stdXBkYXRlcycsXG4gICAgTWF4VG9rZW5zOiAnUGxhdGZvcm1NYW5hZ2VtZW50OkZlYXR1cmU6bWF4LXRva2VucycsXG59IGFzIGNvbnN0O1xuXG4iXX0=","//#region ---- Imports ----\nimport { AXPPlatformManagementFeatureKeys } from './features.keys';\n//#endregion\n//#region ---- Feature Definition Provider ----\n/**\n * Platform Management Feature Definition Provider.\n * Provides feature definitions for the Platform Management module.\n */\nexport class AXPPlatformManagementFeatureDefinitionProvider {\n async provide(context) {\n context.addFeature(AXPPlatformManagementFeatureKeys.MenuCustomization, {\n title: '@platform-management:features.menu-customization.title',\n description: '@platform-management:features.menu-customization.description',\n defaultValue: true,\n type: 'boolean',\n });\n context.addFeature(AXPPlatformManagementFeatureKeys.AutoCheckUpdates, {\n title: '@platform-management:features.auto-check-updates.title',\n description: '@platform-management:features.auto-check-updates.description',\n defaultValue: true,\n type: 'boolean',\n });\n context.addFeature(AXPPlatformManagementFeatureKeys.MaxTokens, {\n title: '@platform-management:features.max-tokens.title',\n description: '@platform-management:features.max-tokens.description',\n defaultValue: 100,\n type: 'number',\n interface: {\n type: 'number-editor',\n options: {\n min: 1,\n max: 1000,\n step: 1,\n },\n },\n });\n }\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlLWRlZmluaXRpb24ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBTS9CLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5FLFlBQVk7QUFFWixtREFBbUQ7QUFFbkQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDhDQUE4QztJQUN2RCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQTRDO1FBQ3RELE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsaUJBQWlCLEVBQUU7WUFDbkUsS0FBSyxFQUFFLHdEQUF3RDtZQUMvRCxXQUFXLEVBQUUsOERBQThEO1lBQzNFLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEUsS0FBSyxFQUFFLHdEQUF3RDtZQUMvRCxXQUFXLEVBQUUsOERBQThEO1lBQzNFLFlBQVksRUFBRSxJQUFJO1lBQ2xCLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsU0FBUyxFQUFFO1lBQzNELEtBQUssRUFBRSxnREFBZ0Q7WUFDdkQsV0FBVyxFQUFFLHNEQUFzRDtZQUNuRSxZQUFZLEVBQUUsR0FBRztZQUNqQixJQUFJLEVBQUUsUUFBUTtZQUNkLFNBQVMsRUFBRTtnQkFDUCxJQUFJLEVBQUUsZUFBZTtnQkFDckIsT0FBTyxFQUFFO29CQUNMLEdBQUcsRUFBRSxDQUFDO29CQUNOLEdBQUcsRUFBRSxJQUFJO29CQUNULElBQUksRUFBRSxDQUFDO2lCQUNWO2FBQ0o7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFFRCxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQge1xuICAgIEFYUEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXIsXG4gICAgQVhQRmVhdHVyZURlZmluaXRpb25Qcm92aWRlckNvbnRleHQsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBQbGF0Zm9ybU1hbmFnZW1lbnRGZWF0dXJlS2V5cyB9IGZyb20gJy4vZmVhdHVyZXMua2V5cyc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEZlYXR1cmUgRGVmaW5pdGlvbiBQcm92aWRlciAgIC0tLS1cblxuLyoqXG4gKiBQbGF0Zm9ybSBNYW5hZ2VtZW50IEZlYXR1cmUgRGVmaW5pdGlvbiBQcm92aWRlci5cbiAqIFByb3ZpZGVzIGZlYXR1cmUgZGVmaW5pdGlvbnMgZm9yIHRoZSBQbGF0Zm9ybSBNYW5hZ2VtZW50IG1vZHVsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFYUFBsYXRmb3JtTWFuYWdlbWVudEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgICBhc3luYyBwcm92aWRlKGNvbnRleHQ6IEFYUEZlYXR1cmVEZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnRleHQuYWRkRmVhdHVyZShBWFBQbGF0Zm9ybU1hbmFnZW1lbnRGZWF0dXJlS2V5cy5NZW51Q3VzdG9taXphdGlvbiwge1xuICAgICAgICAgICAgdGl0bGU6ICdAcGxhdGZvcm0tbWFuYWdlbWVudDpmZWF0dXJlcy5tZW51LWN1c3RvbWl6YXRpb24udGl0bGUnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdAcGxhdGZvcm0tbWFuYWdlbWVudDpmZWF0dXJlcy5tZW51LWN1c3RvbWl6YXRpb24uZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb250ZXh0LmFkZEZlYXR1cmUoQVhQUGxhdGZvcm1NYW5hZ2VtZW50RmVhdHVyZUtleXMuQXV0b0NoZWNrVXBkYXRlcywge1xuICAgICAgICAgICAgdGl0bGU6ICdAcGxhdGZvcm0tbWFuYWdlbWVudDpmZWF0dXJlcy5hdXRvLWNoZWNrLXVwZGF0ZXMudGl0bGUnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdAcGxhdGZvcm0tbWFuYWdlbWVudDpmZWF0dXJlcy5hdXRvLWNoZWNrLXVwZGF0ZXMuZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb250ZXh0LmFkZEZlYXR1cmUoQVhQUGxhdGZvcm1NYW5hZ2VtZW50RmVhdHVyZUtleXMuTWF4VG9rZW5zLCB7XG4gICAgICAgICAgICB0aXRsZTogJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50OmZlYXR1cmVzLm1heC10b2tlbnMudGl0bGUnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdAcGxhdGZvcm0tbWFuYWdlbWVudDpmZWF0dXJlcy5tYXgtdG9rZW5zLmRlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogMTAwLFxuICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyLWVkaXRvcicsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBtaW46IDEsXG4gICAgICAgICAgICAgICAgICAgIG1heDogMTAwMCxcbiAgICAgICAgICAgICAgICAgICAgc3RlcDogMSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","import { RootConfig } from '../../const';\n//#region ---- Menu Customization Constants ----\n/**\n * Setting key for menu customizations\n */\nexport const AXP_MENU_CUSTOMIZATION_KEY = 'axp.platform-management.menu-customization';\n/**\n * Current version of menu customization schema\n */\nexport const AXP_MENU_CUSTOMIZATION_VERSION = '1.0.0';\n/**\n * Default menu customization\n */\nexport const AXP_MENU_CUSTOMIZATION_DEFAULT = {\n version: AXP_MENU_CUSTOMIZATION_VERSION,\n overrides: {},\n customItems: [],\n};\n/**\n * Menu management feature configuration\n */\nexport const MenuManagementConfig = {\n route: 'menus',\n title: `@${RootConfig.config.i18n}:menu-management.components.menu-list.title`,\n icon: 'fa-light fa-bars',\n};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1jdXN0b21pemF0aW9uLmNvbnN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9tZW51LW1hbmFnZW1lbnQvbWVudS1jdXN0b21pemF0aW9uLmNvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekMsb0RBQW9EO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsNENBQTRDLENBQUM7QUFFdkY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxPQUFPLENBQUM7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRztJQUM1QyxPQUFPLEVBQUUsOEJBQThCO0lBQ3ZDLFNBQVMsRUFBRSxFQUFFO0lBQ2IsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksNkNBQTZDO0lBQzlFLElBQUksRUFBRSxrQkFBa0I7Q0FDekIsQ0FBQztBQUVGLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xuXG4vLyNyZWdpb24gLS0tLSAgIE1lbnUgQ3VzdG9taXphdGlvbiBDb25zdGFudHMgICAtLS0tXG5cbi8qKlxuICogU2V0dGluZyBrZXkgZm9yIG1lbnUgY3VzdG9taXphdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZID0gJ2F4cC5wbGF0Zm9ybS1tYW5hZ2VtZW50Lm1lbnUtY3VzdG9taXphdGlvbic7XG5cbi8qKlxuICogQ3VycmVudCB2ZXJzaW9uIG9mIG1lbnUgY3VzdG9taXphdGlvbiBzY2hlbWFcbiAqL1xuZXhwb3J0IGNvbnN0IEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fVkVSU0lPTiA9ICcxLjAuMCc7XG5cbi8qKlxuICogRGVmYXVsdCBtZW51IGN1c3RvbWl6YXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fREVGQVVMVCA9IHtcbiAgdmVyc2lvbjogQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9WRVJTSU9OLFxuICBvdmVycmlkZXM6IHt9LFxuICBjdXN0b21JdGVtczogW10sXG59O1xuXG4vKipcbiAqIE1lbnUgbWFuYWdlbWVudCBmZWF0dXJlIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IE1lbnVNYW5hZ2VtZW50Q29uZmlnID0ge1xuICByb3V0ZTogJ21lbnVzJyxcbiAgdGl0bGU6IGBAJHtSb290Q29uZmlnLmNvbmZpZy5pMThufTptZW51LW1hbmFnZW1lbnQuY29tcG9uZW50cy5tZW51LWxpc3QudGl0bGVgLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtYmFycycsXG59O1xuXG4vLyNlbmRyZWdpb25cblxuIl19","import { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { inject } from '@angular/core';\nimport { AXP_MENU_CUSTOMIZATION_DEFAULT, AXP_MENU_CUSTOMIZATION_KEY } from './menu-customization.const';\n//#region ---- Custom Menu Middleware ----\n/**\n * Middleware that applies menu customizations using the enhanced context API\n * Applies user/tenant customizations from settings with priority support\n */\nexport class AXPCustomMenuMiddleware {\n constructor() {\n //#region ---- Middleware Properties ----\n this.name = 'menu-customization';\n this.priority = 100; // High priority to apply customizations early\n //#endregion\n //#region ---- Dependencies ----\n this.settingsService = inject(AXPSettingsService);\n //#endregion\n }\n //#endregion\n //#region ---- Middleware Implementation ----\n async process(context) {\n try {\n // Load menu customization from settings\n const customization = await this.loadCustomization();\n // Apply overrides to existing menu items using context API\n this.applyOverrides(context, customization);\n // Add custom menu items\n this.addCustomItems(context, customization);\n // Re-sort after applying priority overrides\n context.sort();\n }\n catch (error) {\n console.error('Error applying menu customizations:', error);\n }\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Load menu customization from settings\n * Merges Tenant and User scope customizations (User overrides Tenant)\n */\n async loadCustomization() {\n try {\n // Load both scopes\n const tenantSettings = this.settingsService.scope(AXPPlatformScope.Tenant);\n const userSettings = this.settingsService.scope(AXPPlatformScope.User);\n const tenantCustomization = await tenantSettings.get(AXP_MENU_CUSTOMIZATION_KEY);\n const userCustomization = await userSettings.get(AXP_MENU_CUSTOMIZATION_KEY);\n // Merge customizations: Tenant as base, User overrides\n const merged = {\n version: userCustomization?.version || tenantCustomization?.version || AXP_MENU_CUSTOMIZATION_DEFAULT.version,\n overrides: {\n ...(tenantCustomization?.overrides || {}),\n ...(userCustomization?.overrides || {}), // User overrides win\n },\n customItems: [...(tenantCustomization?.customItems || []), ...(userCustomization?.customItems || [])],\n };\n // Return merged result or default if both are empty\n const hasCustomizations = Object.keys(merged.overrides).length > 0 || merged.customItems.length > 0;\n return hasCustomizations ? merged : AXP_MENU_CUSTOMIZATION_DEFAULT;\n }\n catch (error) {\n console.error('Failed to load menu customization:', error);\n return AXP_MENU_CUSTOMIZATION_DEFAULT;\n }\n }\n /**\n * Apply overrides to existing menu items using enhanced context API\n */\n applyOverrides(context, customization) {\n Object.entries(customization.overrides).forEach(([menuName, override]) => {\n const finder = context.findByName(menuName);\n if (!finder.exists()) {\n return;\n }\n // Hide menu item\n if (override.hidden) {\n finder.remove();\n return;\n }\n // Apply priority override\n if (override.priority !== undefined) {\n finder.setPriority(override.priority);\n }\n // Apply property overrides\n if (override.properties) {\n finder.update(override.properties);\n }\n // Move to different parent\n if (override.parentName !== undefined) {\n finder.moveTo(override.parentName);\n }\n });\n }\n /**\n * Add custom menu items using context API\n */\n addCustomItems(context, customization) {\n if (customization.customItems && customization.customItems.length > 0) {\n context.add(...customization.customItems);\n }\n }\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW1lbnUubWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvbWVudS1tYW5hZ2VtZW50L2N1c3RvbS1tZW51Lm1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUErQyxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLDBCQUEwQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHeEcsOENBQThDO0FBRTlDOzs7R0FHRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFBcEM7UUFDRSw2Q0FBNkM7UUFFcEMsU0FBSSxHQUFHLG9CQUFvQixDQUFDO1FBQzVCLGFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyw4Q0FBOEM7UUFFdkUsWUFBWTtRQUVaLG9DQUFvQztRQUU1QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBdUdyRCxZQUFZO0lBQ2QsQ0FBQztJQXRHQyxZQUFZO0lBRVosaURBQWlEO0lBRWpELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBaUM7UUFDN0MsSUFBSSxDQUFDO1lBQ0gsd0NBQXdDO1lBQ3hDLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFckQsMkRBQTJEO1lBQzNELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRTVDLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztZQUU1Qyw0Q0FBNEM7WUFDNUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7SUFFWix1Q0FBdUM7SUFFdkM7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLGlCQUFpQjtRQUM3QixJQUFJLENBQUM7WUFDSCxtQkFBbUI7WUFDbkIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0UsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkUsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLGNBQWMsQ0FBQyxHQUFHLENBQXVCLDBCQUEwQixDQUFDLENBQUM7WUFDdkcsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLENBQXVCLDBCQUEwQixDQUFDLENBQUM7WUFFbkcsdURBQXVEO1lBQ3ZELE1BQU0sTUFBTSxHQUF5QjtnQkFDbkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sSUFBSSxtQkFBbUIsRUFBRSxPQUFPLElBQUksOEJBQThCLENBQUMsT0FBTztnQkFDN0csU0FBUyxFQUFFO29CQUNULEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO29CQUN6QyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQjtpQkFDL0Q7Z0JBQ0QsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2FBQ3RHLENBQUM7WUFFRixvREFBb0Q7WUFDcEQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNwRyxPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDO1FBQ3JFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzRCxPQUFPLDhCQUE4QixDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQUMsT0FBaUMsRUFBRSxhQUFtQztRQUMzRixNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ3ZFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUNyQixPQUFPO1lBQ1QsQ0FBQztZQUVELGlCQUFpQjtZQUNqQixJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixPQUFPO1lBQ1QsQ0FBQztZQUVELDBCQUEwQjtZQUMxQixJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFFRCwyQkFBMkI7WUFDM0IsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFFRCwyQkFBMkI7WUFDM0IsSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQUMsT0FBaUMsRUFBRSxhQUFtQztRQUMzRixJQUFJLGFBQWEsQ0FBQyxXQUFXLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztDQUdGO0FBRUQsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUE1lbnVNaWRkbGV3YXJlLCBBWFBNZW51TWlkZGxld2FyZUNvbnRleHQsIEFYUFNldHRpbmdzU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFBsYXRmb3JtU2NvcGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQsIEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZIH0gZnJvbSAnLi9tZW51LWN1c3RvbWl6YXRpb24uY29uc3QnO1xuaW1wb3J0IHsgQVhQTWVudUN1c3RvbWl6YXRpb24gfSBmcm9tICcuL21lbnUtY3VzdG9taXphdGlvbi50eXBlcyc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgQ3VzdG9tIE1lbnUgTWlkZGxld2FyZSAgIC0tLS1cblxuLyoqXG4gKiBNaWRkbGV3YXJlIHRoYXQgYXBwbGllcyBtZW51IGN1c3RvbWl6YXRpb25zIHVzaW5nIHRoZSBlbmhhbmNlZCBjb250ZXh0IEFQSVxuICogQXBwbGllcyB1c2VyL3RlbmFudCBjdXN0b21pemF0aW9ucyBmcm9tIHNldHRpbmdzIHdpdGggcHJpb3JpdHkgc3VwcG9ydFxuICovXG5leHBvcnQgY2xhc3MgQVhQQ3VzdG9tTWVudU1pZGRsZXdhcmUgaW1wbGVtZW50cyBBWFBNZW51TWlkZGxld2FyZSB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgTWlkZGxld2FyZSBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIHJlYWRvbmx5IG5hbWUgPSAnbWVudS1jdXN0b21pemF0aW9uJztcbiAgcmVhZG9ubHkgcHJpb3JpdHkgPSAxMDA7IC8vIEhpZ2ggcHJpb3JpdHkgdG8gYXBwbHkgY3VzdG9taXphdGlvbnMgZWFybHlcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIERlcGVuZGVuY2llcyAgIC0tLS1cblxuICBwcml2YXRlIHNldHRpbmdzU2VydmljZSA9IGluamVjdChBWFBTZXR0aW5nc1NlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgTWlkZGxld2FyZSBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuICBhc3luYyBwcm9jZXNzKGNvbnRleHQ6IEFYUE1lbnVNaWRkbGV3YXJlQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBMb2FkIG1lbnUgY3VzdG9taXphdGlvbiBmcm9tIHNldHRpbmdzXG4gICAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbigpO1xuXG4gICAgICAvLyBBcHBseSBvdmVycmlkZXMgdG8gZXhpc3RpbmcgbWVudSBpdGVtcyB1c2luZyBjb250ZXh0IEFQSVxuICAgICAgdGhpcy5hcHBseU92ZXJyaWRlcyhjb250ZXh0LCBjdXN0b21pemF0aW9uKTtcblxuICAgICAgLy8gQWRkIGN1c3RvbSBtZW51IGl0ZW1zXG4gICAgICB0aGlzLmFkZEN1c3RvbUl0ZW1zKGNvbnRleHQsIGN1c3RvbWl6YXRpb24pO1xuXG4gICAgICAvLyBSZS1zb3J0IGFmdGVyIGFwcGx5aW5nIHByaW9yaXR5IG92ZXJyaWRlc1xuICAgICAgY29udGV4dC5zb3J0KCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFwcGx5aW5nIG1lbnUgY3VzdG9taXphdGlvbnM6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBMb2FkIG1lbnUgY3VzdG9taXphdGlvbiBmcm9tIHNldHRpbmdzXG4gICAqIE1lcmdlcyBUZW5hbnQgYW5kIFVzZXIgc2NvcGUgY3VzdG9taXphdGlvbnMgKFVzZXIgb3ZlcnJpZGVzIFRlbmFudClcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgbG9hZEN1c3RvbWl6YXRpb24oKTogUHJvbWlzZTxBWFBNZW51Q3VzdG9taXphdGlvbj4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBMb2FkIGJvdGggc2NvcGVzXG4gICAgICBjb25zdCB0ZW5hbnRTZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVGVuYW50KTtcbiAgICAgIGNvbnN0IHVzZXJTZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVXNlcik7XG5cbiAgICAgIGNvbnN0IHRlbmFudEN1c3RvbWl6YXRpb24gPSBhd2FpdCB0ZW5hbnRTZXR0aW5ncy5nZXQ8QVhQTWVudUN1c3RvbWl6YXRpb24+KEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZKTtcbiAgICAgIGNvbnN0IHVzZXJDdXN0b21pemF0aW9uID0gYXdhaXQgdXNlclNldHRpbmdzLmdldDxBWFBNZW51Q3VzdG9taXphdGlvbj4oQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9LRVkpO1xuXG4gICAgICAvLyBNZXJnZSBjdXN0b21pemF0aW9uczogVGVuYW50IGFzIGJhc2UsIFVzZXIgb3ZlcnJpZGVzXG4gICAgICBjb25zdCBtZXJnZWQ6IEFYUE1lbnVDdXN0b21pemF0aW9uID0ge1xuICAgICAgICB2ZXJzaW9uOiB1c2VyQ3VzdG9taXphdGlvbj8udmVyc2lvbiB8fCB0ZW5hbnRDdXN0b21pemF0aW9uPy52ZXJzaW9uIHx8IEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fREVGQVVMVC52ZXJzaW9uLFxuICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAuLi4odGVuYW50Q3VzdG9taXphdGlvbj8ub3ZlcnJpZGVzIHx8IHt9KSxcbiAgICAgICAgICAuLi4odXNlckN1c3RvbWl6YXRpb24/Lm92ZXJyaWRlcyB8fCB7fSksIC8vIFVzZXIgb3ZlcnJpZGVzIHdpblxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21JdGVtczogWy4uLih0ZW5hbnRDdXN0b21pemF0aW9uPy5jdXN0b21JdGVtcyB8fCBbXSksIC4uLih1c2VyQ3VzdG9taXphdGlvbj8uY3VzdG9tSXRlbXMgfHwgW10pXSxcbiAgICAgIH07XG5cbiAgICAgIC8vIFJldHVybiBtZXJnZWQgcmVzdWx0IG9yIGRlZmF1bHQgaWYgYm90aCBhcmUgZW1wdHlcbiAgICAgIGNvbnN0IGhhc0N1c3RvbWl6YXRpb25zID0gT2JqZWN0LmtleXMobWVyZ2VkLm92ZXJyaWRlcykubGVuZ3RoID4gMCB8fCBtZXJnZWQuY3VzdG9tSXRlbXMubGVuZ3RoID4gMDtcbiAgICAgIHJldHVybiBoYXNDdXN0b21pemF0aW9ucyA/IG1lcmdlZCA6IEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fREVGQVVMVDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgbWVudSBjdXN0b21pemF0aW9uOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IG92ZXJyaWRlcyB0byBleGlzdGluZyBtZW51IGl0ZW1zIHVzaW5nIGVuaGFuY2VkIGNvbnRleHQgQVBJXG4gICAqL1xuICBwcml2YXRlIGFwcGx5T3ZlcnJpZGVzKGNvbnRleHQ6IEFYUE1lbnVNaWRkbGV3YXJlQ29udGV4dCwgY3VzdG9taXphdGlvbjogQVhQTWVudUN1c3RvbWl6YXRpb24pOiB2b2lkIHtcbiAgICBPYmplY3QuZW50cmllcyhjdXN0b21pemF0aW9uLm92ZXJyaWRlcykuZm9yRWFjaCgoW21lbnVOYW1lLCBvdmVycmlkZV0pID0+IHtcbiAgICAgIGNvbnN0IGZpbmRlciA9IGNvbnRleHQuZmluZEJ5TmFtZShtZW51TmFtZSk7XG5cbiAgICAgIGlmICghZmluZGVyLmV4aXN0cygpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gSGlkZSBtZW51IGl0ZW1cbiAgICAgIGlmIChvdmVycmlkZS5oaWRkZW4pIHtcbiAgICAgICAgZmluZGVyLnJlbW92ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IHByaW9yaXR5IG92ZXJyaWRlXG4gICAgICBpZiAob3ZlcnJpZGUucHJpb3JpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaW5kZXIuc2V0UHJpb3JpdHkob3ZlcnJpZGUucHJpb3JpdHkpO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBwcm9wZXJ0eSBvdmVycmlkZXNcbiAgICAgIGlmIChvdmVycmlkZS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIGZpbmRlci51cGRhdGUob3ZlcnJpZGUucHJvcGVydGllcyk7XG4gICAgICB9XG5cbiAgICAgIC8vIE1vdmUgdG8gZGlmZmVyZW50IHBhcmVudFxuICAgICAgaWYgKG92ZXJyaWRlLnBhcmVudE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaW5kZXIubW92ZVRvKG92ZXJyaWRlLnBhcmVudE5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBjdXN0b20gbWVudSBpdGVtcyB1c2luZyBjb250ZXh0IEFQSVxuICAgKi9cbiAgcHJpdmF0ZSBhZGRDdXN0b21JdGVtcyhjb250ZXh0OiBBWFBNZW51TWlkZGxld2FyZUNvbnRleHQsIGN1c3RvbWl6YXRpb246IEFYUE1lbnVDdXN0b21pemF0aW9uKTogdm9pZCB7XG4gICAgaWYgKGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMgJiYgY3VzdG9taXphdGlvbi5jdXN0b21JdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb250ZXh0LmFkZCguLi5jdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zKTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","import { AXPMenuProviderService, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPMenuCustomizerService } from '@acorex/platform/layout/components';\nimport { inject, Injectable } from '@angular/core';\nimport { cloneDeep } from 'lodash-es';\nimport { AXP_MENU_CUSTOMIZATION_DEFAULT, AXP_MENU_CUSTOMIZATION_KEY } from './menu-customization.const';\nimport * as i0 from \"@angular/core\";\n/**\n * Builds a customization key from a scope key\n * @param scopeKey The scope key (e.g., 'edition:123', 'tenant:456')\n * @returns The full customization storage key\n */\nfunction buildCustomizationKey(scopeKey) {\n return `${AXP_MENU_CUSTOMIZATION_KEY}.${scopeKey}`;\n}\n//#region ---- Menu Management Service ----\n/**\n * Constants for priority calculation\n */\nconst PRIORITY_BASE_ROOT = 0;\nconst PRIORITY_BASE_NESTED = 1000;\nconst PRIORITY_STEP = 10;\nexport class AXPMenuManagementService extends AXPMenuCustomizerService {\n constructor() {\n super(...arguments);\n //#region ---- Dependencies ----\n this.settingsService = inject(AXPSettingsService);\n this.menuProviderService = inject(AXPMenuProviderService);\n }\n //#endregion\n //#region ---- AXPMenuCustomizerService Interface Implementation ----\n /**\n * Interface implementation: Get menu tree for the given scope key\n */\n async getMenuTree(scopeKey) {\n return this.getMenuTreeByKey(scopeKey);\n }\n /**\n * Interface implementation: Sync tree changes\n */\n async syncTreeChanges(scopeKey, treeNodes) {\n return this.syncTreeChangesByKey(scopeKey, treeNodes);\n }\n /**\n * Interface implementation: Show menu item\n */\n async showMenuItem(scopeKey, menuName) {\n return this.showMenuItemByKey(scopeKey, menuName);\n }\n /**\n * Interface implementation: Hide menu item\n */\n async hideMenuItem(scopeKey, menuName) {\n return this.hideMenuItemByKey(scopeKey, menuName);\n }\n /**\n * Interface implementation: Add custom menu item\n */\n async addCustomMenuItem(scopeKey, menuItem, parentName) {\n return this.addCustomMenuItemByKey(scopeKey, menuItem, parentName);\n }\n /**\n * Interface implementation: Update custom menu item\n */\n async updateCustomMenuItem(scopeKey, menuName, menuItem) {\n return this.updateCustomMenuItemByKey(scopeKey, menuName, menuItem);\n }\n /**\n * Interface implementation: Update menu properties\n */\n async updateMenuProperties(scopeKey, menuName, properties) {\n return this.updateMenuPropertiesByKey(scopeKey, menuName, properties);\n }\n /**\n * Interface implementation: Delete custom menu item\n */\n async deleteCustomMenuItem(scopeKey, menuName) {\n return this.deleteCustomMenuItemByKey(scopeKey, menuName);\n }\n /**\n * Interface implementation: Reset customizations\n */\n async resetCustomizations(scopeKey) {\n return this.resetCustomizationsByKey(scopeKey);\n }\n //#endregion\n //#region ---- Scope-Based Public Methods ----\n /**\n * Get menu tree as AXTreeViewNode[] for ax-tree-view component (scope-based)\n */\n async getMenuTreeByScope(scope) {\n // Get RAW menu items WITHOUT middleware (for management purposes)\n const baseItems = await this.menuProviderService.rawItems();\n // Load customizations for the given scope\n const customization = await this.loadCustomization(scope);\n // Merge custom items with base items\n const allItems = [...baseItems, ...customization.customItems];\n // Apply parent overrides to restructure items BEFORE building tree\n const restructuredItems = this.applyParentOverrides(allItems, customization);\n // Convert to tree nodes with metadata\n return this.convertToTreeNodes(restructuredItems, customization);\n }\n /**\n * Sync tree changes back to customization (scope-based)\n * Called automatically when tree structure changes via drag-drop\n */\n async syncTreeChangesByScope(scope, treeNodes) {\n const customization = await this.loadCustomization(scope);\n // Extract and update priorities and parent relationships from tree structure\n this.updateCustomizationFromTree(treeNodes, customization);\n await this.saveCustomization(scope, customization);\n }\n /**\n * Load menu customization for a specific scope\n */\n async loadCustomization(scope) {\n try {\n const scopedSettings = this.settingsService.scope(scope);\n const saved = await scopedSettings.get(AXP_MENU_CUSTOMIZATION_KEY);\n if (saved && saved.version) {\n return saved;\n }\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n catch {\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n }\n /**\n * Save menu customization for a specific scope\n */\n async saveCustomization(scope, customization) {\n const scopedSettings = this.settingsService.scope(scope);\n await scopedSettings.set(AXP_MENU_CUSTOMIZATION_KEY, customization);\n // Clear menu cache to force reload\n this.menuProviderService.clearCache();\n }\n /**\n * Hide a menu item (scope-based)\n */\n async hideMenuItemByScope(scope, menuName) {\n this.validateMenuName(menuName, 'hide');\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].hidden = true;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Show a menu item (scope-based)\n */\n async showMenuItemByScope(scope, menuName) {\n this.validateMenuName(menuName, 'show');\n const customization = await this.loadCustomization(scope);\n if (customization.overrides[menuName]) {\n delete customization.overrides[menuName].hidden;\n this.cleanupEmptyOverride(customization, menuName);\n }\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update menu item priority (scope-based)\n */\n async updateMenuPriorityByScope(scope, menuName, priority) {\n this.validateMenuName(menuName, 'update priority for');\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].priority = priority;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update menu item properties (scope-based)\n */\n async updateMenuPropertiesByScope(scope, menuName, properties) {\n this.validateMenuName(menuName, 'update properties for');\n const customization = await this.loadCustomization(scope);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].properties = {\n ...customization.overrides[menuName].properties,\n ...properties,\n };\n await this.saveCustomization(scope, customization);\n }\n /**\n * Add custom menu item (scope-based)\n */\n async addCustomMenuItemByScope(scope, menuItem, parent) {\n const customization = await this.loadCustomization(scope);\n // Generate unique name if not provided\n if (!menuItem.name) {\n menuItem.name = `custom-menu-${Date.now()}`;\n }\n customization.customItems.push(menuItem);\n await this.saveCustomization(scope, customization);\n }\n /**\n * Update custom menu item (scope-based)\n */\n async updateCustomMenuItemByScope(scope, menuName, menuItem) {\n this.validateMenuName(menuName, 'update');\n const customization = await this.loadCustomization(scope);\n const index = customization.customItems.findIndex((item) => item.name === menuName);\n if (index === -1) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n customization.customItems[index] = menuItem;\n await this.saveCustomization(scope, customization);\n }\n /**\n * Delete custom menu item (scope-based)\n */\n async deleteCustomMenuItemByScope(scope, menuName) {\n this.validateMenuName(menuName, 'delete');\n const customization = await this.loadCustomization(scope);\n const initialLength = customization.customItems.length;\n customization.customItems = customization.customItems.filter((item) => item.name !== menuName);\n if (customization.customItems.length === initialLength) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n await this.saveCustomization(scope, customization);\n }\n /**\n * Reset all customizations for a scope (scope-based)\n */\n async resetCustomizationsByScope(scope) {\n await this.saveCustomization(scope, cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT));\n }\n //#endregion\n //#region ---- Key-Based Public Methods ----\n /**\n * Get menu tree using a generic scope key (e.g., 'edition:123', 'tenant:456')\n */\n async getMenuTreeByKey(scopeKey) {\n // Get RAW menu items WITHOUT middleware (for management purposes)\n const baseItems = await this.menuProviderService.rawItems();\n // Load customizations for the given scope key\n const customization = await this.loadCustomizationByKey(scopeKey);\n // Merge custom items with base items\n const allItems = [...baseItems, ...customization.customItems];\n // Apply parent overrides to restructure items BEFORE building tree\n const restructuredItems = this.applyParentOverrides(allItems, customization);\n // Convert to tree nodes with metadata\n return this.convertToTreeNodes(restructuredItems, customization);\n }\n /**\n * Sync tree changes using a generic scope key\n */\n async syncTreeChangesByKey(scopeKey, treeNodes) {\n const customization = await this.loadCustomizationByKey(scopeKey);\n // Extract and update priorities and parent relationships from tree structure\n this.updateCustomizationFromTree(treeNodes, customization);\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n /**\n * Load menu customization using a generic scope key\n */\n async loadCustomizationByKey(scopeKey) {\n try {\n const storageKey = buildCustomizationKey(scopeKey);\n const scopedSettings = this.settingsService.scope(AXPPlatformScope.Tenant);\n const saved = await scopedSettings.get(storageKey);\n if (saved && saved.version) {\n return saved;\n }\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n catch {\n return cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT);\n }\n }\n /**\n * Save menu customization using a generic scope key\n */\n async saveCustomizationByKey(scopeKey, customization) {\n const storageKey = buildCustomizationKey(scopeKey);\n const scopedSettings = this.settingsService.scope(AXPPlatformScope.Tenant);\n await scopedSettings.set(storageKey, customization);\n // Clear menu cache to force reload\n this.menuProviderService.clearCache();\n }\n /**\n * Hide a menu item using a generic scope key\n */\n async hideMenuItemByKey(scopeKey, menuName) {\n this.validateMenuName(menuName, 'hide');\n const customization = await this.loadCustomizationByKey(scopeKey);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].hidden = true;\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n /**\n * Show a menu item using a generic scope key\n */\n async showMenuItemByKey(scopeKey, menuName) {\n this.validateMenuName(menuName, 'show');\n const customization = await this.loadCustomizationByKey(scopeKey);\n if (customization.overrides[menuName]) {\n delete customization.overrides[menuName].hidden;\n this.cleanupEmptyOverride(customization, menuName);\n }\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n /**\n * Update menu item properties using a generic scope key\n */\n async updateMenuPropertiesByKey(scopeKey, menuName, properties) {\n this.validateMenuName(menuName, 'update properties for');\n const customization = await this.loadCustomizationByKey(scopeKey);\n this.ensureOverrideExists(customization, menuName);\n customization.overrides[menuName].properties = {\n ...customization.overrides[menuName].properties,\n ...properties,\n };\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n /**\n * Add custom menu item using a generic scope key\n */\n async addCustomMenuItemByKey(scopeKey, menuItem, parent) {\n const customization = await this.loadCustomizationByKey(scopeKey);\n // Generate unique name if not provided\n if (!menuItem.name) {\n menuItem.name = `custom-menu-${Date.now()}`;\n }\n customization.customItems.push(menuItem);\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n /**\n * Update custom menu item using a generic scope key\n */\n async updateCustomMenuItemByKey(scopeKey, menuName, menuItem) {\n this.validateMenuName(menuName, 'update');\n const customization = await this.loadCustomizationByKey(scopeKey);\n const index = customization.customItems.findIndex((item) => item.name === menuName);\n if (index === -1) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n customization.customItems[index] = menuItem;\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n /**\n * Delete custom menu item using a generic scope key\n */\n async deleteCustomMenuItemByKey(scopeKey, menuName) {\n this.validateMenuName(menuName, 'delete');\n const customization = await this.loadCustomizationByKey(scopeKey);\n const initialLength = customization.customItems.length;\n customization.customItems = customization.customItems.filter((item) => item.name !== menuName);\n if (customization.customItems.length === initialLength) {\n throw new Error(`Custom menu item '${menuName}' not found`);\n }\n await this.saveCustomizationByKey(scopeKey, customization);\n }\n /**\n * Reset all customizations using a generic scope key\n */\n async resetCustomizationsByKey(scopeKey) {\n await this.saveCustomizationByKey(scopeKey, cloneDeep(AXP_MENU_CUSTOMIZATION_DEFAULT));\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Apply parent overrides from customization to restructure menu items\n * This ensures the tree reflects saved parent changes (moves)\n */\n applyParentOverrides(items, customization) {\n // First, flatten all items into a map for easy lookup\n const itemMap = this.flattenMenuItems(items);\n // Build new structure based on effective parent relationships\n const rootItems = [];\n const childrenMap = new Map();\n for (const [itemName, item] of itemMap.entries()) {\n const override = customization.overrides[itemName];\n // Determine effective parent (override takes precedence)\n let effectiveParent;\n if (override?.parentName !== undefined) {\n // parentName is explicitly set (could be null for root, or a parent name)\n effectiveParent = override.parentName;\n }\n else {\n // No override - find original parent by searching original structure\n effectiveParent = this.findOriginalParent(items, itemName);\n }\n if (effectiveParent === null || effectiveParent === undefined) {\n // Root level item\n rootItems.push(item);\n }\n else {\n // Child item - add to parent's children\n if (!childrenMap.has(effectiveParent)) {\n childrenMap.set(effectiveParent, []);\n }\n childrenMap.get(effectiveParent).push(item);\n }\n }\n // Attach children to their parents recursively\n const attachChildren = (item) => {\n if (item.name && childrenMap.has(item.name)) {\n item.children = childrenMap.get(item.name);\n item.children?.forEach(attachChildren);\n }\n };\n rootItems.forEach(attachChildren);\n return rootItems;\n }\n /**\n * Find the original parent name of an item in the original structure\n * Returns undefined for root items, string for items with parents, null for not found\n */\n findOriginalParent(items, targetName, currentParent) {\n for (const item of items) {\n if (item.name === targetName) {\n return currentParent; // undefined if root, string if has parent\n }\n if (item.children) {\n const found = this.findOriginalParent(item.children, targetName, item.name);\n if (found !== null) {\n // Found in children (could be undefined for root of subtree, or string for nested item)\n return found;\n }\n // found === null means not found in this subtree, continue searching\n }\n }\n return null; // Not found in this level or any children\n }\n /**\n * Convert menu items to AXTreeNode[] with metadata\n */\n convertToTreeNodes(items, customization, parentName) {\n const nodes = items.map((item) => {\n const itemName = item.name;\n const override = itemName ? customization.overrides[itemName] : undefined;\n const isCustom = itemName ? customization.customItems.some((ci) => ci.name === itemName) : false;\n // Create metadata\n const metadata = {\n isBuiltIn: !isCustom,\n isCustom,\n isHidden: override?.hidden || false,\n originalPriority: item.priority,\n originalParentName: parentName,\n };\n // Apply ALL overrides: priority AND properties (text, icon, description, etc.)\n const effectivePriority = override?.priority !== undefined ? override.priority : item.priority;\n const effectiveItem = {\n ...item,\n ...override?.properties, // Apply property overrides (text, icon, description)\n priority: effectivePriority,\n };\n // Create tree node data with effective (overridden) values\n const nodeData = {\n menuItem: effectiveItem,\n metadata,\n };\n // Create tree node using effective (overridden) values\n const treeNode = {\n id: itemName || item.path || this.generateNodeId(),\n title: effectiveItem.text || effectiveItem.path || 'Unnamed',\n icon: effectiveItem.icon,\n expanded: false,\n selected: false,\n ['children']: item.children ? this.convertToTreeNodes(item.children, customization, itemName) : undefined,\n childrenCount: item.children?.length,\n data: nodeData,\n };\n return treeNode;\n });\n // Sort by priority\n nodes.sort((a, b) => {\n const aPriority = a['data']?.menuItem.priority ?? 0;\n const bPriority = b['data']?.menuItem.priority ?? 0;\n return aPriority - bPriority;\n });\n return nodes;\n }\n /**\n * Update customization from tree structure\n * Extracts priorities and parent relationships from tree nodes\n */\n updateCustomizationFromTree(treeNodes, customization, parentName) {\n // Calculate base priority for this level to maintain relative ordering\n const basePriority = parentName ? PRIORITY_BASE_NESTED : PRIORITY_BASE_ROOT;\n const priorityStep = PRIORITY_STEP;\n treeNodes.forEach((node, index) => {\n const nodeData = node['data'] || null;\n const menuItem = nodeData?.menuItem;\n if (menuItem?.name) {\n this.ensureOverrideExists(customization, menuItem.name);\n // Calculate new priority based on current position\n const newPriority = basePriority + index * priorityStep;\n // Get current effective priority (considering existing overrides)\n const currentEffectivePriority = customization.overrides[menuItem.name]?.priority ?? nodeData.metadata.originalPriority ?? 0;\n // Always update priority to reflect current position in tree\n // This ensures reordering works correctly even after multiple moves\n if (newPriority !== currentEffectivePriority) {\n customization.overrides[menuItem.name].priority = newPriority;\n }\n // Determine current effective parent (considering existing overrides)\n const currentEffectiveParent = customization.overrides[menuItem.name]?.parentName ?? nodeData.metadata.originalParentName;\n // Update parent relationship if it changed from current effective parent\n if (parentName !== currentEffectiveParent) {\n if (parentName) {\n customization.overrides[menuItem.name].parentName = parentName;\n }\n else {\n // Moving to root - set to null (not undefined) so middleware will process it\n // moveTo(null) moves the item to root level\n customization.overrides[menuItem.name].parentName = null;\n }\n }\n // Clean up empty overrides\n this.cleanupEmptyOverride(customization, menuItem.name);\n // Recursively process children\n const nodeChildren = node['children'];\n if (nodeChildren && nodeChildren.length > 0) {\n this.updateCustomizationFromTree(nodeChildren, customization, menuItem.name);\n }\n }\n });\n }\n /**\n * Validate menu name before operations\n */\n validateMenuName(menuName, operation) {\n if (!menuName) {\n throw new Error(`Menu item must have a name to be ${operation}`);\n }\n }\n /**\n * Ensure override object exists for a menu item\n */\n ensureOverrideExists(customization, menuName) {\n if (!customization.overrides[menuName]) {\n customization.overrides[menuName] = {};\n }\n }\n /**\n * Clean up empty override objects\n */\n cleanupEmptyOverride(customization, menuName) {\n if (Object.keys(customization.overrides[menuName] || {}).length === 0) {\n delete customization.overrides[menuName];\n }\n }\n /**\n * Flatten menu items recursively into a map\n */\n flattenMenuItems(items) {\n const itemMap = new Map();\n const flatten = (itemList) => {\n for (const item of itemList) {\n if (item.name) {\n // Clone item without children to rebuild structure\n itemMap.set(item.name, { ...item, children: undefined });\n }\n if (item.children) {\n flatten(item.children);\n }\n }\n };\n flatten(items);\n return itemMap;\n }\n /**\n * Generate unique ID for tree nodes\n */\n generateNodeId() {\n return `node-${Date.now()}-${Math.floor(Math.random() * 10000)}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPMenuManagementService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPMenuManagementService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPMenuManagementService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1tYW5hZ2VtZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL21lbnUtbWFuYWdlbWVudC9tZW51LW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQXlCLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckcsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHeEc7Ozs7R0FJRztBQUNILFNBQVMscUJBQXFCLENBQUMsUUFBZ0I7SUFDN0MsT0FBTyxHQUFHLDBCQUEwQixJQUFJLFFBQVEsRUFBRSxDQUFDO0FBQ3JELENBQUM7QUFnQkQsK0NBQStDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7QUFDN0IsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7QUFDbEMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBR3pCLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFBd0I7SUFEdEU7O1FBRUUsb0NBQW9DO1FBRTVCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0Msd0JBQW1CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7S0EwckI5RDtJQXhyQkMsWUFBWTtJQUVa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ZW50cy90cmVlLXZpZXcnO1xuaW1wb3J0IHsgQVhQTWVudUl0ZW0sIEFYUE1lbnVQcm92aWRlclNlcnZpY2UsIEFYUFNldHRpbmdzU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFBsYXRmb3JtU2NvcGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQTWVudUN1c3RvbWl6ZXJJdGVtLCBBWFBNZW51Q3VzdG9taXplclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9jb21wb25lbnRzJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fREVGQVVMVCwgQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9LRVkgfSBmcm9tICcuL21lbnUtY3VzdG9taXphdGlvbi5jb25zdCc7XG5pbXBvcnQgeyBBWFBNZW51Q3VzdG9taXphdGlvbiB9IGZyb20gJy4vbWVudS1jdXN0b21pemF0aW9uLnR5cGVzJztcblxuLyoqXG4gKiBCdWlsZHMgYSBjdXN0b21pemF0aW9uIGtleSBmcm9tIGEgc2NvcGUga2V5XG4gKiBAcGFyYW0gc2NvcGVLZXkgVGhlIHNjb3BlIGtleSAoZS5nLiwgJ2VkaXRpb246MTIzJywgJ3RlbmFudDo0NTYnKVxuICogQHJldHVybnMgVGhlIGZ1bGwgY3VzdG9taXphdGlvbiBzdG9yYWdlIGtleVxuICovXG5mdW5jdGlvbiBidWlsZEN1c3RvbWl6YXRpb25LZXkoc2NvcGVLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0tFWX0uJHtzY29wZUtleX1gO1xufVxuXG4vKipcbiAqIERhdGEgc3RydWN0dXJlIGZvciB0cmVlIG5vZGUgY29tYmluaW5nIG1lbnUgaXRlbSB3aXRoIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQTWVudVRyZWVOb2RlRGF0YSB7XG4gIG1lbnVJdGVtOiBBWFBNZW51SXRlbTtcbiAgbWV0YWRhdGE6IHtcbiAgICBpc0J1aWx0SW46IGJvb2xlYW47XG4gICAgaXNDdXN0b206IGJvb2xlYW47XG4gICAgaXNIaWRkZW46IGJvb2xlYW47XG4gICAgb3JpZ2luYWxQcmlvcml0eT86IG51bWJlcjtcbiAgICBvcmlnaW5hbFBhcmVudE5hbWU/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8vI3JlZ2lvbiAtLS0tICAgTWVudSBNYW5hZ2VtZW50IFNlcnZpY2UgICAtLS0tXG5cbi8qKlxuICogQ29uc3RhbnRzIGZvciBwcmlvcml0eSBjYWxjdWxhdGlvblxuICovXG5jb25zdCBQUklPUklUWV9CQVNFX1JPT1QgPSAwO1xuY29uc3QgUFJJT1JJVFlfQkFTRV9ORVNURUQgPSAxMDAwO1xuY29uc3QgUFJJT1JJVFlfU1RFUCA9IDEwO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYUE1lbnVNYW5hZ2VtZW50U2VydmljZSBleHRlbmRzIEFYUE1lbnVDdXN0b21pemVyU2VydmljZSB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByaXZhdGUgc2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEFYUFNldHRpbmdzU2VydmljZSk7XG4gIHByaXZhdGUgbWVudVByb3ZpZGVyU2VydmljZSA9IGluamVjdChBWFBNZW51UHJvdmlkZXJTZXJ2aWNlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEFYUE1lbnVDdXN0b21pemVyU2VydmljZSBJbnRlcmZhY2UgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbiAgLyoqXG4gICAqIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvbjogR2V0IG1lbnUgdHJlZSBmb3IgdGhlIGdpdmVuIHNjb3BlIGtleVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0TWVudVRyZWUoc2NvcGVLZXk6IHN0cmluZyk6IFByb21pc2U8QVhUcmVlVmlld05vZGVbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldE1lbnVUcmVlQnlLZXkoc2NvcGVLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvbjogU3luYyB0cmVlIGNoYW5nZXNcbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHN5bmNUcmVlQ2hhbmdlcyhzY29wZUtleTogc3RyaW5nLCB0cmVlTm9kZXM6IEFYVHJlZVZpZXdOb2RlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zeW5jVHJlZUNoYW5nZXNCeUtleShzY29wZUtleSwgdHJlZU5vZGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcmZhY2UgaW1wbGVtZW50YXRpb246IFNob3cgbWVudSBpdGVtXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBzaG93TWVudUl0ZW0oc2NvcGVLZXk6IHN0cmluZywgbWVudU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNob3dNZW51SXRlbUJ5S2V5KHNjb3BlS2V5LCBtZW51TmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uOiBIaWRlIG1lbnUgaXRlbVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgaGlkZU1lbnVJdGVtKHNjb3BlS2V5OiBzdHJpbmcsIG1lbnVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5oaWRlTWVudUl0ZW1CeUtleShzY29wZUtleSwgbWVudU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVyZmFjZSBpbXBsZW1lbnRhdGlvbjogQWRkIGN1c3RvbSBtZW51IGl0ZW1cbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIGFkZEN1c3RvbU1lbnVJdGVtKFxuICAgIHNjb3BlS2V5OiBzdHJpbmcsXG4gICAgbWVudUl0ZW06IEFYUE1lbnVDdXN0b21pemVySXRlbSxcbiAgICBwYXJlbnROYW1lOiBzdHJpbmcgfCBudWxsLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5hZGRDdXN0b21NZW51SXRlbUJ5S2V5KHNjb3BlS2V5LCBtZW51SXRlbSBhcyBBWFBNZW51SXRlbSwgcGFyZW50TmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uOiBVcGRhdGUgY3VzdG9tIG1lbnUgaXRlbVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgdXBkYXRlQ3VzdG9tTWVudUl0ZW0oXG4gICAgc2NvcGVLZXk6IHN0cmluZyxcbiAgICBtZW51TmFtZTogc3RyaW5nLFxuICAgIG1lbnVJdGVtOiBBWFBNZW51Q3VzdG9taXplckl0ZW0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZUN1c3RvbU1lbnVJdGVtQnlLZXkoc2NvcGVLZXksIG1lbnVOYW1lLCBtZW51SXRlbSBhcyBBWFBNZW51SXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uOiBVcGRhdGUgbWVudSBwcm9wZXJ0aWVzXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyB1cGRhdGVNZW51UHJvcGVydGllcyhcbiAgICBzY29wZUtleTogc3RyaW5nLFxuICAgIG1lbnVOYW1lOiBzdHJpbmcsXG4gICAgcHJvcGVydGllczogUGFydGlhbDxBWFBNZW51Q3VzdG9taXplckl0ZW0+LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVNZW51UHJvcGVydGllc0J5S2V5KHNjb3BlS2V5LCBtZW51TmFtZSwgcHJvcGVydGllcyBhcyBQYXJ0aWFsPEFYUE1lbnVJdGVtPik7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJmYWNlIGltcGxlbWVudGF0aW9uOiBEZWxldGUgY3VzdG9tIG1lbnUgaXRlbVxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgZGVsZXRlQ3VzdG9tTWVudUl0ZW0oc2NvcGVLZXk6IHN0cmluZywgbWVudU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZUN1c3RvbU1lbnVJdGVtQnlLZXkoc2NvcGVLZXksIG1lbnVOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcmZhY2UgaW1wbGVtZW50YXRpb246IFJlc2V0IGN1c3RvbWl6YXRpb25zXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyByZXNldEN1c3RvbWl6YXRpb25zKHNjb3BlS2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXNldEN1c3RvbWl6YXRpb25zQnlLZXkoc2NvcGVLZXkpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBTY29wZS1CYXNlZCBQdWJsaWMgTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogR2V0IG1lbnUgdHJlZSBhcyBBWFRyZWVWaWV3Tm9kZVtdIGZvciBheC10cmVlLXZpZXcgY29tcG9uZW50IChzY29wZS1iYXNlZClcbiAgICovXG4gIGFzeW5jIGdldE1lbnVUcmVlQnlTY29wZShzY29wZTogQVhQUGxhdGZvcm1TY29wZSk6IFByb21pc2U8QVhUcmVlVmlld05vZGVbXT4ge1xuICAgIC8vIEdldCBSQVcgbWVudSBpdGVtcyBXSVRIT1VUIG1pZGRsZXdhcmUgKGZvciBtYW5hZ2VtZW50IHB1cnBvc2VzKVxuICAgIGNvbnN0IGJhc2VJdGVtcyA9IGF3YWl0IHRoaXMubWVudVByb3ZpZGVyU2VydmljZS5yYXdJdGVtcygpO1xuXG4gICAgLy8gTG9hZCBjdXN0b21pemF0aW9ucyBmb3IgdGhlIGdpdmVuIHNjb3BlXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgLy8gTWVyZ2UgY3VzdG9tIGl0ZW1zIHdpdGggYmFzZSBpdGVtc1xuICAgIGNvbnN0IGFsbEl0ZW1zID0gWy4uLmJhc2VJdGVtcywgLi4uY3VzdG9taXphdGlvbi5jdXN0b21JdGVtc107XG5cbiAgICAvLyBBcHBseSBwYXJlbnQgb3ZlcnJpZGVzIHRvIHJlc3RydWN0dXJlIGl0ZW1zIEJFRk9SRSBidWlsZGluZyB0cmVlXG4gICAgY29uc3QgcmVzdHJ1Y3R1cmVkSXRlbXMgPSB0aGlzLmFwcGx5UGFyZW50T3ZlcnJpZGVzKGFsbEl0ZW1zLCBjdXN0b21pemF0aW9uKTtcblxuICAgIC8vIENvbnZlcnQgdG8gdHJlZSBub2RlcyB3aXRoIG1ldGFkYXRhXG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvVHJlZU5vZGVzKHJlc3RydWN0dXJlZEl0ZW1zLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jIHRyZWUgY2hhbmdlcyBiYWNrIHRvIGN1c3RvbWl6YXRpb24gKHNjb3BlLWJhc2VkKVxuICAgKiBDYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRyZWUgc3RydWN0dXJlIGNoYW5nZXMgdmlhIGRyYWctZHJvcFxuICAgKi9cbiAgYXN5bmMgc3luY1RyZWVDaGFuZ2VzQnlTY29wZShzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgdHJlZU5vZGVzOiBBWFRyZWVWaWV3Tm9kZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgLy8gRXh0cmFjdCBhbmQgdXBkYXRlIHByaW9yaXRpZXMgYW5kIHBhcmVudCByZWxhdGlvbnNoaXBzIGZyb20gdHJlZSBzdHJ1Y3R1cmVcbiAgICB0aGlzLnVwZGF0ZUN1c3RvbWl6YXRpb25Gcm9tVHJlZSh0cmVlTm9kZXMsIGN1c3RvbWl6YXRpb24pO1xuXG4gICAgYXdhaXQgdGhpcy5zYXZlQ3VzdG9taXphdGlvbihzY29wZSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBtZW51IGN1c3RvbWl6YXRpb24gZm9yIGEgc3BlY2lmaWMgc2NvcGVcbiAgICovXG4gIGFzeW5jIGxvYWRDdXN0b21pemF0aW9uKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlKTogUHJvbWlzZTxBWFBNZW51Q3VzdG9taXphdGlvbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzY29wZWRTZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNjb3BlKHNjb3BlKTtcbiAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgc2NvcGVkU2V0dGluZ3MuZ2V0PEFYUE1lbnVDdXN0b21pemF0aW9uPihBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0tFWSk7XG5cbiAgICAgIGlmIChzYXZlZCAmJiBzYXZlZC52ZXJzaW9uKSB7XG4gICAgICAgIHJldHVybiBzYXZlZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNsb25lRGVlcChBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGNsb25lRGVlcChBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIG1lbnUgY3VzdG9taXphdGlvbiBmb3IgYSBzcGVjaWZpYyBzY29wZVxuICAgKi9cbiAgYXN5bmMgc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIGN1c3RvbWl6YXRpb246IEFYUE1lbnVDdXN0b21pemF0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2NvcGVkU2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzU2VydmljZS5zY29wZShzY29wZSk7XG4gICAgYXdhaXQgc2NvcGVkU2V0dGluZ3Muc2V0KEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fS0VZLCBjdXN0b21pemF0aW9uKTtcblxuICAgIC8vIENsZWFyIG1lbnUgY2FjaGUgdG8gZm9yY2UgcmVsb2FkXG4gICAgdGhpcy5tZW51UHJvdmlkZXJTZXJ2aWNlLmNsZWFyQ2FjaGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIGEgbWVudSBpdGVtIChzY29wZS1iYXNlZClcbiAgICovXG4gIGFzeW5jIGhpZGVNZW51SXRlbUJ5U2NvcGUoc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZhbGlkYXRlTWVudU5hbWUobWVudU5hbWUsICdoaWRlJyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG4gICAgdGhpcy5lbnN1cmVPdmVycmlkZUV4aXN0cyhjdXN0b21pemF0aW9uLCBtZW51TmFtZSk7XG4gICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLmhpZGRlbiA9IHRydWU7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IGEgbWVudSBpdGVtIChzY29wZS1iYXNlZClcbiAgICovXG4gIGFzeW5jIHNob3dNZW51SXRlbUJ5U2NvcGUoc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZhbGlkYXRlTWVudU5hbWUobWVudU5hbWUsICdzaG93Jyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG5cbiAgICBpZiAoY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdKSB7XG4gICAgICBkZWxldGUgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLmhpZGRlbjtcbiAgICAgIHRoaXMuY2xlYW51cEVtcHR5T3ZlcnJpZGUoY3VzdG9taXphdGlvbiwgbWVudU5hbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtZW51IGl0ZW0gcHJpb3JpdHkgKHNjb3BlLWJhc2VkKVxuICAgKi9cbiAgYXN5bmMgdXBkYXRlTWVudVByaW9yaXR5QnlTY29wZShzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgbWVudU5hbWU6IHN0cmluZywgcHJpb3JpdHk6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVNZW51TmFtZShtZW51TmFtZSwgJ3VwZGF0ZSBwcmlvcml0eSBmb3InKTtcblxuICAgIGNvbnN0IGN1c3RvbWl6YXRpb24gPSBhd2FpdCB0aGlzLmxvYWRDdXN0b21pemF0aW9uKHNjb3BlKTtcbiAgICB0aGlzLmVuc3VyZU92ZXJyaWRlRXhpc3RzKGN1c3RvbWl6YXRpb24sIG1lbnVOYW1lKTtcbiAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0ucHJpb3JpdHkgPSBwcmlvcml0eTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBtZW51IGl0ZW0gcHJvcGVydGllcyAoc2NvcGUtYmFzZWQpXG4gICAqL1xuICBhc3luYyB1cGRhdGVNZW51UHJvcGVydGllc0J5U2NvcGUoXG4gICAgc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsXG4gICAgbWVudU5hbWU6IHN0cmluZyxcbiAgICBwcm9wZXJ0aWVzOiBQYXJ0aWFsPEFYUE1lbnVJdGVtPixcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy52YWxpZGF0ZU1lbnVOYW1lKG1lbnVOYW1lLCAndXBkYXRlIHByb3BlcnRpZXMgZm9yJyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbihzY29wZSk7XG4gICAgdGhpcy5lbnN1cmVPdmVycmlkZUV4aXN0cyhjdXN0b21pemF0aW9uLCBtZW51TmFtZSk7XG5cbiAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0ucHJvcGVydGllcyA9IHtcbiAgICAgIC4uLmN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXS5wcm9wZXJ0aWVzLFxuICAgICAgLi4ucHJvcGVydGllcyxcbiAgICB9O1xuXG4gICAgYXdhaXQgdGhpcy5zYXZlQ3VzdG9taXphdGlvbihzY29wZSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGN1c3RvbSBtZW51IGl0ZW0gKHNjb3BlLWJhc2VkKVxuICAgKi9cbiAgYXN5bmMgYWRkQ3VzdG9tTWVudUl0ZW1CeVNjb3BlKHNjb3BlOiBBWFBQbGF0Zm9ybVNjb3BlLCBtZW51SXRlbTogQVhQTWVudUl0ZW0sIHBhcmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgLy8gR2VuZXJhdGUgdW5pcXVlIG5hbWUgaWYgbm90IHByb3ZpZGVkXG4gICAgaWYgKCFtZW51SXRlbS5uYW1lKSB7XG4gICAgICBtZW51SXRlbS5uYW1lID0gYGN1c3RvbS1tZW51LSR7RGF0ZS5ub3coKX1gO1xuICAgIH1cblxuICAgIGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMucHVzaChtZW51SXRlbSk7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uKHNjb3BlLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY3VzdG9tIG1lbnUgaXRlbSAoc2NvcGUtYmFzZWQpXG4gICAqL1xuICBhc3luYyB1cGRhdGVDdXN0b21NZW51SXRlbUJ5U2NvcGUoc2NvcGU6IEFYUFBsYXRmb3JtU2NvcGUsIG1lbnVOYW1lOiBzdHJpbmcsIG1lbnVJdGVtOiBBWFBNZW51SXRlbSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVNZW51TmFtZShtZW51TmFtZSwgJ3VwZGF0ZScpO1xuXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgY29uc3QgaW5kZXggPSBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBtZW51TmFtZSk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbSBtZW51IGl0ZW0gJyR7bWVudU5hbWV9JyBub3QgZm91bmRgKTtcbiAgICB9XG5cbiAgICBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zW2luZGV4XSA9IG1lbnVJdGVtO1xuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBjdXN0b20gbWVudSBpdGVtIChzY29wZS1iYXNlZClcbiAgICovXG4gIGFzeW5jIGRlbGV0ZUN1c3RvbU1lbnVJdGVtQnlTY29wZShzY29wZTogQVhQUGxhdGZvcm1TY29wZSwgbWVudU5hbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudmFsaWRhdGVNZW51TmFtZShtZW51TmFtZSwgJ2RlbGV0ZScpO1xuXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb24oc2NvcGUpO1xuXG4gICAgY29uc3QgaW5pdGlhbExlbmd0aCA9IGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMubGVuZ3RoO1xuICAgIGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMgPSBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5uYW1lICE9PSBtZW51TmFtZSk7XG5cbiAgICBpZiAoY3VzdG9taXphdGlvbi5jdXN0b21JdGVtcy5sZW5ndGggPT09IGluaXRpYWxMZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VzdG9tIG1lbnUgaXRlbSAnJHttZW51TmFtZX0nIG5vdCBmb3VuZGApO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGFsbCBjdXN0b21pemF0aW9ucyBmb3IgYSBzY29wZSAoc2NvcGUtYmFzZWQpXG4gICAqL1xuICBhc3luYyByZXNldEN1c3RvbWl6YXRpb25zQnlTY29wZShzY29wZTogQVhQUGxhdGZvcm1TY29wZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb24oc2NvcGUsIGNsb25lRGVlcChBWFBfTUVOVV9DVVNUT01JWkFUSU9OX0RFRkFVTFQpKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgS2V5LUJhc2VkIFB1YmxpYyBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBHZXQgbWVudSB0cmVlIHVzaW5nIGEgZ2VuZXJpYyBzY29wZSBrZXkgKGUuZy4sICdlZGl0aW9uOjEyMycsICd0ZW5hbnQ6NDU2JylcbiAgICovXG4gIGFzeW5jIGdldE1lbnVUcmVlQnlLZXkoc2NvcGVLZXk6IHN0cmluZyk6IFByb21pc2U8QVhUcmVlVmlld05vZGVbXT4ge1xuICAgIC8vIEdldCBSQVcgbWVudSBpdGVtcyBXSVRIT1VUIG1pZGRsZXdhcmUgKGZvciBtYW5hZ2VtZW50IHB1cnBvc2VzKVxuICAgIGNvbnN0IGJhc2VJdGVtcyA9IGF3YWl0IHRoaXMubWVudVByb3ZpZGVyU2VydmljZS5yYXdJdGVtcygpO1xuXG4gICAgLy8gTG9hZCBjdXN0b21pemF0aW9ucyBmb3IgdGhlIGdpdmVuIHNjb3BlIGtleVxuICAgIGNvbnN0IGN1c3RvbWl6YXRpb24gPSBhd2FpdCB0aGlzLmxvYWRDdXN0b21pemF0aW9uQnlLZXkoc2NvcGVLZXkpO1xuXG4gICAgLy8gTWVyZ2UgY3VzdG9tIGl0ZW1zIHdpdGggYmFzZSBpdGVtc1xuICAgIGNvbnN0IGFsbEl0ZW1zID0gWy4uLmJhc2VJdGVtcywgLi4uY3VzdG9taXphdGlvbi5jdXN0b21JdGVtc107XG5cbiAgICAvLyBBcHBseSBwYXJlbnQgb3ZlcnJpZGVzIHRvIHJlc3RydWN0dXJlIGl0ZW1zIEJFRk9SRSBidWlsZGluZyB0cmVlXG4gICAgY29uc3QgcmVzdHJ1Y3R1cmVkSXRlbXMgPSB0aGlzLmFwcGx5UGFyZW50T3ZlcnJpZGVzKGFsbEl0ZW1zLCBjdXN0b21pemF0aW9uKTtcblxuICAgIC8vIENvbnZlcnQgdG8gdHJlZSBub2RlcyB3aXRoIG1ldGFkYXRhXG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvVHJlZU5vZGVzKHJlc3RydWN0dXJlZEl0ZW1zLCBjdXN0b21pemF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW5jIHRyZWUgY2hhbmdlcyB1c2luZyBhIGdlbmVyaWMgc2NvcGUga2V5XG4gICAqL1xuICBhc3luYyBzeW5jVHJlZUNoYW5nZXNCeUtleShzY29wZUtleTogc3RyaW5nLCB0cmVlTm9kZXM6IEFYVHJlZVZpZXdOb2RlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbkJ5S2V5KHNjb3BlS2V5KTtcblxuICAgIC8vIEV4dHJhY3QgYW5kIHVwZGF0ZSBwcmlvcml0aWVzIGFuZCBwYXJlbnQgcmVsYXRpb25zaGlwcyBmcm9tIHRyZWUgc3RydWN0dXJlXG4gICAgdGhpcy51cGRhdGVDdXN0b21pemF0aW9uRnJvbVRyZWUodHJlZU5vZGVzLCBjdXN0b21pemF0aW9uKTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBtZW51IGN1c3RvbWl6YXRpb24gdXNpbmcgYSBnZW5lcmljIHNjb3BlIGtleVxuICAgKi9cbiAgYXN5bmMgbG9hZEN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleTogc3RyaW5nKTogUHJvbWlzZTxBWFBNZW51Q3VzdG9taXphdGlvbj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yYWdlS2V5ID0gYnVpbGRDdXN0b21pemF0aW9uS2V5KHNjb3BlS2V5KTtcbiAgICAgIGNvbnN0IHNjb3BlZFNldHRpbmdzID0gdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2NvcGUoQVhQUGxhdGZvcm1TY29wZS5UZW5hbnQpO1xuICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBzY29wZWRTZXR0aW5ncy5nZXQ8QVhQTWVudUN1c3RvbWl6YXRpb24+KHN0b3JhZ2VLZXkpO1xuXG4gICAgICBpZiAoc2F2ZWQgJiYgc2F2ZWQudmVyc2lvbikge1xuICAgICAgICByZXR1cm4gc2F2ZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbG9uZURlZXAoQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9ERUZBVUxUKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBjbG9uZURlZXAoQVhQX01FTlVfQ1VTVE9NSVpBVElPTl9ERUZBVUxUKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSBtZW51IGN1c3RvbWl6YXRpb24gdXNpbmcgYSBnZW5lcmljIHNjb3BlIGtleVxuICAgKi9cbiAgYXN5bmMgc2F2ZUN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleTogc3RyaW5nLCBjdXN0b21pemF0aW9uOiBBWFBNZW51Q3VzdG9taXphdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0b3JhZ2VLZXkgPSBidWlsZEN1c3RvbWl6YXRpb25LZXkoc2NvcGVLZXkpO1xuICAgIGNvbnN0IHNjb3BlZFNldHRpbmdzID0gdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2NvcGUoQVhQUGxhdGZvcm1TY29wZS5UZW5hbnQpO1xuICAgIGF3YWl0IHNjb3BlZFNldHRpbmdzLnNldChzdG9yYWdlS2V5LCBjdXN0b21pemF0aW9uKTtcblxuICAgIC8vIENsZWFyIG1lbnUgY2FjaGUgdG8gZm9yY2UgcmVsb2FkXG4gICAgdGhpcy5tZW51UHJvdmlkZXJTZXJ2aWNlLmNsZWFyQ2FjaGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIGEgbWVudSBpdGVtIHVzaW5nIGEgZ2VuZXJpYyBzY29wZSBrZXlcbiAgICovXG4gIGFzeW5jIGhpZGVNZW51SXRlbUJ5S2V5KHNjb3BlS2V5OiBzdHJpbmcsIG1lbnVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZhbGlkYXRlTWVudU5hbWUobWVudU5hbWUsICdoaWRlJyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbkJ5S2V5KHNjb3BlS2V5KTtcbiAgICB0aGlzLmVuc3VyZU92ZXJyaWRlRXhpc3RzKGN1c3RvbWl6YXRpb24sIG1lbnVOYW1lKTtcbiAgICBjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0uaGlkZGVuID0gdHJ1ZTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBhIG1lbnUgaXRlbSB1c2luZyBhIGdlbmVyaWMgc2NvcGUga2V5XG4gICAqL1xuICBhc3luYyBzaG93TWVudUl0ZW1CeUtleShzY29wZUtleTogc3RyaW5nLCBtZW51TmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy52YWxpZGF0ZU1lbnVOYW1lKG1lbnVOYW1lLCAnc2hvdycpO1xuXG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleSk7XG5cbiAgICBpZiAoY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdKSB7XG4gICAgICBkZWxldGUgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLmhpZGRlbjtcbiAgICAgIHRoaXMuY2xlYW51cEVtcHR5T3ZlcnJpZGUoY3VzdG9taXphdGlvbiwgbWVudU5hbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIG1lbnUgaXRlbSBwcm9wZXJ0aWVzIHVzaW5nIGEgZ2VuZXJpYyBzY29wZSBrZXlcbiAgICovXG4gIGFzeW5jIHVwZGF0ZU1lbnVQcm9wZXJ0aWVzQnlLZXkoc2NvcGVLZXk6IHN0cmluZywgbWVudU5hbWU6IHN0cmluZywgcHJvcGVydGllczogUGFydGlhbDxBWFBNZW51SXRlbT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZhbGlkYXRlTWVudU5hbWUobWVudU5hbWUsICd1cGRhdGUgcHJvcGVydGllcyBmb3InKTtcblxuICAgIGNvbnN0IGN1c3RvbWl6YXRpb24gPSBhd2FpdCB0aGlzLmxvYWRDdXN0b21pemF0aW9uQnlLZXkoc2NvcGVLZXkpO1xuICAgIHRoaXMuZW5zdXJlT3ZlcnJpZGVFeGlzdHMoY3VzdG9taXphdGlvbiwgbWVudU5hbWUpO1xuXG4gICAgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdLnByb3BlcnRpZXMgPSB7XG4gICAgICAuLi5jdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0ucHJvcGVydGllcyxcbiAgICAgIC4uLnByb3BlcnRpZXMsXG4gICAgfTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGN1c3RvbSBtZW51IGl0ZW0gdXNpbmcgYSBnZW5lcmljIHNjb3BlIGtleVxuICAgKi9cbiAgYXN5bmMgYWRkQ3VzdG9tTWVudUl0ZW1CeUtleShzY29wZUtleTogc3RyaW5nLCBtZW51SXRlbTogQVhQTWVudUl0ZW0sIHBhcmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY3VzdG9taXphdGlvbiA9IGF3YWl0IHRoaXMubG9hZEN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleSk7XG5cbiAgICAvLyBHZW5lcmF0ZSB1bmlxdWUgbmFtZSBpZiBub3QgcHJvdmlkZWRcbiAgICBpZiAoIW1lbnVJdGVtLm5hbWUpIHtcbiAgICAgIG1lbnVJdGVtLm5hbWUgPSBgY3VzdG9tLW1lbnUtJHtEYXRlLm5vdygpfWA7XG4gICAgfVxuXG4gICAgY3VzdG9taXphdGlvbi5jdXN0b21JdGVtcy5wdXNoKG1lbnVJdGVtKTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGN1c3RvbSBtZW51IGl0ZW0gdXNpbmcgYSBnZW5lcmljIHNjb3BlIGtleVxuICAgKi9cbiAgYXN5bmMgdXBkYXRlQ3VzdG9tTWVudUl0ZW1CeUtleShzY29wZUtleTogc3RyaW5nLCBtZW51TmFtZTogc3RyaW5nLCBtZW51SXRlbTogQVhQTWVudUl0ZW0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnZhbGlkYXRlTWVudU5hbWUobWVudU5hbWUsICd1cGRhdGUnKTtcblxuICAgIGNvbnN0IGN1c3RvbWl6YXRpb24gPSBhd2FpdCB0aGlzLmxvYWRDdXN0b21pemF0aW9uQnlLZXkoc2NvcGVLZXkpO1xuXG4gICAgY29uc3QgaW5kZXggPSBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBtZW51TmFtZSk7XG5cbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbSBtZW51IGl0ZW0gJyR7bWVudU5hbWV9JyBub3QgZm91bmRgKTtcbiAgICB9XG5cbiAgICBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zW2luZGV4XSA9IG1lbnVJdGVtO1xuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleSwgY3VzdG9taXphdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGN1c3RvbSBtZW51IGl0ZW0gdXNpbmcgYSBnZW5lcmljIHNjb3BlIGtleVxuICAgKi9cbiAgYXN5bmMgZGVsZXRlQ3VzdG9tTWVudUl0ZW1CeUtleShzY29wZUtleTogc3RyaW5nLCBtZW51TmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy52YWxpZGF0ZU1lbnVOYW1lKG1lbnVOYW1lLCAnZGVsZXRlJyk7XG5cbiAgICBjb25zdCBjdXN0b21pemF0aW9uID0gYXdhaXQgdGhpcy5sb2FkQ3VzdG9taXphdGlvbkJ5S2V5KHNjb3BlS2V5KTtcblxuICAgIGNvbnN0IGluaXRpYWxMZW5ndGggPSBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zLmxlbmd0aDtcbiAgICBjdXN0b21pemF0aW9uLmN1c3RvbUl0ZW1zID0gY3VzdG9taXphdGlvbi5jdXN0b21JdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubmFtZSAhPT0gbWVudU5hbWUpO1xuXG4gICAgaWYgKGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMubGVuZ3RoID09PSBpbml0aWFsTGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1c3RvbSBtZW51IGl0ZW0gJyR7bWVudU5hbWV9JyBub3QgZm91bmRgKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVDdXN0b21pemF0aW9uQnlLZXkoc2NvcGVLZXksIGN1c3RvbWl6YXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IGFsbCBjdXN0b21pemF0aW9ucyB1c2luZyBhIGdlbmVyaWMgc2NvcGUga2V5XG4gICAqL1xuICBhc3luYyByZXNldEN1c3RvbWl6YXRpb25zQnlLZXkoc2NvcGVLZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuc2F2ZUN1c3RvbWl6YXRpb25CeUtleShzY29wZUtleSwgY2xvbmVEZWVwKEFYUF9NRU5VX0NVU1RPTUlaQVRJT05fREVGQVVMVCkpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQcml2YXRlIE1ldGhvZHMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEFwcGx5IHBhcmVudCBvdmVycmlkZXMgZnJvbSBjdXN0b21pemF0aW9uIHRvIHJlc3RydWN0dXJlIG1lbnUgaXRlbXNcbiAgICogVGhpcyBlbnN1cmVzIHRoZSB0cmVlIHJlZmxlY3RzIHNhdmVkIHBhcmVudCBjaGFuZ2VzIChtb3ZlcylcbiAgICovXG4gIHByaXZhdGUgYXBwbHlQYXJlbnRPdmVycmlkZXMoaXRlbXM6IEFYUE1lbnVJdGVtW10sIGN1c3RvbWl6YXRpb246IEFYUE1lbnVDdXN0b21pemF0aW9uKTogQVhQTWVudUl0ZW1bXSB7XG4gICAgLy8gRmlyc3QsIGZsYXR0ZW4gYWxsIGl0ZW1zIGludG8gYSBtYXAgZm9yIGVhc3kgbG9va3VwXG4gICAgY29uc3QgaXRlbU1hcCA9IHRoaXMuZmxhdHRlbk1lbnVJdGVtcyhpdGVtcyk7XG5cbiAgICAvLyBCdWlsZCBuZXcgc3RydWN0dXJlIGJhc2VkIG9uIGVmZmVjdGl2ZSBwYXJlbnQgcmVsYXRpb25zaGlwc1xuICAgIGNvbnN0IHJvb3RJdGVtczogQVhQTWVudUl0ZW1bXSA9IFtdO1xuICAgIGNvbnN0IGNoaWxkcmVuTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFYUE1lbnVJdGVtW10+KCk7XG5cbiAgICBmb3IgKGNvbnN0IFtpdGVtTmFtZSwgaXRlbV0gb2YgaXRlbU1hcC5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IG92ZXJyaWRlID0gY3VzdG9taXphdGlvbi5vdmVycmlkZXNbaXRlbU5hbWVdO1xuXG4gICAgICAvLyBEZXRlcm1pbmUgZWZmZWN0aXZlIHBhcmVudCAob3ZlcnJpZGUgdGFrZXMgcHJlY2VkZW5jZSlcbiAgICAgIGxldCBlZmZlY3RpdmVQYXJlbnQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAob3ZlcnJpZGU/LnBhcmVudE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBwYXJlbnROYW1lIGlzIGV4cGxpY2l0bHkgc2V0IChjb3VsZCBiZSBudWxsIGZvciByb290LCBvciBhIHBhcmVudCBuYW1lKVxuICAgICAgICBlZmZlY3RpdmVQYXJlbnQgPSBvdmVycmlkZS5wYXJlbnROYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm8gb3ZlcnJpZGUgLSBmaW5kIG9yaWdpbmFsIHBhcmVudCBieSBzZWFyY2hpbmcgb3JpZ2luYWwgc3RydWN0dXJlXG4gICAgICAgIGVmZmVjdGl2ZVBhcmVudCA9IHRoaXMuZmluZE9yaWdpbmFsUGFyZW50KGl0ZW1zLCBpdGVtTmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlZmZlY3RpdmVQYXJlbnQgPT09IG51bGwgfHwgZWZmZWN0aXZlUGFyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gUm9vdCBsZXZlbCBpdGVtXG4gICAgICAgIHJvb3RJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ2hpbGQgaXRlbSAtIGFkZCB0byBwYXJlbnQncyBjaGlsZHJlblxuICAgICAgICBpZiAoIWNoaWxkcmVuTWFwLmhhcyhlZmZlY3RpdmVQYXJlbnQpKSB7XG4gICAgICAgICAgY2hpbGRyZW5NYXAuc2V0KGVmZmVjdGl2ZVBhcmVudCwgW10pO1xuICAgICAgICB9XG4gICAgICAgIGNoaWxkcmVuTWFwLmdldChlZmZlY3RpdmVQYXJlbnQpIS5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEF0dGFjaCBjaGlsZHJlbiB0byB0aGVpciBwYXJlbnRzIHJlY3Vyc2l2ZWx5XG4gICAgY29uc3QgYXR0YWNoQ2hpbGRyZW4gPSAoaXRlbTogQVhQTWVudUl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLm5hbWUgJiYgY2hpbGRyZW5NYXAuaGFzKGl0ZW0ubmFtZSkpIHtcbiAgICAgICAgaXRlbS5jaGlsZHJlbiA9IGNoaWxkcmVuTWFwLmdldChpdGVtLm5hbWUpO1xuICAgICAgICBpdGVtLmNoaWxkcmVuPy5mb3JFYWNoKGF0dGFjaENoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcm9vdEl0ZW1zLmZvckVhY2goYXR0YWNoQ2hpbGRyZW4pO1xuXG4gICAgcmV0dXJuIHJvb3RJdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIHRoZSBvcmlnaW5hbCBwYXJlbnQgbmFtZSBvZiBhbiBpdGVtIGluIHRoZSBvcmlnaW5hbCBzdHJ1Y3R1cmVcbiAgICogUmV0dXJucyB1bmRlZmluZWQgZm9yIHJvb3QgaXRlbXMsIHN0cmluZyBmb3IgaXRlbXMgd2l0aCBwYXJlbnRzLCBudWxsIGZvciBub3QgZm91bmRcbiAgICovXG4gIHByaXZhdGUgZmluZE9yaWdpbmFsUGFyZW50KFxuICAgIGl0ZW1zOiBBWFBNZW51SXRlbVtdLFxuICAgIHRhcmdldE5hbWU6IHN0cmluZyxcbiAgICBjdXJyZW50UGFyZW50Pzogc3RyaW5nLFxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGlmIChpdGVtLm5hbWUgPT09IHRhcmdldE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRQYXJlbnQ7IC8vIHVuZGVmaW5lZCBpZiByb290LCBzdHJpbmcgaWYgaGFzIHBhcmVudFxuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmZpbmRPcmlnaW5hbFBhcmVudChpdGVtLmNoaWxkcmVuLCB0YXJnZXROYW1lLCBpdGVtLm5hbWUpO1xuICAgICAgICBpZiAoZm91bmQgIT09IG51bGwpIHtcbiAgICAgICAgICAvLyBGb3VuZCBpbiBjaGlsZHJlbiAoY291bGQgYmUgdW5kZWZpbmVkIGZvciByb290IG9mIHN1YnRyZWUsIG9yIHN0cmluZyBmb3IgbmVzdGVkIGl0ZW0pXG4gICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZvdW5kID09PSBudWxsIG1lYW5zIG5vdCBmb3VuZCBpbiB0aGlzIHN1YnRyZWUsIGNvbnRpbnVlIHNlYXJjaGluZ1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDsgLy8gTm90IGZvdW5kIGluIHRoaXMgbGV2ZWwgb3IgYW55IGNoaWxkcmVuXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBtZW51IGl0ZW1zIHRvIEFYVHJlZU5vZGVbXSB3aXRoIG1ldGFkYXRhXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRUb1RyZWVOb2RlcyhcbiAgICBpdGVtczogQVhQTWVudUl0ZW1bXSxcbiAgICBjdXN0b21pemF0aW9uOiBBWFBNZW51Q3VzdG9taXphdGlvbixcbiAgICBwYXJlbnROYW1lPzogc3RyaW5nLFxuICApOiBBWFRyZWVWaWV3Tm9kZVtdIHtcbiAgICBjb25zdCBub2RlcyA9IGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgaXRlbU5hbWUgPSBpdGVtLm5hbWU7XG4gICAgICBjb25zdCBvdmVycmlkZSA9IGl0ZW1OYW1lID8gY3VzdG9taXphdGlvbi5vdmVycmlkZXNbaXRlbU5hbWVdIDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgaXNDdXN0b20gPSBpdGVtTmFtZSA/IGN1c3RvbWl6YXRpb24uY3VzdG9tSXRlbXMuc29tZSgoY2kpID0+IGNpLm5hbWUgPT09IGl0ZW1OYW1lKSA6IGZhbHNlO1xuXG4gICAgICAvLyBDcmVhdGUgbWV0YWRhdGFcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgICAgICBpc0J1aWx0SW46ICFpc0N1c3RvbSxcbiAgICAgICAgaXNDdXN0b20sXG4gICAgICAgIGlzSGlkZGVuOiBvdmVycmlkZT8uaGlkZGVuIHx8IGZhbHNlLFxuICAgICAgICBvcmlnaW5hbFByaW9yaXR5OiBpdGVtLnByaW9yaXR5LFxuICAgICAgICBvcmlnaW5hbFBhcmVudE5hbWU6IHBhcmVudE5hbWUsXG4gICAgICB9O1xuXG4gICAgICAvLyBBcHBseSBBTEwgb3ZlcnJpZGVzOiBwcmlvcml0eSBBTkQgcHJvcGVydGllcyAodGV4dCwgaWNvbiwgZGVzY3JpcHRpb24sIGV0Yy4pXG4gICAgICBjb25zdCBlZmZlY3RpdmVQcmlvcml0eSA9IG92ZXJyaWRlPy5wcmlvcml0eSAhPT0gdW5kZWZpbmVkID8gb3ZlcnJpZGUucHJpb3JpdHkgOiBpdGVtLnByaW9yaXR5O1xuICAgICAgY29uc3QgZWZmZWN0aXZlSXRlbTogQVhQTWVudUl0ZW0gPSB7XG4gICAgICAgIC4uLml0ZW0sXG4gICAgICAgIC4uLm92ZXJyaWRlPy5wcm9wZXJ0aWVzLCAvLyBBcHBseSBwcm9wZXJ0eSBvdmVycmlkZXMgKHRleHQsIGljb24sIGRlc2NyaXB0aW9uKVxuICAgICAgICBwcmlvcml0eTogZWZmZWN0aXZlUHJpb3JpdHksXG4gICAgICB9O1xuXG4gICAgICAvLyBDcmVhdGUgdHJlZSBub2RlIGRhdGEgd2l0aCBlZmZlY3RpdmUgKG92ZXJyaWRkZW4pIHZhbHVlc1xuICAgICAgY29uc3Qgbm9kZURhdGE6IEFYUE1lbnVUcmVlTm9kZURhdGEgPSB7XG4gICAgICAgIG1lbnVJdGVtOiBlZmZlY3RpdmVJdGVtLFxuICAgICAgICBtZXRhZGF0YSxcbiAgICAgIH07XG5cbiAgICAgIC8vIENyZWF0ZSB0cmVlIG5vZGUgdXNpbmcgZWZmZWN0aXZlIChvdmVycmlkZGVuKSB2YWx1ZXNcbiAgICAgIGNvbnN0IHRyZWVOb2RlOiBBWFRyZWVWaWV3Tm9kZSA9IHtcbiAgICAgICAgaWQ6IGl0ZW1OYW1lIHx8IGl0ZW0ucGF0aCB8fCB0aGlzLmdlbmVyYXRlTm9kZUlkKCksXG4gICAgICAgIHRpdGxlOiBlZmZlY3RpdmVJdGVtLnRleHQgfHwgZWZmZWN0aXZlSXRlbS5wYXRoIHx8ICdVbm5hbWVkJyxcbiAgICAgICAgaWNvbjogZWZmZWN0aXZlSXRlbS5pY29uLFxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgWydjaGlsZHJlbiddOiBpdGVtLmNoaWxkcmVuID8gdGhpcy5jb252ZXJ0VG9UcmVlTm9kZXMoaXRlbS5jaGlsZHJlbiwgY3VzdG9taXphdGlvbiwgaXRlbU5hbWUpIDogdW5kZWZpbmVkLFxuICAgICAgICBjaGlsZHJlbkNvdW50OiBpdGVtLmNoaWxkcmVuPy5sZW5ndGgsXG4gICAgICAgIGRhdGE6IG5vZGVEYXRhLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHRyZWVOb2RlO1xuICAgIH0pO1xuXG4gICAgLy8gU29ydCBieSBwcmlvcml0eVxuICAgIG5vZGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGFQcmlvcml0eSA9IChhWydkYXRhJ10gYXMgQVhQTWVudVRyZWVOb2RlRGF0YSk/Lm1lbnVJdGVtLnByaW9yaXR5ID8/IDA7XG4gICAgICBjb25zdCBiUHJpb3JpdHkgPSAoYlsnZGF0YSddIGFzIEFYUE1lbnVUcmVlTm9kZURhdGEpPy5tZW51SXRlbS5wcmlvcml0eSA/PyAwO1xuICAgICAgcmV0dXJuIGFQcmlvcml0eSAtIGJQcmlvcml0eTtcbiAgICB9KTtcblxuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY3VzdG9taXphdGlvbiBmcm9tIHRyZWUgc3RydWN0dXJlXG4gICAqIEV4dHJhY3RzIHByaW9yaXRpZXMgYW5kIHBhcmVudCByZWxhdGlvbnNoaXBzIGZyb20gdHJlZSBub2Rlc1xuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVDdXN0b21pemF0aW9uRnJvbVRyZWUoXG4gICAgdHJlZU5vZGVzOiBBWFRyZWVWaWV3Tm9kZVtdLFxuICAgIGN1c3RvbWl6YXRpb246IEFYUE1lbnVDdXN0b21pemF0aW9uLFxuICAgIHBhcmVudE5hbWU/OiBzdHJpbmcsXG4gICk6IHZvaWQge1xuICAgIC8vIENhbGN1bGF0ZSBiYXNlIHByaW9yaXR5IGZvciB0aGlzIGxldmVsIHRvIG1haW50YWluIHJlbGF0aXZlIG9yZGVyaW5nXG4gICAgY29uc3QgYmFzZVByaW9yaXR5ID0gcGFyZW50TmFtZSA/IFBSSU9SSVRZX0JBU0VfTkVTVEVEIDogUFJJT1JJVFlfQkFTRV9ST09UO1xuICAgIGNvbnN0IHByaW9yaXR5U3RlcCA9IFBSSU9SSVRZX1NURVA7XG5cbiAgICB0cmVlTm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5vZGVEYXRhID0gKG5vZGVbJ2RhdGEnXSBhcyBBWFBNZW51VHJlZU5vZGVEYXRhKSB8fCBudWxsO1xuICAgICAgY29uc3QgbWVudUl0ZW0gPSBub2RlRGF0YT8ubWVudUl0ZW07XG5cbiAgICAgIGlmIChtZW51SXRlbT8ubmFtZSkge1xuICAgICAgICB0aGlzLmVuc3VyZU92ZXJyaWRlRXhpc3RzKGN1c3RvbWl6YXRpb24sIG1lbnVJdGVtLm5hbWUpO1xuXG4gICAgICAgIC8vIENhbGN1bGF0ZSBuZXcgcHJpb3JpdHkgYmFzZWQgb24gY3VycmVudCBwb3NpdGlvblxuICAgICAgICBjb25zdCBuZXdQcmlvcml0eSA9IGJhc2VQcmlvcml0eSArIGluZGV4ICogcHJpb3JpdHlTdGVwO1xuXG4gICAgICAgIC8vIEdldCBjdXJyZW50IGVmZmVjdGl2ZSBwcmlvcml0eSAoY29uc2lkZXJpbmcgZXhpc3Rpbmcgb3ZlcnJpZGVzKVxuICAgICAgICBjb25zdCBjdXJyZW50RWZmZWN0aXZlUHJpb3JpdHkgPVxuICAgICAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVJdGVtLm5hbWVdPy5wcmlvcml0eSA/PyBub2RlRGF0YS5tZXRhZGF0YS5vcmlnaW5hbFByaW9yaXR5ID8/IDA7XG5cbiAgICAgICAgLy8gQWx3YXlzIHVwZGF0ZSBwcmlvcml0eSB0byByZWZsZWN0IGN1cnJlbnQgcG9zaXRpb24gaW4gdHJlZVxuICAgICAgICAvLyBUaGlzIGVuc3VyZXMgcmVvcmRlcmluZyB3b3JrcyBjb3JyZWN0bHkgZXZlbiBhZnRlciBtdWx0aXBsZSBtb3Zlc1xuICAgICAgICBpZiAobmV3UHJpb3JpdHkgIT09IGN1cnJlbnRFZmZlY3RpdmVQcmlvcml0eSkge1xuICAgICAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVJdGVtLm5hbWVdLnByaW9yaXR5ID0gbmV3UHJpb3JpdHk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRlcm1pbmUgY3VycmVudCBlZmZlY3RpdmUgcGFyZW50IChjb25zaWRlcmluZyBleGlzdGluZyBvdmVycmlkZXMpXG4gICAgICAgIGNvbnN0IGN1cnJlbnRFZmZlY3RpdmVQYXJlbnQgPVxuICAgICAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVJdGVtLm5hbWVdPy5wYXJlbnROYW1lID8/IG5vZGVEYXRhLm1ldGFkYXRhLm9yaWdpbmFsUGFyZW50TmFtZTtcblxuICAgICAgICAvLyBVcGRhdGUgcGFyZW50IHJlbGF0aW9uc2hpcCBpZiBpdCBjaGFuZ2VkIGZyb20gY3VycmVudCBlZmZlY3RpdmUgcGFyZW50XG4gICAgICAgIGlmIChwYXJlbnROYW1lICE9PSBjdXJyZW50RWZmZWN0aXZlUGFyZW50KSB7XG4gICAgICAgICAgaWYgKHBhcmVudE5hbWUpIHtcbiAgICAgICAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVJdGVtLm5hbWVdLnBhcmVudE5hbWUgPSBwYXJlbnROYW1lO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBNb3ZpbmcgdG8gcm9vdCAtIHNldCB0byBudWxsIChub3QgdW5kZWZpbmVkKSBzbyBtaWRkbGV3YXJlIHdpbGwgcHJvY2VzcyBpdFxuICAgICAgICAgICAgLy8gbW92ZVRvKG51bGwpIG1vdmVzIHRoZSBpdGVtIHRvIHJvb3QgbGV2ZWxcbiAgICAgICAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVJdGVtLm5hbWVdLnBhcmVudE5hbWUgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENsZWFuIHVwIGVtcHR5IG92ZXJyaWRlc1xuICAgICAgICB0aGlzLmNsZWFudXBFbXB0eU92ZXJyaWRlKGN1c3RvbWl6YXRpb24sIG1lbnVJdGVtLm5hbWUpO1xuXG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHByb2Nlc3MgY2hpbGRyZW5cbiAgICAgICAgY29uc3Qgbm9kZUNoaWxkcmVuID0gbm9kZVsnY2hpbGRyZW4nXSBhcyBBWFRyZWVWaWV3Tm9kZVtdIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAobm9kZUNoaWxkcmVuICYmIG5vZGVDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDdXN0b21pemF0aW9uRnJvbVRyZWUobm9kZUNoaWxkcmVuLCBjdXN0b21pemF0aW9uLCBtZW51SXRlbS5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIG1lbnUgbmFtZSBiZWZvcmUgb3BlcmF0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1lbnVOYW1lKG1lbnVOYW1lOiBzdHJpbmcsIG9wZXJhdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFtZW51TmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNZW51IGl0ZW0gbXVzdCBoYXZlIGEgbmFtZSB0byBiZSAke29wZXJhdGlvbn1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlIG92ZXJyaWRlIG9iamVjdCBleGlzdHMgZm9yIGEgbWVudSBpdGVtXG4gICAqL1xuICBwcml2YXRlIGVuc3VyZU92ZXJyaWRlRXhpc3RzKGN1c3RvbWl6YXRpb246IEFYUE1lbnVDdXN0b21pemF0aW9uLCBtZW51TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFjdXN0b21pemF0aW9uLm92ZXJyaWRlc1ttZW51TmFtZV0pIHtcbiAgICAgIGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXSA9IHt9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbiB1cCBlbXB0eSBvdmVycmlkZSBvYmplY3RzXG4gICAqL1xuICBwcml2YXRlIGNsZWFudXBFbXB0eU92ZXJyaWRlKGN1c3RvbWl6YXRpb246IEFYUE1lbnVDdXN0b21pemF0aW9uLCBtZW51TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKE9iamVjdC5rZXlzKGN1c3RvbWl6YXRpb24ub3ZlcnJpZGVzW21lbnVOYW1lXSB8fCB7fSkubGVuZ3RoID09PSAwKSB7XG4gICAgICBkZWxldGUgY3VzdG9taXphdGlvbi5vdmVycmlkZXNbbWVudU5hbWVdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGbGF0dGVuIG1lbnUgaXRlbXMgcmVjdXJzaXZlbHkgaW50byBhIG1hcFxuICAgKi9cbiAgcHJpdmF0ZSBmbGF0dGVuTWVudUl0ZW1zKGl0ZW1zOiBBWFBNZW51SXRlbVtdKTogTWFwPHN0cmluZywgQVhQTWVudUl0ZW0+IHtcbiAgICBjb25zdCBpdGVtTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFYUE1lbnVJdGVtPigpO1xuXG4gICAgY29uc3QgZmxhdHRlbiA9IChpdGVtTGlzdDogQVhQTWVudUl0ZW1bXSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1MaXN0KSB7XG4gICAgICAgIGlmIChpdGVtLm5hbWUpIHtcbiAgICAgICAgICAvLyBDbG9uZSBpdGVtIHdpdGhvdXQgY2hpbGRyZW4gdG8gcmVidWlsZCBzdHJ1Y3R1cmVcbiAgICAgICAgICBpdGVtTWFwLnNldChpdGVtLm5hbWUsIHsgLi4uaXRlbSwgY2hpbGRyZW46IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgIGZsYXR0ZW4oaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZmxhdHRlbihpdGVtcyk7XG4gICAgcmV0dXJuIGl0ZW1NYXA7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdW5pcXVlIElEIGZvciB0cmVlIG5vZGVzXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlTm9kZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBub2RlLSR7RGF0ZS5ub3coKX0tJHtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMCl9YDtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","import { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPMenuCustomizerComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXPPopupLayoutBase, AXPPopupLayoutBaseComponent, AXPPopupLayoutComponent, } from '@acorex/platform/layout/views';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Menu Customizer Popup Component ----\n/**\n * Popup wrapper for the menu customizer component.\n * Provides a popup layout with actions for managing menu customizations.\n *\n * Pass the following data when opening the popup:\n * - scopeKey: string - The scope key for menu customizations\n * - showToolbar?: boolean - Whether to show the toolbar (default: true)\n * - allowAddItems?: boolean - Whether to allow adding items (default: true)\n * - dragBehavior?: AXTreeViewDragBehavior - Drag behavior (default: 'move')\n * - dragArea?: AXTreeViewDragArea - Drag area (default: 'handler')\n */\nexport class AXPMenuCustomizerPopupComponent extends AXPPopupLayoutBaseComponent {\n constructor() {\n super(...arguments);\n //#region ---- Component State ----\n /** Reference to the menu customizer component */\n this.menuCustomizer = viewChild(AXPMenuCustomizerComponent, ...(ngDevMode ? [{ debugName: \"menuCustomizer\" }] : []));\n /** The scope key for menu customizations (set by popup service) */\n this.scopeKey = signal('', ...(ngDevMode ? [{ debugName: \"scopeKey\" }] : []));\n /** Whether to show the toolbar */\n this.showToolbar = signal(true, ...(ngDevMode ? [{ debugName: \"showToolbar\" }] : []));\n /** Whether to allow adding custom items */\n this.allowAddItems = signal(true, ...(ngDevMode ? [{ debugName: \"allowAddItems\" }] : []));\n /** Drag behavior for the tree view */\n this.dragBehavior = signal('both', ...(ngDevMode ? [{ debugName: \"dragBehavior\" }] : []));\n /** Drag area for the tree view */\n this.dragArea = signal('handler', ...(ngDevMode ? [{ debugName: \"dragArea\" }] : []));\n /** Whether the component is ready to render (scopeKey is set) */\n this.isReady = computed(() => this.scopeKey() !== '', ...(ngDevMode ? [{ debugName: \"isReady\" }] : []));\n }\n //#endregion\n //#region ---- Lifecycle Methods ----\n async ngOnInit() {\n await super.ngOnInit();\n // Popup-specific initialization can go here\n }\n //#endregion\n //#region ---- UI Handlers ----\n /**\n * Returns the primary menu items for the popup layout.\n */\n getPrimaryMenuItems() {\n return [\n {\n title: '@general:actions.close.title',\n icon: 'fa-solid fa-xmark',\n command: {\n name: 'close',\n },\n },\n ];\n }\n /**\n * Handles when changes are saved\n */\n onSaved() {\n this.close(true);\n }\n /**\n * Handles when customization is cancelled\n */\n onCancelled() {\n this.close(false);\n }\n /**\n * Executes popup commands\n */\n execute(command) {\n if (command.name === 'close') {\n this.close(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPMenuCustomizerPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.16\", type: AXPMenuCustomizerPopupComponent, isStandalone: true, selector: \"axp-menu-customizer-popup\", host: { classAttribute: \"axp-menu-customizer-popup\" }, providers: [\n {\n provide: AXPPopupLayoutBase,\n useExisting: AXPMenuCustomizerPopupComponent,\n },\n ], viewQueries: [{ propertyName: \"menuCustomizer\", first: true, predicate: AXPMenuCustomizerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `\n <axp-popup-layout>\n <axp-page-content>\n @if (isReady()) {\n <axp-menu-customizer\n [scopeKey]=\"scopeKey()\"\n [showToolbar]=\"showToolbar()\"\n [allowAddItems]=\"allowAddItems()\"\n [dragBehavior]=\"dragBehavior()\"\n [dragArea]=\"dragArea()\"\n (saved)=\"onSaved()\"\n (cancelled)=\"onCancelled()\"\n ></axp-menu-customizer>\n }\n </axp-page-content>\n </axp-popup-layout>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"component\", type: AXPPopupLayoutComponent, selector: \"axp-popup-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: AXPMenuCustomizerComponent, selector: \"axp-menu-customizer\", inputs: [\"scopeKey\", \"showToolbar\", \"allowAddItems\", \"dragBehavior\", \"dragArea\"], outputs: [\"saved\", \"cancelled\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPMenuCustomizerPopupComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-menu-customizer-popup',\n template: `\n <axp-popup-layout>\n <axp-page-content>\n @if (isReady()) {\n <axp-menu-customizer\n [scopeKey]=\"scopeKey()\"\n [showToolbar]=\"showToolbar()\"\n [allowAddItems]=\"allowAddItems()\"\n [dragBehavior]=\"dragBehavior()\"\n [dragArea]=\"dragArea()\"\n (saved)=\"onSaved()\"\n (cancelled)=\"onCancelled()\"\n ></axp-menu-customizer>\n }\n </axp-page-content>\n </axp-popup-layout>\n `,\n imports: [\n CommonModule,\n AXTranslationModule,\n AXPPopupLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPMenuCustomizerComponent,\n ],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: AXPPopupLayoutBase,\n useExisting: AXPMenuCustomizerPopupComponent,\n },\n ],\n host: { class: 'axp-menu-customizer-popup' },\n }]\n }], propDecorators: { menuCustomizer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPMenuCustomizerComponent), { isSignal: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1jdXN0b21pemVyLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvbWVudS1tYW5hZ2VtZW50L2NvbXBvbmVudHMvbWVudS1jdXN0b21pemVyLXBvcHVwL21lbnUtY3VzdG9taXplci1wb3B1cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUcsT0FBTyxFQUNMLGtCQUFrQixFQUNsQiwyQkFBMkIsRUFDM0IsdUJBQXVCLEdBQ3hCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFGLFlBQVk7QUFFWix1REFBdUQ7QUFFdkQ7Ozs7Ozs7Ozs7R0FVRztBQW9DSCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsMkJBQTJCO0lBbkNoRjs7UUFvQ0UsdUNBQXVDO1FBRXZDLGlEQUFpRDtRQUN2QyxtQkFBYyxHQUFHLFNBQVMsQ0FBQywwQkFBMEIsMERBQUMsQ0FBQztRQUVqRSxtRUFBbUU7UUFDbkUsYUFBUSxHQUFHLE1BQU0sQ0FBUyxFQUFFLG9EQUFDLENBQUM7UUFFOUIsa0NBQWtDO1FBQ2xDLGdCQUFXLEdBQUcsTUFBTSxDQUFVLElBQUksdURBQUMsQ0FBQztRQUVwQywyQ0FBMkM7UUFDM0Msa0JBQWEsR0FBRyxNQUFNLENBQVUsSUFBSSx5REFBQyxDQUFDO1FBRXRDLHNDQUFzQztRQUN0QyxpQkFBWSxHQUFHLE1BQU0sQ0FBeUIsTUFBTSx3REFBQyxDQUFDO1FBRXRELGtDQUFrQztRQUNsQyxhQUFRLEdBQUcsTUFBTSxDQUFxQixTQUFTLG9EQUFDLENBQUM7UUFFakQsaUVBQWlFO1FBQ3ZELFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsbURBQUMsQ0FBQztLQXNENUQ7SUFwREMsWUFBWTtJQUVaLHlDQUF5QztJQUVoQyxLQUFLLENBQUMsUUFBUTtRQUNyQixNQUFNLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2Qiw0Q0FBNEM7SUFDOUMsQ0FBQztJQUVELFlBQVk7SUFFWixtQ0FBbUM7SUFFbkM7O09BRUc7SUFDZ0IsbUJBQW1CO1FBQ3BDLE9BQU87WUFDTDtnQkFDRSxLQUFLLEVBQUUsOEJBQThCO2dCQUNyQyxJQUFJLEVBQUUsbUJBQW1CO2dCQUN6QixPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLE9BQU87aUJBQ2Q7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDTyxPQUFPO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDTyxXQUFXO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ00sT0FBTyxDQUFDLE9BQTBCO1FBQ3pDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDOytHQXpFVSwrQkFBK0I7bUdBQS9CLCtCQUErQiwrSEFSL0I7WUFDVDtnQkFDRSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsK0JBQStCO2FBQzdDO1NBQ0YsMEVBT29DLDBCQUEwQix1RkFyQ3JEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JULDJEQUVDLFlBQVksOEJBQ1osbUJBQW1CLCtCQUNuQix1QkFBdUIsNkRBQ3ZCLDRCQUE0QixnaUJBQzVCLDBCQUEwQjs7NEZBV2pCLCtCQUErQjtrQkFuQzNDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JUO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2Qiw0QkFBNEI7d0JBQzVCLDBCQUEwQjtxQkFDM0I7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLGlDQUFpQzt5QkFDN0M7cUJBQ0Y7b0JBQ0QsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLDJCQUEyQixFQUFFO2lCQUM3QztnR0FLc0MsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFRyZWVWaWV3RHJhZ0FyZWEsIEFYVHJlZVZpZXdEcmFnQmVoYXZpb3IgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdHJlZS12aWV3JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQQWN0aW9uTWVudUl0ZW0sIEFYUEV4ZWN1dGVDb21tYW5kIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUE1lbnVDdXN0b21pemVyQ29tcG9uZW50LCBBWFBUaGVtZUxheW91dEJsb2NrQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBWFBQb3B1cExheW91dEJhc2UsXG4gIEFYUFBvcHVwTGF5b3V0QmFzZUNvbXBvbmVudCxcbiAgQVhQUG9wdXBMYXlvdXRDb21wb25lbnQsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3ZpZXdzJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBzaWduYWwsIHZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgTWVudSBDdXN0b21pemVyIFBvcHVwIENvbXBvbmVudCAgIC0tLS1cblxuLyoqXG4gKiBQb3B1cCB3cmFwcGVyIGZvciB0aGUgbWVudSBjdXN0b21pemVyIGNvbXBvbmVudC5cbiAqIFByb3ZpZGVzIGEgcG9wdXAgbGF5b3V0IHdpdGggYWN0aW9ucyBmb3IgbWFuYWdpbmcgbWVudSBjdXN0b21pemF0aW9ucy5cbiAqXG4gKiBQYXNzIHRoZSBmb2xsb3dpbmcgZGF0YSB3aGVuIG9wZW5pbmcgdGhlIHBvcHVwOlxuICogLSBzY29wZUtleTogc3RyaW5nIC0gVGhlIHNjb3BlIGtleSBmb3IgbWVudSBjdXN0b21pemF0aW9uc1xuICogLSBzaG93VG9vbGJhcj86IGJvb2xlYW4gLSBXaGV0aGVyIHRvIHNob3cgdGhlIHRvb2xiYXIgKGRlZmF1bHQ6IHRydWUpXG4gKiAtIGFsbG93QWRkSXRlbXM/OiBib29sZWFuIC0gV2hldGhlciB0byBhbGxvdyBhZGRpbmcgaXRlbXMgKGRlZmF1bHQ6IHRydWUpXG4gKiAtIGRyYWdCZWhhdmlvcj86IEFYVHJlZVZpZXdEcmFnQmVoYXZpb3IgLSBEcmFnIGJlaGF2aW9yIChkZWZhdWx0OiAnbW92ZScpXG4gKiAtIGRyYWdBcmVhPzogQVhUcmVlVmlld0RyYWdBcmVhIC0gRHJhZyBhcmVhIChkZWZhdWx0OiAnaGFuZGxlcicpXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1tZW51LWN1c3RvbWl6ZXItcG9wdXAnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxheHAtcG9wdXAtbGF5b3V0PlxuICAgICAgPGF4cC1wYWdlLWNvbnRlbnQ+XG4gICAgICAgIEBpZiAoaXNSZWFkeSgpKSB7XG4gICAgICAgICAgPGF4cC1tZW51LWN1c3RvbWl6ZXJcbiAgICAgICAgICAgIFtzY29wZUtleV09XCJzY29wZUtleSgpXCJcbiAgICAgICAgICAgIFtzaG93VG9vbGJhcl09XCJzaG93VG9vbGJhcigpXCJcbiAgICAgICAgICAgIFthbGxvd0FkZEl0ZW1zXT1cImFsbG93QWRkSXRlbXMoKVwiXG4gICAgICAgICAgICBbZHJhZ0JlaGF2aW9yXT1cImRyYWdCZWhhdmlvcigpXCJcbiAgICAgICAgICAgIFtkcmFnQXJlYV09XCJkcmFnQXJlYSgpXCJcbiAgICAgICAgICAgIChzYXZlZCk9XCJvblNhdmVkKClcIlxuICAgICAgICAgICAgKGNhbmNlbGxlZCk9XCJvbkNhbmNlbGxlZCgpXCJcbiAgICAgICAgICA+PC9heHAtbWVudS1jdXN0b21pemVyPlxuICAgICAgICB9XG4gICAgICA8L2F4cC1wYWdlLWNvbnRlbnQ+XG4gICAgPC9heHAtcG9wdXAtbGF5b3V0PlxuICBgLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgQVhQUG9wdXBMYXlvdXRDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgICBBWFBNZW51Q3VzdG9taXplckNvbXBvbmVudCxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQUG9wdXBMYXlvdXRCYXNlLFxuICAgICAgdXNlRXhpc3Rpbmc6IEFYUE1lbnVDdXN0b21pemVyUG9wdXBDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgaG9zdDogeyBjbGFzczogJ2F4cC1tZW51LWN1c3RvbWl6ZXItcG9wdXAnIH0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUE1lbnVDdXN0b21pemVyUG9wdXBDb21wb25lbnQgZXh0ZW5kcyBBWFBQb3B1cExheW91dEJhc2VDb21wb25lbnQge1xuICAvLyNyZWdpb24gLS0tLSAgIENvbXBvbmVudCBTdGF0ZSAgIC0tLS1cblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBtZW51IGN1c3RvbWl6ZXIgY29tcG9uZW50ICovXG4gIHByb3RlY3RlZCBtZW51Q3VzdG9taXplciA9IHZpZXdDaGlsZChBWFBNZW51Q3VzdG9taXplckNvbXBvbmVudCk7XG5cbiAgLyoqIFRoZSBzY29wZSBrZXkgZm9yIG1lbnUgY3VzdG9taXphdGlvbnMgKHNldCBieSBwb3B1cCBzZXJ2aWNlKSAqL1xuICBzY29wZUtleSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSB0b29sYmFyICovXG4gIHNob3dUb29sYmFyID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFsbG93IGFkZGluZyBjdXN0b20gaXRlbXMgKi9cbiAgYWxsb3dBZGRJdGVtcyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICAvKiogRHJhZyBiZWhhdmlvciBmb3IgdGhlIHRyZWUgdmlldyAqL1xuICBkcmFnQmVoYXZpb3IgPSBzaWduYWw8QVhUcmVlVmlld0RyYWdCZWhhdmlvcj4oJ2JvdGgnKTtcblxuICAvKiogRHJhZyBhcmVhIGZvciB0aGUgdHJlZSB2aWV3ICovXG4gIGRyYWdBcmVhID0gc2lnbmFsPEFYVHJlZVZpZXdEcmFnQXJlYT4oJ2hhbmRsZXInKTtcblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIHJlYWR5IHRvIHJlbmRlciAoc2NvcGVLZXkgaXMgc2V0KSAqL1xuICBwcm90ZWN0ZWQgaXNSZWFkeSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc2NvcGVLZXkoKSAhPT0gJycpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgTGlmZWN5Y2xlIE1ldGhvZHMgICAtLS0tXG5cbiAgb3ZlcnJpZGUgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvLyBQb3B1cC1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBjYW4gZ28gaGVyZVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBVSSBIYW5kbGVycyAgIC0tLS1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcHJpbWFyeSBtZW51IGl0ZW1zIGZvciB0aGUgcG9wdXAgbGF5b3V0LlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldFByaW1hcnlNZW51SXRlbXMoKTogQVhQQWN0aW9uTWVudUl0ZW1bXSB8IFByb21pc2U8QVhQQWN0aW9uTWVudUl0ZW1bXT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiAnQGdlbmVyYWw6YWN0aW9ucy5jbG9zZS50aXRsZScsXG4gICAgICAgIGljb246ICdmYS1zb2xpZCBmYS14bWFyaycsXG4gICAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgICBuYW1lOiAnY2xvc2UnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgd2hlbiBjaGFuZ2VzIGFyZSBzYXZlZFxuICAgKi9cbiAgcHJvdGVjdGVkIG9uU2F2ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZSh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHdoZW4gY3VzdG9taXphdGlvbiBpcyBjYW5jZWxsZWRcbiAgICovXG4gIHByb3RlY3RlZCBvbkNhbmNlbGxlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyBwb3B1cCBjb21tYW5kc1xuICAgKi9cbiAgb3ZlcnJpZGUgZXhlY3V0ZShjb21tYW5kOiBBWFBFeGVjdXRlQ29tbWFuZCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29tbWFuZC5uYW1lID09PSAnY2xvc2UnKSB7XG4gICAgICB0aGlzLmNsb3NlKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG4iXX0=","//#region ---- Imports ----\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWorkflowAction } from '@acorex/platform/workflow';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { AXPMenuCustomizerPopupComponent } from '../components/menu-customizer-popup/menu-customizer-popup.component';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Open Menu Customizer Action ----\n/**\n * Workflow action that opens the menu customizer popup.\n * Expects the context to contain:\n * - data: The entity data (must have an 'id' property)\n * - options.scopePrefix: The prefix for the scope key (e.g., 'edition', 'tenant')\n * - options.title: Optional custom title for the popup\n * - options.showToolbar: Whether to show toolbar (default: true)\n * - options.allowAddItems: Whether to allow adding items (default: true)\n * - options.dragBehavior: Drag behavior - 'none' | 'move' | 'copy' (default: 'move')\n * - options.dragArea: Drag area - 'node' | 'handler' (default: 'handler')\n */\nexport class AXMOpenMenuCustomizerAction extends AXPWorkflowAction {\n constructor() {\n super(...arguments);\n //#region ---- Dependencies ----\n this.popupService = inject(AXPopupService);\n this.translateService = inject(AXTranslationService);\n }\n //#endregion\n //#region ---- Execute ----\n async execute(context) {\n // Get entity data\n const data = context.getVariable('data');\n const entityId = data?.id;\n if (!entityId) {\n console.error('Menu customizer requires entity data with an id property');\n context.setOutput('result', false);\n return;\n }\n // Get scope configuration\n const scopePrefix = context.getVariable('options.scopePrefix') || 'entity';\n const scopeKey = `${scopePrefix}:${entityId}`;\n // Get optional title\n const customTitle = context.getVariable('options.title');\n const defaultTitle = await this.translateService.translateAsync('@platform-management:menu-management.components.menu-customizer-popup.title');\n const entityTitle = data?.title || data?.name || entityId;\n const title = customTitle || `${defaultTitle} - ${entityTitle}`;\n // Open popup using the component from platform/layout/components\n // Pass signals to properly bind to the popup component's signal properties\n const result = await this.popupService.open(AXPMenuCustomizerPopupComponent, {\n title,\n size: 'lg',\n data: {\n scopeKey: signal(scopeKey),\n showToolbar: signal(context.getVariable('options.showToolbar') ?? true),\n allowAddItems: signal(context.getVariable('options.allowAddItems') ?? true),\n dragBehavior: signal(context.getVariable('options.dragBehavior') ?? 'both'),\n dragArea: signal(context.getVariable('options.dragArea') ?? 'handler'),\n },\n });\n // Set result based on popup outcome\n context.setOutput('result', result?.data === true);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMOpenMenuCustomizerAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMOpenMenuCustomizerAction }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMOpenMenuCustomizerAction, decorators: [{\n type: Injectable\n }] });\n//#endregion\n//#region ---- Customize Menu Workflow ----\n/**\n * Workflow definition for customizing menus.\n * Opens the menu customizer popup and handles the result.\n */\nexport const AXMCustomizeMenuWorkflow = {\n startStepId: 'open-customizer',\n steps: {\n 'open-customizer': {\n action: 'open-menu-customizer',\n nextSteps: [\n {\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' }],\n nextStepId: 'show-success-toast',\n },\n ],\n },\n 'show-success-toast': {\n action: 'AXPToastAction',\n input: {\n color: 'success',\n title: '@platform-management:menu-management.messages.success.customization-saved',\n },\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXplLW1lbnUud29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL21lbnUtbWFuYWdlbWVudC93b3JrZmxvd3MvY3VzdG9taXplLW1lbnUud29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQWUsaUJBQWlCLEVBQXNCLE1BQU0sMkJBQTJCLENBQUM7QUFDL0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDOztBQUV0SCxZQUFZO0FBRVosbURBQW1EO0FBRW5EOzs7Ozs7Ozs7O0dBVUc7QUFFSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsaUJBQWlCO0lBRGxFOztRQUVFLG9DQUFvQztRQUU1QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQWdEekQ7SUE5Q0MsWUFBWTtJQUVaLCtCQUErQjtJQUUvQixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQTJCO1FBQ3ZDLGtCQUFrQjtRQUNsQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25DLE9BQU87UUFDVCxDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsSUFBSSxRQUFRLENBQUM7UUFDM0UsTUFBTSxRQUFRLEdBQUcsR0FBRyxXQUFXLElBQUksUUFBUSxFQUFFLENBQUM7UUFFOUMscUJBQXFCO1FBQ3JCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUM3RCw2RUFBNkUsQ0FDOUUsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLENBQUM7UUFDMUQsTUFBTSxLQUFLLEdBQUcsV0FBVyxJQUFJLEdBQUcsWUFBWSxNQUFNLFdBQVcsRUFBRSxDQUFDO1FBRWhFLGlFQUFpRTtRQUNqRSwyRUFBMkU7UUFDM0UsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRTtZQUMzRSxLQUFLO1lBQ0wsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQzFCLFdBQVcsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUksQ0FBQztnQkFDdkUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLHVCQUF1QixDQUFDLElBQUksSUFBSSxDQUFDO2dCQUMzRSxZQUFZLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsSUFBSSxNQUFNLENBQUM7Z0JBQzNFLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLFNBQVMsQ0FBQzthQUN2RTtTQUNGLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7K0dBakRVLDJCQUEyQjttSEFBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVOztBQXVEWCxZQUFZO0FBRVosK0NBQStDO0FBRS9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFnQjtJQUNuRCxXQUFXLEVBQUUsaUJBQWlCO0lBQzlCLEtBQUssRUFBRTtRQUNMLGlCQUFpQixFQUFFO1lBQ2pCLE1BQU0sRUFBRSxzQkFBc0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNUO29CQUNFLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUscUNBQXFDLEVBQUUsQ0FBQztvQkFDbkYsVUFBVSxFQUFFLG9CQUFvQjtpQkFDakM7YUFDRjtTQUNGO1FBQ0Qsb0JBQW9CLEVBQUU7WUFDcEIsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSwyRUFBMkU7YUFDbkY7U0FDRjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3csIEFYUFdvcmtmbG93QWN0aW9uLCBBWFBXb3JrZmxvd0NvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBNZW51Q3VzdG9taXplclBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9tZW51LWN1c3RvbWl6ZXItcG9wdXAvbWVudS1jdXN0b21pemVyLXBvcHVwLmNvbXBvbmVudCc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIE9wZW4gTWVudSBDdXN0b21pemVyIEFjdGlvbiAgIC0tLS1cblxuLyoqXG4gKiBXb3JrZmxvdyBhY3Rpb24gdGhhdCBvcGVucyB0aGUgbWVudSBjdXN0b21pemVyIHBvcHVwLlxuICogRXhwZWN0cyB0aGUgY29udGV4dCB0byBjb250YWluOlxuICogLSBkYXRhOiBUaGUgZW50aXR5IGRhdGEgKG11c3QgaGF2ZSBhbiAnaWQnIHByb3BlcnR5KVxuICogLSBvcHRpb25zLnNjb3BlUHJlZml4OiBUaGUgcHJlZml4IGZvciB0aGUgc2NvcGUga2V5IChlLmcuLCAnZWRpdGlvbicsICd0ZW5hbnQnKVxuICogLSBvcHRpb25zLnRpdGxlOiBPcHRpb25hbCBjdXN0b20gdGl0bGUgZm9yIHRoZSBwb3B1cFxuICogLSBvcHRpb25zLnNob3dUb29sYmFyOiBXaGV0aGVyIHRvIHNob3cgdG9vbGJhciAoZGVmYXVsdDogdHJ1ZSlcbiAqIC0gb3B0aW9ucy5hbGxvd0FkZEl0ZW1zOiBXaGV0aGVyIHRvIGFsbG93IGFkZGluZyBpdGVtcyAoZGVmYXVsdDogdHJ1ZSlcbiAqIC0gb3B0aW9ucy5kcmFnQmVoYXZpb3I6IERyYWcgYmVoYXZpb3IgLSAnbm9uZScgfCAnbW92ZScgfCAnY29weScgKGRlZmF1bHQ6ICdtb3ZlJylcbiAqIC0gb3B0aW9ucy5kcmFnQXJlYTogRHJhZyBhcmVhIC0gJ25vZGUnIHwgJ2hhbmRsZXInIChkZWZhdWx0OiAnaGFuZGxlcicpXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1PcGVuTWVudUN1c3RvbWl6ZXJBY3Rpb24gZXh0ZW5kcyBBWFBXb3JrZmxvd0FjdGlvbiB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgRGVwZW5kZW5jaWVzICAgLS0tLVxuXG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIEV4ZWN1dGUgICAtLS0tXG5cbiAgYXN5bmMgZXhlY3V0ZShjb250ZXh0OiBBWFBXb3JrZmxvd0NvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBHZXQgZW50aXR5IGRhdGFcbiAgICBjb25zdCBkYXRhID0gY29udGV4dC5nZXRWYXJpYWJsZSgnZGF0YScpO1xuICAgIGNvbnN0IGVudGl0eUlkID0gZGF0YT8uaWQ7XG5cbiAgICBpZiAoIWVudGl0eUlkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdNZW51IGN1c3RvbWl6ZXIgcmVxdWlyZXMgZW50aXR5IGRhdGEgd2l0aCBhbiBpZCBwcm9wZXJ0eScpO1xuICAgICAgY29udGV4dC5zZXRPdXRwdXQoJ3Jlc3VsdCcsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBHZXQgc2NvcGUgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IHNjb3BlUHJlZml4ID0gY29udGV4dC5nZXRWYXJpYWJsZSgnb3B0aW9ucy5zY29wZVByZWZpeCcpIHx8ICdlbnRpdHknO1xuICAgIGNvbnN0IHNjb3BlS2V5ID0gYCR7c2NvcGVQcmVmaXh9OiR7ZW50aXR5SWR9YDtcblxuICAgIC8vIEdldCBvcHRpb25hbCB0aXRsZVxuICAgIGNvbnN0IGN1c3RvbVRpdGxlID0gY29udGV4dC5nZXRWYXJpYWJsZSgnb3B0aW9ucy50aXRsZScpO1xuICAgIGNvbnN0IGRlZmF1bHRUaXRsZSA9IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYyhcbiAgICAgICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQuY29tcG9uZW50cy5tZW51LWN1c3RvbWl6ZXItcG9wdXAudGl0bGUnLFxuICAgICk7XG4gICAgY29uc3QgZW50aXR5VGl0bGUgPSBkYXRhPy50aXRsZSB8fCBkYXRhPy5uYW1lIHx8IGVudGl0eUlkO1xuICAgIGNvbnN0IHRpdGxlID0gY3VzdG9tVGl0bGUgfHwgYCR7ZGVmYXVsdFRpdGxlfSAtICR7ZW50aXR5VGl0bGV9YDtcblxuICAgIC8vIE9wZW4gcG9wdXAgdXNpbmcgdGhlIGNvbXBvbmVudCBmcm9tIHBsYXRmb3JtL2xheW91dC9jb21wb25lbnRzXG4gICAgLy8gUGFzcyBzaWduYWxzIHRvIHByb3Blcmx5IGJpbmQgdG8gdGhlIHBvcHVwIGNvbXBvbmVudCdzIHNpZ25hbCBwcm9wZXJ0aWVzXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3BlbihBWFBNZW51Q3VzdG9taXplclBvcHVwQ29tcG9uZW50LCB7XG4gICAgICB0aXRsZSxcbiAgICAgIHNpemU6ICdsZycsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHNjb3BlS2V5OiBzaWduYWwoc2NvcGVLZXkpLFxuICAgICAgICBzaG93VG9vbGJhcjogc2lnbmFsKGNvbnRleHQuZ2V0VmFyaWFibGUoJ29wdGlvbnMuc2hvd1Rvb2xiYXInKSA/PyB0cnVlKSxcbiAgICAgICAgYWxsb3dBZGRJdGVtczogc2lnbmFsKGNvbnRleHQuZ2V0VmFyaWFibGUoJ29wdGlvbnMuYWxsb3dBZGRJdGVtcycpID8/IHRydWUpLFxuICAgICAgICBkcmFnQmVoYXZpb3I6IHNpZ25hbChjb250ZXh0LmdldFZhcmlhYmxlKCdvcHRpb25zLmRyYWdCZWhhdmlvcicpID8/ICdib3RoJyksXG4gICAgICAgIGRyYWdBcmVhOiBzaWduYWwoY29udGV4dC5nZXRWYXJpYWJsZSgnb3B0aW9ucy5kcmFnQXJlYScpID8/ICdoYW5kbGVyJyksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gU2V0IHJlc3VsdCBiYXNlZCBvbiBwb3B1cCBvdXRjb21lXG4gICAgY29udGV4dC5zZXRPdXRwdXQoJ3Jlc3VsdCcsIHJlc3VsdD8uZGF0YSA9PT0gdHJ1ZSk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ3VzdG9taXplIE1lbnUgV29ya2Zsb3cgICAtLS0tXG5cbi8qKlxuICogV29ya2Zsb3cgZGVmaW5pdGlvbiBmb3IgY3VzdG9taXppbmcgbWVudXMuXG4gKiBPcGVucyB0aGUgbWVudSBjdXN0b21pemVyIHBvcHVwIGFuZCBoYW5kbGVzIHRoZSByZXN1bHQuXG4gKi9cbmV4cG9ydCBjb25zdCBBWE1DdXN0b21pemVNZW51V29ya2Zsb3c6IEFYUFdvcmtmbG93ID0ge1xuICBzdGFydFN0ZXBJZDogJ29wZW4tY3VzdG9taXplcicsXG4gIHN0ZXBzOiB7XG4gICAgJ29wZW4tY3VzdG9taXplcic6IHtcbiAgICAgIGFjdGlvbjogJ29wZW4tbWVudS1jdXN0b21pemVyJyxcbiAgICAgIG5leHRTdGVwczogW1xuICAgICAgICB7XG4gICAgICAgICAgY29uZGl0aW9uczogW3sgdHlwZTogJ1NJTkdMRScsIGV4cHJlc3Npb246ICdjb250ZXh0LmdldE91dHB1dChcInJlc3VsdFwiKSA9PSB0cnVlJyB9XSxcbiAgICAgICAgICBuZXh0U3RlcElkOiAnc2hvdy1zdWNjZXNzLXRvYXN0JyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICAnc2hvdy1zdWNjZXNzLXRvYXN0Jzoge1xuICAgICAgYWN0aW9uOiAnQVhQVG9hc3RBY3Rpb24nLFxuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgdGl0bGU6ICdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQubWVzc2FnZXMuc3VjY2Vzcy5jdXN0b21pemF0aW9uLXNhdmVkJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn07XG5cbi8vI2VuZHJlZ2lvblxuIl19","//#region ---- Imports ----\nimport { AXP_MENU_CUSTOMIZER_SERVICE } from '@acorex/platform/layout/components';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { NgModule } from '@angular/core';\nimport { AXPMenuManagementService } from './menu-management.service';\nimport { AXMCustomizeMenuWorkflow, AXMOpenMenuCustomizerAction } from './workflows/customize-menu.workflow';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/workflow\";\n//#endregion\n//#region ---- Module ----\n/**\n * Module for menu management features including the menu customizer\n * and related workflows.\n */\nexport class AXMMenuManagementModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMMenuManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMMenuManagementModule, imports: [i1.AXPWorkflowModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMMenuManagementModule, providers: [\n {\n provide: AXP_MENU_CUSTOMIZER_SERVICE,\n useExisting: AXPMenuManagementService,\n },\n ], imports: [AXPWorkflowModule.forChild({\n workflows: {\n 'customize-menu': AXMCustomizeMenuWorkflow,\n },\n actions: {\n 'open-menu-customizer': AXMOpenMenuCustomizerAction,\n },\n })] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMMenuManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXPWorkflowModule.forChild({\n workflows: {\n 'customize-menu': AXMCustomizeMenuWorkflow,\n },\n actions: {\n 'open-menu-customizer': AXMOpenMenuCustomizerAction,\n },\n }),\n ],\n providers: [\n {\n provide: AXP_MENU_CUSTOMIZER_SERVICE,\n useExisting: AXPMenuManagementService,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1tYW5hZ2VtZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvbWVudS1tYW5hZ2VtZW50L21lbnUtbWFuYWdlbWVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDJCQUEyQixFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQUU1RyxZQUFZO0FBRVosOEJBQThCO0FBRTlCOzs7R0FHRztBQW1CSCxNQUFNLE9BQU8sdUJBQXVCOytHQUF2Qix1QkFBdUI7Z0hBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLGFBUHZCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLDJCQUEyQjtnQkFDcEMsV0FBVyxFQUFFLHdCQUF3QjthQUN0QztTQUNGLFlBZEMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO2dCQUN6QixTQUFTLEVBQUU7b0JBQ1QsZ0JBQWdCLEVBQUUsd0JBQXdCO2lCQUMzQztnQkFDRCxPQUFPLEVBQUU7b0JBQ1Asc0JBQXNCLEVBQUUsMkJBQTJCO2lCQUNwRDthQUNGLENBQUM7OzRGQVNPLHVCQUF1QjtrQkFsQm5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLGlCQUFpQixDQUFDLFFBQVEsQ0FBQzs0QkFDekIsU0FBUyxFQUFFO2dDQUNULGdCQUFnQixFQUFFLHdCQUF3Qjs2QkFDM0M7NEJBQ0QsT0FBTyxFQUFFO2dDQUNQLHNCQUFzQixFQUFFLDJCQUEyQjs2QkFDcEQ7eUJBQ0YsQ0FBQztxQkFDSDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDJCQUEyQjs0QkFDcEMsV0FBVyxFQUFFLHdCQUF3Qjt5QkFDdEM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gLS0tLSAgIEltcG9ydHMgICAtLS0tXG5cbmltcG9ydCB7IEFYUF9NRU5VX0NVU1RPTUlaRVJfU0VSVklDRSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBNZW51TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuL21lbnUtbWFuYWdlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTUN1c3RvbWl6ZU1lbnVXb3JrZmxvdywgQVhNT3Blbk1lbnVDdXN0b21pemVyQWN0aW9uIH0gZnJvbSAnLi93b3JrZmxvd3MvY3VzdG9taXplLW1lbnUud29ya2Zsb3cnO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBNb2R1bGUgICAtLS0tXG5cbi8qKlxuICogTW9kdWxlIGZvciBtZW51IG1hbmFnZW1lbnQgZmVhdHVyZXMgaW5jbHVkaW5nIHRoZSBtZW51IGN1c3RvbWl6ZXJcbiAqIGFuZCByZWxhdGVkIHdvcmtmbG93cy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEFYUFdvcmtmbG93TW9kdWxlLmZvckNoaWxkKHtcbiAgICAgIHdvcmtmbG93czoge1xuICAgICAgICAnY3VzdG9taXplLW1lbnUnOiBBWE1DdXN0b21pemVNZW51V29ya2Zsb3csXG4gICAgICB9LFxuICAgICAgYWN0aW9uczoge1xuICAgICAgICAnb3Blbi1tZW51LWN1c3RvbWl6ZXInOiBBWE1PcGVuTWVudUN1c3RvbWl6ZXJBY3Rpb24sXG4gICAgICB9LFxuICAgIH0pLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfTUVOVV9DVVNUT01JWkVSX1NFUlZJQ0UsXG4gICAgICB1c2VFeGlzdGluZzogQVhQTWVudU1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTU1lbnVNYW5hZ2VtZW50TW9kdWxlIHt9XG5cbi8vI2VuZHJlZ2lvblxuIl19","/**\n * Token that returns current ISO date-time string.\n */\nexport class AXMTokenProvider {\n constructor() {\n this.name = 'now';\n this.title = 'Now';\n this.description = 'Current date and time in ISO format';\n }\n execute() {\n return Promise.resolve(new Date().toISOString());\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3Rva2VuL3Rva2VuLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUE3QjtRQUNFLFNBQUksR0FBRyxLQUFLLENBQUM7UUFDYixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsZ0JBQVcsR0FBRyxxQ0FBcUMsQ0FBQztJQUt0RCxDQUFDO0lBSEMsT0FBTztRQUNMLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQVG9rZW5EZWZpbml0aW9uUHJvdmlkZXIgfSBmcm9tIFwiQGFjb3JleC9wbGF0Zm9ybS9jb21tb25cIjtcblxuLyoqXG4gKiBUb2tlbiB0aGF0IHJldHVybnMgY3VycmVudCBJU08gZGF0ZS10aW1lIHN0cmluZy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFYTVRva2VuUHJvdmlkZXIgaW1wbGVtZW50cyBBWFBUb2tlbkRlZmluaXRpb25Qcm92aWRlcjxzdHJpbmc+IHtcbiAgbmFtZSA9ICdub3cnO1xuICB0aXRsZSA9ICdOb3cnO1xuICBkZXNjcmlwdGlvbiA9ICdDdXJyZW50IGRhdGUgYW5kIHRpbWUgaW4gSVNPIGZvcm1hdCc7XG5cbiAgZXhlY3V0ZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgfVxufVxuXG4iXX0=","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMTokensService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMTokensServiceImpl extends AXMEntityCrudServiceImpl {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.token.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokensServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokensServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokensServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL3Rva2VuL3Rva2Vucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFHekMsTUFBTSxPQUFnQixnQkFBaUIsU0FBUSx3QkFHOUM7Q0FBSTtBQUdMLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSx3QkFBcUQ7SUFDN0Y7UUFDRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7K0dBSFUsb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTVRva2VuRW50aXR5TW9kZWwgfSBmcm9tICcuL3Rva2Vucy50eXBlcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWE1Ub2tlbnNTZXJ2aWNlIGV4dGVuZHMgQVhNRW50aXR5Q3J1ZFNlcnZpY2VJbXBsPFxuICBzdHJpbmcsXG4gIEFYTVRva2VuRW50aXR5TW9kZWxcbj4geyB9XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1Ub2tlbnNTZXJ2aWNlSW1wbCBleHRlbmRzIEFYTUVudGl0eUNydWRTZXJ2aWNlSW1wbDxzdHJpbmcsIEFYTVRva2VuRW50aXR5TW9kZWw+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLnRva2VuLm5hbWV9YCk7XG4gIH1cbn1cbiJdfQ==","//#region ---- Imports ----\nimport { AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { AXMTokensService } from '../../entities/token/tokens.service';\n//#endregion\n//#region ---- Factory Cache ----\n/**\n * Global cache for loaded token providers.\n * Cleared when token entity changes occur.\n */\nlet cachedProviders = null;\n/**\n * Clears the cached providers, forcing reload on next access.\n */\nexport function clearDynamicTokenProvidersCache() {\n cachedProviders = null;\n}\n//#endregion\n//#region ---- Factory Function ----\n/**\n * Factory function that loads tokens from backend and creates providers for each.\n * Uses global caching - tokens are loaded once and cached until invalidated.\n *\n * @param injector Angular injector to resolve dependencies\n * @returns Promise that resolves to an array of token providers\n */\nexport async function createDynamicTokenProviders(injector) {\n // Return cached providers if available\n if (cachedProviders) {\n return cachedProviders;\n }\n // Load providers and cache the promise\n cachedProviders = loadTokenProviders(injector);\n return cachedProviders;\n}\n/**\n * Internal function that loads tokens from backend and creates providers.\n */\nasync function loadTokenProviders(injector) {\n const tokensService = injector.get(AXMTokensService);\n // const entityResolver = injector.get(AXPEntityDefinitionRegistryService);\n // const tokenEntityDef = await entityResolver.exists(RootConfig.module.name, RootConfig.entities.token.name);\n // if (!tokenEntityDef) {\n // return [];\n // }\n try {\n // Load all tokens from backend\n const queryResult = await tokensService.query({\n skip: 0,\n take: 1000, // Load all tokens (adjust if needed)\n });\n if (!queryResult || !queryResult.items || queryResult.items.length === 0) {\n return [];\n }\n // Convert each token entity to a provider\n // Pass injector instead of expressionEvaluator to avoid circular dependency\n return queryResult.items.map((token) => {\n return createTokenProvider(token, injector);\n });\n }\n catch (error) {\n console.error('[DynamicTokenProvider] Failed to load tokens from backend:', error);\n throw error; // Throw error as requested\n }\n}\n/**\n * Creates a token provider from a token entity model.\n * Uses lazy injection for expression evaluator to avoid circular dependency.\n * Reloads token data from backend on each execution to ensure fresh data.\n */\nfunction createTokenProvider(token, injector) {\n const tokenName = token.name;\n return {\n name: tokenName,\n title: token.title,\n description: token.description,\n async execute() {\n // Reload token from backend to get fresh data\n // This ensures we always have the latest token configuration\n // const entityResolver = injector.get(AXPEntityDefinitionRegistryService);\n // const tokenEntityDef = await entityResolver.exists(RootConfig.module.name, RootConfig.entities.token.name);\n // if (!tokenEntityDef) {\n // return;\n // }\n const tokensService = injector.get(AXMTokensService);\n let currentToken = null;\n try {\n // Try to get the token by name (assuming name is unique)\n const queryResult = await tokensService.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'name',\n operator: { type: 'equal' },\n value: tokenName,\n },\n });\n if (queryResult?.items && queryResult.items.length > 0) {\n currentToken = queryResult.items[0];\n }\n }\n catch (error) {\n console.warn(`[DynamicTokenProvider] Failed to reload token \"${tokenName}\", using cached data:`, error);\n // Fallback to original token data if reload fails\n currentToken = token;\n }\n // Use reloaded token if available, otherwise fallback to original\n const tokenToUse = currentToken || token;\n if (!tokenToUse.expression) {\n throw new Error(`Token \"${tokenName}\" has no expression defined`);\n }\n // Normalize type field - handle case where select box returns object instead of string\n const normalizedType = normalizeType(tokenToUse.type);\n if (normalizedType === 'Expression') {\n // Expression type: evaluate the expression using expression evaluator\n // Expression can use: tokens.get(), identifier.peek(), session.currentUser(), etc.\n // Lazy inject expression evaluator to avoid circular dependency\n try {\n const expressionEvaluator = injector.get(AXPExpressionEvaluatorService);\n return await expressionEvaluator.evaluate(tokenToUse.expression);\n }\n catch (error) {\n console.error(`[DynamicTokenProvider] Error evaluating token \"${tokenName}\":`, error);\n throw error;\n }\n }\n else {\n // Static types (String, Integer, Boolean): return direct value from expression field (no evaluation)\n // Optionally convert to appropriate type\n const expressionValue = tokenToUse.expression;\n if (normalizedType === 'Integer') {\n const numValue = parseInt(expressionValue, 10);\n if (isNaN(numValue)) {\n throw new Error(`Token \"${tokenName}\" expression is not a valid integer: ${expressionValue}`);\n }\n return numValue;\n }\n else if (normalizedType === 'Boolean') {\n const lowerValue = expressionValue.toLowerCase().trim();\n if (lowerValue === 'true' || lowerValue === '1' || lowerValue === 'yes') {\n return true;\n }\n else if (lowerValue === 'false' || lowerValue === '0' || lowerValue === 'no') {\n return false;\n }\n throw new Error(`Token \"${tokenName}\" expression is not a valid boolean: ${expressionValue}`);\n }\n else {\n // String type: return as-is\n return expressionValue;\n }\n }\n },\n };\n}\n/**\n * Normalizes the type field to a string value.\n * Handles cases where select box widgets return objects instead of strings.\n * @param type The type value (can be string or object with value property)\n * @returns Normalized type string ('String', 'Integer', 'Boolean', or 'Expression')\n */\nfunction normalizeType(type) {\n if (typeof type === 'string') {\n const validTypes = ['String', 'Integer', 'Boolean', 'Expression'];\n if (validTypes.includes(type)) {\n return type;\n }\n }\n if (type && typeof type === 'object' && 'value' in type) {\n const validTypes = ['String', 'Integer', 'Boolean', 'Expression'];\n if (validTypes.includes(type.value)) {\n return type.value;\n }\n }\n // Fallback: try to convert to string\n const typeString = String(type);\n const validTypes = ['String', 'Integer', 'Boolean', 'Expression'];\n if (validTypes.includes(typeString)) {\n return typeString;\n }\n throw new Error(`Invalid type value: ${JSON.stringify(type)}. Must be one of: String, Integer, Boolean, Expression`);\n}\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy10b2tlbi5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdG9rZW4vZHluYW1pYy10b2tlbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFHL0IsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFLdkUsWUFBWTtBQUVaLHFDQUFxQztBQUVyQzs7O0dBR0c7QUFDSCxJQUFJLGVBQWUsR0FBaUQsSUFBSSxDQUFDO0FBRXpFOztHQUVHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQjtJQUMzQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQzNCLENBQUM7QUFFRCxZQUFZO0FBRVosd0NBQXdDO0FBRXhDOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsMkJBQTJCLENBQzdDLFFBQWtCO0lBRWxCLHVDQUF1QztJQUN2QyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsZUFBZSxHQUFHLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sZUFBZSxDQUFDO0FBQzNCLENBQUM7QUFFRDs7R0FFRztBQUNILEtBQUssVUFBVSxrQkFBa0IsQ0FDN0IsUUFBa0I7SUFFbEIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JELDJFQUEyRTtJQUMzRSw4R0FBOEc7SUFDOUcseUJBQXlCO0lBQ3pCLGlCQUFpQjtJQUNqQixJQUFJO0lBRUosSUFBSSxDQUFDO1FBQ0QsK0JBQStCO1FBQy9CLE1BQU0sV0FBVyxHQUFH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QVMsQ0FBQyxJQUFJLENBQUMsd0RBQXdELENBQUMsQ0FBQztBQUN6SCxDQUFDO0FBRUQsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQVG9rZW5EZWZpbml0aW9uUHJvdmlkZXIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNVG9rZW5zU2VydmljZSB9IGZyb20gJy4uLy4uL2VudGl0aWVzL3Rva2VuL3Rva2Vucy5zZXJ2aWNlJztcbmltcG9ydCB7IEFYTVRva2VuRW50aXR5TW9kZWwgfSBmcm9tICcuLi8uLi9lbnRpdGllcy90b2tlbi90b2tlbnMudHlwZXMnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuXG4vLyNlbmRyZWdpb25cblxuLy8jcmVnaW9uIC0tLS0gICBGYWN0b3J5IENhY2hlICAgLS0tLVxuXG4vKipcbiAqIEdsb2JhbCBjYWNoZSBmb3IgbG9hZGVkIHRva2VuIHByb3ZpZGVycy5cbiAqIENsZWFyZWQgd2hlbiB0b2tlbiBlbnRpdHkgY2hhbmdlcyBvY2N1ci5cbiAqL1xubGV0IGNhY2hlZFByb3ZpZGVyczogUHJvbWlzZTxBWFBUb2tlbkRlZmluaXRpb25Qcm92aWRlcltdPiB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIENsZWFycyB0aGUgY2FjaGVkIHByb3ZpZGVycywgZm9yY2luZyByZWxvYWQgb24gbmV4dCBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckR5bmFtaWNUb2tlblByb3ZpZGVyc0NhY2hlKCk6IHZvaWQge1xuICAgIGNhY2hlZFByb3ZpZGVycyA9IG51bGw7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEZhY3RvcnkgRnVuY3Rpb24gICAtLS0tXG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0aGF0IGxvYWRzIHRva2VucyBmcm9tIGJhY2tlbmQgYW5kIGNyZWF0ZXMgcHJvdmlkZXJzIGZvciBlYWNoLlxuICogVXNlcyBnbG9iYWwgY2FjaGluZyAtIHRva2VucyBhcmUgbG9hZGVkIG9uY2UgYW5kIGNhY2hlZCB1bnRpbCBpbnZhbGlkYXRlZC5cbiAqIFxuICogQHBhcmFtIGluamVjdG9yIEFuZ3VsYXIgaW5qZWN0b3IgdG8gcmVzb2x2ZSBkZXBlbmRlbmNpZXNcbiAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiB0b2tlbiBwcm92aWRlcnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUR5bmFtaWNUb2tlblByb3ZpZGVycyhcbiAgICBpbmplY3RvcjogSW5qZWN0b3Jcbik6IFByb21pc2U8QVhQVG9rZW5EZWZpbml0aW9uUHJvdmlkZXJbXT4ge1xuICAgIC8vIFJldHVybiBjYWNoZWQgcHJvdmlkZXJzIGlmIGF2YWlsYWJsZVxuICAgIGlmIChjYWNoZWRQcm92aWRlcnMpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlZFByb3ZpZGVycztcbiAgICB9XG5cbiAgICAvLyBMb2FkIHByb3ZpZGVycyBhbmQgY2FjaGUgdGhlIHByb21pc2VcbiAgICBjYWNoZWRQcm92aWRlcnMgPSBsb2FkVG9rZW5Qcm92aWRlcnMoaW5qZWN0b3IpO1xuICAgIHJldHVybiBjYWNoZWRQcm92aWRlcnM7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgZnVuY3Rpb24gdGhhdCBsb2FkcyB0b2tlbnMgZnJvbSBiYWNrZW5kIGFuZCBjcmVhdGVzIHByb3ZpZGVycy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZFRva2VuUHJvdmlkZXJzKFxuICAgIGluamVjdG9yOiBJbmplY3RvclxuKTogUHJvbWlzZTxBWFBUb2tlbkRlZmluaXRpb25Qcm92aWRlcltdPiB7XG4gICAgY29uc3QgdG9rZW5zU2VydmljZSA9IGluamVjdG9yLmdldChBWE1Ub2tlbnNTZXJ2aWNlKTtcbiAgICAvLyBjb25zdCBlbnRpdHlSZXNvbHZlciA9IGluamVjdG9yLmdldChBWFBFbnRpdHlEZWZpbml0aW9uUmVnaXN0cnlTZXJ2aWNlKTtcbiAgICAvLyBjb25zdCB0b2tlbkVudGl0eURlZiA9IGF3YWl0IGVudGl0eVJlc29sdmVyLmV4aXN0cyhSb290Q29uZmlnLm1vZHVsZS5uYW1lLCBSb290Q29uZmlnLmVudGl0aWVzLnRva2VuLm5hbWUpO1xuICAgIC8vIGlmICghdG9rZW5FbnRpdHlEZWYpIHtcbiAgICAvLyAgICAgcmV0dXJuIFtdO1xuICAgIC8vIH1cblxuICAgIHRyeSB7XG4gICAgICAgIC8vIExvYWQgYWxsIHRva2VucyBmcm9tIGJhY2tlbmRcbiAgICAgICAgY29uc3QgcXVlcnlSZXN1bHQgPSBhd2FpdCB0b2tlbnNTZXJ2aWNlLnF1ZXJ5KHtcbiAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICB0YWtlOiAxMDAwLCAvLyBMb2FkIGFsbCB0b2tlbnMgKGFkanVzdCBpZiBuZWVkZWQpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcXVlcnlSZXN1bHQgfHwgIXF1ZXJ5UmVzdWx0Lml0ZW1zIHx8IHF1ZXJ5UmVzdWx0Lml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29udmVydCBlYWNoIHRva2VuIGVudGl0eSB0byBhIHByb3ZpZGVyXG4gICAgICAgIC8vIFBhc3MgaW5qZWN0b3IgaW5zdGVhZCBvZiBleHByZXNzaW9uRXZhbHVhdG9yIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3lcbiAgICAgICAgcmV0dXJuIHF1ZXJ5UmVzdWx0Lml0ZW1zLm1hcCgodG9rZW46IEFYTVRva2VuRW50aXR5TW9kZWwpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVUb2tlblByb3ZpZGVyKHRva2VuLCBpbmplY3Rvcik7XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tEeW5hbWljVG9rZW5Qcm92aWRlcl0gRmFpbGVkIHRvIGxvYWQgdG9rZW5zIGZyb20gYmFja2VuZDonLCBlcnJvcik7XG4gICAgICAgIHRocm93IGVycm9yOyAvLyBUaHJvdyBlcnJvciBhcyByZXF1ZXN0ZWRcbiAgICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRva2VuIHByb3ZpZGVyIGZyb20gYSB0b2tlbiBlbnRpdHkgbW9kZWwuXG4gKiBVc2VzIGxhenkgaW5qZWN0aW9uIGZvciBleHByZXNzaW9uIGV2YWx1YXRvciB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICogUmVsb2FkcyB0b2tlbiBkYXRhIGZyb20gYmFja2VuZCBvbiBlYWNoIGV4ZWN1dGlvbiB0byBlbnN1cmUgZnJlc2ggZGF0YS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlVG9rZW5Qcm92aWRlcihcbiAgICB0b2tlbjogQVhNVG9rZW5FbnRpdHlNb2RlbCxcbiAgICBpbmplY3RvcjogSW5qZWN0b3Jcbik6IEFYUFRva2VuRGVmaW5pdGlvblByb3ZpZGVyIHtcbiAgICBjb25zdCB0b2tlbk5hbWUgPSB0b2tlbi5uYW1lO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdG9rZW5OYW1lLFxuICAgICAgICB0aXRsZTogdG9rZW4udGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0b2tlbi5kZXNjcmlwdGlvbixcblxuICAgICAgICBhc3luYyBleGVjdXRlKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgICAgICAvLyBSZWxvYWQgdG9rZW4gZnJvbSBiYWNrZW5kIHRvIGdldCBmcmVzaCBkYXRhXG4gICAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgd2UgYWx3YXlzIGhhdmUgdGhlIGxhdGVzdCB0b2tlbiBjb25maWd1cmF0aW9uXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGVudGl0eVJlc29sdmVyID0gaW5qZWN0b3IuZ2V0KEFYUEVudGl0eURlZmluaXRpb25SZWdpc3RyeVNlcnZpY2UpO1xuICAgICAgICAgICAgLy8gY29uc3QgdG9rZW5FbnRpdHlEZWYgPSBhd2FpdCBlbnRpdHlSZXNvbHZlci5leGlzdHMoUm9vdENvbmZpZy5tb2R1bGUubmFtZSwgUm9vdENvbmZpZy5lbnRpdGllcy50b2tlbi5uYW1lKTtcbiAgICAgICAgICAgIC8vIGlmICghdG9rZW5FbnRpdHlEZWYpIHtcbiAgICAgICAgICAgIC8vICAgICByZXR1cm47XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICBjb25zdCB0b2tlbnNTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEFYTVRva2Vuc1NlcnZpY2UpO1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRUb2tlbjogQVhNVG9rZW5FbnRpdHlNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIHRva2VuIGJ5IG5hbWUgKGFzc3VtaW5nIG5hbWUgaXMgdW5pcXVlKVxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UmVzdWx0ID0gYXdhaXQgdG9rZW5zU2VydmljZS5xdWVyeSh7XG4gICAgICAgICAgICAgICAgICAgIHNraXA6IDAsXG4gICAgICAgICAgICAgICAgICAgIHRha2U6IDEwMDAsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6ICduYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiB7IHR5cGU6ICdlcXVhbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0b2tlbk5hbWUsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocXVlcnlSZXN1bHQ/Lml0ZW1zICYmIHF1ZXJ5UmVzdWx0Lml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gcXVlcnlSZXN1bHQuaXRlbXNbMF0gYXMgQVhNVG9rZW5FbnRpdHlNb2RlbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgW0R5bmFtaWNUb2tlblByb3ZpZGVyXSBGYWlsZWQgdG8gcmVsb2FkIHRva2VuIFwiJHt0b2tlbk5hbWV9XCIsIHVzaW5nIGNhY2hlZCBkYXRhOmAsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBvcmlnaW5hbCB0b2tlbiBkYXRhIGlmIHJlbG9hZCBmYWlsc1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBVc2UgcmVsb2FkZWQgdG9rZW4gaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbGJhY2sgdG8gb3JpZ2luYWxcbiAgICAgICAgICAgIGNvbnN0IHRva2VuVG9Vc2UgPSBjdXJyZW50VG9rZW4gfHwgdG9rZW47XG5cbiAgICAgICAgICAgIGlmICghdG9rZW5Ub1VzZS5leHByZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbiBcIiR7dG9rZW5OYW1lfVwiIGhhcyBubyBleHByZXNzaW9uIGRlZmluZWRgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTm9ybWFsaXplIHR5cGUgZmllbGQgLSBoYW5kbGUgY2FzZSB3aGVyZSBzZWxlY3QgYm94IHJldHVybnMgb2JqZWN0IGluc3RlYWQgb2Ygc3RyaW5nXG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVHlwZSA9IG5vcm1hbGl6ZVR5cGUodG9rZW5Ub1VzZS50eXBlKTtcblxuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRUeXBlID09PSAnRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgICAgICAvLyBFeHByZXNzaW9uIHR5cGU6IGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIHVzaW5nIGV4cHJlc3Npb24gZXZhbHVhdG9yXG4gICAgICAgICAgICAgICAgLy8gRXhwcmVzc2lvbiBjYW4gdXNlOiB0b2tlbnMuZ2V0KCksIGlkZW50aWZpZXIucGVlaygpLCBzZXNzaW9uLmN1cnJlbnRVc2VyKCksIGV0Yy5cbiAgICAgICAgICAgICAgICAvLyBMYXp5IGluamVjdCBleHByZXNzaW9uIGV2YWx1YXRvciB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbkV2YWx1YXRvciA9IGluamVjdG9yLmdldChBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2VydmljZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBleHByZXNzaW9uRXZhbHVhdG9yLmV2YWx1YXRlKHRva2VuVG9Vc2UuZXhwcmVzc2lvbik7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW0R5bmFtaWNUb2tlblByb3ZpZGVyXSBFcnJvciBldmFsdWF0aW5nIHRva2VuIFwiJHt0b2tlbk5hbWV9XCI6YCwgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFN0YXRpYyB0eXBlcyAoU3RyaW5nLCBJbnRlZ2VyLCBCb29sZWFuKTogcmV0dXJuIGRpcmVjdCB2YWx1ZSBmcm9tIGV4cHJlc3Npb24gZmllbGQgKG5vIGV2YWx1YXRpb24pXG4gICAgICAgICAgICAgICAgLy8gT3B0aW9uYWxseSBjb252ZXJ0IHRvIGFwcHJvcHJpYXRlIHR5cGVcbiAgICAgICAgICAgICAgICBjb25zdCBleHByZXNzaW9uVmFsdWUgPSB0b2tlblRvVXNlLmV4cHJlc3Npb247XG5cbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZFR5cGUgPT09ICdJbnRlZ2VyJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBudW1WYWx1ZSA9IHBhcnNlSW50KGV4cHJlc3Npb25WYWx1ZSwgMTApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4obnVtVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRva2VuIFwiJHt0b2tlbk5hbWV9XCIgZXhwcmVzc2lvbiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyOiAke2V4cHJlc3Npb25WYWx1ZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtVmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkVHlwZSA9PT0gJ0Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvd2VyVmFsdWUgPSBleHByZXNzaW9uVmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb3dlclZhbHVlID09PSAndHJ1ZScgfHwgbG93ZXJWYWx1ZSA9PT0gJzEnIHx8IGxvd2VyVmFsdWUgPT09ICd5ZXMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsb3dlclZhbHVlID09PSAnZmFsc2UnIHx8IGxvd2VyVmFsdWUgPT09ICcwJyB8fCBsb3dlclZhbHVlID09PSAnbm8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbiBcIiR7dG9rZW5OYW1lfVwiIGV4cHJlc3Npb24gaXMgbm90IGEgdmFsaWQgYm9vbGVhbjogJHtleHByZXNzaW9uVmFsdWV9YCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU3RyaW5nIHR5cGU6IHJldHVybiBhcy1pc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwcmVzc2lvblZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgdGhlIHR5cGUgZmllbGQgdG8gYSBzdHJpbmcgdmFsdWUuXG4gKiBIYW5kbGVzIGNhc2VzIHdoZXJlIHNlbGVjdCBib3ggd2lkZ2V0cyByZXR1cm4gb2JqZWN0cyBpbnN0ZWFkIG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSB2YWx1ZSAoY2FuIGJlIHN0cmluZyBvciBvYmplY3Qgd2l0aCB2YWx1ZSBwcm9wZXJ0eSlcbiAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgdHlwZSBzdHJpbmcgKCdTdHJpbmcnLCAnSW50ZWdlcicsICdCb29sZWFuJywgb3IgJ0V4cHJlc3Npb24nKVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVUeXBlKHR5cGU6IGFueSk6ICdTdHJpbmcnIHwgJ0ludGVnZXInIHwgJ0Jvb2xlYW4nIHwgJ0V4cHJlc3Npb24nIHtcbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkVHlwZXMgPSBbJ1N0cmluZycsICdJbnRlZ2VyJywgJ0Jvb2xlYW4nLCAnRXhwcmVzc2lvbiddO1xuICAgICAgICBpZiAodmFsaWRUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGUgYXMgJ1N0cmluZycgfCAnSW50ZWdlcicgfCAnQm9vbGVhbicgfCAnRXhwcmVzc2lvbic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZSAmJiB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiB0eXBlKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkVHlwZXMgPSBbJ1N0cmluZycsICdJbnRlZ2VyJywgJ0Jvb2xlYW4nLCAnRXhwcmVzc2lvbiddO1xuICAgICAgICBpZiAodmFsaWRUeXBlcy5pbmNsdWRlcyh0eXBlLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGUudmFsdWUgYXMgJ1N0cmluZycgfCAnSW50ZWdlcicgfCAnQm9vbGVhbicgfCAnRXhwcmVzc2lvbic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjazogdHJ5IHRvIGNvbnZlcnQgdG8gc3RyaW5nXG4gICAgY29uc3QgdHlwZVN0cmluZyA9IFN0cmluZyh0eXBlKTtcbiAgICBjb25zdCB2YWxpZFR5cGVzID0gWydTdHJpbmcnLCAnSW50ZWdlcicsICdCb29sZWFuJywgJ0V4cHJlc3Npb24nXTtcbiAgICBpZiAodmFsaWRUeXBlcy5pbmNsdWRlcyh0eXBlU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHlwZVN0cmluZyBhcyAnU3RyaW5nJyB8ICdJbnRlZ2VyJyB8ICdCb29sZWFuJyB8ICdFeHByZXNzaW9uJztcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZSB2YWx1ZTogJHtKU09OLnN0cmluZ2lmeSh0eXBlKX0uIE11c3QgYmUgb25lIG9mOiBTdHJpbmcsIEludGVnZXIsIEJvb2xlYW4sIEV4cHJlc3Npb25gKTtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","//#region ---- Imports ----\nimport { AXPTokenDefinitionService } from '@acorex/platform/common';\nimport { Injectable, inject } from '@angular/core';\nimport { clearDynamicTokenProvidersCache } from './dynamic-token.provider';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Token Refresh Event Listener ----\n/**\n * Event listener provider that listens to token entity changes\n * and clears the token cache when tokens are updated, inserted, or deleted.\n */\nexport class AXMTokenRefreshProvider {\n constructor() {\n this.tokenService = inject(AXPTokenDefinitionService);\n /**\n * Event keys to listen to for token entity changes.\n * Supports wildcard patterns for entity events.\n * Format: entity.{operation}.{ModuleName}.{EntityName}\n * Example: entity.updated.PlatformManagement.Tokens\n */\n this.key = `entity.*.${RootConfig.module.name}.${RootConfig.entities.token.name}`;\n }\n /**\n * Executes when a token entity event occurs (inserted, updated, or deleted).\n * Clears both the token definition service cache and the dynamic providers cache.\n */\n async execute(data) {\n // Clear token definition service cache\n this.tokenService.clearDefinitionsCache();\n // Clear dynamic token providers cache to force reload\n clearDynamicTokenProvidersCache();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenRefreshProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenRefreshProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenRefreshProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcmVmcmVzaC5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvdG9rZW4vdG9rZW4tcmVmcmVzaC5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFFL0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFFekMsWUFBWTtBQUVaLG9EQUFvRDtBQUVwRDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRW1CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFbEU7Ozs7O1dBS0c7UUFDSCxRQUFHLEdBQUcsWUFBWSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQWE5RTtJQVhDOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBUztRQUNyQix1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTFDLHNEQUFzRDtRQUN0RCwrQkFBK0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7K0dBckJVLHVCQUF1QjttSEFBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBUb2tlbkRlZmluaXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQRGlzdHJpYnV0ZWRFdmVudExpc3RlbmVyUHJvdmlkZXIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbGVhckR5bmFtaWNUb2tlblByb3ZpZGVyc0NhY2hlIH0gZnJvbSAnLi9keW5hbWljLXRva2VuLnByb3ZpZGVyJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuLi8uLi9jb25zdCc7XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFRva2VuIFJlZnJlc2ggRXZlbnQgTGlzdGVuZXIgICAtLS0tXG5cbi8qKlxuICogRXZlbnQgbGlzdGVuZXIgcHJvdmlkZXIgdGhhdCBsaXN0ZW5zIHRvIHRva2VuIGVudGl0eSBjaGFuZ2VzXG4gKiBhbmQgY2xlYXJzIHRoZSB0b2tlbiBjYWNoZSB3aGVuIHRva2VucyBhcmUgdXBkYXRlZCwgaW5zZXJ0ZWQsIG9yIGRlbGV0ZWQuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1Ub2tlblJlZnJlc2hQcm92aWRlciBpbXBsZW1lbnRzIEFYUERpc3RyaWJ1dGVkRXZlbnRMaXN0ZW5lclByb3ZpZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2tlblNlcnZpY2UgPSBpbmplY3QoQVhQVG9rZW5EZWZpbml0aW9uU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGtleXMgdG8gbGlzdGVuIHRvIGZvciB0b2tlbiBlbnRpdHkgY2hhbmdlcy5cbiAgICogU3VwcG9ydHMgd2lsZGNhcmQgcGF0dGVybnMgZm9yIGVudGl0eSBldmVudHMuXG4gICAqIEZvcm1hdDogZW50aXR5LntvcGVyYXRpb259LntNb2R1bGVOYW1lfS57RW50aXR5TmFtZX1cbiAgICogRXhhbXBsZTogZW50aXR5LnVwZGF0ZWQuUGxhdGZvcm1NYW5hZ2VtZW50LlRva2Vuc1xuICAgKi9cbiAga2V5ID0gYGVudGl0eS4qLiR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLnRva2VuLm5hbWV9YDtcblxuICAvKipcbiAgICogRXhlY3V0ZXMgd2hlbiBhIHRva2VuIGVudGl0eSBldmVudCBvY2N1cnMgKGluc2VydGVkLCB1cGRhdGVkLCBvciBkZWxldGVkKS5cbiAgICogQ2xlYXJzIGJvdGggdGhlIHRva2VuIGRlZmluaXRpb24gc2VydmljZSBjYWNoZSBhbmQgdGhlIGR5bmFtaWMgcHJvdmlkZXJzIGNhY2hlLlxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZShkYXRhOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBDbGVhciB0b2tlbiBkZWZpbml0aW9uIHNlcnZpY2UgY2FjaGVcbiAgICB0aGlzLnRva2VuU2VydmljZS5jbGVhckRlZmluaXRpb25zQ2FjaGUoKTtcblxuICAgIC8vIENsZWFyIGR5bmFtaWMgdG9rZW4gcHJvdmlkZXJzIGNhY2hlIHRvIGZvcmNlIHJlbG9hZFxuICAgIGNsZWFyRHluYW1pY1Rva2VuUHJvdmlkZXJzQ2FjaGUoKTtcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cblxuIl19","//#region ---- Imports ----\nimport { AXP_TOKEN_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER } from '@acorex/platform/core';\nimport { provideCommandSetups } from '@acorex/platform/runtime';\nimport { NgModule, Injector } from '@angular/core';\nimport { AXMTokenProvider } from './token.provider';\nimport { createDynamicTokenProviders } from './dynamic-token.provider';\nimport { AXMTokenRefreshProvider } from './token-refresh.provider';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\n//#endregion\n//#region ---- Token Module ----\n/**\n * Token feature module.\n * Provides token definition providers (static and dynamic) and refresh listeners.\n */\nexport class AXMTokenModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenModule, providers: [\n // Static token provider (built-in tokens)\n {\n provide: AXP_TOKEN_DEFINITION_PROVIDER,\n useClass: AXMTokenProvider,\n multi: true,\n },\n // Dynamic token provider (tokens from backend)\n {\n provide: AXP_TOKEN_DEFINITION_PROVIDER,\n useFactory: (injector) => createDynamicTokenProviders(injector),\n deps: [Injector],\n multi: true,\n },\n // Token refresh listener (clears cache on entity changes)\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useClass: AXMTokenRefreshProvider,\n multi: true,\n },\n // Execute token command\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n command: () => import('./commands/execute-token.command').then((c) => c.ExecuteTokenCommand),\n },\n ]),\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n // Static token provider (built-in tokens)\n {\n provide: AXP_TOKEN_DEFINITION_PROVIDER,\n useClass: AXMTokenProvider,\n multi: true,\n },\n // Dynamic token provider (tokens from backend)\n {\n provide: AXP_TOKEN_DEFINITION_PROVIDER,\n useFactory: (injector) => createDynamicTokenProviders(injector),\n deps: [Injector],\n multi: true,\n },\n // Token refresh listener (clears cache on entity changes)\n {\n provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,\n useClass: AXMTokenRefreshProvider,\n multi: true,\n },\n // Execute token command\n provideCommandSetups([\n {\n key: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n command: () => import('./commands/execute-token.command').then((c) => c.ExecuteTokenCommand),\n },\n ]),\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy90b2tlbi90b2tlbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBRS9CLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRXpDLFlBQVk7QUFFWixvQ0FBb0M7QUFFcEM7OztHQUdHO0FBa0NILE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYztnSEFBZCxjQUFjLGFBN0JkO1lBQ1QsMENBQTBDO1lBQzFDO2dCQUNFLE9BQU8sRUFBRSw2QkFBNkI7Z0JBQ3RDLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCwrQ0FBK0M7WUFDL0M7Z0JBQ0UsT0FBTyxFQUFFLDZCQUE2QjtnQkFDdEMsVUFBVSxFQUFFLENBQUMsUUFBa0IsRUFBRSxFQUFFLENBQUMsMkJBQTJCLENBQUMsUUFBUSxDQUFDO2dCQUN6RSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hCLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCwwREFBMEQ7WUFDMUQ7Z0JBQ0UsT0FBTyxFQUFFLHVDQUF1QztnQkFDaEQsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNELHdCQUF3QjtZQUN4QixvQkFBb0IsQ0FBQztnQkFDbkI7b0JBQ0UsR0FBRyxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVO29CQUMxRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7aUJBQzdGO2FBQ0YsQ0FBQztTQUNIOzs0RkFFVSxjQUFjO2tCQWpDMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsRUFBRTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNULDBDQUEwQzt3QkFDMUM7NEJBQ0UsT0FBTyxFQUFFLDZCQUE2Qjs0QkFDdEMsUUFBUSxFQUFFLGdCQUFnQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsK0NBQStDO3dCQUMvQzs0QkFDRSxPQUFPLEVBQUUsNkJBQTZCOzRCQUN0QyxVQUFVLEVBQUUsQ0FBQyxRQUFrQixFQUFFLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUM7NEJBQ3pFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQzs0QkFDaEIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsMERBQTBEO3dCQUMxRDs0QkFDRSxPQUFPLEVBQUUsdUNBQXVDOzRCQUNoRCxRQUFRLEVBQUUsdUJBQXVCOzRCQUNqQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCx3QkFBd0I7d0JBQ3hCLG9CQUFvQixDQUFDOzRCQUNuQjtnQ0FDRSxHQUFHLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVU7Z0NBQzFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQzs2QkFDN0Y7eUJBQ0YsQ0FBQztxQkFDSDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiAtLS0tICAgSW1wb3J0cyAgIC0tLS1cblxuaW1wb3J0IHsgQVhQX1RPS0VOX0RFRklOSVRJT05fUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBfRElTVFJJQlVURURfRVZFTlRfTElTVEVORVJfUFJPVklERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZUNvbW1hbmRTZXR1cHMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgTmdNb2R1bGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWE1Ub2tlblByb3ZpZGVyIH0gZnJvbSAnLi90b2tlbi5wcm92aWRlcic7XG5pbXBvcnQgeyBjcmVhdGVEeW5hbWljVG9rZW5Qcm92aWRlcnMgfSBmcm9tICcuL2R5bmFtaWMtdG9rZW4ucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhNVG9rZW5SZWZyZXNoUHJvdmlkZXIgfSBmcm9tICcuL3Rva2VuLXJlZnJlc2gucHJvdmlkZXInO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgVG9rZW4gTW9kdWxlICAgLS0tLVxuXG4vKipcbiAqIFRva2VuIGZlYXR1cmUgbW9kdWxlLlxuICogUHJvdmlkZXMgdG9rZW4gZGVmaW5pdGlvbiBwcm92aWRlcnMgKHN0YXRpYyBhbmQgZHluYW1pYykgYW5kIHJlZnJlc2ggbGlzdGVuZXJzLlxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIHByb3ZpZGVyczogW1xuICAgIC8vIFN0YXRpYyB0b2tlbiBwcm92aWRlciAoYnVpbHQtaW4gdG9rZW5zKVxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9UT0tFTl9ERUZJTklUSU9OX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTVRva2VuUHJvdmlkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIC8vIER5bmFtaWMgdG9rZW4gcHJvdmlkZXIgKHRva2VucyBmcm9tIGJhY2tlbmQpXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX1RPS0VOX0RFRklOSVRJT05fUFJPVklERVIsXG4gICAgICB1c2VGYWN0b3J5OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBjcmVhdGVEeW5hbWljVG9rZW5Qcm92aWRlcnMoaW5qZWN0b3IpLFxuICAgICAgZGVwczogW0luamVjdG9yXSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gVG9rZW4gcmVmcmVzaCBsaXN0ZW5lciAoY2xlYXJzIGNhY2hlIG9uIGVudGl0eSBjaGFuZ2VzKVxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9ESVNUUklCVVRFRF9FVkVOVF9MSVNURU5FUl9QUk9WSURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1Ub2tlblJlZnJlc2hQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gRXhlY3V0ZSB0b2tlbiBjb21tYW5kXG4gICAgcHJvdmlkZUNvbW1hbmRTZXR1cHMoW1xuICAgICAge1xuICAgICAgICBrZXk6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy50b2tlbi5uYW1lfTpFeGVjdXRlYCxcbiAgICAgICAgY29tbWFuZDogKCkgPT4gaW1wb3J0KCcuL2NvbW1hbmRzL2V4ZWN1dGUtdG9rZW4uY29tbWFuZCcpLnRoZW4oKGMpID0+IGMuRXhlY3V0ZVRva2VuQ29tbWFuZCksXG4gICAgICB9LFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1Ub2tlbk1vZHVsZSB7IH1cblxuLy8jZW5kcmVnaW9uXG5cbiJdfQ==","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { SwUpdate } from '@angular/service-worker';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXPUpdaterService {\n constructor() {\n const swUpdate = inject(SwUpdate, { optional: true });\n const dialogService = inject(AXDialogService);\n const translateService = inject(AXTranslationService);\n if (swUpdate?.isEnabled) {\n swUpdate.versionUpdates.subscribe((event) => {\n if (event.type === 'VERSION_READY') {\n console.log('New version available');\n const scope = RootConfig.config.i18n;\n const dialog = dialogService.open({\n icon: 'fa-regular fa-info',\n content: translateService.translateSync('updater.content', { scope: scope }),\n title: translateService.translateSync('updater.title', { scope: scope }),\n type: 'primary',\n orientation: 'horizontal',\n buttons: [\n {\n text: translateService.translateSync('updater.update', { scope: scope }),\n color: 'primary',\n onClick: async (e) => {\n try {\n document.location.reload();\n dialog.close();\n }\n catch (error) {\n console.error(error);\n }\n },\n },\n {\n text: translateService.translateSync('updater.cancel', { scope: scope }),\n color: 'default',\n autofocus: true,\n onClick: (e) => {\n dialog.close();\n },\n },\n ],\n closeButton: false,\n });\n }\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPUpdaterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPUpdaterService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPUpdaterService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy91cGRhdGVyL3VwZGF0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBR3pDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUI7UUFDRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFdEQsSUFBSSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDeEIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDMUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRSxDQUFDO29CQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7b0JBQ3JDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNyQyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO3dCQUNoQyxJQUFJLEVBQUUsb0JBQW9CO3dCQUMxQixPQUFPLEVBQUUsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO3dCQUM1RSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQzt3QkFDeEUsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsV0FBVyxFQUFFLFlBQVk7d0JBQ3pCLE9BQU8sRUFBRTs0QkFDUDtnQ0FDRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO2dDQUN4RSxLQUFLLEVBQUUsU0FBUztnQ0FDaEIsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFNLEVBQUUsRUFBRTtvQ0FDeEIsSUFBSSxDQUFDO3dDQUNILFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7d0NBQzNCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQ0FDakIsQ0FBQztvQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDO3dDQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0NBQ3ZCLENBQUM7Z0NBQ0gsQ0FBQzs2QkFDRjs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO2dDQUN4RSxLQUFLLEVBQUUsU0FBUztnQ0FDaEIsU0FBUyxFQUFFLElBQUk7Z0NBQ2YsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0NBQ2IsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dDQUNqQixDQUFDOzZCQUNGO3lCQUNGO3dCQUNELFdBQVcsRUFBRSxLQUFLO3FCQUNuQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7K0dBNUNVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs7NEZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN3VXBkYXRlIH0gZnJvbSAnQGFuZ3VsYXIvc2VydmljZS13b3JrZXInO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWFBVcGRhdGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHN3VXBkYXRlID0gaW5qZWN0KFN3VXBkYXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIGNvbnN0IGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQVhEaWFsb2dTZXJ2aWNlKTtcbiAgICBjb25zdCB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICAgIGlmIChzd1VwZGF0ZT8uaXNFbmFibGVkKSB7XG4gICAgICBzd1VwZGF0ZS52ZXJzaW9uVXBkYXRlcy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAnVkVSU0lPTl9SRUFEWScpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnTmV3IHZlcnNpb24gYXZhaWxhYmxlJyk7XG4gICAgICAgICAgY29uc3Qgc2NvcGUgPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuICAgICAgICAgIGNvbnN0IGRpYWxvZyA9IGRpYWxvZ1NlcnZpY2Uub3Blbih7XG4gICAgICAgICAgICBpY29uOiAnZmEtcmVndWxhciBmYS1pbmZvJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlU3luYygndXBkYXRlci5jb250ZW50JywgeyBzY29wZTogc2NvcGUgfSksXG4gICAgICAgICAgICB0aXRsZTogdHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVTeW5jKCd1cGRhdGVyLnRpdGxlJywgeyBzY29wZTogc2NvcGUgfSksXG4gICAgICAgICAgICB0eXBlOiAncHJpbWFyeScsXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVTeW5jKCd1cGRhdGVyLnVwZGF0ZScsIHsgc2NvcGU6IHNjb3BlIH0pLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgb25DbGljazogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlU3luYygndXBkYXRlci5jYW5jZWwnLCB7IHNjb3BlOiBzY29wZSB9KSxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgIGF1dG9mb2N1czogdHJ1ZSxcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { AXPUpdaterService } from './updater.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./updater.service\";\nexport class AXMUpdaterModule {\n constructor(updaterService) {\n this.updaterService = updaterService;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMUpdaterModule, deps: [{ token: i1.AXPUpdaterService }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMUpdaterModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMUpdaterModule, providers: [AXPUpdaterService] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMUpdaterModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [AXPUpdaterService],\n }]\n }], ctorParameters: () => [{ type: i1.AXPUpdaterService }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3VwZGF0ZXIvdXBkYXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBUXRELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsY0FBaUM7UUFBakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO0lBQUcsQ0FBQzsrR0FEOUMsZ0JBQWdCO2dIQUFoQixnQkFBZ0I7Z0hBQWhCLGdCQUFnQixhQUZoQixDQUFDLGlCQUFpQixDQUFDOzs0RkFFbkIsZ0JBQWdCO2tCQU41QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxFQUFFO29CQUNoQixTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQVXBkYXRlclNlcnZpY2UgfSBmcm9tICcuL3VwZGF0ZXIuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtdLFxuICBleHBvcnRzOiBbXSxcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgcHJvdmlkZXJzOiBbQVhQVXBkYXRlclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1VcGRhdGVyTW9kdWxlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1cGRhdGVyU2VydmljZTogQVhQVXBkYXRlclNlcnZpY2UpIHt9XG59XG4iXX0=","//#region ---- Imports ----\nimport { RootConfig } from './const';\n//#endregion\n//#region ---- Manifest Definition ----\n/**\n * Platform Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const PlatformManagementManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n dependencies: [\n 'SecurityManagement',\n 'ApplicationManagement',\n 'SystemInsight',\n 'TenantManagement',\n 'SubscriptionManagement',\n ],\n};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL21hbmlmZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUcvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBR3JDLFlBQVk7QUFFWiwyQ0FBMkM7QUFFM0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXNCO0lBQzNELElBQUksRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSztJQUM5QixJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJO0lBQzVCLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7SUFFNUIsWUFBWSxFQUFFO1FBQ1osb0JBQW9CO1FBQ3BCLHVCQUF1QjtRQUN2QixlQUFlO1FBQ2Ysa0JBQWtCO1FBQ2xCLHdCQUF3QjtLQUN6QjtDQUNGLENBQUM7QUFFRixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIC0tLS0gICBJbXBvcnRzICAgLS0tLVxuXG5pbXBvcnQgeyBBWFBNb2R1bGVNYW5pZmVzdCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi9jb25zdCc7XG5cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgTWFuaWZlc3QgRGVmaW5pdGlvbiAgIC0tLS1cblxuLyoqXG4gKiBQbGF0Zm9ybSBNYW5hZ2VtZW50IE1vZHVsZSBNYW5pZmVzdC5cbiAqIERlZmluZXMgbW9kdWxlIG1ldGFkYXRhLCBmZWF0dXJlcywgYW5kIHByb3ZpZGVyIHJlZmVyZW5jZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBQbGF0Zm9ybU1hbmFnZW1lbnRNYW5pZmVzdDogQVhQTW9kdWxlTWFuaWZlc3QgPSB7XG4gIG5hbWU6IFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gIHZlcnNpb246ICcxLjAuMCcsXG4gIHRpdGxlOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgaWNvbjogUm9vdENvbmZpZy5tb2R1bGUuaWNvbixcbiAgaTE4bjogUm9vdENvbmZpZy5jb25maWcuaTE4bixcblxuICBkZXBlbmRlbmNpZXM6IFtcbiAgICAnU2VjdXJpdHlNYW5hZ2VtZW50JyxcbiAgICAnQXBwbGljYXRpb25NYW5hZ2VtZW50JyxcbiAgICAnU3lzdGVtSW5zaWdodCcsXG4gICAgJ1RlbmFudE1hbmFnZW1lbnQnLFxuICAgICdTdWJzY3JpcHRpb25NYW5hZ2VtZW50JyxcbiAgXSxcbn07XG5cbi8vI2VuZHJlZ2lvblxuXG4iXX0=","export const AXPPlatformManagementMenuKeys = {\n AdministrationGroup: 'administration:group',\n Root: 'platform-management:menu',\n Tokens: 'platform-management:menu:tokens',\n Glossary: 'platform-management:menu:glossary',\n UserMenuManagement: 'platform-management:user:menus',\n MenuManagement: 'platform-management:menus',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9tZW51LmtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFDekMsbUJBQW1CLEVBQUUsc0JBQXNCO0lBQzNDLElBQUksRUFBRSwwQkFBMEI7SUFDaEMsTUFBTSxFQUFFLGlDQUFpQztJQUN6QyxRQUFRLEVBQUUsbUNBQW1DO0lBQzdDLGtCQUFrQixFQUFFLGdDQUFnQztJQUNwRCxjQUFjLEVBQUUsMkJBQTJCO0NBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVhQUGxhdGZvcm1NYW5hZ2VtZW50TWVudUtleXMgPSB7XG4gICAgQWRtaW5pc3RyYXRpb25Hcm91cDogJ2FkbWluaXN0cmF0aW9uOmdyb3VwJyxcbiAgICBSb290OiAncGxhdGZvcm0tbWFuYWdlbWVudDptZW51JyxcbiAgICBUb2tlbnM6ICdwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnU6dG9rZW5zJyxcbiAgICBHbG9zc2FyeTogJ3BsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudTpnbG9zc2FyeScsXG4gICAgVXNlck1lbnVNYW5hZ2VtZW50OiAncGxhdGZvcm0tbWFuYWdlbWVudDp1c2VyOm1lbnVzJyxcbiAgICBNZW51TWFuYWdlbWVudDogJ3BsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudXMnLFxufSBhcyBjb25zdDtcblxuIl19","export const AXPPlatformManagementPermissionKeys = {\n PlatformManagement: {\n Management: 'PlatformManagement:Permission:Management',\n Administration: 'PlatformManagement:Permission:Administration',\n Token: {\n Management: 'PlatformManagement:Permission:Token.Management',\n View: 'PlatformManagement:Permission:Token.View',\n Edit: 'PlatformManagement:Permission:Token.Edit',\n Delete: 'PlatformManagement:Permission:Token.Delete',\n Create: 'PlatformManagement:Permission:Token.Create',\n },\n MenuManagement: {\n Management: 'PlatformManagement:Permission:MenuManagement.Management',\n View: 'PlatformManagement:Permission:MenuManagement.View',\n Edit: 'PlatformManagement:Permission:MenuManagement.Edit',\n Delete: 'PlatformManagement:Permission:MenuManagement.Delete',\n Create: 'PlatformManagement:Permission:MenuManagement.Create',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9wZXJtaXNzaW9uLmtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUc7SUFDakQsa0JBQWtCLEVBQUU7UUFDbEIsVUFBVSxFQUFFLDBDQUEwQztRQUN0RCxjQUFjLEVBQUUsOENBQThDO1FBQzlELEtBQUssRUFBRTtZQUNMLFVBQVUsRUFBRSxnREFBZ0Q7WUFDNUQsSUFBSSxFQUFFLDBDQUEwQztZQUNoRCxJQUFJLEVBQUUsMENBQTBDO1lBQ2hELE1BQU0sRUFBRSw0Q0FBNEM7WUFDcEQsTUFBTSxFQUFFLDRDQUE0QztTQUNyRDtRQUNELGNBQWMsRUFBRTtZQUNkLFVBQVUsRUFBRSx5REFBeUQ7WUFDckUsSUFBSSxFQUFFLG1EQUFtRDtZQUN6RCxJQUFJLEVBQUUsbURBQW1EO1lBQ3pELE1BQU0sRUFBRSxxREFBcUQ7WUFDN0QsTUFBTSxFQUFFLHFEQUFxRDtTQUM5RDtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBWFBQbGF0Zm9ybU1hbmFnZW1lbnRQZXJtaXNzaW9uS2V5cyA9IHtcbiAgUGxhdGZvcm1NYW5hZ2VtZW50OiB7XG4gICAgTWFuYWdlbWVudDogJ1BsYXRmb3JtTWFuYWdlbWVudDpQZXJtaXNzaW9uOk1hbmFnZW1lbnQnLFxuICAgIEFkbWluaXN0cmF0aW9uOiAnUGxhdGZvcm1NYW5hZ2VtZW50OlBlcm1pc3Npb246QWRtaW5pc3RyYXRpb24nLFxuICAgIFRva2VuOiB7XG4gICAgICBNYW5hZ2VtZW50OiAnUGxhdGZvcm1NYW5hZ2VtZW50OlBlcm1pc3Npb246VG9rZW4uTWFuYWdlbWVudCcsXG4gICAgICBWaWV3OiAnUGxhdGZvcm1NYW5hZ2VtZW50OlBlcm1pc3Npb246VG9rZW4uVmlldycsXG4gICAgICBFZGl0OiAnUGxhdGZvcm1NYW5hZ2VtZW50OlBlcm1pc3Npb246VG9rZW4uRWRpdCcsXG4gICAgICBEZWxldGU6ICdQbGF0Zm9ybU1hbmFnZW1lbnQ6UGVybWlzc2lvbjpUb2tlbi5EZWxldGUnLFxuICAgICAgQ3JlYXRlOiAnUGxhdGZvcm1NYW5hZ2VtZW50OlBlcm1pc3Npb246VG9rZW4uQ3JlYXRlJyxcbiAgICB9LFxuICAgIE1lbnVNYW5hZ2VtZW50OiB7XG4gICAgICBNYW5hZ2VtZW50OiAnUGxhdGZvcm1NYW5hZ2VtZW50OlBlcm1pc3Npb246TWVudU1hbmFnZW1lbnQuTWFuYWdlbWVudCcsXG4gICAgICBWaWV3OiAnUGxhdGZvcm1NYW5hZ2VtZW50OlBlcm1pc3Npb246TWVudU1hbmFnZW1lbnQuVmlldycsXG4gICAgICBFZGl0OiAnUGxhdGZvcm1NYW5hZ2VtZW50OlBlcm1pc3Npb246TWVudU1hbmFnZW1lbnQuRWRpdCcsXG4gICAgICBEZWxldGU6ICdQbGF0Zm9ybU1hbmFnZW1lbnQ6UGVybWlzc2lvbjpNZW51TWFuYWdlbWVudC5EZWxldGUnLFxuICAgICAgQ3JlYXRlOiAnUGxhdGZvcm1NYW5hZ2VtZW50OlBlcm1pc3Npb246TWVudU1hbmFnZW1lbnQuQ3JlYXRlJyxcbiAgICB9LFxuICB9LFxufTtcbiJdfQ==","import { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport { AXPPlatformManagementMenuKeys } from './menu.keys';\nimport { AXPCommonMenuKeys } from '@acorex/modules/common';\nimport { AXPPlatformManagementPermissionKeys } from './permission.keys';\nexport class AXMMenuProvider {\n constructor() {\n this.entityService = inject(AXPEntityService);\n }\n async provide(context) {\n const scope = RootConfig.config.i18n;\n //#region ---- Administration Menu (Authorized Users) ----\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: AXPPlatformManagementMenuKeys.Tokens,\n priority: 20000101,\n text: `@${scope}:tokens.terms.tokens`,\n path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.token.name),\n icon: RootConfig.entities.token.icon,\n policy: {\n features: [RootConfig.module.name],\n permissions: [AXPPlatformManagementPermissionKeys.PlatformManagement.Token.Management],\n },\n },\n ]);\n //#endregion\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9saWIvbWVudS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXhFLE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBQ1Usa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQXlCbkQsQ0FBQztJQXZCQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQStCO1FBQzNDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBRXJDLDhEQUE4RDtRQUU5RCxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUNyRDtnQkFDRSxJQUFJLEVBQUUsNkJBQTZCLENBQUMsTUFBTTtnQkFDMUMsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLElBQUksRUFBRSxJQUFJLEtBQUssc0JBQXNCO2dCQUNyQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUMzRixJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSTtnQkFDcEMsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNsQyxXQUFXLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO2lCQUN2RjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsWUFBWTtJQUdkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUE1lbnVQcm92aWRlciwgQVhQTWVudVByb3ZpZGVyQ29udGV4dCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUEVudGl0eVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IEFYUFBsYXRmb3JtTWFuYWdlbWVudE1lbnVLZXlzIH0gZnJvbSAnLi9tZW51LmtleXMnO1xuaW1wb3J0IHsgQVhQQ29tbW9uTWVudUtleXMgfSBmcm9tICdAYWNvcmV4L21vZHVsZXMvY29tbW9uJztcbmltcG9ydCB7IEFYUFBsYXRmb3JtTWFuYWdlbWVudFBlcm1pc3Npb25LZXlzIH0gZnJvbSAnLi9wZXJtaXNzaW9uLmtleXMnO1xuXG5leHBvcnQgY2xhc3MgQVhNTWVudVByb3ZpZGVyIGltcGxlbWVudHMgQVhQTWVudVByb3ZpZGVyIHtcbiAgcHJpdmF0ZSBlbnRpdHlTZXJ2aWNlID0gaW5qZWN0KEFYUEVudGl0eVNlcnZpY2UpO1xuXG4gIGFzeW5jIHByb3ZpZGUoY29udGV4dDogQVhQTWVudVByb3ZpZGVyQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNjb3BlID0gUm9vdENvbmZpZy5jb25maWcuaTE4bjtcblxuICAgIC8vI3JlZ2lvbiAtLS0tICAgQWRtaW5pc3RyYXRpb24gTWVudSAoQXV0aG9yaXplZCBVc2VycykgICAtLS0tXG5cbiAgICBjb250ZXh0LmZpbmQoQVhQQ29tbW9uTWVudUtleXMuQ29uZmlndXJhdGlvbikuYWRkSXRlbXMoW1xuICAgICAge1xuICAgICAgICBuYW1lOiBBWFBQbGF0Zm9ybU1hbmFnZW1lbnRNZW51S2V5cy5Ub2tlbnMsXG4gICAgICAgIHByaW9yaXR5OiAyMDAwMDEwMSxcbiAgICAgICAgdGV4dDogYEAke3Njb3BlfTp0b2tlbnMudGVybXMudG9rZW5zYCxcbiAgICAgICAgcGF0aDogdGhpcy5lbnRpdHlTZXJ2aWNlLmNyZWF0ZVBhdGgoUm9vdENvbmZpZy5tb2R1bGUubmFtZSwgUm9vdENvbmZpZy5lbnRpdGllcy50b2tlbi5uYW1lKSxcbiAgICAgICAgaWNvbjogUm9vdENvbmZpZy5lbnRpdGllcy50b2tlbi5pY29uLFxuICAgICAgICBwb2xpY3k6IHtcbiAgICAgICAgICBmZWF0dXJlczogW1Jvb3RDb25maWcubW9kdWxlLm5hbWVdLFxuICAgICAgICAgIHBlcm1pc3Npb25zOiBbQVhQUGxhdGZvcm1NYW5hZ2VtZW50UGVybWlzc2lvbktleXMuUGxhdGZvcm1NYW5hZ2VtZW50LlRva2VuLk1hbmFnZW1lbnRdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIC8vI2VuZHJlZ2lvblxuXG5cbiAgfVxufVxuIl19","import { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, Injector } from '@angular/core';\nimport { AXPPlatformManagementPermissionKeys } from './permission.keys';\nimport { AXPPlatformManagementFeatureKeys } from './features.keys';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\nexport class AXMPermissionDefinitionProvider {\n constructor(injector) {\n this.injector = injector;\n this.translateService = this.injector.get(AXTranslationService);\n }\n async define(context) {\n const keys = AXPPlatformManagementPermissionKeys.PlatformManagement;\n context.addGroup(RootConfig.module.name, await this.translateService.translateAsync('@platform-management:permissions.manage.title'), await this.translateService.translateAsync('@platform-management:permissions.manage.description'))\n //\n .addPermission(keys.Token.Management, await this.translateService.translateAsync('@platform-management:tokens.permissions.token.manage.title'), await this.translateService.translateAsync('@platform-management:tokens.permissions.token.manage.description'))\n .addChild(keys.Token.View, await this.translateService.translateAsync('@platform-management:tokens.permissions.token.view.title'), await this.translateService.translateAsync('@platform-management:tokens.permissions.token.view.description'))\n .addChild(keys.Token.Create, await this.translateService.translateAsync('@platform-management:tokens.permissions.token.create.title'), await this.translateService.translateAsync('@platform-management:tokens.permissions.token.create.description'))\n .addChild(keys.Token.Edit, await this.translateService.translateAsync('@platform-management:tokens.permissions.token.edit.title'), await this.translateService.translateAsync('@platform-management:tokens.permissions.token.edit.description'))\n .addChild(keys.Token.Delete, await this.translateService.translateAsync('@platform-management:tokens.permissions.token.delete.title'), await this.translateService.translateAsync('@platform-management:tokens.permissions.token.delete.description'))\n .endPermission()\n //\n .addPermission(keys.MenuManagement.Management, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.manage.description'), [AXPPlatformManagementFeatureKeys.MenuCustomization] // Require menu-customization feature\n )\n .addChild(keys.MenuManagement.View, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.view.description'))\n .addChild(keys.MenuManagement.Create, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.create.description'))\n .addChild(keys.MenuManagement.Edit, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.edit.description'))\n .addChild(keys.MenuManagement.Delete, await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.title'), await this.translateService.translateAsync('@platform-management:menu-management.permissions.menu-management.actions.delete.description'))\n .endPermission()\n //\n .endGroup();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPermissionDefinitionProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.Injector }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1kZWZpbml0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9wZXJtaXNzaW9uLWRlZmluaXRpb24ucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFHckMsTUFBTSxPQUFPLCtCQUErQjtJQUcxQyxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQStDO1FBQzFELE1BQU0sSUFBSSxHQUFHLG1DQUFtQyxDQUFDLGtCQUFrQixDQUFDO1FBRXBFLE9BQU8sQ0FBQyxRQUFRLENBQ2QsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQ3RCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywrQ0FBK0MsQ0FBQyxFQUMzRixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMscURBQXFELENBQUMsQ0FDbEc7WUFDQyxFQUFFO2FBQ0QsYUFBYSxDQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUNyQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNERBQTRELENBQUMsRUFDeEcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLGtFQUFrRSxDQUFDLENBQy9HO2FBQ0EsUUFBUSxDQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUNmLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQywwREFBMEQsQ0FBQyxFQUN0RyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsZ0VBQWdFLENBQUMsQ0FDN0c7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQ2pCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyw0REFBNEQsQ0FBQyxFQUN4RyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsa0VBQWtFLENBQUMsQ0FDL0c7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQ2YsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLDBEQUEwRCxDQUFDLEVBQ3RHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxnRUFBZ0UsQ0FBQyxDQUM3RzthQUNBLFFBQVEsQ0FDUCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFDakIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLDREQUE0RCxDQUFDLEVBQ3hHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxrRUFBa0UsQ0FBQyxDQUMvRzthQUNBLGFBQWEsRUFBRTtZQUNoQixFQUFFO2FBQ0QsYUFBYSxDQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUM5QixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsdUZBQXVGLENBQUMsRUFDbkksTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLDZGQUE2RixDQUFDLEVBQ3pJLENBQUMsZ0NBQWdDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxxQ0FBcUM7U0FDM0Y7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxxRkFBcUYsQ0FBQyxFQUNqSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsMkZBQTJGLENBQUMsQ0FDeEk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx1RkFBdUYsQ0FBQyxFQUNuSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNkZBQTZGLENBQUMsQ0FDMUk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ3hCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxxRkFBcUYsQ0FBQyxFQUNqSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsMkZBQTJGLENBQUMsQ0FDeEk7YUFDQSxRQUFRLENBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQzFCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyx1RkFBdUYsQ0FBQyxFQUNuSSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsNkZBQTZGLENBQUMsQ0FDMUk7YUFDQSxhQUFhLEVBQUU7WUFDaEIsRUFBRTthQUNELFFBQVEsRUFBRSxDQUFDO0lBQ2hCLENBQUM7K0dBeEVVLCtCQUErQjttSEFBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciwgQVhQUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFBsYXRmb3JtTWFuYWdlbWVudFBlcm1pc3Npb25LZXlzIH0gZnJvbSAnLi9wZXJtaXNzaW9uLmtleXMnO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1NYW5hZ2VtZW50RmVhdHVyZUtleXMgfSBmcm9tICcuL2ZlYXR1cmVzLmtleXMnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4vY29uc3QnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNUGVybWlzc2lvbkRlZmluaXRpb25Qcm92aWRlciBpbXBsZW1lbnRzIEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IEFYVHJhbnNsYXRpb25TZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICB9XG5cbiAgYXN5bmMgZGVmaW5lKGNvbnRleHQ6IEFYUFBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5cyA9IEFYUFBsYXRmb3JtTWFuYWdlbWVudFBlcm1pc3Npb25LZXlzLlBsYXRmb3JtTWFuYWdlbWVudDtcblxuICAgIGNvbnRleHQuYWRkR3JvdXAoXG4gICAgICBSb290Q29uZmlnLm1vZHVsZS5uYW1lLFxuICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDpwZXJtaXNzaW9ucy5tYW5hZ2UudGl0bGUnKSxcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6cGVybWlzc2lvbnMubWFuYWdlLmRlc2NyaXB0aW9uJylcbiAgICApXG4gICAgICAvL1xuICAgICAgLmFkZFBlcm1pc3Npb24oXG4gICAgICAgIGtleXMuVG9rZW4uTWFuYWdlbWVudCxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDp0b2tlbnMucGVybWlzc2lvbnMudG9rZW4ubWFuYWdlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6dG9rZW5zLnBlcm1pc3Npb25zLnRva2VuLm1hbmFnZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuVG9rZW4uVmlldyxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDp0b2tlbnMucGVybWlzc2lvbnMudG9rZW4udmlldy50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50OnRva2Vucy5wZXJtaXNzaW9ucy50b2tlbi52aWV3LmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5Ub2tlbi5DcmVhdGUsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6dG9rZW5zLnBlcm1pc3Npb25zLnRva2VuLmNyZWF0ZS50aXRsZScpLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50OnRva2Vucy5wZXJtaXNzaW9ucy50b2tlbi5jcmVhdGUuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLlRva2VuLkVkaXQsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6dG9rZW5zLnBlcm1pc3Npb25zLnRva2VuLmVkaXQudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDp0b2tlbnMucGVybWlzc2lvbnMudG9rZW4uZWRpdC5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuVG9rZW4uRGVsZXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50OnRva2Vucy5wZXJtaXNzaW9ucy50b2tlbi5kZWxldGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDp0b2tlbnMucGVybWlzc2lvbnMudG9rZW4uZGVsZXRlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5lbmRQZXJtaXNzaW9uKClcbiAgICAgIC8vXG4gICAgICAuYWRkUGVybWlzc2lvbihcbiAgICAgICAga2V5cy5NZW51TWFuYWdlbWVudC5NYW5hZ2VtZW50LFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5tYW5hZ2UudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMubWFuYWdlLmRlc2NyaXB0aW9uJyksXG4gICAgICAgIFtBWFBQbGF0Zm9ybU1hbmFnZW1lbnRGZWF0dXJlS2V5cy5NZW51Q3VzdG9taXphdGlvbl0gLy8gUmVxdWlyZSBtZW51LWN1c3RvbWl6YXRpb24gZmVhdHVyZVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLk1lbnVNYW5hZ2VtZW50LlZpZXcsXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLnZpZXcudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMudmlldy5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuYWRkQ2hpbGQoXG4gICAgICAgIGtleXMuTWVudU1hbmFnZW1lbnQuQ3JlYXRlLFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5jcmVhdGUudGl0bGUnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuY3JlYXRlLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgIC5hZGRDaGlsZChcbiAgICAgICAga2V5cy5NZW51TWFuYWdlbWVudC5FZGl0LFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ0BwbGF0Zm9ybS1tYW5hZ2VtZW50Om1lbnUtbWFuYWdlbWVudC5wZXJtaXNzaW9ucy5tZW51LW1hbmFnZW1lbnQuYWN0aW9ucy5lZGl0LnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmVkaXQuZGVzY3JpcHRpb24nKVxuICAgICAgKVxuICAgICAgLmFkZENoaWxkKFxuICAgICAgICBrZXlzLk1lbnVNYW5hZ2VtZW50LkRlbGV0ZSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdAcGxhdGZvcm0tbWFuYWdlbWVudDptZW51LW1hbmFnZW1lbnQucGVybWlzc2lvbnMubWVudS1tYW5hZ2VtZW50LmFjdGlvbnMuZGVsZXRlLnRpdGxlJyksXG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnQHBsYXRmb3JtLW1hbmFnZW1lbnQ6bWVudS1tYW5hZ2VtZW50LnBlcm1pc3Npb25zLm1lbnUtbWFuYWdlbWVudC5hY3Rpb25zLmRlbGV0ZS5kZXNjcmlwdGlvbicpXG4gICAgICApXG4gICAgICAuZW5kUGVybWlzc2lvbigpXG4gICAgICAvL1xuICAgICAgLmVuZEdyb3VwKCk7XG4gIH1cbn1cblxuIl19","import { AXPEntityCommandScope, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/widget-core';\nimport { entityMasterCrudActions, entityMasterRecordActions } from '@acorex/platform/layout/entity';\nimport { RootConfig } from '../../const';\nimport { AXPWidgetsList } from '@acorex/modules/common';\nexport async function tokenEntityFactory(injector) {\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.token.name,\n title: RootConfig.entities.token.title,\n icon: RootConfig.entities.token.icon,\n formats: {\n individual: 'Token',\n plural: 'Tokens',\n },\n plugins: [\n {\n name: 'unique-fields',\n options: {\n fields: 'name',\n scope: 'global',\n },\n },\n { name: 'history' },\n { name: 'compare' },\n ],\n relatedEntities: [],\n groups: [\n {\n id: 'basic-info',\n title: `@${i18n}:tokens.entities.token.groups.basic-info`,\n },\n {\n id: 'value',\n title: `@${i18n}:tokens.entities.token.groups.value`,\n },\n ],\n properties: [\n {\n name: 'name',\n title: '@general:terms.common.name',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.largeText,\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n {\n name: 'type',\n title: `@${i18n}:tokens.entities.token.fields.type.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'value',\n textField: 'title',\n dataSource: [\n { title: 'String', value: 'String' },\n { title: 'Integer', value: 'Integer' },\n { title: 'Boolean', value: 'Boolean' },\n { title: 'Expression', value: 'Expression' },\n ],\n direction: 'horizontal',\n multiple: false,\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n },\n {\n name: 'expression',\n title: `@${i18n}:tokens.entities.token.fields.expression.title`,\n groupId: 'value',\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsList.Advanced.CodeEditor,\n },\n },\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }, { name: 'type' }, { name: 'expression' }],\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'value',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'type',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'expression',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'value',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'type',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'expression',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'basic-info',\n },\n {\n id: 'value',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n name: 'type',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'expression',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n actions: [\n ...entityMasterRecordActions(),\n {\n title: `@${i18n}:tokens.entities.token.actions.execute.title`,\n command: {\n name: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n options: {\n tokenName: '{{ context.eval(\"name\") }}',\n tokenTitle: '{{ context.eval(\"title\") }}',\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-play',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n },\n list: {\n actions: [\n ...entityMasterCrudActions(),\n {\n title: `@${i18n}:tokens.entities.token.actions.execute.title`,\n command: {\n name: `${RootConfig.module.name}.${RootConfig.entities.token.name}:Execute`,\n options: {\n tokenName: '{{ context.eval(\"name\") }}',\n tokenTitle: '{{ context.eval(\"title\") }}',\n },\n },\n priority: 'primary',\n type: 'action',\n icon: 'fa-light fa-play',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [createAllQueryView()],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy90b2tlbi90b2tlbi5lbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUE4QixxQkFBcUIsRUFBc0Isa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUFDLFFBQWtCO0lBQ3pELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRXBDLE1BQU0sU0FBUyxHQUFjO1FBQzNCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUk7UUFDcEMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUs7UUFDdEMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUk7UUFDcEMsT0FBTyxFQUFFO1lBQ1AsVUFBVSxFQUFFLE9BQU87WUFDbkIsTUFBTSxFQUFFLFFBQVE7U0FDakI7UUFDRCxPQUFPLEVBQUU7WUFDUDtnQkFDRSxJQUFJLEVBQUUsZUFBZTtnQkFDckIsT0FBTyxFQUFFO29CQUNQLE1BQU0sRUFBRSxNQUFNO29CQUNkLEtBQUssRUFBRSxR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LHFCQUFxQixDQUFDLFVBQVU7eUJBQ3JCO3FCQUNyQjtvQkFDRCxLQUFLLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2lCQUM5QjthQUNGO1NBQ0Y7S0FDRixDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYUEVudGl0eSwgQVhQRW50aXR5QWN0aW9uLCBBWFBFbnRpdHlDb21tYW5kU2NvcGUsIEFYUEVudGl0eVF1ZXJ5VHlwZSwgY3JlYXRlQWxsUXVlcnlWaWV3IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBlbnRpdHlNYXN0ZXJDcnVkQWN0aW9ucywgZW50aXR5TWFzdGVyUmVjb3JkQWN0aW9ucyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTVRva2Vuc1NlcnZpY2UgfSBmcm9tICcuL3Rva2Vucy5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldHNMaXN0IH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL2NvbW1vbic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0b2tlbkVudGl0eUZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogUHJvbWlzZTxBWFBFbnRpdHkgfCBudWxsPiB7XG4gIGNvbnN0IGkxOG4gPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuXG4gIGNvbnN0IGVudGl0eURlZjogQVhQRW50aXR5ID0ge1xuICAgIG1vZHVsZTogUm9vdENvbmZpZy5tb2R1bGUubmFtZSxcbiAgICBuYW1lOiBSb290Q29uZmlnLmVudGl0aWVzLnRva2VuLm5hbWUsXG4gICAgdGl0bGU6IFJvb3RDb25maWcuZW50aXRpZXMudG9rZW4udGl0bGUsXG4gICAgaWNvbjogUm9vdENvbmZpZy5lbnRpdGllcy50b2tlbi5pY29uLFxuICAgIGZvcm1hdHM6IHtcbiAgICAgIGluZGl2aWR1YWw6ICdUb2tlbicsXG4gICAgICBwbHVyYWw6ICdUb2tlbnMnLFxuICAgIH0sXG4gICAgcGx1Z2luczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAndW5pcXVlLWZpZWxkcycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBmaWVsZHM6ICduYW1lJyxcbiAgICAgICAgICBzY29wZTogJ2dsb2JhbCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgeyBuYW1lOiAnaGlzdG9yeScgfSxcbiAgICAgIHsgbmFtZTogJ2NvbXBhcmUnIH0sXG4gICAgXSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ2Jhc2ljLWluZm8nLFxuICAgICAgICB0aXRsZTogYEAke2kxOG59OnRva2Vucy5lbnRpdGllcy50b2tlbi5ncm91cHMuYmFzaWMtaW5mb2AsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ3ZhbHVlJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTp0b2tlbnMuZW50aXRpZXMudG9rZW4uZ3JvdXBzLnZhbHVlYCxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgdGl0bGU6ICdAZ2VuZXJhbDp0ZXJtcy5jb21tb24ubmFtZScsXG4gICAgICAgIGdyb3VwSWQ6ICdiYXNpYy1pbmZvJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgaW5saW5lOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdGl0bGU6ICdAZ2VuZXJhbDp0ZXJtcy5jb21tb24udGl0bGUnLFxuICAgICAgICBncm91cElkOiAnYmFzaWMtaW5mbycsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsaWRhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBydWxlOiAncmVxdWlyZWQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgIHRpdGxlOiAnQGdlbmVyYWw6dGVybXMuY29tbW9uLmRlc2NyaXB0aW9uJyxcbiAgICAgICAgZ3JvdXBJZDogJ2Jhc2ljLWluZm8nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5sYXJnZVRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3R5cGUnLFxuICAgICAgICB0aXRsZTogYEAke2kxOG59OnRva2Vucy5lbnRpdGllcy50b2tlbi5maWVsZHMudHlwZS50aXRsZWAsXG4gICAgICAgIGdyb3VwSWQ6ICd2YWx1ZScsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgdmFsdWVGaWVsZDogJ3ZhbHVlJyxcbiAgICAgICAgICAgICAgdGV4dEZpZWxkOiAndGl0bGUnLFxuICAgICAgICAgICAgICBkYXRhU291cmNlOiBbXG4gICAgICAgICAgICAgICAgeyB0aXRsZTogJ1N0cmluZycsIHZhbHVlOiAnU3RyaW5nJyB9LFxuICAgICAgICAgICAgICAgIHsgdGl0bGU6ICdJbnRlZ2VyJywgdmFsdWU6ICdJbnRlZ2VyJyB9LFxuICAgICAgICAgICAgICAgIHsgdGl0bGU6ICdCb29sZWFuJywgdmFsdWU6ICdCb29sZWFuJyB9LFxuICAgICAgICAgICAgICAgIHsgdGl0bGU6ICdFeHByZXNzaW9uJywgdmFsdWU6ICdFeHByZXNzaW9uJyB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBkaXJlY3Rpb246ICdob3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJ1bGU6ICdyZXF1aXJlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdleHByZXNzaW9uJyxcbiAgICAgICAgdGl0bGU6IGBAJHtpMThufTp0b2tlbnMuZW50aXRpZXMudG9rZW4uZmllbGRzLmV4cHJlc3Npb24udGl0bGVgLFxuICAgICAgICBncm91cElkOiAndmFsdWUnLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzTGlzdC5BZHZhbmNlZC5Db2RlRWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgIGFkdmFuY2U6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjb2x1bW5zOiBbeyBuYW1lOiAnbmFtZScgfSwgeyBuYW1lOiAndGl0bGUnIH0sIHsgbmFtZTogJ3R5cGUnIH0sIHsgbmFtZTogJ2V4cHJlc3Npb24nIH1dLFxuXG4gICAgaW50ZXJmYWNlczoge1xuICAgICAgbWFzdGVyOiB7XG4gICAgICAgIGNyZWF0ZToge1xuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnYmFzaWMtaW5mbycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3ZhbHVlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2V4cHJlc3Npb24nLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB1cGRhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ2Jhc2ljLWluZm8nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICd2YWx1ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydGllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndHlwZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdleHByZXNzaW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgc2luZ2xlOiB7XG4gICAgICAgICAgdGl0bGU6ICd7e3RpdGxlfX0nLFxuICAgICAgICAgIHNlY3Rpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiAnYmFzaWMtaW5mbycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3ZhbHVlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiAxMixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBsZzoge1xuICAgICAgICAgICAgICAgICAgICBjb2xTcGFuOiA2LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ2V4cHJlc3Npb24nLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIC4uLmVudGl0eU1hc3RlclJlY29yZEFjdGlvbnMoKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6IGBAJHtpMThufTp0b2tlbnMuZW50aXRpZXMudG9rZW4uYWN0aW9ucy5leGVjdXRlLnRpdGxlYCxcbiAgICAgICAgICAgICAgY29tbWFuZDoge1xuICAgICAgICAgICAgICAgIG5hbWU6IGAke1Jvb3RDb25maWcubW9kdWxlLm5hbWV9LiR7Um9vdENvbmZpZy5lbnRpdGllcy50b2tlbi5uYW1lfTpFeGVjdXRlYCxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICB0b2tlbk5hbWU6ICd7eyBjb250ZXh0LmV2YWwoXCJuYW1lXCIpIH19JyxcbiAgICAgICAgICAgICAgICAgIHRva2VuVGl0bGU6ICd7eyBjb250ZXh0LmV2YWwoXCJ0aXRsZVwiKSB9fScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcHJpb3JpdHk6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2FjdGlvbicsXG4gICAgICAgICAgICAgIGljb246ICdmYS1saWdodCBmYS1wbGF5JyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSBhcyBBWFBFbnRpdHlBY3Rpb24sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIC4uLmVudGl0eU1hc3RlckNydWRBY3Rpb25zKCksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiBgQCR7aTE4bn06dG9rZW5zLmVudGl0aWVzLnRva2VuLmFjdGlvbnMuZXhlY3V0ZS50aXRsZWAsXG4gICAgICAgICAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBgJHtSb290Q29uZmlnLm1vZHVsZS5uYW1lfS4ke1Jvb3RDb25maWcuZW50aXRpZXMudG9rZW4ubmFtZX06RXhlY3V0ZWAsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgdG9rZW5OYW1lOiAne3sgY29udGV4dC5ldmFsKFwibmFtZVwiKSB9fScsXG4gICAgICAgICAgICAgICAgICB0b2tlblRpdGxlOiAne3sgY29udGV4dC5ldmFsKFwidGl0bGVcIikgfX0nLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdhY3Rpb24nLFxuICAgICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGxheScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0gYXMgQVhQRW50aXR5QWN0aW9uLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdmlld3M6IFtjcmVhdGVBbGxRdWVyeVZpZXcoKV0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIGVudGl0eURlZjtcbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { AXMTokensService, AXMTokensServiceImpl } from './tokens.service';\nimport * as i0 from \"@angular/core\";\nexport class AXMTokenEntityModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenEntityModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenEntityModule, providers: [\n {\n provide: AXMTokensService,\n useClass: AXMTokensServiceImpl,\n },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMTokenEntityModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXMTokensService,\n useClass: AXMTokensServiceImpl,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3BsYXRmb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy90b2tlbi90b2tlbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFhMUUsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0I7Z0hBQXBCLG9CQUFvQixhQVBsQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxnQkFBZ0I7Z0JBQ3pCLFFBQVEsRUFBRSxvQkFBb0I7YUFDakM7U0FDSjs7NEZBRVEsb0JBQW9CO2tCQVhoQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxFQUFFO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsUUFBUSxFQUFFLG9CQUFvQjt5QkFDakM7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNVG9rZW5zU2VydmljZSwgQVhNVG9rZW5zU2VydmljZUltcGwgfSBmcm9tICcuL3Rva2Vucy5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXSxcbiAgICBleHBvcnRzOiBbXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBWE1Ub2tlbnNTZXJ2aWNlLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IEFYTVRva2Vuc1NlcnZpY2VJbXBsLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVRva2VuRW50aXR5TW9kdWxlIHsgfVxuIl19","// Entity Services\nexport * from './token';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQjtBQUNsQixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEVudGl0eSBTZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi90b2tlbic7Il19","import { AXP_PERMISSION_DEFINITION_PROVIDER, AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_MENU_MIDDLEWARE, AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER } from '@acorex/platform/core';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXPRootLayoutComponent } from '@acorex/platform/themes/default';\nimport { NgModule } from '@angular/core';\nimport { ROUTES } from '@angular/router';\nimport { AXMEntityLoader } from './entity.provider';\nimport { AXPPlatformManagementFeatureDefinitionProvider } from './feature-definition.provider';\nimport { AXPCustomMenuMiddleware } from './features/menu-management/custom-menu.middleware';\nimport { AXMMenuManagementModule } from './features/menu-management/menu-management.module';\nimport { AXMTokenModule } from './features/token/token.module';\nimport { AXMUpdaterModule } from './features/updater/updater.module';\nimport { PlatformManagementManifest } from './manifest';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\n// Entity Modules\nimport { AXMTokenEntityModule } from './entities';\nimport * as i0 from \"@angular/core\";\n//#region ---- Routes Factory ----\nfunction routesFactory() {\n const routes = [\n {\n path: ':app/platform-management/menus/:scope',\n canActivate: [AXPAuthGuard],\n loadComponent: () => AXPRootLayoutComponent,\n children: [\n {\n path: '',\n loadComponent: () => import('./features/menu-management/pages/menu-list/menu-list.component').then((c) => c.AXMMenuListComponent),\n data: { reuse: true },\n },\n ],\n },\n ];\n return routes;\n}\n//#endregion\nexport class AXMPlatformManagementModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPlatformManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPlatformManagementModule, imports: [AXMUpdaterModule,\n AXMTokenModule,\n AXMMenuManagementModule,\n // Entity Modules\n AXMTokenEntityModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPlatformManagementModule, providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_MENU_MIDDLEWARE,\n useClass: AXPCustomMenuMiddleware,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: PlatformManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityLoader,\n multi: true,\n },\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPPlatformManagementFeatureDefinitionProvider,\n multi: true,\n },\n ], imports: [AXMUpdaterModule,\n AXMTokenModule,\n AXMMenuManagementModule,\n // Entity Modules\n AXMTokenEntityModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXMPlatformManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXMUpdaterModule,\n AXMTokenModule,\n AXMMenuManagementModule,\n // Entity Modules\n AXMTokenEntityModule,\n ],\n exports: [],\n declarations: [],\n providers: [\n // Module-specific providers (not part of manifest system)\n {\n provide: AXP_MENU_MIDDLEWARE,\n useClass: AXPCustomMenuMiddleware,\n multi: true,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: PlatformManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityLoader,\n multi: true,\n },\n {\n provide: AXP_FEATURE_DEFINITION_PROVIDER,\n useClass: AXPPlatformManagementFeatureDefinitionProvider,\n multi: true,\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tbWFuYWdlbWVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvbGliL3BsYXRmb3JtLW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDhDQUE4QyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxF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K0JBQStCOzRCQUN6QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixRQUFRLEVBQUUsZUFBZTs0QkFDekIsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLDRCQUE0Qjs0QkFDckMsUUFBUSxFQUFFLGVBQWU7NEJBQ3pCLEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFFBQVEsRUFBRSw4Q0FBOEM7NEJBQ3hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQX1BFUk1JU1NJT05fREVGSU5JVElPTl9QUk9WSURFUiwgQVhQQXV0aEd1YXJkIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IEFYUF9NRU5VX01JRERMRVdBUkUsIEFYUF9NRU5VX1BST1ZJREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQX0ZFQVRVUkVfREVGSU5JVElPTl9QUk9WSURFUiwgQVhQX01PRFVMRV9NQU5JRkVTVF9QUk9WSURFUiB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBfRU5USVRZX0RFRklOSVRJT05fTE9BREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IEFYUFJvb3RMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0JztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBST1VURVMsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWE1FbnRpdHlMb2FkZXIgfSBmcm9tICcuL2VudGl0eS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWFBQbGF0Zm9ybU1hbmFnZW1lbnRGZWF0dXJlRGVmaW5pdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9mZWF0dXJlLWRlZmluaXRpb24ucHJvdmlkZXInO1xuaW1wb3J0IHsgQVhQQ3VzdG9tTWVudU1pZGRsZXdhcmUgfSBmcm9tICcuL2ZlYXR1cmVzL21lbnUtbWFuYWdlbWVudC9jdXN0b20tbWVudS5taWRkbGV3YXJlJztcbmltcG9ydCB7IEFYTU1lbnVNYW5hZ2VtZW50TW9kdWxlIH0gZnJvbSAnLi9mZWF0dXJlcy9tZW51LW1hbmFnZW1lbnQvbWVudS1tYW5hZ2VtZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBBWE1Ub2tlbk1vZHVsZSB9IGZyb20gJy4vZmVhdHVyZXMvdG9rZW4vdG9rZW4ubW9kdWxlJztcbmltcG9ydCB7IEFYTVVwZGF0ZXJNb2R1bGUgfSBmcm9tICcuL2ZlYXR1cmVzL3VwZGF0ZXIvdXBkYXRlci5tb2R1bGUnO1xuaW1wb3J0IHsgUGxhdGZvcm1NYW5hZ2VtZW50TWFuaWZlc3QgfSBmcm9tICcuL21hbmlmZXN0JztcbmltcG9ydCB7IEFYTU1lbnVQcm92aWRlciB9IGZyb20gJy4vbWVudS5wcm92aWRlcic7XG5pbXBvcnQgeyBBWE1QZXJtaXNzaW9uRGVmaW5pdGlvblByb3ZpZGVyIH0gZnJvbSAnLi9wZXJtaXNzaW9uLWRlZmluaXRpb24ucHJvdmlkZXInO1xuXG4vLyBFbnRpdHkgTW9kdWxlc1xuaW1wb3J0IHsgQVhNVG9rZW5FbnRpdHlNb2R1bGUgfSBmcm9tICcuL2VudGl0aWVzJztcblxuLy8jcmVnaW9uIC0tLS0gICBSb3V0ZXMgRmFjdG9yeSAgIC0tLS1cblxuZnVuY3Rpb24gcm91dGVzRmFjdG9yeSgpOiBSb3V0ZXMge1xuICBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgICB7XG4gICAgICBwYXRoOiAnOmFwcC9wbGF0Zm9ybS1tYW5hZ2VtZW50L21lbnVzLzpzY29wZScsXG4gICAgICBjYW5BY3RpdmF0ZTogW0FYUEF1dGhHdWFyZF0sXG4gICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBBWFBSb290TGF5b3V0Q29tcG9uZW50LFxuICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAge1xuICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICAgICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvbWVudS1tYW5hZ2VtZW50L3BhZ2VzL21lbnUtbGlzdC9tZW51LWxpc3QuY29tcG9uZW50JykudGhlbihcbiAgICAgICAgICAgICAgKGMpID0+IGMuQVhNTWVudUxpc3RDb21wb25lbnQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGRhdGE6IHsgcmV1c2U6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIHJvdXRlcztcbn1cblxuLy8jZW5kcmVnaW9uXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBBWE1VcGRhdGVyTW9kdWxlLFxuICAgIEFYTVRva2VuTW9kdWxlLFxuICAgIEFYTU1lbnVNYW5hZ2VtZW50TW9kdWxlLFxuICAgIC8vIEVudGl0eSBNb2R1bGVzXG4gICAgQVhNVG9rZW5FbnRpdHlNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBwcm92aWRlcnM6IFtcbiAgICAvLyBNb2R1bGUtc3BlY2lmaWMgcHJvdmlkZXJzIChub3QgcGFydCBvZiBtYW5pZmVzdCBzeXN0ZW0pXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX01FTlVfTUlERExFV0FSRSxcbiAgICAgIHVzZUNsYXNzOiBBWFBDdXN0b21NZW51TWlkZGxld2FyZSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogUk9VVEVTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VGYWN0b3J5OiByb3V0ZXNGYWN0b3J5LFxuICAgIH0sXG4gICAgLy8gTW9kdWxlIE1hbmlmZXN0IFByb3ZpZGVyXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX01PRFVMRV9NQU5JRkVTVF9QUk9WSURFUixcbiAgICAgIHVzZVZhbHVlOiBQbGF0Zm9ybU1hbmFnZW1lbnRNYW5pZmVzdCxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gUHJvdmlkZXIgcmVmZXJlbmNlcyAobm93IHVzaW5nIHRva2VucylcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBfUEVSTUlTU0lPTl9ERUZJTklUSU9OX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTVBlcm1pc3Npb25EZWZpbml0aW9uUHJvdmlkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9NRU5VX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTU1lbnVQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1FbnRpdHlMb2FkZXIsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9GRUFUVVJFX0RFRklOSVRJT05fUFJPVklERVIsXG4gICAgICB1c2VDbGFzczogQVhQUGxhdGZvcm1NYW5hZ2VtZW50RmVhdHVyZURlZmluaXRpb25Qcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTVBsYXRmb3JtTWFuYWdlbWVudE1vZHVsZSB7fVxuIl19","export * from './lib/platform-management.module';\nexport * from './lib/const';\nexport * from './lib/entities';\nexport * from './lib/features.keys';\n// export * from './lib/features';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvcGxhdGZvcm0tbWFuYWdlbWVudC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvcGxhdGZvcm0tbWFuYWdlbWVudC5tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb25zdCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnRpdGllcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mZWF0dXJlcy5rZXlzJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL2ZlYXR1cmVzJztcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtcGxhdGZvcm0tbWFuYWdlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9wbGF0Zm9ybS1tYW5hZ2VtZW50L3NyYy9hY29yZXgtbW9kdWxlcy1wbGF0Zm9ybS1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1.AXPUpdaterService"],"mappings":"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"}