@acorex/modules 18.2.2 → 18.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +42 -4
- package/auth/lib/account/profile/profile-slot.component.d.ts +0 -1
- package/auth/lib/error-handler.d.ts +0 -1
- package/backend/lib/data/api/data-provider.d.ts +1 -0
- package/backend/lib/data/index.d.ts +0 -1
- package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +6 -10
- package/esm2022/application-management/lib/menu.provider.mjs +3 -3
- package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +2 -4
- package/esm2022/auth/lib/error-handler.mjs +4 -5
- package/esm2022/auth/lib/menu.provider.mjs +6 -6
- package/esm2022/backend/lib/data/api/data-provider.mjs +6 -3
- package/esm2022/backend/lib/data/index.mjs +1 -2
- package/esm2022/form-template-management/lib/form-template-management.module.mjs +39 -29
- package/esm2022/form-template-management/lib/menu.provider.mjs +3 -3
- package/esm2022/form-template-management/lib/services/designer-connector.service.mjs +9 -2
- package/esm2022/form-template-management/lib/workflows/design-template.workflow.mjs +2 -2
- package/esm2022/localization-management/lib/menu.provider.mjs +5 -5
- package/esm2022/notification-management/lib/menu.provider.mjs +5 -5
- package/esm2022/platform-management/lib/menu.provider.mjs +4 -4
- package/esm2022/scheduler-job-management/acorex-modules-scheduler-job-management.mjs +5 -0
- package/esm2022/scheduler-job-management/index.mjs +5 -0
- package/esm2022/scheduler-job-management/lib/const.mjs +8 -0
- package/esm2022/scheduler-job-management/lib/entities/index.mjs +2 -0
- package/esm2022/scheduler-job-management/lib/entities/scheduler-job/index.mjs +5 -0
- package/esm2022/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.entity.mjs +333 -0
- package/esm2022/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.module.mjs +28 -0
- package/esm2022/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.service.mjs +17 -0
- package/esm2022/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.types.mjs +2 -0
- package/esm2022/scheduler-job-management/lib/entity.provider.mjs +25 -0
- package/esm2022/scheduler-job-management/lib/menu.provider.mjs +31 -0
- package/esm2022/scheduler-job-management/lib/scheduler-job-management.module.mjs +44 -0
- package/esm2022/text-template-management/lib/entities/category/category.entity.mjs +6 -1
- package/esm2022/text-template-management/lib/menu.provider.mjs +4 -4
- package/esm2022/text-template-management/lib/setting.provider.mjs +282 -22
- package/fesm2022/{acorex-modules-application-management-module-designer.component-DjRdIBQt.mjs → acorex-modules-application-management-module-designer.component-B6WPz0N8.mjs} +2 -2
- package/fesm2022/{acorex-modules-application-management-module-designer.component-DjRdIBQt.mjs.map → acorex-modules-application-management-module-designer.component-B6WPz0N8.mjs.map} +1 -1
- package/fesm2022/acorex-modules-application-management.mjs +9 -12
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-Chw_5AKM.mjs → acorex-modules-auth-acorex-modules-auth-DQzSrtut.mjs} +19 -21
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-DQzSrtut.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DN04Uoqa.mjs → acorex-modules-auth-app-chooser.component-BFQgjqFV.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DN04Uoqa.mjs.map → acorex-modules-auth-app-chooser.component-BFQgjqFV.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-Bir7SJ8b.mjs → acorex-modules-auth-login.module-KR2dB8vW.mjs} +6 -6
- package/fesm2022/{acorex-modules-auth-login.module-Bir7SJ8b.mjs.map → acorex-modules-auth-login.module-KR2dB8vW.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-DwijDvUp.mjs → acorex-modules-auth-master.layout-CU27gbWp.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-master.layout-DwijDvUp.mjs.map → acorex-modules-auth-master.layout-CU27gbWp.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-CuLQNJ-W.mjs → acorex-modules-auth-password.component-9uIMNoQE.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-password.component-CuLQNJ-W.mjs.map → acorex-modules-auth-password.component-9uIMNoQE.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-C1S8V4Bw.mjs → acorex-modules-auth-password.component-DpjEjw0o.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-password.component-C1S8V4Bw.mjs.map → acorex-modules-auth-password.component-DpjEjw0o.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-ILpWODmz.mjs → acorex-modules-auth-routes-CWqGOFnQ.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-ILpWODmz.mjs.map → acorex-modules-auth-routes-CWqGOFnQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-bgwR1LBc.mjs → acorex-modules-auth-two-factor.module-Bnoi3ZXB.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-two-factor.module-bgwR1LBc.mjs.map → acorex-modules-auth-two-factor.module-Bnoi3ZXB.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +3 -3
- package/fesm2022/acorex-modules-backend.mjs +8 -96
- package/fesm2022/acorex-modules-backend.mjs.map +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +47 -32
- package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-localization-management.mjs +4 -4
- package/fesm2022/acorex-modules-localization-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +4 -4
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +3 -3
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-setting-management.mjs → acorex-modules-scheduler-job-management.mjs} +155 -66
- package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-text-template-management.mjs +290 -24
- package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
- package/form-template-management/lib/form-template-management.module.d.ts +6 -7
- package/form-template-management/lib/services/designer-connector.service.d.ts +1 -0
- package/package.json +17 -17
- package/scheduler-job-management/README.md +3 -0
- package/{setting-management → scheduler-job-management}/index.d.ts +1 -1
- package/scheduler-job-management/lib/const.d.ts +7 -0
- package/scheduler-job-management/lib/entities/index.d.ts +1 -0
- package/scheduler-job-management/lib/entities/scheduler-job/index.d.ts +4 -0
- package/{setting-management/lib/entities/setting/setting.entity.d.ts → scheduler-job-management/lib/entities/scheduler-job/scheduler-job.entity.d.ts} +1 -1
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.module.d.ts +6 -0
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.service.d.ts +10 -0
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.types.d.ts +5 -0
- package/scheduler-job-management/lib/entity.provider.d.ts +9 -0
- package/{setting-management → scheduler-job-management}/lib/menu.provider.d.ts +1 -1
- package/scheduler-job-management/lib/scheduler-job-management.module.d.ts +7 -0
- package/backend/lib/data/local/local-data-provider.d.ts +0 -23
- package/esm2022/backend/lib/data/local/local-data-provider.mjs +0 -94
- package/esm2022/setting-management/acorex-modules-setting-management.mjs +0 -5
- package/esm2022/setting-management/index.mjs +0 -5
- package/esm2022/setting-management/lib/const.mjs +0 -7
- package/esm2022/setting-management/lib/entities/index.mjs +0 -2
- package/esm2022/setting-management/lib/entities/setting/index.mjs +0 -5
- package/esm2022/setting-management/lib/entities/setting/setting.entity.mjs +0 -244
- package/esm2022/setting-management/lib/entities/setting/setting.module.mjs +0 -28
- package/esm2022/setting-management/lib/entities/setting/setting.service.mjs +0 -17
- package/esm2022/setting-management/lib/entities/setting/setting.types.mjs +0 -2
- package/esm2022/setting-management/lib/entity.provider.mjs +0 -25
- package/esm2022/setting-management/lib/menu.provider.mjs +0 -32
- package/esm2022/setting-management/lib/setting-management.module.mjs +0 -44
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-Chw_5AKM.mjs.map +0 -1
- package/fesm2022/acorex-modules-setting-management.mjs.map +0 -1
- package/setting-management/README.md +0 -3
- package/setting-management/lib/const.d.ts +0 -6
- package/setting-management/lib/entities/index.d.ts +0 -1
- package/setting-management/lib/entities/setting/index.d.ts +0 -4
- package/setting-management/lib/entities/setting/setting.module.d.ts +0 -6
- package/setting-management/lib/entities/setting/setting.service.d.ts +0 -10
- package/setting-management/lib/entities/setting/setting.types.d.ts +0 -5
- package/setting-management/lib/entity.provider.d.ts +0 -9
- package/setting-management/lib/setting-management.module.d.ts +0 -7
@@ -1,10 +1,11 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { inject, NgModule } from '@angular/core';
|
3
3
|
import { RouterModule, ROUTES } from '@angular/router';
|
4
|
-
import { A as AXM_AUTH_CONFIG_TOKEN } from './acorex-modules-auth-acorex-modules-auth-
|
4
|
+
import { A as AXM_AUTH_CONFIG_TOKEN } from './acorex-modules-auth-acorex-modules-auth-DQzSrtut.mjs';
|
5
5
|
import '@acorex/platform/auth';
|
6
|
-
import '@acorex/platform/
|
6
|
+
import '@acorex/platform/themes/shared';
|
7
7
|
import '@angular/common/http';
|
8
|
+
import '@acorex/platform/common';
|
8
9
|
import '@angular/common';
|
9
10
|
import '@ngrx/effects';
|
10
11
|
import '@acorex/components/dialog';
|
@@ -17,7 +18,6 @@ import '@acorex/components/loading';
|
|
17
18
|
import '@acorex/components/avatar';
|
18
19
|
import '@acorex/components/image';
|
19
20
|
import '@acorex/core/translation';
|
20
|
-
import '@acorex/platform/mocks';
|
21
21
|
|
22
22
|
function routesFacory() {
|
23
23
|
const val = inject(AXM_AUTH_CONFIG_TOKEN);
|
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
58
58
|
}] });
|
59
59
|
|
60
60
|
export { AXPTwoFactorModule };
|
61
|
-
//# sourceMappingURL=acorex-modules-auth-two-factor.module-
|
61
|
+
//# sourceMappingURL=acorex-modules-auth-two-factor.module-Bnoi3ZXB.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-auth-two-factor.module-
|
1
|
+
{"version":3,"file":"acorex-modules-auth-two-factor.module-Bnoi3ZXB.mjs","sources":["../../../../libs/modules/auth/src/lib/two-factor/two-factor.module.ts"],"sourcesContent":["import { inject, NgModule } from '@angular/core';\nimport { RouterModule, ROUTES, Routes } from '@angular/router';\nimport { AXM_AUTH_CONFIG_TOKEN } from '../auth.config';\n\nfunction routesFacory() {\n const val = inject(AXM_AUTH_CONFIG_TOKEN);\n let routes: Routes = [];\n routes = [\n {\n path: 'two-step',\n loadComponent: () =>\n import('./two-factor-code/two-factor-code.component').then(\n (c) => c.AXPAuthTwoFactorCodeComponent\n ),\n },\n ];\n return routes;\n}\n\n@NgModule({\n declarations: [],\n imports: [RouterModule],\n exports: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ],\n})\nexport class AXPTwoFactorModule { }\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,YAAY,GAAA;AACnB,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACzC,IAAI,MAAM,GAAW,EAAE;AACvB,IAAA,MAAM,GAAG;AACP,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,aAAa,EAAE,MACb,OAAO,8DAA6C,CAAC,CAAC,IAAI,CACxD,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CACvC;AACJ,SAAA;KACF;AACD,IAAA,OAAO,MAAM;AACf;MAca,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAVnB,YAAY,CAAA,EAAA,CAAA,CAAA;AAUX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EARlB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,YAAY;AACzB,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CARS,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAUX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,YAAY;AACzB,yBAAA;AACF,qBAAA;AACF,iBAAA;;;;;"}
|
@@ -1,9 +1,10 @@
|
|
1
|
-
export { d as AXMAuthErrorHandler, g as AXMAuthModule, a as AXMAuthenticationTypes, e as AXMDefaultAuthConfigs, A as AXM_AUTH_CONFIG_TOKEN, h as AXPIdleService, f as configAuthModule } from './acorex-modules-auth-acorex-modules-auth-
|
1
|
+
export { d as AXMAuthErrorHandler, g as AXMAuthModule, a as AXMAuthenticationTypes, e as AXMDefaultAuthConfigs, A as AXM_AUTH_CONFIG_TOKEN, h as AXPIdleService, f as configAuthModule } from './acorex-modules-auth-acorex-modules-auth-DQzSrtut.mjs';
|
2
2
|
import '@acorex/platform/auth';
|
3
|
-
import '@acorex/platform/
|
3
|
+
import '@acorex/platform/themes/shared';
|
4
4
|
import '@angular/common/http';
|
5
5
|
import '@angular/core';
|
6
6
|
import '@angular/router';
|
7
|
+
import '@acorex/platform/common';
|
7
8
|
import '@angular/common';
|
8
9
|
import '@ngrx/effects';
|
9
10
|
import '@acorex/components/dialog';
|
@@ -16,5 +17,4 @@ import '@acorex/components/loading';
|
|
16
17
|
import '@acorex/components/avatar';
|
17
18
|
import '@acorex/components/image';
|
18
19
|
import '@acorex/core/translation';
|
19
|
-
import '@acorex/platform/mocks';
|
20
20
|
//# sourceMappingURL=acorex-modules-auth.mjs.map
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { AXM_AUTH_CONFIG_TOKEN, AXMAuthModule } from '@acorex/modules/auth';
|
2
2
|
import * as i2 from '@acorex/platform/auth';
|
3
3
|
import { AXPSessionService, AXPAuthModule, AXP_TENANT_LOADER, AXP_APPLICATION_LOADER, AXP_PERMISSION_LOADER, AXP_FEATURE_LOADER } from '@acorex/platform/auth';
|
4
|
-
import { AXP_ROOT_CONFIG_TOKEN, AXPDataProvider } from '@acorex/platform/common';
|
4
|
+
import { AXP_ROOT_CONFIG_TOKEN, AXPFilterOperatorMiddlewareService, AXPDataProvider } from '@acorex/platform/common';
|
5
5
|
import * as i0 from '@angular/core';
|
6
6
|
import { inject, Injectable, Component, NgModule } from '@angular/core';
|
7
7
|
import * as i1$1 from '@angular/router';
|
@@ -9,14 +9,12 @@ import { ROUTES } from '@angular/router';
|
|
9
9
|
import * as i1 from '@angular/common/http';
|
10
10
|
import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
|
11
11
|
import { map, BehaviorSubject, tap, filter, take, of, switchMap, delay, firstValueFrom, Observable } from 'rxjs';
|
12
|
-
import * as i1$
|
12
|
+
import * as i1$2 from 'angular-oauth2-oidc';
|
13
13
|
import { OAuthService, OAuthModule } from 'angular-oauth2-oidc';
|
14
14
|
import { AXPModuleDesignerService } from '@acorex/modules/application-management';
|
15
15
|
import { AXPFileManagementService } from '@acorex/platform/widgets';
|
16
16
|
import { AXNetworkService, AXUploadStatus, AXDownloadStatus } from '@acorex/core/network';
|
17
17
|
import { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';
|
18
|
-
import { applySortArray, applyFilterArray } from '@acorex/platform/core';
|
19
|
-
import * as i1$2 from '@acorex/platform/mocks';
|
20
18
|
|
21
19
|
class AXMOidcApplicationLoader {
|
22
20
|
constructor(http) {
|
@@ -402,6 +400,7 @@ class AXMBackendDataProvider {
|
|
402
400
|
constructor(http) {
|
403
401
|
this.http = http;
|
404
402
|
this.configs = inject(AXP_ROOT_CONFIG_TOKEN);
|
403
|
+
this.filterService = inject(AXPFilterOperatorMiddlewareService);
|
405
404
|
this.mainUrl = this.configs.baseUrl;
|
406
405
|
}
|
407
406
|
insertOne(entity, entityItem) {
|
@@ -456,11 +455,13 @@ class AXMBackendDataProvider {
|
|
456
455
|
function capitalizeFirstLetter(str) {
|
457
456
|
return str ? str.charAt(0).toUpperCase() + str.slice(1) : str;
|
458
457
|
}
|
458
|
+
const greaterThanOperator = this.filterService.getOperator('greaterThan');
|
459
|
+
const lessThanOperator = this.filterService.getOperator('lessThan');
|
459
460
|
function generateQueryString(filter) {
|
460
461
|
if (!filter.filters) {
|
461
462
|
// Base case: single filter
|
462
463
|
if (typeof filter.value === 'object' && filter.operator.type === 'between') {
|
463
|
-
return `${filter.field}
|
464
|
+
return `${filter.field} ${greaterThanOperator.type} '${filter.value.from}' and ${filter.field} ${lessThanOperator.type} '${filter.value.to}'`;
|
464
465
|
}
|
465
466
|
else {
|
466
467
|
return `${filter.field} ${filter.operator.type} '${filter.value}'`;
|
@@ -820,102 +821,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
820
821
|
}]
|
821
822
|
}] });
|
822
823
|
|
823
|
-
class AXMLocalDataProvider {
|
824
|
-
constructor(storageService) {
|
825
|
-
this.storageService = storageService;
|
826
|
-
}
|
827
|
-
insertOne(entity, entityItem) {
|
828
|
-
return this.storageService.insertOrupdateOne(entity.name, entityItem);
|
829
|
-
}
|
830
|
-
insertMany(entity, entityList) {
|
831
|
-
return this.storageService.insertMany(entity.name, entityList);
|
832
|
-
}
|
833
|
-
async getOne(entity, id) {
|
834
|
-
console.log('@LOACAL getOne', entity.name, id);
|
835
|
-
return this.storageService.getOne(entity.name, id);
|
836
|
-
}
|
837
|
-
async getMany(entity, params) {
|
838
|
-
console.log('@LOACAL getMany', entity.name, params);
|
839
|
-
const result = await this.storageService.getMany(entity.name, params);
|
840
|
-
const sortedItems = applySortArray(result, params?.sort);
|
841
|
-
const filteredItems = applyFilterArray(sortedItems, params?.filter?.filters);
|
842
|
-
return new Promise((resolve) => {
|
843
|
-
resolve({
|
844
|
-
items: params ? filteredItems?.slice(params.skip, (params.skip ?? 0) + (params.take ?? 20)) : filteredItems,
|
845
|
-
total: filteredItems?.length ?? 0,
|
846
|
-
});
|
847
|
-
});
|
848
|
-
}
|
849
|
-
updateOne(entity, id, data) {
|
850
|
-
return this.storageService.updateOne(entity.name, id, data);
|
851
|
-
}
|
852
|
-
deleteOne(entity, id) {
|
853
|
-
return this.storageService.deleteOne(entity.name, id);
|
854
|
-
}
|
855
|
-
getFirst(entity) {
|
856
|
-
return this.getMany(entity).then((res) => {
|
857
|
-
return res.items ? res.items[0] : null;
|
858
|
-
});
|
859
|
-
}
|
860
|
-
// Mock file uploader function
|
861
|
-
uploadFile(file, title) {
|
862
|
-
return new Promise((resolve) => {
|
863
|
-
// Mock file ID generation
|
864
|
-
const fileId = `mock-file-id-${Math.random().toString(36).substr(2, 9)}`;
|
865
|
-
const fileRecord = { id: fileId, title, file };
|
866
|
-
this.storageService.insertOrupdateOne('files', fileRecord).then(() => {
|
867
|
-
resolve(fileId);
|
868
|
-
});
|
869
|
-
});
|
870
|
-
}
|
871
|
-
updateFile(id, file, title) {
|
872
|
-
return new Promise((resolve) => {
|
873
|
-
// Mock file ID generation
|
874
|
-
const fileId = `mock-file-id-${Math.random().toString(36).substr(2, 9)}`;
|
875
|
-
const fileRecord = { id: fileId, title, file };
|
876
|
-
this.storageService.insertOrupdateOne('files', fileRecord).then(() => {
|
877
|
-
resolve(fileId);
|
878
|
-
});
|
879
|
-
});
|
880
|
-
}
|
881
|
-
// Mock function to upload multiple files
|
882
|
-
uploadMultipleFiles(files, title) {
|
883
|
-
const uploadPromises = files.map((file) => this.uploadFile(file, title));
|
884
|
-
return Promise.all(uploadPromises);
|
885
|
-
}
|
886
|
-
// Mock function to view a file
|
887
|
-
viewFile(id, name) {
|
888
|
-
return new Promise(async (resolve, reject) => {
|
889
|
-
const fileRecord = await this.storageService.getOne('files', id);
|
890
|
-
if (fileRecord && fileRecord.file) {
|
891
|
-
resolve(fileRecord.file);
|
892
|
-
}
|
893
|
-
else {
|
894
|
-
reject('File not found');
|
895
|
-
}
|
896
|
-
});
|
897
|
-
}
|
898
|
-
// Mock function to download a file
|
899
|
-
downloadFile(id, name) {
|
900
|
-
return this.viewFile(id, name);
|
901
|
-
}
|
902
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMLocalDataProvider, deps: [{ token: i1$2.AXPStorageMockService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
903
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMLocalDataProvider, providedIn: 'root' }); }
|
904
|
-
}
|
905
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMLocalDataProvider, decorators: [{
|
906
|
-
type: Injectable,
|
907
|
-
args: [{
|
908
|
-
providedIn: 'root',
|
909
|
-
}]
|
910
|
-
}], ctorParameters: () => [{ type: i1$2.AXPStorageMockService }] });
|
911
|
-
|
912
824
|
function routesFactory() {
|
913
825
|
const routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];
|
914
826
|
return routes;
|
915
827
|
}
|
916
828
|
class AXMBackendModule {
|
917
829
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMBackendModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
918
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXMBackendModule, imports: [i1$
|
830
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXMBackendModule, imports: [i1$2.OAuthModule, AXMAuthModule, i2.AXPAuthModule] }); }
|
919
831
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMBackendModule, providers: [
|
920
832
|
{
|
921
833
|
provide: AXPDataProvider,
|
@@ -1026,5 +938,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
1026
938
|
* Generated bundle index. Do not edit.
|
1027
939
|
*/
|
1028
940
|
|
1029
|
-
export { AXMBackendDataProvider, AXMBackendModule, AXMCommentService, AXMConfigurationService, AXMFileManagementService,
|
941
|
+
export { AXMBackendDataProvider, AXMBackendModule, AXMCommentService, AXMConfigurationService, AXMFileManagementService, AXMModuleDesignerService, AXMOidcApplicationLoader, AXMOidcFeatureLoader, AXMOidcPermissionLoader, AXMOidcStrategy, AXMOidcTenantLoader };
|
1030
942
|
//# sourceMappingURL=acorex-modules-backend.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-backend.mjs","sources":["../../../../libs/modules/backend/src/lib/auth/oidc/application.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/configuration.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/feature.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/oidc.strategy.ts","../../../../libs/modules/backend/src/lib/auth/oidc/permission.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/tenant.loader.ts","../../../../libs/modules/backend/src/lib/data/api/data-provider.ts","../../../../libs/modules/backend/src/lib/auth/oidc/signincallback.component.ts","../../../../libs/modules/backend/src/lib/data/api/comment.service.ts","../../../../libs/modules/backend/src/lib/data/api/file.service.ts","../../../../libs/modules/backend/src/lib/data/api/module-designer.service.ts","../../../../libs/modules/backend/src/lib/data/local/local-data-provider.ts","../../../../libs/modules/backend/src/lib/backend.module.ts","../../../../libs/modules/backend/src/acorex-modules-backend.ts"],"sourcesContent":["import { AXPApplication, AXPApplicationLoader, AXPRefreshTokenResult } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcApplicationLoader implements AXPApplicationLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetApps = `${this.configs.baseUrl}/applications/GetListByTenantId`;\n private apiSetApp = `${this.configs.baseUrl}/SetApplication`;\n constructor(private http: HttpClient) { }\n\n\n getList(): Observable<AXPApplication[]> {\n return this.http.get<{ items: any[] }>(this.apiGetApps).pipe(\n map((response) => {\n return response.items.map((item) => this.mapToAXPApplication(item));\n })\n );\n }\n\n set(application: AXPApplication): Promise<void> {\n return Promise.resolve();\n }\n\n // //TODO: shoud be removed\n // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\n // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\n // map((response) => {\n // return {\n // succeed: true,\n // data: {\n // accessToken: response.token,\n // refreshToken: response.token,\n // }\n // };\n // })\n // );\n // }\n\n private mapToAXPApplication(item: any): AXPApplication {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n version: item.version || '1.0.0',\n description: item.description,\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\n editionName: item.editionName,\n // features: item.features || [],\n };\n }\n}\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable, filter, of, switchMap, take, tap } from 'rxjs';\n\nexport interface Localization {\n values: Record<string, Record<string, string>>;\n resources: Record<string, Resource>;\n languages: Language[];\n currentCulture: Culture;\n defaultResourceName: string;\n languagesMap: Record<string, NameValue[]>;\n languageFilesMap: Record<string, NameValue[]>;\n}\n\nexport interface Resource {\n texts: Record<string, string>;\n baseResources: string[];\n}\n\nexport interface Language {\n cultureName: string;\n uiCultureName: string;\n displayName: string;\n twoLetterISOLanguageName: string;\n flagIcon: string;\n}\n\nexport interface Culture {\n displayName: string;\n // ... other properties\n}\n\nexport interface NameValue {\n name: string;\n value: string;\n}\n\n// Repeat similar patterns for 'auth', 'setting', 'currentUser', etc.\nexport interface Auth {\n grantedPolicies: Record<string, boolean>;\n}\n\n// Main configuration interface\nexport interface ApplicationConfiguration {\n localization: Localization;\n auth: Auth;\n setting: Record<string, any>;\n currentUser: any;\n features: Record<string, any>;\n globalFeatures: Record<string, any>;\n multiTenancy: Record<string, any>;\n currentCulture: Culture;\n timing: Record<string, any>;\n clock: Record<string, any>;\n objectExtensions: Record<string, any>;\n extraProperties: Record<string, any>;\n\n // ... other properties\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMConfigurationService {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private applicationConfig: ApplicationConfiguration | null = null;\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n private fetchInProgress: boolean = false;\n private configSubject: BehaviorSubject<ApplicationConfiguration | null> = new BehaviorSubject<ApplicationConfiguration | null>(null);\n\n constructor(private http: HttpClient) {\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\n }\n\n public init(): Observable<ApplicationConfiguration> {\n if (!this.fetchInProgress) {\n this.fetchInProgress = true;\n return this.http.get<ApplicationConfiguration>(this.apiGetConfig).pipe(\n tap((response) => {\n this.applicationConfig = response;\n this.configSubject.next(this.applicationConfig);\n this.fetchInProgress = false;\n })\n );\n } else {\n // Adjusted approach to handle TypeScript's type safety requirements\n return this.configSubject.asObservable().pipe(\n filter((config): config is ApplicationConfiguration => config !== null),\n take(1) // Ensures it completes after emitting the first non-null value\n );\n }\n }\n\n getConfig(): Observable<ApplicationConfiguration> {\n if (this.applicationConfig) {\n // If the config is already loaded, return it immediately\n return of(this.applicationConfig);\n } else {\n // If the config is not loaded, initiate loading\n return this.configSubject.asObservable().pipe(\n filter((config) => config !== null),\n take(1), // Ensure it only emits the first non-null value and completes\n switchMap(() => of(this.applicationConfig!))\n );\n }\n }\n}\n","import { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\n\n private list: AXPFeature[] = [\n {\n name: 'axp-entity-list-custom-view',\n title: 'Custom View',\n value: false\n },\n {\n name: 'axp-entity-list-quick-search',\n title: 'Custom View',\n value: false\n }\n ]\n\n getList(): Observable<AXPFeature[]> {\n return of(this.list).pipe(delay(0));\n }\n}\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport {\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPRefreshTokenResult,\n AXPSessionContext,\n AXPSessionData,\n AXPSessionService,\n AXPSignInResult,\n AXPUser,\n} from '@acorex/platform/auth';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcStrategy implements AXPAuthStrategy {\n private aXMAuthConfigs: AXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n private oauthService: OAuthService = inject(OAuthService);\n private http: HttpClient = inject(HttpClient);\n public userInfo: any;\n public authConfig: AuthConfig;\n public openidConfigurationInfo: any; // clarify the type if possible\n\n public async configureOAuth(): Promise<void> {\n if (this.openidConfigurationInfo) return;\n\n if (!this.authConfig) {\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing');\n }\n this.authConfig = this.aXMAuthConfigs.authConfig;\n }\n\n this.oauthService.configure(this.authConfig);\n this.oauthService.setStorage(localStorage);\n\n this.openidConfigurationInfo = await this.oauthService.loadDiscoveryDocument();\n\n if (!this.openidConfigurationInfo) {\n throw new Error('openidConfigurationInfo is missing');\n }\n\n this.oauthService.events.subscribe(async (event) => {\n // console.log('event', event);\n // if (event.type === 'token_received') {\n // console.log('Token has been refreshed');\n // }\n // if (event.type === 'token_expires') {\n // console.log('Token is about to expire. Triggering silent refresh...');\n // }\n });\n\n const oidcJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n\n if (oidcJson) {\n const authData = JSON.parse(oidcJson) as AXPSessionData;\n if (authData) {\n this.setServiceProps(authData);\n\n if (authData.expiresIn && new Date(authData.expiresIn) < new Date()) {\n if (authData.expiresIn) {\n // this.refresh();\n } else {\n this.logout();\n }\n }\n }\n }\n }\n\n async signin(credentials: AXPUserPassCredentials): Promise<AXPSignInResult> {\n await this.configureOAuth();\n try {\n const body = new HttpParams()\n .set('grant_type', 'password')\n .set('client_id', this.authConfig.clientId!)\n .set('client_secret', this.authConfig.dummyClientSecret!)\n .set('username', credentials.username)\n .set('password', credentials.password)\n .set('scope', this.authConfig.scope!);\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n\n const response = await firstValueFrom(\n this.http.post<IAuthenticationDataModel>(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers })\n );\n\n // const authData = new AuthenticationData(response);\n this.setServiceProps({\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n } as AXPSessionData);\n\n return {\n succeed: true,\n data: {\n accessToken: response.access_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n idToken: response.id_token,\n refreshToken: response.refresh_token!,\n user: {\n id: response.sub,\n title: response.fullname,\n name: response.sub,\n avatar: response.picture,\n } as AXPUser,\n tenant: {\n id: response.tenantid!,\n name: response.tenantname!,\n title: response.tenanttitle!,\n },\n application: {\n id: response.applicationid!,\n name: response.applicationname!,\n title: response.applicationtitle,\n },\n },\n };\n } catch (error: any) {\n this.handleError(error);\n }\n }\n\n async signout(): Promise<void> {\n //this.logout();\n }\n\n async refreshToken(context: AXPSessionContext): Promise<AXPRefreshTokenResult> {\n try {\n await this.configureOAuth();\n const refreshResult = await this.refresh(context.tenant?.id, context.application?.id);\n if (refreshResult) {\n return {\n succeed: true,\n data: {\n accessToken: this.oauthService.getAccessToken(),\n refreshToken: this.oauthService.getRefreshToken(),\n },\n };\n } else {\n return { succeed: false };\n }\n } catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n\n async refresh(tenantId?: string, applicationId?: string): Promise<boolean> {\n await this.configureOAuth();\n const authData = this.loadAuthData();\n if (!authData) return false;\n\n const refreshToken = this.oauthService.getRefreshToken();\n if (!refreshToken) return false;\n\n const body = new HttpParams()\n .set('grant_type', 'refresh_token')\n .set('client_id', this.authConfig.clientId!)\n .set('client_secret', this.authConfig.dummyClientSecret!)\n .set('refresh_token', refreshToken)\n .set('tenantId', tenantId ?? '')\n .set('applicationId', applicationId ?? '');\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n\n try {\n const response = await firstValueFrom(\n this.http.post<IAuthenticationDataModel>(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers })\n );\n this.setServiceProps({\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n } as AXPSessionData);\n\n return true;\n } catch (error) {\n console.error('Token refresh error', error);\n return false;\n }\n }\n\n expires_in_milisecound(expires_in_date: string): number {\n const now = new Date();\n const expire = new Date(expires_in_date);\n return expire.getTime() - now.getTime();\n }\n\n private setServiceProps(authData: AXPSessionData): void {\n this.oauthService.getAccessToken = () => authData.accessToken;\n this.oauthService.getIdToken = () => authData.idToken ?? '';\n this.oauthService.getRefreshToken = () => authData.refreshToken;\n if (authData.expiresIn) {\n const refreshTime = this.expires_in_milisecound(authData.expiresIn!);\n this.oauthService.getAccessTokenExpiration = () => refreshTime;\n // if (refreshTime < 0) {\n // this.refresh();\n // }else{\n // }\n }\n }\n\n private loadAuthData(): AXPSessionData | undefined {\n const authDataJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n if (!authDataJson) return undefined;\n\n const authData = JSON.parse(authDataJson) as AXPSessionData;\n\n // return authData ? new AuthenticationData(authData) : undefined;\n return authData;\n }\n\n public async loadUserInfo(): Promise<object> {\n return this.oauthService.loadUserProfile();\n }\n public calculateExpireInDate(expireInMilisecound: number) {\n return new Date(Date.now() + expireInMilisecound * 1000).toISOString();\n }\n private logout(): void {\n this.oauthService.logOut({\n noRedirectToLogoutUrl: true\n });\n }\n\n private handleError(error: any): never {\n if (error?.reason) {\n throw new Error(JSON.stringify(error.reason));\n } else if (error?.message) {\n throw new Error(error.message);\n } else {\n throw new Error('Network or server error occurred');\n }\n }\n\n //#region getter\n get name(): string {\n return 'user-pass';\n }\n //#endregion\n}\n\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\n// export class AuthenticationData {\n// access_token: string;\n// applicationid?: string;\n// applicationname?: string;\n// applicationtitle?: string;\n// editionid?: string;\n// editionname?: string;\n// editiontitle?: string;\n// id_token?: string;\n// refresh_token?: string;\n// scope?: string;\n// tenantid?: string;\n// tenantname?: string;\n// tenanttitle?: string;\n// token_type?: string;\n// expires_in_date?: string;\n// sub?: string;\n// picture?: string;\n// fullname?: string;\n\n// constructor(data: AuthenticationDataModel) {\n// this.access_token = data.access_token;\n// this.applicationid = data.applicationid;\n// this.applicationname = data.applicationname;\n// this.applicationtitle = data.applicationtitle;\n// this.editionid = data.editionid;\n// this.editionname = data.editionname;\n// this.editiontitle = data.editiontitle;\n// this.id_token = data.id_token;\n// this.refresh_token = data.refresh_token;\n// this.scope = data.scope;\n// this.tenantid = data.tenantid;\n// this.tenantname = data.tenantname;\n// this.tenanttitle = data.tenanttitle;\n// this.token_type = data.token_type;\n// this.sub = data.sub;\n// this.picture = data.picture;\n// this.fullname = data.fullname;\n\n// if (data.expires_in) {\n// this.expires_in_date = new Date(Date.now() + data.expires_in * 1000).toISOString();\n// } else {\n// this.expires_in_date = data.expires_in_date || '';\n// }\n// }\n\n// get expires_in_milisecound(): number {\n// const now = new Date();\n// const expire = new Date(this.expires_in_date!);\n// return expire.getTime() - now.getTime();\n// }\n\n// public setTokenRefreshModel(data: AuthenticationDataModel): void {\n// this.access_token = data.access_token;\n// this.id_token = data.id_token;\n// this.token_type = data.token_type;\n// this.scope = data.scope;\n// this.refresh_token = data.refresh_token;\n// this.expires_in_date = new Date(Date.now() + data.expires_in! * 1000).toISOString();\n// }\n// }\n\nexport interface IAuthenticationDataModel {\n access_token: string;\n applicationid: string;\n applicationname: string;\n applicationtitle: string;\n editionid: string;\n editionname: string;\n editiontitle: string;\n id_token: string;\n refresh_token: string;\n scope: string;\n tenantid: string;\n tenantname: string;\n tenanttitle: string;\n token_type: string;\n expires_in?: number;\n sub?: string;\n fullname?: string;\n picture?: string;\n}\n","import { AXPPermission, AXPPermissionLoader, AXPSessionContext } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n\n constructor(private http: HttpClient) {}\n\n getList(context: AXPSessionContext): Observable<AXPPermission[]> {\n return this.http.get<{ items: any }>(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\n // if (context.user == null)\n // return of([]);\n // else if (context.user.name.toLowerCase() == 'admin')\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n // else\n // return of(['asc.user.gliding']);\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n }\n\n mapTo(jsonObj: any): string[] {\n const policies = jsonObj.auth.grantedPolicies;\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\n return truePolicies;\n }\n}\n","import { AXPTenant, AXPTenantLoader } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcTenantLoader implements AXPTenantLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetTenants = `${this.configs.baseUrl}/user-tenants/Tenants`;\n private apiSetTenant = `${this.configs.baseUrl}/SetTenant`;\n constructor(private http: HttpClient) { }\n\n getList(): Observable<AXPTenant[]> {\n return this.http.get<{ items: any[] }>(this.apiGetTenants).pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\n }\n\n async set(tenant: AXPTenant): Promise<void> {\n return Promise.resolve();\n }\n\n private mapToAXPTenant(item: any): AXPTenant {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n // Add other fields and defaults as needed, and handle the logo if applicable\n };\n }\n}\n","import { AXPDataProvider, AXPEntityConfig, AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMBackendDataProvider implements AXPDataProvider {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private mainUrl = this.configs.baseUrl;\n\n constructor(private http: HttpClient) {}\n\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\n return firstValueFrom(this.http.post(url, entityItem));\n }\n\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\n const promises = entityList.map((entity: any) => {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\n return firstValueFrom(this.http.post(url, entity));\n });\n return Promise.all(promises);\n }\n\n getOne(entity: AXPEntityConfig, id: string): Promise<any> {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${\n id ? '/' + id : ''\n }`;\n return firstValueFrom(this.http.get(url));\n }\n\n getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\n let httpParams = new HttpParams()\n .set('Skip', params?.skip?.toString() ?? '0')\n .set('Take', params?.take?.toString() ?? '10');\n if (params?.sort && params?.sort.length > 0) {\n const sortParam = params?.sort.map((sort: any) => `${sort.field}:${sort.dir}`).join(',');\n httpParams = httpParams.set('$orderby', sortParam);\n }\n\n const buildFilterString = (filters: any[]): string => {\n return filters\n .map((f: any) => {\n if (f.filters) {\n return buildFilterString(f.filters);\n } else {\n return `${f.field} ${f.operator.type} ${f.value}`;\n }\n })\n .join(',');\n };\n\n let filterString = params?.customFilter ? params.customFilter : '';\n if (params?.filter) {\n const filter = params.filter;\n if (filter.filters) {\n // Construct filter string from provided filters\n\n const dynamicFilters = buildFilterString(filter.filters);\n\n // Append dynamic filters to custom filter, if both exist\n filterString = filterString ? `${filterString},${dynamicFilters}` : dynamicFilters;\n }\n }\n // Set the $filter parameter if there are any filters\n if (filterString) {\n httpParams = httpParams.set('$filter', filterString);\n }\n function capitalizeFirstLetter(str: string) {\n return str ? str.charAt(0).toUpperCase() + str.slice(1) : str;\n }\n\n function generateQueryString(filter: any) {\n if (!filter.filters) {\n // Base case: single filter\n if (typeof filter.value === 'object' && filter.operator.type === 'between') {\n return `${filter.field} greaterThan '${filter.value.from}' AND ${filter.field} lessThan '${filter.value.to}'`;\n } else {\n return `${filter.field} ${filter.operator.type} '${filter.value}'`;\n }\n } else if (!filter.filters.length) {\n return;\n } else {\n // Recursive case: multiple filters\n\n const filterStrings = filter.filters.map((subFilter: any) => generateQueryString(subFilter));\n const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided\n return `${filterStrings.filter((i: any) => i).join(` ${logic} `)}`;\n }\n }\n\n if (params?.date) {\n httpParams = httpParams.set('Date', params.date);\n }\n\n let queryString = params?.customFilter ? params.customFilter : '';\n if (params?.filter) {\n const filter = params.filter;\n if (filter.filters && filter.filters.length > 0) {\n // Construct filter string from provided filters\n\n const dynamicQueries = generateQueryString(filter);\n console.log({ dynamicQueries: dynamicQueries });\n\n // Append dynamic filters to custom filter, if both exist\n queryString = queryString ? `${queryString},${dynamicQueries}` : dynamicQueries;\n }\n }\n // Set the $filter parameter if there are any filters\n if (queryString) {\n httpParams = httpParams.set('$query', queryString);\n }\n return firstValueFrom(\n this.http.get<any>(\n `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${\n params?.costumGetter ? params.costumGetter : entity.name\n }/${params?.sub ? params.sub : ''}`,\n { params: httpParams }\n )\n ).then((response) => {\n return {\n total: response.totalCount,\n items: response.items,\n };\n });\n }\n\n updateOne(entity: AXPEntityConfig, id?: string, data?: { [key: string]: any }): Promise<any> {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${\n id ? '/' + id : ''\n }`;\n return firstValueFrom(this.http.put(url, data));\n }\n\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}/${id}`;\n return firstValueFrom(this.http.delete(url));\n }\n\n getFirst(entity: AXPEntityConfig): Promise<any> {\n // return this.getMany(entity.name).then((res) => res.items[0]);\n return new Promise((resolve) => resolve(true));\n }\n\n // File uploader function\n uploadFile(file: File, title: string, customUrl?: string): Promise<string> {\n const url = customUrl ? `${this.mainUrl}/${customUrl}` : `${this.mainUrl}/common/files`;\n const formData: FormData = new FormData();\n formData.append('File', file);\n formData.append('Title', title);\n\n return firstValueFrom(this.http.post<string>(url, formData));\n }\n // to update a uploaded file\n updateFile(id: string, file: File, title: string, customUrl?: string): Promise<string> {\n const url = customUrl ? `${this.mainUrl}/${customUrl}` : `${this.mainUrl}/common/files?id=${id}`;\n const formData: FormData = new FormData();\n formData.append('File', file);\n formData.append('Title', title);\n\n return firstValueFrom(this.http.put<string>(url, formData));\n }\n\n // Function to upload multiple files\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\n return Promise.all(uploadPromises);\n }\n\n // Function to view a file\n viewFile(id: string, name: string): Promise<Blob> {\n const url = `${this.mainUrl}/common/files/${id}/View/${name}`;\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\n }\n\n // Function to download a file\n downloadFile(id: string, name: string): Promise<Blob> {\n const url = `${this.mainUrl}/common/files/${id}/Download/${name}`;\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\n }\n}\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { Component, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n template: '',\n})\nexport class SignincallbackComponent implements OnInit {\n private sessionService = inject(AXPSessionService);\n constructor(private router: Router, private route: ActivatedRoute) {}\n\n ngOnInit() {\n const queryParams = this.route.snapshot.queryParams;\n if (queryParams['tenantid']) {\n const selectedTenant = {\n id: queryParams['tenantid'],\n name: queryParams['tenantname'],\n title: queryParams['tenanttitle'],\n };\n this.sessionService.setTenant(selectedTenant);\n }\n if (queryParams['applicationid']) {\n const selectedApplication = {\n id: queryParams['applicationid'],\n name: queryParams['applicationname'],\n title: queryParams['applicationtitle'],\n version: '1',\n editionName: queryParams['editionname'],\n };\n this.sessionService.setApplication(selectedApplication);\n }\n // this.userManagerService.signinSilentCallback();\n }\n}\n","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMCommentService {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private http = inject(HttpClient);\n\n private mainUrl = this.configs.baseUrl;\n private messagesUrl = `${this.configs.baseUrl}/conversion/messages/room`;\n private messagePostUrl = `${this.configs.baseUrl}/conversion/messages`;\n private messageReactionUrl = `${this.configs.baseUrl}/conversion/message-reactions/change`;\n\n async get(params: any): Promise<any> {\n const url = `${this.messagesUrl}`;\n return await firstValueFrom(\n this.http.get<any>(url, {\n params: params,\n })\n );\n }\n\n async post(payload: any): Promise<any> {\n const url = `${this.messagePostUrl}`;\n return await firstValueFrom(this.http.post<any>(url, payload));\n }\n\n async put(payload: any): Promise<any> {\n const url = `${this.messagePostUrl}/${payload.id}`;\n return await firstValueFrom(this.http.put<any>(url, { content: payload.content }));\n }\n\n async delete(payload: any): Promise<any> {\n const url = `${this.messagePostUrl}/${payload.id}`;\n return await firstValueFrom(this.http.delete<any>(url));\n }\n\n async like(payload: any): Promise<any> {\n const url = `${this.messageReactionUrl}`;\n return await firstValueFrom(this.http.put<any>(url, payload));\n }\n\n // async deleteComment(commentId: string): Promise<any> {\n // const url = `${this.mainUrl}/delete-comment/${commentId}`;\n // return await firstValueFrom(this.http.delete<any>(url));\n // }\n\n // async editComment(payload: any): Promise<any> {\n // const url = `${this.mainUrl}/edit-comment`;\n // return await firstValueFrom(this.http.put<any>(url, payload));\n // }\n}\n","import { AXUploadRequest } from '@acorex/components/uploader';\nimport { AXDownloadStatus, AXNetworkService, AXUploadStatus } from '@acorex/core/network';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMFileManagementService {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private mainUrl = this.configs.baseUrl;\n private http = inject(HttpClient);\n private networkService = inject(AXNetworkService);\n\n upload(requests: AXUploadRequest[]): Promise<PromiseSettledResult<unknown>[]> {\n const url = `${this.mainUrl}/common/files`;\n const tasks = requests.map((r) => {\n const formData: FormData = new FormData();\n formData.append('File', r.file);\n const task = this.networkService.upload(url, formData);\n\n return new Promise((resolve, reject) => {\n task.events.subscribe({\n next: (event) => {\n if (event.status == AXUploadStatus.UploadFailed) {\n r.error(event.message || '');\n reject(event.result);\n }\n if (event.status == AXUploadStatus.UploadComplete) {\n r.finish();\n resolve(event.result);\n } else {\n r.setTransferredBytes(event.bytesTransferred);\n }\n },\n });\n\n r.onStart.subscribe(() => {\n task.start();\n });\n\n r.onCancel.subscribe(() => {\n task.cancel();\n reject({ status: 'cancelled', request: r });\n });\n\n r.upload();\n });\n });\n\n return Promise.allSettled(tasks);\n }\n\n delete(fileId: string): Promise<any> {\n return new Promise((resolve, reject) => {\n setTimeout(() => resolve({ success: true, fileId }), 1000);\n });\n }\n get(fileId: string, name: string): Observable<any> {\n return new Observable((observer) => {\n const url = `${this.mainUrl}/common/files/${fileId}/Download/${name}`;\n const downloadTask = this.networkService.download(url);\n\n downloadTask.events.subscribe(\n (event) => {\n // Emit progress events\n observer.next({\n status: event.status,\n progress: event.progress,\n fileId,\n data: event.data || null, // Assuming `event.data` contains the downloaded file's data when completed\n });\n\n // Complete the observable if download is finished\n if (event.status === AXDownloadStatus.DownloadComplete) {\n observer.complete();\n }\n },\n (error) => {\n console.error('Download failed:', error);\n observer.error({\n status: 'failed',\n fileId,\n error,\n });\n }\n );\n return () => {\n downloadTask.cancel();\n };\n });\n }\n\n list(): Promise<any> {\n return new Promise((resolve, reject) => {\n setTimeout(() => resolve([{ fileId: '1', data: 'fileData' }]), 1000);\n });\n }\n\n setMetadata(fileId: string, metadata: any): Promise<any> {\n return new Promise((resolve, reject) => {\n setTimeout(() => resolve({ fileId, metadata }), 1000);\n });\n }\n}\n","import { AXDataSourceQuery } from '@acorex/components/common';\nimport { AXPModuleDesignerService } from '@acorex/modules/application-management';\nimport { AXPEntity } from '@acorex/platform/common';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMModuleDesignerService implements AXPModuleDesignerService {\n protected loader: any = inject(AXPEntityDefinitionRegistryService);\n\n protected defaultConfig = {\n skip: 0,\n sort: [],\n take: 10,\n filter: {\n field: '',\n value: '',\n operator: 'equal' as any,\n },\n };\n\n protected AdvanceConfig = (moduleId: string): AXDataSourceQuery => ({\n skip: 0,\n sort: [],\n take: 10,\n filter: {\n field: '',\n value: '',\n operator: { type: 'equal' },\n filters: [\n {\n field: 'moduleId',\n operator: { type: 'equal' },\n value: moduleId,\n },\n ],\n },\n });\n\n private async moduleDef() {\n return this.loader.resolve('application-management', 'module');\n }\n private async entityDef() {\n return this.loader.resolve('application-management', 'entity');\n }\n private async featureDef() {\n return this.loader.resolve('application-management', 'feature');\n }\n private async permissionDef() {\n return this.loader.resolve('application-management', 'permission');\n }\n\n async getModules() {\n const entity: AXPEntity = await this.moduleDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.defaultConfig);\n }\n\n async getSingleModule() {}\n\n async createModule(payload: any): Promise<any> {}\n\n async updateModule(moduleId: string, payload: any): Promise<any> {}\n\n async deleteModule(moduleId: string): Promise<any> {}\n\n //\n\n async getEntities(moduleId: string) {\n const entity: AXPEntity = await this.entityDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSingleEntity(entityId: string) {}\n\n async createEntity(payload: any): Promise<any> {}\n\n async updateEntity(payload: any): Promise<any> {}\n\n async deleteEntity(entityId: string): Promise<any> {}\n\n //\n\n async getFeatures(moduleId: string) {\n const entity: AXPEntity = await this.featureDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSingleFeature(featureId: string) {}\n\n async createFeature(payload: any): Promise<any> {}\n\n async updateFeature(payload: any): Promise<any> {}\n\n async deleteFeature(featureId: string): Promise<any> {}\n\n //\n\n async getPermissions(moduleId: string) {\n const entity: AXPEntity = await this.permissionDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSinglePermission(permissionId: string) {}\n\n async createPermission(payload: any): Promise<any> {}\n\n async updatePermission(payload: any): Promise<any> {}\n\n async deletePermission(permissionId: string): Promise<any> {}\n}\n","import { AXPDataProvider, AXPEntityConfig } from '@acorex/platform/common';\nimport { applyFilterArray, applySortArray } from '@acorex/platform/core';\nimport { AXPStorageMockService } from '@acorex/platform/mocks';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMLocalDataProvider implements AXPDataProvider {\n constructor(private storageService: AXPStorageMockService) {}\n\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\n return this.storageService.insertOrupdateOne(entity.name, entityItem);\n }\n\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\n return this.storageService.insertMany(entity.name, entityList);\n }\n\n async getOne(entity: AXPEntityConfig, id: string): Promise<any> {\n console.log('@LOACAL getOne', entity.name, id);\n return this.storageService.getOne(entity.name, id);\n }\n\n async getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\n console.log('@LOACAL getMany', entity.name, params);\n const result = await this.storageService.getMany(entity.name, params);\n const sortedItems = applySortArray(result, params?.sort);\n const filteredItems = applyFilterArray(sortedItems, params?.filter?.filters);\n return new Promise((resolve) => {\n resolve({\n items: params ? filteredItems?.slice(params.skip, (params.skip ?? 0) + (params.take ?? 20)) : filteredItems,\n total: filteredItems?.length ?? 0,\n });\n });\n }\n\n updateOne(entity: AXPEntityConfig, id: string, data: { [key: string]: any }): Promise<any> {\n return this.storageService.updateOne(entity.name, id, data);\n }\n\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\n return this.storageService.deleteOne(entity.name, id);\n }\n\n getFirst(entity: AXPEntityConfig): Promise<any> {\n return this.getMany(entity).then((res) => {\n return res.items ? res.items[0] : null;\n });\n }\n\n // Mock file uploader function\n uploadFile(file: File, title: string): Promise<string> {\n return new Promise((resolve) => {\n // Mock file ID generation\n const fileId = `mock-file-id-${Math.random().toString(36).substr(2, 9)}`;\n const fileRecord = { id: fileId, title, file };\n this.storageService.insertOrupdateOne('files', fileRecord).then(() => {\n resolve(fileId);\n });\n });\n }\n\n updateFile(id: string, file: File, title: string): Promise<string> {\n return new Promise((resolve) => {\n // Mock file ID generation\n const fileId = `mock-file-id-${Math.random().toString(36).substr(2, 9)}`;\n const fileRecord = { id: fileId, title, file };\n this.storageService.insertOrupdateOne('files', fileRecord).then(() => {\n resolve(fileId);\n });\n });\n }\n\n // Mock function to upload multiple files\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\n return Promise.all(uploadPromises);\n }\n\n // Mock function to view a file\n viewFile(id: string, name: string): Promise<Blob> {\n return new Promise(async (resolve, reject) => {\n const fileRecord = await this.storageService.getOne('files', id);\n if (fileRecord && fileRecord.file) {\n resolve(fileRecord.file);\n } else {\n reject('File not found');\n }\n });\n }\n\n // Mock function to download a file\n downloadFile(id: string, name: string): Promise<Blob> {\n return this.viewFile(id, name);\n }\n}\n","import { AXMAuthModule } from '@acorex/modules/auth';\nimport {\n AXPAuthModule,\n AXP_APPLICATION_LOADER,\n AXP_FEATURE_LOADER,\n AXP_PERMISSION_LOADER,\n AXP_TENANT_LOADER,\n} from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\n\n//-----------------------------------------------------------------\nimport {\n AXMOidcApplicationLoader,\n AXMOidcFeatureLoader,\n AXMOidcPermissionLoader,\n AXMOidcStrategy,\n AXMOidcTenantLoader,\n} from './auth/oidc';\nimport { AXMBackendDataProvider } from './data/api/data-provider';\n//-----------------------------------------------------------------\n\nimport { AXPModuleDesignerService } from '@acorex/modules/application-management';\nimport { AXPFileManagementService } from '@acorex/platform/widgets';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { SignincallbackComponent } from './auth/oidc/signincallback.component';\nimport { AXMFileManagementService, AXMModuleDesignerService } from './data';\n\nfunction routesFactory() {\n const routes: Routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];\n return routes;\n}\n\n@NgModule({\n imports: [\n OAuthModule.forRoot(),\n AXMAuthModule,\n AXPAuthModule.forRoot({\n strategies: [AXMOidcStrategy],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXPDataProvider,\n useClass: AXMBackendDataProvider,\n },\n {\n provide: AXP_TENANT_LOADER,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n useClass: AXMOidcFeatureLoader,\n },\n {\n provide: AXPFileManagementService,\n useClass: AXMFileManagementService,\n },\n // {\n // provide: AXPCommentService,\n // useClass: AXMCommentService,\n // },\n // {\n // provide: AXMNotificationService,\n // useClass: AXMMockNotificationService,\n // },\n {\n provide: AXPModuleDesignerService,\n useClass: AXMModuleDesignerService,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n ],\n})\nexport class AXMBackendModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":";;;;;;;;;;;;;;;;;;;;MAOa,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AAHhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACvC,IAAU,CAAA,UAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,iCAAiC;QACrE,IAAS,CAAA,SAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,iBAAiB;;IAI5D,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAC1D,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;SACpE,CAAC,CACH;;AAGH,IAAA,GAAG,CAAC,WAA2B,EAAA;AAC7B,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;AAkBlB,IAAA,mBAAmB,CAAC,IAAS,EAAA;QACnC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;AACnC,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO;YAChC,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;;SAE9B;;8GA5CQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;MC2DY,uBAAuB,CAAA;AAOlC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AANhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACvC,IAAiB,CAAA,iBAAA,GAAoC,IAAI;QACzD,IAAY,CAAA,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,gCAAgC;QACtE,IAAe,CAAA,eAAA,GAAY,KAAK;AAChC,QAAA,IAAA,CAAA,aAAa,GAAqD,IAAI,eAAe,CAAkC,IAAI,CAAC;QAGlI,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;;IAGnB,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA2B,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACpE,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,gBAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ;gBACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC/C,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;aAC7B,CAAC,CACH;;aACI;;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAC3C,MAAM,CAAC,CAAC,MAAM,KAAyC,MAAM,KAAK,IAAI,CAAC,EACvE,IAAI,CAAC,CAAC,CAAC;aACR;;;IAIL,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;;AAE1B,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC;;aAC5B;;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAC3C,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,EACnC,IAAI,CAAC,CAAC,CAAC;AACP,YAAA,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,iBAAkB,CAAC,CAAC,CAC7C;;;8GAxCM,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MC7DY,oBAAoB,CAAA;AAAjC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,IAAI,GAAiB;AAC3B,YAAA;AACE,gBAAA,IAAI,EAAE,6BAA6B;AACnC,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,KAAK,EAAE;AACR,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,8BAA8B;AACpC,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,KAAK,EAAE;AACR;SACF;;IAED,OAAO,GAAA;AACL,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAEtC;;MCJY,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,cAAc,GAAmB,MAAM,CAAC,qBAAqB,CAAC;AAC9D,QAAA,IAAA,CAAA,YAAY,GAAiB,MAAM,CAAC,YAAY,CAAC;AACjD,QAAA,IAAA,CAAA,IAAI,GAAe,MAAM,CAAC,UAAU,CAAC;AAgO9C;AA3NQ,IAAA,MAAM,cAAc,GAAA;QACzB,IAAI,IAAI,CAAC,uBAAuB;YAAE;AAElC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AACnC,gBAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;YAE1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU;;QAGlD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC;QAE1C,IAAI,CAAC,uBAAuB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE;AAE9E,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACjC,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;;QAGvD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,KAAK,KAAI;;;;;;;;AAQnD,SAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC;QAEpE,IAAI,QAAQ,EAAE;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAmB;YACvD,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;AAE9B,gBAAA,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;AACnE,oBAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;;;yBAEjB;wBACL,IAAI,CAAC,MAAM,EAAE;;;;;;IAOvB,MAAM,MAAM,CAAC,WAAmC,EAAA;AAC9C,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3B,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,IAAI,UAAU;AACxB,iBAAA,GAAG,CAAC,YAAY,EAAE,UAAU;iBAC5B,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,QAAS;iBAC1C,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAkB;AACvD,iBAAA,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ;AACpC,iBAAA,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ;iBACpC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAM,CAAC;AAEvC,YAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC;AAE1F,YAAA,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAA2B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAC3I;;YAGD,IAAI,CAAC,eAAe,CAAC;gBACnB,WAAW,EAAE,QAAQ,CAAC,YAAY;gBAClC,YAAY,EAAE,QAAQ,CAAC,aAAa;gBACpC,OAAO,EAAE,QAAQ,CAAC,QAAQ;gBAC1B,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;AAC9C,aAAA,CAAC;YAEpB,OAAO;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,IAAI,EAAE;oBACJ,WAAW,EAAE,QAAQ,CAAC,YAAY;oBAClC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;oBAC/D,OAAO,EAAE,QAAQ,CAAC,QAAQ;oBAC1B,YAAY,EAAE,QAAQ,CAAC,aAAc;AACrC,oBAAA,IAAI,EAAE;wBACJ,EAAE,EAAE,QAAQ,CAAC,GAAG;wBAChB,KAAK,EAAE,QAAQ,CAAC,QAAQ;wBACxB,IAAI,EAAE,QAAQ,CAAC,GAAG;wBAClB,MAAM,EAAE,QAAQ,CAAC,OAAO;AACd,qBAAA;AACZ,oBAAA,MAAM,EAAE;wBACN,EAAE,EAAE,QAAQ,CAAC,QAAS;wBACtB,IAAI,EAAE,QAAQ,CAAC,UAAW;wBAC1B,KAAK,EAAE,QAAQ,CAAC,WAAY;AAC7B,qBAAA;AACD,oBAAA,WAAW,EAAE;wBACX,EAAE,EAAE,QAAQ,CAAC,aAAc;wBAC3B,IAAI,EAAE,QAAQ,CAAC,eAAgB;wBAC/B,KAAK,EAAE,QAAQ,CAAC,gBAAgB;AACjC,qBAAA;AACF,iBAAA;aACF;;QACD,OAAO,KAAU,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;;AAI3B,IAAA,MAAM,OAAO,GAAA;;;IAIb,MAAM,YAAY,CAAC,OAA0B,EAAA;AAC3C,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3B,YAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACrF,IAAI,aAAa,EAAE;gBACjB,OAAO;AACL,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;AAC/C,wBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;AAClD,qBAAA;iBACF;;iBACI;AACL,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;;;QAE3B,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC9C,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;;;AAI7B,IAAA,MAAM,OAAO,CAAC,QAAiB,EAAE,aAAsB,EAAA;AACrD,QAAA,MAAM,IAAI,CAAC,cAAc,EAAE;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACpC,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,KAAK;QAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;AACxD,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,KAAK;AAE/B,QAAA,MAAM,IAAI,GAAG,IAAI,UAAU;AACxB,aAAA,GAAG,CAAC,YAAY,EAAE,eAAe;aACjC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,QAAS;aAC1C,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,iBAAkB;AACvD,aAAA,GAAG,CAAC,eAAe,EAAE,YAAY;AACjC,aAAA,GAAG,CAAC,UAAU,EAAE,QAAQ,IAAI,EAAE;AAC9B,aAAA,GAAG,CAAC,eAAe,EAAE,aAAa,IAAI,EAAE,CAAC;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC;AAE1F,QAAA,IAAI;AACF,YAAA,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAA2B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAC3I;YACD,IAAI,CAAC,eAAe,CAAC;gBACnB,WAAW,EAAE,QAAQ,CAAC,YAAY;gBAClC,YAAY,EAAE,QAAQ,CAAC,aAAa;gBACpC,OAAO,EAAE,QAAQ,CAAC,QAAQ;gBAC1B,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;AAC9C,aAAA,CAAC;AAEpB,YAAA,OAAO,IAAI;;QACX,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC3C,YAAA,OAAO,KAAK;;;AAIhB,IAAA,sBAAsB,CAAC,eAAuB,EAAA;AAC5C,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC;QACxC,OAAO,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE;;AAGjC,IAAA,eAAe,CAAC,QAAwB,EAAA;QAC9C,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,MAAM,QAAQ,CAAC,WAAW;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,QAAQ,CAAC,OAAO,IAAI,EAAE;QAC3D,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,MAAM,QAAQ,CAAC,YAAY;AAC/D,QAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;YACtB,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAU,CAAC;YACpE,IAAI,CAAC,YAAY,CAAC,wBAAwB,GAAG,MAAM,WAAW;;;;;;;IAQ1D,YAAY,GAAA;QAClB,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC;AACxE,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,SAAS;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAmB;;AAG3D,QAAA,OAAO,QAAQ;;AAGV,IAAA,MAAM,YAAY,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;;AAErC,IAAA,qBAAqB,CAAC,mBAA2B,EAAA;AACtD,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,mBAAmB,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;;IAEhE,MAAM,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AACvB,YAAA,qBAAqB,EAAE;AACxB,SAAA,CAAC;;AAGI,IAAA,WAAW,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,KAAK,EAAE,MAAM,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;AACxC,aAAA,IAAI,KAAK,EAAE,OAAO,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;;aACzB;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;;;;AAKvD,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,WAAW;;8GAhOT,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;MCTY,uBAAuB,CAAA;AAIlC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AAHhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACvC,IAAY,CAAA,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,gCAAgC;;AAI9E,IAAA,OAAO,CAAC,OAA0B,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;;;;;;AAUvG,IAAA,KAAK,CAAC,OAAY,EAAA;AAChB,QAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,eAAe;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAClF,QAAA,OAAO,YAAY;;8GApBV,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;;MCCY,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AAHhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;QACvC,IAAa,CAAA,aAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,uBAAuB;QAC9D,IAAY,CAAA,YAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,YAAY;;IAG1D,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAG7I,MAAM,GAAG,CAAC,MAAiB,EAAA;AACzB,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;;AAGlB,IAAA,cAAc,CAAC,IAAS,EAAA;QAC9B,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,aAAa;AAChC,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,cAAc;;SAEpC;;8GApBQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;MCEY,sBAAsB,CAAA;AAIjC,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAI,CAAA,IAAA,GAAJ,IAAI;AAHhB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;;IAItC,SAAS,CAAC,MAAuB,EAAE,UAAe,EAAA;AAChD,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAG,EAAA,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAI,CAAA,EAAA,MAAM,CAAC,IAAI,EAAE;AACpG,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;;IAGxD,UAAU,CAAC,MAAuB,EAAE,UAAe,EAAA;QACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AAC9C,YAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAG,EAAA,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAI,CAAA,EAAA,MAAM,CAAC,IAAI,EAAE;AACpG,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACpD,SAAC,CAAC;AACF,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;;IAG9B,MAAM,CAAC,MAAuB,EAAE,EAAU,EAAA;AACxC,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,GAChG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAClB,EAAE;QACF,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;IAG3C,OAAO,CAAC,MAAuB,EAAE,MAAY,EAAA;AAC3C,QAAA,IAAI,UAAU,GAAG,IAAI,UAAU;aAC5B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,GAAG;AAC3C,aAAA,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;AAChD,QAAA,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,YAAA,MAAM,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,CAAA,EAAG,IAAI,CAAC,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACxF,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC;;AAGpD,QAAA,MAAM,iBAAiB,GAAG,CAAC,OAAc,KAAY;AACnD,YAAA,OAAO;AACJ,iBAAA,GAAG,CAAC,CAAC,CAAM,KAAI;AACd,gBAAA,IAAI,CAAC,CAAC,OAAO,EAAE;AACb,oBAAA,OAAO,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC;;qBAC9B;AACL,oBAAA,OAAO,CAAG,EAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAI,CAAA,EAAA,CAAC,CAAC,KAAK,EAAE;;AAErD,aAAC;iBACA,IAAI,CAAC,GAAG,CAAC;AACd,SAAC;AAED,QAAA,IAAI,YAAY,GAAG,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,EAAE;AAClE,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAClB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,YAAA,IAAI,MAAM,CAAC,OAAO,EAAE;;gBAGlB,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;;AAGxD,gBAAA,YAAY,GAAG,YAAY,GAAG,CAAG,EAAA,YAAY,CAAI,CAAA,EAAA,cAAc,CAAE,CAAA,GAAG,cAAc;;;;QAItF,IAAI,YAAY,EAAE;YAChB,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC;;QAEtD,SAAS,qBAAqB,CAAC,GAAW,EAAA;YACxC,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;;QAG/D,SAAS,mBAAmB,CAAC,MAAW,EAAA;AACtC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;;AAEnB,gBAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;oBAC1E,OAAO,CAAA,EAAG,MAAM,CAAC,KAAK,iBAAiB,MAAM,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,CAAC,KAAK,CAAc,WAAA,EAAA,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA,CAAA,CAAG;;qBACxG;AACL,oBAAA,OAAO,CAAG,EAAA,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAK,EAAA,EAAA,MAAM,CAAC,KAAK,GAAG;;;AAE/D,iBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;gBACjC;;iBACK;;AAGL,gBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAc,KAAK,mBAAmB,CAAC,SAAS,CAAC,CAAC;gBAC5F,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;gBACpC,OAAO,CAAA,EAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,KAAK,CAAG,CAAA,CAAA,CAAC,EAAE;;;AAItE,QAAA,IAAI,MAAM,EAAE,IAAI,EAAE;YAChB,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;;AAGlD,QAAA,IAAI,WAAW,GAAG,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,EAAE;AACjE,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAClB,YAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,YAAA,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;;AAG/C,gBAAA,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;;AAG/C,gBAAA,WAAW,GAAG,WAAW,GAAG,CAAG,EAAA,WAAW,CAAI,CAAA,EAAA,cAAc,CAAE,CAAA,GAAG,cAAc;;;;QAInF,IAAI,WAAW,EAAE;YACf,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC;;AAEpD,QAAA,OAAO,cAAc,CACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,EAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAA,CAAA,EACrE,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,IACtD,CAAI,CAAA,EAAA,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,CAAA,CAAE,EACnC,EAAE,MAAM,EAAE,UAAU,EAAE,CACvB,CACF,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;YAClB,OAAO;gBACL,KAAK,EAAE,QAAQ,CAAC,UAAU;gBAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB;AACH,SAAC,CAAC;;AAGJ,IAAA,SAAS,CAAC,MAAuB,EAAE,EAAW,EAAE,IAA6B,EAAA;AAC3E,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,GAChG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAClB,EAAE;AACF,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;IAGjD,SAAS,CAAC,MAAuB,EAAE,EAAU,EAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,EAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAI,CAAA,EAAA,EAAE,EAAE;QAC1G,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;AAG9C,IAAA,QAAQ,CAAC,MAAuB,EAAA;;AAE9B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;;;AAIhD,IAAA,UAAU,CAAC,IAAU,EAAE,KAAa,EAAE,SAAkB,EAAA;QACtD,MAAM,GAAG,GAAG,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,IAAI,SAAS,CAAA,CAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAA,aAAA,CAAe;AACvF,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;AACzC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAC7B,QAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AAE/B,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAS,GAAG,EAAE,QAAQ,CAAC,CAAC;;;AAG9D,IAAA,UAAU,CAAC,EAAU,EAAE,IAAU,EAAE,KAAa,EAAE,SAAkB,EAAA;QAClE,MAAM,GAAG,GAAG,SAAS,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,CAAA,EAAI,SAAS,CAAE,CAAA,GAAG,CAAG,EAAA,IAAI,CAAC,OAAO,CAAA,iBAAA,EAAoB,EAAE,CAAA,CAAE;AAChG,QAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;AACzC,QAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAC7B,QAAA,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;AAE/B,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,EAAE,QAAQ,CAAC,CAAC;;;IAI7D,mBAAmB,CAAC,KAAa,EAAE,KAAa,EAAA;QAC9C,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxE,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;;;IAIpC,QAAQ,CAAC,EAAU,EAAE,IAAY,EAAA;QAC/B,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,cAAA,EAAiB,EAAE,CAAA,MAAA,EAAS,IAAI,CAAA,CAAE;AAC7D,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;;;IAIrE,YAAY,CAAC,EAAU,EAAE,IAAY,EAAA;QACnC,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,cAAA,EAAiB,EAAE,CAAA,UAAA,EAAa,IAAI,CAAA,CAAE;AACjE,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;;8GA7K1D,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCAY,uBAAuB,CAAA;IAElC,WAAoB,CAAA,MAAc,EAAU,KAAqB,EAAA;QAA7C,IAAM,CAAA,MAAA,GAAN,MAAM;QAAkB,IAAK,CAAA,KAAA,GAAL,KAAK;AADzC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;;IAGlD,QAAQ,GAAA;QACN,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW;AACnD,QAAA,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE;AAC3B,YAAA,MAAM,cAAc,GAAG;AACrB,gBAAA,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC;AAC3B,gBAAA,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC;AAC/B,gBAAA,KAAK,EAAE,WAAW,CAAC,aAAa,CAAC;aAClC;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC;;AAE/C,QAAA,IAAI,WAAW,CAAC,eAAe,CAAC,EAAE;AAChC,YAAA,MAAM,mBAAmB,GAAG;AAC1B,gBAAA,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC;AAChC,gBAAA,IAAI,EAAE,WAAW,CAAC,iBAAiB,CAAC;AACpC,gBAAA,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC;AACtC,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC;aACxC;AACD,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,mBAAmB,CAAC;;;;8GAtBhD,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,oDAFxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAED,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;;;MCEY,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AAEzB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;QAC9B,IAAW,CAAA,WAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,2BAA2B;QAChE,IAAc,CAAA,cAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,sBAAsB;QAC9D,IAAkB,CAAA,kBAAA,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,sCAAsC;AAwC3F;IAtCC,MAAM,GAAG,CAAC,MAAW,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE;QACjC,OAAO,MAAM,cAAc,CACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,EAAE;AACtB,YAAA,MAAM,EAAE,MAAM;AACf,SAAA,CAAC,CACH;;IAGH,MAAM,IAAI,CAAC,OAAY,EAAA;AACrB,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,cAAc,EAAE;AACpC,QAAA,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,GAAG,EAAE,OAAO,CAAC,CAAC;;IAGhE,MAAM,GAAG,CAAC,OAAY,EAAA;QACpB,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,cAAc,CAAA,CAAA,EAAI,OAAO,CAAC,EAAE,CAAA,CAAE;QAClD,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;;IAGpF,MAAM,MAAM,CAAC,OAAY,EAAA;QACvB,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,cAAc,CAAA,CAAA,EAAI,OAAO,CAAC,EAAE,CAAA,CAAE;AAClD,QAAA,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,GAAG,CAAC,CAAC;;IAGzD,MAAM,IAAI,CAAC,OAAY,EAAA;AACrB,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,kBAAkB,EAAE;AACxC,QAAA,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,EAAE,OAAO,CAAC,CAAC;;8GAnCpD,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCGY,wBAAwB,CAAA;AAHrC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC;AA4FlD;AA1FC,IAAA,MAAM,CAAC,QAA2B,EAAA;AAChC,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,eAAe;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;AAC/B,YAAA,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE;YACzC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;YAEtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,gBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AACpB,oBAAA,IAAI,EAAE,CAAC,KAAK,KAAI;wBACd,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC,YAAY,EAAE;4BAC/C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5B,4BAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;;wBAEtB,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE;4BACjD,CAAC,CAAC,MAAM,EAAE;AACV,4BAAA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;;6BAChB;AACL,4BAAA,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,gBAAgB,CAAC;;qBAEhD;AACF,iBAAA,CAAC;AAEF,gBAAA,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;oBACvB,IAAI,CAAC,KAAK,EAAE;AACd,iBAAC,CAAC;AAEF,gBAAA,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAK;oBACxB,IAAI,CAAC,MAAM,EAAE;oBACb,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC7C,iBAAC,CAAC;gBAEF,CAAC,CAAC,MAAM,EAAE;AACZ,aAAC,CAAC;AACJ,SAAC,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;;AAGlC,IAAA,MAAM,CAAC,MAAc,EAAA;QACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,UAAU,CAAC,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;AAC5D,SAAC,CAAC;;IAEJ,GAAG,CAAC,MAAc,EAAE,IAAY,EAAA;AAC9B,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;YACjC,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,OAAO,CAAA,cAAA,EAAiB,MAAM,CAAA,UAAA,EAAa,IAAI,CAAA,CAAE;YACrE,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;YAEtD,YAAY,CAAC,MAAM,CAAC,SAAS,CAC3B,CAAC,KAAK,KAAI;;gBAER,QAAQ,CAAC,IAAI,CAAC;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,MAAM;AACN,oBAAA,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;AACzB,iBAAA,CAAC;;gBAGF,IAAI,KAAK,CAAC,MAAM,KAAK,gBAAgB,CAAC,gBAAgB,EAAE;oBACtD,QAAQ,CAAC,QAAQ,EAAE;;AAEvB,aAAC,EACD,CAAC,KAAK,KAAI;AACR,gBAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC;gBACxC,QAAQ,CAAC,KAAK,CAAC;AACb,oBAAA,MAAM,EAAE,QAAQ;oBAChB,MAAM;oBACN,KAAK;AACN,iBAAA,CAAC;AACJ,aAAC,CACF;AACD,YAAA,OAAO,MAAK;gBACV,YAAY,CAAC,MAAM,EAAE;AACvB,aAAC;AACH,SAAC,CAAC;;IAGJ,IAAI,GAAA;QACF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACrC,UAAU,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;AACtE,SAAC,CAAC;;IAGJ,WAAW,CAAC,MAAc,EAAE,QAAa,EAAA;QACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,UAAU,CAAC,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC;AACvD,SAAC,CAAC;;8GA9FO,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCAY,wBAAwB,CAAA;AAHrC,IAAA,WAAA,GAAA;AAIY,QAAA,IAAA,CAAA,MAAM,GAAQ,MAAM,CAAC,kCAAkC,CAAC;AAExD,QAAA,IAAA,CAAA,aAAa,GAAG;AACxB,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE,OAAc;AACzB,aAAA;SACF;AAES,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,QAAgB,MAAyB;AAClE,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,KAAK,EAAE,EAAE;AACT,gBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,gBAAA,OAAO,EAAE;AACP,oBAAA;AACE,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3B,wBAAA,KAAK,EAAE,QAAQ;AAChB,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;AA4EH;AA1ES,IAAA,MAAM,SAAS,GAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,QAAQ,CAAC;;AAExD,IAAA,MAAM,SAAS,GAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,QAAQ,CAAC;;AAExD,IAAA,MAAM,UAAU,GAAA;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,SAAS,CAAC;;AAEzD,IAAA,MAAM,aAAa,GAAA;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,YAAY,CAAC;;AAGpE,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,SAAS,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAmB;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;IAGjC,MAAM,eAAe,GAAA;AAErB,IAAA,MAAM,YAAY,CAAC,OAAY;AAE/B,IAAA,MAAM,YAAY,CAAC,QAAgB,EAAE,OAAY;AAEjD,IAAA,MAAM,YAAY,CAAC,QAAgB;;IAInC,MAAM,WAAW,CAAC,QAAgB,EAAA;AAChC,QAAA,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,SAAS,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAmB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;AAG3C,IAAA,MAAM,eAAe,CAAC,QAAgB;AAEtC,IAAA,MAAM,YAAY,CAAC,OAAY;AAE/B,IAAA,MAAM,YAAY,CAAC,OAAY;AAE/B,IAAA,MAAM,YAAY,CAAC,QAAgB;;IAInC,MAAM,WAAW,CAAC,QAAgB,EAAA;AAChC,QAAA,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,UAAU,EAAE;QACjD,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAmB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;AAG3C,IAAA,MAAM,gBAAgB,CAAC,SAAiB;AAExC,IAAA,MAAM,aAAa,CAAC,OAAY;AAEhC,IAAA,MAAM,aAAa,CAAC,OAAY;AAEhC,IAAA,MAAM,aAAa,CAAC,SAAiB;;IAIrC,MAAM,cAAc,CAAC,QAAgB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAc,MAAM,IAAI,CAAC,aAAa,EAAE;QACpD,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAmB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;AAG3C,IAAA,MAAM,mBAAmB,CAAC,YAAoB;AAE9C,IAAA,MAAM,gBAAgB,CAAC,OAAY;AAEnC,IAAA,MAAM,gBAAgB,CAAC,OAAY;AAEnC,IAAA,MAAM,gBAAgB,CAAC,YAAoB;8GAzGhC,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cAFvB,MAAM,EAAA,CAAA,CAAA;;2FAEP,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCAY,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAAoB,cAAqC,EAAA;QAArC,IAAc,CAAA,cAAA,GAAd,cAAc;;IAElC,SAAS,CAAC,MAAuB,EAAE,UAAe,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;;IAGvE,UAAU,CAAC,MAAuB,EAAE,UAAe,EAAA;AACjD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;;AAGhE,IAAA,MAAM,MAAM,CAAC,MAAuB,EAAE,EAAU,EAAA;QAC9C,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;;AAGpD,IAAA,MAAM,OAAO,CAAC,MAAuB,EAAE,MAAY,EAAA;QACjD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;AACnD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QACrE,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AACxD,QAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;AAC5E,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;AAC7B,YAAA,OAAO,CAAC;AACN,gBAAA,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,aAAa;AAC3G,gBAAA,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAClC,aAAA,CAAC;AACJ,SAAC,CAAC;;AAGJ,IAAA,SAAS,CAAC,MAAuB,EAAE,EAAU,EAAE,IAA4B,EAAA;AACzE,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC;;IAG7D,SAAS,CAAC,MAAuB,EAAE,EAAU,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;;AAGvD,IAAA,QAAQ,CAAC,MAAuB,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AACvC,YAAA,OAAO,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;AACxC,SAAC,CAAC;;;IAIJ,UAAU,CAAC,IAAU,EAAE,KAAa,EAAA;AAClC,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;YAE7B,MAAM,MAAM,GAAG,CAAgB,aAAA,EAAA,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACxE,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9C,YAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,MAAK;gBACnE,OAAO,CAAC,MAAM,CAAC;AACjB,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGJ,IAAA,UAAU,CAAC,EAAU,EAAE,IAAU,EAAE,KAAa,EAAA;AAC9C,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;;YAE7B,MAAM,MAAM,GAAG,CAAgB,aAAA,EAAA,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACxE,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;AAC9C,YAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,MAAK;gBACnE,OAAO,CAAC,MAAM,CAAC;AACjB,aAAC,CAAC;AACJ,SAAC,CAAC;;;IAIJ,mBAAmB,CAAC,KAAa,EAAE,KAAa,EAAA;QAC9C,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxE,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;;;IAIpC,QAAQ,CAAC,EAAU,EAAE,IAAY,EAAA;QAC/B,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;AAChE,YAAA,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE;AACjC,gBAAA,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;;iBACnB;gBACL,MAAM,CAAC,gBAAgB,CAAC;;AAE5B,SAAC,CAAC;;;IAIJ,YAAY,CAAC,EAAU,EAAE,IAAY,EAAA;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;;8GAtFrB,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACsBD,SAAS,aAAa,GAAA;AACpB,IAAA,MAAM,MAAM,GAAW,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;AAC5F,IAAA,OAAO,MAAM;AACf;MAwDa,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,8BAnDzB,aAAa,EAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,CAAA;AAmDJ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EA5ChB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,QAAQ,EAAE,sBAAsB;AACjC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,mBAAmB;AAC9B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,QAAQ,EAAE,wBAAwB;AACnC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,QAAQ,EAAE,uBAAuB;AAClC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,QAAQ,EAAE,oBAAoB;AAC/B,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,QAAQ,EAAE,wBAAwB;AACnC,aAAA;;;;;;;;;AASD,YAAA;AACE,gBAAA,OAAO,EAAE,wBAAwB;AACjC,gBAAA,QAAQ,EAAE,wBAAwB;AACnC,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,aAAa;AAC1B,aAAA;SACF,EAlDC,OAAA,EAAA,CAAA,WAAW,CAAC,OAAO,EAAE;YACrB,aAAa;YACb,aAAa,CAAC,OAAO,CAAC;gBACpB,UAAU,EAAE,CAAC,eAAe,CAAC;aAC9B,CAAC,CAAA,EAAA,CAAA,CAAA;;2FAgDO,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAtD5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,WAAW,CAAC,OAAO,EAAE;wBACrB,aAAa;wBACb,aAAa,CAAC,OAAO,CAAC;4BACpB,UAAU,EAAE,CAAC,eAAe,CAAC;yBAC9B,CAAC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,QAAQ,EAAE,sBAAsB;AACjC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,mBAAmB;AAC9B,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,QAAQ,EAAE,wBAAwB;AACnC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,QAAQ,EAAE,uBAAuB;AAClC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,QAAQ,EAAE,oBAAoB;AAC/B,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,QAAQ,EAAE,wBAAwB;AACnC,yBAAA;;;;;;;;;AASD,wBAAA;AACE,4BAAA,OAAO,EAAE,wBAAwB;AACjC,4BAAA,QAAQ,EAAE,wBAAwB;AACnC,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,aAAa;AAC1B,yBAAA;AACF,qBAAA;AACF,iBAAA;;;ACvFD;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"acorex-modules-backend.mjs","sources":["../../../../libs/modules/backend/src/lib/auth/oidc/application.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/configuration.service.ts","../../../../libs/modules/backend/src/lib/auth/oidc/feature.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/oidc.strategy.ts","../../../../libs/modules/backend/src/lib/auth/oidc/permission.loader.ts","../../../../libs/modules/backend/src/lib/auth/oidc/tenant.loader.ts","../../../../libs/modules/backend/src/lib/data/api/data-provider.ts","../../../../libs/modules/backend/src/lib/auth/oidc/signincallback.component.ts","../../../../libs/modules/backend/src/lib/data/api/comment.service.ts","../../../../libs/modules/backend/src/lib/data/api/file.service.ts","../../../../libs/modules/backend/src/lib/data/api/module-designer.service.ts","../../../../libs/modules/backend/src/lib/backend.module.ts","../../../../libs/modules/backend/src/acorex-modules-backend.ts"],"sourcesContent":["import { AXPApplication, AXPApplicationLoader, AXPRefreshTokenResult } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcApplicationLoader implements AXPApplicationLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetApps = `${this.configs.baseUrl}/applications/GetListByTenantId`;\n private apiSetApp = `${this.configs.baseUrl}/SetApplication`;\n constructor(private http: HttpClient) { }\n\n\n getList(): Observable<AXPApplication[]> {\n return this.http.get<{ items: any[] }>(this.apiGetApps).pipe(\n map((response) => {\n return response.items.map((item) => this.mapToAXPApplication(item));\n })\n );\n }\n\n set(application: AXPApplication): Promise<void> {\n return Promise.resolve();\n }\n\n // //TODO: shoud be removed\n // set(application: AXPApplication): Observable<AXPRefreshTokenResult> {\n // return this.http.post<any>(this.apiSetApp, { applicationId: application.id }).pipe(\n // map((response) => {\n // return {\n // succeed: true,\n // data: {\n // accessToken: response.token,\n // refreshToken: response.token,\n // }\n // };\n // })\n // );\n // }\n\n private mapToAXPApplication(item: any): AXPApplication {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n version: item.version || '1.0.0',\n description: item.description,\n logo: item.logo, // Assuming logo is of type AXPLogoConfig or undefined\n editionName: item.editionName,\n // features: item.features || [],\n };\n }\n}\n","import { AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable, filter, of, switchMap, take, tap } from 'rxjs';\n\nexport interface Localization {\n values: Record<string, Record<string, string>>;\n resources: Record<string, Resource>;\n languages: Language[];\n currentCulture: Culture;\n defaultResourceName: string;\n languagesMap: Record<string, NameValue[]>;\n languageFilesMap: Record<string, NameValue[]>;\n}\n\nexport interface Resource {\n texts: Record<string, string>;\n baseResources: string[];\n}\n\nexport interface Language {\n cultureName: string;\n uiCultureName: string;\n displayName: string;\n twoLetterISOLanguageName: string;\n flagIcon: string;\n}\n\nexport interface Culture {\n displayName: string;\n // ... other properties\n}\n\nexport interface NameValue {\n name: string;\n value: string;\n}\n\n// Repeat similar patterns for 'auth', 'setting', 'currentUser', etc.\nexport interface Auth {\n grantedPolicies: Record<string, boolean>;\n}\n\n// Main configuration interface\nexport interface ApplicationConfiguration {\n localization: Localization;\n auth: Auth;\n setting: Record<string, any>;\n currentUser: any;\n features: Record<string, any>;\n globalFeatures: Record<string, any>;\n multiTenancy: Record<string, any>;\n currentCulture: Culture;\n timing: Record<string, any>;\n clock: Record<string, any>;\n objectExtensions: Record<string, any>;\n extraProperties: Record<string, any>;\n\n // ... other properties\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMConfigurationService {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private applicationConfig: ApplicationConfiguration | null = null;\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n private fetchInProgress: boolean = false;\n private configSubject: BehaviorSubject<ApplicationConfiguration | null> = new BehaviorSubject<ApplicationConfiguration | null>(null);\n\n constructor(private http: HttpClient) {\n this.init().subscribe(); // Automatically trigger configuration load on service instantiation\n }\n\n public init(): Observable<ApplicationConfiguration> {\n if (!this.fetchInProgress) {\n this.fetchInProgress = true;\n return this.http.get<ApplicationConfiguration>(this.apiGetConfig).pipe(\n tap((response) => {\n this.applicationConfig = response;\n this.configSubject.next(this.applicationConfig);\n this.fetchInProgress = false;\n })\n );\n } else {\n // Adjusted approach to handle TypeScript's type safety requirements\n return this.configSubject.asObservable().pipe(\n filter((config): config is ApplicationConfiguration => config !== null),\n take(1) // Ensures it completes after emitting the first non-null value\n );\n }\n }\n\n getConfig(): Observable<ApplicationConfiguration> {\n if (this.applicationConfig) {\n // If the config is already loaded, return it immediately\n return of(this.applicationConfig);\n } else {\n // If the config is not loaded, initiate loading\n return this.configSubject.asObservable().pipe(\n filter((config) => config !== null),\n take(1), // Ensure it only emits the first non-null value and completes\n switchMap(() => of(this.applicationConfig!))\n );\n }\n }\n}\n","import { AXPFeature, AXPFeatureLoader } from '@acorex/platform/auth';\nimport { Observable, delay, of } from 'rxjs';\n\nexport class AXMOidcFeatureLoader implements AXPFeatureLoader {\n\n private list: AXPFeature[] = [\n {\n name: 'axp-entity-list-custom-view',\n title: 'Custom View',\n value: false\n },\n {\n name: 'axp-entity-list-quick-search',\n title: 'Custom View',\n value: false\n }\n ]\n\n getList(): Observable<AXPFeature[]> {\n return of(this.list).pipe(delay(0));\n }\n}\n","import { AXMAuthConfigs, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';\nimport {\n AXPAuthStrategy,\n AXPBaseCredentials,\n AXPRefreshTokenResult,\n AXPSessionContext,\n AXPSessionData,\n AXPSessionService,\n AXPSignInResult,\n AXPUser,\n} from '@acorex/platform/auth';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { AuthConfig, OAuthService } from 'angular-oauth2-oidc';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcStrategy implements AXPAuthStrategy {\n private aXMAuthConfigs: AXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);\n private oauthService: OAuthService = inject(OAuthService);\n private http: HttpClient = inject(HttpClient);\n public userInfo: any;\n public authConfig: AuthConfig;\n public openidConfigurationInfo: any; // clarify the type if possible\n\n public async configureOAuth(): Promise<void> {\n if (this.openidConfigurationInfo) return;\n\n if (!this.authConfig) {\n if (!this.aXMAuthConfigs.authConfig) {\n throw new Error('authConfig is missing');\n }\n this.authConfig = this.aXMAuthConfigs.authConfig;\n }\n\n this.oauthService.configure(this.authConfig);\n this.oauthService.setStorage(localStorage);\n\n this.openidConfigurationInfo = await this.oauthService.loadDiscoveryDocument();\n\n if (!this.openidConfigurationInfo) {\n throw new Error('openidConfigurationInfo is missing');\n }\n\n this.oauthService.events.subscribe(async (event) => {\n // console.log('event', event);\n // if (event.type === 'token_received') {\n // console.log('Token has been refreshed');\n // }\n // if (event.type === 'token_expires') {\n // console.log('Token is about to expire. Triggering silent refresh...');\n // }\n });\n\n const oidcJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n\n if (oidcJson) {\n const authData = JSON.parse(oidcJson) as AXPSessionData;\n if (authData) {\n this.setServiceProps(authData);\n\n if (authData.expiresIn && new Date(authData.expiresIn) < new Date()) {\n if (authData.expiresIn) {\n // this.refresh();\n } else {\n this.logout();\n }\n }\n }\n }\n }\n\n async signin(credentials: AXPUserPassCredentials): Promise<AXPSignInResult> {\n await this.configureOAuth();\n try {\n const body = new HttpParams()\n .set('grant_type', 'password')\n .set('client_id', this.authConfig.clientId!)\n .set('client_secret', this.authConfig.dummyClientSecret!)\n .set('username', credentials.username)\n .set('password', credentials.password)\n .set('scope', this.authConfig.scope!);\n\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n\n const response = await firstValueFrom(\n this.http.post<IAuthenticationDataModel>(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers })\n );\n\n // const authData = new AuthenticationData(response);\n this.setServiceProps({\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n } as AXPSessionData);\n\n return {\n succeed: true,\n data: {\n accessToken: response.access_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n idToken: response.id_token,\n refreshToken: response.refresh_token!,\n user: {\n id: response.sub,\n title: response.fullname,\n name: response.sub,\n avatar: response.picture,\n } as AXPUser,\n tenant: {\n id: response.tenantid!,\n name: response.tenantname!,\n title: response.tenanttitle!,\n },\n application: {\n id: response.applicationid!,\n name: response.applicationname!,\n title: response.applicationtitle,\n },\n },\n };\n } catch (error: any) {\n this.handleError(error);\n }\n }\n\n async signout(): Promise<void> {\n //this.logout();\n }\n\n async refreshToken(context: AXPSessionContext): Promise<AXPRefreshTokenResult> {\n try {\n await this.configureOAuth();\n const refreshResult = await this.refresh(context.tenant?.id, context.application?.id);\n if (refreshResult) {\n return {\n succeed: true,\n data: {\n accessToken: this.oauthService.getAccessToken(),\n refreshToken: this.oauthService.getRefreshToken(),\n },\n };\n } else {\n return { succeed: false };\n }\n } catch (error) {\n console.error('Error refreshing token', error);\n return { succeed: false };\n }\n }\n\n async refresh(tenantId?: string, applicationId?: string): Promise<boolean> {\n await this.configureOAuth();\n const authData = this.loadAuthData();\n if (!authData) return false;\n\n const refreshToken = this.oauthService.getRefreshToken();\n if (!refreshToken) return false;\n\n const body = new HttpParams()\n .set('grant_type', 'refresh_token')\n .set('client_id', this.authConfig.clientId!)\n .set('client_secret', this.authConfig.dummyClientSecret!)\n .set('refresh_token', refreshToken)\n .set('tenantId', tenantId ?? '')\n .set('applicationId', applicationId ?? '');\n const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');\n\n try {\n const response = await firstValueFrom(\n this.http.post<IAuthenticationDataModel>(this.openidConfigurationInfo.info.discoveryDocument.token_endpoint, body.toString(), { headers })\n );\n this.setServiceProps({\n accessToken: response.access_token,\n refreshToken: response.refresh_token,\n idToken: response.id_token,\n expiresIn: this.calculateExpireInDate(response.expires_in ?? 0),\n } as AXPSessionData);\n\n return true;\n } catch (error) {\n console.error('Token refresh error', error);\n return false;\n }\n }\n\n expires_in_milisecound(expires_in_date: string): number {\n const now = new Date();\n const expire = new Date(expires_in_date);\n return expire.getTime() - now.getTime();\n }\n\n private setServiceProps(authData: AXPSessionData): void {\n this.oauthService.getAccessToken = () => authData.accessToken;\n this.oauthService.getIdToken = () => authData.idToken ?? '';\n this.oauthService.getRefreshToken = () => authData.refreshToken;\n if (authData.expiresIn) {\n const refreshTime = this.expires_in_milisecound(authData.expiresIn!);\n this.oauthService.getAccessTokenExpiration = () => refreshTime;\n // if (refreshTime < 0) {\n // this.refresh();\n // }else{\n // }\n }\n }\n\n private loadAuthData(): AXPSessionData | undefined {\n const authDataJson = localStorage.getItem(AXPSessionService.SESSION_KEY);\n if (!authDataJson) return undefined;\n\n const authData = JSON.parse(authDataJson) as AXPSessionData;\n\n // return authData ? new AuthenticationData(authData) : undefined;\n return authData;\n }\n\n public async loadUserInfo(): Promise<object> {\n return this.oauthService.loadUserProfile();\n }\n public calculateExpireInDate(expireInMilisecound: number) {\n return new Date(Date.now() + expireInMilisecound * 1000).toISOString();\n }\n private logout(): void {\n this.oauthService.logOut({\n noRedirectToLogoutUrl: true\n });\n }\n\n private handleError(error: any): never {\n if (error?.reason) {\n throw new Error(JSON.stringify(error.reason));\n } else if (error?.message) {\n throw new Error(error.message);\n } else {\n throw new Error('Network or server error occurred');\n }\n }\n\n //#region getter\n get name(): string {\n return 'user-pass';\n }\n //#endregion\n}\n\nexport interface AXPUserPassCredentials extends AXPBaseCredentials {\n username: string;\n password: string;\n}\n\n// export class AuthenticationData {\n// access_token: string;\n// applicationid?: string;\n// applicationname?: string;\n// applicationtitle?: string;\n// editionid?: string;\n// editionname?: string;\n// editiontitle?: string;\n// id_token?: string;\n// refresh_token?: string;\n// scope?: string;\n// tenantid?: string;\n// tenantname?: string;\n// tenanttitle?: string;\n// token_type?: string;\n// expires_in_date?: string;\n// sub?: string;\n// picture?: string;\n// fullname?: string;\n\n// constructor(data: AuthenticationDataModel) {\n// this.access_token = data.access_token;\n// this.applicationid = data.applicationid;\n// this.applicationname = data.applicationname;\n// this.applicationtitle = data.applicationtitle;\n// this.editionid = data.editionid;\n// this.editionname = data.editionname;\n// this.editiontitle = data.editiontitle;\n// this.id_token = data.id_token;\n// this.refresh_token = data.refresh_token;\n// this.scope = data.scope;\n// this.tenantid = data.tenantid;\n// this.tenantname = data.tenantname;\n// this.tenanttitle = data.tenanttitle;\n// this.token_type = data.token_type;\n// this.sub = data.sub;\n// this.picture = data.picture;\n// this.fullname = data.fullname;\n\n// if (data.expires_in) {\n// this.expires_in_date = new Date(Date.now() + data.expires_in * 1000).toISOString();\n// } else {\n// this.expires_in_date = data.expires_in_date || '';\n// }\n// }\n\n// get expires_in_milisecound(): number {\n// const now = new Date();\n// const expire = new Date(this.expires_in_date!);\n// return expire.getTime() - now.getTime();\n// }\n\n// public setTokenRefreshModel(data: AuthenticationDataModel): void {\n// this.access_token = data.access_token;\n// this.id_token = data.id_token;\n// this.token_type = data.token_type;\n// this.scope = data.scope;\n// this.refresh_token = data.refresh_token;\n// this.expires_in_date = new Date(Date.now() + data.expires_in! * 1000).toISOString();\n// }\n// }\n\nexport interface IAuthenticationDataModel {\n access_token: string;\n applicationid: string;\n applicationname: string;\n applicationtitle: string;\n editionid: string;\n editionname: string;\n editiontitle: string;\n id_token: string;\n refresh_token: string;\n scope: string;\n tenantid: string;\n tenantname: string;\n tenanttitle: string;\n token_type: string;\n expires_in?: number;\n sub?: string;\n fullname?: string;\n picture?: string;\n}\n","import { AXPPermission, AXPPermissionLoader, AXPSessionContext } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcPermissionLoader implements AXPPermissionLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetConfig = `${this.configs.baseUrl}/abp/application-configuration`;\n\n constructor(private http: HttpClient) {}\n\n getList(context: AXPSessionContext): Observable<AXPPermission[]> {\n return this.http.get<{ items: any }>(this.apiGetConfig).pipe(map((response) => this.mapTo(response)));\n // if (context.user == null)\n // return of([]);\n // else if (context.user.name.toLowerCase() == 'admin')\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n // else\n // return of(['asc.user.gliding']);\n // return of(['axp.admin.console', 'asc.admin.message', 'asc.admin.settings', 'asc.admin.gliding', 'asc.user.gliding']);\n }\n\n mapTo(jsonObj: any): string[] {\n const policies = jsonObj.auth.grantedPolicies;\n const truePolicies = Object.keys(policies).filter((key) => policies[key] === true);\n return truePolicies;\n }\n}\n","import { AXPTenant, AXPTenantLoader } from '@acorex/platform/auth';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, map } from 'rxjs';\n\n@Injectable()\nexport class AXMOidcTenantLoader implements AXPTenantLoader {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private apiGetTenants = `${this.configs.baseUrl}/user-tenants/Tenants`;\n private apiSetTenant = `${this.configs.baseUrl}/SetTenant`;\n constructor(private http: HttpClient) { }\n\n getList(): Observable<AXPTenant[]> {\n return this.http.get<{ items: any[] }>(this.apiGetTenants).pipe(map((response) => response.items.map((item) => this.mapToAXPTenant(item))));\n }\n\n async set(tenant: AXPTenant): Promise<void> {\n return Promise.resolve();\n }\n\n private mapToAXPTenant(item: any): AXPTenant {\n return {\n id: item.id,\n name: item.name || 'defaultName',\n title: item.title || 'defaultTitle',\n // Add other fields and defaults as needed, and handle the logo if applicable\n };\n }\n}\n","import {\n AXPDataProvider,\n AXPEntityConfig,\n AXPFilterOperatorMiddlewareService,\n AXP_ROOT_CONFIG_TOKEN,\n} from '@acorex/platform/common';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMBackendDataProvider implements AXPDataProvider {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private filterService = inject(AXPFilterOperatorMiddlewareService);\n private mainUrl = this.configs.baseUrl;\n\n constructor(private http: HttpClient) {}\n\n insertOne(entity: AXPEntityConfig, entityItem: any): Promise<any> {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\n return firstValueFrom(this.http.post(url, entityItem));\n }\n\n insertMany(entity: AXPEntityConfig, entityList: any): Promise<any> {\n const promises = entityList.map((entity: any) => {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}`;\n return firstValueFrom(this.http.post(url, entity));\n });\n return Promise.all(promises);\n }\n\n getOne(entity: AXPEntityConfig, id: string): Promise<any> {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${\n id ? '/' + id : ''\n }`;\n return firstValueFrom(this.http.get(url));\n }\n\n getMany(entity: AXPEntityConfig, params?: any): Promise<any> {\n let httpParams = new HttpParams()\n .set('Skip', params?.skip?.toString() ?? '0')\n .set('Take', params?.take?.toString() ?? '10');\n if (params?.sort && params?.sort.length > 0) {\n const sortParam = params?.sort.map((sort: any) => `${sort.field}:${sort.dir}`).join(',');\n httpParams = httpParams.set('$orderby', sortParam);\n }\n\n const buildFilterString = (filters: any[]): string => {\n return filters\n .map((f: any) => {\n if (f.filters) {\n return buildFilterString(f.filters);\n } else {\n return `${f.field} ${f.operator.type} ${f.value}`;\n }\n })\n .join(',');\n };\n\n let filterString = params?.customFilter ? params.customFilter : '';\n if (params?.filter) {\n const filter = params.filter;\n if (filter.filters) {\n // Construct filter string from provided filters\n\n const dynamicFilters = buildFilterString(filter.filters);\n\n // Append dynamic filters to custom filter, if both exist\n filterString = filterString ? `${filterString},${dynamicFilters}` : dynamicFilters;\n }\n }\n // Set the $filter parameter if there are any filters\n if (filterString) {\n httpParams = httpParams.set('$filter', filterString);\n }\n function capitalizeFirstLetter(str: string) {\n return str ? str.charAt(0).toUpperCase() + str.slice(1) : str;\n }\n const greaterThanOperator = this.filterService.getOperator('greaterThan');\n const lessThanOperator = this.filterService.getOperator('lessThan');\n\n function generateQueryString(filter: any) {\n if (!filter.filters) {\n // Base case: single filter\n if (typeof filter.value === 'object' && filter.operator.type === 'between') {\n return `${filter.field} ${greaterThanOperator.type} '${filter.value.from}' and ${filter.field} ${lessThanOperator.type} '${filter.value.to}'`;\n } else {\n return `${filter.field} ${filter.operator.type} '${filter.value}'`;\n }\n } else if (!filter.filters.length) {\n return;\n } else {\n // Recursive case: multiple filters\n\n const filterStrings = filter.filters.map((subFilter: any) => generateQueryString(subFilter));\n const logic = filter.logic || 'AND'; // Default logic is 'AND' if not provided\n return `${filterStrings.filter((i: any) => i).join(` ${logic} `)}`;\n }\n }\n\n if (params?.date) {\n httpParams = httpParams.set('Date', params.date);\n }\n\n let queryString = params?.customFilter ? params.customFilter : '';\n if (params?.filter) {\n const filter = params.filter;\n if (filter.filters && filter.filters.length > 0) {\n // Construct filter string from provided filters\n\n const dynamicQueries = generateQueryString(filter);\n console.log({ dynamicQueries: dynamicQueries });\n\n // Append dynamic filters to custom filter, if both exist\n queryString = queryString ? `${queryString},${dynamicQueries}` : dynamicQueries;\n }\n }\n // Set the $filter parameter if there are any filters\n if (queryString) {\n httpParams = httpParams.set('$query', queryString);\n }\n return firstValueFrom(\n this.http.get<any>(\n `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${\n params?.costumGetter ? params.costumGetter : entity.name\n }/${params?.sub ? params.sub : ''}`,\n { params: httpParams }\n )\n ).then((response) => {\n return {\n total: response.totalCount,\n items: response.items,\n };\n });\n }\n\n updateOne(entity: AXPEntityConfig, id?: string, data?: { [key: string]: any }): Promise<any> {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}${\n id ? '/' + id : ''\n }`;\n return firstValueFrom(this.http.put(url, data));\n }\n\n deleteOne(entity: AXPEntityConfig, id: string): Promise<any> {\n const url = `${this.mainUrl}${entity.area ? '/' + entity.area : ''}/${entity.module}/${entity.name}/${id}`;\n return firstValueFrom(this.http.delete(url));\n }\n\n getFirst(entity: AXPEntityConfig): Promise<any> {\n // return this.getMany(entity.name).then((res) => res.items[0]);\n return new Promise((resolve) => resolve(true));\n }\n\n // File uploader function\n uploadFile(file: File, title: string, customUrl?: string): Promise<string> {\n const url = customUrl ? `${this.mainUrl}/${customUrl}` : `${this.mainUrl}/common/files`;\n const formData: FormData = new FormData();\n formData.append('File', file);\n formData.append('Title', title);\n\n return firstValueFrom(this.http.post<string>(url, formData));\n }\n // to update a uploaded file\n updateFile(id: string, file: File, title: string, customUrl?: string): Promise<string> {\n const url = customUrl ? `${this.mainUrl}/${customUrl}` : `${this.mainUrl}/common/files?id=${id}`;\n const formData: FormData = new FormData();\n formData.append('File', file);\n formData.append('Title', title);\n\n return firstValueFrom(this.http.put<string>(url, formData));\n }\n\n // Function to upload multiple files\n uploadMultipleFiles(files: File[], title: string): Promise<string[]> {\n const uploadPromises = files.map((file) => this.uploadFile(file, title));\n return Promise.all(uploadPromises);\n }\n\n // Function to view a file\n viewFile(id: string, name: string): Promise<Blob> {\n const url = `${this.mainUrl}/common/files/${id}/View/${name}`;\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\n }\n\n // Function to download a file\n downloadFile(id: string, name: string): Promise<Blob> {\n const url = `${this.mainUrl}/common/files/${id}/Download/${name}`;\n return firstValueFrom(this.http.get(url, { responseType: 'blob' }));\n }\n}\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { Component, OnInit, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n template: '',\n})\nexport class SignincallbackComponent implements OnInit {\n private sessionService = inject(AXPSessionService);\n constructor(private router: Router, private route: ActivatedRoute) {}\n\n ngOnInit() {\n const queryParams = this.route.snapshot.queryParams;\n if (queryParams['tenantid']) {\n const selectedTenant = {\n id: queryParams['tenantid'],\n name: queryParams['tenantname'],\n title: queryParams['tenanttitle'],\n };\n this.sessionService.setTenant(selectedTenant);\n }\n if (queryParams['applicationid']) {\n const selectedApplication = {\n id: queryParams['applicationid'],\n name: queryParams['applicationname'],\n title: queryParams['applicationtitle'],\n version: '1',\n editionName: queryParams['editionname'],\n };\n this.sessionService.setApplication(selectedApplication);\n }\n // this.userManagerService.signinSilentCallback();\n }\n}\n","import { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMCommentService {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private http = inject(HttpClient);\n\n private mainUrl = this.configs.baseUrl;\n private messagesUrl = `${this.configs.baseUrl}/conversion/messages/room`;\n private messagePostUrl = `${this.configs.baseUrl}/conversion/messages`;\n private messageReactionUrl = `${this.configs.baseUrl}/conversion/message-reactions/change`;\n\n async get(params: any): Promise<any> {\n const url = `${this.messagesUrl}`;\n return await firstValueFrom(\n this.http.get<any>(url, {\n params: params,\n })\n );\n }\n\n async post(payload: any): Promise<any> {\n const url = `${this.messagePostUrl}`;\n return await firstValueFrom(this.http.post<any>(url, payload));\n }\n\n async put(payload: any): Promise<any> {\n const url = `${this.messagePostUrl}/${payload.id}`;\n return await firstValueFrom(this.http.put<any>(url, { content: payload.content }));\n }\n\n async delete(payload: any): Promise<any> {\n const url = `${this.messagePostUrl}/${payload.id}`;\n return await firstValueFrom(this.http.delete<any>(url));\n }\n\n async like(payload: any): Promise<any> {\n const url = `${this.messageReactionUrl}`;\n return await firstValueFrom(this.http.put<any>(url, payload));\n }\n\n // async deleteComment(commentId: string): Promise<any> {\n // const url = `${this.mainUrl}/delete-comment/${commentId}`;\n // return await firstValueFrom(this.http.delete<any>(url));\n // }\n\n // async editComment(payload: any): Promise<any> {\n // const url = `${this.mainUrl}/edit-comment`;\n // return await firstValueFrom(this.http.put<any>(url, payload));\n // }\n}\n","import { AXUploadRequest } from '@acorex/components/uploader';\nimport { AXDownloadStatus, AXNetworkService, AXUploadStatus } from '@acorex/core/network';\nimport { AXP_ROOT_CONFIG_TOKEN } from '@acorex/platform/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMFileManagementService {\n private configs = inject(AXP_ROOT_CONFIG_TOKEN);\n private mainUrl = this.configs.baseUrl;\n private http = inject(HttpClient);\n private networkService = inject(AXNetworkService);\n\n upload(requests: AXUploadRequest[]): Promise<PromiseSettledResult<unknown>[]> {\n const url = `${this.mainUrl}/common/files`;\n const tasks = requests.map((r) => {\n const formData: FormData = new FormData();\n formData.append('File', r.file);\n const task = this.networkService.upload(url, formData);\n\n return new Promise((resolve, reject) => {\n task.events.subscribe({\n next: (event) => {\n if (event.status == AXUploadStatus.UploadFailed) {\n r.error(event.message || '');\n reject(event.result);\n }\n if (event.status == AXUploadStatus.UploadComplete) {\n r.finish();\n resolve(event.result);\n } else {\n r.setTransferredBytes(event.bytesTransferred);\n }\n },\n });\n\n r.onStart.subscribe(() => {\n task.start();\n });\n\n r.onCancel.subscribe(() => {\n task.cancel();\n reject({ status: 'cancelled', request: r });\n });\n\n r.upload();\n });\n });\n\n return Promise.allSettled(tasks);\n }\n\n delete(fileId: string): Promise<any> {\n return new Promise((resolve, reject) => {\n setTimeout(() => resolve({ success: true, fileId }), 1000);\n });\n }\n get(fileId: string, name: string): Observable<any> {\n return new Observable((observer) => {\n const url = `${this.mainUrl}/common/files/${fileId}/Download/${name}`;\n const downloadTask = this.networkService.download(url);\n\n downloadTask.events.subscribe(\n (event) => {\n // Emit progress events\n observer.next({\n status: event.status,\n progress: event.progress,\n fileId,\n data: event.data || null, // Assuming `event.data` contains the downloaded file's data when completed\n });\n\n // Complete the observable if download is finished\n if (event.status === AXDownloadStatus.DownloadComplete) {\n observer.complete();\n }\n },\n (error) => {\n console.error('Download failed:', error);\n observer.error({\n status: 'failed',\n fileId,\n error,\n });\n }\n );\n return () => {\n downloadTask.cancel();\n };\n });\n }\n\n list(): Promise<any> {\n return new Promise((resolve, reject) => {\n setTimeout(() => resolve([{ fileId: '1', data: 'fileData' }]), 1000);\n });\n }\n\n setMetadata(fileId: string, metadata: any): Promise<any> {\n return new Promise((resolve, reject) => {\n setTimeout(() => resolve({ fileId, metadata }), 1000);\n });\n }\n}\n","import { AXDataSourceQuery } from '@acorex/components/common';\nimport { AXPModuleDesignerService } from '@acorex/modules/application-management';\nimport { AXPEntity } from '@acorex/platform/common';\nimport { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';\nimport { inject, Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMModuleDesignerService implements AXPModuleDesignerService {\n protected loader: any = inject(AXPEntityDefinitionRegistryService);\n\n protected defaultConfig = {\n skip: 0,\n sort: [],\n take: 10,\n filter: {\n field: '',\n value: '',\n operator: 'equal' as any,\n },\n };\n\n protected AdvanceConfig = (moduleId: string): AXDataSourceQuery => ({\n skip: 0,\n sort: [],\n take: 10,\n filter: {\n field: '',\n value: '',\n operator: { type: 'equal' },\n filters: [\n {\n field: 'moduleId',\n operator: { type: 'equal' },\n value: moduleId,\n },\n ],\n },\n });\n\n private async moduleDef() {\n return this.loader.resolve('application-management', 'module');\n }\n private async entityDef() {\n return this.loader.resolve('application-management', 'entity');\n }\n private async featureDef() {\n return this.loader.resolve('application-management', 'feature');\n }\n private async permissionDef() {\n return this.loader.resolve('application-management', 'permission');\n }\n\n async getModules() {\n const entity: AXPEntity = await this.moduleDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.defaultConfig);\n }\n\n async getSingleModule() {}\n\n async createModule(payload: any): Promise<any> {}\n\n async updateModule(moduleId: string, payload: any): Promise<any> {}\n\n async deleteModule(moduleId: string): Promise<any> {}\n\n //\n\n async getEntities(moduleId: string) {\n const entity: AXPEntity = await this.entityDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSingleEntity(entityId: string) {}\n\n async createEntity(payload: any): Promise<any> {}\n\n async updateEntity(payload: any): Promise<any> {}\n\n async deleteEntity(entityId: string): Promise<any> {}\n\n //\n\n async getFeatures(moduleId: string) {\n const entity: AXPEntity = await this.featureDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSingleFeature(featureId: string) {}\n\n async createFeature(payload: any): Promise<any> {}\n\n async updateFeature(payload: any): Promise<any> {}\n\n async deleteFeature(featureId: string): Promise<any> {}\n\n //\n\n async getPermissions(moduleId: string) {\n const entity: AXPEntity = await this.permissionDef();\n const func = entity?.queries.list?.execute as Function;\n return func(this.AdvanceConfig(moduleId));\n }\n\n async getSinglePermission(permissionId: string) {}\n\n async createPermission(payload: any): Promise<any> {}\n\n async updatePermission(payload: any): Promise<any> {}\n\n async deletePermission(permissionId: string): Promise<any> {}\n}\n","import { AXMAuthModule } from '@acorex/modules/auth';\nimport {\n AXPAuthModule,\n AXP_APPLICATION_LOADER,\n AXP_FEATURE_LOADER,\n AXP_PERMISSION_LOADER,\n AXP_TENANT_LOADER,\n} from '@acorex/platform/auth';\nimport { AXPDataProvider } from '@acorex/platform/common';\nimport { NgModule } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\n\n//-----------------------------------------------------------------\nimport {\n AXMOidcApplicationLoader,\n AXMOidcFeatureLoader,\n AXMOidcPermissionLoader,\n AXMOidcStrategy,\n AXMOidcTenantLoader,\n} from './auth/oidc';\nimport { AXMBackendDataProvider } from './data/api/data-provider';\n//-----------------------------------------------------------------\n\nimport { AXPModuleDesignerService } from '@acorex/modules/application-management';\nimport { AXPFileManagementService } from '@acorex/platform/widgets';\nimport { OAuthModule } from 'angular-oauth2-oidc';\nimport { SignincallbackComponent } from './auth/oidc/signincallback.component';\nimport { AXMFileManagementService, AXMModuleDesignerService } from './data';\n\nfunction routesFactory() {\n const routes: Routes = [{ path: 'auth/signincallback', component: SignincallbackComponent }];\n return routes;\n}\n\n@NgModule({\n imports: [\n OAuthModule.forRoot(),\n AXMAuthModule,\n AXPAuthModule.forRoot({\n strategies: [AXMOidcStrategy],\n }),\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXPDataProvider,\n useClass: AXMBackendDataProvider,\n },\n {\n provide: AXP_TENANT_LOADER,\n useClass: AXMOidcTenantLoader,\n },\n {\n provide: AXP_APPLICATION_LOADER,\n useClass: AXMOidcApplicationLoader,\n },\n {\n provide: AXP_PERMISSION_LOADER,\n useClass: AXMOidcPermissionLoader,\n },\n {\n provide: AXP_FEATURE_LOADER,\n useClass: AXMOidcFeatureLoader,\n },\n {\n provide: AXPFileManagementService,\n useClass: AXMFileManagementService,\n },\n // {\n // provide: AXPCommentService,\n // useClass: AXMCommentService,\n // },\n // {\n // provide: AXMNotificationService,\n // useClass: AXMMockNotificationService,\n // },\n {\n provide: AXPModuleDesignerService,\n useClass: AXMModuleDesignerService,\n },\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFactory,\n },\n ],\n})\nexport class AXMBackendModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|